Retak itu! Sorotan dari KringleCon 5: Cincin Emas

Retak itu! Sorotan dari KringleCon 5: Cincin Emas

Belajar bertemu kesenangan di SANS Holiday Hack Challenge 2022 – ikat diri Anda untuk perjalanan crackerjack di Kutub Utara saat saya menggagalkan rencana busuk Grinchum dan memulihkan lima cincin emas

Ini adalah tahun pertama saya berpartisipasi dalam Tantangan Hack Liburan SANS dan itu adalah ledakan. Melalui serangkaian 16 tantangan mulai dari yang mudah hingga yang sulit, saya berlatih menganalisis lalu lintas jaringan yang mencurigakan dan log PowerShell, menulis Aturan Suricata, pecah dari a Wadah buruh pelabuhan, menemukan kunci bocor untuk mengeksploitasi a Pipa GitLab CI/CD dan pengguna AWS, melakukan Serangan Entitas Eksternal XML, dan meretas smart contract untuk membeli a token tidak-sepadan.

Bagian terbaik dari pengalaman ini adalah memperkenalkan saya pada alat dan teknologi baru, sehingga memperluas pengetahuan keamanan siber saya lebih jauh. Di sini, saya berbagi beberapa sorotan dari menyelesaikan tantangan.

Orientasi

Setiap peserta menerima avatar untuk menavigasi lingkungan video game dalam browser yang diatur di Kutub Utara:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Selama orientasi, Anda menerima dompet cryptocurrency yang digunakan game untuk memberi penghargaan kepada KringleCoins karena menyelesaikan tantangan dan yang Anda gunakan di tantangan terakhir untuk meretas kontrak cerdas. Menariknya, game ini melacak semua transaksi KringleCoin di blockchain Ethereum, artinya catatan lengkap kemajuan Anda juga disimpan di blockchain ini.

Ke dering pertama permainan.

1. Cincin Tolkien

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Menemukan Cincin Tolkien membutuhkan kelenturan otot analisis log saya.

Phishing Wireshark

Pertama, saya menggunakan Wireshark untuk menganalisis yang disediakan .pcap file yang mengungkapkan server di adv.epostoday[.]uk mengunduh file Ref_24 September 2020.zip ke komputer:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Mengintip ke dalam file ZIP, saya menemukan nama yang dapat dieksekusi Ref_24 September 2020.scr yang memicu dua deteksi di ESET Endpoint Security: BAT/Pelari.ES dan Generik.TAGTBG. Malware ini akhirnya mengarah pada eksekusi berbahaya yang berjalan di memori yang disebut config.dll dan terdeteksi oleh ESET Pemindai Memori Tingkat Lanjut as Win32/Dridex.DD.

Log peristiwa Windows

Selanjutnya, saya menganalisis yang disediakan .evtx file yang berisi log PowerShell dengan Peraga Peristiwa. Meskipun ada alat lain untuk menganalisis log PowerShell, jika penyerang tahu cara menggunakan binari yang hidup di luar negeri untuk tetap berada di bawah radar, pembela juga harus berpengalaman dalam alat asli yang disediakan oleh sistem operasi.

Karena log berisi 10,434 peristiwa, saya mengelompokkan peristiwa berdasarkan tanggal, lalu menjalankan tindakan Temukan untuk mencari peristiwa apa pun yang mengandung $ karakter. Di PowerShell, $ digunakan untuk membuat dan referensi variabel. Saya menemukan serangan terjadi pada 24 Desember 2022, ketika penyerang menjalankan skrip berikut:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Sepertinya penyerang menemukan resep rahasia, mengganti bahan rahasianya madu untuk minyak ikan, lalu membuat file resep baru. Ini memicu peristiwa dengan ID 4104, yang merupakan singkatan dari eksekusi perintah PowerShell jarak jauh. Jadi, saya memfilter peristiwa berdasarkan ID ini, membantu saya menemukan peristiwa jahat lainnya dengan lebih cepat.

Suricata Regatta

Latihan terakhir untuk Tolkien Ring adalah menulis empat aturan Suricata untuk memantau lalu lintas jaringan untuk infestasi Dridex:

