Bagaimana TCP Reset Attack Bekerja

Serangan reset TCP dilakukan menggunakan paket data tunggal yang berukuran tidak lebih dari beberapa byte. Segmen TCP diganti dengan spoofing, dibuat dan ditransmisikan oleh penyerang, trik dua korban untuk mengakhiri koneksi TCP, mengganggu koneksi di antara mereka, yang bisa menjadi sangat penting.


Serangan ini memiliki konsekuensi di dunia nyata. Kekhawatiran penggunaannya disebabkan oleh pengenalan perubahan pada protokol TCP itu sendiri. Serangan itu diyakini merupakan komponen penting dari Tembok Cina Besar (Perisai Emas), yang digunakan oleh pemerintah Cina untuk menyensor Internet di luar Tiongkok. Meskipun memiliki latar belakang yang mengesankan, memahami mekanisme di balik serangan ini tidak selalu membutuhkan pengetahuan mendalam tentang TCP. Tentu saja, pemahaman tentang seluk-beluknya dapat mengajarkan Anda banyak tentang fitur penerapan protokol TCP, dan, seperti yang akan segera kita lihat, Anda bahkan dapat melakukan serangan ini terhadap diri sendiri hanya menggunakan satu laptop.

Dalam posting ini kita:

  • Pelajari dasar-dasar TCP
  • Pelajari cara kerja serangan itu.
  • Mari kita lakukan serangan terhadap diri kita sendiri dengan skrip Python sederhana.

Sebelum kita mulai menganalisis mekanisme serangan, mari kita lihat dulu bagaimana itu digunakan di dunia nyata.

Bagaimana serangan reset TCP digunakan di Great Firewall?


Great Firewall (GFW) adalah seperangkat sistem dan teknik yang digunakan oleh pemerintah Cina untuk menyensor Internet bagi pengguna internal Cina. GFW secara aktif memblokir dan memutuskan koneksi dengan server di dalam dan di luar negara, dan juga secara pasif memonitor lalu lintas Internet dari konten yang dilarang.

Untuk mencegah pengguna bahkan terhubung ke server yang terlarang, GFW menggunakan teknik seperti polusi DNS dan pemblokiran IP(Keduanya biaya artikel terpisah). Namun, terkadang firewall GFW perlu diizinkan untuk membuat koneksi, tetapi kemudian putuskan di tengah. Misalnya, ini diperlukan jika Anda ingin melakukan analisis koneksi yang lambat dan tertunda, misalnya korelasinya dengan tindakan lain. Atau digunakan jika firewall perlu menganalisis data yang dipertukarkan selama proses koneksi, dan kemudian menggunakan informasi ini untuk memutuskan apakah akan melanjutkan atau memblokirnya. Misalnya, lalu lintas ke situs web berita mungkin diizinkan, tetapi video yang mengandung kata kunci terlarang akan disensor.

Untuk ini, GFW membutuhkan alat yang mampu mengganggu koneksi yang sudah ada. Salah satu alat tersebut adalah serangan reset TCP.

Bagaimana cara kerja serangan reset TCP?


Dalam serangan reset TCP, penyerang memutuskan koneksi antara kedua korban, mengirim satu atau kedua pesan palsu yang memberitahu mereka untuk segera memutuskan sambungan. Pesan-pesan ini disebut segmen reset TCP . Dalam operasi normal tanpa partisipasi penyerang, komputer mengirim segmen penurunan TCP ketika mereka menerima lalu lintas TCP yang tidak terduga dan ingin pengirim berhenti mengirimnya.

