关于 ARP 欺骗

扫码查看
ARP欺骗
2007-07-19 16:58

这几天研究了windows对ARP的处理方式,便写了个ARP欺骗的程序,试验结果生效。

windows接收到一个ARP响应,便会更新本地ARP高速缓冲表,而接收到一个ARP请求,即使请求的IP地址已经记录在ARP高速缓冲表中,也不会更新ARP高速缓冲表,这一点让我对windows的ARP处理机制产生疑问,像Linux就不是这样处理。不同的操作系统更新ARP缓存的方式不同,现对Windows操作系统和linux操作系统对于接收到不同的ARP数据包更改ARP缓存的方式进行一下总结。

(1)windowsxp


接收到ARP请求,源物理地址改变

接收到ARP响应,源物理地址改变

IP地址已记录在ARP缓冲表

不更新ARP缓冲表

依据ARP响应中记录的源物理地址来更新ARP缓冲表

IP地址未记录在ARP缓冲表

依据ARP请求中记录的源物理地址来更新ARP缓冲表

不更新ARP缓冲表

另外windows接收到目的物理地址为广播的ARP响应,如果该IP地址已记录在ARP缓冲表中,也会更新ARP缓冲表的。

如果接收到一个源IP地址和目的IP地址都为本地主机IP地址的ARP请求,不仅会提示用户有IP地址冲突,并且也会向发送方发送ARP响应。如果接收到只有源IP地址为本地主机IP地址的ARP请求,那么只会提示用户有IP地址冲突。

如果接收到一个源IP地址为本地主机IP地址的ARP响应,会提示用户有IP地址冲突,但是它不会向ARP响应中所记录的目的IP地址发送ARP响应。

(2)Windows 2003 server操作系统


接收到ARP请求,源物理地址改变

接收到ARP响应,源物理地址改变

IP地址已记录在ARP缓冲表

依据ARP请求中记录的源物理地址来更新ARP缓冲表

依据ARP响应中记录的源物理地址来更新ARP缓冲表

IP地址未记录在ARP缓冲表

依据ARP请求中记录的源物理地址来更新ARP缓冲表

不更新ARP缓冲表

(3)linux


接收到ARP请求,源物理地址改变

接收到ARP响应,源物理地址改变

IP地址已记录在ARP缓冲表

依据ARP请求中记录的源物理地址来更新ARP缓冲表

不更新ARP缓冲表

IP地址未记录在ARP缓冲表

依据ARP请求中记录的源物理地址来更新ARP缓冲表

依据系统配置,来判断是否更新ARP缓冲表

linux不接收目的物理地址为广播的ARP响应或目的物理地址为单播的ARP请求报文。它只接收目的物理地址为广播的ARP请求报文和目的物理地址为单播的ARP响应报文。在这一点上Linux做的比windows要好。

11-30 02:19
查看更多