溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

msfvenom 簡(jiǎn)介

發(fā)布時(shí)間:2020-07-20 07:05:55 來(lái)源:網(wǎng)絡(luò) 閱讀:3111 作者:bazhinv 欄目:安全技術(shù)

信很多人升級(jí)最新的msf后找不到自己曾經(jīng)熟悉的msfpayload了(所以說(shuō)喜歡收集shellcode是一件好事),沒(méi)錯(cuò)我特么的也找不到了。其實(shí)可以use到自己要使用的payload,然后制作。但是也有人喜歡直接在終端里生產(chǎn)自己的shellcode。另外我想也找不到msfencode了,msfencodeshellcode的編碼器,準(zhǔn)確的來(lái)講如果你自己編寫(xiě)一個(gè)shellcode并不怎么需要一個(gè)編碼器,殺軟殺掉的概率不大,即使是msf生成的shellcode也很大概率不被殺掉(也許我沒(méi)用啥殺軟)所以以前我也覺(jué)得編碼器并不一定用得到。

 msfvenom 簡(jiǎn)介

   我經(jīng)常理論的思考問(wèn)題,而不會(huì)實(shí)際的搞破壞,所以直到后來(lái)我才直到編碼器的重要,因?yàn)?/span>msf生成的shellcode經(jīng)常是無(wú)法使用的?。⌒枰幋a器進(jìn)行處理,這個(gè)處理包括加殼,過(guò)濾壞字符,迭代編譯,甚至是控制字符串大小。當(dāng)然編碼器也有其他的功能。

 先說(shuō)說(shuō)payloadencode的關(guān)系,不然我想有些人會(huì)感到困惑,msfpayload模塊是用來(lái)制作shellcode,也即是大家理解的用來(lái)搞破壞的機(jī)器碼,對(duì)于沒(méi)有匯編基礎(chǔ)的人,幾乎很難寫(xiě)出一個(gè)實(shí)用的shellcode,以前我也無(wú)奈,感覺(jué)被拒絕在安全大門之外了,好在有msfpayload,成全了一顆愛(ài)搗蛋的心。當(dāng)然我也在一直學(xué)習(xí)著呢!我相信非常多的人甚至都不知道shellcode在棧中是怎么工作的,但是卻已經(jīng)可以利用shellcode搞破壞了。我希望不要這樣。我不喜歡這種容易獲得又有巨大危險(xiǎn)性的技術(shù)掌握在一個(gè)不能自控的人手里。比如前一陣子的Hacking team泄露事件中的flash0day,直接裝一個(gè)msf產(chǎn)生的shellcode就可以使用了,而根本不需要對(duì)漏洞原理或者shellcode原理懂太多。

 有點(diǎn)說(shuō)多了,encode 是編碼器,也是為payload設(shè)計(jì)的,因?yàn)闅④洉?huì)根據(jù)shellcode的特征進(jìn)行殺毒,因此我們需要encodepayload加殼,這里的理論知識(shí)和軟件免殺原理相同,不過(guò)現(xiàn)在殺軟有沙箱功能了,在內(nèi)存階段從行為判定進(jìn)行查殺,所以有些shellcode 可能用編碼器怎么編碼也完蛋了,當(dāng)然我胡亂吹的,因?yàn)槲覜](méi)有嘗試過(guò),有那時(shí)間我還不如去做飯。

 總的來(lái)說(shuō)msfvenom 結(jié)合了payload encode的功能。經(jīng)過(guò)這兩個(gè)模塊生成的shellcode,要裝在的exp中來(lái)使用才行,就像彈頭安裝在×××上。下面說(shuō)說(shuō)具體的使用方式

   msfvenom 簡(jiǎn)介

 中文翻譯大概是這樣(我從網(wǎng)上找的):

 