Serangan reset TCP dengan jahat mengeksploitasi mekanisme ini, menipu korban agar mengakhiri koneksi TCP sebelum waktunya, mengirimkan mereka segmen reset palsu. Jika segmen reset palsu dibuat dengan benar, penerima akan mengambilnya untuk segmen nyata dan menutup koneksi untuk bagiannya, mengganggu transmisi informasi lebih lanjut tentang koneksi ini. Untuk melanjutkan pertukaran data, korban dapat mencoba membuat koneksi TCP baru, tetapi penyerang mungkin memiliki kesempatan untuk mereset koneksi baru ini. Untungnya, karena penyerang membutuhkan waktu untuk membangun dan mengirim paket palsu, menjatuhkan serangan benar-benar efektif hanya terhadap koneksi jangka panjang. Koneksi jangka pendek. misalnya, digunakan untuk mentransfer halaman web kecil, biasanya punya waktu untuk memenuhi misi mereka pada saat ituketika penyerang akan dapat mengatur ulang mereka.

Mengirim segmen TCP palsu dalam beberapa hal merupakan proses yang mudah, karena baik TCP maupun IP tidak memiliki cara mereka sendiri untuk memverifikasi identitas pengirim. Ada ekstensi IP yang disebut IPSec yang menyediakan otentikasi, tetapi tidak begitu banyak digunakan. Penyedia layanan internet harus menolak untuk mengirimkan paket IP yang berasal dari alamat IP yang jelas salah, tetapi diduga bahwa pemeriksaan ini sangat biasa-biasa saja. Yang dapat dilakukan penerima adalah mengambil alamat IP sumber dan port di dalam paket atau segmen pada nilai nominal dan, jika mungkin, gunakan protokol tingkat yang lebih tinggi, seperti TLS , untuk mengidentifikasi pengirim . Namun, karena paket dump TCP adalah bagian dari protokol TCP itu sendiri, mereka tidak dapat diverifikasi menggunakan protokol tingkat tinggi ini.

Meskipun kesederhanaan mengirim segmen palsu, membuat segmen palsu dan mengeksekusi serangan reset TCP yang sukses masih bisa menjadi tugas yang menakutkan. Untuk memahami mengapa ini terjadi, kita perlu memahami operasi protokol TCP.

Cara kerja TCP


Tujuan protokol TCP adalah mengirim penerima salinan yang tepat dari blok data. Misalnya, jika server saya mengirim HTML melalui TCP ke komputer Anda, maka tumpukan TCP komputer Anda (bagian dari sistem operasinya yang memproses TCP) harus menampilkan HTML saya dalam bentuk dan urutan yang persis sama dengan yang dikirim oleh server saya.


Namun, HTML saya tidak ditransmisikan melalui Internet dengan cara yang sangat teratur. Ini dibagi menjadi banyak fragmen kecil (disebut segmen TCP ), yang masing-masing ditransmisikan secara individual melalui Internet dan dibuat ulang dalam urutan yang ditransfer oleh tumpukan TCP komputer Anda. Output yang dikembalikan ini disebut aliran TCP . Setiap segmen TCP ditransmisikan dalam paket IP sendiri , namun, untuk memahami serangan itu, kita tidak perlu mengetahui detail tentang IP.


Mengubah segmen ke aliran memerlukan kehati-hatian karena Internet tidak dapat diandalkan. Segmen TCP mungkin hilang. Mereka dapat rusak, dikirim dua kali, rusak dan mengalami banyak kesalahan. Oleh karena itu, tujuan protokol TCP adalah untuk memastikan pengiriman data yang andal melalui jaringan yang tidak dapat diandalkan. TCP melakukan tugas ini, membutuhkan kedua sisi koneksi untuk menjaga hubungan yang erat antara satu sama lain dan untuk secara konstan mengirimkan informasi tentang blok data mana yang diterima. Ini memungkinkan pengirim untuk memahami data apa yang belum diterima penerima, dan mengirimkan kembali data yang hilang.

Untuk memahami bagaimana proses itu bekerja, kita perlu memahami bagaimana pengirim dan penerima menggunakan nomor urut TCP untuk menandai dan melacak data yang dikirimkan melalui TCP.

Nomor urut TCP


Setiap byte yang dikirimkan melalui koneksi TCP memiliki nomor urut yang ditetapkan oleh pengirim. Mesin penerima menggunakan nomor seri untuk memindahkan data yang diterima ke dalam urutan awal.


Ketika dua mesin menegosiasikan koneksi TCP, setiap mesin mengirimkan nomor urut mulai acak lain . Ini adalah nomor urut yang akan ditetapkan mesin ke byte pertama yang dikirimkannya. Setiap byte berikutnya diberikan nomor urut dari byte sebelumnya ditambah 1. Segmen TCP berisi header TCP , yang merupakan metadata yang melekat pada awal segmen. Nomor urut byte pertama dalam tubuh segmen termasuk dalam header TCP dari segmen ini.

Perlu dicatat bahwa koneksi TCP adalah dua arah, yaitu, data dapat ditransmisikan dalam dua arah, dan setiap mesin dalam koneksi TCP bertindak baik sebagai pengirim dan penerima. Karena itu, setiap mesin harus menetapkan dan memproses set nomor urutnya sendiri.

Konfirmasi penerimaan data


Ketika mesin menerima segmen TCP, ia memberi tahu pengirim segmen bahwa ia diterima. Penerima melakukan ini dengan mengirimkan sebuah segmen ACK(kependekan dari โ€œacknowledgmentโ€), yang berisi nomor urut byte berikutnya yang ia harapkan akan terima dari pengirim. Pengirim menggunakan informasi ini untuk memahami bahwa penerima telah berhasil menerima semua byte lainnya hingga nomor ini.

Segmen ACKditunjukkan oleh kehadiran bendera ACKdan nomor konfirmasi yang sesuai di tajuk TCP segmen tersebut. Hanya ada 6 flag dalam protokol TCP, termasuk (seperti yang akan kita lihat sebentar lagi) flag RST(kependekan dari "reset" - "reset"), yang mengindikasikan segmen reset.


Catatan: TCP juga memungkinkan penggunaan ACK selektif , yang ditransmisikan ketika penerima telah menerima beberapa, tetapi tidak semua, segmen dalam kisaran angka. Misalnya, "Saya menerima byte 1000-3000 dan 4000-5000, tetapi tidak 3001-3999." Untuk kesederhanaan, saya tidak akan mempertimbangkan ACK selektif dalam diskusi kita tentang serangan reset TCP.

Jika pengirim mentransmisikan data tetapi tidak menerimaACKbagi mereka selama interval waktu tertentu, ia mengasumsikan bahwa data telah hilang dan mengirimnya kembali, memberi mereka nomor seri yang sama. Ini berarti bahwa jika penerima menerima byte yang sama dua kali, maka dengan sepele menggunakan nomor urut untuk menyingkirkan duplikat tanpa memutus aliran. Penerima dapat menerima data duplikat karena segmen asli diterima kemudian, setelah dikirim lagi, atau karena segmen asli berhasil diterima, tetapi yang bersangkutan ACKhilang dalam perjalanan ke pengirim.


Meskipun data duplikat seperti itu cukup langka, pemborosan sumber daya yang berlebihan yang disebabkannya tidak menimbulkan masalah. Jika semua data cepat atau lambat mencapai penerima, dan data yang sesuai ACKmencapai pengirim, maka koneksi TCP melakukan tugasnya.

Memilih nomor seri untuk segmen palsu


Saat membuat segmen palsu, RSTpenyerang perlu memberinya nomor seri. Penerima cukup senang bahwa Anda perlu menerima segmen dengan nomor seri yang tidak konsisten dan menghubungkannya secara independen dalam urutan yang benar. Namun, kemampuan mereka terbatas. Jika penerima menerima segmen dengan nomor urut yang โ€œterlaluโ€ rusak, maka segmen tersebut dibuang.

Oleh karena itu, untuk serangan reset TCP yang berhasil, diperlukan nomor urut yang masuk akal. Tapi apa yang dianggap nomor seperti itu? Untuk sebagian besar segmen (meskipun, seperti yang akan kita lihat nanti, bukan untuk RST), jawabannya ditentukan oleh ukuran jendela TCP .

