msfvenom 簡介

信很多人升級最新的msf後找不到自己曾經熟悉的msfpayload了(所以說喜歡收集shellcode是一件好事),沒錯我特麼的也找不到了。其實可以use到自己要使用的payload,然後製作。但是也有人喜歡直接在終端裏生產自己的shellcode。另外我想也找不到msfencode了,msfencodeshellcode的編碼器,準確的來講如果你自己編寫一個shellcode並不怎麼需要一個編碼器,殺軟殺掉的概率不大,即使是msf生成的shellcode也很大概率不被殺掉(也許我沒用啥殺軟)所以以前我也覺得編碼器並不一定用得到。

 clip_p_w_picpath0011.png

   我經常理論的思考問題,而不會實際的搞破壞,所以直到後來我才直到編碼器的重要,因爲msf生成的shellcode經常是無法使用的!!需要編碼器進行處理,這個處理包括加殼,過濾壞字符,迭代編譯,甚至是控制字符串大小。當然編碼器也有其他的功能。

 先說說payloadencode的關係,不然我想有些人會感到困惑,msfpayload模塊是用來製作shellcode,也即是大家理解的用來搞破壞的機器碼,對於沒有彙編基礎的人,幾乎很難寫出一個實用的shellcode,以前我也無奈,感覺被拒絕在安全大門之外了,好在有msfpayload,成全了一顆愛搗蛋的心。當然我也在一直學習着呢!我相信非常多的人甚至都不知道shellcode在棧中是怎麼工作的,但是卻已經可以利用shellcode搞破壞了。我希望不要這樣。我不喜歡這種容易獲得又有巨大危險性的技術掌握在一個不能自控的人手裏。比如前一陣子的Hacking team泄露事件中的flash0day,直接裝一個msf產生的shellcode就可以使用了,而根本不需要對漏洞原理或者shellcode原理懂太多。

 有點說多了,encode 是編碼器,也是爲payload設計的,因爲殺軟會根據shellcode的特徵進行殺毒,因此我們需要encodepayload加殼,這裏的理論知識和軟件免殺原理相同,不過現在殺軟有沙箱功能了,在內存階段從行爲判定進行查殺,所以有些shellcode 可能用編碼器怎麼編碼也完蛋了,當然我胡亂吹的,因爲我沒有嘗試過,有那時間我還不如去做飯。

 總的來說msfvenom 結合了payload encode的功能。經過這兩個模塊生成的shellcode,要裝在的exp中來使用才行,就像彈頭安裝在導彈上。下面說說具體的使用方式

   clip_p_w_picpath003.jpg

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

 

Options:


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


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


    -n, --nopsled    <length>        爲payload預先指定一個NOP滑動長度


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


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


    -a, --arch       <architecture>  指定payload的目標架構


        --platform   <platform>      指定payload的目標平臺


    -s, --space      <length>        設定有效***荷載的最大長度


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


    -i, --iterations <count>         指定payload的編碼次數


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


    -x, --template   <path>          指定一個自定義的可執行文件作爲模板


    -k, --keep                       保護模板程序的動作,注入的payload作爲一個新的進程運行


        --payload-options            列舉payload的標準選項


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


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


        --shellest                   最小化生成payload


    -h, --help                       查看幫助選項


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


   讓我先列一個和Linux有關的payload

   clip_p_w_picpath005.jpg

   Ok,隨便找一個Linux下的payoad用吧,一個最簡單的 shellcode的生成至少需要2個選項 -p -f

   clip_p_w_picpath007.jpg

   這裏我指定了上面截圖中顯示的payload模塊,可以看到有一些警告,因爲沒有指定cpu架構也沒指定編碼器,至於這個shellcode能否用就拜託各位自己驗證了,我就爲了講解方便,不過文章結束我會給一個簡單的裝載shellcode的裝載器,evil0x.com的其他文章有更多的裝載器,各位可以自行查看。還有部分人疑惑,我是怎麼知道紅框裏的選項的,不好意思其實我也不知道,我只是use進去然後show options 看了下= =!其實我鼓勵去看下源碼,ruby是一門很簡單的語言的。

