Pada 13 Maret, Kelompok Kerja Anti-Penyalahgunaan RIPE
menerima proposal untuk mempertimbangkan pembajakan sebagai pelanggaran terhadap kebijakan RIPE. Jika tawaran itu diterima, penyedia internet yang diserang oleh lalu lintas akan dapat mengirim permintaan khusus untuk membawa penyerang ke air bersih. Jika kelompok ahli mengumpulkan cukup bukti pendukung, maka LIR tersebut, yang merupakan sumber intersepsi BGP, akan dianggap sebagai pengganggu dan dapat dicabut status LIR. Ada beberapa argumen yang
menentang perubahan
ini .
Dalam publikasi ini, kami ingin menunjukkan contoh serangan ketika tidak hanya penyerang yang sebenarnya ragu, tetapi seluruh daftar awalan yang terpengaruh. Selain itu, serangan seperti itu lagi-lagi menimbulkan pertanyaan tentang motif untuk intersepsi masa depan dari jenis lalu lintas ini.
Selama beberapa tahun terakhir, hanya konflik seperti MOAS (Multiple Origin Autonomous System) yang dilaporkan di media sebagai penyadapan BGP. MOAS adalah kasus khusus ketika dua sistem otonom yang berbeda mengumumkan awalan yang bertentangan dengan nomor ASN yang sesuai di AS_PATH (ASN pertama di AS_PATH, selanjutnya disebut ASN asal). Namun, kami dapat menyebutkan setidaknya
3 jenis intersepsi lalu lintas
tambahan yang memungkinkan penyerang memanipulasi atribut AS_PATH untuk tujuan yang berbeda, termasuk demi menghindari pendekatan modern untuk memfilter dan memantau. Jenis
serangan Pilosov-Kapela yang terkenal adalah tipe terakhir dari intersepsi semacam itu, tetapi sama sekali tidak signifikan. Mungkin saja inilah serangan yang telah kami amati selama beberapa minggu terakhir. Peristiwa semacam itu memiliki karakter yang dapat dimengerti dan konsekuensi yang cukup serius.
Mereka yang mencari versi TL; DR dapat menggulir ke subjudul "Serangan Sempurna".
Latar belakang jaringan
(sehingga Anda lebih memahami proses yang terlibat dalam insiden ini)Jika Anda ingin mengirim paket dan Anda memiliki beberapa awalan di tabel perutean yang berisi alamat IP tujuan, maka Anda akan menggunakan rute untuk awalan dengan panjang maksimum. Jika dalam tabel routing ada beberapa rute berbeda untuk satu awalan, Anda akan memilih yang terbaik (sesuai dengan mekanisme untuk memilih jalur terbaik).
Pendekatan penyaringan dan pemantauan yang ada mencoba menganalisis rute dan membuat keputusan dengan menganalisis atribut AS_PATH. Router dapat mengubah atribut ini ke nilai apa pun selama pengumuman. Hanya menambahkan ASN pemilik di awal AS_PATH (seperti ASN asal) mungkin cukup untuk mem-bypass mekanisme verifikasi sumber saat ini. Selain itu, jika ada rute dari ASN yang diserang ke Anda, menjadi mungkin untuk mengekstrak dan menggunakan AS_PATH dari rute ini dalam pengumuman Anda yang lain. Validasi apa pun hanya AS_PATH untuk pengumuman buatan Anda pada akhirnya akan berlalu.
Ada beberapa batasan yang patut diperhatikan. Pertama, dalam kasus penyaringan awalan oleh penyedia yang lebih tinggi, rute Anda masih dapat difilter (bahkan dengan AS_PATH yang benar) jika awalan itu bukan milik kerucut klien Anda yang dikonfigurasi di hulu. Kedua, AS_PATH yang valid dapat menjadi tidak valid jika rute yang dibuat diiklankan dalam arah yang salah dan dengan demikian melanggar kebijakan perutean. Dan yang terakhir - rute apa pun dengan awalan yang melanggar panjang ROA dapat dianggap tidak valid.
Insiden
Beberapa minggu yang lalu, kami menerima keluhan dari salah satu pengguna. Kami melihat rute dengan awalan ASN dan / 25 asalnya, sementara pengguna mengklaim bahwa mereka belum mengumumkannya.
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 di awal April 2019NTT dalam perjalanan untuk awalan / 25 membuatnya sangat mencurigakan. Selama insiden itu, LG NTT tidak tahu apa-apa tentang rute ini. Jadi ya, semacam operator membuat AS_PATH keseluruhan untuk awalan ini! Pengujian pada router lain memungkinkan Anda untuk menyoroti satu ASN khusus: AS263444. Melihat rute lain dengan sistem otonom ini, kami dihadapkan pada 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 siniTampaknya seseorang mengambil awalan dari rute, membaginya menjadi dua bagian dan mengumumkan rute dengan AS_PATH yang sama untuk dua awalan ini.
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 splitBeberapa pertanyaan muncul sekaligus. Adakah yang benar-benar mencoba jenis intersepsi ini dalam praktik? Adakah yang mengambil rute ini? Awalan apa yang terpengaruh?
Di sinilah serangkaian kegagalan kami dimulai dan putaran kekecewaan pada kesehatan Internet saat ini.
Jalan kegagalan
Hal pertama yang pertama. Bagaimana kita bisa menentukan router mana yang telah menerima rute yang dicegat dan lalu lintas siapa yang dapat dialihkan hari ini? Kami berpikir untuk memulai dengan awalan / 25, karena mereka "tidak bisa memiliki distribusi global." Seperti yang bisa Anda tebak, kami sangat salah. Metrik ini terlalu berisik dan rute dengan awalan seperti itu dapat muncul bahkan dari operator Tier-1. Sebagai contoh, NTT memiliki sekitar 50 awalan sehingga didistribusikan di antara kliennya sendiri. Di sisi lain, metrik ini buruk, karena awalan seperti itu dapat disaring jika operator menerapkan
penyaringan awalan kecil di semua arah. Oleh karena itu, metode ini tidak cocok untuk mencari semua operator yang lalu lintasnya dialihkan sebagai akibat dari insiden tersebut.
Ide bagus lain yang kami pikir adalah melihat
POV . Terutama pada rute yang melanggar aturan maxLength dari ROA yang sesuai. Dengan demikian, kami dapat menemukan jumlah ASN asal yang berbeda dengan status tidak valid yang terlihat oleh AS ini. Namun, ada masalah "kecil". Nilai rata-rata (median dan mode) dari nomor ini (jumlah ASN asal berbeda) adalah sekitar 150 dan bahkan jika kita menyaring awalan kecil, itu akan tetap di atas 70. Situasi ini memiliki penjelasan yang sangat sederhana: hanya ada beberapa operator yang sudah menggunakan ROA- memfilter dengan kebijakan "setel ulang rute Tidak Valid" di titik masuk, jadi di mana pun rute dengan pelanggaran ROA muncul di dunia nyata, itu dapat menyebar ke segala arah.
Dua pendekatan terakhir memungkinkan kami untuk menemukan operator yang melihat insiden kami (karena itu cukup besar), tetapi secara umum mereka tidak berlaku. Ok, tapi bisakah kita menemukan penyerang? Apa saja fitur umum dari manipulasi AS_PATH tersebut? Ada beberapa asumsi dasar:
- Awalan belum pernah terlihat sebelumnya;
- ASN Asal (pengingat: ASN pertama di AS_PATH) valid;
- ASN terakhir di AS_PATH adalah ASN penyerang (jika tetangganya memeriksa ASN tetangga pada semua rute yang masuk);
- Serangan itu datang dari satu penyedia.
Jika semua asumsi benar, maka pada semua rute yang salah ASN penyerang akan disajikan (kecuali untuk asal ASN) dan, dengan demikian, ini adalah titik "kritis". Di antara pembajak sejati adalah AS263444, meskipun ada yang lain. Bahkan ketika kita menjatuhkan rute insiden dari pertimbangan. Mengapa Titik kritis dapat tetap kritis bahkan untuk rute yang benar. Ini bisa merupakan hasil dari konektivitas yang buruk di wilayah mana pun, atau keterbatasan visibilitas kita sendiri.
Akibatnya: ada cara untuk mendeteksi penyerang, tetapi hanya jika semua kondisi di atas terpenuhi dan hanya ketika intersepsi cukup besar untuk melewati ambang pemantauan. Jika salah satu dari faktor-faktor ini tidak dihormati, dapatkah kita memilih awalan yang dipengaruhi oleh intersepsi semacam itu? Untuk operator tertentu, ya.
Ketika seorang penyerang membuat rute yang lebih spesifik, awalan seperti itu tidak diumumkan oleh pemilik sebenarnya. Jika Anda memiliki daftar dinamis semua awalan darinya, maka Anda dapat membuat perbandingan dan menemukan rute yang lebih spesifik yang terdistorsi. Kami mengumpulkan daftar awalan ini menggunakan sesi BGP kami, karena kami tidak hanya diberikan daftar rute yang terlihat oleh operator saat ini, tetapi juga daftar semua awalan yang ingin ia umumkan ke dunia. Sayangnya, sekarang ada beberapa lusin pengguna Radar yang tidak menyelesaikan bagian terakhir dengan benar. Dalam waktu dekat kami akan memberi tahu mereka dan mencoba menyelesaikan masalah ini. Semua orang dapat bergabung dengan sistem pemantauan kami sekarang.
Jika kita kembali ke kejadian semula, maka penyerang dan area distribusi ditemukan oleh kita dengan mencari titik kritis. Anehnya, AS263444 tidak mengirim rute palsu ke semua pelanggannya. Meski ada momen yang lebih 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 untuk mencegat ruang alamat kamiKetika lebih spesifik untuk awalan kami dibuat, AS_PATH dibuat khusus digunakan. Namun, AS_PATH ini tidak dapat diambil dari rute kami sebelumnya. Kami bahkan tidak memiliki koneksi dengan AS6762. Kami melihat rute lain dalam insiden: beberapa dari mereka memiliki AS_PATH nyata, yang digunakan sebelumnya, sementara yang lain tidak, bahkan jika mereka terlihat seperti nyata. Perubahan tambahan ke AS_PATH tidak masuk akal secara praktis, karena dalam hal apa pun lalu lintas akan dialihkan ke penyerang, tetapi rute dengan AS_PATH "buruk" dapat difilter oleh ASPA atau mekanisme pemeriksaan lainnya. Di sini kami memikirkan motivasi pembajak. Sekarang kami tidak memiliki cukup data untuk mengklaim bahwa insiden ini adalah serangan yang direncanakan. Namun demikian, itu mungkin. Mari kita coba membayangkan situasi hipotetis, tetapi berpotensi cukup nyata.
Serangan sempurna
Apa yang kita miliki Misalkan Anda adalah penyedia transit yang menyiarkan rute untuk pelanggan Anda. Jika pelanggan Anda memiliki beberapa kehadiran (multihome), maka Anda hanya akan menerima sebagian dari lalu lintas mereka. Tetapi semakin banyak lalu lintas - semakin banyak penghasilan Anda. Karenanya, jika Anda mulai mengumumkan awalan subnet dari rute yang sama dengan AS_PATH yang sama, Anda akan menerima sisa lalu lintasnya. Akibatnya, sisa uangnya.
Apakah ROA akan membantu di sini? Mungkin ya, jika Anda memutuskan untuk sepenuhnya mengabaikan penggunaan
maxLength . Selain itu, sangat tidak diinginkan untuk memiliki entri ROA dengan awalan berpotongan. Untuk beberapa operator, pembatasan seperti itu tidak dapat diterima.
Mempertimbangkan mekanisme keamanan perutean lainnya, ASPA juga tidak akan membantu (karena AS_PATH digunakan dari rute yang valid). BGPSec masih bukan pilihan terbaik karena tingkat penerimaan yang rendah dan kemungkinan serangan downgrade yang tersisa.
Dengan demikian, kami memiliki keuntungan yang jelas untuk penyerang dan kurangnya keamanan. Campuran hebat!
Apa yang harus dilakukan
Langkah yang jelas dan paling radikal adalah meninjau kebijakan perutean Anda saat ini. Hancurkan ruang alamat Anda menjadi bagian terkecil (tanpa persimpangan) yang hanya ingin Anda umumkan. Tandatangani ROA hanya untuk mereka, tidak menggunakan parameter maxLength. Dalam hal ini, POV saat ini dapat menyelamatkan Anda dari serangan seperti itu. Namun, sekali lagi, untuk beberapa operator pendekatan ini tidak masuk akal karena penggunaan eksklusif rute yang lebih spesifik. Semua masalah status ROA saat ini dan objek rute akan dijelaskan dalam salah satu materi kami di masa mendatang.
Selain itu, Anda dapat mencoba memonitor intersepsi semacam itu. Untuk melakukan ini, kami membutuhkan informasi yang dapat dipercaya tentang awalan Anda. Dengan demikian, jika Anda mengadakan sesi BGP dengan kolektor kami dan memberi kami informasi tentang visibilitas Anda terhadap Internet, kami juga dapat menemukan area distribusi untuk insiden lainnya. Bagi mereka yang belum terhubung ke sistem pemantauan kami - untuk memulai, daftar rute dengan hanya awalan Anda akan cukup bagi kami. Jika Anda memiliki sesi dengan kami, maka silakan periksa bahwa semua rute Anda telah dikirim. Sayangnya, ini patut diingat, karena beberapa operator lupa satu atau dua awalan dan, dengan demikian, mengganggu metode pencarian kami. Jika semuanya dilakukan dengan benar, maka kami akan memiliki data yang dapat dipercaya tentang awalan Anda, yang di masa depan akan membantu untuk secara otomatis mendeteksi dan mendeteksi jenis intersepsi lalu lintas semacam itu (dan lainnya) untuk ruang alamat Anda.
Jika Anda mengetahui secara real time tentang intersepsi traffic Anda, Anda dapat mencoba untuk menangkalnya sendiri. Pendekatan pertama adalah mengumumkan rute dengan awalan yang lebih spesifik ini sendiri. Dalam kasus serangan baru pada awalan ini - ulangi.
Pendekatan kedua adalah menghukum penyerang dan orang-orang yang menjadi titik kritisnya (untuk rute yang baik) dengan memutus akses rute Anda ke penyerang. Ini dapat dilakukan dengan menambahkan ASN penyerang ke AS_PATH dari rute lama Anda dan dengan demikian membuat mereka menghindari AS ini menggunakan mekanisme deteksi loop bawaan di BGP
untuk keuntungan mereka sendiri .