Retrospektif besar partisipasi RBK. Uang di The Standoff 2020

... atau bagaimana peretas merusak pemrosesan pembayaran sumber terbuka kami di kota maya.



Halo! Kami baru-baru ini dengan RBK. Pemrosesan uang mengambil bagian aktif dalam Poligon siber Standoff - ini adalah saat mereka membuat model virtual seluruh kota metropolitan dengan semua infrastruktur, pembangkit listrik, toko, dan elemen penting lainnya. Dan kemudian mereka membiarkan tim biru (6 tim tahun ini) dan tim merah (masing-masing 29 tim tahun ini) tim ke dalam kembaran digital kota ini, yang pertama melindungi seluruh infrastruktur ini, yang kedua secara aktif mencoba memecahkan sesuatu.





dari film โ€œBlade Runner 2049โ€



Tentu saja, kami membawa pemrosesan kami ke acara tersebut, yang dapat Anda baca di posting sebelumnya di blog kami. Pemrosesan adalah bagian dari bankdan menyediakan layanan keuangan dan pembayaran untuk penduduk kota cyber, memperbaiki masalah kartu pembayaran, dan memungkinkan untuk menjual barang dan jasa.



Dalam posting ini, saya ingin memberi tahu Anda bagaimana peretas merusak kami (peringatan spoiler: dan tidak), serta bagaimana kami sendiri menembak diri sendiri beberapa kali dalam proses mempersiapkan dan menerapkan solusi kami. Dan ya, yang utama adalah bagi kami itu awalnya adalah situasi win-win: mereka tidak akan menghancurkan kami, yang berarti bahwa bukan tanpa alasan kami begitu yakin dalam pemrosesan kami sehingga kami meletakkannya di open source dan sekarang kami memberikannya kepada peretas. Mereka akan menghancurkannya - umumnya hebat, kami akan melihat di mana kelemahannya, dan kami akan menjadi lebih terlindungi dalam hal keamanan untuk klien kami.



Kami menyusup ke kota dunia maya dengan tergesa-gesa: ini adalah salah satu penerapan pertama kami di Kubernetes (sebelum itu kami menerapkan semuanya dengan negara bagian Salt), dan kami harus menggunakan pendekatan pemasangan baru. Dan konsekuensi dari kesibukan ini tidak lama lagi akan datang.



Tips untuk peretas







Bahkan sebelum perluasan pemrosesan ke kota maya, kami sengaja meninggalkan dua titik lemah di sana.



Yang pertama adalah kerentanan yang terkait dengan metode tokenisasi kartu. Metode ini rentan terhadap kerentanan dalam bentuk serangan replay, yaitu, kartu dapat berhasil dibuat token di satu toko, dan kemudian dengan token ini datang ke toko lain dan digunakan kembali di sana. Kami dengan takut-takut berharap kerentanan akan ditemukan, tetapi sayangnya.



Yang kedua adalah penghitungan sederhana dari pedagang utama. Kami hanya membuat satu pedagang oligarki, itu adalah badan hukum yang memiliki toko online di kota cyber. Dan kantong uang ini memiliki kredensial yang cukup sederhana, yaitu kata sandi seperti Parolec0, pada prinsipnya, bisa saja rusak . Tapi itu juga tidak berhasil.



Tapi tiang tembok kita sendiri muncul.



Terburu-buru - Anda tidak bisa melindungi semuanya







Seorang pembaca yang penuh perhatian akan menyimpulkan dari poin tentang pedagang utama - tunggu sebentar, Anda memiliki satu dan hanya oligarki yang memiliki semua toko online, cukup meretas satu toko online semacam itu, dan Anda bisa mendapatkan akses ke yang lainnya. Ya, mereka tidak memikirkan momen ini dengan terburu-buru ..



Dan pada kenyataannya, setelah meretas pedagang ini, dimungkinkan untuk mendapatkan kunci API-nya untuk pemrosesan kami dan sepenuhnya mengelola pemrosesan ini. Sebenarnya, inilah yang terjadi - penyerang meretas solusi pihak ketiga, sebuah toko hiburan online di kota, mendapatkan kunci API dari pedagang kami dari sana, datang bersamanya ke pemrosesan kami dan disebut metode yang memungkinkan Anda untuk menghidupkan / mematikan toko online Anda. Dan karena satu badan hukum memiliki semua gerai ritel di seluruh kota, mereka semua dimatikan.



Pada prinsipnya, ini benar, jika Anda adalah oligarki rakus dan kuat yang telah mengambil segalanya untuk dirinya sendiri - menderita. Kami menarik kesimpulan dan memutuskan untuk segera mencabut kantong uang dengan membuat 5 badan hukum independen lainnya, dan untuk masing-masing pasangan โ€œsandi-masukโ€ dan kunci API yang terpisah. Saya kira pada kompetisi-kompetisi seperti ini selanjutnya kami akan berusaha mendekatkan keadaan dengan kenyataan di sisi bisnis.



Dan itu juga "terbang" karena kekhasan kuber.



Di Kubernetes, repositori utama untuk status cluster adalah ETCD , sistem terdistribusi yang berguna tempat Anda dapat membangun hal-hal yang sangat, sangat andal. Tapi itu terlalu kritis terhadap latensi hard drive.



Saat saya menulis, kami menerapkan pemrosesan di lingkungan kota maya virtual. Ada serangan yang cukup aktif pada objek yang berdekatan dengan kami, dan begitu salah satu objek yang "berisik" dipindahkan ke datastore kami, infrastruktur salah satu peserta, yang rusak untuk waktu yang lama dan terus-menerus. Dan meskipun secara de facto kami bukan target dalam kasus ini, dan pada saat itu tidak ada yang merusak pemrosesan, itu terus bekerja secara normal, tetapi cluster itu sendiri mulai melambat secara liar, hard drive tidak dapat mengatasinya (mereka berhasil memperhatikan bahwa output dari perintah ls -l membutuhkan waktu sekitar 19 detik). Ternyata muncul semacam DoS, dan dalam satu malam kami mengirim kucing standar kami untuk semua permintaan.







Setelah situasi ini, penyelenggara The Standoff memindahkan kami ke disk lain, yaitu, mereka mematikan satu mesin virtual dan menghidupkan yang lain, di lokasi berbeda. Setelah itu, DBMS yang kami distribusikan dengan senang hati menangkap otak yang terbelah, setengah dari node berisi satu informasi, setengah - lainnya, dan tidak dapat benar-benar setuju dengan diri mereka sendiri. Dalam pertempuran, tentu saja, kami akan lebih bingung dengan migrasi dan tidak akan membiarkan ini terjadi. Dan dalam lingkungan pengujian, jauh lebih mudah untuk menghentikan semua yang tersedia dan menginstalnya kembali, yang kami lakukan, menghabiskan waktu 2 jam. Mengapa saya menekankan ini - karena kami menerapkan alur kerja lengkap dengan semua komponen dalam dua jam, dan Anda dapat melakukannya dengan pemrosesan kami dalam pertempuran di perusahaan Anda. Pemrosesan klasik biasanya diterapkan di perusahaan selama 3 bulan.



Jadi, tentang otak terbelah, semuanya terburu-buru. Kami baru saja menghapus / tmp di salah satu node di bawah root . Siapa yang tahu bahwa modul CSI LVM , yang mendistribusikan volume lokal dari perangkat keras ke pod, diam-diam (!) Memasang volume Kuber yang persisten di / tmp . Jadi, ternyata dengan tangan kami sendiri kami menghancurkan data di bawah kaki DBMS yang berputar di atasnya. Selain itu, terlepas dari kenyataan bahwa kami menghancurkan penyimpanan untuk beberapa node di cluster dasar, semuanya terus berfungsi untuk kami hingga mesin virtual dimulai ulang, yang terjadi ketika mereka mulai memindahkan kami ke sisi baru.



Tim biru perlahan mematikan pertahanannya ...







Suatu hari tim biru memutuskan untuk mematikan perlindungan eksternal (firewall, dll.). Yaitu, beberapa hari pertama para peretas mencoba merusak sistem dengan perlindungan semacam ini diaktifkan, dan kemudian - tanpa. Kami juga memiliki WAF pihak ketiga, yang di dalam ingress dengan njinks sebagai modul dimuat dan melindungi lalu lintas kami.



Dan kemudian hari itu tiba, kami pergi untuk mematikan WAF dan menyadari bahwa itu sudah dimatikan. Dua hari yang lalu. Karena kami hebat dan sedang terburu-buru (ya, ya), kami menyiapkan kubernetes ingress, yang memiliki instance WAF. Dan semuanya akan baik-baik saja, tetapi WAF sama sekali tidak mencapai server kontrol, tidak dapat mengunduh file lisensi darinya, mengangkat bahu dan mematikan begitu saja dari dosa. Dan ternyata selama dua hari ini kita "Putus dengan perlindungan yang disertakan" sebenarnya, tanpa perlindungan ini.



Tapi tetap saja kami tidak rusak.



Konfirmasi lain dari tesis bahwa terburu-buru berbahaya (jika Anda tidak memiliki cukup dari yang sebelumnya) - situasi anti-penipuan kami. Saya jelaskan di posting blog sebelumnya , ada kotak ajaib dengan seperangkat aturan. Antifraud melindungi dari perusakan kartu bank, upaya untuk membayar pada satu titik dari lokasi / IP / email yang berbeda, dan tindakan tidak ramah lainnya. Kami memberi tahu tim pembela bahwa kami akan membuat sendiri semua aturan ini dengan hati-hati. Dan kami berhasil - kami dengan hati-hati menyiapkan semua aturan anti penipuan. Di server produksi kami, RBK.money alih-alih memasang untuk The Standoff. Url UI di bilah alamat browser norak. Artinya, antifraud saat ini adalah kotak dengan kekosongan misterius yang sunyi. Ini menjadi salah satu vektor sukses untuk editor:









