信息收集分类
主动收集
直接将流量流经目标,如直接访问、扫描等。能获得更多信息,但可能会被目标主机捕获活动记录。
被动收集
利用第三方服务,如浏览器搜索。获取的信息相对少,但不会被目标发现。
公开信息收集
利用web服务
企业邮箱域名、网络拓扑图、公开网页源码中未删除的注释等。
利用搜索引擎服务
- google hacking高级搜索,如site关键字表示在指定主域内搜索(可用于获取该主域下的所有子域名)、link关键字用于搜索所有链接到某个url的网页。
- 网站服务器的目录索引通常包含Index of关键字,所以用Index of/admin可以搜索出所有包含admin的目录,很可能包含网站管理员相关的敏感信息。
利用WhoIs服务
查询已注册域名的所有人信息。
利用DNS域名服务
- DNS分为主服务器、辅助服务器和缓存服务器。主服务器在每个区域内有且只有一个(其数据库称为区域文件)。辅助服务器定期对区域文件进行复制(区域传送),成功后会将区域文件设置为只读,即辅助服务器不能修改区域文件。这一行为的目的是若主服务器不能正常工作,辅助服务器可以接任。缓存服务器不管理任何DNS区域,但是可以接受域名解析请求并将其转发给指定服务器进行解析,把返回结果给客户端时保存一份在自己的缓存区内。
- 如果管理员给主服务器设置的是“允许任意IP从该主机的DNS区域传送请求”,就导致任何主机都可以获得主服务器中的信息;如果没有使用公用/私用DNS机制分割外部和内部的DNS信息,就会导致任何主机都可以获得内部主机名和IP信息。
- 许多网站为了提升用户体验选择使用CDN服务,可以通过设置代理或利用在线Ping网站来使用不同地区的Ping服务器来测试目标,若不同地区访问到的服务器不同,说明该网站存在CDN服务器,我们拿到的很可能不是真实的服务器IP地址。
网络扫描
主机扫描
Ping
通过ping可以实现主机扫描。ping使用ICMP协议工作,ICMP是IP层协议,主要功能是网络信息查询和IP传送时的差错报告与控制。
各操作系统实现TCP/IP时可能并没有完全遵守RFC的规定,所以某些操作系统可能不会对一些ICMP请求做出规定中的应答。
高级IP扫描
- 构造异常IP包头
- 在IP头中设置无效字段值
- 构造错误的数据分片(如部分丢失)
- 用超长包探测内部路由器
- 反向映射,通过构造可能的内部IP列表探测被过滤设备或被防火墙保护的网络和主机
端口扫描
- connect扫描
用socket向目标端口发送connect请求,若端口开放,会建立TCP连接,否则会返回错误原因。
优点:实现简单;允许以普通用户权限调用
缺点:容易被防火墙检测;容易被目标记录 - SYN扫描
要达到“得知端口是否开放”的目的不需要建立完整连接。向目标发送SYN数据包,若返回SYN/ACK,说明端口打开;若返回RST,说明端口关闭。不需要发送最后一个ACK,所以称为半连接扫描。
优点:一般不会被目标记录
缺点:运行raw socket需要管理员权限;可能被某些防火墙和包过滤器过滤掉 - FIN扫描
发送FIN,若无返回信息,说明端口打开;若返回RST,说明端口关闭。
优点:不会被记录;可以绕过某些防火墙;netstat不会显示(只显示已建立的TCP连接和连接尝试)
缺点:实现复杂;不同操作系统结果不同 - ACK扫描
发送ACK,不回复说明被过滤或关闭;回复TTL小于64说明开放,大于64说明关闭。 - XMAS扫描
置位所有标志位。关闭的端口响应一个置位所有标志位的包,开放的端口不响应。 - NULL扫描
所有标志位置0。不回复表示开放,回复RST表示关闭。不同操作系统响应不同。 - Windows扫描
发送一个ACK,若没有返回说明端口被过滤;若返回的RST窗口值非零,表示开放,若窗口值等于0,说明端口关闭。
系统类型扫描
利用banner
TCP/IP协议栈指纹
- TCP指纹
1)FIN探测
2)BOGUS标记位探测:观察对非正常数据包的反应
3)SYN泛洪测试:部分操作系统对SYN处理数量有限制
4)TCP INS取样:观察初始序列号规律
5)TCP初始化窗口值
6)ACK值:回复FIN|URG|PSH时不同操作系统响应不同
7)TCP选项 - IP和ICMP指纹
1)ICMP错误信息查询:不同系统返回频率不同
2)ICMP信息引用:ICMP回复数据包携带请求包开头若干字节的数据,不同系统携带的字节数不同
3)ToS和TTL的值
4)碎片处理:分片重叠时,有的系统用新数据覆盖旧数据,有的反之
5)DF标记位
加强扫描隐蔽性
- 包特征随机化(TTL、源端口目的端口等)
- 慢速扫描:躲避NIDS检测
- 分片扫描:将扫描包进行IP分片,通过包过滤防火墙
- 源地址欺骗:伪造大量虚假源IP包以混淆真正的攻击IP
- 跳板主机
- 分布式(合作)扫描
漏洞扫描
漏洞又称为脆弱性,指计算机系统在硬件、软件、协议的实现或系统安全策略上存在的缺陷或不足。系统漏洞也称为安全缺陷。
主动式策略
基于网络,从外部攻击者角度扫描目标。执行脚本,观察目标反应,确定对应漏洞是否存在。主要探测网络协议和系统的网络服务中存在的漏洞。
被动式策略
基于主机,从系统用户角度扫描目标。主要检测主机系统内的应用漏洞。
网络拓扑探测
拓扑探测
- Traceroute
若已经获取目标网络中一台主机的控制权,可以通过traceroute探测其他主机的路径信息,也可以通过其路由表获取路由信息,进而还原出目标网络的拓扑结构。 - SNMP
可获取网段中主机名、硬件信息、系统配置、路由信息和网络连接情况等。
网络设备识别
- 利用专用搜索引擎
shodan侧重主机层面,ZoomEye侧重应用服务尤其是web应用层面。 - 利用设备指纹
FTP、SSH、Telnet、HTTP等。 - 网络实体IP地理位置定位
利用查询信息或网络测量。