信息搜集
- 外围情报搜集
- 物理机有网状态下
- 物理机无网状态下
- 个人推测
- 获取的信息
- 主机探测与端口扫描
- 活跃主机扫描
- ICMP Ping命令
- Metasploit的主机发现模块
- arp_sweep使用方法
- 使用Nmap进行主机探测
- -sn选项扫描
- -Pn选项扫描
- -PU选项
- 操作系统辨识
- -O选项扫描
- -A选项扫描
- 端口扫描与服务类型探测
- Metasploit端口扫描器
- Metasploit中 syn 扫描模块的使用
- Nmap的端口扫描功能
- 使用Nmap探测更详细的服务
- Nmap -sV 列出服务详细信息
- Back Track 5 的 autoscan 功能
- 探测扫描结果分析
- 扫描结果
- 攻击路线
- 服务扫描与查点
- Metaspolit中的服务查点辅助模块(通过search name:_version查找)
- 常见的网络服务扫描
- Telnet 服务扫描
- Telnet 服务查点
- SSH 服务扫描
- SSH 服务查点
- Oracle 数据库服务查点
- 开放代理探测与利用
- 开放代理探测辅助模块
- 口令猜测与嗅探
- SSH 服务口令猜测
- SSH 服务弱口令猜测
- psnuffle 口令嗅探
- 通过嗅探获取 FTP 用户名和口令
- 网络漏洞扫描
- 漏洞扫描原理与漏洞扫描器
- OpenVAS 漏洞扫描器
- 1. 配置 OpenVAS
- 步骤 1
- 步骤 2
- 步骤 3
- 步骤 4
- 步骤 5
- 步骤 6
- 如果启动时报错
- 可以把启动 OpenVAS 的相关 Shell 命令写成一个脚本
- OpenVAS 图形界面
- 访问 GSA
- 使用 GSA (Greenbone Security Assistant,多人共享数据)
- 创建 OpenVAS 扫描目标
- 创建 OpenVAS 扫描任务
- 启动 OpenVAS 扫描任务并查看扫描进度
- 查看 OpenVAS 扫描报告
- 查看 OpenVAS 扫描报告中的详细信息
- 在Metasploit 内部使用 OpenVAS
- 步骤 1
- 步骤 2
- 步骤 3
- 步骤 4
- 步骤 5
- 步骤 6
- 查找特定服务漏洞
- 使用 Nmap 查找 MS08-067 漏洞
- 漏洞分析
外围情报搜集
物理机有网状态下
物理机无网状态下
个人推测
是由于需要向比较权威的DNS服务器访问,然后在相应的DNS服务器上读取相应的数据库,然后给出我们所要的信息!
获取的信息
这一阶段获取到的信息是:网站域名、IP地址、服务器操作系统类型版本!
主机探测与端口扫描
我们在进行这个阶段的时候,首先应该确保虚拟机的5台机子全部处于运行状态!
活跃主机扫描
ICMP Ping命令
Ping程序会发送一个ICMP echo请求给目的主机,并报告应答情况,如果Ping后面跟的是域名,那么它会尝试将域名解析。
Metasploit的主机发现模块
Metasploit中提供了一些辅助模块可用于活跃主机发现,这些模块源代码的路径是modules/auxiliary/scanner/discovery/
目录中,有如下6个模块:
其中,最常用的两个模块的主要功能是:
- arp_sweep 使用ARP请求枚举本地局域网络中的所有活跃主机。
- udp_sweep 通过发送UDP数据包探查指定主机是否活跃,并发现主机上的UDP服务。
arp_sweep使用方法
我们需要做的就是将show options查看参数后,将Required字段中为yes的选项设置参数!先别着急,我们这里有一个坑!不仅仅需要为yes的选项设置参数,还需要为no的选项设置参数,也就是说,需要设置6个参数。如下:
使用Nmap进行主机探测
Nmap(Network mapper)是目前最流行的网络扫描工具,它可以高效地对大范围的IP地址段进行扫描。使用Nmap能够知道目标网络上有哪些主机是存活的,哪些服务是开放的,甚至知道网络中使用的防火墙设备类型。
通常一个Nmap命令格式如:nmap <扫描选项> <扫描目标>
扫描目标分类:
- 一个IP地址:只需要使用1个IP地址作为扫描范围
- 多个IP地址:每个IP地址之间用逗号分隔开来
- 一段连续的IP地址:可以使用连字符(-)表示,或者用(网段/网络号)表示
扫描选项分类:
- 不使用任何选项:默认使用ICMP echo请求(Ping命令),同时会测试80和443端口是否开启
- 仅在一个内部网络发现存活主机:使用
-sn
选项,这个选项会使用ICMP的Ping扫描获取网络中的存活主机情况,而不会进一步探测主机的详细情况(如端口开启情况、操作系统类型等) - 如果是在Internet情况下,推荐使用-Pn选项:它会告诉Nmap不要使用Ping扫描,因为ICMP数据包通常无法穿透Internet上的网络边界(也就是可能被防火墙设备过滤了)
-PU
选项:这个扫描使用的是UDP,并且如果我们想要提高扫描速度,可以与配合-sn
一起使用,这样就只是发现Internet上的存活主机了
-sn选项扫描
-Pn选项扫描
下面是其中一台主机的扫描报告:
-PU选项
配合-sn
选项一起使用!
不配合-sn
一起使用的时候,与-Pn
选项的效果一样!
操作系统辨识
获取了网络中的活跃主机之后,你最关心的事情可能就是这些主机安装了什么操作系统。准确的区别出这些设备使用的操作系统对于后续渗透流程的确定和攻击模块的选择非常重要。
在Metasploit中,共计载荷针对不同 的操作系统设计,不知道操作系统的类型很难对其实施攻击。
可是使用-O
选项让nmap对目标的操作系统进行识别。
-O选项扫描
然后到这里花了2个小时,东想西想最后百度了一下,大家可能会遇到这样一个问题:如下,-0发现端口全部被过滤!
解决方案:将虚拟机的vmnet8的结束IP地址改为255
最后得到我们满意的结果:)
-A选项扫描
端口扫描与服务类型探测
端口扫描技术一般有如下几类:
- TCP Connect : 发起一次真实的TCP连接,最精准,速度最慢,最容易暴露。
- TCP SYN : 利用TCP协议栈特性,速度快,不易被发现。
- TCP ACK : 利用TCP协议栈特性,速度快,不易被发现。
- TCP FIN : 利用TCP协议栈特性,速度快,不易被发现。
- TCP IDLE : 利用TCP协议栈特性,速度快,不易被发现。
Metasploit端口扫描器
如下图所示:
这几款扫描工具的实现原理和使用均有较大的区别:
- ack,通过ACK扫描的方式对防火墙未被屏蔽的端口进行扫描。
- ftpbounce,通过 FTP bounce 攻击的原理对 TCP 服务进行枚举。
- syn,使用发送 TCP SYN 标志的方式探测开放的端口。
- tcp,通过一次完整的 TCP 连接来判定端口是否开放。
- xmas,一种更为隐蔽的扫描方式,通过发送 FIN、PSH 和 URG 标志,能够躲避一些高级的 TCP 标记监测器的过滤。
推荐使用 syn 端口扫描器,因为它的扫描速度快、结果准确且不易被发现。
Metasploit中 syn 扫描模块的使用
这里有一个坑,与前面一个用arp_sweep
的坑类似,需要将所有参数都进行设置!
Nmap的端口扫描功能
无可置疑,端口扫描原本就是Nmap的看家本领!
Nmap对端口状态的分析粒度更加细致:
- open(开放),一个应用程序正在此端口上进行监听,以接收来自 TCP、UDP 或者 SCTP 协议的数据。这是在渗透测试中最关注的一类端口,开放端口往往能够为我们提供一个能够进入系统的攻击途径。
- closed(关闭),关闭的端口指的是主机已响应,但没有应用程序监听的端口。这些信息并非毫无价值,扫描出关闭端口至少说明主机是活跃的。
- filtered(过滤),指 Nmap 不能确认端口是否开放,但根据响应数据猜测该端口可能被防火墙等设备过滤。
- unfiltered(未过滤),仅在使用 ACK 扫描时,Nmap 无法确定端口是否开放,会归为此类。需要其他类型的扫描来进一步确认!
常用的Nmap扫描类型参数主要有:
-sT
,TCP connect 扫描-sS
,TCP SYN 扫描-sF/-sX/-sN
,这些扫描通过发送一些特殊的标志位以避开设备或软件的检测-sP
,通过发送 ICMP echo 请求探测主机是否存活,原理同Ping-sU
,探测目标主机开放了哪些 UDP 端口-sA
,TCP ACK 扫描
常用的 Nmap 扫描选项有:
-Pn
,在扫描之前,不发送 ICMP echo 请求测试目标是否活跃-O
,启用对于 TCP/IP 协议栈的指纹特征扫描以获取远程主机的操作系统类型等信息-F
,快速扫描方式,只扫描在 nmap-services 中列出的端口-p<端口范围>
,可以使用这个参数指定希望扫描的端口
通常使用 -sS
扫描,这种扫描通常不会被 IDS 等设备记录,并且扫描速度快!
使用Nmap探测更详细的服务
如果想要获取更加详细的服务版本等信息,需要使用-sV
选项:
Nmap -sV 列出服务详细信息
扫描结果指出:5001端口未识别服务指纹特征。
Back Track 5 的 autoscan 功能
打开方式如下(进入图形界面startx
之后等待片刻):
无脑下一步,到如下界面后设置需要扫描的IP,然后继续无脑下一步:
结果(信息包括主机名、操作系统版本、开放端口和服务等):
探测扫描结果分析
扫描结果
把获取的端口和服务信息进行分类,并按照可能的攻击途径对其进行分类,如下:
主机 | 操作系统 | 主要的开放端口 | 对应的服务版本 |
---|---|---|---|
网站服务器 (10.10.10.129) | Linux 2.6.X (Ubuntu) | ftp (21) | vsftpd 2.2.2 |
ssh (22) | OpenSSH 5.3p1 | ||
http (80) | Apache httpd 2.2.14 | ||
netbios-ssn (139) | Samba smbd 3.X | ||
imap (143) | Courier Imapd (released 2008) | ||
ovm-manager (5001) | Oracle VM Manager | ||
http (8080) | Apache Tomcat/Coyote JSP engine 1.1 | ||
后台服务器 (10.10.10.130) | Microsoft Windows XP Professional SP2 or Windows Server 2003 | ftp (21) | Microsoft ftpd |
http (80) | Microsoft IIS httpd 6.0 | ||
msrpc (135) | Microsoft Windows RPC | ||
netbios-ssn (139) | 空 | ||
microsoft-ds (445) | Microsoft Windows 2003 | ||
multiling-http (777) | 未知 | ||
msrpc (1025、1026、1029、1031) | Microsoft Windows RPC | ||
oracle-tns (1521) | Oracle TNS Listener 10.2.0.1.0 (for 32-bit Windows) | ||
http (6002) | SafeNet Sentinel License Monitor httpd 7.3 | ||
afs3-callback (7001) | 未知 | ||
http (7002) | SafeNet Sentinel Keys License Monitor httpd 1.0 (Java Console) | ||
http (8099) | Microsoft IIS httpd 6.0 | ||
网关服务器 (10.10.10.254) | Linux 2.6.X (Ubuntu) | ftp (21) | ProFTPD 1.3.1 |
ssh (22) | OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0) | ||
telnet (23) | Linux telnetd | ||
smtp (25) | Postfix smtpd | ||
domain (53) | ISC BIND 9.4.2 | ||
http (80) | Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch) | ||
netbios-ssn (139、445) | Samba smbd 3.X (workgroup: WORKGROUP) | ||
mysql (3306) | MySQL 5.0.51a-3ubuntu5 | ||
postgresql (5432) | PostgreSQL DB 8.3.0 - 8.3.7 | ||
ajp13 (8009) | Apache Jserv (Protocol v1.3) | ||
http (8180) | Apache Tomcat/Coyote JSP engine 1.1 |
攻击路线
可能的攻击路线 | 攻击对象 |
---|---|
口令猜测 | 10.10.10.129:ssh、samba |
10.10.10.130:smb | |
10.10.10.254:ftp、ssh、telnet、mysql、postgreSQL | |
口令嗅探 | 10.10.10.254:ftp、telnet |
系统漏洞深入扫描 | 全部存活主机的开放端口 |
系统漏洞利用 | 所有开放网络服务中存在的安全漏洞 |
Web 应用漏洞扫描 | 10.10.10.129:Apache、Apache Tomcat |
10.10.10.254:Apache、Apache Tomcat | |
Web 应用漏洞利用 | 10.10.10.129:Apache、Apache Tomcat |
10.10.10.254:Apache、Apache Tomcat |
服务扫描与查点
对网络上的特定服务进行扫描,往往能够让我们增加渗透成功的几率。
对相应的端口上所运行服务的信息进行深入挖掘,通常称为服务查点。
在Metasploit的Scanner辅助模块中,有很多用于服务扫描和查点的工具,这些工具通常以[service_name] _version
和[service_name] _login
命名。(PS:并非所有的模块都是按照这种命名规范进行开发的)
Metaspolit中的服务查点辅助模块(通过search name:_version查找)
常见的网络服务扫描
Telnet 服务扫描
Telnet是一个历史悠久但先天缺乏安全性的网络服务。
当渗透进入一个网络时,不妨扫描一下是否有主机或设备开启了Telnet服务,为下一步进行网络嗅探或口令猜测做好准备。
Telnet 服务查点
通过这次查点,能够知道10.10.10.254主机的操作系统版本是Ubuntu 8.04。
SSH 服务扫描
SSH 是类 UNIX 系统上最常见的远程管理服务,与Telnet不同的是,它采用了安全加密信息传输方式(SSL)。
SSH 服务查点
查点显示了 SSH 服务软件及具体版本号。
Oracle 数据库服务查点
使用tnslsnr_version
模块在网络中发现后台服务上开放的Oracle数据库,并获取其版本号。
开放代理探测与利用
在一些特殊情形的渗透测试工作中,为避免被对方的入侵检测系统跟踪,你很有可能需要隐藏自己的身份。
隐藏网络身份的技术很多,比如使用代理服务器(Proxy)、VPN等,最简单和最常用的还是使用代理服务器。
Metasploit 提供了 open_proxy 模块,能够让你更加方便的获取免费的 HTTP 代理服务器地址。
开放代理探测辅助模块
由于不会代理,所以实验没成功!
口令猜测与嗅探
对于发现的系统与文件管理类型网络服务,如 Telnet、SSH、FTP 等,可以进行弱口令的猜测,以及对明文传输口令的嗅探,从而尝试获取直接通过这些服务进入目标网络的通道。
SSH 服务口令猜测
使用 Metasploit 中的 ssh_login
模块对 SSH 服务尝试进行口令试探攻击。进行口令攻击之前,需要一个好用的用户名和口令。(PS:如何制作高质量的字典与社会工程学关系密切)
SSH 服务弱口令猜测
载入 ssh_login
模块后,需要指定以下参数:
参数名 | 说明 |
---|---|
USERNAME | 一个用户名 |
USER_FILE | 用户名列表文件 |
PASSWORD | 一个特定的密码 |
PASS_FILE | 字典文件 |
我们首先知道backtrack5的/pentest/passwords/wordlists
有两个字典文件!
使用ssh_login
模块,如下(PS:运行时间也太长了吧!):
psnuffle 口令嗅探
psnuffle 是目前 Metasploit 中唯一用于口令嗅探的工具,它的功能算不上强大,但是非常实用,可以使用它截获常见协议的身份认证过程,并将用户名和口令信息记录下来。
通过嗅探获取 FTP 用户名和口令
网络漏洞扫描
我们之前使用的技术:
- 主机探测
- 端口扫描
- 服务扫描
- 查点技术
定下目标:通过开发服务的漏洞利用,取得 DMZ 区所有服务器的控制权。
最流行漏洞扫描器:OpenVAS 的操作方法。
漏洞扫描原理与漏洞扫描器
概念:网络漏洞扫描指的是利用一些自动化的工具来发现网络上各类主机设备的安全漏洞。
漏洞扫描分为:
- 黑盒扫描
- 白盒扫描
黑盒扫描:与服务扫描和查点类似的技术,一般通过识别服务的类型和版本,对服务是否存在漏洞进行判定。
白盒扫描:在具有主机操作系统权限的情况下进行漏洞扫描。
白盒扫描的结果更加精准,但不能作为外部渗透测试的最终数据(PS:因为有防火墙和各类防御软件的原因)。
漏洞扫描器是一个高度自动化的综合安全评估系统,集成了很多安全工具的功能。
漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期对特征库进行更新。
PS1:漏洞扫描器得出的结果通常会出现很多的误报,所以需要人工分析。
PS2:使用时一定要注意规避风险,将其对系统运行可能造成的影响降到最低。
OpenVAS 漏洞扫描器
说明:OpenVAS 是类似 Nessus 的综合型漏洞扫描器,可以用来识别远程主机、Web应用存在的各种漏洞。
OpenVAS 的主要功能模块如图:
1. 配置 OpenVAS
BT5 中预装了 OpenVAS 网络漏洞扫描工具,使用前需要对他进行一些配置。
步骤 1
首先,输入以下命令生成 OpenVAS 运行所需的证书文件,生成过程系统会询问一些信息,可以按回车键使用其默认值:
root@bt:~# openvas-mkcert -q
root@bt:~# openvas-mkcert-client -n om -i
步骤 2
升级 NVT 库:
root@bt:~# openvas-nvt-sync
步骤 3
对 OpenVAS 的扫描引擎进行一些初始化的操作:
root@bt:~# openvassd
root@bt:~# openvasmd --migrate
root@bt:~# openvasmd --rebuild
步骤 4
使用 openvasad 命令添加一个管理员角色的 OpenVAS 登录用户:
root@bt:~# openvasad -c 'add_user' -n admin -r 'Admin'
Enter password:
步骤 5
在终端中输入如下命令启动 OpenVAS Scanner:
root@bt:~# openvassd --listen=127.0.0.1 --port=9391
步骤 6
最后启动 OpenVAS Manager,在终端运行如下命令:
root@bt:~# openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db --slisten=127.0.0.1 --sport=9391 --listen=0.0.0.0 --port=9390
如果启动时报错
运行查看详细的报错信息:
root@bt:~# /pentest/misc/openvas/openvas-check-setup
已经可以使用 Metaspoilt v4 中新增的 OpenVAS 插件、OpenVAS Cli 或者 GreenBone Security Desktop(GSD)等,对 OpenVAS 网络漏洞扫描服务进行管理和使用。(PS:需要使用上面建立的admin用户来登录 OpenVAS 服务端)
OpenVAS Cli 的可执行文件名称为 omp(OpenVAS Management Protocol,OpenVAS 管理控制协议),是一个命令行界面的客户端程序。
多人共享:如果需要其他渗透测试小组成员共享,使用 GSA 非常方便。
root@bt:~# gsad --listen=0.0.0.0 --port=9392 --alisten=127.0.0.1 --aport=9392 --mlisten=127.0.0.1 --mport=9390 --http-only
浏览器输入 http://localhost:9392 访问 GSA。
提示:如果在配置 OpenVAS 过程中如果出现问题,可以查看 /usr/local/var/log/openvas 中的日志文件查找问题出现的原因。
可以把启动 OpenVAS 的相关 Shell 命令写成一个脚本
root@bt:# touch start_openvas.sh
root@bt:# vim start_openvas.sh
openvas-nvt-sync
openvassd --listen=127.0.0.1 --port=9391
openvasad --listen=127.0.0.1 --port=9393
openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db --slisten=127.0.0.1 --sport=9391 --listen=0.0.0.0 --port=9390
gsad --listen=0.0.0.0 --port=9392 --alisten=127.0.0.1 --aport=9392 --mlisten=127.0.0.1 --mport=9390 --http-only
root@bt:# chmod +x start_openvas.sh
root@bt:# ./start_openvas.sh
OpenVAS 图形界面
访问 GSA
使用 GSA (Greenbone Security Assistant,多人共享数据)
描述:是 OpenVAS 众多客户端程序中界面最友好、功能最完善的一个。
浏览器输入 http://localhost:9392 访问 GSA。(用户名和密码和OpenVAS设置的一样)
OpenVAS 目前不支持使用中文,如果需要将扫描报告保存为文件可以使用HTML格式。
创建 OpenVAS 扫描目标
创建 OpenVAS 扫描任务
启动 OpenVAS 扫描任务并查看扫描进度
查看 OpenVAS 扫描报告
查看 OpenVAS 扫描报告中的详细信息
在Metasploit 内部使用 OpenVAS
Metasploit v4 中新增一个插件用于控制 OpenVAS,该插件可以在不离开 msfconsole 终端环境的情况下对 OpenVAS 进行控制。
步骤 1
在 MSF 终端输入下面命令载入 OpenVAS 插件:
msf > load openvas
步骤 2
连接到 BT5 的 OpenVAS 管理引擎:
msf > openvas_connect admin your_openvas_passwd 10.10.10.128 9390 ok
步骤 3
使用 openvas_target_create
创建一个扫描目标:
openvas_target_create ubuntu1 10.10.10.254 Metasploitable
步骤 4
创建扫描任务:
创建任务之前需要查找到创建任务所需的扫描策略(Scan Config),可以使用 openvas_config_list 列出现有的扫描策略,然后使用 openvas_task_create <任务名><任务备注><扫描策略ID><扫描目标ID>
创建扫描任务:
msf > openvas_config_list
msf > openvas_task_create ubuntu-scan "Scan of Ubuntu Metasploitable" 0 2
可以看到,我的dmz-fast-scan还在运行中…
步骤 5
使用 openvas_task_start<task_id>
启动这个新建的扫描任务:
msf > openvas_task_start 1
进行扫描的过程,可以使用 openvas_task_list
查看扫描进度(两个都在运行中)。
步骤 6
下载扫描报告:
可以使用 openvas_report_list
找到需要下载的扫描报告ID,使用openvas_format_list
列出可供下载的扫描报告格式,然后使用openvas_report_download<扫描报告ID><报告格式ID><存储路径><文件名>
下载扫描报告。
msf > openvas_report_list
msf > openvas_format_list
msf > openvas_report_download 2 1 /root ubuntu_scan_report.html
还能够将 OpenVAS 的扫描报告导入 Metasploit 的渗透测试数据库中!
查找特定服务漏洞
OpenVAS 这类通用漏洞扫描器能够自动地通过**“全网扫描”的方式获取网络中尽可能多的安全漏洞**,在方便快捷的同事,它也存在如下不可能避免的问。
- 扫描过程过于“简单粗暴”:在对全网进行漏洞扫描时,入侵检测设备会不停的警报,事后会记录下成千上万的攻击信息,这在一些需要隐秘进行的渗透测试任务中非常尴尬。
- 在一些特殊的环境中具有“杀伤力”:在对局域网进行扫描时,很可能会造成重要网络设备的瘫痪。使用漏洞扫描器对特定网络设备范围扫描之前要慎之又慎。
- 扫描结果存在漏报的现象:如果漏掉一个重要的漏洞信息,可能会直接影响到整个工作的进程和结果。
因此,需要通过一些针对性扫描工具帮助进行漏洞扫描,特定漏洞扫描工具则像是精准的狙击步枪,使用它可以悄无声息地发现网络上的致命漏洞。
Nmap 是最常用到的一种针对性扫描工具之一。
使用 Nmap 查找 MS08-067 漏洞
msf > nmap -PO --script=smb-check-vulns 10.10.10.130
Nmap 目前集成了大量扫描脚本,包括针对特定漏洞的扫描,有针对性的信息获取与枚举,各种协议认证口令的猜解,以及针对特定应用程序的攻击脚本,可以在 BT5 的/opt/metasploit/common/share/nmap/scripts
目录中找到相应的脚本。
漏洞分析
由于原本书是2012的版本,当时最新的 攻击机linux 是 Back Track 5,所以在使用openvas的时候出现了很多错误。于是进展被一拖再拖,拖了2天后,脑子开窍了!还是去下载了一个最新版的kali。
安装教程自己去百度!
openvas_report_list
查看报告列表
格式化类型列表
openvas_report_download <report_id> <format_id> <path> <report_name>
最后的文档: