Semuanya sangat buruk atau intersepsi lalu lintas jenis baru

13 Maret kepada kelompok kerja anti-penyalahgunaan RIPE tawaran telah diterima menganggap pembajakan BGP (hjjack) sebagai pelanggaran kebijakan RIPE. Jika proposal diterima, penyedia Internet yang diserang oleh intersepsi lalu lintas akan memiliki kesempatan untuk mengirimkan permintaan khusus untuk mengungkap penyerang. Jika tim peninjau mengumpulkan cukup bukti pendukung, LIR yang menjadi sumber penyadapan BGP akan dianggap sebagai penyusup dan dapat dicabut status LIR-nya. Ada juga beberapa argumen menentang ini perubahan.

Dalam publikasi ini kami ingin menunjukkan contoh serangan yang tidak hanya menanyakan penyerang sebenarnya, tetapi juga seluruh daftar awalan yang terpengaruh. Selain itu, serangan semacam itu kembali menimbulkan pertanyaan tentang motif intersepsi lalu lintas jenis ini di masa depan.

Selama beberapa tahun terakhir, hanya konflik seperti MOAS (Multiple Origin Autonomous System) yang diliput media sebagai intersepsi BGP. MOAS adalah kasus khusus di mana dua sistem otonom yang berbeda mengiklankan awalan yang bertentangan dengan ASN yang sesuai di AS_PATH (ASN pertama di AS_PATH, selanjutnya disebut ASN asal). Namun, setidaknya kami dapat menyebutkannya 3 tipe tambahan intersepsi lalu lintas, memungkinkan penyerang memanipulasi atribut AS_PATH untuk berbagai tujuan, termasuk melewati pendekatan modern untuk pemfilteran dan pemantauan. Jenis serangan yang diketahui Pilosova-Kapely - jenis intersepsi yang terakhir, tetapi sama sekali tidak penting. Sangat mungkin bahwa serangan seperti ini persis seperti yang kita lihat dalam beberapa minggu terakhir. Peristiwa semacam itu bersifat wajar dan mempunyai akibat yang cukup serius.

Mereka yang mencari versi TL;DR dapat menggulir ke subtitle "Perfect Attack".

Latar belakang jaringan

(untuk membantu Anda lebih memahami proses yang terlibat dalam insiden ini)

Jika Anda ingin mengirim sebuah paket dan Anda memiliki beberapa awalan di tabel routing yang berisi alamat IP tujuan, maka Anda akan menggunakan rute untuk awalan dengan panjang terpanjang. Jika ada beberapa rute berbeda untuk awalan yang sama di tabel routing, Anda akan memilih yang terbaik (sesuai dengan mekanisme pemilihan jalur terbaik).

Pendekatan penyaringan dan pemantauan yang ada berupaya menganalisis rute dan membuat keputusan dengan menganalisis atribut AS_PATH. Router dapat mengubah atribut ini ke nilai apa pun selama iklan. Cukup menambahkan ASN pemilik di awal AS_PATH (sebagai ASN asal) mungkin cukup untuk melewati mekanisme pemeriksaan asal saat ini. Selain itu, jika ada rute dari ASN yang diserang ke Anda, AS_PATH rute ini dapat diekstraksi dan digunakan di iklan Anda yang lain. Pemeriksaan validasi khusus AS_PATH apa pun untuk pengumuman yang Anda buat pada akhirnya akan lolos.

Masih ada beberapa keterbatasan yang perlu disebutkan. Pertama, dalam hal pemfilteran awalan oleh penyedia upstream, rute Anda mungkin masih difilter (bahkan dengan AS_PATH yang benar) jika awalan tersebut bukan milik kerucut klien Anda yang dikonfigurasi di upstream. Kedua, AS_PATH yang valid bisa menjadi tidak valid jika rute yang dibuat diiklankan ke arah yang salah sehingga melanggar kebijakan perutean. Terakhir, rute apa pun dengan awalan yang melanggar panjang ROA dapat dianggap tidak valid.

Kejadian

Beberapa minggu yang lalu kami menerima keluhan dari salah satu pengguna kami. Kami melihat rute dengan awalan ASN dan /25 asalnya, sementara pengguna mengklaim bahwa dia tidak mengiklankannya.

TABLE_DUMP2|1554076803|B|xxx|265466|78.163.7.0/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.7.128/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.18.0/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.18.128/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.226.0/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.163.226.128/25|265466 262761 263444 22356 3491 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.164.7.0/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||
TABLE_DUMP2|1554076803|B|xxx|265466|78.164.7.128/25|265466 262761 263444 6762 2914 9121|INCOMPLETE|xxx|0|0||NAG||

Contoh pengumuman awal bulan April 2019

NTT di jalur untuk awalan /25 membuatnya sangat mencurigakan. LG NTT tidak mengetahui rute tersebut pada saat kejadian. Jadi ya, beberapa operator membuat seluruh AS_PATH untuk awalan ini! Memeriksa router lain mengungkapkan satu ASN tertentu: AS263444. Setelah melihat rute lain dengan sistem otonom ini, kami menghadapi situasi berikut:

TABLE_DUMP2|1554076800|B|xxx|265466|1.6.36.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.38.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.23.143.0/25|265466 262761 263444 22356 6762 9498 9730 45528|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.23.143.128/25|265466 262761 263444 22356 6762 9498 9730 45528|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.24.0.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.24.128.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.26.0.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.26.128.0/17|265466 262761 263444 6762 4837|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.64.96.0/20|265466 262761 263444 6762 3491 4760|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.64.112.0/20|265466 262761 263444 6762 3491 4760|IGP|xxx|0|0||NAG||

Coba tebak apa yang salah di sini

Tampaknya seseorang mengambil awalan dari rute tersebut, membaginya menjadi dua bagian, dan mengiklankan rute tersebut dengan AS_PATH yang sama untuk kedua awalan tersebut.

TABLE_DUMP2|1554076800|B|xxx|263444|1.6.36.0/23|263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|263444|1.6.38.0/23|263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|61775|1.6.36.0/23|61775 262761 263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|61775|1.6.38.0/23|61775 262761 263444 52320 9583|IGP|xxx|0|0|32:12595 52320:21311 65444:20000|NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.36.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|265466|1.6.38.0/23|265466 262761 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|28172|1.6.36.0/23|28172 52531 263444 52320 9583|IGP|xxx|0|0||NAG||
TABLE_DUMP2|1554076800|B|xxx|28172|1.6.38.0/23|28172 52531 263444 52320 9583|IGP|xxx|0|0||NAG||

Contoh rute untuk salah satu pasangan awalan terpisah

Beberapa pertanyaan muncul sekaligus. Adakah yang benar-benar mencoba intersepsi jenis ini dalam praktiknya? Adakah yang pernah mengambil rute ini? Awalan apa yang terpengaruh?

Di sinilah rangkaian kegagalan dan kekecewaan terhadap kondisi kesehatan Internet saat ini dimulai.

Jalan kegagalan

Hal pertama yang pertama. Bagaimana kita dapat menentukan router mana yang menerima rute yang disadap tersebut dan lalu lintas mana yang dapat dialihkan hari ini? Kami pikir kami akan memulai dengan awalan /25 karena "tidak dapat didistribusikan secara global". Seperti yang bisa Anda tebak, kami salah besar. Metrik ini ternyata terlalu berisik dan rute dengan awalan seperti itu dapat muncul bahkan dari operator Tingkat 1. Misalnya, NTT memiliki sekitar 50 prefiks yang didistribusikan ke kliennya sendiri. Di sisi lain, metrik ini buruk karena awalan tersebut dapat disaring jika operator menggunakannya memfilter awalan kecil, ke segala arah. Oleh karena itu, metode ini tidak cocok untuk menemukan semua operator yang lalu lintasnya dialihkan akibat kejadian tersebut.

Ide bagus lainnya yang kami pikir adalah untuk melihatnya POV. Khusus untuk rute yang melanggar aturan maxLength ROA terkait. Dengan cara ini kita dapat menemukan jumlah ASN asal berbeda dengan status Tidak Valid yang terlihat oleh AS tertentu. Namun, ada masalah β€œkecil”. Rata-rata (median dan modus) dari angka ini (jumlah ASN asal yang berbeda) adalah sekitar 150 dan, meskipun kita menyaring awalan yang kecil, jumlahnya tetap di atas 70. Keadaan ini memiliki penjelasan yang sangat sederhana: hanya ada a hanya sedikit operator yang sudah menggunakan filter ROA dengan kebijakan β€œreset Rute tidak valid” di titik masuk, sehingga di mana pun rute dengan pelanggaran ROA muncul di dunia nyata, rute tersebut dapat menyebar ke segala arah.

