arp欺骗进行流量截获-1

这边博文主要讲一下怎么使用arp欺骗进行流量截获,主要用于已经攻入内网以后,进行流量监听以及修改。

一、什么是arp

    arp协议是以太网的基础工作协议,其主要作用是是一种将IP地址转化成物理地址的协议,在以太网上进行通信的时候并不直接使用ip地址作为主机标识,而是使用MAC地址,也就是物理地址。

    某机器A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机A的IP地址Ia——物理地址Pa),请求IP地址为Ib的主机B回答物理地址Pb。网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。

    本地的arp缓存可以通过arp –a命令查看。

二、arp欺骗的工作原理

    假定C想监听A和B之间的通信,那么第一步就是C告诉A,我是B;同时高速B,我是A,这样A和B都会把发给对方的数据发送到C这里。

第二步C对收到的数据进行处理,然后再转发给真正的接收者。

    基本原理非常简单,就上面两句话,但是怎么做到的呢?我稍微详细说一下。

    第一步MAC 地址误导

    C怎么欺骗A,告诉他我才是B呢?

    这就是利用了ARP协议的一个标准请求,大家想一下,如果B想要给A发送数据的时候,如果他不知道A的MAC地址,就会在以太网(可以认为是这个局域网)广播一下,我是B,谁知道A的MAC地址是什么?为什么C不可以伪造这个过程呢?如果C伪造一个请求,在请求里面把IP地址下成B的,但是这个IP地址对应的MAC地址写成C自己的,那么A收到以后自然就会认为B的MAC地址是MAC C了。

    不过这样做有一个问题就是,网络上所有的主机都会形成这种错误认识,这个显然是不行的,因为我就想监听A和B之间的通信,不想监听A和所有主机的通信啊,那么怎么办呢?

    其实也很简单,就是一个小技巧,正常的ARP请求包中,因为不知道对方的MAC地址是什么,所以目的MAC填写的是广播地址FF:FF:FF:FF:FF:FF,这也就导致了所有的人都收的到,因为我们知道A的真实MAC地址是MAC A,所以在以太网帧中的目的MAC填写上MAC A,这样其他主机就会忽略该ARP请求,也就不会干扰其他主机的正常通信。

    同理,C也可以这样欺骗B,告诉它其实A的MAC地址是MAC C。

    第二步 进行包转发

    A和B发给对方的数据包都发到了C这里,那么肯定就不能正常通信,这样A和B就无法进行正常通信了,自然也就没必要进行监听了。

    所有C在收到包以后就必须进行转发,比如收到A发送给B的包以后,再将目的MAC地址修改为B真正的MAC B,然后再发送出去,这样B才能收到。同理对于B给A的数据包也一样。

    这里其实还有一个问题就是我们怎么判断这个数据包是A发送给B的呢?这个可以通过IP头中的目的IP是B和源IP是A来判断。那么会不会出现是A发送给B,但是目的IP不是B的这种情况呢?基本上只有一种例外情况,就是B是网关,那么A发送到外网的IP数据包都要发送到B,但是目的IP却可能是任意IP,不过这个IP地址却一定不是本局域网的IP。

    因此后一种情况可以通过指明B是网关,想监听A的一切外网访问来识别。

 

posted on 2016-06-09 21:37  baizx  阅读(1031)  评论(0编辑  收藏  举报