Options:


    -p, --payload    <payload>       指定需要使用的payload(***荷載)。如果需要使用自定義的payload,請(qǐng)使用&#039;-&#039;或者stdin指定


    -l, --list       [module_type]   列出指定模塊的所有可用資源. 模塊類型包括: payloads, encoders, nops, all


    -n, --nopsled    <length>        為payload預(yù)先指定一個(gè)NOP滑動(dòng)長(zhǎng)度


    -f, --format     <format>        指定輸出格式 (使用 --help-formats 來(lái)獲取msf支持的輸出格式列表)


    -e, --encoder    [encoder]       指定需要使用的encoder(編碼器)


    -a, --arch       <architecture>  指定payload的目標(biāo)架構(gòu)


        --platform   <platform>      指定payload的目標(biāo)平臺(tái)


    -s, --space      <length>        設(shè)定有效***荷載的最大長(zhǎng)度


    -b, --bad-chars  <list>          設(shè)定規(guī)避字符集,比如: &#039;\x00\xff&#039;


    -i, --iterations <count>         指定payload的編碼次數(shù)


    -c, --add-code   <path>          指定一個(gè)附加的win32 shellcode文件


    -x, --template   <path>          指定一個(gè)自定義的可執(zhí)行文件作為模板


    -k, --keep                       保護(hù)模板程序的動(dòng)作,注入的payload作為一個(gè)新的進(jìn)程運(yùn)行


        --payload-options            列舉payload的標(biāo)準(zhǔn)選項(xiàng)


    -o, --out   <path>               保存payload


    -v, --var-name <name>            指定一個(gè)自定義的變量,以確定輸出格式


        --shellest                   最小化生成payload


    -h, --help                       查看幫助選項(xiàng)


        --help-formats               查看msf支持的輸出格式列表


   讓我先列一個(gè)和Linux有關(guān)的payload

   msfvenom 簡(jiǎn)介

   Ok,隨便找一個(gè)Linux下的payoad用吧,一個(gè)最簡(jiǎn)單的 shellcode的生成至少需要2個(gè)選項(xiàng) -p -f

   msfvenom 簡(jiǎn)介

   這里我指定了上面截圖中顯示的payload模塊,可以看到有一些警告,因?yàn)闆](méi)有指定cpu架構(gòu)也沒(méi)指定編碼器,至于這個(gè)shellcode能否用就拜托各位自己驗(yàn)證了,我就為了講解方便,不過(guò)文章結(jié)束我會(huì)給一個(gè)簡(jiǎn)單的裝載shellcode的裝載器,evil0x.com的其他文章有更多的裝載器,各位可以自行查看。還有部分人疑惑,我是怎么知道紅框里的選項(xiàng)的,不好意思其實(shí)我也不知道,我只是use進(jìn)去然后show options 看了下= =!其實(shí)我鼓勵(lì)去看下源碼,ruby是一門很簡(jiǎn)單的語(yǔ)言的。

下面來(lái)看一個(gè)win下面的shellcode生成案例,我想win下面才是大家更想要的吧,選擇了一個(gè)比較簡(jiǎn)單而且經(jīng)典的,就是執(zhí)行exec命令的shellcode,這里我還是打開(kāi)計(jì)算器

   msfvenom 簡(jiǎn)介

   注意看我的紅框,這里描述了必要的選項(xiàng),以及默認(rèn)值

   msfvenom 簡(jiǎn)介

   EXITFUNC指定進(jìn)程完成的時(shí)候是退出線程還是進(jìn)程或者其他選項(xiàng),如果做注入的時(shí)候一定要指定線程,不然你的shellcode運(yùn)行完就會(huì)退的。-o選項(xiàng)相比都容易理解,輸出到一個(gè)位置,畢竟是exe文件,終端輸出誰(shuí)看得懂,在win下雙擊執(zhí)行就是打開(kāi)計(jì)算器了,不過(guò)被我的殺軟殺掉了,從隔離區(qū)恢復(fù)就可以驗(yàn)證了。