下面來看一個win下面的shellcode生成案例,我想win下面纔是大家更想要的吧,選擇了一個比較簡單而且經典的,就是執行exec命令的shellcode,這裏我還是打開計算器

   clip_p_w_picpath009.jpg

   注意看我的紅框,這裏描述了必要的選項,以及默認值

   clip_p_w_picpath011.jpg

   EXITFUNC指定進程完成的時候是退出線程還是進程或者其他選項,如果做注入的時候一定要指定線程,不然你的shellcode運行完就會退的。-o選項相比都容易理解,輸出到一個位置,畢竟是exe文件,終端輸出誰看得懂,在win下雙擊執行就是打開計算器了,不過被我的殺軟殺掉了,從隔離區恢復就可以驗證了。

那麼怎麼構造一個可以免殺的shellcode呢,當然需要編碼器了,我使用了一個異或算法的編碼器,-i迭代8次,結果就是呵呵沒過AV贏家360,也許是因爲我編碼器沒用好,也許是360的內存查殺技術導致這個簡單的shellcode過不去。╮(╯▽╰)╭,怎麼過呢,原理是是用殺軟沒見過的編碼器,如果殺軟支持內存查殺,恩就只能換shellcode了我用這個老shellcode過不了也正常。所以收集好的shellcode很重要,不過我一個沒有,歡迎分享給我。

   clip_p_w_picpath013.jpg

 

 

-b選項是用來過濾“壞字符”的,不同的漏洞根據需要要過濾不同的壞字符,需要對彙編有足夠的理解才能說好這部分,目前我還無法以一個好的方式說出來,不過最長過濾的就是0x00,因爲字符串遇到它就截斷了

   clip_p_w_picpath015.jpg

    這句命令不一定是有效的,我只是說明這個用法。如果我想知道哪些是不能用的壞字符呢,一般看高人的exp描述,或者自己的shellcode無法運行的時候使用ODdebug,看到底是哪裏導致的,然後針對性修改設置選項。

-x應該是一個常用的命令,這個命令是用來做程序注入的,是不是叫寄生會好點,就是把你的shellcode程序寄生在另一個程序上,然後目標人打開另外一個程序即可執行shellcode

   clip_p_w_picpath017.jpg

   生成的文件沒能在WIN7下運行,XP下可以,說明目前免費版的msf有些功能win7不適用了,回頭OD看下爲什麼不能直接運行,不過使用方式就是如此,還可以加上-e進行編碼

   clip_p_w_picpath019.jpg

   給大家看下XP下的結果,當然win7我沒有注入成功不過可以OD看下爲什麼(就是需要不少時間),不知道收費版win7下能否成功注入,懷疑中。。。

   clip_p_w_picpath020.png

-k 選項會將你的payload作爲一個新的進程運行。但目前這個選項只支持老版本的windows系統比如windows xp

-b 設定有效載荷的長度,這個要看EXP,如果沒有大小要求救不要設置

 

MSF圖形化工具是WEB工具,不知道新版是不是了,因爲從來沒用過收費版。另外還有一個GUUI工具armitage,CobaltStrikearmitage 的收費版,armitage 是圖形化的msf使用工具,不過功能不全,收費版想來個人也不會購買,因此只能使用命令行了。

 

   這裏我想說的其實自動生成的shellcode很多時候並不能用,經常需要我們手動修改一些字符,最後請大家努力收集好的shellcode吧,並給我用吧卡卡。。。。

下面給大家一個簡單的shellcode裝載器,也就是說把shellcode放在裏面就是可以使用的,網上隨便找了一個,evil0x.com有文章寫了幾個,有興趣可以查看

   clip_p_w_picpath022.jpg

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章