Dua pendekatan terakhir memungkinkan kami menemukan operator yang melihat insiden kami (karena insidennya cukup besar), namun secara umum pendekatan tersebut tidak dapat diterapkan. Oke, tapi bisakah kita menemukan penyusupnya? Apa saja fitur umum manipulasi AS_PATH ini? Ada beberapa asumsi dasar:

  • Awalannya belum pernah terlihat dimanapun sebelumnya;
  • ASN asal (pengingat: ASN pertama di AS_PATH) valid;
  • ASN terakhir di AS_PATH adalah ASN penyerang (jika tetangganya memeriksa ASN tetangga di semua rute masuk);
  • Serangan itu berasal dari satu penyedia.

Jika semua asumsi benar, maka semua rute yang salah akan menampilkan ASN penyerang (kecuali ASN asal) dan, dengan demikian, ini merupakan titik "kritis". Di antara pembajak sebenarnya adalah AS263444, meskipun ada juga yang lainnya. Bahkan ketika kami membuang rute kejadian dari pertimbangan. Mengapa? Titik kritis mungkin tetap penting bahkan untuk rute yang benar. Hal ini bisa disebabkan oleh buruknya konektivitas di suatu wilayah atau keterbatasan visibilitas kita.

Hasilnya, terdapat cara untuk mendeteksi penyerang, namun hanya jika semua kondisi di atas terpenuhi dan hanya jika intersepsi cukup besar untuk melewati ambang batas pemantauan. Jika beberapa faktor ini tidak terpenuhi, dapatkah kita mengidentifikasi awalan yang menderita akibat intersepsi tersebut? Untuk operator tertentu - ya.

Saat penyerang membuat rute yang lebih spesifik, awalan tersebut tidak diiklankan oleh pemilik sebenarnya. Jika Anda memiliki daftar dinamis dari semua awalannya, maka dimungkinkan untuk membuat perbandingan dan menemukan rute yang lebih spesifik dan terdistorsi. Kami mengumpulkan daftar awalan ini menggunakan sesi BGP kami, karena kami tidak hanya diberikan daftar lengkap rute yang terlihat oleh operator saat ini, tetapi juga daftar semua awalan yang ingin diiklankan ke dunia. Sayangnya, kini ada puluhan pengguna Radar yang tidak menyelesaikan bagian terakhir dengan benar. Kami akan segera memberi tahu mereka dan mencoba menyelesaikan masalah ini. Semua orang dapat bergabung dengan sistem pemantauan kami sekarang.

Jika kita kembali ke kejadian awal, baik penyerang maupun area penyebarannya kita deteksi dengan mencari titik-titik kritis. Anehnya, AS263444 tidak mengirimkan rute palsu ke semua kliennya. Meski ada momen yang aneh.

BGP4MP|1554905421|A|xxx|263444|178.248.236.0/24|263444 6762 197068|IGP|xxx|0|0|13106:12832 22356:6453 65444:20000|NAG||
BGP4MP|1554905421|A|xxx|263444|178.248.237.0/24|263444 6762 197068|IGP|xxx|0|0|13106:12832 22356:6453 65444:20000|NAG||

Contoh terbaru dari upaya mencegat ruang alamat kami

Ketika yang lebih spesifik dibuat untuk awalan kami, AS_PATH yang dibuat khusus digunakan. Namun, AS_PATH ini tidak dapat diambil dari rute kami sebelumnya. Kami bahkan tidak berkomunikasi dengan AS6762. Melihat rute lain dalam kejadian tersebut, beberapa di antaranya memiliki AS_PATH asli yang pernah digunakan sebelumnya, sementara yang lain tidak, meskipun terlihat seperti yang asli. Mengubah AS_PATH juga tidak masuk akal, karena lalu lintas akan dialihkan ke penyerang, tetapi rute dengan AS_PATH "buruk" dapat disaring oleh ASPA atau mekanisme pemeriksaan lainnya. Di sini kita berpikir tentang motivasi pembajak. Saat ini kami tidak memiliki cukup informasi untuk memastikan bahwa insiden ini adalah serangan yang direncanakan. Namun demikian, hal itu mungkin saja terjadi. Mari kita coba membayangkan, meskipun masih hipotetis, namun berpotensi cukup nyata, sebuah situasi.

