三个多月没更新博客,期间也有在学习和总结一些东西,只是或多或少都涉及到公司相关的信息(业务,JVM,WebServer)所以不便写出来,有时候写到一半发现又不太合适然后删除,很郁闷。之前一直比较关注web安全层面,如SQL注入、XSS、CSRF等等 ,然后HTTP协议层面,如HTTP Slowloris ,逐渐接触应用层以下(OSI七层模型)的东西,比如TCP SYN Flood相关。最近在学习ARP、MAC、IP欺骗,交换网络sniff以及TCP劫持相关的东西,查阅的都是01-03年左右的文档(越是底层的技术越是持久哈),总算不涉及公司相关信息,拿出来充充数。
注:本文只供研究参考之用,如作其他用途,概与本人无关。飘零的代码 http://piao2010.com

简单描述下实验场景:同一局域网内,网关A,攻击者B,受害者C。

涉及到工具:主要是hunt-1.5和dsniff工具包(dsniff安装过程比较艰辛,主要是软件依赖的库太旧了,好在有同学给出了各依赖库的包http://blog.netonline.me/2010/09/lansecurity-dsniff.html/ 最后一步安装dsniff的时候注意指定这些库的路径./configure –help 可以查到)
工具使用相关说明在README里都比较详细了,另外需要知道TCP/IP协议相关的基础知识(请参考《TCP/IP详解》或者RFC)。

首先说下ARP欺骗,主要参考http://www.rootsecure.net/content/downloads/pdf/arp_spoofing_slides.pdf 和 http://www.ibm.com/developerworks/cn/linux/l-arp/

ARP欺骗是攻击者B主动发送ARP响应来欺骗受害者C对ARP缓存表中网关A的IP和MAC映射进行更新,使网关的IP对应B的MAC,如此一来受害者C对网关A发送的数据就全部走到了攻击者B这里,那么B很容易就可以对数据进行sniff甚至篡改,最后再把数据转发给真正的网关A(B事先开启ip_forward功能)。
同样地攻击者B主动发送ARP响应来欺网关A对ARP缓存表中受害者C的IP和MAC映射进行更新,使受害者C的IP对应B的MAC,如此一来网关A对受害者C发送的数据就全部走到了攻击者B这里,那么B很容易就可以对数据进行sniff甚至篡改,最后再把数据转发给真正的受害者C(同样B事先开启ip_forward功能)。
现在看起来B已经顺利对A和C之间的通信进行了监控甚至篡改。ARP欺骗是基于MAC与IP映射关系的欺骗,对于网络层以上是透明的,所以也就达到了TCP劫持的目的,甚至是基于ssh v1的MITM(dsniff工具包里的sshmitm可以实现)。另外一些基于源IP地址信任的策略也轻松突破了(攻击者B不用开启ip_forward),就是实现了IP的欺骗(注意场景:局域网内哈)。还有就是《ARP协议揭密》一文中利用ICMP重定向报文进行跨网段的ARP欺骗因为条件有限我未做测试,实践过的同学请告知。
ARP欺骗的防御:网络中任意两节点之间双向IP+MAC静态绑定是最好的办法,当然维护成本也是比较高的。对于不能静态绑定的环境,可以参考http://www.xfocus.net/articles/200711/960.html 一文,正好我也安装了某ARP防火墙,发现文中的思路应该已经被采用,毕竟是07年的文章了。

再说下公网的IP欺骗,当然我说的是TCP连接(ICMP UDP这些随便你怎么玩),实现起来会很费劲,传说中凯文米特尼克做过。从理论上看:攻击者B首先要对受信任者C进行Flood以免它对目标A的TCP产生RST回应而影响效果(这步不算难),然后攻击者B伪装C的IP对目标A发起SYN,目标A会向受信任者C回应SYN+ACK,所以C这个时候必须无响应,作为攻击者B收不到A给C的SYN+ACK,所以我们必须对A的TCP ISN进行预测(这个是难点,相关技术自行Google之),然后以正确的ACK值(A的ISN+1)和我们要发送的数据回复给目标A完成一次攻击。当然只是理论,我没有测试过。

最后说下MAC欺骗,主要参考http://www.cnblogs.com/wuxdotnet/archive/2010/04/07/1706654.html 和 http://huaidan.org/archives/2199.html
鉴于前面提到ARP欺骗的危害如此之大,所以一些网络环境里主机(网关)之间采用双向IP+MAC静态绑定来防御ARP欺骗。如此一来我们似乎没法在这种环境里面进行sniff(亲,场景是交换网络,不是共享网络哈),有一种比较暴力的方法就是泛洪交换机的MAC地址(dsniff工具包里的macof可以实现),这样确实会使交换机以广播模式工作(变成HUB工作方式)从而达到嗅探的目的,但是会造成交换机负载过大,网络缓慢和丢包甚至瘫痪。这个时候MAC欺骗就派上用场了,ARP欺骗是欺骗了IP/MAC的应关系,而MAC欺骗则是欺骗了MAC/PORT(交换机的端口)的对应关系。还是以攻击者B劫持受害者C作为例子(da为目的MAC,sa为源MAC):
首先攻击者B发送任意da=网关A.mac、sa=受害者C.mac的数据包到网关,这样就表明C.mac 对应的是port.B,在一段时间内,交换机会把发往C.mac的数据帧全部发到攻击者B。这个时间一直持续到C主机发送一个数据包,或者另外一个da=网关A.mac、sa=C.mac的数据包产生前。
然后攻击者B收到网关A发给受害者C的数据,记录或修改之后要转发给C,在转发前要发送一个ARP请求C.MAC的广播,这个包是正常的,MAC信息为:da=FF:FF:FF:FF:FF:FF、sa=B.mac。这个数据帧表明了B.mac对应port.B,同时会激发C主机响应一个应答ARP包 MAC信息为:da=B.mac、sa=C.mac,这个数据帧表明了 C.mac对应port.C。至此,对应关系已经恢复,攻击者B将劫持到的数据可顺利转发至受害者C。这样就完成了一次劫持,MAC欺骗攻击隐蔽性强,可以在ARP防火墙和双向绑定的环境中工作。攻击具有时间分段特性,所以受害者C的流量越大,劫持频率也越低,网络越稳定。
MAC欺骗的防御:高级的交换机可以采用ip+mac+port 绑定,控制CAM表的自动学习,当然维护成本也会很高,除非网络节点比较稳定,很少增减节点。

参考资料:
http://www.rootsecure.net/content/downloads/pdf/arp_spoofing_slides.pdf http://www.ibm.com/developerworks/cn/linux/l-arp/
http://www.xfocus.net/articles/200711/960.html
http://www.cnblogs.com/wuxdotnet/archive/2010/04/07/1706654.html
http://huaidan.org/archives/2199.html
http://blog.netonline.me/2010/09/lansecurity-dsniff.html/
《TCP/IP详解》

关于ARP、MAC、IP欺骗以及TCP劫持相关推荐

  1. ARP攻击与欺骗,TCP,UDP

    标题:ARP,TCP,UDP 文章目录 一.ARP攻击原理 1.1.攻击其他计算机 1.2.欺骗其他计算机 1.3.长角牛网络监控机软件管理网络 1.4.中间交换机完整的通信过程 二.传输层协议 2. ...

  2. Web安全实践(13)嗅探,arp欺骗,会话劫持与重放攻击(上)

    前言 (作者:玄魂) 嗅探,arp欺骗,会话劫持与重放攻击之间的关系可谓相辅相成,这次针对web安全把它们放在一起来讲,并探讨一下相关的编程问题.内容比较多,分三节来讲,第一节讲嗅探和会话劫持,第二节 ...

  3. 关于局域网ARP攻击,MAC地址欺骗的解决方法

    最近很多网络反映频繁断线并且网速较慢,已经确认:这是由于一种名为"网吧传奇杀手Trojan.PSW.LMir.qh " 的病毒爆发引起的,现我们发布查找病毒以及基本解决办法:    ...

  4. 帮你理解网关、ARP、IP、MAC、路由

    假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(pin ...

  5. IP头,TCP头,UDP头,MAC帧头定义(转)

    源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER {char m_cD ...

  6. 内网安全-arp欺骗,dns劫持钓鱼

    单向欺骗: 攻击机伪造数据包后本应该传输给靶机的数据错误的传输给攻击机,使靶机得不到服务器的响应数据,甚至根本无法将数据包发送出局域网 双向欺骗: 攻击机一直发送伪造的数据包,欺骗网关自己是靶机,欺骗 ...

  7. 网络知识入门,什么是以太网包,TCP/IP包,MAC头部,IP头部以及TCP头部(六)

    目录 一.以太网包 二.协议栈中IP模块的工作方式 1.TCP委托IP模块 2.IP模块的工作方式 三.mac头部 四.何为以太网 1.以太网的定义 2.如何收发以太网包 3.以太网接收网络包详细 4 ...

  8. 网络与安全1【什么ARP***,IP地址欺骗都是浮云】买台300元的交换机搞定

    今天看到PConline上的相关文章,感觉写得不错,在这里分享给大家. 至于相关的配置命令,我也会紧接着跟进,与大家分享,若有什么不正确的地方,也欢迎大家多多交流. 首先限定一下话题的范围,本贴谈论的 ...

  9. 网络工程师必修课之ARP MAC欺骗,交换机静态ARP绑定配置

    一.ARP欺骗 1.我们知道ARP用于IP地址解析成MAC,属于地址解析协议,同时ARP请求为广播行为.网络中经常发生一些不安全隐患 2.攻击主机发送造假的ARP应答,发送局域网中除了被攻击者外其他主 ...

最新文章

  1. 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)
  2. 【模板引擎】Springboot整合ThymeleafThymeleaf基本语法
  3. LeetCode 25 K个一组翻转链表
  4. 界面设计 java_Java界面设计
  5. React系列---Webpack环境搭建(二)不同环境不同配置
  6. linux 进程带宽限制,在Linux中限制网络带宽使用
  7. Asp.Net回车键触发Button的OnClick事件解决方案
  8. Entity Framework在三层架构中的使用
  9. map语法获取index_python获取慧聪企业信息
  10. 如何通过网页方式将jar包上传到nexus?
  11. IOS开发之第三方登陆——友盟
  12. 数据库系统概论 思维导图
  13. java八股文第一章:Java 基础知识
  14. OpenCV获取轮廓最大内接正矩形(C++源码)
  15. 【C语言程序设计】C语言三色旗问题!
  16. T1商贸宝加密狗相关配置
  17. 《置身事内》读书笔记第一章 地方政府的权利与事务
  18. 计算机必学知识,基础电脑知识:计算机操作常识入门必学
  19. 谷粒商城项目笔记总结(1/2)
  20. C++乘除运算防止中间值溢出

热门文章

  1. nyoj 762:第k个互质数
  2. nginx 配置的server_name参数(转)
  3. Halcon 摄像机标定流程
  4. 思科认证与华为认证在考题与内容上到底多大差别?
  5. 2019最具特色的web前端技术分享
  6. java笔记 -- GregorianCalendar和DateFormateSymbols 类方法
  7. 【HDU 2028】Lowest Common Multiple Plus
  8. Xcode 添加前缀
  9. web开发过程中经常用到的一些公共方法及操作
  10. 学会用core dump调试程序错误(转)