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 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 B Z(X) —- SYN —-> B Z(X) —- SYN —-> B Z(X) —- SYN —-> B Z(X) —- SYN —-> B …… X 一路走来,我们无法猜测将是迎接什么样的风景,

IP欺骗与盗用原理

相关文章:

你感兴趣的文章:

标签云: