30 November - 1 Desember melewati tahap kualifikasi turnamen CTFZone , yang mendaftarkan 1043 tim dari seluruh dunia. Menurut data kami, masalah diselesaikan bahkan di Zimbabwe (26 IP unik). Menggali lebih dalam, itu adalah tim universitas dari kota Bulawayo.
Tahun ini CTFZone menjadi tahap kualifikasi DEF CON CTF , sehingga tim yang memenangkan final (akan diadakan di OFFZONE 16-17 April 2020) akan pergi ke turnamen di Las Vegas. Agar yang beruntung memiliki waktu untuk mendapatkan visa, tanggal konferensi bahkan dipindahkan ke tanggal yang lebih awal.
DEF CON CTF adalah kompetisi keamanan tertua dan paling dihormati bagi banyak tim. Para pemenang tidak diberikan cabang palem, tetapi bahkan tanpa itu semuanya berjalan dengan baik. Sekarang di dunia hanya ada 6 turnamen di mana Anda dapat memenuhi syarat untuk DEF CON CTF.
Geografi peserta CTFZoneTentang konsepnya
Dalam gerakan CTF internasional, kebetulan bahwa tim-tim dari berbagai daerah berspesialisasi dalam bidang-bidang tertentu. Misalnya, secara historis, Rusia lebih baik dalam memecahkan web, sementara tim Asia dan Amerika lebih kuat di PWN. Pada DEF CON yang sama, hampir semua tugas adalah binari. Mungkin itu sebabnya baru-baru ini tim Amerika dan Asia tampil lebih baik di sana. Kami di CTFZone berusaha menunjukkan bahwa CTF tidak hanya PWN, tetapi juga banyak kategori menarik lainnya: web, kriptografi, mundur, OSINT, forensik, PPC.
Web
Dalam tugas berbasis web, penulis - ahli pengujian penetrasi selama jam kerja - mencoba mentransfer kerentanan dari proyek dunia nyata. Misalnya, dalam tugas Web-Shop kami menggunakan pustaka python-markdown2 yang populer, di mana pakar kami menemukan kerentanan nol hari untuk mem-bypass filter XSS beberapa minggu sebelum kompetisi. Namun, selama KKP, masing-masing dari empat tim penentu menemukan versi sendiri dari kerentanan ini, yang membuat kami berpikir tentang kualitas penyaringan di perpustakaan.
Untuk pekerjaan Web-Card , kami menggunakan kerentanan zero-day di kelas validasi Java XML standar. Itu ditemukan ketika menguji Firewall Aplikasi Web nyata, jadi kami mengundang peserta untuk memotong WAF, yang kami kembangkan secara khusus untuk tugas tersebut. Versi terperinci dari wrightup nanti.
Nah, tugas EmeraldRush menunjukkan seperti apa GitLab dan Github selama setahun terakhir - kerentanan yang terkait dengan Ruby, di mana keduanya ditulis. Salah satunya didasarkan pada CVE-2018-18649 (namun, tidak ada exploit akses terbuka untuk itu), yang kedua baru-baru ini ditemukan dan dipublikasikan di platform HackerOne (untuk penjelasan, lihat artikel ). Tentu saja, pengembang diberitahu tentang ini dan semua kerentanan web lainnya sebelum kompetisi, sesuai dengan prinsip-prinsip Pengungkapan Bertanggung Jawab.
Crypto
Pada gilirannya, tim pengembangan cryptotask mengambil sebagai dasar tidak hanya bug yang terus-menerus ditemui dalam CTF terkait dengan implementasi RSA, tetapi juga serangan sensasional beberapa tahun terakhir. Sebagai contoh, tugas OCB2 harus berurusan dengan serangan terhadap sistem enkripsi simetris dengan nama yang sama, untuk penemuan yang pada konferensi Crypto mereka memberikan Penghargaan Kertas Terbaik.
Dan dalam tugas NTRU , perlu untuk mempelajari serangan pada sistem kisi asimetris. Dia dijelaskan pada bulan September, tetapi untuk menemukan dan membaca artikel yang sesuai tidak cukup. Penulis masalah itu sendiri mengalami masalah ketika ternyata publikasi mengambil kasus yang paling mudah untuk deskripsi, yang tidak berfungsi dengan parameter yang dipilih dalam tugas akhir. Saya harus mengulang algoritma! Sangat menarik bahwa salah satu peserta (Alexey Udovenko dari tim LC / BC) menyelesaikan masalah tanpa artikel, setelah datang dengan metode solusi yang sedikit berbeda berdasarkan prinsip yang sama.
Forensik
Ya, kategori yang paling sulit pada CTF kami adalah forensik. Semua orang terbiasa berpikir bahwa tugas-tugas seperti itu diselesaikan dengan menggunakan tiga utilitas: terutama, volatilitas dan string. Tetapi kami memiliki tugas yang berbeda - misalnya, tugas In-The-Shadows yang tidak biasa , untuk solusi yang diperlukan untuk menangani teknik yang dijelaskan di sini . Rincian juga akan dirilis di komite distrik nanti.
Tentang pelatihan
Persiapan langsung untuk kualifikasi CTFZone terdiri dari beberapa tahap utama (mengumpulkan tim proyek, mengembangkan tugas, menguji dan menyebarkan infrastruktur, meluncurkan roket ke luar angkasa) dan banyak yang tambahan (mencari inspirasi, membangun komunikasi, menyiksa dan ragu, depresi, mengatasi krisis eksistensial).
Tiga bulan sebelum dimulainya pertemuan umum, tanggal dipilih - 7 dan 8 Desember. Tim sampai pada kesimpulan bahwa tidak ada yang akan punya waktu, tetapi masih turun ke bisnis. Dan tujuh hari kemudian, tenggat waktu yang tidak realistis ini telah bergeser seminggu sebelumnya, karena tanggal yang dipilih dan semua yang berikut telah mengambil CTFs lainnya. Yang tersisa hanyalah tersenyum, mengertakkan gigi dan bekerja dengan energi tiga kali lipat. Tidak ada jalan untuk kembali, pengembangan startanul.

