1、第02讲 网络攻击行为分析(一)基础篇,基本内容,网络信息安全技术与黑客攻击技术都源于同一技术核心,即网络协议和底层编程技术,不同的是怎么使用这些技术。 很多软件或设备可以为网络管理和安全提供保障,但当被别有用心的人所利用时,就成了黑客工具,就象刀具,是基本生活用具,又可成为杀人凶器。我们要做到“知己知彼”,才能“百战不殆”,对黑客的攻击手段、途径、方法和工具了解得越多,越有利于保护网络和信息的安全。 在介绍信息安全技术以前,本章先来分析与黑客攻击相关的知识。,计算机网络系统所面临的威胁大体可分为两种:一是针对网络中信息的威胁;二是针对网络中设备的威胁。,影响信息安全的人员分析,如果按威胁的对
2、象、性质则可以细分为四类: 第一类是针对硬件实体设施 第二类是针对软件、数据和文档资料 第三类是兼对前两者的攻击破坏 第四类是计算机犯罪。,安全威胁的来源,不可控制的自然灾害,如地震、雷击 恶意攻击、违纪、违法和计算机犯罪 人为的无意失误和各种各样的误操作 计算机硬件系统的故障 软件的“后门”和漏洞,安全威胁主要来自以下几个方面:,安全威胁的表现形式,伪装 非法连接 非授权访问 拒绝服务 抵赖 信息泄露,业务流分析 改动信息流 篡改或破坏数据 推断或演绎信息 非法篡改程序,实施安全威胁的人员,心存不满的员工 软硬件测试人员 技术爱好者 好奇的年青人 黑客(Hacker) 破坏者(Cracker
3、) 以政治或经济利益为目的的间谍,潜在的攻击者 竞争对手 黑客政治家 有组织的罪犯 恐怖主义者 政府 雇佣杀手 虚伪朋友,不满的员工 客户 供应商 厂商 商务伙伴 契约者、临时雇员和顾问,攻击者的水平,脚本小孩(Script Kiddies),普通技能攻击者,高级技能攻击者,安全专家,杰出攻击者,两个概念,黑客 能赋予计算机扩展的能力,使其超越最初设计的人黑客是英文“Hacker”的英文译音,我国台湾地区译为“骇客”,它起源于美国麻省理工学院的计算机实验室中。早期的黑客是指那些精力旺盛,智力超群,具有高超编程能力的计算机程序员。他们的行为主要包括设计黑客软件、盗打长途电话以及利用电话进行欺诈。
4、目前,按照公安部1997年4月21日发布的计算机信息系统安全专用产品分类原则中术语的定义,黑客是指对计算机信息系统进行非授权访问的人员。也有人认为,黑客就是指那些利用通讯软件、通过网络非法进入公共和他人的计算机系统,截获或篡改计算机中的信息,危害信息系统安全的电脑入侵者,其入侵行为称为黑客行为。 计算机窃贼 恶意攻击计算机系统的人(Cracker),黑客的特点,(1)充当黑客的年轻人居多 黑客年龄一般在10余岁到30岁之间,其中有许多未成年的小孩,如美国号称“世界头号计算机黑客”的Kevin Mitnick,13岁迷上计算机,15岁闯入“北美空中防务指挥系统”;英国的Mathew Bevan
5、14岁侵入英国的电信公司;我国呼和浩特市一个10岁的初中生破译了该市通信公司的系统管理员的账号,等等。 (2)人员的构成相对集中 70%以上的黑客事件是由内部人员或外部与内部合谋进行的。一般来说,外部黑客入侵的目的主要是破坏系统,而内部或内外勾结的入侵多数是为了获取信息;外部黑客对一个站点可能只入侵一次,内部或内外勾结的入侵可能会连续几次。 (3)黑客活动时间相对固定 黑客活动主要是在晚上到凌晨、周末或节假日。因为职业化的黑客很少,一般黑客多有自己的工作,实施黑客活动需要利用休息时间,又因为在这些时间里,工作场所的人员少,便于隐蔽。 (4)从发展趋势看,黑客正在不断地走向系统化、组织化和年轻化
6、 黑客甚至定期召开会议,如他们每四年在荷兰举行一次Hack - Tic会议、每年在纽约举行“2600公文”、在拉斯维加斯举行DefCon会议和在加利福尼亚的Lake Tahoe举行“黑客大会”。,黑客攻击危害程度的划分,黑客攻击所使用的方法不同,产生的危害程度也不同,一般分为八个层次: 第一层:邮件炸弹攻击; 第二层:简单拒绝服务; 第三层:本地用户获得非授权的读访问; 第四层:本地用户获得他们非授权的文件写权限; 第五层:远程用户获得了非授权的账号; 第六层:远程用户获得了特权文件的读权限; 第七层:远程用户获得了特权文件的写权限; 第八层:远程用户拥有了根权限(黑客已经攻克了系统)。 在这
7、八层中,随着层号增大,危害的程度加重。,黑客攻击的手段,目前,黑客攻击网络的手段种类繁多,而且新的手段层出不穷,黑客攻击可以分为以下两大类: 一类是主动攻击,这种攻击以各种方式获取攻击目标的相关信息,找出系统漏洞,侵入系统后,将会有选择地破坏信息的有效性和完整性。例如:邮件炸弹。 另一类是被动攻击,这种攻击是在不影响网络正常工作的情况下,进行截获、窃取、破译以获得重要机密信息,其中包括窃听和通信流量分析。例如:扫描器。 当前黑客攻击采用的主要手段是利用目前网络系统以及各种网络软件的漏洞,比如基于TCP/IP协议本身的不完善、操作系统的种种缺陷等;防火墙设置不当;电子欺诈;拒绝服务(包括DDoS
8、);网络病毒;使用黑客工具软件;利用用户自己安全意识薄弱,比如口令设置不当;或直接将口令文件放在系统等等。,几种黑客常用的方法,(1)扫描器 所谓扫描器,实际是一种自动检测目标计算机安全性弱点的程序。黑客通过使用扫描器,可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务、使用的软件版本以及其他一些服务信息。 (2)口令破解 黑客进行攻击常常是从破解用户口令开始的。 (3)炸弹攻击与病毒 炸弹攻击是指黑客利用自编的炸弹攻击程序或工具软件,集中在一段时间内,向攻击的目标机器发出大量信息,使机器出现负载过重、网络堵塞,最终使系统崩溃的一种网络攻击手段。 (4)电子欺骗(Spoofing
9、),几种黑客常用的方法,电子欺骗一般包括任何使用计算机进行欺骗的行为。 (5)监听法 网络监听是局域网中的一种黑客技术,由于在进行监听时,不与其他主机交换信息,也不修改密码,因此,网络监听是一种被动的攻击方式,仅用于局域网中。 (6)拒绝服务攻击(Denial of Service) 拒绝服务攻击是指攻击者占有大量的共享资源,使系统无法为其他用户提供资源或以过多的请求造成“溢出”,便服务器或路由器过载,甚至迫使服务器关闭,终止为用户提供服务的一种攻击方法。拒绝服务攻击是一种主动的破坏性攻击。 从造成的危害上划分,拒绝服务攻击可分为两类,一是破坏或毁坏系统资源,使用户无法使用;第二类是过载系统服
10、务或消耗系统资源,阻止其他用户使用这些服务。,网络攻击的途径,针对端口攻击 针对服务攻击 针对第三方软件攻击 DOS攻击 针对系统攻击 口令攻击 欺骗,网络攻击的层次(P22),网络攻击的层次,第一层攻击:第一层攻击基于应用层的操作 ,这些攻击的目的只是为了干扰目标的正常工作。 第二层攻击:第二层攻击指本地用户获得不应获得的文件(或目录)读权限 。 第三层攻击:在第二层的基础上发展成为使用户获得不应获得的文件(或目录)写权限。 第四层攻击:第四层攻击主要指外部用户获得访问内部文件的权利。 第五层攻击:第五层攻击指非授权用户获得特权文件的写权限。 第六层攻击:第六层攻击指非授权用户获得系统管理员
11、的权限或根权限。,网络攻击阶段及工具,攻击的阶段性,侦察,网络攻击阶段及工具(续),侦察,侦察,侦察是攻击的第一步,这就如同匪徒一般 侦察是利用公开的、可利用的信息来调查攻击目标 侦察包括以下技术 低级技术侦察 Web搜索 Whois数据库 域名系统(DNS)侦察 通用的目标侦察工具,低级技术侦察,社交工程在黑客理论中,指利用人性弱点、利用人际交往上的漏洞来非法获取资料的行为。 物理闯入 垃圾搜寻 你能找出垃圾搜寻的例子吗?,Web搜索,搜索一个组织自己的web站点 有电话号码的职员联系信息 关于公司文化和语言的信息 商务伙伴 最近的合并和兼并公司 正使用的技术 使用搜索引擎 搜索论坛 BB
12、S(电子公告栏) Usenet(新闻组),Whois数据库搜索,什么是whois数据库:包括各种关于Internet地址分配、域名和个人联系方式的数据库WHOIS是一种由防御数据网(DDN)信息中心(NIC)维护的关于用户、主机系统、网络和域的Internet数据库。该数据库的信息只包括已经通过NIC在因特网上注册的用户和主机系统的信息。可以查找这个数据库,以确定用户的电子函件地址。该处理过程是首先在nicddnmil的WHOIS数据库进行登录,然后用WHOIS命令进行查询。在提示符下键入HELP可以得到更多的信息。(百度) 研究.com, .net, .org域名 研究非.com, .ne
13、t和.org域名 国家代码: 教育(.edu): 军事代码(.mit): whois.nic.mit 政府(.gov): whois.nic.gov,Whois数据库搜索(续),搜索目标域名,Whois数据库搜索(续),搜索目标IP 美国Internet注册局: 欧洲网络协调中心: 亚太网络协调中心: 中国互联网络信息中心:,亚太网络信息中心,DNS搜索,Nslookup 使用DNS的排错工具nslookup,你可以利用从whois查询到的信息侦查更多的网络情况。例如,使用nslookup命令把你的主机伪装成secondary DNS服务器,如果成功便可以要求从主DNS服务器进行区域传送。要
14、是传送成功的话,你将获得大量有用信息,包括: a)使用此DNS服务器做域名解析到所有主机名和IP地址的映射情况 b)公司使用的网络和子网情况 c)主机在网络中的用途。许多公司使用带有描述性的主机名,像,和。,DNS搜索,使用nslookup实现区域传送的过程 (1)使用whois命令查询目标网络,例如在提示符下输入 whois (2)你会得到目标网络的primary和slave DNS服务器的信息。例如,假设主DNS服务器的名字是 (3)使用交互查询方式,缺省情况下nslookup会使用缺省的DNS服务器作域名解析。键入命令server 定位目标网络的DNS服务器; (4)列出目标网络DNS
15、服务器的内容,如ls 。此时DNS服务器会把数据传送给你,当然,管理员可以禁止DNS服务器进行区域传送,目前很多公司将DNS服务器至于防火墙的保护之下并严格设定了只能向某些主机进行区域传送。 一旦你从区域传送中获得了有用信息,你便可以对每台主机实施端口扫描以确定它们提供了那些服务。如果你不能实现区域传送,你还可以借助ping和端口扫描工具,当然还有traceroute。,通用工具,Sam Spade工具 www.samspade.org/ssw/ Netscantools 基于web的工具 www.samspade.org .,网络攻击阶段及工具(续),侦察,扫描,扫描是在侦察之后,企图发现
16、目标的漏洞 扫描需要花费许多时间,扫描内容,战争拨号 网络测绘 端口扫描 漏洞扫描 躲避IDS,战争拨号,战争拨号是搜寻调制解调器 查找电话号码:电话薄、Intenet、whois、web站点、社交工程 工具 THCscan 2.0,网络测绘,网络测绘是绘制目标的网络拓扑结构 发现活跃主机 Ping TCP或UDP数据包扫描 跟踪路由: Traceroute(UNIX) Tracert(Windows) 网络测绘工具 Cheops: http:/ TCP连接扫描:三次握手 TCP SYN TCP FIN Xma:发送TCP URG、PSH等 TCP 空扫描 TCP ACK FTP跳跃 UDP
17、ICMP 工具:nmap,扫描的目的,发现活跃的主机 发现开放的端口 确定目标使用的操作系统 协议栈指纹(Fingerprint),漏洞扫描,漏洞扫描寻找以下漏洞 一般的配置错误 默认的配置缺点 知名系统的漏洞 漏洞扫描的组成 漏洞数据库 用户配置工具 扫描引擎 当前活跃的知识库 结果库和报告生成工具,漏洞 数据库,用户配置工具,扫描引擎,活跃的知识库,结果库和 报告生成,漏洞扫描工具,SARA, SANT, Nessus, www.nesus.org ,躲避NIDS,NIDS是Network Intrusion Detection System的缩写,即网络入侵检测系统,主要用于检测Ha
18、cker或Cracker通过网络进行的入侵行为。NIDS的运行方式有两种,一种是在目标主机上运行以监测其本身的通信信息,另一种是在一台单独的机器上运行以监测所有网络设备的通信信息,比如Hub、路由器。 NIDS的功能:网管人员对网络运行状态进行实时监控,以便随时发现可能的入侵行为,并进行具体分析,及时、主动地进行干预,从而取得防患于未然的效果。 目前,NIDS产品可分为硬件和软件两种类型。 上述扫描均存在“网络噪音”,易被NIDS识别出来 如何躲避NIDS? NIDS如何工作? 如何躲避?,IDS,如何躲避IDS?,弄乱流量 改变数据的结构或语法 弄乱上下文 IDS无法识别完整的会话 方法:
19、网络层躲避 应用层躲避,网络层躲避,只使用片断 发送片断泛洪 以意想不到的方式对数据包分段 微小片段攻击 片段重叠 工具:fragroute,Fragrouter,应用层躲避,躲避IDS CGI: whisker( ) URL编码 /./目录插入 过早结束的URL 长URL 假参数 TAB分隔 大小写敏感 Windows分隔符() 空方法 会话拼接(在网络层分片),第03讲 网络攻击行为分析(二)技术篇,网络攻击阶段及工具,侦察,使用应用程序和操作系统的攻击获得访问权,在获得目标潜在的漏洞之后,攻击者将设法获得对目标系统的访问权 脚本小孩的攻击过程: 查找漏洞数据库 下载工具 发送攻击 真正的
20、攻击者:自己动手!,常用的攻击方法,基于堆栈的缓冲区溢出 密码猜测 网络应用程序攻击,基于堆栈的缓冲区溢出攻击,缓冲区,简单说来是一块连续的计算机内存区域, 可以保存相同数据类型的多个实例. C程序员通常和字缓冲区数组打交道.最常见的是字符数组. 数组, 与C语言中所有的变量一样, 可以被声明为静态或动态的. 静态变量在程序加载时定位于数据段. 动态变量在程序运行时定位于堆栈之中. 溢出, 说白了就是灌满, 使内容物超过顶端, 边缘, 或边界. 我们这里只关心动态缓冲区的溢出问题, 即基于堆栈的缓冲区溢出.,基于堆栈的缓冲区溢出攻击,什么是堆栈? 堆栈是一种数据结构,一个在计算机科学中经常使用
21、的抽象数据类型,用来存储计算机上运行进程的重要信息 堆栈的操作表现位LIFO:后进先出;最后一个放入堆栈中的物体总是被最先拿出来。 堆栈中定义了一些操作。两个最重要的是PUSH和POP。PUSH操作在堆栈的顶部加入一个元素。POP操作相反, 在堆栈顶部移去一个元素,并将堆栈的大小减一。 什么数据存储在堆栈中? 存放与函数调用有关的信息,进程内存布局,内存低端,内存高端,文本区 (包括程序代码和只读数据),(已初始化区) 数据区 (未初始化区),栈区,大小固定 对应可执行文件的文本区,大小可变 对应可执行文件的数据区,大小动态变化 临时存储区 典型操作为push,pop,基于堆栈的缓冲区溢出攻击
22、,为什么使用堆栈? 现代计算机被设计成能够理解人们头脑中的高级语言, 在使用高级语言构造程序时最重要的技术是过程(procedure)和函数(function)。从这一点来看,一个过程调用可以象跳转(jump)命令那样改变程序的控制流程, 但是与跳转不同的是,当工作完成时,函数把控制权返回给调用之后的语句或指令,这种高级抽象实现起来要靠堆栈的帮助。 堆栈也用于给函数中使用的局部变量动态分配空间, 同样给函数传递参数和函数返回值也要用到堆栈。,栈,内存低端,内存高端,填充方向,栈底是固定地址,栈顶指针(栈指针)SP,栈帧指针FP:指向栈的固定数据块,栈帧:包含函数的参数、局部变量以及恢复前一个栈
23、帧的数据信息(如指令指针的值),堆栈区域,堆栈是一块保存数据的连续内存。 一个名为堆栈指针(SP)的寄存器指向堆栈的顶部。堆栈的底部在一个固定的地址。 堆栈的大小在运行时由内核动态地调整。 CPU实现指令PUSH和POP, 向堆栈中添加元素和从中移去元素。 堆栈由逻辑堆栈帧组成。 当调用函数时逻辑堆栈帧被压入栈中, 当函数返回时逻辑堆栈帧被从栈中弹出。 堆栈帧包括函数的参数, 函数地局部变量, 以及恢复前一个堆栈帧所需要的数据, 其中包括在函数调用时指令指针(IP)的值。 堆栈既可以向下增长(向内存低地址)也可以向上增长, 这依赖于具体的实现。 在我们的例子中, 堆栈是向下增长的。 这是很多计
24、算机的实现方式, 包括Intel, Motorola,SPARC和MIPS处理器。,堆栈区域,堆栈指针(SP)也是依赖于具体实现的。 它可以指向堆栈的最后地址,或者指向堆栈之后的下一个空闲可用地址。 在我们的讨论当中, SP指向堆栈的最后地址。除了堆栈指针(SP指向堆栈顶部的的低地址)之外, 为了使用方便还有指向帧内固定地址的指针叫做帧指针(FP)。 从理论上来说, 局部变量可以用SP加偏移量来引用。 然而, 当有字被压栈和出栈后, 这些偏移量就变了。 尽管在某些情况下编译器能够跟踪栈中的字操作, 由此可以修正偏移量, 但是在某些情况下不能。 而且在所有情况下, 要引入可观的管理开销。 而且在
25、有些机器上, 比如Intel处理器, 由SP加偏移量访问一个变量需要多条指令才能实现。,堆栈区域,因此, 许多编译器使用第二个寄存器 FP, 对于局部变量和函数参数都可以引用,因为它们到FP的距离不会受到PUSH和POP操作的影响。 考虑到我们堆栈的增长方向, 从FP的位置开始计算, 函数参数的偏移量是正值, 而局部变量的偏移量是负值。 当一个例程被调用时所必须做的第一件事是保存前一个FP(这样当例程退出时就可以恢复)。 然后它把SP复制到FP, 创建新的FP, 把SP向前移动为局部变量保留空间。 这称为例程的序幕(prolog)工作。 当例程退出时, 堆栈必须被清除干净, 这称为例程的收尾(
26、epilog)工作。 Intel的ENTER和LEAVE指令, Motorola的LINK和UNLINK指令, 都可以用于有效地序幕和收尾工作。,栈例子(1),void function(int a, int b, in c)char buffer15;char buffer210;void main (int argc, char *argv)char large_string256;function(1, 2, 3);,程序从此开始执行,程序流程转到此函数,Main函数栈,Large_string (局部变量),保存的框架指针 (上一个FP),返回的指令指针,argv,内存低端,内存高端,
27、填充方向,argc,SP,Main函数的栈帧,首先,以从后往前的顺序将function的三个参数压入栈中:,Function函数被调用后,Large_string (局部变量),保存的框架指针 (上一个FP),返回的指令指针,argv,内存低端,内存高端,填充方向,argc,SP,Main函数的栈帧,c,b,a,返回的指令指针(RET),上一个FP(SFP) (main函数的FP),buffer1,buffer2,Function函数的栈帧,然后,调用function()。 指令call会把指令指针(IP)也压入栈中,将帧指针EBP压入栈中。然后把当前的SP复制到EBP,使其成为新的帧指针。接
28、下来将SP的值减小,为局部变量保留空间。,缓冲区溢出,缓冲区溢出是向一个缓冲区填充超过它处理能力的数据所造成的结果。如何利用这个经常出现的编程错误来执行任意代码呢? 让我们来看看另一个例子:,栈例子(2),void function(char *str)char buffer16;strcpy(buffer, str);void main ()char large_string256;int i;for(i=0; i256; i+)large_bufferi=Afunction(large_string);,程序从此开始执行,程序流程转到此函数,Function函数被调用后,i, large_
29、string (局部变量),保存的框架指针 (上一个FP),返回的指令指针,内存低端,内存高端,填充方向,SP,Main函数的栈帧,*str,返回的指令指针,上一个FP (main函数的FP),buffer,function函数的栈帧,这个程序的函数含有一个典型的内存缓冲区编码错误。 该函数没有进行边界检查就复制提供的字符串, 错误地使用了strcpy()而没有使用strncpy()。 如果你运行这个程序就会产生段错误。,这里发生了什么事?为什么我们得到一个段错误?,strcpy()将*str的内容(larger_string)复制到buffer里, 直到在字符串中碰到一个空字符。 显然,bu
30、ffer比*str小很多。 buffer只有16个字节长, 而我们却试图向里面填入256个字节的内容。 这意味着在buffer之后, 堆栈中250个字节全被覆盖。 包括SFP, RET, 甚至*str!我们已经把large_string全都填成了A。 A的十六进制值为0x41。 这意味着现在的返回地址是0x41414141。 这已经在进程的地址空间之外了。 当函数返回时, 程序试图读取返回地址的下一个指令, 此时我们就得到一个段错误。 因此缓冲区溢出允许我们更改函数的返回地址。这样我们就可以改变程序的执行流程。,strcpy函数被调用后,AAAA AAAA,AAAA,AAAA,内存低端,内存高
31、端,填充方向,SP,Main函数的栈帧?,AAAA,AAAA,AAAA,buffer,function函数的栈帧?,返回的指令指针,缓冲区溢出是黑客们喜欢利用的手段之一。绝大多数微软提供的补丁修复程序并未检查缓冲区问题,而应用程序的内部开发和商业应用软件一样,对缓冲区溢出攻击敏感。缓冲区溢出攻击就是利用了程序等待用户的输入的缺点。在基于堆栈的缓冲区溢出攻击中,被攻击者利用的程序使用一个名叫堆栈的内存对象来存储用户的输入。通常情况下,在程序没有用户输入以前,堆栈是空的。有用户输入时,程序先写入一个返回内存地址到堆栈,然后把用户的输入数据存储在返回地址的上方。当执行堆栈时,用户的输入数据就被传送到
32、程序指定的返回地址中。然而,堆栈的大小都是有限的。开发代码的程序员必须给堆栈保留一定数量的空间。如果用户的输入超出了在堆栈里为它预留空间的大小,那么堆栈会溢出。这本来不是一个很大的问题,但如果遇到恶意的输入时,它就变成了一个巨大的安全漏洞。,例如,假设某个程序正等待用户输入他或她的姓名。黑客可能会输入长度超过堆栈大小的可执行命令,而不是输入的自己的姓名。而这条命令通常很简短。例如,在Linux环境下,典型的如exec(“sh”)命令,它要求系统打开一个命令提示符窗口,使用Linux的人称它为root shell.。然而有可执行指令的缓冲区溢出并不意味着指令就会被执行。攻击者必须为恶意指令指定一
33、个返回地址。由于堆栈溢出,程序会部分崩溃。然后程序会试图通过指向返回地址进行恢复,但是返回地址已经被黑客改变为指向恶意指令。当然,这意味着黑客必须知道恶意指令将存储的地址。为了省去寻找精确地址的麻烦,攻击者可以通过对恶意指令的两头进行NOP指令(一种指针)填充。在不知道内存精确范围时,对堆栈两头进行填充是常见的技术。因此,如果黑客指定的地址中落在填充的范围之内,恶意命令将可能会被执行。,最后一部分是可执行程序的权限。如我们所知,大多现代化的操作系统都采用某种机制来控制当前登录用户的访问级别权限,而执行程序通常需要更高级别的权限。因此,这些程序以内核模式或以服务帐户继承权限模式运行。当堆栈溢出攻
34、击执行位于新的返回地址上的命令时,程序认为它仍然在运行。这意味着,命令提示符窗口同被攻击的应用程序一样具有相同的权限。通常,这意味着攻击者已经完全取得了操作系统的控制权。,缓冲区溢出攻击组成,发现缓冲区 测试(Try!) 字符串操作函数 Web搜索 编写shell代码:将要被执行的程序 编写exploit代码(植入代码):启动shell代码的程序,缓冲区溢出之后,一旦溢出并产生了一个命令外壳之后,攻击者采取的动作可能有: 使用inetd创建后门 使用tftp或netcat进行后门攻击 回击xterm,密码猜测攻击,猜测缺省密码 通过登录脚本猜测密码 密码破解 Windows:L0phtCrac
35、k unix:: John the Ripper 关键:如何获得密码文件?,网络应用程序攻击,收集帐号 不断输入错误帐号和口令 破坏web应用程序的会话跟踪 猜测会话ID,通过获取HTML页面修改后重放 修改cookies 如果会话ID不能手工修改? Web代理工具:Achilles SQL Piggybacking,网络攻击阶段及工具,攻击的阶段性,侦察,使用网络攻击获得访问权,网络攻击方式 嗅探嗅探是一种实现监听和协议分析的方式,工作在网络的底层,捕获所有网络数据包。 IP地址欺骗 会话劫持 多功能网络工具攻击:NetCat,嗅探,被动嗅探:通过集线器进行嗅探 主动嗅探:通过交换机进行嗅探
36、,被动嗅探,嗅探工具 Tcpdump, www.tcpdum.org Windump, netgroup-serv.polito.it/windump/ Snort, www.snort.org Ethereal, Dsniff, www.monkey.org/dugsong/dsniff/ SnifferPro,主动嗅探,被动嗅探仅对共享式网络有效,如何在交换式网络中进行嗅探呢?,集线器,交换机,主动嗅探(续),主动嗅探类型 泛洪对付交换机 用ARP欺骗信息对付交换机 嗅探和欺骗DNS 对HTTPS和SSH进行嗅探,主动嗅探(续),泛洪对付交换机(1),交换机,主动嗅探(续),泛洪对付交换
37、机(2),交换机,内存耗尽!,主动嗅探(续),用ARP欺骗信息对付交换机(ARPSpoof),交换机,外部网络,LAN的缺省路由,主动嗅探(续),用ARP欺骗信息对付交换机(ARPSpoof),交换机,外部网络,LAN的缺省路由,1.配置IP转发将数据包送到缺省路由器,2. 发送假的ARP回应,使受害者主机的ARP表中的条目被污染,将路由器的IP地址映射为攻击者的MAC地址,3. 受害者的数据实际发向了攻击者,4. 攻击者进行嗅探,5. 攻击者转发数据包,主动嗅探(续),嗅探和欺骗DNS,交换机,外部网络,LAN的缺省路由,1.攻击者启动DNS嗅探,2. 受害者发送DNS解析消息,3. 攻击者
38、截获DNS解析消息,4. 攻击者快速回送一个假的域名解析:202.115.26.222,5. 受害者发送的数据将送往外部攻击者,202.115.26.222,主动嗅探(续),对HTTPS和SSH进行嗅探,中间人,中间人攻击,主动嗅探,对HTTPS和SSH进行嗅探,交换机,外部网络,LAN的缺省路由,1.攻击者启动DNS嗅探,2. 受害者发送DNS解析消息,3. 攻击者截获DNS解析消息,4. 攻击者快速回送一个假的域名解析:10.0.0.55,5. 受害者发送的数据将送往攻击者,10.0.0.55,6. 攻击者转发SSL或SSH消息,提示用户,使用网络攻击获得访问权,IP地址欺骗 简单IP地址
39、欺骗 复杂IP地址欺骗 源路由欺骗,简单IP地址欺骗,IP: x,IP: y,伪造一个来自于IP地址为y的数据包,复杂IP地址欺骗,5. 使用猜测的序列号响应Bob,Eve,Alice,1. 打开到Bob的TCP连接以观察回应中使用的初始序列号,Bob,2. 对Alice发送拒绝服务攻击,使得Alice不能响应任何消息,3. 使用Alice的地址与Bob建立连接,4. Bob的响应被发送到Alice,使用源路由进行IP地址欺骗,Eve,Alice,Bob,3. Eve窃听数据,并修改后发送给Alice,1. 发送源路由数据包,其中从Bob到Alice的路径包括Eve,2. Bob发送到Alic
40、e的数据将经过Eve,使用网络攻击获得访问权,会话劫持,Eve,Alice,Bob,1. Alice Telnet Bob,2. Alice 与Bob之间的 Telnet 连接,3. Eve窃听并分析TCP序列号,4. Eve伪装Alice的IP地址发送数据包给Bob,会话劫持(续),工具: Dsniff IP Watcher: TTYWatcher: ftp.cerias.purdue.edu TTYSnoop: ,使用网络攻击获得访问权,多功能工具NetCat: http:/ 两种工作模式:客户模式和侦听模式,Netcat,Netcat主要功能: 文件传输 端口扫描 建立到开放端口的连接
41、创建被动的后门命令shell 主动地推动一个后门命令shell 流量中继,网络攻击阶段及工具,侦察,拒绝服务攻击,拒绝服务攻击分类,本地,网络,停止服务,消耗资源,Land攻击,发送假的数据包,它的源IP地址和端口号与目标主机相同。旧的TCP/IP协议栈对这种未知情况就会造成混乱,甚至崩溃。,Teardrop攻击,发送重叠的数据包碎片。在数据包头内碎片的长度被设置为不正确的值,所以主机对这些数据包碎片组装时就不能对其正确排队。一些TCP/IP协议栈收到这样的碎片就会崩溃。 还包括Newtear攻击, Bonk攻击,Syndrop攻击,SYN泛洪,发送大量的SYN包,无法接受正常的服务请求,连接
42、队列被填满,Smurf攻击,放大器,广播假的Ping,源地址采用Y,IP地址为y,Smurf攻击是以最初发动这种攻击的程序名“Smurf”来命名的。这种攻击方法结合使用了IP欺骗和ICMP回复方法使大量网络传输充斥目标系统,引起目标系统拒绝为正常系统进行服务。Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方崩溃。,DDoS,Master,Client,Zombie,网络攻击阶段及工具,侦察,维护访问权,
43、木马(Trojan Horse) Back Orifice 2000(BO2K): . 后门(Backdoor) RootKits:修改系统命令甚至内核 du find ls Ifconfig netstat ps,网络攻击阶段及工具,侦察,掩盖踪迹和隐藏,安装RootKits或者backdoor 修改事件日志 Windows: *.evt 工具:winzapper, ntsecurity.nu/toolbox/winzapper/ UNIX: utmp wtmp lastlog,掩盖踪迹和隐藏(续),利用秘密通道技术来隐藏证据 隧道技术 loki:ICMP隧道 Van Hauser:HTT
44、P 隧道 隐蔽通道(Covert Channel) 利用IP或者利用tcp头 IP identifier TCP Sequence number TCP ack number 工具: Covert_TCP,Case Study,Source Code DB,Case Study,Step 1:寻找跳离点,Case Study,Case Study,Step 2:搜速Monstrous Software,Case Study,Step 3:发送带病毒的、有吸引人的垃圾邮件,Source Code DB,Case Study,Step 3:发送带病毒的、有吸引人的垃圾邮件,Case Study,S
45、tep 4:下载病毒代码,Case Study,Step 5:木马后门利用VPN搜索windows共享,Case Study,Step 6:上传病毒代码,并替换为notepad等程序,Case Study,Step 7:回传口令信息,Case Study,Step 8:利用隐蔽信道传送命令和解密口令,Source Code DB,Case Study,Step 9:利用破解后的口令建立VPN连接,并扫描网络,Source Code DB,Monstrous Software,Case Study,Step 10:回传源代码,Source Code DB,Monstrous Software,源代码 Main () ,总结,反击黑客是一件极为困难的工作 网络攻击工具是一面双刃剑,开始任何攻击或探测之前,请注意你自己也将暴露在攻击目标或监管系统面前,并请遵守信息安全职业道德!周世杰,