您当前的位置:首页 >> 综合 >  >> 
ip地址欺骗攻击的原理_IP地址欺骗与盗用原理|全球快资讯

时间:2023-02-08 19:50:47    来源:互联网

IP地址欺骗与盗用原理:

IP恶搞的技术很复杂,不是简单的画虎为猫就能掌握的。但作为一种常规的攻击手段,有必要了解其原理,至少有利于自身的安全。保管容易,保管难。


(资料图片仅供参考)

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

1.b发送一个带有SYN标志的数据段,通知a需要建立TCP连接。并将TCP报头中的序列号设置为该连接的初始值ISN。

2.a向B发回一个带有SYS ACK标志的数据段,通知自己的ISN,确认B发送的第一个数据段,并将确认号设置为B的ISN 1。

3.b确认接收到的A的数据段,并将确认号设置为A的ISN 1。

B - SYN - A

B - SYN ACK - A

B - ACK - A

TCP使用的序列号是一个32位计数器,范围从0-4294967295。TCP为每个连接选择

选择一个初始序列号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) {

错误(“无法创建套接字”);

}

if (bind(initsockid,) 0) {

错误(“绑定错误”);

}

if (listen(initsockid,5) 0) {

错误(“监听错误”);

}

for(;{

newsockid=acc ept(initsockid,);/*阻塞*/

if(new ockid 0){

错误(“接受错误”);

}

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

close(initsockid);

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

退出(0);

}

close(newsockid);

}

listen函数中的第二个参数是5,这意味着initsockid上允许的最大连接请求数。如果initsockid上的连接请求数在某个时候达到了5,那么到达initsockid的后续连接请求将被TCP丢弃。请注意,一旦通过三次握手建立了连接,并且accept调用已经处理了该连接,TCP连接请求队列将空出一个位置。所以这个5并不意味着initsockid上只能接受5个连接请求。SYN flood是一种拒绝服务,导致B的网络功能暂时中断。

发送若干带有SYN标志的数据段给Z B请求连接,注意把源的IP地址改成不存在的主机X;b向假想的X发送SYN ACK数据段,但是没有来自X的ACK出现。B的IP层会向B的TCP层报告X不可达,但是B的TCP层忽略了这一点,认为这只是暂时的。所以B不能再接这个initsockid了。

接收正常的连接请求。

Z(X) -同步B

Z(X) -同步B

Z(X) -同步B

Z(X) -同步B

Z(X) -同步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连接请求,但是可以在另一个initsockid上接收。这个SYN flood应该只针对特定的服务(端口),不应该影响全球。当然,如果你一直发送连接请求,和用ping发送flood包是一样的,会让B的TCP/IP忙处理负载增加。至于SYN flood,以后有机会我一个人来一勺DoS。让B的网络功能临时化的方法有很多,具体看具体情况,这里就不赘述了。

3.z必须确定A的当前ISN。首先连接25端口(SMTP没有安全检查机制),类似于1中的,但是这一次,你需要记录A的ISN和Z到A的大概RTT(往返时间),这个步骤重复几次,求平均RTT。现在Z知道了A的ISN基值及其递增规律(比如每秒递增128000,每次连接递增64000),也知道了RTT/2从Z到A所需的时间,你必须立即攻击,否则会有其他主机连接到A,ISN会比预期多64000。

4.z向A发送带SYN标志的段请求连接,但源IP改为b,注意是针对TCP端口513 (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只好捂着脑袋假冒B发送类似" cat ~/"的命令。rhosts "到一个根据rlogin协议标准,所以攻击完成。如果预测不准确,A会发送一个带有RST标志的数据段异常终止连接,Z就要重新开始。

Z(B) -顺式- 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必须准确预见到可能从A发送到B的信息,以及A期望从B得到什么样的响应信息,这就要求攻击者对协议本身相当熟悉。同时需要明白,这种攻击根本无法在交互状态下完成,必须通过编写程序来完成。当然,在准备阶段,我们可以使用netxray等工具对协议进行分析。

7.如果Z不是路由器,可以考虑结合ICMP重定向和ARP欺骗吗?没有仔细分析,只是胡乱猜测。并且与A、B、Z之间的具体网络拓扑结构密切相关,显然在某些情况下大大降低了攻击难度。注意,IP欺骗攻击理论上是从广域网发起的,并不局限于局域网,这也是这种攻击的魅力所在。利用IP欺骗攻击获取a上的外壳,对于很多高级入侵者来说,获取目标主机的外壳离root权限已经不远了。最容易想到的当然是下一个缓冲区溢出攻击。

8.也许有人会问,为什么Z不能直接把自己的IP设置成B的呢?这个问题很难回答。要详细分析网络拓扑,当然还有ARP冲突、网关故障等问题。然后IP欺骗攻击中是否存在ARP冲突。回想一下我之前贴的ARP欺骗攻击,如果B的ARP缓存不受影响,就不会有ARP冲突。如果Z在向A发送数据段时试图解析A的MAC地址或者路由器的MAC地址,必然会发送一个ARP请求包,但是这个ARP请求包中的源IP和源MAC都是Z,自然不会造成ARP冲突。ARP缓存只会被ARP包改变,不会被IP包影响,所以可以肯定的说,IP欺骗攻击过程中不存在ARP冲突。相反,如果Z修改了自己的IP,可能会发生这种ARP冲突,视情况而定。在攻击中,B被一起攻击,其目的无非是为了防止B干扰攻击过程。如果B本身已经走低,那就更好了。

9.fakeip曾经闹得沸沸扬扬。我扫描了它的端口,发现它的tcp端口113是连接到收入的。和IP欺骗没有直接关系,和安全检查有关。当然,这个东西顾名思义并没有对IP层做什么。

10.关于ISN的预测,我想到另一个问题。如何作为第三方切断A和B之间的TCP连接,其实就是一个预测序列号的问题。我试过了,很难。如果Z是A和B之间的路由器,不言而喻;或者z用其他技术监听a和b的通信,比较容易;不然预测太难了。作者提到了3中连接A的25端口,但我不明白的是513端口的ISN和25端口有什么关系?看来你需要看看TCP/IP内部实现的源代码。

阅读文章“IP地址欺骗与盗用原理”的人还会读到:

1.自动或手动IP地址设置图解教程

2.怎么查自己的ip地址?

3.如何快速找回变更后的IP地址?

4.子网掩码和ip地址有什么关系?

5.快速路由器获取IP地址的方法

6.查找路由器非默认IP地址的方法

7.教你轻松解决Win7系统经常取不到IP地址的问题。

8.如何为计算机设置ip地址

9.9的原因分析及解决方法。IP地址冲突

10.如何划分ip地址?

本文到此结束,希望对大家有所帮助。

读图

X 关闭

X 关闭