那么怎么構(gòu)造一個(gè)可以免殺的shellcode呢,當(dāng)然需要編碼器了,我使用了一個(gè)異或算法的編碼器,-i迭代8次,結(jié)果就是呵呵沒(méi)過(guò)AV贏家360,也許是因?yàn)槲揖幋a器沒(méi)用好,也許是360的內(nèi)存查殺技術(shù)導(dǎo)致這個(gè)簡(jiǎn)單的shellcode過(guò)不去。╮(╯▽╰)╭,怎么過(guò)呢,原理是是用殺軟沒(méi)見(jiàn)過(guò)的編碼器,如果殺軟支持內(nèi)存查殺,恩就只能換shellcode了我用這個(gè)老shellcode過(guò)不了也正常。所以收集好的shellcode很重要,不過(guò)我一個(gè)沒(méi)有,歡迎分享給我。

   msfvenom 簡(jiǎn)介

 

 

-b選項(xiàng)是用來(lái)過(guò)濾“壞字符”的,不同的漏洞根據(jù)需要要過(guò)濾不同的壞字符,需要對(duì)匯編有足夠的理解才能說(shuō)好這部分,目前我還無(wú)法以一個(gè)好的方式說(shuō)出來(lái),不過(guò)最長(zhǎng)過(guò)濾的就是0x00,因?yàn)樽址龅剿徒財(cái)嗔?/span>

   msfvenom 簡(jiǎn)介

    這句命令不一定是有效的,我只是說(shuō)明這個(gè)用法。如果我想知道哪些是不能用的壞字符呢,一般看高人的exp描述,或者自己的shellcode無(wú)法運(yùn)行的時(shí)候使用ODdebug,看到底是哪里導(dǎo)致的,然后針對(duì)性修改設(shè)置選項(xiàng)。

-x應(yīng)該是一個(gè)常用的命令,這個(gè)命令是用來(lái)做程序注入的,是不是叫寄生會(huì)好點(diǎn),就是把你的shellcode程序寄生在另一個(gè)程序上,然后目標(biāo)人打開(kāi)另外一個(gè)程序即可執(zhí)行shellcode

   msfvenom 簡(jiǎn)介

   生成的文件沒(méi)能在WIN7下運(yùn)行,XP下可以,說(shuō)明目前免費(fèi)版的msf有些功能win7不適用了,回頭OD看下為什么不能直接運(yùn)行,不過(guò)使用方式就是如此,還可以加上-e進(jìn)行編碼

   msfvenom 簡(jiǎn)介

   給大家看下XP下的結(jié)果,當(dāng)然win7我沒(méi)有注入成功不過(guò)可以OD看下為什么(就是需要不少時(shí)間),不知道收費(fèi)版win7下能否成功注入,懷疑中。。。

   msfvenom 簡(jiǎn)介

-k 選項(xiàng)會(huì)將你的payload作為一個(gè)新的進(jìn)程運(yùn)行。但目前這個(gè)選項(xiàng)只支持老版本的windows系統(tǒng)比如windows xp。

-b 設(shè)定有效載荷的長(zhǎng)度,這個(gè)要看EXP,如果沒(méi)有大小要求救不要設(shè)置

 

MSF圖形化工具是WEB工具,不知道新版是不是了,因?yàn)閺膩?lái)沒(méi)用過(guò)收費(fèi)版。另外還有一個(gè)GUUI工具armitage,CobaltStrikearmitage 的收費(fèi)版,armitage 是圖形化的msf使用工具,不過(guò)功能不全,收費(fèi)版想來(lái)個(gè)人也不會(huì)購(gòu)買,因此只能使用命令行了。

 

   這里我想說(shuō)的其實(shí)自動(dòng)生成的shellcode很多時(shí)候并不能用,經(jīng)常需要我們手動(dòng)修改一些字符,最后請(qǐng)大家努力收集好的shellcode吧,并給我用吧卡卡。。。。

下面給大家一個(gè)簡(jiǎn)單的shellcode裝載器,也就是說(shuō)把shellcode放在里面就是可以使用的,網(wǎng)上隨便找了一個(gè),evil0x.com有文章寫(xiě)了幾個(gè),有興趣可以查看

   msfvenom 簡(jiǎn)介

 


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI