Proyek ini bertujuan untuk membangun alat yang mudah digunakan yang akan mengurai file pcap
untuk mengembalikan segala ambiguitas yang ditemukan dalam paket TCP. Kami sedang berupaya menerapkan analisis UDP dan ARP juga.
Garis besar:
Berkontribusi: komentar/ide/kontribusi apa pun dipersilakan.
make
./p2a -v ./pcap_files/some_pcap_file.pcap -s results.json
$ ./p2a -h
Usage: ./p2a [OPTIONS] FILE
-h,--help: display this help message
-v,--verbose: verbose option
-d,--debug: debug option
-x,--exclude OPTIONS: exclude some possible ambiguities from analysis
--exclude ret,mac,ttl
ret: exclude retransmission analysis
mac: exclude MAC addresses analysis
ttl: exclude TTL analysis
-s,--save FILENAME: saves results to file FILENAME
JSON format - FILENAME should contain the JSON extension
Examples:
./p2a -v ./pcap_files/some_pcap_file.pcapng
./p2a --exclude mac,ttl --verbose my-pcap-file.pcap -s results.json
Saya baru saja menambahkan opsi untuk menyimpan semua hasil ke file JSON. Untuk melakukannya, seseorang dapat menggunakan opsi --save file.json
. Ini menyimpan semua sesi dalam file ini, apakah ditemukan ambiguitas di dalamnya atau tidak. Saat ini saya sedang mencari cara untuk merender file JSON dengan baik dalam file HTML (menggunakan beberapa JavaScript)..
SHA(IP, Port)
Kami menyediakan skrip sha
untuk tujuan debug. Dibutuhkan sebagai argumen alamat IP dan nomor port dan mengembalikan hash SHA1 (IP|Port). Nilai ini digunakan sebagai pengidentifikasi sesi dalam skrip p2a
.
make sha
./sha -h
Usage:
./sha IP PORT
./sha 127.0.0.1 12345
IP: 127.0.0.1
Port: 12345
SHA1: 21bf549a8095063f49cff573e689b6b10365f4c8
Alamat IP dan whois
Jika suatu sesi mencurigakan, ada gunanya mengetahui apa hubungannya. Untuk melakukannya, seseorang dapat menggunakan Wireshark dan menerapkan filter tampilan untuk hanya menampilkan sesi tertentu.
Pendekatan yang lebih sederhana adalah dengan menggunakan whois
untuk mengetahui siapa pemilik alamat IP.
Untuk menggunakan whois
dengan semua alamat IP dari file pengambilan:
for ip in $( tshark -r file.pcapng -T fields -e ip.dst -e ip.src | egrep -o " [0-9]+.[0-9]+.[0-9]+.[0-9]+ " | sort | uniq ) ; do whois $ip | egrep " ^[Oo]rgani[sz]ation " ; done
Jika
tshark
tidak berfungsi, berikut skrip C yang akan melakukan hal yang sama.
Bidang Time To Live (TTL) untuk paket IP berhubungan dengan berapa lama paket tersebut 'diizinkan' untuk melakukan perjalanan di seluruh jaringan sebelum dijatuhkan oleh router. Ini adalah nilai 8-bit yang biasanya dikurangi satu pada setiap hop.
Menurut halaman Cisco di TTL Expiry Attack:
"Ketika perangkat IOS menerima paket dengan nilai TTL kurang dari atau sama dengan satu, pesan ICMPv4 Tipe 11, Kode 0 dikirim oleh perangkat IOS, sehingga berdampak pada CPU . Dampak ini terjadi karena lebih banyak CPU pemrosesan diperlukan untuk merespons (menggunakan paket yang melebihi TTL) ke paket dengan nilai TTL kurang dari satu daripada sekadar meneruskan paket dengan nilai TTL lebih besar dari satu."
"Perilaku kedaluwarsa TTL menciptakan vektor serangan penolakan layanan (DoS) terhadap peralatan jaringan. Perangkat jaringan dibuat khusus untuk meneruskan paket biasa secepat mungkin. Ketika paket pengecualian ditemukan, seperti paket dengan nilai TTL yang kedaluwarsa, jumlahnya bervariasi upaya yang dikeluarkan oleh router untuk merespons dengan tepat."
Analisis/Kode:
Di utils.c
, kami mendefinisikan TTL_THRESHOLD
(=10 untuk saat ini). Jika TTL suatu paket lebih rendah dari nilai ini, sebuah bendera akan dikibarkan untuk menunjukkan bahwa TTLnya rendah. Jika terlalu banyak tanda seperti itu yang dikibarkan, bisa jadi itu adalah Serangan Kedaluwarsa TTL.
Contoh file pcap (berisi paket dengan TTL rendah) diambil menggunakan skrip yang terletak di direktori ./attack_scripts/low_ttl
.
Keracunan ARP terdiri dari membodohi host dengan mempercayai bahwa kami adalah gateway default . Korban secara teratur menanyakan alamat MAC gateway default (protokol ARP). Namun penyerang dapat mengirimkan paket kepada korban dengan mengatakan bahwa gateway default berada di alamat MAC lain (misalnya alamat MAC penyerang). Penyerang hanya perlu mengirimkan paket tersebut "secara teratur" sehingga korban "membuang" pesan sebenarnya dari gateway default .
Hal ini memungkinkan penyerang untuk melanjutkan dan menyerang korban dengan berbagai cara: man-in-the-midde, DoS, black-hole, ...
Contoh:
Alamat IP korban adalah 192.168.10.2
dan gateway defaultnya adalah 192.168.1.1
:
sudo arpspoofing -i wlan0 -t 192.168.10.2 192.169.1.1
Penyerang akan terus mengirimkan paket ARP korban yang memberitahukan bahwa 192.168.1.1
ada di alamat MAC penyerang. Dengan begitu korban akan mengirimkan paketnya (bertujuan ke Internet) ke penyerang, yang tidak mengalihkannya ( -r
opsi untuk mengalihkannya).
Analisis/Kode:
Untuk analisisnya, karena kita hanya melihat paket IP (untuk saat ini), p2a
menyimpan dalam daftar tertaut semua pasangan (MAC address, IP address)
yang ditemuinya. Saat memeriksa pasangan baru, ia menelusuri daftar tertaut dan mengembalikan kesalahan jika alamat IP sudah dikaitkan ke alamat MAC lain.
Untuk contoh di atas, skrip kami akan mendeteksi bahwa 192.168.1.1
( default gateway ) dikaitkan dengan dua alamat MAC yang berbeda: yang asli, hingga penyerang masuk dan memberi tahu korban bahwa itu adalah gateway default dan alamat MAC-nya didapat. terkait dengan gateway default (dari sudut pandang korban).
Setiap byte data yang dikirim dalam koneksi TCP memiliki nomor urut terkait. Hal ini ditunjukkan pada bidang nomor urut header TCP .
Ketika soket penerima mendeteksi segmen data yang masuk, ia menggunakan nomor pengakuan di header TCP untuk menunjukkan penerimaan. Setelah mengirimkan paket data, pengirim akan memulai pengatur waktu transmisi ulang dengan panjang yang bervariasi. Jika pengirim tidak menerima pengakuan sebelum waktu habis, pengirim akan menganggap segmen tersebut telah hilang dan akan mengirimkannya kembali.
Kita dapat melihat transmisi ulang TCP ketika paket lain memiliki pengakuan dan nomor urut yang sama dengan paket saat ini.
Transmisi Ulang TCP cukup umum dan bisa menjadi hal yang normal (jika satu paket dikirim ulang karena hilang secara sah), tetapi juga bisa menjadi tanda adanya masalah pada jaringan atau komunikasi.
Eksploitasi tumpang tindih fragmen IP terjadi ketika dua fragmen yang terdapat dalam paket IP yang sama memiliki offset yang menunjukkan bahwa keduanya saling tumpang tindih dalam posisinya di dalam paket. Hal ini bisa berarti bahwa fragmen A sedang sepenuhnya ditimpa oleh fragmen B, atau bahwa fragmen A sebagian sedang ditimpa oleh fragmen B. Beberapa sistem operasi tidak menangani dengan baik fragmen yang tumpang tindih dengan cara ini dan mungkin memunculkan pengecualian atau berperilaku tidak diinginkan lainnya. setelah menerima fragmen yang tumpang tindih. Ini adalah dasar dari serangan tetesan air mata . ( dari Wikipedia )
Fragmen yang tumpang tindih juga dapat digunakan dalam upaya melewati Sistem Deteksi Intrusi . Dalam eksploitasi ini, bagian dari serangan dikirim dalam bentuk fragmen bersama dengan data acak tambahan; fragmen di masa depan dapat menimpa data acak dengan sisa serangan. Jika paket yang telah selesai tidak dipasang kembali dengan benar di IDS, serangan tidak akan terdeteksi.
Serangan tetesan air mata: melibatkan pengiriman fragmen IP yang rusak dengan muatan yang tumpang tindih dan berukuran besar ke mesin target.
BELUM DILAKUKAN
Jika kita mengamati beberapa nilai TTL untuk sesi tertentu, ini bisa berarti bahwa rute telah berubah, artinya paket tidak mengikuti jalur yang sama di akhir koneksi seperti di awal. Hal ini bisa disebabkan oleh perubahan asli dari luar tetapi bisa juga berarti penyerang mengubah rute yang diambil paket (misalnya untuk melakukan serangan MiTM).
Namun, sering kali, satu sesi memiliki dua atau tiga nilai TTL yang berbeda di seluruh koneksi: sering kali, klien dan server tidak menggunakan nilai TTL awal yang sama.
Skrip mengembalikan kesalahan jika ada lebih dari dua nilai TTL berbeda untuk sesi tertentu.
Direktori | Deskripsi/isi |
---|---|
./attack_scripts | Skrip sederhana untuk menguji dan mencatat beberapa ambiguitas TCP (spoofing, TTL rendah) |
./pcap_files | File PCAP untuk menguji p2a |
./tests_libpcap | Dua skrip untuk diuji dan mulai menggunakan libpcap |
libpcap
pcap
pcap
di akhir halaman webtcpdump
libpcap
libpcap
di Cpcap.h