网络管理与安全--黑客与网络攻击技术北京科技大学陈红松副教授第11章黑客技术11.1黑客的动机11.2黑客攻击的流程11.3黑客技术概述11.4针对网络的攻击11.5本章小结习题黑客命名(1)•飞客“phreak”早期攻击电话网的青少年,研究各种盗打电话而不用付费的技术。•黑客“Hacker”一个给予喜欢发现和解决技术挑战、攻击计算机网络系统的精通计算机技能的人的称号,与闯入计算机网络系统目的在于破坏和偷窃信息的骇客不同。•骇客“Cracker”一个闯入计算机系统和网络试图破坏和偷窃个人信息的个体,与没有兴趣做破坏只是对技术上的挑战感兴趣的黑客相对应。黑客命名(2)•快客“Whacker”从事黑客活动但没有黑客技能的人,whacker是穿透系统的人中,在技术和能力上最不复杂的一类。•武士“Samurai”被他人雇佣的帮助他人提高网络安全的黑客,武士通常被公司付给薪金来攻击网络。•幼虫“Lara”一个崇拜真正黑客的初级黑客黑客命名(3)•欲望蜜蜂“Wannabee”处于幼虫的初始阶段的黑客的称呼,他们急于掌握入侵技术,但由于他们没有经验,因此即使没有恶意也可能造成很大危险•黑边黑客(Dark-Side)是指由于种种原因放弃黑客的道德信念而恶意攻击的黑客•半仙“Demigod”一个具有多年经验在黑客团体具有世界级声誉的黑客。黑客的动机究竟是什么?在回答这个问题前,我们应对黑客的种类有所了解,原因是不同种类的黑客动机有着本质的区别。从黑客行为上划分,黑客有“善意”与“恶意”两种,即所谓白帽(WhiteHat)及黑帽(BlackHat)。白帽利用他们的技能做一些善事,而黑帽则利用他们的技能做一些恶事。白帽长期致力于改善计算机社会及其资源,为了改善服务质量及产品,他们不断寻找弱点及脆弱性并公布于众。与白帽的动机相反,黑帽主要从事一些破坏活动,从事的是一种犯罪行为。11.1黑客的动机大量的案例分析表明黑帽具有以下主要犯罪动机。(1)好奇心许多黑帽声称,他们只是对计算机及电话网感到好奇,希望通过探究这些网络更好地了解它们是如何工作的。(2)个人声望通过破坏具有高价值的目标以提高在黑客社会中的可信度及知名度。(3)智力挑战为了向自己的智力极限挑战或为了向他人炫耀,证明自己的能力;还有些甚至不过是想做个“游戏高手”或仅仅为了“玩玩”而已。(4)窃取情报在Internet上监视个人、企业及竞争对手的活动信息及数据文件,以达到窃取情报的目的。(5)报复电脑罪犯感到其雇主本该提升自己、增加薪水或以其他方式承认他的工作。电脑犯罪活动成为他反击雇主的方法,也希望借此引起别人的注意。(6)金钱有相当一部分电脑犯罪是为了赚取金钱。(7)政治目的任何政治因素都会反映到网络领域。主要表现有:①敌对国之间利用网络的破坏活动;②个人及组织对政府不满而产生的破坏活动。这类黑帽的动机不是钱,几乎永远都是为政治,一般采用的手法包括更改网页、植入电脑病毒等。尽管黑客攻击系统的技能有高低之分,入侵系统手法多种多样,但他们对目标系统实施攻击的流程却大致相同。其攻击过程可归纳为以下9个步骤:踩点(FootPrinting)、扫描(scanning)、查点(enumeration)、获取访问权(GainingAccess)、权限提升(EscalatingPrivilege)、窃取(pilfering)、掩盖踪迹(CoveringTrack)、创建后门(CreatingBackDoors)、拒绝服务攻击(DenialofServices)。黑客攻击流程如图11.1所示。11.2黑客攻击的流程图11.1黑客攻击流程图“踩点”原意为策划一项盗窃活动的准备阶段。举例来说,当盗贼决定抢劫一家银行时,他们不会大摇大摆地走进去直接要钱,而是狠下一番工夫来搜集这家银行的相关信息,包括武装押运车的路线及运送时间、摄像头的位置、逃跑出口等信息。在黑客攻击领域,“踩点”是传统概念的电子化形式。“踩点”的主要目的是获取目标的如下信息:11.2.1踩点(1)因特网网络域名、网络地址分配、域名服务器、邮件交换主机、网关等关键系统的位置及软硬件信息。(2)内联网与Internet内容类似,但主要关注内部网络的独立地址空间及名称空间。(3)远程访问模拟/数字电话号码和VPN访问点。(4)外联网与合作伙伴及子公司的网络的连接地址、连接类型及访问控制机制。(5)开放资源未在前4类中列出的信息,例如Usenet、雇员配置文件等。为达到以上目的,黑客常采用以下技术。1.开放信息源搜索通过一些标准搜索引擎,揭示一些有价值的信息。例如,通过使用Usenet工具检索新闻组(newsgroup)工作帖子,往往能揭示许多有用东西。通过使用Google检索Web的根路径C:\\Inetpub,揭示出目标系统为WindowsNT/2000。2.whois查询whois是目标Internet域名注册数据库。目前,可用的whois数据库很多,例如,查询com、net、edu及org等结尾的域名可通过得到,而查询美国以外的域名则应通过查询数据库服务器的地址后完成进一步的查询。•Whois是为Internet提供目录服务,包括名字、通讯地址、电话号码、电子邮箱、IP地址等信息。•进入界面,在界面的对话框中我们输入的域名,选择”go”,whois为我们检索信息。通过对whois数据库的查询,黑客能够得到以下用于发动攻击的重要信息:注册机构,得到特定的注册信息和相关的whois服务器;机构本身,得到与特定目标相关的全部信息;域名,得到与某个域名相关的全部信息;网络,得到与某个网络或IP相关的全部信息;联系点(POC),得到与某个人(一般是管理联系人)的相关信息。例如,下面是通过公司的信息:Registrant:IBMCorporation(IBMDOM)OldOrchardRd.Armonk,NY10504USDomainName:IBM.COMAdministrativeContact,TechnicalContact:Trio,NicholasR(SZFHGULFPI)nrt@WATSON.IBM.COMPOBOX218YORKTOWNHTS,NY105980218US(914)94518501231231234Recordexpireson20Mar2005.Recordcreatedon19Mar1986.Databaselastupdatedon8May200321:18:57EDT.Domainserversinlistedorder:NS.WATSON.IBM.COM129.34.20.80NS.ALMADEN.IBM.COM198.4.83.35NS.AUSTIN.IBM.COM192.35.232.34NS.ERS.IBM.COM204.146.173.353.DNS区域传送DNS区域传送是一种DNS服务器的冗余机制。通过该机制,辅DNS服务器能够从其主DNS服务器更新自己的数据,以便主DNS服务器不可用时,辅DNS服务器能够接替主DNS服务器工作。正常情况下,DNS区域传送操作只对辅DNS服务器开放。然而,当系统管理员配置错误时,将导致任何主机均可请求主DNS服务器提供一个区域数据的拷贝,以至于目标域中所有主机信息泄露。能够实现DNS区域传送的常用工具有dig、nslookup及Windows版本的SamSpade(其网址为)。通过踩点已获得一定信息(IP地址范围、DNS服务器地址、邮件服务器地址等),下一步需要确定目标网络范围内哪些系统是“活动”的,以及它们提供哪些服务。与盗窃案之前的踩点相比,扫描就像是辨别建筑物的位置并观察它们有哪些门窗。扫描的主要目的是使攻击者对攻击的目标系统所提供的各种服务进行评估,以便集中精力在最有希望的途径上发动攻击。扫描中采用的主要技术有Ping扫射(PingSweep)、TCP/UDP端口扫描、操作系统检测以及旗标(banner)的获取。11.2.2扫描1.Ping扫射Ping扫射是判别主机是否“活动”的有效方式。Ping用于向目标主机发送“ICMP”回射请求(EchoRequest)分组,并期待由此引发的表明目标系统“活动”的回射应答(EchoReply)分组。常用的ping扫射工具有操作系统的Ping命令及用于扫射网段的fping、WS_ping等。2.端口扫射端口扫描就是连接到目标机的TCP和UDP端口上,确定哪些服务正在运行及服务的版本号,以便发现相应服务程序的漏洞。著名的扫描工具有UNIX系统上运行的Netcat()及Nmap(),Windows系统上运行的superscan()及NetScanToolPro2003()。3.操作系统检测由于许多漏洞是和操作系统紧密相关的,因此,确定操作系统类型对于黑客攻击目标来说也十分重要。目前用于探测操作系统的技术主要可以分为两类:利用系统旗标信息和利用TCP/IP堆栈指纹。每种技术进一步细分为主动鉴别及被动鉴别。目前,常用的检测工具有Nmap、Queso()、Siphon()。•协议栈指纹识别[stackfingerprinting]此技术分两类,一类是主动识别,另一类则是被动识别•主动协议栈指纹识别原理:由于TCP/IP协议栈技术只是在RFC文档中描叙,并没有一个统一的行业标准,于是各个公司在编写应用于自己的OS的TCP/IP协议栈时,对RFC文档做出了不尽相同的诠释,于是造成了各个OS在TCP/IP协议的实现上不同。•好比人类的指纹,每个普通人都有指纹,但是没有两个人的指纹是一模一样的。通过对不同OS的TCP/IP协议栈存在的些微差异的鉴别来判定OS类型•关于主动协议栈指纹识别这个领域最权威的论文是Fyodor发表在Phrack杂志上的《RemoteOSdetectionviaTCP/IPStackFingerPrinting》各种主动发送的探测数据包类型:FIN探测:根据RFC793文档,往目标主机上一个打开的端口发送一个FIN分组[其实任何无ACK和SYN标记的包可以达到同样的目的],正确的响应应该是无任何响应;但是,许多OS的TCP/IP协议栈实现上将返回一个FIN/ACK包[据笔者不完全统计有WINNT,CISCOIOS,HP/UX,IRIX等]•BOGUS标记探测:发送一个含有未定义的TCP标记的TCP头的SYN包,那么一些OS[比如Linux]的回应将包含这个未定义的标记,在其它一些系统收到SYN+BOGUS包将关闭连接利用这些特性可以标识一些OS。•TCP初始窗口大小检测:简单检查返回的包里包含的窗口大小,某些OS在TCP/IP协议栈的实现中,这个值是独特的[AIX是0x3F25,NT和BSD是0x402E],可以增加指纹鉴别的准确度。•被动协议栈指纹识别主动协议栈指纹识别由于需要主动往目标发送数据包,但这些数据包在网络流量中比较惹人注目,因为正常使用网络不会按这样的顺序出现包,因此比较容易被IDS捕获为了隐秘地识别远程OS,就需要使用被动协议栈指纹识别。被动协议栈指纹识别在原理上和主动协议栈指纹识别相似,但是它从不主动发送数据包,只是被动地捕获远程主机返回