Taktik Tim Merah: Teknik Pemantauan Proses Lanjut dalam Operasi Serangan

Halo lagi. Pada malam yang PenTest. Praktik Pengujian Penetrasi ” menerjemahkan materi lain yang menarik untuk Anda.




Dalam artikel ini, kita akan memahami kemampuan utilitas pemantauan proses yang terkenal dan menunjukkan bagaimana menggunakan teknologi yang mendasari alat ini untuk operasi ofensif Tim Merah.

Pemahaman teknis yang baik tentang sistem yang kita andalkan adalah kriteria utama untuk membuat keputusan tentang apa langkah selanjutnya dari operasi itu. Pengumpulan dan analisis data tentang proses yang berjalan dalam sistem yang dikompromikan memberi kita banyak informasi dan membantu kita memahami bagaimana infrastruktur TI dari organisasi target bekerja. Selain itu, data proses yang diminta secara berkala membantu kami merespons perubahan lingkungan dan menerima sinyal pemicu ketika penyelidikan dimulai.

Untuk dapat mengumpulkan data terperinci tentang proses pada titik akhir yang dikompromikan, kami menciptakan kotak peralatan yang menyatukan kekuatan utilitas proses canggih dan kerangka kerja C2 (seperti Cobalt Strike).

Alat (dan kode sumbernya) dapat ditemukan di sini .

Utilitas Sistem Internal Windows


Untuk memulainya, kita akan mencari tahu utilitas mana yang dapat digunakan untuk mengumpulkan informasi tentang proses komputer pada Windows. Kami kemudian belajar bagaimana utilitas ini mengumpulkan informasi sehingga nantinya dapat digunakan dalam toolkit Tim Merah.

Sistem operasi Windows dilengkapi dengan banyak utilitas siap pakai untuk mengelola sistem. Meskipun sebagian besar alat yang disediakan cocok untuk keperluan administrasi sistem dasar, beberapa di antaranya tidak memiliki fungsi yang diperlukan untuk pemecahan masalah dan pemantauan lanjutan. Sebagai contoh, task manager Windows memberi kita informasi dasar tentang semua proses yang berjalan dalam sistem, tetapi bagaimana jika kita membutuhkan informasi yang lebih rinci, seperti deskriptor objek, koneksi jaringan, atau modul yang dimuat sebagai bagian dari proses tertentu?

Untuk mengumpulkan informasi seperti itu ada alat yang lebih maju. Misalnya, utilitas sistem dari paket Sysinternals. Sebagai anggota Tim Merah dengan pengalaman luas dalam administrasi jaringan dan sistem, saya selalu menjadi penggemar berat Sysinternals.

Saat memecahkan masalah sistem server yang berjalan lambat atau komputer klien yang terinfeksi, saya paling sering memulai pemecahan masalah menggunakan alat seperti Process Explorer atau Procmon.
Dari sudut pandang forensik digital, alat-alat ini juga tampaknya sangat berguna untuk melakukan analisis dasar dinamis sampel malware dan mencari artefak dalam sistem yang terinfeksi. Jadi mengapa alat ini sangat populer di kalangan administrator sistem serta profesional keamanan? Mari kita mencari tahu, menggali beberapa informasi proses yang bisa kita dapatkan menggunakan alat Process Explorer.

Menggunakan Process Explorer


Hal pertama yang kita lihat ketika memulai Process Explorer adalah daftar / pohon dari semua proses yang berjalan pada sistem. Ini memberi kita informasi tentang nama-nama proses, pengidentifikasi mereka, konteks pengguna dan tingkat integritas proses dan informasi versi. Informasi tambahan juga dapat tercermin dengan menyesuaikan kolom yang sesuai.



Jika kita menggunakan panel bawah, kita akan dapat melihat semua modul yang dimuat oleh proses tertentu, atau beralih ke melihat deskriptor untuk berkenalan dengan semua objek deskriptor bernama yang digunakan oleh proses:



Menjelajahi modul dapat berguna saat mencari perpustakaan jahat yang dimuat dalam proses atau untuk Tim Merah, itu adalah produk keamanan aktif (misalnya, EDR) yang telah menerapkan modul koneksi API dalam mode pengguna.



Beralih ke deskriptor tampilan memungkinkan Anda untuk berkenalan dengan jenis dan nama semua objek bernama yang digunakan dalam proses. Ini berguna untuk mencari tahu file dan kunci registri mana yang terbuka, yang bernama pipa yang digunakan untuk komunikasi antarproses.
Jika Anda mengklik dua kali pada nama proses, sebuah jendela dengan informasi yang lebih detail akan muncul. Mari kita lihat beberapa tab untuk mempelajari tentang properti tambahan objek:



Tab gambarmenampilkan informasi tentang jalur biner, direktori kerja, dan opsi baris perintah. Selain itu, ini menampilkan informasi tentang konteks pengguna, proses induk, jenis gambar (x86 atau x64) dan banyak lagi.



Tab Utas berisi informasi tentang menjalankan utas dalam proses. Ketika Anda memilih aliran dan kemudian mengkliknya, tombol tumpukan akan mencerminkan tumpukan panggilan untuk aliran khusus ini. Untuk melihat utas / panggilan diluncurkan dalam mode kernel, Process Explorer menggunakan driver kernel, yang diinstal ketika bekerja dalam mode tinggi.

Dari sudut pandang DFIR, informasi utas berguna untuk mendeteksi suntikan ke dalam memori, misalnya, ketika ada ancaman virus bebas-file. Dengan demikian, stream yang tidak didukung oleh file pada disk dapat menandakan perilaku yang mencurigakan. Untuk informasi lebih lanjut tentang utas dan memori, saya sangat menyarankan untuk memperhatikan alat Process Hacker .



Tab lain yang menarik di Process Explorer adalah tab TCP / IP. Di atasnya Anda akan melihat semua koneksi jaringan yang terkait dengan proses ini. Dari sudut pandang serangan, ini bisa berguna untuk memahami ketika koneksi dibuat dari sistem yang dikompromikan. Sesi jarak jauh PowerShell atau sesi RDP yang masuk dapat menandakan bahwa penyelidikan telah dimulai.

Menggunakan metode yang dibahas untuk serangan


Sekarang kami telah mempelajari sedikit hal menarik tentang proses, dan tentang informasi yang dapat kami kumpulkan tentang mereka menggunakan Process Explorer, Anda mungkin bertanya-tanya bagaimana cara mengakses informasi ini dari kerangka kerja C2 favorit kami. Tentu saja, kita bisa menggunakan PowerShell, karena ini akan memberi kita kesempatan untuk menggunakan bahasa skrip yang kuat dan Windows API. Namun, hari ini PowerShell berada di bawah pengawasan terus-menerus dari layanan keamanan, jadi kami mencoba menghindari metode ini.

Dalam Cobalt Strike, kita dapat menggunakan perintah ps dalam konteks suar. Perintah ini menampilkan informasi dasar tentang proses berdasarkan semua proses yang berjalan di sistem. Dalam kombinasi dengan skrip @r3dQu1nn ProcessColor, metode ini cenderung menjadi yang terbaik untuk mendapatkan data proses.

Output dari perintah ps berguna untuk menyortir proses yang berjalan dengan cepat, tetapi mereka tidak mengandung informasi terperinci yang akan membantu Anda lebih memahami sistem. Untuk mengumpulkan informasi lebih rinci, kami membuat utilitas kami sendiri untuk memperoleh informasi tentang proses. Dengan bantuan mereka, kami dapat mengumpulkan dan memperkaya informasi yang diperoleh dari sistem yang dikompromikan.

Ps Tools