Ukuran jendela TCP


Bayangkan sebuah komputer kuno di awal 1990-an, yang terhubung ke jaringan serat optik gigabit modern. Jaringan ultrafast dapat mentransfer data ke komputer tua ini dengan kecepatan luar biasa, lebih cepat dari yang dapat diproses oleh mesin. Ini akan mengganggu kita, karena segmen TCP tidak dapat dianggap diterima sampai penerima dapat memprosesnya.


Komputer memiliki buffer TCP di mana data kedatangan baru menunggu pemrosesan sementara komputer bekerja pada data yang tiba sebelum itu. Namun, buffer ini memiliki ukuran terbatas. Jika penerima tidak dapat mengatasi jumlah data yang dikirimkan kepadanya oleh jaringan, maka buffer akan meluap. Ketika buffer sudah penuh, penerima tidak punya pilihan selain menyingkirkan data yang berlebihan. Penerima tidak mengirim ACKuntuk data yang dibuang, jadi pengirim harus mengirim ulang mereka ketika ada ruang kosong di buffer penerima. Tidak masalah seberapa cepat jaringan dapat mengirimkan data jika penerima tidak punya waktu untuk mengatasinya.

Bayangkan seorang teman yang terlalu bersemangat yang mengirimi Anda seluruh aliran surat ke email Anda lebih cepat daripada yang bisa Anda baca. Ada ruang penyangga tertentu di dalam kotak surat Anda, tetapi setelah penuh semua surat yang tidak ditempatkan akan jatuh ke tanah, di mana rubah dan makhluk lain akan memakannya. Seorang teman harus mengirim ulang surat-surat yang telah dimakannya, tetapi untuk sekarang Anda akan punya waktu untuk menerima pesan-pesan sebelumnya. Mengirim terlalu banyak huruf atau volume data yang tidak dapat diproses oleh penerima adalah pemborosan energi dan saluran transmisi.

"Terlalu banyak" - berapa banyak data itu? Bagaimana pengirim memahami kapan mengirim lebih banyak data, dan kapan layak menunggu? Di sinilah ukuran jendela TCP berguna.. Ukuran jendela penerima adalah jumlah maksimum byte yang tidak diakui yang dapat ditransfer pengirim kepadanya kapan saja. Misalkan penerima melaporkan bahwa ukuran jendelanya adalah 100.000 (kami akan segera mengetahui bagaimana ia melewati nilai ini), sehingga pengirim mengirim 100.000 byte. Misalkan pada saat pengirim mentransmisikan seratus ribu byte, penerima mengirim segmen ACKuntuk 10.000 byte pertama. Ini berarti bahwa 90.000 byte belum dikonfirmasi. Karena ukuran jendela 100.000, pengirim dapat mentransfer 10.000 byte sebelum ia harus menunggu yang baru ACK. Jika setelah mengirim 10.000 byte tambahan ini lebih lanjutACKjika tidak diterima, maka pengirim akan mencapai batas 100.000 byte yang belum dikonfirmasi. Akibatnya, pengirim harus menunggu dan berhenti mengirim data (kecuali pengiriman ulang data yang dianggapnya hilang) sampai ia menerima yang baru ACK.


Masing-masing sisi koneksi TCP memberitahukan sisi lain ukuran jendelanya selama proses jabat tangan yang dilakukan ketika koneksi dibuka. Selain itu, ukuran jendela dapat diubah secara dinamis selama proses koneksi. Komputer dengan buffer TCP besar dapat mengumumkan ukuran jendela besar untuk memaksimalkan throughput. Ini memungkinkan mesin yang berkomunikasi dengannya secara terus-menerus mengirimkan data melalui koneksi TCP tanpa berhenti atau menunggu konfirmasi. Komputer dengan buffer TCP kecil mungkin terpaksa melaporkan ukuran jendela kecil. Terkadang pengirim benar-benar mengisi jendela dan dipaksa untuk menunggu sampai beberapa segmen dikonfirmasi. Bandwidth menderita karena ini, tetapi perlu bahwa buffer TCP tidak meluap.


