首先感谢大家对公开课的支持~公开课将持续更新,希望能给大家带来帮助~

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和Msfencode配合生成payload‍‍‍

‍‍‍‍

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有时候还是可靠的,应该是采用了行为查杀技术‍‍。

 

Msfvenom

‍‍‍‍‍‍这个是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,应作者要求,未经允许禁止转载!

源链接

Hacking more

...