Tidak mudah untuk meniru fungsi dan informasi yang disediakan oleh alat seperti Process Explorer. Pertama kita perlu mencari tahu bagaimana alat ini bekerja di bawah tenda (dan dalam mode pengguna), maka kita perlu memahami bagaimana cara merefleksikan informasi ini dengan lebih baik di konsol, dan bukan di antarmuka grafis.

Setelah menganalisis kode sumber, menjadi jelas bahwa banyak alat tingkat rendah untuk menyediakan informasi sistem sebagian besar didasarkan pada API NtQuerySystemInformation asli . Meskipun API dan struktur terkaitnya tidak sepenuhnya didokumentasikan, API ini memungkinkan Anda mengumpulkan banyak informasi tentang sistem Windows. Jadi gunakan NtQuerySystemInformationsebagai titik awal untuk mengumpulkan informasi tentang proses yang berjalan dalam sistem, kami akan menggunakan PEB masing - masing proses untuk mengumpulkan informasi terperinci tentang masing-masing proses. Menggunakan NtQueryInformationProcess API , kita dapat membaca struktur PROCESS_BASIC_INFORMATIONmenggunakan deskriptor proses dan menemukannya PebBaseAddress. Kemudian kami menggunakan NtReadVirtualMemoryAPI untuk membaca struktur RTL_USER_PROCESS_PARAMETERS, yang akan memungkinkan kami untuk mengetahui parameter ImagePathNamedan CommandLineprosesnya.

Menggunakan API ini sebagai dasar dari kode kami, kami telah menulis alat berikut untuk mendapatkan informasi tentang proses:

  • Psx : menampilkan daftar terperinci dari semua proses yang berjalan pada sistem.
  • Psk : menampilkan informasi kernel, termasuk driver yang dimuat.
  • Psc: TCP-.
  • Psm: ( , ).
  • Psh: (, , ).
  • Psw: .

Semua alat ini ditulis dalam C sebagai DLL reflektif dan dapat secara refleks tertanam ke dalam proses spawned menggunakan kerangka C2 seperti Cobalt Strike (atau kerangka kerja lain yang mendukung injeksi DLL reflektif). Untuk Cobalt Strike, kami telah menambahkan skrip agresor yang dapat digunakan untuk memuat alat menggunakan manajer skrip Cobalt Strike.

Mari kita lihat setiap alat spesifik yang diluncurkan di Cobalt Strike untuk mendemonstrasikan fungsionalitas dan menunjukkan informasi apa yang dapat dikumpulkan dengan menggunakannya:

Psx


Alat ini menunjukkan daftar terperinci dari semua proses yang berjalan pada sistem. Output dapat dibandingkan dengan informasi di layar utama Process Explorer. Psx menampilkan nama proses, id, PID induknya, waktu pembuatan, dan informasi yang terkait dengan file biner dari proses (arsitektur, nama perusahaan, versi, dll.). Seperti yang Anda lihat, ini juga menampilkan beberapa informasi menarik dari kernel aktif sistem, misalnya, alamat dasar kernel, yang berguna saat mengoperasikan kernel (misalnya, untuk menghitung offset gadget ROP). Semua informasi ini dapat dikumpulkan dari konteks pengguna normal (tanpa peningkatan hak istimewa).



Jika kami memiliki cukup izin untuk membuka deskriptor proses, Anda dapat membaca informasi tambahan, seperti konteks pengguna dan tingkat integritas tokennya. Dengan menghitung PEB dan struktur terkait memungkinkan Anda untuk mendapatkan informasi tentang lintasan gambar dan parameter baris perintah:



Seperti yang mungkin Anda perhatikan, kami membaca dan menampilkan informasi versi dari gambar proses biner, misalnya, nama dan deskripsi perusahaan. Mengetahui nama perusahaan, Anda dapat dengan mudah mendaftar semua produk keamanan aktif dalam sistem. Dengan menggunakan alat ini, kami membandingkan nama perusahaan dari semua proses aktif dengan daftar pemasok produk keamanan yang terkenal dan menampilkan hasilnya:



Psk


