天天看點

手把手教你如何利用Meterpreter滲透Windows系統

在這篇文章中,我們将跟大家介紹如何使用Meterpreter來收集目标Windows系統中的資訊,擷取使用者憑證,建立我們自己的賬号,啟用遠端桌面,進行螢幕截圖,以及擷取使用者鍵盤記錄等等。

手把手教你如何利用Meterpreter滲透Windows系統

相關Payload

Payload中包含有需要在遠端系統中運作的惡意代碼,而在Metasploit中Payload是一種特殊子產品,它們能夠以漏洞利用子產品運作,并能夠利用目标系統中的安全漏洞實施攻擊。簡而言之,這種漏洞利用子產品可以通路目标系統,而其中的代碼定義了Payload在目标系統中的行為。

Metasploit中的Payload子產品主要有以下三種類型:

-Single

-Stager

-Stage

Single是一種完全獨立的Payload,而且使用起來就像運作calc.exe一樣簡單,例如添加一個系統使用者或删除一份檔案。由于Single Payload是完全獨立的,是以它們有可能會被類似netcat這樣的非metasploit處理工具所捕捉到。

Stager這種Payload負責建立目标使用者與攻擊者之間的網絡連接配接,并下載下傳額外的元件或應用程式。一種常見的Stagers Payload就是reverse_tcp,它可以讓目标系統與攻擊者建立一條tcp連接配接。另一種常見的是bind_tcp,它可以讓目标系統開啟一個tcp監聽器,而攻擊者随時可以與目标系統進行通信。

Stage是Stager Payload下載下傳的一種Payload元件,這種Payload可以提供更加進階的功能,而且沒有大小限制。

在Metasploit中,我們可以通過Payload的名稱和使用格式來推斷它的類型:

Single Payload的格式為<target>/ <single>
Stager/Stage Payload的格式為<target>/ <stage> / <stager>           

當我們在Metasploit中執行“show payloads”指令之後,它會給我們顯示一個可使用的Payload清單:

手把手教你如何利用Meterpreter滲透Windows系統

在這個清單中,windows/powershell_bind_tcp就是一個Single Payload,它不包含Stage Payload。而windows/x64/meterpreter/reverse_tcp則由一個Stager Payload(reverse_tcp)和一個Stage Payload(meterpreter)組成。

Meterpreter是什麼?

在Metasploit Framework中,Meterpreter是一種後滲透工具,它屬于一種在運作過程中可通過網絡進行功能擴充的動态可擴充型Payload。這種工具是基于“記憶體DLL注入”理念實作的,它能夠通過建立一個新程序并調用注入的DLL來讓目标系統運作注入的DLL檔案。

其中,攻擊者與目标裝置中Meterpreter的通信是通過Stager套接字實作的。

部署Meterpreter

在這裡,我們選擇使用reverse_tcp(windows/x64/meterpreter/reverse_tcp)來作為Stager,配置和運作情況如下圖所示:

手把手教你如何利用Meterpreter滲透Windows系統

注意:運作了exploit指令之後,我們開啟了一個reverseTCP處理器來監聽192.168.198.196:4444,即我(攻擊者)的本地主機位址(LHOST)和端口号(LPORT)。運作成功之後,我們将會看到指令提示符meterpreter >出現。

接下來,我們就可以開始“做事”了。

通路檔案系統

Meterpreter支援非常多的檔案系統指令(基本跟Linux系統指令類似),一些常用指令如下:

cd:切換目标目錄;

cat:讀取檔案内容;

del:删除檔案;

edit:使用vim編輯檔案

ls:擷取目前目錄下的檔案;

mkdir:建立目錄;

rmdir:删除目錄;

手把手教你如何利用Meterpreter滲透Windows系統

上傳/下載下傳檔案

“download”指令可以幫助我們從目标系統中下載下傳檔案,“upload”指令則能夠向目标系統上傳檔案。

“download”指令的使用樣例如下所示:

手把手教你如何利用Meterpreter滲透Windows系統

權限提升

有的時候,你可能會發現自己的Meterpreter會話受到了使用者權限的限制,而這将會嚴重影響你在目标系統中的活動。比如說,修改系統資料庫、安裝後門或導出密碼等活動都需要提升使用者權限,而Meterpreter給我們提供了一個“getsystem”指令,它可以使用多種技術在目标系統中實作提權:

手把手教你如何利用Meterpreter滲透Windows系統

“getuid”指令可以擷取目前使用者的資訊,在上面的例子中,使用者為“NT AUTHORITY\SYSTEM”,這個就是Windows本地系統賬号。

擷取憑證

hashdump子產品(post)可以從SAM資料庫中導出本地使用者賬号,credential_collector腳本(post/windows/gather/credentials)也可以從目标裝置中收集令牌資訊。

腳本和post子產品都需要通過“run”指令執行,我在測試環境中運作hashdump子產品後的結果如下:

手把手教你如何利用Meterpreter滲透Windows系統

資料的輸出格式為:使用者名:SID:LM哈希:NTLM哈希:::,是以我們得到了三個使用者賬号,分别為Administrator, Guest和Coen。

其中的LM哈希(aad3b435b51404eeaad3b435b51404ee)跟NTLM哈希(31d6cfe0d16ae931b73c59d7e0c089c0)對應的是一個空密碼。

接下來要處理的就是使用者Coen的密碼(f773c5db7ddebefa4b0dae7ee8c50aea)了。雖然我們可以使用類似John the Ripper這樣的工具來破解密碼,但是我們直接Google這個哈希之後,就直接得到了密碼明文:trustno1。

運作程式

我們還可以使用“execute”指令在目标系統中執行應用程式。這個指令的使用方法如下:

execute -f<file> [Options]           

運作後它将執行file參數所指定的檔案。可選參數如下:

-H:建立一個隐藏程序

-a:傳遞給指令的參數

-i:跟程序進行互動

-m:從記憶體中執行

-t:使用目前僞造的線程令牌運作程序

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

手把手教你如何利用Meterpreter滲透Windows系統

螢幕截圖

我們可以使用“screenshot”指令來進行螢幕截圖并存儲在我們的系統之中。

手把手教你如何利用Meterpreter滲透Windows系統

截取的效果如下所示:

手把手教你如何利用Meterpreter滲透Windows系統

建立一個新賬号

接下來,我們可以在目标系統中建立一個新的使用者賬号(getgui腳本,使用-u和-p參數),并給它配置設定管理者權限(使用),然後将其添加到”遠端桌面使用者”組中。

手把手教你如何利用Meterpreter滲透Windows系統
手把手教你如何利用Meterpreter滲透Windows系統

當然了,你也可以嘗試将這個新添加的使用者Hacker在Windows登入界面中隐藏。

啟用遠端桌面

當我們新添加的使用者已經擁有遠端桌面權限之後,我們就可以使用這個賬号憑證來開啟遠端桌面會話了。

首先,我們需要確定目标Windows裝置開啟了遠端桌面功能(需要開啟多個服務),不過我們的getgui腳本可以幫我們搞定。我們可以使用-e參數確定目标裝置開啟了遠端桌面功能(重新開機之後同樣會自動開啟):

手把手教你如何利用Meterpreter滲透Windows系統

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

手把手教你如何利用Meterpreter滲透Windows系統

這樣可以降低你被發現的機率,因為當目标使用者登入之後,它将會看到如下圖所示的資訊:

手把手教你如何利用Meterpreter滲透Windows系統

下圖顯示的是攻擊者使用新建立的“Hacker”賬号連接配接到遠端桌面的畫面:

手把手教你如何利用Meterpreter滲透Windows系統

鍵盤記錄

Meterpreter還可以在目标裝置上實作鍵盤記錄功能,鍵盤記錄主要涉及以下三種指令:

keyscan_start:開啟鍵盤記錄功能

keyscan_dump:顯示捕捉到的鍵盤記錄資訊

keyscan_stop:停止鍵盤記錄功能

首先,我們需要啟動鍵盤記錄程序:

手把手教你如何利用Meterpreter滲透Windows系統

啟動之後,我們需要等待一段時間後再導出記錄資訊:

手把手教你如何利用Meterpreter滲透Windows系統

不過在使用鍵盤記錄功能時,通常需要跟目标程序進行綁定,接下來我們介紹如何綁定程序。

綁定程序

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

在下面的例子中,我們會将Meterpreter跟winlogon.exe綁定,并在登入程序中捕獲鍵盤記錄。

首先,我們需要使用“ps”指令檢視目标裝置中運作的程序:

手把手教你如何利用Meterpreter滲透Windows系統

接下來,使用“getpid”找出需要綁定的程序,接下來,使用migrate指令+pid來綁定程序。

手把手教你如何利用Meterpreter滲透Windows系統

綁定完成之後,我們就可以開始捕獲鍵盤資料了:

手把手教你如何利用Meterpreter滲透Windows系統

接下來,我們可以選擇導出鍵盤記錄,或者使用指令“enum_logged_on_users”來檢查使用者是否成功登入:

手把手教你如何利用Meterpreter滲透Windows系統

等待片刻之後,使用keyscan_dump指令導出記錄資訊:

手把手教你如何利用Meterpreter滲透Windows系統

捕捉到的使用者密碼為trustno1。

清除事件日志

完成攻擊操作之後,千萬别忘了“打掃戰場”。我們的所有操作都會被記錄在目标系統的日志檔案之中,是以我們需要在完成攻擊之後使用指令“clearev”指令來清除事件日志:

手把手教你如何利用Meterpreter滲透Windows系統

總結

當然了,Meterpreter的功能還遠不止如此,本文介紹的内容僅僅是冰山一角,感興趣的同學可以利用搜尋引擎來了解更多的相關知識。