Misalnya, mereka sebelumnya telah meretas bank internet pihak ketiga dengan mencuri kode PAN kartu (nomor itu sendiri, Nomor Rekening Utama), nama pemegang kartu dan memilih tanggal validitas. Setelah itu, sudah kami proses di PAN ini, mereka mulai memilah-milah CVV. Dan semuanya akan baik-baik saja, setelah 3 upaya untuk memecahkan kartu, mereka akan diblokir oleh antifraud kami. Kalau saja ... lihat di atas.



Secara umum, ada banyak cerita lucu seperti itu. Pada titik tertentu, layanan kami berhenti menyelesaikan dan waktu di node berhenti menyinkronkan, dan entah bagaimana secara acak, dari beberapa host.



Tentu saja, hal pertama yang mereka lakukan adalah menyalahkan misconfig, pekerjaan cluster yang tidak dapat dipahami.



Dengan DNS, masalah ini dengan cepat diselesaikan dengan memindahkan pod CoreDNS langsung ke node di mana lalu lintas ini tidak diaktifkan, tetapi dengan NTP kami beruntung - untungnya, kami tidak menemukan clock skew yang besar, dan saat membuat kluster, node masih berhasil melakukan sinkronisasi.



Ternyata di beberapa titik, di tingkat firewall, permintaan NTP dan DNS keluar dinonaktifkan untuk beberapa node. Rupanya, seseorang terlalu mengencangkan mur filtrasi.



Serangan lainnya







Serangan terhadap situs lain yang berdekatan di kota siber juga kadang berhasil, termasuk yang, seperti kita, dalam sistem keuangan kota siber.



Ada baiknya kami tidak mengacaukan url peringatan di atas elastis dan dalam pemantauan, dan melihatnya dengan cukup akurat dan cepat.



Misalnya, seperti dalam kasus peretasan oligarki kami dan kunci API yang ditarik. Itu diretas pada pukul 22.17 waktu Moskow. Pada pukul 22.22 kami di pihak kami memperhatikan ini dan segera melaporkannya kepada para pembela dan penyelenggara. Ngomong-ngomong, kami memperhatikan, berkat penggunaan API yang tidak tepat - peretas mengirimkan header jenis konten yang aneh pada permintaan pertama, yang disebut metode langka API kami, dan beberapa nuansa lainnya - itulah alasan untuk memicu peringatan.



Ketika sistem bekerja secara normal dan otomatis, jarang semua terjadi bersamaan pada waktu yang sama. Tetapi jika hal seperti itu terjadi, itu berarti seseorang sedang bermain-main dengan API dengan tangannya. Ini peringatannya dan berhasil.

Jika kita tidak berbicara tentang kota siber, tetapi tentang situasi nyata semacam ini, maka semuanya terjadi lebih cepat, dalam kasus seperti itu sistem secara otomatis memblokir tindakan pedagang sehingga tidak ada yang ditarik dari akunnya dan, pada prinsipnya, tidak membahayakan pekerjaan dan bisnisnya, menimbulkan kepanikan dan menghubungkan karyawan yang sudah hidup



Demi masa depan



Format peretasan kota maya, bukan lelucon, adalah masa depan keamanan informasi. Kami pasti akan datang ke sini lagi, memperhitungkan semua kesalahan dan memikirkan infrastruktur dan skema bisnis agar sedekat mungkin dengan kenyataan. Idealnya, saya biasanya ingin orang-orang dari Bank Sentral atau Layanan Negara memiliki kesimpulan yang sama - untuk menguji infrastruktur mereka dalam pertempuran, memberikan kesempatan untuk menemukan kerentanan dan menjadi lebih baik dan lebih dapat diandalkan bagi pengguna dan bisnis.



Dan itu sebenarnya sangat keren dan menyenangkan. Faktanya, kami menerima sekumpulan besar kasus Chaos Monkey- yang tidak perlu direproduksi dalam produksi, kami menguji pemrosesan serangan, setelah menerima lebih banyak serangan dalam 2 hari daripada yang biasanya kami terima dalam enam bulan.



Kami belajar banyak, dan yang terpenting, kami melihat bahwa produk kami, yang kami tulis untuk diri kami sendiri dan untuk Anda, populer di kalangan peserta kota siber, bagi TI kami itu adalah motivasi yang kuat - lagipula, alangkah baiknya ketika orang menggunakan hasil karya Anda, meskipun dalam hal ini kasus dan untuk tujuan yang sangat spesifik.



Kami sangat menyukainya dan ingin LEBIH BANYAK.



Di Standoff berikutnya, tunggu kami dengan skema yang lebih menarik, lebih banyak fungsi pembayaran, dan vektor serangan baru!



All Articles