1 资产收集简介
资产收集定义:发现目标环境中有哪些资产,
资产:联网设备、主机、服务器、各种服务等
资产收集包括:
- 主机发现:有哪些主机在线,即IP地址在线
- 端口扫描:确定在线的某主机开启的端口号,以及端口上的服务。
①注意,端口号与端口上的服务并不一定是确定的,比如发现某主机开启了3389端口,默认情况下是开启远程桌面服务RDP,但是对方可以修改服务的端口号。
②扫描方式:(a)TCP 全连接扫描;(b)SYN半连接扫描;©隐蔽扫描(不适用于windows系统):包含NULL扫描、Xmas扫描、FIN扫描。注意,在不设置扫描方式时,默认的扫描方式为SYN半连接扫描。
③端口状态:(a)open;(b)closed;©filtered;(d)unfiltered;(e)open | filtered;(f)open | filtered;
资产发现的扫描神器:nmap,windows系统,linux系统,mac系统都可以用,且自动集成在kali系统中。
- 官网:
https://nmap.org/
- nmap在win10中的安装过程可参考《第19节 简单扫描技术—基于windows系统》
- 在kali系统中的nmap与windows系统中的nmap在使用时略有不同。注意在kali系统中使用nmap时,建议使用桥接
- 推荐书籍:《Nmap渗透测试指南》
2 nmap使用
2.1 nmap命令字的帮助手册
nmap/nmap -h/man nmap
均可以查看nmap的使用方法,如下所示。
2.2 无参数:nmap IP
没有选项的情况下,默认扫描主机是否在线,且扫描top1000个端口情况。
2.3 主机发现:-sP/sn
参数:-sP/sn #Ping 扫描 ,探测哪些IP在线,不进行端口扫描
nmap -sP 192.168.1.0/24 #参数的位置也可放在网段后面
2.4 端口扫描:-p
参数:-p #指定端口
-p 80
-p 1-80
-p 80,3389,22,21
-p 1-80,3389,8080
-p 1-65535
-p- #扫描1-65535端口,即全端口扫描
nmap 192.168.1.3 -p-
2.5 TCP全连接扫描:-sT
参数:-sT #TCP全连接扫描
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sT #参数可以调换顺序,并不是固定的
nmap -sT 192.168.1.10 -p 80 #与上述一样
接下来演示什么是TCP全连接扫描,具体步骤如下:
(1)在kali虚拟机中输入nmap 192.168.1.10 -p 80 -sT
,扫描结果如下,从扫描结果中看不出什么是 TCP全连接扫描。
(2)打开抓包软件wireshark(kali自带),开始抓包,再次在命令窗口输入nmap 192.168.1.10 -p 80 -sT
。
(3)对抓到的包进行过滤(ip.addr==192.168.1.10 and tcp.port==80
),过滤出的结果如下所示:
(4)通过分析上述的数据包的流向过程,可得:SYN=1,表示请求建立连接;SYN=1,ACK=1,表示确认建立连接;ACK=1,第三次握手。因此当端口开发时,TCP全连接扫描会建立完整的三次握手。
那么当端口关闭时,数据包的流向又是如何的呢?wireshark开始抓包,且在命令窗口输入nmap 192.168.1.10 -p 22 -sT
,扫描结果与数据包流向如下所示。
2.6 SYN半连接扫描:-sS
参数:-sS #SYN半连接扫描
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sS #参数可以调换顺序,并不是固定的
nmap -sS 192.168.1.10 -p 80 #与上述一样
接下来演示什么是SYN半连接扫描,具体步骤如下:
(1)在kali虚拟机中输入nmap 192.168.1.10 -p 80 -sS
,扫描结果如下,从扫描结果中看不出什么是 SYN半连接扫描。
(2)打开抓包软件wireshark(kali自带),开始抓包,再次在命令窗口输入nmap 192.168.1.10 -p 80 -sS
。
(3)对抓到的包进行过滤(ip.addr==192.168.1.10 and tcp.port==80
),过滤出的结果如下所示:
(4)通过分析上述的数据包的流向过程,可得:SYN=1,表示请求建立连接;SYN=1,ACK=1,表示确认建立连接;因此当端口开发时,SYN半连接扫描只进行了三次握手中的前两次握手。
2.7 隐蔽扫描
参数:-sN #NULL扫描,发送的包,所有标志位均为0
-sX #Xmas扫描
-sF #Fin扫描
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sN
nmap -sN 192.168.1.10 -p 80
NULL扫描的结果及数据包如下所示
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sX
nmap -sX 192.168.1.10 -p 80
Xmas扫描的结果及数据包如下所示
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sF
nmap -sF 192.168.1.10 -p 80
Fin扫描的结果及数据包如下所示
2.8 显示服务器详细版本:-sV
参数:-sV #显示服务器详细版本
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -sV
nmap -sV 192.168.1.10 -p 80
2.9 显示操作系统类型:-O
参数:-O # 显示操作系统类型,注意不是很准,需要人工判别
#参数位置不固定,以下两种都可以
nmap 192.168.1.10 -p 80 -O
nmap -O 192.168.1.10 -p 80
2.10 保存文件
参数:-oN #将扫描结果保存为txt
-oX #将扫描结果保存为xml
nmap 192.168.1.10 -p 80 -oN result.txt
nmap 192.168.1.10 -p 80 -oX result.xml
2.11 全面扫描: -A
参数:-A #全面扫描
#参数位置两种都可以
nmap 192.168.1.10 -p 80 -A
nmap -A 192.168.1.10 -p 80
2.12 时序选项:-T
在nmap中使用-T(0-5)可以启用时序选项,对于时序选项这里有0-5不同的选项
- -T0(偏执的):非常慢的扫描,用于IDS逃避;
- -T1(鬼祟的):缓慢的扫描,用于IDS逃避;
- -T2(文雅的):降低速度以降低对带宽的消耗,此选项一般不常用
- -T3(普通的):默认,根据目录的反应自动调整时间;
- -T4(野蛮的):快速扫描,常用扫描方式,需要在很好的网络环境下进行扫描,请求可能会淹没目标;
- -T5(疯狂的):极速扫描,这种扫描方式以牺牲准确度来提升扫描速度;
3 nmap 扫描重要常用参数归纳
3.1 重要常用参数
参数/选项 | 功能 |
---|---|
-sP/-sN | Ping 扫描 ,探测哪些IP在线,不进行端口扫描 |
-p | 指定端口扫描 |
-sT | TCP全连接扫描 |
-sS | SYN半连接扫描 |
-sN | NULL隐蔽扫描 |
-sX | Xmas隐蔽扫描 |
-sF | Fin隐蔽扫描 |
-sV | 服务器版本探测 |
-O(大写) | 操作系统类型探测 |
-oN | 保存为txt |
-oX | 保存为xml |
-A | 全面扫描 |
3.2 常用命令及参数☆☆☆☆☆
nmap 10.1.1.1 #查询特定IP是否开机、查询端口是否开启、查询物理地址。
nmap -sP 10.1.1.1 #仅探测特定IP是否开机。
nmap -sP 10.1.1.1 10.1.1.2 #仅探测多个特定IP是否开机。
nmap -sP 10.1.1.1/24 #仅探测整个网段哪些IP开机。其中10.1.1.x,写哪个都一样。
nmap -sP 192.168.1.0/24 #参数的位置也可放在网段后面
nmap -O 10.1.1.1 #探测目标IP所启用操作系统类型、是否打补丁、以及开启了哪些端口号
nmap -p 21,23,80 10.1.1.1 #仅探测目标IP是否开启特定端口号
nmap -p 21,23,80 10.1.1.1 -sV #探测特定端口是否开放及其使用的服务器版本。
nmap 192.168.1.3 -p-
nmap 192.168.1.10 -p 80 -sT #扫描方式为:TCP全连接扫描
nmap -sT 192.168.1.10 -p 80 #与上述一样
nmap 192.168.1.10 -p 80 -sS #扫描方式为:SYN半连接扫描
nmap -sS 192.168.1.10 -p 80 #与上述一样
nmap 192.168.1.10 -p 80 -sN #扫描方式为:NULL隐蔽扫描
nmap -sN 192.168.1.10 -p 80 #与上述一样
nmap 192.168.1.10 -p 80 -sX #扫描方式为:Xmas隐蔽扫描
nmap -sX 192.168.1.10 -p 80 #与上述一样
nmap 192.168.1.10 -p 80 -sF #扫描方式为:Fin隐蔽扫描
nmap -sF 192.168.1.10 -p 80 #与上述一样
nmap -A 10.1.1.1 #对特定IP全面扫描
nmap -A 10.1.1.1 -oN d:\baogao.txt #对特定IP全面扫描,并保存为txt
nmap -O 10.1.1.1 -oN d:\jieguo.txt #探测目标IP的操作系统类型,及开放端口号,并保存为txt
4 收集常用端口信息
在渗透测试的过程中,对端口信息的收集是一个很重要的过程,通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务,就可以对症下药,便于我们渗透目标服务器。
所以在端口渗透信息的收集过程中,我们需要关注常见应用的默认端口和在端口上运行的服务。最常见的扫描工具就是Nmap 、无状态端口扫描工具Mas scan 、ZMap和御剑高速TCP端口扫描工具。
4.1 文件共享服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
20/21/69 | ftp / tftp 文件传输协议 | 允许匿名的上传、下载、爆破和嗅探操作 |
2049 | nfs服务 网络文件系统 | 配置不当 |
139 | samba服务 | 爆破、未授权访问、远程代码执行 |
389 | ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
4.2 远程连接服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH 隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | rdp远程桌面连接 | shift后门(需要Windows Server 2003 以下的系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
4.3 Web应用服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
80/443/8080 | 常见的Web 服务端口 | Web 攻击、爆破、对应服务器版本漏洞 |
7001 /7002 | WebLogic 控制台 | Java 反序列化、弱口令 |
8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSphere 控制台 | Java 反序列化、弱口令 |
4848 | Glassfish 控制台 | 弱口令 |
1352 | Lotus domino 邮件服务 | 弱口令、信息泄露、爆破 |
10000 | Webmin-Web 控制面板 | 弱口令 |
5.4 数据库服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
3306 | MySQL | 注入、提权、爆破 |
1433 | MSSQL 数据库 | 注入、提权、SA 弱口令、爆破 |
1521 | Oracle 数据库 | TNS 爆破、注入、反弹Shell |
5432 | Postgre SQL 数据库 | 爆破、注入、弱口令 |
27017/27018 | MongoDB | 爆破、未授权访问 |
6379 | Redis 数据库 | 可尝试未授权访问、弱口令爆破 |
5000 | SysBase/DB2 数据库 | 爆破、注入 |
4.5 数据库服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
25 | SMTP 邮件服务 | 邮件伪造 |
110 | POP3 协议 | 爆破、嗅探 |
143 | IMAP 协议 | 爆破 |
4.6 网络常见协议端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
53 | DNS 域名系统 | 允许区域传送、DNS 劫持、缓存投毒、欺骗 |
67/68 | DHCP 服务 | 劫持、欺骗 |
161 | SNMP 协议 | 爆破、搜集目标内网信息 |
4.7 特殊服务端口说明及攻击方向
端口号 | 端口说明 | 攻击方向 |
---|---|---|
2181 | Zookeeper 服务 | 未授权访问 |
8069 | Zabbix 服务 | 远程执行、SQL 注入 |
9200/9300 | Elasticsearch 服务 | 远程执行 |
11211 | Memcache 服务 | 未授权访问 |
512/513/514 | Linux Rexec 服务 | 爆破、Rlogin登录 |
873 | Rsync 服务 | 匿名访问、文件上传 |
3690 | Svn 服务 | Svn 泄露、未授权访问 |
50000 | SAP Management Console | 远程执行 |