Akibatnya, tugas itu lebih dari biasanya - 30 buah. Setiap tugas itu unik, tetapi tidak berumur panjang: 3 bulan persiapan dan hanya 36 jam penerbangan. Tapi apa! Tombol-tombol yang Anda lukis dengan hati-hati di ujung depan akan disentuh oleh CTFers terkemuka di dunia - mereka akan membenamkan diri dalam ide Anda dan memberi Anda umpan balik pribadi. Ini adalah pengalaman hebat dan kesempatan untuk membicarakan pekerjaan Anda dengan komunitas besar. Lagipula, seringkali dengan kerentanan yang ada dalam tugas, beberapa jenis cerita terhubung. Beberapa tugas sangat sulit sehingga tidak ada yang bisa mengatasinya. Pada akhir kualifikasi masalah yang belum terpecahkan, dua tetap: Forensik Populer dan Web-Card .
Tentang infrastruktur
Organisasi infrastruktur turnamen dapat didekati dengan berbagai cara. Misalnya, dengan cara lama, potong mesin virtual untuk pengembang tugas dan beri mereka akses di sana. Dalam situasi ini, setiap pengembang menjadi administrator localhost yang puas, semuanya berjalan sesuai keinginannya, dan tetap hanya menyediakan konektivitas jaringan. Jelas, bagaimanapun, bahwa tidak ada pembicaraan tentang replikasi dan toleransi kesalahan dalam kasus ini. Yang bertanggung jawab atas infrastruktur kami baru saja gagal salah satu CTFs di ZeroNights pada tahun 2016, dan kali ini, diajar oleh pengalaman pahit, memutuskan untuk melakukan sesuatu secara berbeda.
Kami memutuskan untuk waktu yang lama di mana kami akan tinggal, dan pada akhirnya kami memutuskan untuk berbalik di awan. Alasannya jelas: kompetisi untuk peretas, jadi lebih baik untuk mendobrak Google, dan sudah ada perkembangan siap pakai di zashnik. Alat utama untuk membuat platform adalah Terraform, yang memungkinkan Anda untuk menggambarkan infrastruktur dalam bentuk kode dalam format deklaratif, dan menangani semua gerakan lainnya. Misalnya, Anda tidak perlu memikirkan cara membuka Google API dan memberi tahu dia berapa banyak dan mesin virtual mana yang ingin Anda gunakan.
Itu juga perlu untuk memutuskan bagaimana memulai tugas. Kami sangat beruntung bahwa semua pengembang sudah dapat menulis tugas di Docker. Ini adalah kontainer yang hype yang memungkinkan Anda untuk mengemas layanan dengan semua dependensi dalam lingkungan terisolasi yang tidak berubah di antara restart. Tidak ada banyak cara untuk bekerja dengan Docker: ini terutama orkestra seperti Compose dan k8s. Untuk membuat semuanya indah, yaitu, mengimplementasikan Daftar Keinginan dengan menyeimbangkan, replika, toleransi kesalahan dan perusahaan lain, pilihan orkestra sudah jelas - Kubernetes.

