`

IP欺骗与盗用原理

阅读更多

 

IP欺骗与盗用原理

 

IP欺骗的技术比较复杂,不是简单地照猫画老虎就能掌握,但作为常规攻击手段,有必要理解其原理,至少有利于自己的安全防范,易守难攻嘛。

假设B上的客户运行rlogin与A上的rlogind通信:

1. B发送带有SYN标志的数据段通知A需要建立TCP连接。并将TCP报头中的sequence number设置成自己本次连接的初始值ISN。

2. A回传给B一个带有SYS+ACK标志的数据段,告之自己的ISN,并确认B发送来的第一个数据段,将acknowledge number设置成B的ISN+1。

3. B确认收到的A的数据段,将acknowledge number设置成A的ISN+1。

B ---- SYN  ----> A

B <---- SYN+ACK ---- A

B ---- ACK  ----> A

TCP使用的sequence number是一个32位的计数器,从0-4294967295。 TCP为每一个连接选择一个初始序号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同系统有不同算法。理解TCP如何分配ISN以及ISN随时间变化的规律,对于成功地进行IP欺骗攻击很重要。

基于远程过程调用RPC的命令,比如rlogin、rcp、rsh等等,根据/etc/hosts.equiv以及$HOME/.rhosts文件进行安全校验,其实质是仅仅根据信源IP地址进行用户身份确认,以便允许或拒绝用户RPC。

IP欺骗攻击的描述:

1. 假设Z企图攻击A,而A信任B,所谓信任指/etc/hosts.equiv和$HOME/.rhosts中有相关设置。注意,如何才能知道A信任B呢?没有什么确切的办法。我的建议就是平时注意搜集蛛丝马迹,厚积薄发。一次成功的攻击其实主要不是因为技术上的高明,而是因为信息搜集的广泛翔实。动用了自以为很有成就感的技术,却不比人家酒桌上的巧妙提问,攻击只以成功为终极目标,不在乎手段。

2. 假设Z已经知道了被信任的B,应该想办法使B的网络功能暂时瘫痪,以免对攻击造成干扰。著名的SYN flood常常是一次IP欺骗攻击的前奏。请看一个并发服务器的框架:

int initsockid, newsockid;

if ((initsockid = socket(.)) < 0) {

error("can't create socket");

}

if (bind(initsockid, .) < 0) {

error("bind error");

}

if (listen(initsockid, 5) < 0) {

error("listen error");

}

for (;{

newsockid = accept(initsockid, .); /* 阻塞 */

if (newsockid < 0) {

error("accept error");

}

if (fork() == 0) { /* 子进程 */

close(initsockid);

do(newsockid); /* 处理客户方请求 */

exit(0);

}

close(newsockid);

}

listen函数中第二个参数是5,意思是在initsockid上允许的最大连接请求数目。如果某个时刻initsockid上的连接请求数目已经达到5,后续到达initsockid的连接请求将被TCP丢弃。注意一旦连接通过三次握手建立完成,accept调用已经处理这个连接,则TCP连接请求队列空出一个位置。所以这个5不是指initsockid上只能接受5个连接请求。SYN flood正是一种 Denial of Service,导致B的网络功能暂时中断

Z向B发送多个带有SYN标志的数据段请求连接,注意将信源IP 地址换成一个不存在的主机X;B向子虚乌有的X发送SYN+ACK数据段,但没有任何来自X的ACK出现。B的IP层会报告B的TCP层,X不可达,但B的TCP层对此不予理睬,认为只是暂时的。于是B在这个initsockid上再也不能接收正常的连接请求。

Z(X) ---- SYN ----> B

Z(X) ---- SYN ----> B

Z(X) ---- SYN ----> B

Z(X) ---- SYN ----> B

Z(X) ---- SYN ----> B

 

X <---- SYN+ACK ---- B

X <---- SYN+ACK ---- B

X <---- SYN+ACK ---- B

X <---- SYN+ACK ---- B

X <---- SYN+ACK ---- B

 

我认为这样就使得B网络功能暂时瘫痪,可我总觉得好象不对头。

因为B虽然在initsockid上无法接收TCP连接请求,但可以在another initsockid上接收,这种SYN flood应该只对特定的服务(端口),不应该影响到全局。当然如果不断地发送连接请求,就和用ping发洪水包一个道理,使得B的TCP/IP忙于处理负载增大。至于SYN flood,回头有机会我单独灌一瓢有关DoS的。如何使B的网络功能暂 碧被居 很多办法,根据具体情况而定,不再赘述。

3. Z必须确定A当前的ISN。首先连向25端口(SMTP是没有安全校验机制的),与1中类似,不过这次需要记录A的ISN,以及Z到A的大致的RTT(round trip time)。这个步骤要重复多次以便求出RTT的平均值。现在Z知道了A的ISN基值和增加规律(比如每秒增加128000,每次连接增加64000),也知道了从Z到A需要RTT/2 的时间。必须立即进入攻击,否则在这之间有其他主机与A连接, ISN将比预料的多出64000。

4. Z向A发送带有SYN标志的数据段请求连接,只是信源IP改成了B,注意是针对TCP513端口(rlogin)。A向B回送SYN+ACK数据段,B已经无法响应,B的TCP层只是简单地丢弃A的回送数据段。

5. Z暂停一小会儿,让A有足够时间发送SYN+ACK,因为Z看不到这个包。然后Z再次伪装成B向A发送ACK,此时发送的数据段带有Z预测的A的ISN+1。如果预测准确,连接建立,数据传送开始。问题在于即使连接建立,A仍然会向B发送数据,而不是Z,Z 仍然无法看到A发往B的数据段,Z必须蒙着头按照rlogin协议标准假冒B向A发送类似 "cat + + >> ~/.rhosts" 这样的命令,于是攻击完成。如果预测不准确,A将发送一个带有RST标志的数据段异常终止连接,Z只有从头再来。

Z(B) ---- SYN  ----> A

B <---- SYN+ACK ---- A

Z(B) ---- ACK  ----> A

Z(B) ---- PSH  ----> A

 

6. IP欺骗攻击利用了RPC服务器仅仅依赖于信源IP地址进行安全校验的特性,建议阅读rlogind的源代码。攻击最困难的地方在于预测A的ISN。我认为攻击难度虽然大,但成功的可能性也很大,不是很理解,似乎有点矛盾。考虑这种情况,入侵者控制了一台由A到B之间的路由器,假设Z就是这台路由器,那么A回送到B的数据段,现在Z是可以看到的,显然攻击难度骤然下降了许多。否则Z必须精确地预见可能从A发往B的信息,以及A期待来自B的什么应答信息,这要求攻击者对协议本身相当熟悉。同时需要明白,这种攻击根本不可能在交互状态下完成,必须写程序完成。当然在准备阶段可以用netxray之类的工具进行协议分析。

7. 如果Z不是路由器,能否考虑组合使用ICMP重定向以及ARP欺骗等技术?没有仔细分析过,只是随便猜测而已。并且与A、B、

Z之间具体的网络拓扑有密切关系,在某些情况下显然大幅度降低了攻击难度。注意IP欺骗攻击理论上是从广域网上发起的,不局限于局域网,这也正是这种攻击的魅力所在。利用IP欺骗攻击得到一个A上的shell,对于许多高级入侵者,得到目标主机的shell,离root权限就不远了,最容易想到的当然是接下来进行buffer overflow攻击。

8. 也许有人要问,为什么Z不能直接把自己的IP设置成B的?这个问题很不好回答,要具体分析网络拓扑,当然也存在ARP冲突、出不了网关等问题。那么在IP欺骗攻击过程中是否存在ARP冲突问题。回想我前面贴过的ARP欺骗攻击,如果B的ARP Cache没有受到影响,就不会出现ARP冲突。如果Z向A发送数据段时,企图解析A的MAC地址或者路由器的MAC地址,必然会发送ARP请求包,但这个ARP请求包中源IP以及源MAC都是Z的,自然不会引起ARP冲突。而ARP Cache只会被ARP包改变,不受IP包的影响,所以可以肯定地说,IP欺骗攻击过程中不存在ARP冲突。相反,如果Z修改了自己的IP,这种ARP冲突就有可能出现,示具体情况而言。攻击中连带B一起攻击了,其目的无非是防止B干扰了攻击过程,如果B本身已经down掉,那是再好不过。

9. fakeip曾经沸沸扬扬了一下,我对之进行端口扫描,发现其tcp端口113是接收入连接的。和IP欺骗等没有直接联系,和安全校验是有关系的。当然,这个东西并不如其名所暗示,对IP层没有任何动作。

10. 关于预测ISN,我想到另一个问题。就是如何以第三方身份切断 A与B之间的TCP连接,实际上也是预测sequence number的问题。尝试过,也很困难。如果Z是A与B之间的路由器,就不用说了; 或者Z动用了别的技术可以监听到A与B之间的通信,也容易些;否则预测太难。作者在3中提到连接A的25端口,可我想不明白的 是513端口的ISN和25端口有什么关系?看来需要看看TCP/IP内部实现的源代码。

未雨绸缪

虽然IP欺骗攻击有着相当难度,但我们应该清醒地意识到,这种攻击非常广泛,入侵往往由这里开始。预防这种攻击还是比较容易的,比如删除所有的/etc/hosts.equiv、$HOME/.rhosts文件,修改/etc/ inetd.conf文件,使得RPC机制无法运做,还可以杀掉portmapper等等。设置路由器,过滤来自外部而信源地址却是内部IP的报文。cisio公司的产品就有这种功能。不过路由器只防得了外部入侵,内部入侵呢?

TCP的ISN选择不是随机的,增加也不是随机的,这使攻击者有规可循,可以修改与ISN相关的代码,选择好的算法,使得攻击者难以找到规律。估计Linux下容易做到,那solaris、irix、hp-unix还有aix呢?sigh

虽然写的不怎么,但总算让大家了解了一下IP欺骗攻击,我实验过预测sequence number,不是ISN,企图切断一个TCP连接,感觉难度很大。作者建议要找到规律,不要盲目预测,这需要时间和耐心。现在越发明白什么是那种锲而不舍永远追求的精神,我们所向往的传奇故事背后有着如此沉默的艰辛和毅力,但愿我们学会的是这个,而不是浮华与喧嚣。一个现成的bug足以让你取得root权限,可你在做什么,你是否明白?我们太肤浅了

 

分享到:
评论

相关推荐

    ARP欺骗的原理及解决方法

    这种方法可以有效防止ARP欺骗和IP地址盗用。 - 例如,在H3C交换机上配置静态ARP表的命令如下: ```bash sys arp static 192.168.1.1 00-0F-E2-7F-22-58 ``` 3. **使用ARP防火墙**:安装ARP防火墙软件,可以...

    开启Cisco交换机IPSourceGuard功能[收集].pdf

    3. **动态修改IP地址**:高级的攻击手段可能涉及动态修改IP地址或IP-MAC对,绕过上层网络软件,实现IP欺骗。 **IP Source Guard技术** **工作原理**: IP Source Guard通过建立IP源绑定表(IP Source Binding ...

    防ARP欺骗.doc

    3. **MAC地址盗用+IP/MAC绑定**:将自身的MAC地址设置为与攻击者相同的MAC地址,并在客户端绑定路由器的MAC地址,以此对抗ARP欺骗。 4. **使用专用工具**:如LookNStop防火墙等专业软件,可以有效地防止ARP欺骗的...

    Juniper EX MAC-IP绑定方案

    在Juniper EX系列交换机中,MAC-IP绑定功能能够有效地防止MAC地址欺骗和IP地址盗用,提高网络的安全性。本文将详细介绍Juniper EX系列交换机实现MAC-IP绑定的方案。 首先,理解MAC-IP绑定的基本原理至关重要。MAC...

    IP source grard

    IP Source Guard 是一种网络安全技术,主要用于防止 IP 欺骗和非法访问,它确保只有授权的设备能够使用特定的 IP 地址进行通信。在TCP/IP网络协议栈中,IP Source Guard 提供了一种增强安全性的方法,尤其适用于防范...

    计算机网络的论文 大家学习

    其中,网络安全成为关注焦点,IP盗用或地址欺骗被视为严重威胁。为应对这一挑战,MAC-IP地址绑定作为一种有效措施被广泛采用,旨在防止局域网内的IP盗用。 #### MAC-IP地址绑定的基本原理及软件实现 ##### ARP协议...

    局域网被限参照.pdf

    - **IP/MAC地址盗用**:模仿控制者的IP和MAC,但这可能导致IP冲突,需要技巧来避免冲突,并在PC上绑定路由器的MAC地址来抵御欺骗。 4. XP系统对策: - 使用`arp -s`命令绑定自己的IP和MAC,以及路由器的IP和MAC,...

    MAC地址查询扫描器

    5. **IP-MAC绑定**:在某些安全策略中,IP地址和MAC地址会被绑定,防止IP地址盗用。扫描器可以帮助验证这种绑定是否有效,以及是否有设备尝试绕过绑定规则。 6. **网络安全**:通过识别网络中的所有设备及其MAC地址...

    switch security.rar

    源保护特性可防止非法设备盗用合法设备的IP接入网络,只能用于二层端口 需要用到IP绑定表,有两种方式获得绑定条目: 1、静态绑定IP源地址 2、使用DHCP snooping技术中动态生成的源IP绑定表 原理:一旦在一个...

    基于VLAN技术的网络安全性分析

    通过部署VLAN,可以限制某个VLAN内的所有设备只能使用分配给该VLAN的IP地址段,从而有效防止IP地址盗用现象的发生。 **3. 提高网络的整体安全性** VLAN可以实现逻辑隔离,使得不同VLAN之间的通信需要通过路由器...

    Cisco交换机试验手册2

    4. **MAC与IP绑定**:实验20关注的是交换机MAC与IP的绑定,这是一项重要的网络安全措施,可以防止IP地址盗用,确保网络资源的正确分配。通过静态绑定,交换机可以精确控制哪些MAC地址能够使用特定的IP地址,从而避免...

    具体步骤截图说明1

    \n- IP地址欺骗攻击:通过改变IP源地址,冒充其他设备进行通信。\n- ARP欺骗攻击:攻击者篡改ARP缓存,误导数据包流向,实现中间人攻击。\n- ICMP欺骗:利用ICMP协议进行攻击,如Smurf攻击。\n- TCP RST和SYN洪范...

    20秋学期(1909、2003、2009-)《计算机网络管理》在线作业-(1).docx

    选项A和B描述了ARP的基本工作方式,而C选项是错误的,因为设置MAC地址绑定和划分VLAN可以防止ARP欺骗,但不能防止IP地址盗用。D选项则介绍了防御ARP病毒和攻击的方法。 3. **客户机/服务器模式**:这种模式下,...

    ARP 攻击监控软件

    ARP的工作原理是将IP地址与MAC物理地址进行绑定,当网络设备需要发送数据时,通过ARP查询找到目标设备的MAC地址。在ARP攻击中,攻击者会伪造ARP响应,误导其他设备将数据包发送到攻击者的设备上,而不是真正的目标,...

    物理地址MAC地址修改器

    1. **MAC地址绑定**:一些网络管理员会使用MAC地址绑定技术,将IP地址与特定的MAC地址关联,以防止IP地址盗用或未经授权的设备接入网络。在这种情况下,若想更改网络连接的设备,可能需要修改MAC地址。 2. **虚拟化...

    mac地址修改

    7. **MAC地址绑定**:在一些网络管理策略中,网络管理员会将IP地址与特定的MAC地址绑定,以防止IP盗用。在这种情况下,若需更换设备或更改MAC地址,可能需要先解除绑定或者通知管理员。 8. **安全注意事项**:随意...

    [其他类别]PHP防图片盗链程序_script.zip

    1. 防止Referer欺骗:由于Referer可以被篡改,因此仅依赖Referer可能存在风险。可以结合IP地址、User-Agent等信息进行综合判断。 2. 使用Access-Control-Allow-Origin:针对现代浏览器,可以通过设置CORS策略限制...

    php下通过伪造http头破解防盗链的代码

    防盗链是网站为了保护自己的资源不被盗用,采取的一系列技术手段。通过这种技术,网站可以防止自己的内容被其他网站随意引用或下载。通常,防盗链会检查请求来源,如果发现不符合要求,则拒绝服务。 ### 知识点二:...

Global site tag (gtag.js) - Google Analytics