1.55k likes | 1.86k Views
网络扫描技术. 刘鹏 北京大学信息科学技术学院软件研究所 网络和信息安全研究室. 内容. TCP/IP 基础 网络信息收集 目标探测 网络扫描 查点 从系统中获取有效账号或资源名 网络监听 截获网络上的数据包. 安全层次. 应用安全. 系统安全. 网络安全. 安全协议. 安全的密码算法. TCP/IP 基础. 网络体系架构 重要协议的数据包格式 IP 、 ICMP TCP 、 UDP TCP 连接 一些上层协议. 网络体系架构. OSI 参考模型. TCP/IP 模型. TCP/IP 协议栈. 协议栈各层数据包结构.
E N D
网络扫描技术 刘鹏 北京大学信息科学技术学院软件研究所 网络和信息安全研究室
内容 • TCP/IP基础 • 网络信息收集 • 目标探测 • 网络扫描 • 查点 • 从系统中获取有效账号或资源名 • 网络监听 • 截获网络上的数据包
安全层次 应用安全 系统安全 网络安全 安全协议 安全的密码算法
TCP/IP基础 • 网络体系架构 • 重要协议的数据包格式 • IP、ICMP • TCP、UDP • TCP连接 • 一些上层协议
网络体系架构 OSI参考模型 TCP/IP模型
IP首部说明 • 版本号,目前取值4 • 首部长度,4个字节为单位,取值范围5~15 • 服务类型,指定传输的优先级、传输速度、可靠性和吞吐量等 • 报文总长度,最大长度为65535字节 • 报文标识,唯一标识一个数据报,如果数据报分段,则每个分段的标识都一样 • 标志,最高位未使用,定义为0,其余两位为DF(不分段)和MF(更多分段) • 段偏移量,以8个字节为单位,指出该分段的第一个数据字在原始数据报中的偏移位置
IP首部说明(续) • 生存时间,取值0~255,以秒为单位,每经过一个路由节点减1,为0时被丢弃 • 协议,指明该数据报的协议类型,1为ICMP,4为IP,6为TCP,17为UDP等 • 首部校验和,每通过一次网关都要重新计算该值,用于保证IP首部的完整性 • 选项,长度可变,提供某些场合下需要的控制功能,IP首部的长度必须是4个字节的整数倍,如果选项长度不是4的整数倍,必须填充数据
IP地址 • 保留地址,只用于内部通信: • 10.0.0.0 - 10.255.255.255 • 172.16.0.0 - 172.31.255.255 • 192.168.0.0 - 192.168.255.255 1.0.0.0-127.255.255.255 128.0.0.0-191.255.255.255 192.0.0.0-223.255.255.255 224.0.0.0-239.255.255.255 240.0.0.0-247.255.255.255
特殊意义的IP地址 • 全0的IP地址表示本机 • 以0作网络号的IP地址表示当前的网络 • 32比特全为1的IP地址表示局域网的广播地址 • 127.xx.yy.zz保留做回路(loopback)测试
ICMP协议 • Internet Control Message Protocol,本身是IP的一部分,用途 • 网关或者目标机器利用ICMP与源通讯,当出现问题时,提供反馈信息 • 用于报告错误 • 在IP协议栈中必须实现 • 特点: • 其控制能力并不用于保证传输的可靠性 • 它本身也不是可靠传输的 • 并不用来反映ICMP报文的传输情况
ICMP数据包 • ICMP数据包直接包含在IP数据包的净荷数据中,IP头中协议类型为1 • ICMP数据的第一个字节代表ICMP报文的类型,它决定了后续数据的格式
ICMP报文类型 • 0 Echo Reply • 3 Destination Unreachable • 4 Source Quench • 5 Redirect • 8 Echo • 11 Time Exceeded • 12 Parameter Problem • 13 Timestamp • 14 Timestamp Reply • 15 Information Request • 16 Information Reply • 17 Address Mask Request • 18 Address Mask Reply
ICMP报文分类 • ICMP差错报文 • 目的不可达报文(类型3) • 超时报文(类型11) • 参数出错报文(类型12) • ICMP控制报文 • 报源抑制报文(类型4) • 重定向(类型5) • ICMP请求/应答报文 • 回送请求和响应报文(类型0和8) • 时间戳请求和响应报文(类型13和14) • 地址掩码请求和响应报文(类型17和18) • 其他
ICMP Echo报文 • 类型:0表示Echo Reply,8表示Echo • 代码:0 • 标识符:标识一个会话,例如,用进程ID • 序号:可能这样用:每个请求增1 • 选项数据:回显
ICMP Time Exceeded报文 • 类型:11 • 代码:0表示传输过程中时间到,1表示分片装配过程中时间到 • 出错的IP包IP首部+原始IP数据包中前8个字节
ICMP Destination Unreachable报文 • 类型:3 • 代码:0表示网络不可达,1表示主机不可达;2表示协议不可达;3表示端口不可达;等等 • 出错的IP包的IP首部+原始IP数据包中前8个字节
TCP首部说明 • 源端口号和目的端口号:源和目的主机的IP地址加上端口号构成一个TCP连接 • 序号和确认号:序号为该TCP数据包的第一个数据字在所发送的数据流中的偏移量;确认号为希望接收的下一个数据字的序号; • 首部长度,以4个字节为单位,通常为20个字节 • 6个标志位: • URG:如果使用了紧急指针,URG置1,紧急指针为当前序号到紧急数据位置的偏移量 • ACK:为1表示确认号有效,为0表示该TCP数据包不包含确认信息 • PSH:表示是带有PUSH标志的数据,接收到数据后不必等缓冲区满再发送
TCP首部说明(续) • RST:用于连接复位,也可用于拒绝非法的数据或拒绝连接请求 • SYN:用于建立连接,连接请求时SYN=1,ACK=0;响应连接请求时SYN=1,ACK=1 • FIN:用于释放连接,表示发送方已经没有供发送的数据 • 窗口大小:表示在确认字节后还可以发送字节数,用于流量控制 • 校验和:覆盖了整个数据包,包括对数据包的首部和数据 • 选项:常见的选项是MSS(Maximum Segment Size)
TCP/IP的一些实现原则 当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包 当一个RST数据包到达一个监听端口,RST被丢弃 当一个RST数据包到达一个关闭的端口,RST被丢弃 当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包 TCP连接若干要点 • 当一个不包含SYN位的数据包到达一个监听端口时,数据包被丢弃 • 当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN|ACK数据包 • 当一个FIN数据包到达一个监听端口时,数据包被丢弃
常用的上层协议 • DNS: 53/tcp,udp • FTP: 20,21/tcp • telnet: 23/tcp • HTTP: 80/tcp • NNTP: 119/tcp • SMTP: 25/tcp • POP3: 110/tcp …… 参考:IANA提供的port-numbers.txt
网络漏洞 系统漏洞 信息收集 • 信息收集技术是一把双刃剑 • 黑客在攻击之前需要收集信息,才能实施有效的攻击 • 安全管理员用信息收集技术来发现系统的弱点并进行修补 攻击机制 目标系统 实时 入侵 检测 漏洞扫描 评估 加固 攻击工具 攻击命令 攻击过程 目标网络 攻击者 知己知彼,百战不殆
信息收集过程 • 信息收集(踩点,footprint)是一个综合过程 • 从一些社会信息入手 • 找到网络地址范围 • 找到关键的机器地址 • 找到开放端口和入口点 • 找到系统的制造商和版本 ……
攻击者需要的信息 • 域名 • 经过网络可以到达的IP地址 • 每个主机上运行的TCP和UDP服务 • 系统体系结构 • 访问控制机制 • 系统信息(用户名和用户组名、系统标识、路由表、SNMP信息等) • 其他信息,如模拟/数字电话号码、认证机制等 ……
社会信息 • DNS域名 • 网络实名 • 管理人员在新闻组或者论坛上的求助信息也会泄漏信息 • 网站的网页中 • 新闻报道 • 例如:XX公司采用XX系统,… • 这样的信息可以合法地获取
网站上令人感兴趣的信息 • 机构所在位置 • 与其关系紧密的公司或实体 • 电话号码 • 联系人姓名和电子邮件地址 • 指示所用安全机制的类型的私密或安全策略 • 与其相关联的Web服务器链接 此外,尝试查阅HTML源代码
非网络技术的探查手段 • 社会工程 • 通过一些公开的信息,获取支持人员的信任 • 假冒网管人员,骗取员工的信任(安装木马、修改口令等) • 查电话簿、XX手册(指南) • 在信息发达的社会中,只要存在,就没有找不到的,是这样吗? • 通过搜索引擎可以获取到大量的信息 • 搜索引擎提供的信息的有效性?(google、AltaVista)
信息收集:whois • Whois • 为Internet提供目录服务,包括名字、通讯地址、电话号码、电子邮箱、IP地址等信息 • Client/Server结构 • Client端 • 发出请求,接受结果,并按格式显示到客户屏幕上 • Server端 • 建立数据库,接受注册请求 • 提供在线查询服务 • 客户程序 • UNIX系统自带whois程序 • Windows也有一些工具 • 直接通过Web查询
各种whois数据来源 • http://www.networksolution.com • http://www.arin.net • 多数Unix提供了whois,fwhois由Chris Cappuccio创建 • http://www.ipswitch.com • http://www.samspade.org …… 如果需要查询com、net、edu、org以外的域可以查询以下的whois服务器 • http://www.ripe.net 欧洲IP地址分配 • http://whois.apnic.net 亚太IP地址分配 • http://whois.nic.mil 美国军事部门
各种whois数据来源(续) • http://whois.nic.gov 美国政府部门 • www.allwhois.com 美国以外的whois服务器 通过这些查询可以得到黑客感兴趣的一些信息: • 注册机构:显示特定的注册信息和相关的whois服务器; • 机构本身:显示与某个特定机构相关的所有信息; • 域名:显示与某个特定域名相关的所有信息 • 网络:显示与某个特定网络或IP地址相关的所有信息; • 联系点:显示与某位特定人员(通常是管理方面联系人)相关的所有信息
公共数据库安全对策 • 考虑使用免费电话或不在本机构电话交换机范围内的电话,避免拨入攻击和社交工程 • 伪造虚假的管理方面联系人,期望以此捕获潜在的社交工程师 • 加强注册机构的信息更新方式,可以使用安全的认证机制 弱的认证方式:电子邮件的FROM字段 1998年对AOL的攻击-修改其域名信息
信息收集:DNS查询 • 关于DNS • 是一个全球分布式数据库,对于每一个DNS节点,包含有该节点所在的机器的信息、邮件服务器的信息、主机CPU和操作系统等信息 • Nslookup是一个功能强大的客户程序 • 熟悉nslookup,就可以把DNS数据库中的信息挖掘出来 • 分两种运行模式 • 非交互式,通过命令行提交命令 • 交互式:可以访问DNS数据库中所有开放的信息 • UNIX/LINUX环境下的host命令有类似的功能
DNS & nslookup • 通过nslookup可以做什么? • 区域传送:可以列出DNS节点中所有的配置信息 • 这是为了主DNS和辅DNS之间同步复制才使用的 • 查看一个域名,根据域名找到该域的域名服务器 • 反向解析,根据IP地址得到域名名称 • 从一台域名服务器可以得到哪些信息? • 如果支持区域传送,可以从中获取大量信息 • 否则的话,至少可以发现以下信息 • 邮件服务器的信息,在实用环境中,邮件服务器往往在防火墙附近,甚至就在同一台机器上 • 其他,比如ns、www、ftp等,这些机器可能被托管给ISP
nslookup交互环境中常用命令 • server, 指定DNS服务器 • set type=XXX,设定查询类型 • ls, 列出记录 • [domain name, or IP address] • ……
关于DNS & nslookup的安全 • 注意的地方 • 关闭未授权区域传送(zone transfer)功能 • 或者,在防火墙上禁止53号TCP端口,DNS查询请求使用53号UDP端口 • 区分内部DNS和外部DNS • 内部信息不出现在外部DNS中 • DNS中该公开的信息总是要公开的,否则,域名解析的功能就无效了,没有MX记录就不能支持邮件系统 • Windows 2000中的DNS • 与AD集成在一起,增加了新的功能 • SRV记录 • 动态DNS • 在获得灵活性的同时,更加要注意安全
网络勘察 最常用的工具: Ping和Traceroute • Ping: Packet InterNet Groper • 用来判断远程设备可访问性最常用的方法 • 原理:发送ICMP Echo消息,然后等待ICMP Reply消息 • Traceroute • 用来发现实际的路由路径 • 原理:给目标的一个无效端口发送一系列UDP,其TTL依次增一,中间路由器返回一个ICMP Time Exceeded消息 • Windows中为tracert
Ping工具 • 发送ICMP Echo消息,等待Echo Reply消息 • 可以确定网络和外部主机的状态 • 可以用来调试网络的软件和硬件 • 每秒发送一个包,显示响应的输出,计算网络来回的时间 • 最后显示统计结果——丢包率
关于Ping • Ping有许多命令行参数,可以改变缺省的行为 • 可以用来发现一台主机是否active • 为什么不能ping成功? • 没有路由,网关设置? • 网卡没有配置正确 • 增大timeout值 • 被防火墙阻止 …… • “Ping of death” • 发送特大ping数据包(>65535字节)导致机器崩溃 • 许多老的操作系统都受影响
traceroute • 发送一系列UDP包(缺省大小为38字节),其TTL字段从1开始递增,然后监听来自路径上网关发回来的ICMP Time Exceeded应答消息 • UDP包的端口设置为一个不太可能用到的值(缺省为33434),因此,目标会送回一个ICMP Destination Unreachable消息,指示端口不可达
关于traceroute • traceroute有一些命令行参数,可以改变缺省的行为 • 可以用来发现到一台主机的路径,为勾画出网络拓扑图提供最基本的依据 • Traceroute允许指定宽松的源路由选项。 • 许多防火墙是禁止带源路由的包的