Ukuran jendela TCP adalah batasan ketat pada jumlah data yang dikirim yang belum dikonfirmasi. Kita dapat menggunakannya untuk menghitung nomor urut maksimum yang mungkin (yang dalam persamaan di bawah ini saya tunjuk sebagai max_seq_no), yang dapat dikirim pengirim pada saat ini:

max_seq_no = max_acked_seq_no + window_size

max_acked_seq_no- Ini adalah nomor urut maksimum yang telah dikirim oleh penerima ACK. Ini adalah nomor urut maksimum yang diketahui pengirim bahwa penerima telah tepat menerima. Karena pengirim hanya dapat mengirimkan window_sizebyte yang belum dikonfirmasi, nomor urutan maksimum yang dapat dikirim adalah max_acked_seq_no + window_size.

Karena itu, spesifikasi TCP menyatakan bahwa penerima harus mengabaikan data yang diterimanya yang memiliki nomor seri di luar jendela yang valid. Misalnya, jika penerima telah mengkonfirmasi semua byte hingga 15.000, dan ukuran jendelanya adalah 30.000, maka ia akan menerima data apa pun dengan nomor seri dalam kisaran dari 15.000 hingga (15.000 + 30.000 = 45.000). Selain itu, penerima sepenuhnya mengabaikan data dengan nomor seri di luar interval ini. Jika segmen tersebut berisi data, beberapa di antaranya berada di dalam jendela ini, dan beberapa di luarnya, maka data di dalam jendela akan diterima dan dikonfirmasi, tetapi data di luar itu akan dibuang. Perhatikan bahwa kami masih mengabaikan kemungkinan selektif yangACK disentuh sebentar di awal posting.

Dalam kasus sebagian besar segmen TCP, aturan ini memberi kita interval nomor urut yang dapat diterima. Namun, seperti yang disebutkan sebelumnya, RSTpembatasan yang diberlakukan pada segmen lebih ketat daripada pembatasan pada segmen transmisi data biasa. Seperti yang akan kita lihat nanti, ini dilakukan untuk mempersulit pelaksanaan varian serangan reset TCP yang disebut "blind TCP reset attack" .

Nomor Urutan yang Dapat Diterima untuk Segmen RST


Segmen reguler diterima jika nomor urutnya berada di antara nomor urut yang diharapkan berikutnya dan nomor ini ditambah ukuran jendela. Namun, paket RSThanya diterima ketika nomor urut mereka persis sama dengan nomor urut yang diharapkan berikutnya. Mari kita kembali ke contoh sebelumnya, di mana penerima mengirim nomor konfirmasi 15.000. Agar paket RSTditerima, nomor urutnya harus tepat 15.000. Jika penerima menerima segmen RSTdengan nomor urut tidak sama dengan 15.000, maka ia tidak akan menerimanya.


Jika nomor urut di luar interval, maka penerima sepenuhnya mengabaikannya. Namun, jika berada di dalam jendela nomor urut yang diharapkan, penerima mengirimkan "tantangan ACK" ("panggilan ACK"). Ini adalah segmen yang memberi tahu pengirim bahwa segmen RSTmemiliki nomor urut yang tidak valid. Dia juga memberi tahu pengirim nomor urut yang diharapkan penerima. Pengirim dapat menggunakan informasi ini dari ACKpanggilan untuk membuat ulang dan mengirim ulang RST.

Hingga 2010, TCP tidak menerapkan batasan segmen tambahan ini RST. Segmen RSTditerima atau ditolak sesuai dengan aturan yang sama seperti yang lainnya. Namun, ini terlalu disederhanakan serangan blind blind reset TCP .

