IP欺骗及防范.docx
《IP欺骗及防范.docx》由会员分享,可在线阅读,更多相关《IP欺骗及防范.docx(25页珍藏版)》请在冰豆网上搜索。
IP欺骗及防范
理工大学计算机与通信工程学院
《网络管理与安全》课程设计报告
IP欺骗的原理与防范
院系计算机与通信工程学院专业网络工程
班级网络1202班学号************
学生王胜指导教师吴佳英
课程成绩完成日期2015年9月6日
课程设计成绩评定
院系计算机与通信工程学院专业网络工程
班级网络1202班学号************
学生王胜指导教师吴佳英
指导教师对学生在课程设计中的评价
评分项目
优
良
中
及格
不及格
学习态度与遵守纪律情况
课程设计完成情况
课程设计报告的质量
指导教师成绩指导教师签字年月日
课程设计答辩组对学生在课程设计中的评价
评分项目
优
良
中
及格
不及格
课程设计完成情况
课程设计报告的质量
课程设计答辩
答辩组成绩答辩组长签字年月日
课程设计综合成绩
注:
课程设计综合成绩=指导教师成绩×60%+答辩组成绩×40%
课程设计任务书
计算机与通信工程学院网络工程专业
课程名称
网络管理与安全课程设计
时间
2015.8.31~2015.9.13
学生
王胜
指导老师
吴佳英
题目
IP欺骗的原理与防
主要容:
(1)IP欺骗技术的原理
(2)IP欺骗技术的特征以及攻击步骤
(3)IP欺骗工具
(4)防止和检测IP欺骗的方法
要求:
(1)综合运用计算机网络管理和信息安全知识XXX。
(2)学会文献检索的基本方法和综合运用文献的能力。
(3)通过课程设计培养严谨的科学态度,认真的工作作风和团队协作精神
应当提交的文件:
(1)课程设计报告。
(2)课程设计附件(源程序、各类图纸、实验数据、仿真截图等实证材料)。
IP欺骗原理与防
学生:
王胜指导老师:
吴佳英
摘要:
IP欺骗技术(IPSpoofing)起源较早,应用十分广泛。
但黑客可以利用IP欺骗技术截断正常的TCP通信,或者冒充被目标主机所信任的机器向其发起TCP连接。
文中介绍了IP欺骗技术的原理、方法以及常用工具,分析了在现有条件下解决这一问题的策略,并提出了建立高级模式匹配策略来进行入侵检测的方法,该方法可以有效地防御和检测IP欺骗攻击。
关键词:
IP欺骗攻击,入侵检测,模式匹配
IPdeceptionprincipleandPrevention
Studentname:
ShengWangTheteacher:
JiaYingWu
Abstract:
OriginofIPSpoofingtechnology(IPSpoofing)isearlier,whichhasbeenwidelyused.ButhackerscantakeadvantageofthetechnologyofIPspoofingtruncatednormalTCPcommunications,orpretendtobetrustedbythetargethostmachinetoinitiateaTCPconnection.Inthispaper,itintroducestheprincipleandmethodofIPspoofingtechnologyaswellasthecommontools,undertheexistingconditionsareanalyzedtosolvetheproblemofstrategy,andputforwardtheestablishingadvancedmodematchingstrategyforintrusiondetectionmethods,thismethodcaneffectivelydetectanddefenseIPspoofingattack.
Keywords:
IPspoofingattacks,intrusiondetectionandpatternmatching
1引言
TCP/IP协议是使接入Internet的异种网络,不同设备之间能够进行正常的数据通信,而预先制定的一整套共同遵守的格式和规定。
TCP/IP协议在网络互联中发挥了核心的作用,但由于它本身存在的安全问题,让黑客们有机可乘,利用其缺陷来对TCP/IP网络进行攻击。
这些攻击包括序列号欺骗、路由器攻击、源地址欺骗和授权欺骗等。
1.1课程设计容
1IP欺骗技术的原理
IP欺骗,简单来说就是向目标知己发送源地址为非本机IP地址的数据包。
IP欺骗在各种黑客攻击方法中都得到了广泛的应用,不如,进行拒绝服务攻击,伪造TCP,回话劫持,隐藏攻击主机地址等等。
IP欺骗的表现形式主要有连各种:
一种是攻击者伪造的IP地址不可达或者根本不存在。
这种形式的IP欺骗,主要用于迷惑目标主机上的入侵检测系统,或者是对目标主机进行DOS攻击,如图1所示:
图1伪造无实际意义的IP
另一种IP欺骗则着眼于目标主机和其他主机之间的信任关系。
攻击者通过在自己发出的IP包中填入被目标主机所信任的主机的IP来进行冒充。
一旦攻击者和目标主机之间建立了一条TCP(在目标主机看来,是它和它所信任的主机之间的。
事实上,它是把目标主机和被信任主机之间的双向TCP分解成了两个单向的TCP连接),攻击者就可以获得对目标主机的访问权,并可以进一步进行攻击,如图2所示。
图2攻击者伪装成被目标主机所信任的主机
以第二种情况为例,说明IP欺骗攻击的过程。
假设B和A进行TCP通信,则双方需要进行一个三次握手的过程来建立一个TCP连接。
具体过程为:
(1)B发送带有SYN标志的数据段通知A需要建立TCP连接,并将TCP报头中的序列号设置成自己本次连接的初始值ISNb。
(2)A回传给B一个带有SYS+ACK标志的数据段,告之自己的ISNa,并确认B发送来的第一个数据段,将ACK设置成B的ISN+1。
(3)B确认收到的A的数据段,将ACK设置成A的ISN+1。
A->B:
SYN,ISNa
B->A:
SYN,ISNb,ACK(ISNa+1)
A->B:
ACK(ISNb+1)
TCP使用的数据包序列号是一个32位的计数器,计数围为0-4294967295。
TCP为每一个连接选择一个初始序列号ISN(InitialSequenceNumber),为了防止因为延迟、重传等事件对三次握手过程的干扰,ISN不能随便选取,不同系统有不同算法。
对于IP欺骗攻击来说,最重要的就是理解TCP如何分配ISN,以及ISN随时间变化的规律。
在文献[5]中规定这一32位的序列号之值每隔4ms加1在BerkeleyUNIX中,初始序列号是由tcpinit()函数确定的。
ISN值每秒增加128000,如果有连接出现,每次连接将把计数器的数值增加64000,这使得用于表示ISN的32位计数器在没有连接的情况下,每9.32h复位一次。
这样,将有利于最大限度地减少旧有连接的信息干扰当前连接的机会。
非常重要的一点就是对ISN的选择算法。
事实上,由于ISN的选择不是随机的,而是有规律可循的,这就为黑客欺骗目标系统创造了条件。
很多进行IP欺骗的黑客软件也主要着眼于计算ISN和伪造数据包这两个方面。
由于IP欺骗技术是针对协议本身的缺陷来实现,所以其影响围也十分广泛。
容易遭受IP欺骗攻击的服务程序主要有:
·远程过程调用(RPC)。
·任何使用IP地址进行认证的服务。
·XWindow系统。
·R服务套件(包括rlogin,rsh等)。
2IP欺骗技术的特征以及攻击步骤
对于图1中所描述的IP欺骗攻击,其攻击步骤十分简单,攻击的效果也十分有限,主要用于拒绝服务攻击,对目标系统本身不会造成破坏。
而第二种IP欺骗则能够侵入目标主机并造成严重破坏。
本文主要分析第二种IP欺骗攻击。
整个攻击过程由若干步骤组成:
1)首先使被信任主机的网络暂时瘫痪,以免对攻击造成干扰;
2)然后连接到目标机的某个端口来猜测ISN基值和增加规律;
3)接下来把源址址伪装成被信任主机,发送带有SYN标志的数据段请求连接;
4)然后等待目标机发送SYN+ACK包给已经瘫痪的主机;
5)最后再次伪装成被信任主机向目标机发送的ACK,此时发送的数据段带有预测的目标机的ISN+1;
6)连接建立,发送命令请求。
还有一个重要的数据就是目标主机和被信任主机之间的往返时间(RTT),利用这些数据猜测出目标主机在响应攻击者TCP请求(包含信任主机的IP地址)时所给出的ISN,并在响应数据包的ACK中填入适当的值以欺骗目标主机,并最终和目标主机实现同步,建立可靠的会话(单向)。
3IP欺骗工具
常见的IP欺骗工具有如下几种[6]:
(1)Mendax:
Mendax是一种非常容易使用的TCP序列号预测以及rshd欺骗工具。
(2)Hping2:
Hping2是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令。
(3)IPSpoof:
IP地址欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。
(4)Hunt:
Hunt是一个网络嗅探器,但它也同时提供很多欺骗功能。
(5)Dsniff:
Dsniff是一个网络审计及攻击工具集。
其中的arpspoof,dnsspoof,以及macof工具可以在网络中拦截普通攻击者通常无法获得的数据,并对这些数据进行修改,从而达到欺骗以及劫持会话的目的。
(6)ISNPrint:
一个用于查看目标主机当前连接的ISN的工具,但是它并不提供ISN预测功能。
可以在它的基础上添加适当的算法得到ISN的估计值。
4防止和检测IP欺骗的方法
IP欺骗攻击虽然在原理上讲得通,但实际操作起来却非常困难,例如确定信任关系、猜测序列号等等。
然而,要成功实现IP欺骗攻击并不是没有可能。
著名黑客凯文·米特尼克就曾经成功地运用IP欺骗攻击攻破了SanDiego超级计算中心的一台主机。
并且,这一共计过程被一位名叫TsutomuShi-momura的工程师tcpdump完全记录了下来。
通过对这一记录的分析,可以看出整个攻击的步骤主要分为:
(1)发现信任关系。
(2)使被信任主机丧失正常工作能力。
(3)伪造TCP包,猜测序列号。
(4)建立连接,获取目标主机权限。
(5)提升权限,控制目标主机。
既然通过对tcpdump的记录进行分析,可以分析出整个攻击的过程,那么,通过对本地网络、防火墙以及入侵检测系统进行适当的设计和配置,就能够阻止或检测出相应的攻击行为。
首先可以采取配置边界路由器的方法,即禁止从外网进入却申明自己具有部网络IP地址的数据包通过路由器(图3)。
这样,从外部进行IP欺骗攻击所发出的数据包就会被路由器过滤掉,从而保证目标主机的安全。
但是这种方法也有缺陷:
首先,如果系统要向外部主机提供信任关系,则对路由器的配置就会失去作用;其次,如果欺骗入侵是源于网络部的话,配置路由器根本无济于事。
图3通过配置边界路由器减少IP欺骗攻击
通过在路由器上设置过滤只能减小IP欺骗攻击发生的可能性,而并不能从根本上解决问题。
其它减少IP欺骗攻击的方法主要包括:
(1)尽量不采用使用源地址认证的服务系统,实现基于密码的认证。
(2)如果一定要允许外部的主机进行信任连接,要在路由器上实现加密的通路。
(3)通过改变TCP/IP栈的实现来防止SYN堙没的发生。
比如说从linux2.0,3.0以后版本的核中,当队列将满时,它不再回送一个SYNACK,而是回送一个SYNcookie,同时清空队列中的SYN。
当收到了对SYNcookie的回应是,才发送SYNACK。
这样一来,当发生攻击时,队列永远不会被填满。
但是目的分布式拒绝服务攻击等新型攻击方式,要彻底解决类似缓冲区溢出,队列填满以及堙没等问题,在系统处理能力有限的情况下,还是无能为力的。
对于IP欺骗攻击,最终的解决办法是密码认证机制(cryptographicauthentication)。
由于目前的IPV4体系结构并不支持基于密码的认证,所以只能采取某些预防和检测的方法。
在无法从根本上阻止IP欺骗攻击发生的情况下,应当加强对网络的监控,今早检测到IP欺骗攻击。
目前,主要采取如下几个方法:
(1)监测网络上的数据包。
通过对网络上的数据包进行监控,及时发现IP欺骗攻击的前兆,比如说对信任主机的SYN湮没以及在目标主机上有大量连接处于“SYN
RECEIVED”状态等。
(2)对照检查本地主机之间的日志是否对应。
由于大部分IP欺骗攻击是由攻击主机来模拟信任主机,所以通过在相互设置信任关系的主机之间,对照检查日志就可以发现TCP连接是否被伪造。
(3)IP欺骗的攻击目标是目标主机,但是信任主机在这一攻击中也起着相当重要的作用。
从信任主机来说,如果它能够阻止SYN湮没的情况发生,就会向目标主机发回响应的消息,从而阻止黑客的攻击。
同时,通过提高入侵检测系统的智能化水平,也可以发现一些潜在的攻击威胁。
比如,通过对IP欺骗攻击步骤的分析,为入侵检测系统建立了一个较高级别的匹配模式,并在局域网上进行了试验。
这种模式不同于包过滤防火墙中的数据包模式匹配,而是对大量数据包之间的关系进行分析,发现其中潜在的隐患。
由于黑客的攻击是环环相扣的,其中的每一个小的步骤看似平常,但连贯起来看则都是有目的的。
对于入侵检测系统,如果还把检测停留在对单个数据包进行检查的水平,就无法发现一些高层次的入侵。
采用高级匹配模式后,入侵检测系统可以对大量数据包之间的潜在联系进行分析,并将结果与已知的一些攻击模式进行匹配,极提高了检测到这些入侵的可能性。
今后,作者将对匹配模式的描述以及匹配算法做进一步的分析和优化,提高其效率和可用性。
从防的角度来说,由于从IPV4到IPV6的过渡还需要很长的一段时间,所以采用IP安全协议成为目前的主要方法之一。
最早在互联网上出现的加密协议是用于电子的SMME和OpenPGP。
Net是cape在很早也就是发明了SSL。
一些较新的协议有:
Microsoft的PPTP,L2TP以及IPsec等,目前这些协议主要被用来实现虚拟专用网(VPN)。
其实,IP安全协议能做到的事情远比虚拟专用网要多,它有潜力来保护互联网上太多数业务的安全。
1.2实验方法
1.实验工具
Hping2软件,装有linux操作系统的电脑。
2.实验环境
安装Linux操作系统RedHat9.0的一台PC机以及与其联网的两台PC机。
3.实验方法
本实验专用应用Hping方法在linux环境下测试三台电脑的连通性,和IP欺骗。
2设计原理
2.1Hping2原理基础介绍
Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UDP、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之间传送文件。
Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOsX,Windows。
2.2Hping2主要功能
(1)防火墙测试
(2)实用的端口扫描
(3)网络检测,可以用不同的协议、服务类型(TOS)、IP分片
(4)手工探测MTU(最大传输单元)路径
(5)先进的路由跟踪,支持所有的协议
(5)远程操作系统探测
(6)远程的运行时间探测
(7)TCP/IP堆栈审计
3设计步骤
3.1实验过程
此部分讲述实验过程,并配截图。
步骤一丶在Linux 环境下下载和安装Hping2
(1)根据平台差异,下载相应的Hping安装包。
下载地址:
.hping.org/hping2.0.0-rc3.tar.gz.Hping2有相应的hping2.0.0-rc1,hping2.0.0-rc1,hping2.0.0-rc3版本。
(2)下载hping2.0.0-rc3到/user/local/sans目录中,cp hping2.0.0-rc3.tar.gz/user/local/sanscd/user/local/sans进行解压缩:
tar-zxvfShping2.0.0-rc3.tar.gz;
(3)修改配置脚本 vi config,主要是man path变量 在config文件中找到”INSTALL_MANPATH=”语句,如下图(图4):
图3.1配置脚本
将加亮处修改为INSTALL_MANPACH=`manpath | cut -f1 –d:
`
图3.2修改后的配置
键入Esc退出编辑,输入wq!
保存修改。
(4) 输入./configure
图3.3输入./configure
(5)输入make,进行编译。
图3.4输入make编译
(6) 编译完成之后,安装hping2。
输入make install。
图3.5输入makeinstall编译
步骤二丶在Linux 环境下使用Hping2
以局域网某一主机作为测试对象,验证hping2的运行:
其中目标主机的IP 地址为192.168.0.50。
(1) 不带参数的测试:
hping2 192.168.0.50
使用Hping2 时,如果只指定目标主机而不设置任何参数,Hping2 会每秒钟都向目标主机发送一个不设置任何标志且目标端口为0 的数据包(只有20Byte 的IP 头和20Byte 的TCP头,没有有效载荷数据),以测试目标主机的反应。
如下图:
图3.6目标主机的反应
目标主机返回的数据包中R和A置位,即该主机对询问做出Reset + ACK 应答数据包,虽然该端口没有开放,但至少可以确定目标主机是激活的。
(2) 带参数的测试:
hping2 192.168.0.50 –S –p 22
向目标主机的22号端口发出SYN请求,以测试目标主机的反应。
如下图:
图3.7测试完成图
目标主机返回的数据包中的S和A置位,即该主机对询问做出了应答,为三次握手的第二个步骤,说明该端口是开放的。
(3) 伪装源IP地址的hping2测试:
hping2 192.168.0.50 –a 192.168.0.11 -S
-a 是指—spoof,即进行“源地址欺骗”。
因此上述测试语句的含义为:
将原地址伪装成192.168.0.11向目标主机的0号端口发出SYN测试数据包。
而此时本地主机并没有接收到任何应答的数据包,因为192.168.0.50主机只对192.168.0.11号主机做出应答。
目标主机的测试反应,如下图:
图3.8测试完成
经过测试,hping2已经正常工作,则可以进行IP欺骗实验。
步骤三丶IP地址欺骗扫描的地址隐藏
首先对于IP地址欺骗扫描的过程做出解释,如下图:
图3.9IP地址欺骗扫描的地址隐藏
在这种IP欺骗方式的端口扫描过程中,涉及到3个主机,假定:
1.主机A:
扫描者自己的主机
2. 主机B:
扫描者需要借助的第三方主机,假定该主机在扫描过程中不向外发送任何数据包
3. 主机C:
被扫描的目标主机 其过程为:
(1)主机A向主机C的某个TCP 端口发送一个SYN 包,并将源地址写为主机B。
如果端口是打开的,则主机C就会返回给主机B一个SYN+ACK 包;否则,主机C将返回一个RST+ACK 包。
(2)主机A通过主机B通信中IP 头中的ID 域,应该知道主机B正在发送的数据包的编号。
(3)根据TCP/IP的相关规定,主机B对于主机C发送到某端口的SYN+ACK 包,应该返回一个RST;而对于发来的RST 包,则应该没有反应。
(4)在一般情况下IP 数据部ID 域的值,每次增量为1(即每发送一个IP 包,ID域的值增加1)。
本质上,这还是一种SYN扫描的方式。
实验中,分为主机B无网络通信和主机B有网络通信两种情况来测试。
通过步骤二的测试表明:
实验所在局域网中IP地址为192.168.0.50的主机的0号端口是关闭的,22号端口是开放的。
因此在步骤三中,将其作为被扫描的目标主机,即主机C。
同时对局域网中IP地址为192.168.0.11的主机进行不带参数的Null扫描,测试结果如下:
图3.10对主机192.168.0.11测试
说明192.168.0.11可以作为步骤三中的第三方主机,即主机B。
1.被利用主机无网络通信
(1) 切断192.168.0.11的网络通信。
在本机对192.168.0.11的扫描数据可以看到ID域的值比较零乱,难以找到规律。
此时,以人工方式中断192.168.0.11的网络通信,即关闭其所有的网络活动,然后再对其进行不带参数的Null扫描,结果如下
图3.11对主机进行不带参数NULL扫描
可以看出Id序列号是以增量为1增加的。
(2) 扫描关闭状态的端口情况。
对C 主机的0号端口进行扫描,操作者发送的数据包中源IP 地址填上B 机的IP 地址(即192.168.0.11),这样,C 主机(192.168.0.50)返回的数据包应该到B 主机(192.168.0.11)。
因为C主机上被扫描的0号端口没有监听(打开),C主机会向B主机发送RST+ACK包,而B主机对这样的数据包是不反应的,所以,操作者看到B主机发到A主机上的IP中的ID域增量还是1。
结果如下:
图3.12B主机的ID域
(3) 扫描listenning状态的端口情况。
接下来对C主机192.168.0.50的20号端口进行扫描,因为被扫描的端口是正在监听的,C 主机就会向B 主机192.168.0.11发送SYN+ACK 包(试图完成一次完整的TCP 连接),这时候,B 主机会向C 主机返回RST+ACK(因为此前B 并未向C发送过SYN 请求),同时,B主机还需要向一直给它发Null 包的A 主机返回
RST+ACK,由于C 的介入,A 主机上看到的B 主机IP 中的ID 域增量将不再是1,因此,A 主机可以断定,正在扫描的C 主机上的端口是打开的。
图3.13A主机的ID域
(4) 以上是理想的讨论,但是在测试中,还出现了B主机的ID增量与A发送给C的测
试数据包不匹配的情况。
如(3)中显示的测试结果,其实A主机只向C发送了一个SYN请求包,但出现了两次增量为2的情况。
通过Ethereal,发现交换机需要定时向交换局域网的所有主机发送广播数据包,以维护和更新部表项。
故仅凭借B的ID值的单个增量是不够准确的。
如下图:
图3.14B主机的接收数据包
上图中加框的两个数据包就是交换机发出的广播数据包,对于单个的测试包可能会有影