Alat ini mencerminkan informasi tentang kernel yang berjalan, termasuk semua modul driver yang dimuat. Seperti alat Psx, ia juga menyediakan ringkasan semua modul kernel yang dimuat dari produk keamanan terkenal.



Psc


Alat ini menggunakan metode yang sama untuk menampilkan informasi tentang proses aktif seperti Psx , kecuali bahwa ia hanya menampilkan proses dengan koneksi jaringan aktif (IPv4, IPv6 TCP, RDP, ICA):



Psm


Anda dapat menggunakan alat ini untuk mendapatkan informasi terperinci tentang proses tertentu. Ini akan menampilkan daftar semua modul (DLL) yang digunakan oleh proses dan koneksi jaringan:



Psh


Sama seperti Psm , tetapi bukannya modul yang dimuat, ini menunjukkan daftar deskriptor proses:



Psw


Alat Psw terakhir namun tidak kalah penting . Alat ini akan menampilkan daftar proses dengan pegangan jendela aktif, yang terbuka di desktop pengguna, termasuk judul jendela. Ini berguna untuk menentukan antarmuka aplikasi grafis mana yang dibuka pengguna tanpa harus mengambil tangkapan layar desktop:



Gunakan kasing


Anda mungkin bertanya-tanya: "Dan bagaimana semua ini membantu kami dalam operasi ofensif?" Setelah mendapatkan akses ke aset yang dikompromikan, kami biasanya menggunakan informasi ini untuk tujuan berikut:

  • Mendeteksi alat keamanan pada aset yang dikompromikan. Tidak hanya oleh informasi proses, tetapi juga oleh modul yang dimuat.
  • Mendeteksi mesin pengait kustom.
  • Cari peluang untuk manuver (melalui sesi jaringan) dan peningkatan hak istimewa.

Setelah kompromi pertama, Anda dapat secara berkala meminta informasi serupa tentang proses dan mulai membuat pemicu. Misalnya, kami secara otomatis memasukkan informasi ini ke RedELK . Kemudian Anda dapat membuat peringatan tentang perubahan mencurigakan dalam informasi proses, seperti:

  • Luncurkan alat audit keamanan atau instal produk keamanan titik akhir yang baru.
  • Koneksi jaringan masuk dari departemen keamanan melalui sesi RDP atau PowerShell jarak jauh.
  • Membuka pegangan oleh proses lain pada salah satu artefak berbahaya kami (misalnya, file yang digunakan untuk mempertahankan keberadaan).

Kesimpulan


Dalam artikel ini, kami menunjukkan bagaimana alat seperti Sysinternals Process Explorer dapat digunakan untuk mendapatkan informasi terperinci tentang proses yang berjalan pada sistem, dan bagaimana informasi ini dapat membantu administrator dan profesional keamanan memecahkan masalah dan memeriksa sistem untuk masalah keamanan atau kinerja.

Informasi yang sama juga relevan dan berguna untuk Tim Merah, yang memiliki akses ke sistem yang dikompromikan selama operasi. Ini membantu untuk lebih memahami sistem dan infrastruktur TI dari tujuan Anda, dan pertanyaan berkala atas sistem semacam itu memungkinkan Tim Merah untuk merespons kemungkinan perubahan di lingkungan (misalnya, pemicu penyelidikan).

Kami telah mereplikasi beberapa fungsi yang disediakan oleh alat-alat seperti Process Explorer, sehingga kami dapat menggunakan informasi yang sama dalam operasi ofensif. Untuk melakukan ini, beberapa alat pemantauan proses telah dibuat yang dapat digunakan sebagai bagian dari kerangka kerja C2, misalnya Cobalt Strike. Kami menunjukkan cara menggunakan alat ini dan informasi apa yang dapat Anda gunakan untuk mengumpulkannya.

Alat-alat ini tersedia di halaman GitHub kami dan siap digunakan sebagai bagian dari Cobalt Strike.



Pelajari lebih lanjut tentang kursus.



All Articles