Serangan Sempurna

Apa yang kita miliki? Misalkan Anda adalah penyedia angkutan umum yang menyiarkan rute untuk klien Anda. Jika klien Anda memiliki banyak kehadiran (multihome), maka Anda hanya akan menerima sebagian dari lalu lintas mereka. Namun semakin banyak traffic, semakin banyak penghasilan Anda. Jadi jika Anda mulai mengiklankan awalan subnet dari rute yang sama dengan AS_PATH yang sama, Anda akan menerima sisa lalu lintasnya. Alhasil, sisa uangnya.

Akankah ROA membantu di sini? Mungkin ya, jika Anda memutuskan untuk berhenti menggunakannya sepenuhnya panjang maksimal. Selain itu, sangat tidak diinginkan untuk memiliki catatan ROA dengan awalan yang berpotongan. Bagi beberapa operator, pembatasan seperti itu tidak dapat diterima.

Mengingat mekanisme keamanan perutean lainnya, ASPA juga tidak akan membantu dalam kasus ini (karena menggunakan AS_PATH dari rute yang valid). BGPSec masih bukan pilihan optimal karena tingkat adopsi yang rendah dan kemungkinan serangan downgrade yang masih ada.

Jadi kami memiliki keuntungan yang jelas bagi penyerang dan kurangnya keamanan. Campuran yang bagus!

Apa yang harus saya lakukan?

Langkah yang jelas dan paling drastis adalah meninjau kebijakan perutean Anda saat ini. Bagi ruang alamat Anda menjadi bagian-bagian terkecil (tidak tumpang tindih) yang ingin Anda iklankan. Tandatangani ROA hanya untuk mereka, tanpa menggunakan parameter maxLength. Dalam hal ini, POV Anda saat ini dapat menyelamatkan Anda dari serangan semacam itu. Namun, sekali lagi, bagi beberapa operator pendekatan ini tidak masuk akal karena hanya menggunakan rute yang lebih spesifik. Semua masalah dengan status ROA dan objek rute saat ini akan dijelaskan di salah satu materi kami di masa mendatang.

Selain itu, Anda dapat mencoba memantau intersepsi tersebut. Untuk melakukan ini, kami memerlukan informasi yang dapat dipercaya tentang awalan Anda. Jadi, jika Anda mengadakan sesi BGP dengan kolektor kami dan memberi kami informasi tentang visibilitas Internet Anda, kami dapat menemukan ruang untuk insiden lainnya. Bagi mereka yang belum terhubung ke sistem pemantauan kami, daftar rute dengan awalan Anda saja sudah cukup. Jika Anda memiliki sesi dengan kami, harap periksa apakah semua rute Anda telah terkirim. Sayangnya, hal ini perlu diingat karena beberapa operator lupa satu atau dua awalan sehingga mengganggu metode pencarian kami. Jika dilakukan dengan benar, kami akan memiliki data yang dapat diandalkan tentang awalan Anda, yang di masa depan akan membantu kami mengidentifikasi dan mendeteksi jenis intersepsi lalu lintas ini (dan lainnya) secara otomatis untuk ruang alamat Anda.

Jika Anda menyadari adanya intersepsi terhadap lalu lintas Anda secara real-time, Anda dapat mencoba mengatasinya sendiri. Pendekatan pertama adalah mengiklankan sendiri rute dengan awalan yang lebih spesifik ini. Jika terjadi serangan baru pada awalan ini, ulangi.

Pendekatan kedua adalah menghukum penyerang dan mereka yang menjadi titik kritisnya (untuk rute yang baik) dengan memutus akses rute Anda ke penyerang. Hal ini dapat dilakukan dengan menambahkan ASN penyerang ke AS_PATH rute lama Anda dan dengan demikian memaksa mereka untuk menghindari AS tersebut menggunakan mekanisme deteksi loop bawaan di BGP untuk kebaikan Anda.

Sumber: www.habr.com

Tambah komentar