首先感谢大家对公开课的支持~公开课将持续更新,希望能给大家带来帮助~
Msfpayload和Msfvenom两个都是payload的生成器,但是msfpayload将会被Metasploit团队放弃研发和更新,转而对msfvenom进行研发。所以说,msfvenom是一个比msfpayload更高级的payload生成器。但是在中国,有大量的msfpayload的用户,所以我今天两个生成器都会讲到。
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]
Msfencode
这个可不是什么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
Msfvenom不仅增加了更多的输出的格式,同时也把这些格式做了分类。
-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 欢迎美女和汉子们关注私信~
* 作者/Arthur,整理/FreeBuf小编banish,应作者要求,未经允许禁止转载!