• Tidak ada hasil yang ditemukan

MEMBUAT PROGRAM PEMANTAU JARINGAN (SNIFFER)

N/A
N/A
Protected

Academic year: 2018

Membagikan "MEMBUAT PROGRAM PEMANTAU JARINGAN (SNIFFER)"

Copied!
5
0
0

Teks penuh

(1)

Membuat Program Pemantau Jaringan (Sniffer)

MEMBUAT PROGRAM PEMANTAU JARINGAN (SNIFFER)

Oleh :

Dadang Pandhu Dewantoro

Universitas MH Thamrin Jakarta Dadang.pandudewantoro@umht.ac.id

Ringkasan Sniffer adalah program dan/atau peralatan yang memonitor data yang berada di jaringan.

Sniffer dapat digunakan baik untuk manajemen jaringan maupun untuk mencuri informarsi dari jaringan.Untuk menulis program sniffer mengguanakan bahasa pemrograman Java, diperlukan Jpcap dan bila menggunakan bahasa C atau C++, diperlukan pcap. Bila penulisan dilakukan di lingkungan Windows, dibutuhkan library bernama WinPcap atau kalau menggunakan Unix, dibutuhkan library bernama libpcap.Supaya dapat menerima paket yang tidak ditujukan kepadanya, seseorang harus mengeset network adapter di promiscuous mode. Di mode ini, netork adapter akan menerima semua paiet tidak perduli alamat tujuannya. Keuntunngan dari promiscuous mode ini adalah mode ini memungkinkan kita untuk menrima lebih banyak paket yang dibutuhkan saat sniffing. Tapi ada juga kerugiannya yaitu mode ini dapat dideteksi, mode ini hanya bekerja pada peralatan non switch (non switch equipment) seperti hub.

Ada tiga langkah utama dalam membuat sniiffer yaity mengeset device, membuka device dan menyaring data.

Katakunci: packet capturing, sniffer, socket programming

Pendahuluan

