Metasploit渗透测试实战:白帽子从入门到精通

3460 字
17 分钟
Metasploit渗透测试实战:白帽子从入门到精通

本文基于作者实际学习经验,基于实际安全测试环境进行渗透测试学习,总结 Metasploit 框架的核心使用方法。

根据pdf,总结自己认为比较重要的,欢迎大佬指错。

1.Metasploit基础#

1.1 专业术语#

1.1.1 渗透攻击(Exploit)#

由攻击者或渗透测试者利用一个系统、应用或服务中心的安全漏洞进行的攻击行为。往往会造成开发者所没有预期到的一种特殊结果。

1.1.2 攻击载荷(Payload)#

目标系统在被渗透攻击之后去执行的代码,在Metasploit框架中可以自由地选择、传送和植入。

1.1.3 Shellcode#

渗透攻击时作为攻击载荷运行的一组机器指令,通常用汇编语言编写。

1.1.4 模块(Module)#

Metasploit框架里面包含了许多软件组件,代表的就是模块,比如渗透攻击模块、辅助模块等。

1.1.5 监听器(Listener)#

Metasploit框架中用来等来接入网络连接的组件,比如目标主机被渗透攻击之后,通过互联网进行连接。

1.2 用户接口#

Metasploit为用户提供了多种接口,包含终端、命令行、图形化界面等。

1.2.1 MSF终端#

目前最流行的接口,灵活且功能丰富,后续的操作都基于此。启动命令:msfconsole

MSF终端
MSF终端

1.2.2 MSF命令行#

主要用于脚本和其他命令行工具的互操作性。在明确渗透工具和参数时,使用这个将会效率翻倍。(目前好像被废弃了emmm)

1.2.3 Armitage#

一个界面交互系统,不比命令那么酣畅淋漓,简单介绍下(以后补)。

Terminal window
#启动程序
armitage

1.3 功能程序#

1.3.1 MSF攻击载荷生成器#

简单就是把shellcode加入到各种文件中,js、html、py等等。

1.3.2 MSF编码器#

简单来说就是加壳,给shellcode加点料,让别人(杀毒软件)看不懂。

1.3.3 Nasm Shell#

目前的理解就是把指令操作转化成汇编的工具。

2.情报收集#

安全专家们都说是最重要的环节,用尽手段收集信息当然前提不能犯罪。比如渗透网站,就在网站的界面来回点,google该网站所属公司等碎片化信息,要想获取root权限,这些步骤必不可少。

2.1 被动信息收集#

不直接接触目标的情况下挖掘目标信息。比如接触运维人员,了解服务器的型号和系统等,也可以用whois工具在公开渠道获取情报。

2.1.1 whois查询#

简单查询了下某个域名,发现这些有用信息:①域名服务器:grs-whois.hichina.com(阿里云)②注册地址www.net.cn(阿里云)③更新时间,创建时间,创建者,注册商IANA编号④DNS服务器就是Name Server(ps:往往dns服务器部署在公司内部,解析域名和ip,所以看到很多对应关系)

whois查询
whois查询

2.1.2 Netcraft#

这个网站是在线的直接搜索即可 https://sitereport.netcraft.com/

Netcraft
Netcraft

这里查到了ipv4的地址信息,我们直接whois查询ip地址,获取了一些信息(emmm好像没啥用)。

whois IP查询
whois IP查询

2.1.3 NSLookup#

获取服务器附加信息的工具。有比较多的命令行,这里简单介绍几个。

A:指的是用来指定主机名或域名对应的IPv4记录
AAAA:指的是用来指定主机名或域名对应的IPv6记录
MX:邮件交换记录,它指向一个邮件服务器,用于电子邮件系统
NS:用来指定该域名由那个DNS服务器来进行解析
SOA:起始授权机构记录,SOA记录说明了在众多NS记录里那一台才是主要的服务器
CNAME:别名记录,也称为规范名字。这种记录允许将多个名字映射到同一台计算机
TXT:一般指为某个主机名或域名设置的说明

NSLookup查询1
NSLookup查询1
NSLookup查询2
NSLookup查询2
NSLookup查询3
NSLookup查询3

Non-authoritative answer:表示未证实回答,说明是缓存读来的,不是向服务商请求获得的。

2.2 主动信息收集#

2.2.1 Nmap端口扫描#

Terminal window
#ping扫描,主机存活就扫描
nmap -sP <域名或ip>
#Tcp扫描,与扫描端口建立TCP连接(缺点会在目标主机留下日志溯源)
nmap -sT <域名或ip>
#半开扫描,SYN扫描需要root(只建立第一次握手,失败就放弃一般不会被留痕)
nmap -sS <ip地址>
#路由追踪扫描,了解网络通行情况,各个节点花费的时间
nmap -traceroute <域名或ip>
#扫描网段下的ip(会根据地址搜索当前网段)
nmap ip地址/24
#扫描一个目标列表
nmap -iL [ip地址列表文件]
#非ping扫描不执行主机发现,可以跳过防火墙(-PA:ACK方式,-PS:SYN方式,-PU:UDP方式,-PY:SCTP INIT)
nmap -Pn <域名或ip>
#脚本扫描
nmap --script=[指令] [ip]
auth:绕过鉴权扫描
broadcast:在局域网探查更多服务开启情况
brute:对常见http/smtp提供暴力破解
dos:用于拒绝服务攻击
vuln:用于检查目标主机是否有常见漏洞
version:负责增强服务与版本扫描的功能的脚本
malware:探测目标机是否感染了病毒,开启后门等信息
fuzzer:模糊测试脚本,发送异常的包到目标机,探测出潜在漏洞
#附加参数
-p:指定扫描端口
-A:全面系统检测,花费时间长
-vv:对扫描结果详细输出
-sV:探测打开对应的服务版本信息
-O:操作系统检测
-n:不进行域名解析

2.2.2 使用数据库#

在实际的渗透场景中,可能需要多个主机,多个端口,所以比较好的方式就是将收集到的信息存入数据库统一管理。这里使用PostgreSQL,因为这个是Metasploit默认的。

2.2.2.1 连接数据库#
Terminal window
#启动数据库服务
service postgresql start
#初始化数据库
msfdb init
#启动msfconsole
msfconsole
#检测连接状态
db_status
#手动连接数据库
db_connect msf:admin@127.0.0.1/msf
#数据库配置文件
vi /usr/share/metasploit-framework/config/database.yml

数据库连接1
数据库连接1
数据库连接2
数据库连接2

连接成功

连接成功
连接成功

2.2.2.2 将nmap输出结果导入Metasploit#
Terminal window
#扫描虚拟机网段(oX表示输出位xml格式,Subnet1就是文件名)
nmap -Pn -sS -A -oX Subnet1 192.168.48.0/24

nmap扫描1
nmap扫描1
nmap扫描2
nmap扫描2

Terminal window
#连接数据库
db_connect msf:admin@127.0.0.1/msf
#导入数据
db_import Subnet1
#显示数据库主机信息
db_hosts -C address

导入数据
导入数据

2.2.2.3 TCP空闲扫描#

高级扫描,冒充内网中另一台电脑的ip地址对目标主机进行探测。递增ip帧标志理解成一个数值,如果局域网内的某台主机是空闲的,那么这个数值将可以预测,高级扫描就是找到这样一台主机来进行伪装扫描。

Terminal window
#使用scanner/ip/ipidseq框架
use auxiliary/scanner/ip/ipidseq
#参数说明
show options

空闲扫描参数
空闲扫描参数

该列表展示了执行扫描所需要的参数:

RHOSTS:被扫描的目标,可以使用ip地址段(192.168.1.110-192.168.1.212)、CIDR地址块(192.168.1.48.0/24)、使用逗号分隔的多个CIDR地址块(192.168.1.0/24,192.168.5.0/24)、以及每行包含一个IP地址的IP列表文本文件

THREAD:所有扫描模块的默认线程数为1,增加参数可以提高扫描速度,一般windows平台不超过16,unix平台不超过128。

Terminal window
#指定cidr地址块
set RHOSTS 192.168.48.0/24
#线程数设置
set THREADS 50

空闲扫描结果1
空闲扫描结果1
空闲扫描结果2
空闲扫描结果2

这里捕获到两台空闲主机,133是我的xp,2就不知道是啥了,这里打算用空闲主机(192.168.1.2)对目标主机(192.168.1.133)进行扫描。这样我们就不需要通过自身ip发送任何数据包,就可以获取目标主机的端口信息。

Terminal window
nmap -PN -sI 192.168.1.2 192.168.1.133

空闲扫描攻击
空闲扫描攻击

2.2.2.4 在MSF客户端运行nmap#

连接数据库后采用db_nmap,不仅可以扫描,还能把扫描到的数据存库。

Terminal window
db_nmap -sS -A 192.168.48.133

db_nmap
db_nmap

2.2.3 Metasploit进行端口扫描#

metasploit不仅可以用第三方扫描器,还内建了一些扫描端口工具,搭配框架使用相得益彰。

SYN端口扫描器对单主机进行简单扫描:

Terminal window
#搜索端口扫描模块
search portscan
#使用syn扫描
use auxiliary/scanner/portscan/syn
#设置目标ip
set rhosts 192.168.48.133
#设置线程数
set threads 50
#启动攻击
run

这个扫描有点慢,这里可以看到目前135端口是开放的。

端口扫描
端口扫描

2.3 针对性扫描#

如果有捷径肯定是要走的,没什么要羞愧的,所以针对性扫描是很有必要的,假如市场告诉你大部分机子都存在一个漏洞,你肯定优先扫描,比如MS08-067(著名的远程溢出漏洞,影响范围是Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本,甚至还包括测试阶段的Windows 7 Pro-Beta)

2.3.1 服务器消息块协议扫描#

SMB协议是微软和英特尔1987年制定的通信协议,大多运行在Windows系统上。Metasploit可以利用它的smb_version模块来遍历一个网络,并获取Windows系统的版本号。

Terminal window
#搜索端口扫描模块
search smb_version
#使用smb_version
use auxiliary/scanner/smb/smb_version
#设置目标ip
set rhosts 192.168.48.133
#启动
run

这里可以看到我靶机的版本xp sp3、中文、用户名等信息。

SMB扫描
SMB扫描

2.3.2 搜寻配置不当的Microsoft SQL Server#

MS SQL安装后,默认监听在TCP端口1443或者使用随机的动态TCP端口。如果是随机的动态端口,只要简单的对1434这个udp端口进行查询,就能知道随机的tcp端口号,metasploit有一个mssql_ping模块可以帮我们完成。

Terminal window
#使用mssql_ping
use auxiliary/scanner/mssql/mssql_ping
#设置目标网段
set rhosts 192.168.48.0/24
#设置线程数(255提高扫描速度)
set threads 255
#启动
run

MSSQL扫描
MSSQL扫描

2.3.3 SSH服务器扫描#

识别ssh安全协议的版本,ssh很多版本中被发现存在漏洞,这是一种安全协议,这里的安全仅代表数据安全。

Terminal window
#使用ssh_version
use scanner/ssh/ssh_version
#设置线程数
set threads 50
#设置目标
set rhosts 192.168.48.0/24
#查看配置
show options
#启动扫描
run

我的虚拟机中有一台windows,一台kali,一台centos7。这里132是kali自身(连自己都不放过),128是centos7。

SSH扫描
SSH扫描

2.3.4 FTP扫描#

FTP是一个复制且缺乏安全性的应用侧协议,其实就是个文件传输协议。这里可以用ftp_version对xp虚拟机进行扫描。

Terminal window
use scanner/ftp/ftp_version
set threads 50
set rhosts 192.168.48.133
run

FTP扫描
FTP扫描

成功识别到ftp服务器,接下来检查下是否允许匿名登陆。

Terminal window
use scanner/ftp/anonymous
set threads 50
set rhosts 192.168.48.133
run

结果可以看到允许匿名登陆,但是只有读的权限,没有写入权限。

FTP匿名扫描
FTP匿名扫描

2.3.5 简单网管协议扫描#

SNMP称为简单网管协议,设计之初是用来报告带宽利用率、冲突率以及其他一些信息。

Terminal window
use scanner/snmp/snmp_enum
set rhosts 192.168.48.133
set threads 50
run

扫描完之后获取了非常庞大的信息,主机名、描述、端口开放情况、服务情况等。

SNMP扫描
SNMP扫描

3.漏洞扫描#

这一章节主要就是介绍市面上常见的一些漏洞扫描工具。

3.1 NeXpose#

这个工具通过对网络进行扫描,然后找到正在运行的设备,最终识别操作系统和应用程序上的安全漏洞,生成各种类型的报告。

注意事项:

  1. 安装的时候要注意,记得输入的账号和密码,后续登陆软件要用。
  2. 需要有个企业邮箱,要不然官网密钥没地方发,去zoho注册一个就好
  3. 去官网登陆网站注册一步步往下

这软件扫描动静非常大,开启了目标就会警觉所以适合授权扫描,感觉适合做等保。

3.2 Nessus#

说是当前世界上使用最广泛的扫描漏洞工具,安装很简单就是直接下载无脑下一步就好了。

又踩坑了,没有科学上网插件会一直编译非常慢,记得科学上网开起来。

这软件相比于NeXpose感觉差不多,可能就是专业一点受众大一点,做安服的或许会用到这里就不深入研究了。

3.3 专用漏洞扫描器#

3.3.1 验证SMB登陆#

这就是个文件共享,比如windows系统是可以局域网共享文件的,还有nas系统群辉也有很多共享服务,我们可以针对进行扫描。

Terminal window
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.48.133
set SMBUSER Administrator
set SMBPASS s3cr3t
run

SMB登陆验证
SMB登陆验证

很多公司的系统都是镜像克隆安装的,所以拿到一个账号密码每个电脑都能smb访问了。

3.3.2 VNC空口令#

这是一个基于linux和unix的远程开源控制软件。

Terminal window
use auxiliary/scanner/vnc/vnc_none_auth
set RHOSTS 192.168.48.133
run

VNC空口令
VNC空口令

3.3.3 开放的X11服务器#

一个用于在本地和远程计算机之间传输键盘和鼠标事件的协议,通过这个漏洞可以检测键盘的行为。

Terminal window
use auxiliary/scanner/x11/open_x11
set RHOSTS 192.168.48.133
run

X11扫描
X11扫描

番外#

Terminal window
#更新软件列表
apt-get update
#更新软件
apt-get upgrade
#更新内核
apt-get dist-upgrade

相关推荐#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Metasploit渗透测试实战:白帽子从入门到精通
https://blog.wmovie.site/posts/metasploit-pentest-guide/
作者
朵朵
发布于
2024-03-15
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
朵朵
全栈开发者,5 年 Java/SpringBoot + Vue/React 开发经验,曾维护 Delphi 遗留系统。业余深耕 NAS 与软路由,专注 Homelab 家庭网络搭建及 Docker 自托管应用实战。坐标福州,正迈向独立开发之路。
公告
欢迎来到我的博客!有什么想要的邮箱告诉我,最近沉迷nas和软路由。
分类
标签
站点统计
文章
25
分类
4
标签
18
总字数
32,908
运行时长
0
最后活动
0 天前

文章目录