Serangan TCP buta


Jika penyerang memiliki kemampuan untuk mencegat lalu lintas yang dipertukarkan antara korbannya, ia dapat membaca nomor seri dan konfirmasi paket TCP para korban. Dia dapat menggunakan informasi ini untuk memilih nomor seri mana yang akan diberikan kepada segmen palsu RST. Namun, jika penyerang tidak dapat mencegat lalu lintas para korban, ia tidak akan tahu nomor urut yang dimasukkan. Tapi dia masih bisa mentransfer sejumlah segmen RSTdengan nomor seri yang berbeda, berharap salah satu dari mereka ternyata benar. Serangan semacam itu disebut serangan reset TCP buta.

Seperti yang telah kami katakan, dalam versi awal protokol TCP, penyerang hanya perlu mengambil nomor seriRSTdalam jendela TCP penerima. Sebuah artikel berjudul "Slipping in the Window" menunjukkan bahwa ini membuat serangan buta terlalu mudah, karena untuk kesuksesan yang hampir pasti, seorang penyerang hanya perlu mengirim puluhan ribu segmen. Untuk mengatasi ini, aturan yang memaksa penerima untuk menerima segmen RSTdiganti dengan kriteria yang lebih ketat yang dijelaskan di atas. Berkat aturan baru untuk melakukan serangan reset TCP, jutaan segmen perlu dikirim secara membabi buta, yang membuatnya tidak bisa direalisasikan. Lihat RFC-5963 untuk detailnya .

Lakukan serangan reset TCP terhadap diri kita sendiri


Catatan: Saya menguji proses ini pada OSX, tetapi menerima beberapa komentar bahwa itu tidak berfungsi dengan baik di Linux.

Sekarang kita tahu segalanya tentang mengeksekusi serangan reset TCP. Penyerang harus:

  • Menonton lalu lintas jaringan ( "mengendus" itu) antara dua korban
  • Mengendus segmen TCP dengan bendera diaktifkan ACKdan membaca nomor yang dikonfirmasi
  • Buat segmen TCP yang salah dengan bendera dihidupkan RSTdan nomor urut sama dengan nomor yang dikonfirmasi dari segmen yang dicegat (perhatikan bahwa ini menyiratkan transmisi lambat, jika tidak, nomor urut yang dipilih akan dengan cepat menjadi usang. (Untuk meningkatkan peluang keberhasilan, Anda dapat mentransfer beberapa segmen RSTdengan interval besar nomor urut) .)
  • Kirim segmen palsu ke satu atau kedua korban, berharap ini akan memutus koneksi TCP mereka

Untuk berlatih, mari kita lakukan serangan TCP pada diri kita di komputer yang sama, berkomunikasi dengan diri kita sendiri melalui localhost. Untuk ini kita perlu:

  1. Konfigurasikan koneksi TCP antara dua terminal windows
  2. Tulis sebuah program serangan yang akan menangani penghirupan lalu lintas
  3. Ubah program sehingga menghasilkan dan mengirimkan segmen palsu RST.

Mari kita mulai.

1. Membangun koneksi TCP antara dua terminal windows


Kami akan mengonfigurasi koneksi TCP menggunakan alat ini netcat, yang secara default tersedia di banyak sistem operasi. Klien TCP lainnya akan melakukannya . Di jendela terminal pertama, kami akan menjalankan perintah berikut:

nc -nvl 8000

Perintah ini memulai mendengarkan server TCP pada port di mesin lokal kami 8000. Di jendela terminal kedua, jalankan perintah berikut:

nc 127.0.0.1 8000

Perintah ini mencoba membuat koneksi TCP ke mesin dengan alamat IP 127.0.0.1port 8000. Sekarang, di antara dua jendela terminal, koneksi TCP harus dibuat. Coba masukkan sesuatu dalam satu jendela - data harus dikirim melalui koneksi TCP dan muncul di jendela lain.


2. Mengendus Lalu Lintas