alert dns $HOME_NET any -> any any (msg:”Pencarian DNS yang diketahui buruk, kemungkinan infeksi Dridex”; dns.query; konten:”adv.epostoday.uk”; nocase; sid:1; rev:1;)

alert http 192.185.57.242 any <> any any (msg:”Selidiki koneksi yang mencurigakan, kemungkinan infeksi Dridex”; sid:2; rev:1;)

waspadai tls apa saja -> apa saja (msg:”Selidiki sertifikat buruk, kemungkinan infeksi Dridex”; tls.cert_subject; konten:”CN=heardbellith.Icanwepeh.nagoya”; sid:3; rev:1;)

lansiran http apa saja -> apa saja (msg:”Fungsi JavaScript yang mencurigakan, kemungkinan infeksi Dridex”; file_data; konten:”biarkan byteCharacters = atob”; sid:4; rev:1;)

Agar, aturan ini menangkap pencarian DNS adv.epostoday[.]uk, koneksi ke alamat IP 192.185.57[.]242, penggunaan server jahat hearbellith.Icanwepeh[.]nagoya diidentifikasi melalui nama umum (CN) dalam sertifikat TLS, dan penggunaan JavaScript A ke B() berfungsi untuk mendekode string biner yang berisi data yang disandikan base64 pada klien.

Menyelesaikan tiga tantangan ini membuat saya mendapatkan Tolkien Ring:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Ke dering kedua.

2. Cincin Peri

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Tantangan yang paling menonjol untuk Elfen Ring adalah Prison Escape dan Jolly CI/CD.

Penjara Luput

Prison Escape adalah pengingat yang tegas bahwa memberikan hak akses root kepada pengguna di wadah Docker sama baiknya dengan memberikan hak akses root pada sistem host. Tantangannya adalah untuk keluar dari wadah. Nah, mudah dilakukan saat Anda melakukan root:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Sebagai pengguna root, saya mendaftarkan tabel partisi untuk perangkat dan kemudian memasang sistem file host, memberi saya akses penuh ke host. Sekarang saya bisa mencari kuncinya, yang seharusnya berada di direktori home seperti yang diungkapkan oleh petunjuk dalam game:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Periang CI/CD

Meskipun itu cepat, Jolly CI/CD memberi saya tantangan terlama untuk mencari tahu. Pertama, kami diberi repositori Git untuk mengkloning melalui HTTP:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Dari URL, saya dapat melihat bahwa nama repositori itu adalah wordpress.flag.net.internal, jadi saya pindah ke repositori dan menemukan situs web WordPress. Saya memeriksa apakah situs web itu aktif:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Yup, situs web itu berfungsi. Saya ingin tahu apakah ada kunci yang bocor dalam riwayat kode sumber. Jika ya, saya seharusnya dapat mendorong pengeditan ke kode sumber. Jadi saya lari git log:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Dari pesan komit, sepertinya a melakukan dibuat setelah menambahkan aset untuk memperbaiki teriakan. Saatnya memeriksa komit pre-whoops:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Luar biasa, saya menemukan a .ssh direktori dengan kunci. Mari salin kunci tersebut dan konfigurasikan agen SSH dan pengguna Git untuk melihat apakah saya dapat menyamar sebagai pemilik kunci tersebut:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Sekarang mari kita kembali ke cabang utama dan menguji apakah kita dapat mendorong perubahan sepele ke kode sumber (menggunakan nano, saya cukup menambahkan spasi ke salah satu file):

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Jadi, saya mencapai bagian pertama tantangan dengan meniru salah satu pengembang WordPress, tetapi apakah situs web masih berfungsi setelah saya dorong?

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Push saya mengubah sesuatu karena sekarang situs web dialihkan ke port 8080.

Sampai saat ini, saya telah mengabaikan bagian CI/CD dari tantangan tersebut, yang seharusnya menjadi kunci untuk menyelesaikannya. Repositori berisi a .gitlab-ci.yml file, yang menyediakan konfigurasi untuk pipeline GitLab CI/CD. Setiap kali Anda mendorong ke repositori, sistem CI/CD bekerja, dan a Pelari GitLab mengeksekusi skrip dalam file YML ini. Itu sama baiknya dengan mencapai eksekusi kode jarak jauh di server tempat GitLab Runner diinstal, pikir saya.