Namun, di sini ada beberapa kesalahpahaman antara pencipta infrastruktur dan pengembang. Pentester adalah kasta khusus dari dunia TI: mereka sebagian seperti administrator, penggiat jejaring, dan tahu cara membuat basis data, dan berorientasi pada pemrograman. Secara umum, bukan orang, tetapi pisau Swiss. Mereka sangat luar biasa dan ambisius, tetapi, sayangnya, ketika diputuskan untuk menulis Helm untuk setiap tugas, entah bagaimana dilupakan bahwa pentester masih bukan admin profesional. Hal ini menyebabkan perang kecil, di mana perlu untuk menjelaskan mengapa keputusan tertentu diambil secara paksa dan pembatasan ditetapkan.
Orang-orang tidak memiliki pengalaman menulis Helm, tetapi mereka semua tahu bagaimana menulis Compose. Anda sendiri mengerti bahwa antara Compose lokal dan Helm-chart ada kesenjangan dalam beberapa minggu atau bahkan bulan mempelajari materi. Ini adalah lonceng pertama yang mengisyaratkan bahwa ada beberapa masalah (di mana CTF akan tanpa mereka, terutama ketika tim dan admin baru hampir setiap waktu).
Karena kurangnya waktu, itu tidak mungkin untuk mengotomatisasi semuanya - beberapa hal harus diteruskan ke pundak para pengembang itu sendiri. Pentester harus duduk dalam pertemuan di mana mereka diberi tahu cara menulis helik, sementara mereka sendiri, tampaknya, mengutuk pengabdian ini tentang apa cahayanya. Namun, terlepas dari segalanya, kami berhasil - semua tugas dijelaskan dan dikemas dalam grafik Helm, pemantauan dikonfigurasikan dalam bentuk Grafana dan Prometheus. Saat kebenaran telah tiba.
Dan di sini, yang membuat semua orang lega, ternyata infrastruktur yang dihasilkan sangat mudah dikelola. Ketika semuanya dijelaskan dan digunakan di Google, kami melakukan pengarahan bagi mereka yang bertugas. Ada sepuluh dari mereka, dan semua orang melakukan pekerjaan besar: mereka mengangkat yang jatuh, mengumpulkan dan meluncurkan versi yang sudah diperbaiki ke dalam kubus.
Tentang finalis
Hasilnya, 10 tim bintang dipilih untuk final. Mengapa bintang? Faktanya adalah bahwa 6 dari 10 tim berada di sepuluh kejuaraan dunia teratas di CTFtime, dan empat sisanya sedikit di belakang sepuluh besar, tetapi juga di atas.
Fitur utama dari turnamen ini adalah bahwa perjuangan paling sengit bukan untuk mendapatkan tempat di tiga besar, tetapi untuk garis kesepuluh. Penting bagi para peserta untuk masuk ke final, dan di situ situasinya diatur ulang, dan distribusi kursi yang kami miliki berdasarkan hasil kompetisi yang memenuhi syarat dapat berubah sangat.
Finalis Kualifikasi Finalis CTFZone 2019Apa selanjutnya
Selanjutnya akan mungkin untuk menghembuskan napas sedikit, kemudian mengambil napas dalam-dalam lagi dan memulai persiapan untuk final. Ini akan diadakan dalam format Attack / Defense, dan ini adalah cerita yang sama sekali berbeda. Seseorang mungkin bertanya: mengapa ini semua? Pertanyaannya bagus, tetapi mungkin tidak ada jawaban logis untuk itu. Hanya saja jika setidaknya selama 5 detik Anda benar-benar dapat mengetahui apa yang sedang terjadi, merasa hidup dan melihat tim yang menjadi bagian Anda, maka itu tidak sia-sia!