Sniffer adalah program dan/atau peralatan yang memonitor data yang berada di jaringan. Sniffer dapan digunakan baik untuk manajemen jaringan maupun untuk mencuri informasi dari jaringan. Di jaringan TCP/IP, bila seseorang mencuri (sniff) paket, dia disebut dengan sniffer (http://isp.webopedia.com/TERM/S/sniffer.html ).

Sniffing di jaringan bukanlah barang yang baru. Hal ini biasanya dilakukan oleh network administrator untuk memonitor lalulintas jaringan. Ada banyak software sniffer yang tersedia baik yang gratis maupun yang komersial. Contohnya adalah WinSniff, Ethereal, Nmap, Snort, ntop, PacAnal, NetSpy, dan Sniffex. Software-software ini ditulis dalam berbagai bahasa seperti Java, C, C++ atau C# dan dijalankan bekerja di platform yang berbeda seperti Windows, Unix, atau Linux.

Artikel ini akan menjelaskan langkah-langkah dalam menulis program sniffer menggunakan pcap (dalam bahasa C) dan menggunakan Jpcap ( dalam bahasa Java). Ada tiga langkah dalam menulis sniffer yaitu mengeset device, membuka device dan menyaring data.

Artikel ini pada awalnya ditulis sebagai bagian dari laporan tugas kuliah Advanced Networking. Bersama laporan tersebut ada sebuah program sniffer yang ditulis dalam bahasa Java. Program itu sendiri tidak disertakan dalam tulisan ini karena keterbatasan tempat.

Kebutuhan

Untuk membuat sebuah sniffer yang dibutuhkan adalah pengetahuan dasar pemrograman disamping pengetahuan dasar jaringan. Jika seseorang akan membuat sniffer yang ditulis dengan Java, dia membutuhkan Jpcap atau pcap jika yang digunakan adalah bahasa lain seperti C atau C++.

(2)

Membuat Program Pemantau Jaringan (Sniffer)

ditangkap sebagai raw pakets yang berisi seluruh data dari paket tersebut. Ini memungkinkan aplikasi Java untuk menganalisa tipe-tipe paket yang tidak didukung Jpcap. (http://netresearch.ics.uci.edu/kfujii/jpcap/doc/i ndex.html).

Baik pada Windows maupun Unix, seseorang harus mempunyai library dari third party yaitu

WinPcap atau libpcap

( http://techrepublic.com.com/5100-3513_11-5815384.html).

WinPcap adalah alat standar industri untuk mengakses jaringan melalui link layer pada lingkungan Windows. WinPcap memungkinkan aplikasi untuk menangkap dan mengirimkan paket tanpa melalui protocol stack

dan mempunyai fitur tambahan yaitu menyaring paket pada kernel level, dan mampu menangkap paket dari jarak jauh (remote packet capture). WinPcap terdiri dari sebuah driver yang membantu sistem operasi untuk menyediakan akses jaringan pada level bawah, dan sebuah library yang digunakan untuk mengakses layer jaringan pada level bawah. Library ini juga berisi libpcap Unix API versi Windows. WinPcap adalah mesin (engine) untuk menangkap dan menyaring paket dari banyak alat (tool) baik open source maupun komersial termasuk diantaranya adalah penganalisa protocol (protocol analyzer), pengawasan jaringan (network monitor), sistem pendeteksi penyusupan jaringan (network intrusion detection system), sniffers, traffic generators

dan network testers. Beberapa dari tool itu adalah Ethereal, Nmap, Snort, ntop yang sudah

banyak digunakan orang

(http://www.winpcap.org/).

Seperti WinPcap, libpcap juga merupakan

interface untuk menangkap paket pada level pengguna. libpcap menyediakan portable framework untuk monitor jaringan pada level bawah. Aplikasi yang dapat dibuat mengguanakan libpcap antara lain pengumpulan data statistic jaringan (network statistics collection), pengawasan keamanan (security monitoring), network debugging, dsb. libpcap bekerja pada lingkungan Unix atau Linux (http://sourceforge.net/projects/libpcap/).

Cara Kerja

Ketika sebuah komputer terhubung ke jaringan, paket dari manapun akan sampai pada komputer tersebut. Secara default (yaitu ketika network adapter pada mode normal), paket-paket ini akan ditolak oleh network adapter karena

paket-paket ini dikirimkan ke komputer (host) lain. Tapi orang dapat menerima paket-paket ini dengan mengubah network adapter ke mode

promiscuous. Pada mode ini, sebuah komputer akan menerima semua paket tidak peduli paket itu ditujukan untuk siapa (Nagareshwar, 2006).

Keuntungan dari mode promiscuous ini adalah mode ini bisa mendatangkan lebih banyak paket untuk sniffing. Tapi ada juga kelemahannya. Pertama, sniffing dengan mode promiscuous

dapat dideteksi. Sebuah komputer (host) dapat mengetes untuk menentukan apakah host lain sedang melakukan promiscuous sniffing. Kedua, promiscuous sniffing hanya bekerja pada lingkungan non-switch seperti hub. Ini dikarenakan hub menggunakan teknik

broadcasting untuk mengirimkan paket ke semua host yang berhubungan dengannya. Ketiga, pada jaringan dengan lalulintas yang padat, host tersebut akan membutuhkan banyak

system resource.

Ada tiga langkah utama dalam menulis program

sniffer yaitu : mengeset device, membuka device

untuk mendengarkan, dan menyaring data.

Mengeset device

Ketika pcap digunakan, ada dua teknik untuk mengeset device yang akan di sniff. Yang pertama adalah pengguna menentukan nama

device. Potongan program berikut dapat digunakan :

#include <stdio.h> #include <pcap.h>

int main(int argc, char *argv[]) {

char *dev = argv[1];

printf("Device: %s\n", dev); return(0); }

Pengguna menentukan device dengan menuliskan nama device sebagai argumen

pertama pada program diatas. String “dev”

berisi nama interface yang akan di sniff dalam format yang dikenal oleh pcap.

Teknik lainnya adalah sebagai berikut :

#include <stdio.h> #include <pcap.h>

(3)

Membuat Program Pemantau Jaringan (Sniffer)

char *dev, errbuf[PCAP_ERRBUF_SIZE];

dev = pcap_lookupdev(errbuf); if (dev == NULL) { fprintf(stderr, "Couldn't find default

device: %s\n", errbuf);

return(2); }

printf("Device: %s\n", dev); return(0); }

Ketika Jpcap digunakan, yang pertama harus dilakukan adalah membuat kelas yang mengimplementasikan interface jpcap JpcapHandler.

public class JpcapTip implements JpcapHandler {

public void handlePacket(Packet packet){

System.out.println(packet); }

}

Kemudian, untuk dapat menangkap paket, kita harus memberitahu Jpcap, network device mana yang akan didengarkan. API menyediakan metoda jpcap.Jpcap.getDeviceList() untuk hal ini. Metoda ini mengembalikan array string dan cara mengguanakannya adalah sebagai berikut :

String[] devices = Jpcap.getDeviceList();

Setelah kita mendapat daftar nama device, kita harus memilih salah satunya untuk didengarkan :

String deviceName = devices[0];

Membuka device untuk didengarkan

Pada pcap, untuk membuat sesi sniffing

sangatlah mudah. Untuk hal ini, pcap_open_live() dapat digunakan. Prototipe dari fungsi ini adalah sebagai berikut :

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)

Argumen pertama adalah device yang sudah ditentukan pada langkah sebelumnya. snaplen adalah integer yang menentukan jumlah byte maksimum yang akan ditangkap oleh pcap. promisc, ketika di set true, akan mengeset

interface ke mode promiscuous. to_ms adalah

read time out dalam milidetik (nilai 0 berarti tidak ada time out; tapi pada sebagian platform, nilai 0 bisa berarti orang boleh menunggu hingga jumlah paket yang ditangkap sudah mencukupi sebelum melihat paket-paket tersebut. Jadi time out seharusnya tidak 0). Terakhir, ebuf adalah string yang dapat menyimpan pesan kesalahan. Fungsi ini mengembalikan session handler.

Sebagai contoh, potongan program berikut ini dapat digunakan :

#include <pcap.h> ...

pcap_t *handle;

handle = pcap_open_live(somedev, BUFSIZ, 1, 1000, errbuf);

if (handle == NULL) {

fprintf(stderr, "Couldn't open device %s: %s\n",

somedev, errbuf); return(2); }

Potongan program ini membuka device yang

disimpan pada string “somedev” dan membaca

sejumlah byte tertentu seperti yang sudah ditentukan dalam BUFSIZ (yang didefinisikan dalam pcap.h). Program ini juga mengeset

device pada mode promiscuous dan melakukan

sniffing hingga terjadi error, dan error ini akan disimpan pada string errbuf. Program ini menggunakan errbuf untuk mencetak error message.

Pada Jpcap, setelah memilih sebuah device,

device tersebut dapat dibuka untuk didengarkan dengan menggunakan metoda Jpcap.openDevice(). Metoda openDevice membutuhkan empat argument yaitu : nama

device yang akan dibuka, jumlah byte maksimum yang akan dibaca dari sebuah device

pada suatu saat, nilai Boolean yang menyatakan apakah device akan di set ke mode promiscuous, dan nilai timeout yang akan digunakan jika metoda processPacket() dipanggil.

Jpcap jpcap =

Jpcap.openDevice(deviceName, 1028, false, 10000);

(4)

Membuat Program Pemantau Jaringan (Sniffer)

processPacket ataupun loopPacket(). Kedua metoda tersebut membutuhkan dua argument : jumlah paket maksimum yang akan ditangkap (nilai -1 menandakan tidak ada batasan) dan

instance dari sebuah kelas yang

mengimplementasikan JpcapHandler.

Jika processPacket() yang dipanggil, maka Jpcap akan menangkap paket hingga timeout

yang tercantum pada openDevice terlampaui atau jumlah paket maksimum telah tercapai. Sedang loopPacket() akan menangkap paket hingga jumlah paket maksimum tercapai atau menangkap terus jika tidak ada batas maksimum. Cara memanggilnya seperti berikut ini :

jpcap.loopPacket(-1, new JpcapTip());

Menyaring data

Seringkali seseorang hanya tertarik pada data tertentu saja. Misalnya, orang ingin melakukna sniffing hanya pada port 23 (telnet) karena ingin mencari password. Atau mungkin orang ingin membajak sebuah file yang sedang dikirimkan melalui port 21 (FTP). Atau bahkan mungkin hanya lalulintas DNS (port 53 UDP) yang diinginkan. Apapun yang terjadi, sangat jarang orang melakukan sniffing semua data di semua lalulintas jaringan. Untuk hal ini, jika kita menggunakan pcap, pcap_compile() dan pcap_setfilter() dapat digunakan.

Processnya sangat mudah. Setelah memanggil pcap_open_live() dan mempunyai sesi sniffing

yang sudah bekerja, sebuah filter dapat diaplikasikan. Namun sebelum diaplikasikan, filter ini harus di kompliasi terlebih dulu. Untuk mengkompilasi, program pcap_compile() harus dipanggil. Prototipenya didefinisikan sebagai berikut :

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str,

int optimize, bpf_u_int32 netmask)

Argumen pertama adalah sesi handle (pcap_t *handle pada contoh sebelumnya). Argumen berikutnya adalah referensi ke sebuah tempat untuk menyimpan filter yang sudah dikompilasi. Setelah itu adalah ekpresi itu sendiri dalam format string. Selanjutnya adalah integer yang menentukan apakah ekspresi harus

di”optimalkan” atau tidak (0 berarti false, 1

berarti true). Terakhir, adalah menentukan net mask dari jaringan yang akan difilter. Fungsi ini mengembalikan -1 kalau gagal; dan

sembarang nilai lainnya kalau berhasil. Setelah ekspresi ini dikompilasi, saatnya untuk mengaplikasikannya. Kita dapat menggunakan pcap_setfilter(). Prototipe dari pcap_setfilter adalah sebagai berikut :

int pcap_setfilter(pcap_t *p, struct bpf_program *fp)

Argumen pertama adalah session handler, kedua adalah referensi ke ekspresi yang sudah dikompilasi.

Apabila kita menggunakan Jpcap, penyaringan dapat dilakukan dengan menggunakan setFilter. Protipe dari setFilter adalah sebagai berikut :

public void

setFilter(java.lang.String filterExpression, boolean optimize)

Argumen pertama, filterExpression, adalah ekspresi penyaringan (filter expression).

Misalnya, ekspresi “host techno” akan

menyaring hanya paket yang dikirim atau diterima pada host bernama techno. Argumen kedua, optimize, menentukan apakah kode bpf yang dihasilkan akan dioptimalkan oleh libpcap secara internal atau tidak. Anda harus membuat, mengkompilasi dan mengaktivasi sebuah filter dari sebuah expresi penyaringan (filter expression). Berikut adalah contoh sebuah program sniffer sederhana menggunakan Jpcap :

import jpcap.JpcapHandler; import jpcap.Jpcap; import jpcap.Packet;

public class JpcapTip implements JpcapHandler {

(5)

Membuat Program Pemantau Jaringan (Sniffer)

Jpcap jpcap =

Jpcap.openDevice(deviceName, 1028, false, 1);

jpcap.loopPacket(-1, new JpcapTip());

} }

Untuk menjalankan program diatas, kita harus yakin bahwa virtual machine dapat menemukan library asli (native library) Jpcap. Di Windows, jika jpcap.dll ada di direktori lib, perintah di Java akan tampak seperti berikut ini :

java -Djava.library.path=lib -cp lib\jpcap.jar;. JpcapTip

Sekarang saatnya bagi anda untuk membuah program sniffer.

Kesimpulan

Untuk membuat program sniffer, kita membutuhkan Jpcap atau pcap. Selain itu kita juga membutuhkan library WinPcap (pada lingkungan Windows) atau libpcap (pada lingkungan Unix). Supaya dapt menerima paket yang tidak ditujukan ke kita, kita adapt melakukannya dengan mengeset network adapter ke mode promiscuous. Pada mode ini, kita akan menerima paket apapun. Keuntungan dari mode promiscuous ini adalah mode ini menyediakan banyak paket untuk di sniff. Tapi ada tiga kekurangan dari mode ini. Pertama,

sniffing dengan mode promiscuous dapat dideteksi. Sebuah komputer (host) dapat mengetes untuk menentukan apakah host lain sedang melakukan promiscuous sniffing. Kedua, promiscuous sniffing hanya bekerja pada lingkungan non-switch seperti hub. Ini dikarenakan hub menggunakan teknik

broadcasting untuk mengirimkan paket ke semua host yang berhubungan dengannya. Ketiga, pada jaringan dengan lalulintas yang padat, host tersebut akan membutuhkan banyak

system resource.

Referensi

Carsten, Tim. 2006. Programming with pcap.

Error! Bookmark not defined.. Akses terakhir, 17 January 2006.

Nagareshwar. 2006. WinSniff, Packet Capturing Application for Windows.

"http://www.codeproject.com/internet/Win Sniff.asp". Akses terakhir 17 January 2006.

TechRepublic. 2006. How Jpcap Works.

Referensi

Dokumen terkait

Selain itu, aneka ragam makanan tradisional yang tersaji dalam dulang haroa membuat tradisi ini menjadi lebih menarik., Buku ini akan mengajak anak mengenal nilai-nilai baik

Berdasarkan hasil evaluasi kinerja tahun 2010 dan perkiraan kinerja pelaksanaan seluruh kegiatan pembangunan sampai akhir tahun 2011 serta memperhatikan rancangan

Sedangkan berdasarkan penampakan, lemak digolongkan kedalam lemak kentara (misal mentega dan lemak pada daging sapi) dan lemak tak kentara (misal lemak pada

Mampu melakukan asuhan kebidanan komprehensif pada masa nifas mulai. dari pengkajian, perumusan diagnosa dan atau masalah

Penelitian ini ditulis untuk dapat meneliti lebih lanjut tentang proses / langkah – langkah materi dan metode serta faktor – faktor pendukung dan penghambat

Berdasarkan hasil penelitian yang telah dilaksanakan dapat disimpulkan bahwa model pembelajaran CIRC dipadukan advance organizer berpengaruh signifikan terhadap keterampilan

Berdasarkan definisi-definisi di atas, dapat disimpulkan bahwa child abuse adalah tindakan (misalnya menolak, melakukan kekerasan pada anak) atau tidak ada tindakan sama

Apabila kekurangan pertambahan bobot larva tersebut dibandingkan dengan pertambahan bobot larva yang dikultur pada medium dengan serum domba waktu vaksinasi, maka akan