Pemberian hak administrator yang tidak sensitif

Semua Jumat, teman-teman. Hari ini kami berbagi dengan Anda satu lagi bahan yang diterjemahkan pada malam peluncuran kursus teknik terbalik .



Saya punya ide bagus bagaimana membuat pengguna menjalankan aplikasi Anda tanpa rekayasa sosial atau menggunakan eksploitasi pihak ketiga. Lebih jauh, Anda dapat dengan mudah bergerak maju dan memulai infeksi massal dari file yang dapat dieksekusi, tetapi ini dapat menyebabkan banyak masalah yang tidak terduga, dan juga akan berarti bahwa aplikasi yang ditandatangani secara digital dari pemasok tepercaya akan muncul sebagai file yang tidak dipercaya. Ini adalah ide yang baik untuk "menangkap" hanya satu dll. Saya tidak akan menyebut metode ini bypass UAC (Kontrol akun pengguna), karena Anda masih perlu mendapatkan izin untuk menjalankan aplikasi (bukan milik Anda).

Perpustakaan Load


Anda mungkin sudah terbiasa dengan konsep ini, tetapi saya akan tetap menjelaskan apa itu. Ketika aplikasi memanggil LoadLibrary di dll, tetapi tidak memberikan path lengkap ke file, sistem pertama-tama memeriksa kunci registri FamousDlls, di mana ia mencari path, jika tidak ada, sistem akan mencari di direktori dari mana aplikasi dieksekusi, dan kemudian akan mencari dalam jalur sistem seperti system32 / syswow64.

Anda dapat meletakkan dll Anda di direktori yang sama dengan aplikasi dan memberinya nama yang sama dengan yang dimiliki sistem dll, tetapi dalam hal apa pun, dll Anda harus memenuhi persyaratan berikut:

  • Aplikasi harus mengunduh dll dengan nama dan bukan path lengkap (seperti yang sering terjadi);
  • Pustaka yang diperlukan tidak boleh ada di HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \knownDLLs;
  • Dll Anda harus cocok dengan arsitektur prosesor (ingat bahwa prosesor 64-bit hanya akan melewatkan pustaka 32-bit dan sebaliknya);
  • Perpustakaan terletak di System32 atau Syswow64, karena jalur tertentu sering tidak berfungsi.

Virus ZeroAccess menggunakan metode ini untuk mengambil keuntungan dari "rekayasa sosial" dan memaksa pengguna untuk menjalankan file. Untuk mulai dengan, installer Adobe Flash diunduh dari yang resmi, dll bot dicatat di direktori yang sama dengan installer, dan kemudian installer diluncurkan. Ketika penginstal dijalankan, kontrol akun pengguna menampilkan pesan bahwa aplikasi disediakan oleh sumber tepercaya dari "Adobe Systems Incorporated", dan kemungkinan besar pengguna akan menginstal aplikasi ini (ini mengarah pada eksekusi bot dll yang berbahaya).


Apakah ini pembaruan nyata untuk Flash Player? Atau ZeroAccess? Tidak ada yang tahu

Metode yang kurang invasif


Bayangkan ada folder tempat 90% aplikasi yang membutuhkan hak akun tinggi, dan itu bisa ditulisi tanpa hak semacam ini. Ya, folder seperti itu ada dan ini adalah folder %userprofile%Downloads . Anda mungkin mengerti apa yang saya maksudkan.

Saya tidak berharap menemukan dll yang memuat sebagian besar aplikasi dan pada saat yang sama memenuhi semua kriteria untuk dll berbahaya, dan setelah sekitar lima menit pencarian saya menemukan tambang emas: dwmapi.dll . Perpustakaan ini tidak hanya memenuhi semua kriteria, tetapi juga mengunduh semua file instalasi. Sekarang mari kita buat dll kita sendiri, “dwmapi.dll” nama “dwmapi.dll” , letakkan di folder Downloads dan jalankan file instalasi.



Sukses! Tetapi kenyataannya adalah bahwa segera setelah kami memulai instalasi, itu tidak akan berhasil, karena kami telah mengganti perpustakaan yang penting, tetapi ini mudah diperbaiki. Kami menginfeksi dll.

Membuat dll menginfeksi


Pada awalnya, saya hanya ingin menambahkan header bagian baru, mengubah bidang NumberOfSections di header PE, dan kemudian hanya menambahkan bagian saya ke akhir file PE. Ternyata segera setelah heading bagian terakhir ada direktori impor terkait yang akan ditimpa oleh judul bagian kami. Oleh karena itu, setelah sekitar 2 jam menulis aplikasi untuk mengembalikan semua PE dari awal, seseorang mengingatkan saya bahwa direktori impor yang tertaut ada hanya untuk mempercepat pengunduhan file yang diimpor dan dapat ditimpa, dan kemudian dinonaktifkan di header PE.

Selama 15 menit berikutnya saya memegang CTRL + Z untuk kembali ke tempat saya mulai dan merasa bodoh. Setelah dua baris kode, infector saya berfungsi sebagaimana mestinya, dan saya bisa melanjutkan ke langkah berikutnya. Sekarang infector cukup memutus dan menulis ulang direktori impor terkait dengan header bagian baru, menambahkan bagian baru ke akhir file PE, menyesuaikan SizeOfImage untuk mengakomodasi bagian baru, dan kemudian mengubah AddressOfEntryPoint untuk menunjuk ke bagian baru kami.

Yang kita butuhkan sekarang adalah kode yang kita letakkan di sana.

Shellcode


Pilihan yang jelas adalah memaksa bagian yang ditambahkan untuk mengeksekusi shellcode, jadi kami tidak perlu khawatir tentang relokasi dan impor. Kode sebenarnya sangat sederhana dan ditulis menggunakan beberapa makro FASM yang nyaman, saya akan segera membahas cara kerjanya.

  • Stack diperiksa untuk memastikan bahwa dwmapi.dll telah dipanggil oleh DLL_PROCESS_ATTACH;
  • Struktur Ldr PEB digunakan untuk mendapatkan alamat dasar Kernel32 dan Ntdll;
  • Implementasi GetProcAddress sederhana digunakan untuk mengimpor fungsi-fungsi berikut: NtOpenProcessToken, NtQueryInformationToken, NtClose, ExpandEnvironmentStringsA, CreateProcessA;
  • Token proses saat ini dibuka dan kode memintanya untuk mengonfirmasi bahwa aplikasi dari mana kita memulai memiliki hak administrator UAC;
  • Ternyata jalur cmd.exe, dan kemudian baris perintah disebut;
  • Eksekusi ditransfer kembali ke titik masuk nyata dwmapi.dll, itulah sebabnya eksekusi dapat dilanjutkan.

Menyatukan semuanya


Hasil akhir operasi menginfeksi dwmapi.dll dengan shellcode kami dan menempatkannya di folder unduhan, segera setelah pengguna mengunduh dan menjalankan installer, yang memerlukan hak administrator, baris perintah akan dipanggil sebagai administrator (karena Wow64FsRedirect dan fakta bahwa sebagian besar pengaturan bekerja di bawah wow64, kita dapat menggunakan kode yang sama pada sistem Windows 32-bit dan 64-bit).

Anda dapat menemukan infector lengkap dan shellcode di github saya: https://github.com/MalwareTech/UACElevator .

Itu saja. Sampai jumpa di lapangan!

Source: https://habr.com/ru/post/id457082/


All Articles