Sniffing Paket Jaringan
Sniffing atau sniffing paket jaringan adalah proses memantau dan menangkap semua paket yang melewati jaringan tertentu menggunakan alat sniffing. Ini adalah bentuk di mana, kita dapat "menyadap kabel telepon" dan mengetahui percakapan. Itu juga disebutwiretapping dan dapat diterapkan pada jaringan komputer.
Ada banyak kemungkinan bahwa jika satu set port switch perusahaan terbuka, maka salah satu karyawan mereka dapat mengendus seluruh lalu lintas jaringan. Siapa pun di lokasi fisik yang sama dapat menyambungkan ke jaringan menggunakan kabel Ethernet atau terhubung secara nirkabel ke jaringan itu dan mengendus lalu lintas total.
Dengan kata lain, Sniffing memungkinkan Anda untuk melihat semua jenis lalu lintas, baik yang dilindungi maupun tidak. Dalam kondisi yang tepat dan dengan protokol yang tepat, pihak yang menyerang mungkin dapat mengumpulkan informasi yang dapat digunakan untuk serangan lebih lanjut atau menyebabkan masalah lain bagi jaringan atau pemilik sistem.
Apa yang bisa diendus?
Seseorang dapat mengendus informasi sensitif berikut dari jaringan -
- Lalu lintas email
- Kata sandi FTP
- Lalu lintas web
- Kata sandi Telnet
- Konfigurasi router
- Sesi obrolan
- Lalu lintas DNS
Bagaimana cara kerja sniffing?
Sebuah sniffer biasanya mengubah NIC sistem ke mode promiscuous sehingga ia mendengarkan semua data yang dikirim pada segmennya.
Modus promiscuous mengacu pada cara unik perangkat keras Ethernet, khususnya, kartu antarmuka jaringan (NIC), yang memungkinkan NIC menerima semua lalu lintas di jaringan, meskipun tidak ditujukan ke NIC ini. Secara default, NIC mengabaikan semua lalu lintas yang tidak ditujukan padanya, yang dilakukan dengan membandingkan alamat tujuan paket Ethernet dengan alamat perangkat keras (MAC) perangkat. Meskipun ini masuk akal untuk jaringan, mode non-promiscuous mempersulit penggunaan perangkat lunak pemantauan dan analisis jaringan untuk mendiagnosis masalah konektivitas atau penghitungan lalu lintas.
Seorang sniffer dapat terus memantau semua lalu lintas ke komputer melalui NIC dengan mendekode informasi yang dienkapsulasi dalam paket data.
Jenis Mengendus
Mengendus dapat bersifat Aktif atau Pasif. Sekarang kita akan belajar tentang berbagai jenis sniffing.
Mengendus Pasif
Dalam sniffing pasif, lalu lintas dikunci tetapi tidak diubah dengan cara apa pun. Sniffing pasif hanya memungkinkan mendengarkan. Ia bekerja dengan perangkat Hub. Pada perangkat hub, lalu lintas dikirim ke semua port. Dalam jaringan yang menggunakan hub untuk menghubungkan sistem, semua host di jaringan dapat melihat lalu lintas. Oleh karena itu, penyerang dapat dengan mudah menangkap lalu lintas yang dilalui.
Kabar baiknya adalah hub hampir menjadi usang belakangan ini. Sebagian besar jaringan modern menggunakan sakelar. Karenanya, mengendus pasif tidak lebih efektif.
Mengendus Aktif
Dalam aktif mengendus, lalu lintas tidak hanya dikunci dan dipantau, tetapi juga dapat diubah dalam beberapa cara yang ditentukan oleh serangan tersebut. Pengendusan aktif digunakan untuk mengendus jaringan berbasis sakelar. Ini melibatkan menyuntikkan paket resolusi alamat (ARP) ke jaringan target untuk membanjiri tabel switch content addressable memory (CAM). CAM melacak host mana yang terhubung ke port mana.
Berikut ini adalah Teknik Mengendus Aktif -
- Banjir MAC
- Serangan DHCP
- Keracunan DNS
- Serangan Spoofing
- Keracunan ARP
The Sniffing Effects on Protocols
Protokol seperti tried and true TCP/IPtidak pernah dirancang dengan mengutamakan keamanan. Protokol semacam itu tidak menawarkan banyak perlawanan terhadap calon penyusup. Berikut ini adalah protokol berbeda yang memudahkan sniffing -
HTTP
Ini digunakan untuk mengirim informasi dalam teks yang jelas tanpa enkripsi apa pun dan dengan demikian menjadi target nyata.
SMTP (Simple Mail Transfer Protocol)
SMTP digunakan dalam transfer email. Protokol ini efisien, tetapi tidak menyertakan perlindungan apa pun terhadap sniffing.
NNTP (Network News Transfer Protocol)
Ini digunakan untuk semua jenis komunikasi. Kelemahan utama dengan ini adalah bahwa data dan bahkan kata sandi dikirim melalui jaringan sebagai teks yang jelas.
POP (Protokol Kantor Pos)
POP secara ketat digunakan untuk menerima email dari server. Protokol ini tidak menyertakan perlindungan terhadap sniffing karena dapat terjebak.
FTP (Protokol Transfer File)
FTP digunakan untuk mengirim dan menerima file, tetapi tidak menawarkan fitur keamanan apa pun. Semua data dikirim sebagai teks yang jelas yang dapat dengan mudah diendus.
IMAP (Protokol Akses Pesan Internet)
IMAP sama dengan SMTP dalam fungsinya, tetapi sangat rentan terhadap sniffing.
Telnet
Telnet mengirimkan semuanya (nama pengguna, kata sandi, penekanan tombol) melalui jaringan sebagai teks yang jelas dan karenanya, dapat dengan mudah diendus.
Sniffer bukanlah utilitas bodoh yang memungkinkan Anda untuk hanya melihat lalu lintas langsung. Jika Anda benar-benar ingin menganalisis setiap paket, simpan tangkapan dan tinjau kapan pun waktu memungkinkan.
Implementasinya menggunakan Python
Sebelum menerapkan sniffer soket mentah, mari kita pahami struct metode seperti yang dijelaskan di bawah ini -
struct.pack (fmt, a1, a2,…)
Seperti namanya, metode ini digunakan untuk mengembalikan string, yang dikemas sesuai dengan format yang diberikan. String tersebut berisi nilai a1, a2 dan seterusnya.
struct.unpack (fmt, string)
Seperti namanya, metode ini membongkar string sesuai dengan format yang diberikan.
Dalam contoh berikut dari header IP sniffer soket mentah, yang merupakan 20 byte berikutnya dalam paket dan di antara 20 byte ini kami tertarik pada 8 byte terakhir. Byte terakhir menunjukkan jika alamat IP sumber dan tujuan sedang diurai -
Sekarang, kita perlu mengimpor beberapa modul dasar sebagai berikut -
import socket
import struct
import binascii
Sekarang, kita akan membuat soket, yang memiliki tiga parameter. Parameter pertama memberitahu kita tentang antarmuka paket - PF_PACKET untuk Linux khusus dan AF_INET untuk windows; parameter kedua memberitahu kita bahwa ini adalah soket mentah dan parameter ketiga memberitahu kita tentang protokol yang kita minati —0x0800 digunakan untuk protokol IP.
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket. htons(0x0800))
Sekarang, kita perlu memanggil recvfrom() metode untuk menerima paket.
while True:
packet = s.recvfrom(2048)
Di baris kode berikut, kami merobek header Ethernet -
ethernet_header = packet[0][0:14]
Dengan baris kode berikut, kami mem-parsing dan membongkar header dengan struct metode -
eth_header = struct.unpack("!6s6s2s", ethernet_header)
Baris kode berikut akan mengembalikan tupel dengan tiga nilai hex, yang diubah oleh hexify dalam binascii modul -
print "Destination MAC:" + binascii.hexlify(eth_header[0]) + " Source MAC:" + binascii.hexlify(eth_header[1]) + " Type:" + binascii.hexlify(eth_header[2])
Sekarang kita bisa mendapatkan header IP dengan menjalankan baris kode berikut -
ipheader = pkt[0][14:34]
ip_header = struct.unpack("!12s4s4s", ipheader)
print "Source IP:" + socket.inet_ntoa(ip_header[1]) + " Destination IP:" + socket.inet_ntoa(ip_header[2])
Demikian pula, kami juga dapat mengurai header TCP.