端口信息收集
总结端口信息收集相关知识点
端口扫描
在渗透测试过程中,收集端口也是一个很重要的过程,我们在得到服务器开放端口之后,就可以判断服务器上存在的服务,之后就可以对相应服务进行渗透测试。
原理
当我们向服务器的一个端口发起建立连接的请求时,如果服务器提供此项服务则会应答,否则不会应答,所以我们通过向可能存在相应服务的端口发起请求,并记录服务器返回的内容,即可知道服务器有可能开放了哪些端口。
端口对应服务以及攻击方向
文件共享服务端口
端口号
端口说明
攻击方向
21/22/69
Ftp/Tftp文件传输协议
匿名上传、下载、爆破、嗅探
2049/111
Nfs服务
配置不当
139
Samba服务
爆破、未授权访问、远程代码执行
389
Ldap目录访问协议
注入、允许匿名访问、弱口令
445
SMB
远程执行
远程连接服务端口
端口号
端口说明
攻击方向
22
SSH远程连接
爆破、SSH隧道及内网代理转发、文件传输
23
Telnet远程连接
爆破、嗅探、弱口令
3389
Rdp远程桌面连接
Shift后门(需要Win2003以下系统)、爆破、Shift后门、放大镜后门、输入法漏洞
5900
VNC
弱口令爆破
5632
PyAnywhere
抓密码、代码执行
Web应用服务端口
端口号
端口说明
攻击方向
80/443/8080/80-89/8000-9090
常见Web服务端口
Web攻击、爆破、对应服务器版本漏洞
7001/7002
WebLogic控制台
Java反序列化、弱口令
8080/8089
Jboss/Resin/Jetty/Jenkins/Tomcat
反序列化、弱口令
9090
WebSphere控制台
Java反序列化、弱口令
4848
GlassFish控制台
弱口令
1352
Lotus domino邮件服务
弱口令、信息泄露、爆破
10000
Webmin-Web控制面板
弱口令
数据库服务端口
端口号
端口说明
攻击方向
3306
MySQL
注入、提权、爆破
1433
MSSQL数据库
注入、提权、SA弱口令、爆破
1521
Oracle数据库
TNS爆破、注入、反弹shell
5432
PostgreSQL
爆破、注入、弱口令
27017/27018
MongoDB
爆破、未授权访问
6379
Redis数据库
未授权访问、弱口令爆破
5000
SysBase/DB2数据库
爆破注入
邮件服务端口
端口号
端口说明
攻击方向
25
SMTP邮件服务
邮件伪造
110
POP3协议
爆破、嗅探
143
IMAP协议
爆破
网络常见协议端口
端口号
端口说明
攻击方向
53
DNS域名系统
区域传送、DNS劫持、缓存投毒、欺骗
67/68
DHCP服务
劫持、欺骗
161
SNMP协议
爆破、搜集目标内网信息
特殊服务端口
端口号
端口说明
攻击方向
2181
Zookeeper服务
未授权访问
8069
Zabix服务
远程执行、SQL注入
9200/9300
Elasticsearch服务
远程执行
11211
Memcache服务
未授权访问
512/513/514
Linux Rexec服务
爆破、Rlogin登陆
873
Rsync服务
匿名访问、文件上传
3690
Svn服务
Svn泄露、未授权访问
50000
SAP Management Console
远程执行
443
SSL
心脏滴血
5984
CouchDB
未授权访问
27017/27018
Mongodb
未授权访问
50070/50030
Hadoop
未授权访问
其他端口
端口号
端口说明
攻击方向
2601/2604
zebra路由
默认密码zebra
512/513/514
Rexec
爆破、rlogin登陆
1194
openvpn
弱口令
1500
ispmanager
主机控制面板、弱口令
1723
pptp
爆破、弱口令账号
2082/2083
cpanel主机管理面板
弱口令
3128
squid代理服务
弱口令
3312/3311
kangle主机管理
弱口令
4848
glassfish控制台
弱口令
10000
webmin
弱口令
1099
Java rmi
远程执行
常见收集方法
telnet探测端口
telnet 探测端口采用完整的三次握手连接,使用TCP三次握手建立连接: SYN -> SYN+ACK + ACK,探测不存在端口,发送SYN数据包,然后RST包丢弃,如果有返回值,则说明端口开放,否则则端口关闭。
telnet ip port
nc探测端口
nc探测端口采用完整的三次握手连接,使用命令nc -v -w 1 -z ip port
,发包过程和telent 探测一样。
常见收集工具
在线工具
Nmap
是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。软件名字Nmap是Network Mapper的简称。Nmap最初是由Fyodor在1997年开始创建的。随后在开源社区众多的志愿者参与下,该工具逐渐成为最为流行安全必备工具之一。
一般情况下,Nmap用于列举网络主机清单、管理服务升级调度、监控主机或服务运行状况。Nmap可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。
Nmap的优点:
Nmap包含四项基本功能:
而这四项功能之间,又存在大致的依赖关系(通常情况下的顺序关系,但特殊应用另外考虑),首先需要进行主机发现,随后确定端口状态,然后确定端口上运行的具体应用程序和版本信息,然后可以进行操作系统的侦测。而在这四项功能的基础上,nmap还提供防火墙和 IDS 的规避技巧,可以综合运用到四个基本功能的各个阶段。另外nmap还提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。
文档
参数
nmap –iflist : 查看本地主机的接口信息和路由信息
-A :选项用于使用进攻性方式扫描
-T4: 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
-oX test.xml: 将扫描结果生成 test.xml 文件,如果中断,则结果打不开
-oA test.xml: 将扫描结果生成 test.xml 文件,中断后,结果也可保存
-oG test.txt: 将扫描结果生成 test.txt 文件
-sn : 只进行主机发现,不进行端口扫描 -O : 指定Nmap进行系统版本扫描
-sV: 指定让Nmap进行服务版本扫描
-p <port ranges>: 扫描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况
-script <script name> : 指定扫描脚本
-Pn : 不进行ping扫描
-sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
-PI : 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-iL 1.txt : 批量扫描1.txt中的目标地址
-sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况
-sO: 使用IP protocol 扫描确定目标机支持的协议类型
-PO : 使用IP协议包探测对方主机是否开启
-PE/PP/PM : 使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机
-PS/PA/PU/PY : 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式进行发现
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态
-e eth0:指定使用eth0网卡进行探测
-f : --mtu <val>: 指定使用分片、指定数据包的 MTU.
-b <FTP relay host>: 使用FTP bounce scan扫描方式
-g: 指定发送的端口号
-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
-n : 表示不进行DNS解析;
-D <decoy1,decoy2[,ME],...>: 用一组 IP 地址掩盖真实地址,其中 ME 填入自己的 IP 地址 -R :表示总是进行DNS解析。
-F : 快速模式,仅扫描TOP 100的端口
-S <IP_Address>: 伪装成其他 IP 地址
--ttl <val>: 设置 time-to-live 时间 --badsum: 使用错误的 checksum 来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或 IDS/IPS)
--dns-servers : 指定DNS服务器
--system-dns : 指定使用系统的DNS服务器
--traceroute : 追踪每个路由节点
--scanflags <flags>: 定制TCP包的flags
--top-ports <number> :扫描开放概率最高的number个端口
--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数
--version-trace: 显示出详细的版本侦测过程信息
--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)
--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统
--data-length <num>: 填充随机数据让数据包长度达到 Num
--ip-options <options>: 使用指定的 IP 选项来发送数据包
--spoof-mac <mac address/prefix/vendor name> : 伪装 MAC 地址
--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light: 指定使用轻量侦测方式 (intensity 2)
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace: 显示出详细的版本侦测过程信息
最佳实践
获取远程主机开放的端口、端口的服务、服务的版本、操作系统类型及其版本
单个目标:
nmap -sV -T4 -O --open ip
ip段:
nmap -sV -T4 -O --open 192.168.1.0/24 -oX /root/192.168.1.0.xml
从文本中读取:
nmap -sV -T4 -O --open 192.168.1.0/24 -oX /root/192.168.1.0.xml
快速获取开放特定端口的主机
nmap -T4 -F 192.168.1.0
一个简单的万能扫描
nmap -T5 -A 192.168.1.0 &>/root/nmap_out.txt
确认主机是否有拒绝服务的问题
nmap -T5 --max-parallelism 600 --script http-slowloris 192.168.1.0
绕过ACL的简单实例
nmap -sX -p- -Pn 192.168.1.0
简单检测是否有漏洞问题
nmap -T5 -O -A -v --script vuln 192.168.1.0
简单的暴力破解测试
nmap --script=brute 192.168.1.0
Masscan
Masscan是为了尽可能快地扫描整个互联网而创建的,根据其作者robert graham,这可以在不到6分钟内完成,每秒大约1000万个数据包。异步传输意味着扫描仪在发送探测器之前不必等待回复。而且它有一个独特的功能是,我们可以暂停和恢复任务,如果我们想要暂停一个扫描任务,我们可以使用ctrl + c
,来暂停任务,这时候会创建一个paused.conf来记载所有扫描的设置和进度,下次我们想要开始时,可以继续扫描配置文件。
文档
参数
-iL filename:从文件读取输入。
‐‐exclude filename:在命令行中排除网络。
‐‐excludefile:从文件中排除网络。
-S:欺骗源IP。
-v interface:详细输出。
-vv interface:非常冗长的输出。
-e interface:使用指定的接口。
-e interface:使用指定的接口。
初级使用
单端口扫描
Masscan 10.11.0.0/16 -p443
多端口扫描
Masscan 10.11.0.0/16 -p80,443
扫描一系列端口
Masscan 10.11.0.0/16 -p22-25
快速扫描
Masscan 10.11.0.0/16 --top-ports 100 -rate 100000
排除exclude.txt中的目标
Masscan 10.11.0.0/16 --top-ports 100 --excludefile exclude.txt
结果保存
Masscan 10.11.0.0/16 --top-ports 100 > results.txt
进阶使用
扫描网络的web端口
masscan 10.11.0.0/16 -p80,443,8080 - rate 1000000
扫描网络的十大端口
masscan 10.11.0.0/16 - top-ten- rate 1000000
扫描网络的所有端口
masscan 10.11.0.0/16 -p0-65535 - rate 1000000
扫描互联网的一个端口
masscan 0.0.0.0/0 -p443 - rate 10000000
扫描互联网的所有端口
masscan 0.0.0.0/0 -p0-65535 -rate 10000000
Nmap + Masscan
Masscan在扫描速度上优于Nmap,然而在Banner识别上,由于Nmap具有丰富的服务识别指纹库,因此我们应该结合Nmap的banner识别以及Masscan的速度两者优点结合。
流程
利用Masscan进行1-65535全端口扫描,扫描结果入库,针对Masscan探测到的存活端口调用Nmap进行服务指纹识别,这样Nmap调用次数就减少了一个量级,提高整体的扫描速度。
挖坑
这里是想自己写一个相应工具的,算是给自己挖了一个坑,如果读者目前有需要可以参考
其他工具
其它还有一些Windows平台下的工具,由于其使用方法比较直观,这里不做介绍。
御剑高速TCP端口扫描工具
Zmap
Routerscan
分布式端口扫描
如果我们任务量比较巨大,我们就需要找到一种方法来把任务傅在分发到多台主机上进行并行扫描,我们可以使用DNmap来创建一个Nmap集群,它可以创建并管理一个主机集群,集群中的每台主机使用各自的带宽进行端口扫描。
地址
用法
创建任务文件'target.txt'
启动服务端
python dnmap_server.py -f ~/commands.txt
客户端连接
python dnmap_client.py -s 192.168.56.101 -a minion1
结果保存在`nmap_result'目录下
Waf绕过
硬糖师傅在DC0531上说过这样一件事,就是现在有很多企业都部署了相应的安全设备,有可能我们在扫描的时候就会触发他们的告警机制,他们就会返回给我们大量其实没有开放的端口,从而扰乱我们的探测,我们在批量探测的时候可以写一个脚本,灵活设置服务的阈值,比如我们设定一个服务最多拥有80个端口,我们如果扫描到的结果中返回端口数量大于80,我们就可以认为已经被waf检测到,就可以选择跳过当前任务,节省流量与时间。
参考资料
《PHP Web安全开发实战》
《Web 安全攻防 渗透测试实战指南》
Last updated