1、网络扫描与嗅探 TSM-301网络攻击的完整过程信息收集 信息收集技术是一把双刃剑 黑客在攻击之前需要收集信息,才能实施有效的攻击 安全管理员用信息收集技术来发现系统的弱点并进行修补攻击工具攻击命令攻击机制目标网络网络漏洞目标系统系统漏洞攻击者漏洞扫描评估加固攻击过程攻击过程实时入侵检测知己知彼,百战不殆知己知彼,百战不殆信息收集过程信息收集(踩点,footprint)是一个综合过程从一些社会信息入手找到网络地址范围找到关键的机器地址找到开放端口和入口点找到系统的制造商和版本网络勘察最常用的工具:Ping和TraceroutePing:Packet InterNet Groper用来判断远程设
2、备可访问性最常用的方法原理:发送ICMP Echo消息,然后等待ICMP Reply消息Traceroute用来发现实际的路由路径原理:给目标的一个无效端口发送一系列UDP,其TTL依次增一,中间路由器返回一个ICMP Time Exceeded消息Windows中为tracertPing工具发送ICMP Echo消息,等待Echo Reply消息可以确定网络和外部主机的状态可以用来调试网络的软件和硬件每秒发送一个包,显示响应的输出,计算网络来回的时间最后显示统计结果丢包率关于PingPing有许多命令行参数,可以改变缺省的行为可以用来发现一台主机是否active为什么不能ping成功?没有路
3、由,网关设置?网卡没有配置正确增大timeout值被防火墙阻止“Ping of death”发送特大ping数据包(65535字节)导致机器崩溃许多老的操作系统都受影响Traceroute发送一系列UDP包(缺省大小为38字节),其TTL字段从1开始递增,然后监听来自路径上网关发回来的ICMP Time Exceeded应答消息UDP包的端口设置为一个不太可能用到的值(缺省为33434),因此,目标会送回一个ICMP Destination Unreachable消息,指示端口不可达关于Traceroutetraceroute有一些命令行参数,可以改变缺省的行为可以用来发现到一台主机的路径,为
4、勾画出网络拓扑图提供最基本的依据Traceroute允许指定宽松的源路由选项。许多防火墙是禁止带源路由的包的网络勘查的对策防火墙:设置过滤规则使用NIDS(Network Intrusion Detection System)使用其他工具:如rotoroutor,它可以记录外来的traceroute请求,产生虚假的应答扫描技术基于TCP/IP协议,对各种网络服务,无论是主机或者防火墙、路由器都适用扫描可以确认各种配置的正确性,避免遭受不必要的攻击用途,双刃剑安全管理员可以用来确保自己系统的安全性黑客用来探查系统的入侵点端口扫描的技术已经非常成熟,目前有大量的商业、非商业的扫描器扫描器的重要性扫
5、描器能够暴露网络上潜在的脆弱性无论扫描器被管理员利用,或者被黑客利用,都有助于加强系统的安全性它能使得漏洞被及早发现,而漏洞迟早会被发现的扫描器可以满足很多人的好奇心扫描器除了能扫描端口,往往还能够发现系统存活情况,以及哪些服务在运行用已知的漏洞测试这些系统对一批机器进行测试,简单的迭代过程有进一步的功能,包括操作系统辨识、应用系统识别扫描器的历史早期 80年代,网络没有普及,上网的好奇心驱使许多年轻人通过Modem拨号进入到UNIX系统中。这时候的手段需要大量的手工操作 于是,出现了war dialer自动扫描,并记录下扫描的结果 现代的扫描器要先进得多SATAN:Security Admi
6、nistrators Tool for Analyzing Networks 1995年4月发布,引起了新闻界的轰动 界面上的突破,从命令行走向图形界面(使用HTML界面),不依赖于X 两位作者的影响(Dan Farmer写过网络安全检查工具COPS,另一位Weitse Venema是TCP_Wrapper的作者)Nmap 作者为Fyodor,技术上,是最先进的扫描技术大集成 结合了功能强大的通过栈指纹来识别操作系统的众多技术扫描技术主机扫描:确定在目标网络上的主机是否可达,同时尽可能多映射目标网络的拓扑结构,主要利用ICMP数据包 端口扫描:发现远程主机开放的端口以及服务操作系统指纹扫描:根
7、据协议栈判别操作系统传统主机扫描技术ICMP Echo Request(type 8)和 Echo Reply(type 0)通过简单地向目标主机发送ICMP Echo Request 数据包,并等待回复的ICMP Echo Reply 包,如PingICMP Sweep(Ping Sweep)使用ICMP Echo Request一次探测多个目标主机。通常这种探测包会并行发送,以提高探测效率 Broadcast ICMP 设置ICMP请求包的目标地址为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机,这种情况只适合于UNIX/Linux系统 Non-Echo ICMP 其它ICMP
8、服务类型(13和14、15和16、17和18)也可以用于对主机或网络设备如路由器等的探测 高级主机扫描技术利用被探测主机产生的ICMP错误报文来进行复杂的主机探测 异常的IP包头 向目标主机发送包头错误的IP包,目标主机或过滤设备会反馈ICMP Parameter Problem Error信息。常见的伪造错误字段为Header Length 和IP Options。不同厂家的路由器和操作系统对这些错误的处理方式不同,返回的结果也不同。在IP头中设置无效的字段值 向目标主机发送的IP包中填充错误的字段值,目标主机或过滤设备会反馈ICMP Destination Unreachable信息。这种
9、方法同样可以探测目标主机和网络设备 高级主机扫描技术通过超长包探测内部路由器若构造的数据包长度超过目标系统所在路由器的PMTU且设置禁止分片标志,该路由器会反馈 Fragmentation Needed and Dont Fragment Bit was Set差错报文。反向映射探测用于探测被过滤设备或防火墙保护的网络和主机。构造可能的内部IP地址列表,并向这些地址发送数据包。当对方路由器接收到这些数据包时,会进行IP识别并路由,对不在其服务的范围的IP包发送ICMP Host Unreachable或ICMP Time Exceeded 错误报文,没有接收到相应错误报文的IP地址可被认为在该
10、网络中 主机扫描策略的对策 使用可以检测并记录ICMP扫描的工具 使用入侵检测系统 在防火墙或路由器中设置允许进出自己网络的ICMP分组类型端口扫描技术开放扫描(Open Scanning)需要扫描方通过三次握手过程与目标主机建立完整的TCP连接可靠性高,产生大量审计数据,容易被发现半开放扫描(Half-Open Scanning)扫描方不需要打开一个完全的TCP连接秘密扫描(Stealth Scanning)不包含标准的TCP三次握手协议的任何部分 隐蔽性好,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息 端口扫描技术基本的TCP connect()扫描(开放)Rever
11、se-ident扫描(开放)TCP SYN扫描(半开放)IP ID header akaIP ID header aka“dump”“dump”扫描(半开放)TCP Fin扫描(秘密)TCP XMAS扫描(秘密)TCP ftp proxy扫描(bounce attack)用IP分片进行SYN/FIN扫描(躲开包过滤防火墙)UDP ICMP端口不可达扫描UDP recvfrom扫描TCP connect()扫描原理扫描器调用socket的connect()函数发起一个正常的连接 如果端口是打开的,则连接成功 否则,连接失败优点简单,不需要特殊的权限缺点服务器可以记录下客户的连接行为,如果同一个客
12、户轮流对每一个端口发起连接,则一定是在扫描Reverse-ident扫描Ident协议(RFC1413)使得可以发现任何一个通过TCP连接的进程的所有者的用户名,即使该进程并没有发起该连接只有在TCP全连接之后才有效TCP端口113例如可以先连接到80端口,然后通过identd来发现服务器是否在root下运行建议关闭ident服务,或者在防火墙上禁止,除非是为了审计的目的 TCP SYN扫描原理向目标主机的特定端口发送一个SYN包 如果应答包为RST包,则说明该端口是关闭的 否则,会收到一个SYN|ACK包。于是,发送一个RST,停止建立连接由于连接没有完全建立,所以称为“半开连接扫描”优点很
13、少有系统会记录这样的行为缺点在UNIX平台上,需要root权限才可以建立这样的SYN数据包IP ID header aka“dump”扫描由Antirez首先使用,并在Bugtraq上公布 原理:扫描主机通过伪造第三方主机IP地址向目标主机发起SYN扫描,并通过观察其IP序列号的增长规律获取端口的状态 优点不直接扫描目标主机也不直接和它进行连接,隐蔽性较好 缺点对第三方主机的要求较高 TCP Fin扫描原理扫描器发送一个FIN数据包 如果端口关闭的,则远程主机丢弃该包,并送回一个RST包 否则的话,远程主机丢弃该包,不回送变种,组合其他的标记优点不是TCP建立连接的过程,所以比较隐蔽缺点与SY
14、N扫描类似,也需要构造专门的数据包在Windows平台无效,总是发送RST包TCP XMAS扫描原理扫描器发送的TCP包包头设置所有标志位 关闭的端口会响应一个同样设置所有标志位的包 开放的端口则会忽略该包而不作任何响应 优点比较隐蔽缺点主要用于UNIX/Linux/BSD的TCP/IP的协议栈 不适用于Windows系统分片扫描它本身并不是一种新的扫描方法,而是其他扫描技术的变种,特别是SYN扫描和FIN扫描思想是,把TCP包分成很小的分片,从而让它们能够通过包过滤防火墙注意,有些防火墙会丢弃太小的包而有些服务程序在处理这样的包的时候会出现异常,或者性能下降,或者出现错误TCP ftp pr
15、oxy扫描FTP bounce attack原理用PORT命令让ftp server与目标主机建立连接,而且目标主机的端口可以指定如果端口打开,则可以传输否则,返回425 Cant build data connection:Connection refused.Ftp这个缺陷还可以被用来向目标(邮件,新闻)传送匿名信息优点:这种技术可以用来穿透防火墙缺点:慢,有些ftp server禁止这种特性UDP ICMP端口不可达扫描利用UDP协议原理开放的UDP端口并不需要送回ACK包,而关闭的端口也不要求送回错误包,所以利用UDP包进行扫描非常困难有些协议栈实现的时候,对于关闭的UDP端口,会送回
16、一个ICMP Port Unreach错误缺点速度慢,而且UDP包和ICMP包都不是可靠的需要root权限,才能读取ICMP Port Unreach消息一个应用例子Solaris的rpcbind端口(UDP)位于32770之上,这时可以通过这种技术来探测UDP recvfrom()&write()扫描非root用户不能直接读取ICMP Port Unreach消息,但是Linux提供了一种方法可以间接通知到原理第二次对一个关闭的UDP端口调用write()总是会失败经验:在ICMP错误到达之前,在UDP端口上调用recvfrom()会返回EAGAIN(重试),否则会返回ECONNREFUSE
17、D(连接拒绝)端口扫描的对策设置防火墙过滤规则,阻止对端口的扫描例如可以设置检测SYN扫描而忽略FIN扫描使用入侵检测系统禁止所有不必要的服务,把自己的暴露程度降到最低Unix或linux中,在/etc/inetd.conf中注释掉不必要的服务,并在系统启动脚本中禁止其他不必要的服务Windows中通过Services禁止敏感服务,如IIS操作系统辨识操作系统辨识的动机许多漏洞是系统相关的,而且往往与相应的版本对应从操作系统或者应用系统的具体实现中发掘出来的攻击手段都需要辨识系统操作系统的信息还可以与其他信息结合起来,比如漏洞库,或者社会诈骗(社会工程,social engineering)如
18、何辨识一个操作系统一些端口服务的提示信息,例如,telnet、http、ftp等服务的提示信息TCP/IP栈指纹DNS泄漏出OS系统端口服务提供的信息Telnet服务Http服务Ftp服务栈指纹技术定义:利用TCP/IP协议栈实现上的特点来辨识一个操作系统技术导向可辨识的OS的种类,包括哪些操作系统结论的精确度,细微的版本差异是否能识别一些工具Checkos,by ShokQueso,by SavageNmap,by Fyodor主动栈指纹识别技术原理:寻找不同操作系统之间在处理网络数据包上的差异,并且把足够多的差异组合起来,以便精确地识别出一个系统的OS版本配置能力扩展性,新的OS,版本不断
19、推出定义一种配置语言或者格式主动栈指纹识别方法常用的手段给一个开放的端口发送FIN包,有些操作系统有回应,有的没有回应对于非正常数据包的反应 比如,发送一个包含未定义TCP标记的数据包根据TCP连接的序列号风格 寻找初始序列号之间的规律ACK值 有些系统会发送回所确认的TCP分组的序列号,有些会发回序列号加1TCP初始化窗口 有些操作系统会使用一些固定的窗口大小DF位(Dont Fragment bit)某些操作系统会设置IP头的DF位来改善性能主动栈指纹识别方法 分片处理方式 分片重叠的情况下,处理会不同:用后到的新数据覆盖先到的旧数据或者反之 ICMP协议 ICMP错误消息的限制 发送一批
20、UDP包给高端关闭的端口,然后计算返回来的不可达错误消息 ICMP端口不可达消息的大小 通常情况下送回IP头+8个字节,但是个别系统送回的数据更多一些 ICMP回应消息中对于校验和的处理方法不同 ICMP回应消息中,TOS域的值 TCP选项(RFC793和更新的RFC1323)这里充满了各种组合的可能性 应答方式“Query-Reply”,可以把多个选项放到一个包中 有些高级选项在新的协议栈实现中加入 SYN flooding 测试 如果发送太多的 伪造SYN包,一些操作系统会停止建立新的连接。许多操作系 统只能处理8 个包。被动栈指纹识别方法它和主动栈指纹识别方法类似不是向目标系统发送分组,
21、而是被动监测网络通信,以确定所用的操作系统如根据TCP/IP会话中的几个属性:TTL 窗口大小 DF TOSSiphon工具,http:/ 192.168.102.245(发起方为192.168.102.155)利用snort监听到的数据包:192.168.102.245:23-192.168.102.155:2300 TCP TTL:255 TOS:0 x0 ID:58955 DF*S*A*Seq:0 xD3B709A4 Ack:0 xBE09B2B7 Win:0 x2798 TCP Options=NOP NOP TS:9688775 9682347 NOP WS:0 MSS:1460和o
22、sprints.conf比较,可猜测192.168.102.245的操作系统为Solaris 2.6-2.7操作系统识别的对策端口扫描监测工具监视操作系统检测活动让操作系统识别失效的补丁修改OS的源代码或改动某个OS参数以达到改变单个独特的协议栈特征的目的防火墙和路由器的规则配置使用入侵检测系统其他扫描方法延时扫描和分布式扫描原因:各IDS常采用的检测方法在某个时间段内特定主机对本地端口的访问频度是否大于事先预定的阈值来判断入侵。延时扫描是加大各连接之间的时间间隔,逃避检测。比较有效但是延缓了扫描速度。分布式扫描解决连接数问题的同时也解决了扫描进度的问题。把扫描任务分配到地理位置和网络拓扑分布
23、的扫描主机上。同时也解决了大量信息收集时单机扫描面临的主机负载和网络负载过重的问题。查点如果黑客从一开始的目标探测中没有找到任何可以直接利用的入侵途径,他就会转向收集目标有效的用户账号或保护不当的共享资源,这就是查点(enumeration)。查点要对目标系统进行连接和查询,查点活动有可能会被目标系统记录。查点通常是针对特定操作系统进行。查点的信息攻击者查点时感兴趣的信息类型:网络资源和共享资源用户和用户组服务器程序及其标记(banner)Windows NT/2000的查点Windows NT的网络服务依赖于CIFS/SMB(Common Internet File System/Serve
24、r Message Block)和NetBIOS数据传输协议,很容易泄漏共享信息。Windows 2000也同样具有NT的不安全特性。Windows提供了很多工具用于管理网络,同时也具有副作用。NTRK(NT Resource Kit)2000 Server安装盘的SupportTools目录Windows NT/2000空会话原理利用Windows NT/2000对NetBIOS的缺省信赖通过TCP端口139返回主机的大量信息实例如果通过端口扫描获知TCP端口139已经打开 net use 192.168.102.230IPC$/USER:在攻击者和目标主机间建立连接Windows 2000
25、还有另一个SMB端口445NT for all 工具NT/2000 NetBIOS网络资源查点 NT/2000中有很多工具可用于提供对网络资源的查询 nbtstat,可以获取NetBIOS远程主机名字表NT/2000 NetBIOS网络资源查点net view查看域、计算机或计算机共享资源的列表如果建立了空会话连接,可用net view查看目标共享资源Nc工具 NT/2000 NetBIOS 网络资源查点工具两个常用的网络资源查点工具:legion和NATNT/2000 NetBIOS 网络资源查点工具NTRK中的网络资源查点工具nltest、rmtshare、srvcheck、srvinfo
26、、netdom等其他网络资源查点工具epdump、getmac、netviewx、enum、dumpsec等NT/2000 NetBIOS 用户查点攻击者对目标主机的用户名和密码更感兴趣一旦获取用户名,50%的努力花在窃取账号上用户通常使用弱密码在查询资源的同时可以查询用户前面介绍的一些工具,如NAT、enum、dumpsec等Rudnyi的sid2user和user2sid,从用户名查找SID(Security Identifier)或从SID查找用户名 参看文章“What is a SID”http:/ 192.168.102.155 80NT/2000服务器程序及标记查点注册表查点 通常
27、情况下正常安装在系统上的应用程序都会在注册表中留下信息 注册表中有大量和用户有关的信息 从目的地得到Windows注册表的内容 NT/2000的缺省配置是只允许Administrator访问注册表 HKEY_Local_MachineSYSTEMCurrentControlSetControlSecurePipeServerswinreg 注册表访问工具:regdump、dumpsec等NT/2000查点的对策在路由器、防火墙或其他网络关口设置,不允许对TCP和UDP的135139端口的访问2000中,还要禁止445端口。NT/2000查点的对策 Hkey_Local_MachineSYSTE
28、MCurrentControlSetControlLSA,增加一个数据项RestrictAnonymous,数据类型为REG_DWORD,NT下数值为1,2000下为2 2000下,“管理工具”中的“本地安全设置”|“本地策略”|“安全选项”中对匿名连接的额外限制(相当于设置RestrictAnonymous为2)NT/2000查点的对策对服务程序标记查点的对策:对具有风险的应用程序,尽可能隐藏其标记中的厂商和版本信息;定期使用端口扫描和netcat工具连接活动端口进行网络系统检查,确保没有泄露信息锁定注册表,不能对它进行远程访问IIS Logo:www3c.dll网络嗅探在一个共享式网络,可
29、以听取所有的流量是一把双刃剑管理员可以用来监听网络的流量情况开发网络应用的程序员可以监视程序的网络情况黑客可以用来刺探网络情报目前有大量商业的、免费的监听工具,俗称嗅探器(sniffer)LC4以太网络的工作原理载波侦听/冲突检测(CSMA/CD,carrier sense multiple access with collision detection)技术载波侦听:是指在网络中的每个站点都具有同等的权利,在传输自己的数据时,首先监听信道是否空闲 如果空闲,就传输自己的数据 如果信道被占用,就等待信道空闲而冲突检测则是为了防止发生两个站点同时监测到网络没有被使用时而产生冲突以太网采用了CSM
30、A/CD技术,由于使用了广播机制,所以,所有与网络连接的工作站都可以看到网络上传递的数据以太网卡的工作模式网卡的MAC地址(48位)通过ARP来解析MAC与IP地址的转换用ipconfig/ifconfig可以查看MAC地址正常情况下,网卡应该只接收这样的包MAC地址与自己相匹配的数据帧广播包网卡完成收发数据包的工作,两种接收模式混杂模式:不管数据帧中的目的地址是否与自己的地址匹配,都接收下来非混杂模式:只接收目的地址相匹配的数据帧,以及广播数据包(和组播数据包)为了监听网络上的流量,必须设置为混杂模式共享网络和交换网络共享式网络通过网络的所有数据包发往每一个主机最常见的是通过HUB连接起来的
31、子网交换式网络通过交换机连接网络由交换机构造一个“MAC地址-端口”映射表发送包的时候,只发到特定的端口上共享式网络示意图应用程序抓包的技术UNIX系统提供了标准的API支持Packet socketBPFWindows平台上通过驱动程序来获取数据包驱动程序WinPcap在交换式网络上监听数据包ARP重定向技术,一种中间人攻击GW1 B打开IP转发功能2 B发送假冒的arp包给A,声称自己是GW的IP地址3 A给外部发送数据,首先发给B4 B再转发给GW原理:利用dsniff中的arpredirect工具ABSniffer的反措施合理的网络分段,在网络中使用网桥和交换机;相互信任的主机处于同一
32、网段使用加密技术传送敏感数据,如SSH为了防止ARP欺骗,使用永久的ARP缓存条目如何检测处于混杂模式的节点检测处于混杂模式的节点网卡和操作系统对于是否处于混杂模式会有一些不同的行为,利用这些特征可以判断机器是否运行在混杂模式下一些检测手段观测DNS 很多网络监听软件会尝试进行地址反向解析,可以通过观测DNS上是否有明显增多的解析请求根据操作系统的特征 Linux内核的特性:正常情况下,只处理本机MAC地址或者以太广播地址的包。在混杂模式下,许多版本的Linux内核只检查 数据包中的IP地址以确定是否送到IP堆栈。因此,可以构造无效以太地址而IP地址有效的ICMP ECHO请求,看机器是否返回应答包(混杂模式),或忽略(非混杂模式)。Windows 9x/NT:在混杂模式下,检查一个包是否为以太广播包时,只看MAC地址前八位是否为0 xff。检测处于混杂模式的节点根据网络和主机的性能 根据响应时间:向本地网络发送大量的伪造数据包,然后,看目标主机的响应时间,首先要测得一个响应时间基准和平均值L0pht的AntiSniff产品,参考它的技术文档