信息收集技术
信息收集:为了更加有效地实施攻击而在攻击前或攻击过程中对目标的所有探测活动
概述
信息收集的内容
首先 从目标的域名和IP入手,了解目标的OS类型、开放的端口、提供开放端口的服务或应用程序,以及应用程序是否有漏洞、有没有防火墙和入侵检测系统
其次 查找入侵利用的漏洞
- 管理的漏洞:目标系统信息的泄露、错误的配置、未采用必要的安全防护系统、设置了弱口令
- 系统的漏洞:目标系统未能及时更新导致的漏洞、系统设计上的缺陷
- 协议的漏洞:身份认证协议、网络传输协议的设计缺陷
入侵过程中 进一步掌握 目标网络的拓扑结构、目标系统与外部网络的连接方式、防火墙的访问控制列表、使用的认证和加密系统、网络管理员的私人信息
信息收集的方法
技术手段:
- 公开信息收集
- 网络扫描
- 漏洞扫描
- 网络拓扑探测
- 非技术手段:社会工程学
社会工程学实质:攻击者在与目标系统相关人员的交流和沟通中,采用欺骗等手段直接获取目标系统相关信息的行为
公开信息收集
利用Web服务
- 公开邮箱:侵入公司内部,搜索与域名邮箱相关的个人,发送钓鱼邮件欺骗邮箱使用者下载、运行带有恶意代码附件的邮件,或者直接尝试社工库或字典对邮箱进行破解
- 网站源码中含有的注释:提供攻击灵感
- 宣传信息中包含的网络结构:如校园网核心拓扑图
- 其他:目标域名、网站地址、网站模板、网络管理员、公司人员名单、电话
利用搜索引擎
Google、Baidu、Bing等检索相关信息
google高级搜索语法:
- intitle:搜索标题中包含指定关键字的网页,
eg:intitle:login password 返回网页标题中出现login,网页中任意位置出现password的链接
可以用allintitle:login password来搜索多个标题关键字
- inurl:搜索url包含指定关键字的网页
- site:在指定的站点搜索
- filetype:搜索指定类型的文件doc、pdf、ppt等
- link:返回所有链接到某个URL地址的网页
- related:搜索与指定网站相关的主页
- cache:在Google缓存中搜索
- intext:搜索正文中出现指定关键字的网页
利用WhoIs服务
返回具体信息包括:域名登记人、相关管理人员的联系方式、域名注册时间、更新时间
eg:https://shop.whois.com/domain-registration/index.php查询我的域名信息
利用DNS域名服务
DNS服务提供域名到IP地址的映射,DNS服务器分为主服务器、辅助服务器、缓存服务器
- 主服务器:存储了其所辖区域内主机的域名资源的正本,区域数据的变更都直接写到该服务器数据库中
- 辅助服务器:定期从另一台DNS服务器复制区域文件,设置为只读;目的是主服务器不能正常工作时承担域名解析功能
- 缓存服务器:保存查询结果到缓冲区,下次再访问可以加快解析速度
网络扫描
主机扫描
使用ICMP扫描
最常用的方法就是ping,用来了解主机是否连接到了网络上
直接ping域名:
ping虚拟机:
ICMP:因特网控制报文协议,是IP层的一部分,主要用来
- 网络信息查询
- IP传送时的差错报告与控制
常见ICMP报文类型:
名称 | 类型 | 功能 |
---|---|---|
目标不可达 | 3 | 报告主机不可达信息(原因不同,负责发送ICMP目标不可达报文的主体也不一样,主机不可达由目标网络的网关发出报文;主机某个端口不可达由主机发出报文) |
源抑制 | 4 | 完成数据流速率控制,路由或目标主机发现数据源信息流过快时发出 |
重定向 | 5 | 实现路由重定向,在假消息攻击中有一定的应用 |
时间戳请求/应答 | 13/14 | 提供查询目标主机时间的方法 |
子网掩码请求/应答 | 17/18 | 查询目标主机的子网掩码信息 |
响应请求/应答 | 8/0 | 检查目标主机是否开机并正常运行IP |
ping的原理是使用了ICMP响应请求/应答报文,ping程序向目标主机连续发送4个ICMP Echo Request报文,通过是否接收到Reply报文来判断能否与主机正常通信
其他类型主机扫描
安全性高的网络环境中有防火墙,会对一般的主机扫描报文进行阻止和过滤,但可以利用特别的技术手段仍可探测到存活主机
这些方法和计网当时讲的网络层协议很多相关网络层(二) - Xherlock
- 构造异常的IP包头:向目标主机发送头部错误的IP包,目标主机反馈ICMP Parameter Problem Error信息的存活,常伪造头部长度和IP选项的部分,但是不同路由器和操作系统对这些错误的处理方式不同,返回结果不同
- IP头中设置无效的字段值:目标主机存活会返回ICMP Destination Unreachable信息
- 构造错误的数据分片:目标主机接受错误的数据分片(eg:丢失部分)且在规定时间内未收到更正,将丢弃这些数据包,并发送ICMP Fragment Reassembly Time Exceeded报文
- 通过超长包探测内部路由器(链路层分片相关):若构造的数据包长度超过目标系统所在路由器的PMTU(路径最大传输单元)且禁止分片,路由器会反馈Fragmentation Needed and Don't Fragment Bit was Set差错报文
- 反向映射探测:用于探测被过滤设备或防火墙保护的网络和主机,通过构造可能的内部IP地址列表,向这些地址发送数据包;目标网络路由器接收到这些数据包时会进行IP识别并路由,不在范围的IP包发送ICMP Host Unreachable或ICMP Time Exceeded错误报文,这时候可以认为没接收到报文的IP地址存在在该网络中(私有网络)
端口扫描
计网中学习到大部分网络基于TCP/IP模式构建,服务器端会在某个TCP或UDP端口处于侦听状态,等待客户端程序发来连接请求或数据,并作出相应应答
攻击者可以通过确定开放的端口,进而确定主机运行的服务,进行整理和分析来采取针对性攻击
Connect扫描
上图是使用socket开发服务器客户端通信的模型
我们可以利用Socket向服务器端发送一个Connect请求,若服务器正常运行将返回一个已建立的TCP连接,否则返回错误原因
优点:实现简单,通用,普通用户权限即可
缺点:易于被防火墙检测到并记录
SYN扫描和FIN扫描
新颖端口扫描技术共同点:
- 扫描必须向目标发送某种数据包,根据不同响应判断端口的开放和关闭
- 不同于正常TCP数据发送和接收
TCP Connect建立需要三次握手——和SYN、FIN相关
SYN扫描(也称半连接扫描)的三次握手如上:
不需建立完整TCP连接,只要返回SYN/ACK(同时置位)的数据包即可判断目标端口打开;反之返回RST/ACK数据包,表示端口未处于侦听状态
- 优点:比TCP Connect更不易被记录
- 缺点:也不够隐蔽,运行Raw Socket时必须拥有管理员权限
FIN扫描
发送FIN报文,若端口开放,则什么也不返回;若端口关闭,返回RST报文(TCP标准)
但是不同操作系统返回不一样:BSD操作系统与TCP标准一致,其他操作系统均返回RST报文
- 优点:不会被记录到日志,可以绕过某些防火墙
- 缺点:需要使用Raw Socket编程实现,实现较为复杂;扫描并不对所有操作系统有效
其他端口扫描技术
SYN+ACK扫描
向目标主机发送SYN/ACK同时置位的TCP包,关闭的端口会返回RST包,开放的端口会忽略该包
TCP XMAS扫描
向目标主机发送所有标志位置位的TCP包,关闭的端口会返回同样设置所有标志位的包,开放的端口忽略该包
NULL扫描
和XMAS扫描相反,将TCP包中所有标志位置0,发送到BSD操作系统,若端口开放,则不会返回任何数据包,若端口关闭,返回一个RST包
不同操作系统有不同的相应方式
其他的还有IP分段扫描、FTP Proxy扫描
Nmap扫描
一款十分好用的多平台工具,另写一篇来学习
UDP端口扫描
比TCP端口扫描简单得多,只需向目标主机UDP端口发送任意一些数据,若端口关闭,则会返回一个“目标不可达”ICMP报文
系统类型扫描
利用端口扫描结果
操作系统自身可能打开了特定的端口
利用Banner
Banner就是旗标,指服务程序接收到客户端的正常连接后所给出的欢迎信息,攻击者可以根据旗标判断服务程序的类型和版本,进而判断出目标的OS平台
缺点:只有建立完整的连接后才能获取目标系统的Banner信息;并不是很准确,而且有可能被管理员关闭或修改
感觉banner获取比较重要的信息就是版本号,可以通过版本号去查找对应的漏洞、弱点
拿windows虚拟机测试下,win10 开启端口 - 简书 (jianshu.com)
在Win10虚拟机上开启ftp、mysql服务
工具1:nc(netcat 网络界的瑞士军刀,短小精悍、功能实用的网络工具)
使用:nc -nv ip port,查看该主机上此端口的banner信息
可以看到直接获取了ftp服务的版本号,mysql因为限制其他主机连接所以没显示更详细的信息,但是也表明了使用的mysql
工具2:dmitry
使用:dmitry -pb IP(-p显示开放的TCP端口,-b显示端口banner信息)
工具3:nmap
使用:nmap -sT IP -p port --script=banner.nse(必须指定全连接才能获取banner信息)
工具4:Wappalyzer,之前实训用到的,十分实用的浏览器插件,能够帮助我们分析目标网站的平台架构、运行环境、服务器配置环境
TCP/IP协议栈指纹
是判断目标操作系统最准确的一种方式,指不同操作系统实现TCP/IP协议栈时,由于各种原因导致细节上的差异(并非都遵从RFC)
TCP指纹
- FIN探测
- BOGUS(伪造)标记位探测
- SYN洪范测试
- TCP ISN取样
- TCP初始化“窗口”
- ACK值
- TCP选项
IP、ICMP指纹
- ICMP错误信息查询
- ICMP信息引用
- 服务类型(ToS)和TTL
- 碎片处理
- DF标记位
漏洞扫描
指基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,从而发现可利用漏洞的一种安全检测(渗透攻击)行为
主要有端口扫描和渗透测试两种途径检查是否存在漏洞
漏洞扫描的分类:
- 基于网络的漏洞扫描:主动式策略,通过执行一些脚本文件对系统进行攻击,并记录它的反应,从而发现其中的漏洞
- 基于主机的漏洞扫描:被动式策略,对系统中不合适的设置、脆弱的口令一级其他同安全规则相抵触的对象进行检查
网络拓扑探测
拓扑探测
Traceroute技术:windows中为tracert,可以用来发现实际的路由路径,如下图
可以获得通往目标主机路径中每个结点的IP地址,为攻击者了解目标网络的图片普结构提供了丰富的信息,一旦攻击者获得了其中一台主机的控制权,就可以将这台主机作为跳板(肉鸡)逐步探测网络中其他主机的路径信息
Tracert原理:向目标主机一次发送一系列UDP数据包,这些IP包的TTL字段从1开始递增,根据IP数据包路由规则,每经过一跳TTL-1,一旦减到0,就会向源端发送ICMP Time Exceeded应答消息()
SNMP:简单网络管理协议,是各种网络设备之间客户机/服务器模式的简单通信协议
路由器、交换机、打印机、主机等都可以成为SNMP系统中的服务器
两个基本的命令模式:
- Read:观察设备配置信息
- Read/Write:有权写入信息
网络设备识别
除了路由器、网站服务器、主机外还有其他接入互联网的设备,识别它们的方法有
- 利用专用的搜索引擎:Shodan搜索引擎(侧重主机层扫描)、ZoomEye(侧重应用服务层扫描)
- 基于设备指纹的设备类型探测:从FTP、SSH、Telnet、HTTP等获取Banner信息
网络实体IP地理位置定位
- 基于查询信息的定位:通过查询机构注册的信息确定网络设备的地理位置
- 基于网络测量的定位:利用探测源于目标实体的时延、拓扑或其他信息估计目标实体的位置