DNS欺骗技术方法
核心提示:DNS欺骗技术方法
以下为援用的内容: ------------------------------------------------- <-- -- -- 交换式HUB | | | | | | | | D A' + A B C <-- -- -- A、B、C 处 | | 在同1逻辑子网内 | | | | |
A是网关 <------ ------> 我们在这里架设 sniffer,从这里同时对A、C进行ARP欺骗。需要到达这类效果:
A:ipC <----> macB,因而A企图和C通讯的时候,包将发向B,这个很轻易验证。
B:负责链路层包转发,进行先修改MAC后转发的操纵。
这里要求我们的sniffer参与到IP层。明显我们只处理单播地址,而不用处理广播地址。
C:ipA <----> macB,因而C企图和A通讯的时候,包将发向B,这个很轻易验证。
1、单独起1个线程负责刷新,可以在配置文件中定制刷新间隔。应当和包分析线程doAnalyseThread 1样,当抓包线程 doCaptureThread 被外来信号 SIGEND 暂停时,欺骗刷新线程 doSpoofThread 被阻塞住,而不要无谓进行欺骗刷新。
以下为援用的内容: ipA macA ------> 这是ipA的真实macA地址
|
这类报文导致 ipA 的 ARP CACHE 中 ipC 对应的是 macB
2、需要取得目标MAC地址和目标IP地址,每次都根据这两个数据判定,是否是需要进行链路层的包转发。假设需要进行链路层包转发,必须同时修改源MAC地址和目标MAC地址。
当出现 destMacB + destIpA + srcMacC + srcIpC 时,修改成 destMacA + destIpA + srcMacB + srcIpC 。
当出现 destMacB + destIpC + srcMacA + srcIpA 时,修改成 destMacC + destIpC + srcMacB + srcIpA 。
上面的讨论仅仅限于局域网内不触及跨网关时的arp欺骗进程,下面我们来看看假设触及到网关会如何。假定主机A是网关,主机D位于网关外,主机C位于网关 内,且主机C的ARP CACHE中有 ipA----macB 对,主机A的ARP CACHE中有ipC----macB对。
当出现 destMacB + destIpD + srcMacC + srcIpC 时,修改成 destMacA + destIpD + srcMacB + srcIpC 。
当出现 destMacB + destIpC + srcMacA + srcIpD 时,修改成 destMacC + destIpC + srcMacB + srcIpD 。
综合比较1下4种情况,提取出共同点,destIp、srcIp始终保持原值。
当出现 destMacB + destIpX( X即是A或X在网关外 ) + srcMacY 时,修改成 destMacA + destIpX + srcMacB 。
当出现 destMacB + destIpX( X在网关内且不即是B ) + srcMacA 时,修改成 destMacX + destIpX + srcMacB 。
上面都是针对"正常"情况下可能出现的包而言,假设有人正在进行其他ARP扰乱进程,情况会很复杂,这里不做讨论。1定要理解这里简化后的终极结论,否则编程不好处理。
3、应当在配置文件中设置是否是进行针对交换式HUB的监听。假设不做这类监听,就没必要在初始化的时候启动欺骗刷新线程。同时也就没必要在函数 doIp() 中做链路层包转发。
4、在函数 doIp() 中增加代码,做链路层包转发处理。由于进行完全的arp欺骗需要参与到IP层,从条目2的讨论中可以理解这1点。
5、arp cache中出现1个MAC对应多个IP的情况,固然分歧情理,但是经过实践,没有发现甚么副作用。
6、暂时不考虑同时针对主机C、C'、C"进行arp欺骗的情况,这个以后再增加处理进程。
唐山网站建设www.fw8.netTAG:主机,地址,网关,线程,情况
评论加载中...
|