Kami akan menulis program serangan yang melakukan sniffing lalu lintas menggunakan scapypustaka jaringan Python yang populer. Program ini menggunakan scapy untuk membaca data yang ditransfer antara dua jendela terminal, meskipun itu bukan bagian dari koneksi.

Kode program diposting di repositori saya di GitHub . Program mengendus lalu lintas koneksi dan menampilkannya di terminal. Inti utama kode adalah pemanggilan metode sniffdari pustaka yang scapyterletak di akhir file:

t = sniff(
        iface='lo0',
        lfilter=is_packet_tcp_client_to_server(localhost_ip, localhost_server_port, localhost_ip),
        prn=log_packet,
        count=50)

Sepotong kode ini memberitahu kita scapyuntuk mengendus paket pada antarmuka lo0dan menangkap detail semua paket sebagai bagian dari koneksi TCP kami. Panggilan memiliki parameter berikut:

  • iface- pesanan scapyuntuk mendengarkan antarmuka jaringan lo0, atau localhost
  • lfilter โ€” , scapy , IP- localhost . , , lo0. , .
  • prn โ€” , scapy , lfilter. . , RST.
  • count โ€” , scapy .

Untuk menguji program ini, konfigurasikan koneksi TCP dari langkah 1. Kloning repositori GitHub saya, ikuti instruksi konfigurasi, dan jalankan program di jendela ketiga terminal. Masukkan beberapa teks ke salah satu terminal koneksi TCP. Anda harus melihat bahwa program akan mulai merekam informasi tentang segmen koneksi.

3. Mengirim paket palsu RST


Kami telah membuat koneksi, dan program ini dapat mengendus semua segmen TCP yang melewatinya. Satu-satunya yang tersisa bagi kami adalah memodifikasi program sehingga melakukan serangan reset TCP dengan mengirimkan segmen palsu RST. Untuk melakukan ini, kami akan mengubah fungsi prn(lihat daftar parameter di atas), yang dipanggil scapyuntuk paket yang memenuhi persyaratan fungsi lfilter. Dalam versi modifikasi fungsi, alih-alih hanya memperbaiki paket yang sesuai, kami mempelajarinya, mengekstrak parameter yang diperlukan, dan menggunakan parameter ini untuk membangun dan mengirim segmen RST.

Misalkan kita mencegat segmen dari (src_ip, src_port)k (dst_ip, dst_port). Ia memiliki satu set bendera ACKdan nomor konfirmasi adalah 100.000. Untuk membuat dan mengirim segmen, kami:

  • IP- , . , . , .
  • RST , , RST
  • , ,
  • send scapy โ€” .

Untuk memodifikasi program kami sebelumnya sesuai kebutuhan, batalkan komentar pada baris ini dan beri komentar pada baris di atasnya.

Sekarang kita siap untuk serangan skala penuh. Konfigurasikan koneksi TCP sesuai dengan langkah 1. Jalankan program serangan dari langkah 2 di jendela ketiga terminal. Kemudian masukkan beberapa teks di salah satu terminal koneksi TCP. Di terminal tempat Anda memasukkan teks, koneksi TCP akan tiba-tiba dan secara misterius terputus. Serangan sudah selesai!


Pekerjaan selanjutnya


  1. Lanjutkan bereksperimen dengan alat serangan. Lacak apa yang terjadi jika Anda menambah atau mengurangi 1 dari nomor urut paket RST. Pastikan bahwa itu harus persis sama dengan nilai ackpaket yang dicegat.
  2. Wireshark lo0 . TCP-, RST. ip.src == 127.0.0.1 && ip.dst == 127.0.0.1 && tcp.port == 8000 .
  3. , . RST, RST , . , RST, .


Serangan reset TCP sangat dalam dan sederhana pada saat bersamaan. Semoga berhasil dengan eksperimen Anda dan beri tahu saya jika Anda memiliki pertanyaan atau komentar.

All Articles