Melihat lebih dekat, saya melihat sebuah rsync skrip menyalin semua file dari repositori Git ke direktori di server web tempat situs web dilayani. Awalnya, saya mencoba menggunakan rsync untuk membalik aliran data dengan menyalin semua file dari server web ke repositori Git, tetapi tidak berhasil.

Setelah banyak pengujian hipotesis, saya akhirnya mendapatkan wawasan terobosan saya: Alih-alih mencoba untuk "memperbaiki" situs web WordPress atau menjalankan skrip jahat melalui sistem build, layani situs web yang membocorkan informasi dari server web. Dalam index.php (terletak di tingkat atas repositori), saya dapat mengomentari kode yang memuat situs web WordPress dan menjalankan perintah PHP yang memeriksa server web.

Memang, saya bahkan bisa menjalankan perintah shell dengan PHP. Saya menemukan itu lewat() bekerja dengan mudah.

In index.php, saya menggunakan // untuk mengomentari dua baris dan saya menambahkan passthru('ls -la /'); pada baris terakhir. Ini membuat situs web yang mencantumkan semua file di direktori root server web:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Kemudian saya mendorong perubahan ini ke repositori Git dan sistem CI/CD GitLab memperbarui situs web untuk saya:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Ah, Cincin Elfen pasti ada di dalamnya bendera.txt! Saya mengulangi langkah sebelumnya, tetapi kali ini menggunakan passthru('cat /flag.txt'); mengungkapkan Cincin Elfen saat berikutnya saya meminta situs web:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Lanjut ke dering ketiga.

3. Cincin Web

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Tantangan yang paling menyenangkan bagi saya adalah Buka Pintu Tambang Boria, meskipun Air Mancur Glamtariel menarik sekaligus menghadirkan teka-teki.

Buka Pintu Tambang Boria

Di Pintu Tambang Open Boria, kami diberikan enam pin atau tantangan mini untuk melewati validasi input atau a Kebijakan Keamanan Konten untuk menghubungkan pipa masuk dan keluar antar pin, termasuk pencocokan warna pipa. Untuk sebagian besar pin, saya menggunakan HTML untuk menulis daftar huruf penghubung 'o'. Inilah solusi terakhir saya:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

pin 1

Tidak ada validasi untuk Pin 1, jadi ini adalah masalah sederhana tentang HTML dan CSS sebaris:

pin 2

Pin 2 memiliki Kebijakan Keamanan Konten yang melarang JavaScript tetapi mengizinkan CSS sebaris, jadi tidak ada masalah untuk metode saya:

pin 3

Pin 3 memiliki Kebijakan Keamanan Konten yang melarang CSS tetapi mengizinkan JavaScript sebaris, jadi saya menggunakan JavaScript untuk mengubah gayanya:

pin 4

Pin 4 tidak memiliki Kebijakan Keamanan Konten, tetapi memiliki fungsi sanitizeInput di sisi klien yang akan menghapus tanda kutip ganda, tanda kutip tunggal, tanda kurung sudut kiri, dan tanda kurung sudut kanan. Triknya di sini adalah menyadari bahwa fungsi ini tidak dipicu dengan mengirimkan formulir, tetapi oleh mengaburkan peristiwa. Dengan kata lain, memindahkan tetikus menjauh dari kolom input akan memicu mengaburkan acara, membersihkan input apa pun. Solusinya adalah mengirimkan formulir dengan menekan tombol Enter kunci, sambil berhati-hati untuk tidak memindahkan kursor mouse di luar batas kolom input:

pin 5

Pin 5 memiliki hal yang sama membersihkanInput fungsi dan bypass bersama dengan Kebijakan Keamanan Konten yang melarang CSS sebaris, tetapi mengizinkan JavaScript sebaris:

pin 6

Terakhir, Pin 6 tidak membersihkan input, tetapi menggunakan Kebijakan Keamanan Konten yang lebih ketat yang melarang CSS dan JavaScript sebaris. Solusi saya adalah menggunakan HTML yang sudah usang untuk mendapatkan gaya yang saya butuhkan dan menggunakan tabel, bukan daftar:

Air Mancur Glamtariel

Air Mancur Glamtariel adalah kesempatan untuk berlatih Serangan XML External Entity (XXE).. Mencari tahu cara mendefinisikan entitas XML kustom, mendefinisikan entitas yang meminta file dari server, dan menambahkan entitas tersebut sebagai muatan ke permintaan HTTP tidaklah sulit. Bagian tersulit adalah mencari tahu teka-teki dalam game untuk mengetahui jalur ke file yang akan dibocorkan oleh server. Inilah permintaan terobosan yang mengungkap lokasi cincin emas tersebut:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Saya akan menawarkan dua pelajaran dari tantangan ini. Pertama, gunakan Konverter Jenis Konten ekstensi di Sendawa untuk mengonversi payload JSON ke XML. Kedua, coba tempatkan muatan XXE di tag yang berbeda – butuh waktu lama bagi saya untuk mengetahui bahwa yang harus saya lakukan hanyalah menempatkan &xxe; muatan di reqType tag bukannya imgJatuhkan menandai.

Lanjut ke dering keempat.

4. Cincin Awan

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Bermain untuk Cloud Ring adalah langkah pemula ke Antarmuka Baris Perintah (CLI) Amazon Web Services (AWS).

Sorotan dari serangkaian tantangan ini digunakan babi truffle untuk menemukan kredensial AWS di repositori Git dan kemudian mengeksploitasinya untuk mengautentikasi sebagai pengguna AWS. Seorang penyerang yang sampai ke posisi ini dapat menggunakan ya, benar perintah untuk mengkueri kebijakan yang berlaku bagi pengguna, dan dengan demikian aset cloud mana yang dapat diakses dan disalahgunakan.

Ke dering kelima.

5. Cincin Api yang Membakar

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Bagian paling instruktif dari rangkaian tantangan ini adalah belajar tentang Pohon Merkle untuk mengeksploitasi kontrak pintar dan dapatkan daftar prapenjualan untuk membeli token yang tidak dapat dipertukarkan (NFT). Di sini tantangannya adalah menemukan nilai bukti yang, bersama dengan alamat dompet saya dan nilai akar Merkle Tree, membuktikan pencantuman saya dalam daftar presale.

Setelah beberapa kali gagal memberikan nilai bukti, saya menyadari bahwa saya tidak akan pernah bisa mengetahui nilai bukti untuk nilai akar yang diberikan karena tidak ada cara untuk mengetahui semua nilai daun yang digunakan untuk menghitungnya. Saya perlu mengubah nilai root agar saya dapat memberikan Pohon Merkle yang valid.

Menggunakan Alat Profesor QPetabyte, saya membuat Pohon Merkle dari dua daun yang terdiri dari alamat dompet saya dan alamat untuk BSRS_nft kontrak pintar, yang saya temukan menggunakan Blockchain Explorer dalam game di blok dua blockchain Ethereum game. Alat tersebut menghasilkan nilai akar dari pohon ini dan nilai bukti untuk alamat dompet saya. Kemudian saya menggunakan Burp untuk mencegat permintaan ke server dan mengubah nilai root default sehingga saya dapat mengirimkan Pohon Merkle yang valid. Ini milikku Olahraga NFT dibeli dengan harga tetap 100 KringleCoins:

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Spesimen jelek memang.

Terakhir

Pecahkan itu! Sorotan dari KringleCon 5: Kecerdasan Data PlatoBlockchain Cincin Emas. Pencarian Vertikal. Ai.

Terima kasih banyak kepada penyelenggara SANS Holiday Hack Challenge karena telah memperluas pikiran saya dengan cara baru dan membantu memperdalam pengetahuan keamanan siber saya. Saya tidak hanya menantikan tantangan tahun depan, tetapi saya bahkan akan mencoba tantangan edisi 2020 dan 2021 ini. Dan jika Anda belum pernah berpartisipasi dalam tantangan ini sebelumnya, saya harap sorotan ini menarik minat Anda.

Stempel Waktu:

Lebih dari Kami Hidup Keamanan