[Ringkasan Admin] Bagaimana jika program menginginkan hak administrator dan Anda tidak


(c) Vasya Lozhkin.


Sayangnya, dalam pekerjaan administrator sistem, tidak, tidak, dan Anda harus mengizinkan pengguna untuk menjalankan perangkat lunak apa pun dengan hak admin. Paling sering, ini adalah beberapa program Cina yang aneh untuk bekerja dengan peralatan. Tetapi ada situasi lain seperti bnk.exe terkenal.


Memberi hak administrator pengguna untuk menyelesaikan masalah dengan cepat dan mudah bertentangan dengan standar keamanan informasi. Anda dapat, tentu saja, memberinya komputer terpisah dan meletakkannya di jaringan yang terisolasi, tetapi - harganya mahal dan umumnya ...


Mari kita coba membuat keputusan yang akan memungkinkan program berjalan, dan tidak mengganggu petugas keamanan dengan pemodal.


Nah, kenapa kamu benar?


Suatu program dapat meminta hak administrator secara kondisional dalam dua kasus:


  1. Ketika dia ingin mendapatkan akses ke tempat "manusia biasa" tidak dapat: misalnya, membuat file di direktori sistem.
  2. Ketika program dikompilasi dengan bendera khusus "Membutuhkan hak administrator".

Dengan kasus pertama, semuanya menjadi jelas: kami mengambil program yang luar biasa dari Mark Russinovich Process Monitor , lihat apa yang terjadi dan di mana program ini mencoba masuk:



Kemana 7Zip ini pergi?


Dan menurut hasil penelitian, kami memberikan hak pengguna ke direktori atau cabang registry yang diinginkan.


Akan lebih sulit jika kasusnya bersifat klinis, dan tidak mudah untuk memberikan hak: misalnya, sebuah program membutuhkan intervensi yang kuat dalam operasi sistem, seperti menginstal driver. Maka Anda harus datang dengan setiap pertanian kolektif, yang akan dibahas di bagian terakhir artikel. Untuk saat ini, saya akan membahas kasus kedua secara lebih rinci - ketika kotak centang dicentang.


Untuk menyederhanakannya, maka dalam manifes khusus program (ngomong-ngomong, installer juga program) bisa ada tiga opsi peluncuran:


  • sebagai Invoker . Program dimulai dengan hak yang sama dengan proses yang menghasilkannya (sebagai aturan, ini adalah explorer.exe dengan hak pengguna);
  • tertinggi tersedia . Program akan meminta izin maksimum yang tersedia untuk pengguna (administrator akan melihat jendela yang meminta untuk meningkatkan UAC, pengguna tidak akan);
  • membutuhkan Administrator . Program ini akan memerlukan hak administrator dalam hal apa pun.

Jika pengembang dengan tegas memutuskan untuk menuntut hak administrator, bahkan jika itu tidak diperlukan, maka Anda dapat menyiasatinya dengan sedikit darah.


Tidak, Anda tidak akan benar


Di Windows, dimulai dengan Vista, layanan UAC telah muncul, yang, antara lain, bertanggung jawab untuk meminta program peningkatan. Tidak semua program "mencerna" pekerjaan dengan layanan ini. Oleh karena itu, sistem telah meningkatkan mekanisme kompatibilitas aplikasi, memungkinkan Anda untuk langsung mengatur program perilakunya - untuk meminta hak atau tidak.


Cara termudah untuk bekerja dengan mekanisme ini adalah dengan menggunakan variabel lingkungan.


Pertimbangkan contoh editor registri. Memang, menjalankan regedit.exe di bawah administrator, kami mendapatkan permintaan untuk peningkatan hak:



Minta peningkatan.


Jika kita memulai editor registri dari konsol, setelah mengubah nilai variabel lingkungan __COMPAT_LAYER ke:


set __COMPAT_LAYER=RUNASINVOKER 

Maka tidak akan ada permintaan UAC, serta hak administratif untuk aplikasi:



Editor registri yang dicabut haknya.


Ini dapat digunakan dengan meluncurkan program dengan file batch atau dengan menambahkan menu konteks melalui registri. Baca lebih lanjut di Cara Menjalankan Program tanpa Hak Admin dan Bypass UAC Prompt?


Contoh konkret dari program yang tidak menyenangkan tersebut dapat ditemukan saat mengunduh pengklasifikasi bank dari 1C dari situs web RBC di http://cbrates.rbc.ru/bnk/bnk.exe . Jika pembaruan pengklasifikasi dibiarkan sendiri oleh pengguna dan tidak ada cara untuk mengubah unduhan ke bnk.zip (dan 1C modern mendukung ini), maka Anda harus membuat kruk. Bagaimanapun, bnk.exe adalah arsip yang mengekstraksi sendiri yang karena beberapa alasan dikatakan “Memerlukan hak administrator”.


Karena pintasan tidak akan berfungsi di sini, karena 1C sendiri mengunduh file dan meluncurkannya, Anda harus menggunakan artileri berat - Toolkit Kompatibilitas Aplikasi Microsoft.


Dokumentasi untuk perangkat lunak, seperti biasa, tersedia di situs web resmi , Anda dapat mengunduhnya sebagai bagian dari Windows Assessment and Deployment Kit . Proses memecahkan masalah itu sederhana.


Anda perlu menginstal utilitas, menjalankan Administrator Kompatibilitas, dan membuat Aplikasi Memperbaiki di database baru atau yang sudah ada:



Buat perbaikan aplikasi.


Nama dan penerbit tidak masalah. Hanya lokasi file yang penting - di sini Anda perlu menentukan masalah nyata bnk.exe (di mana ia sebenarnya terletak - tidak masalah).


Selanjutnya, pilih RunAsInvoker dari daftar perbaikan.



Pilih perbaikan yang diinginkan.


Kami membiarkan sisanya secara default, menyimpan database. Seharusnya terlihat seperti ini:



Perbaikan yang dibuat untuk bnk.exe.


Setelah itu, cukup menginstal database dengan mengklik kanan dan memilih Instal. Sekarang pengguna akan dapat memuat klasifikasi bank sendiri.


Semakin buruk jika aplikasi benar-benar membutuhkan hak admin. Kemudian menambahkan hak ke objek sistem dan koreksi tidak membantu.


Oke tetap benar


Tampaknya solusi paling jelas untuk meluncurkan perangkat lunak aneh kami adalah dengan menggunakan utilitas Runas bawaan. Dokumentasi tersedia di situs web Microsoft .


Baiklah, mari kita lihat apa yang terjadi.


Tim:


 runas /savecred /user: "C:\Program Files\7-Zip\7zFM.exe" 

Memang, RunA akan menjalankan 7zip dengan hak administrator, meminta kata sandi, dan mengingatnya. Kemudian jalan pintas dengan jalur peluncuran seperti itu akan meluncurkan 7zip di bawah Administrator tanpa pertanyaan.


)


Masukkan kata sandi.


Ada satu kelemahan signifikan: kata sandi diingat pada tingkat sistem, dan sekarang, dengan menggunakan perintah Runas, Anda dapat memulai sepenuhnya program apa pun. Ini tidak seperti pemberian langsung hak admin kepada karyawan, jadi Anda sebaiknya tidak menggunakan solusi ini.


Tetapi runas dapat berguna ketika seorang karyawan mengetahui kata sandi administrator, tetapi bekerja di bawah akun terbatas (pada prinsipnya, setiap administrator sistem harus melakukan ini).

Jika kami mulai dengan perintah konsol, kami akan beralih ke skrip tingkat yang lebih tinggi. Solusi menarik diajukan dalam artikel " Plankton Windows ", di mana Runas yang disebutkan di atas diikat dengan skrip js dan melewati obfuscator. Solusinya memiliki minus yang jelas - skrip dapat diterjemahkan.


Metode yang sedikit lebih menarik dalam 2k20 adalah fitur PowerShell dan kerjanya dengan kata sandi. Anda dapat membaca lebih lanjut di artikel " Perlindungan Kata Sandi dan Enkripsi dalam Skrip PowerShell ".


Singkatnya: di PS, bekerja dengan kata sandi dilakukan melalui tipe data SecureString khusus dan objek PSCredential. Misalnya, Anda dapat memasukkan kata sandi secara interaktif:


 $Cred = Get-Credential 

Kemudian simpan kata sandi dalam bentuk terenkripsi ke file:


 $Cred.Password | ConvertFrom-SecureString | Set-Content c:\pass.txt 

Dan sekarang gunakan file ini untuk pekerjaan non-interaktif:


 $username = "Domain\" $pass = Get-Content C:\pass.txt | ConvertTo-SecureString $creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $pass 

Sayangnya, file ini hanya dapat digunakan pada PC di mana ia dibuat. Untuk menghindari ini, Anda dapat membuat kunci enkripsi yang terpisah. Misalnya, seperti ini:


 $AESKey = New-Object Byte[] 32 [Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey) $AESKey | out-file C:\password_aes.key 

Sekarang, menggunakan kunci ini, kata sandi dapat dienkripsi:


 $Cred.Password| ConvertFrom-SecureString -Key (get-content C:\password_aes.key )| Set-Content C:\pass.txt 

Dan dekripsi:


 $pass = Get-Content C:\pass.txt | ConvertTo-SecureString -Key (get-content C:\password_aes.key) 

Sayangnya, semuanya sama menyedihkannya dengan keamanan: tidak sulit untuk menghapus kata sandi jika Anda memiliki akses ke file dengan kunci enkripsi dan kata sandi terenkripsi. Ya, Anda dapat menambahkan kebingungan dan kompilasi skrip di .exe bersama dengan file yang diperlukan. Tetapi Anda perlu memahami bahwa ini adalah setengah tindakan.


Pada suatu waktu, saya menggunakan AutoIt favorit saya untuk menyelesaikan masalah seperti itu, di mana saya menyusun skrip dengan tim RunAs dan bersukacita ... Sampai saya menemukan bahwa AutoIt (terutama versi yang lebih lama) mendekompilasi sekali atau dua kali.

Opsi lain yang menarik adalah penggunaan tugas yang ditugaskan - jika Anda membuat tugas terjadwal dari akun admin, pengguna hanya perlu memulainya. Sayangnya, solusi ini tidak cocok untuk pekerjaan interaktif dengan aplikasi tersebut.


Di dunia ada beberapa solusi pihak ketiga yang dirancang untuk menyelesaikan masalah. Saya akan membahas beberapa dari mereka.


Mungkin salah satu utilitas paling terkenal adalah AdmiLink , yang dikembangkan oleh Alexei Kuryakin untuk kebutuhan fisika nuklir. Program dan prinsip kerjanya dijelaskan di situs web resmi . Saya, seperti biasa, memberi saya penjelasan singkat.


Program ini terdiri dari tiga modul. AdmiLink adalah jendela grafis di mana Anda dapat membuat pintasan ke aplikasi yang diinginkan (pada prinsipnya, dalam beberapa kasus, hanya itu sudah cukup).



Jendela utama program.


Selain secara langsung membuat pintasan (dan ya, permintaan UAC juga dapat ditekan), ada fungsi tambahan seperti kalkulator, terminal, dan pengaturan praktis untuk kebijakan keamanan. Dengan semua fitur program, pembaca diundang untuk mencari tahu sendiri.


Modul kedua disebut AdmiRun dan merupakan utilitas konsol. Dia tahu cara menjalankan aplikasi atas nama administrator, menerima sebagai salah satu parameter string yang dibuat melalui AdmiLink. Nama pengguna dan kata sandi dienkripsi di baris, dan jalur ke program juga terlibat.


Pada pandangan pertama, semuanya terlihat aman, tetapi, sayangnya, kode program ditutup, dan seberapa banyak Anda dapat mempercayai pengembang adalah sebuah pertanyaan.


Modul ketiga - AdmiLaunch - bertanggung jawab untuk meluncurkan windows dalam mode yang berbeda, dan digunakan untuk meluncurkan AdmiRun jika Anda membuat pintasan melalui AdmiLink.


Secara umum, solusinya telah diuji selama bertahun-tahun dan administrator sistem dalam negeri. Tapi saya akan menambahkan alternatif dari luar negeri.


RunAsRob adalah perangkat lunak yang cukup menarik yang ditulis oleh pengembang Jerman Oliver Hessing. Tidak seperti AdmiLink, perangkat lunak diinstal sebagai layanan yang berjalan di bawah akun istimewa (administrator atau sistem). Akibatnya, pintasan yang disiapkan mengacu pada layanan, yang pada gilirannya meluncurkan perangkat lunak yang ditentukan.


Fitur dari program ini adalah memungkinkan untuk mengesahkan tidak hanya program, tetapi juga folder (termasuk folder jaringan). Dan menyimpan pengaturan dalam registri memungkinkan untuk menambahkan templat kebijakan grup, kira-kira seperti yang kami tulis dalam artikel " Menyelam ke Templat dan Menjinakkan Windows GPO ". Berkat ini, jika perlu, pengaturan dapat diterapkan langsung dari Active Directory.



Jendela utama program.


Program ini banyak didokumentasikan di situs web resmi .


Penulis ini juga memiliki program RunAsSpc yang memungkinkan Anda untuk menjalankan file yang dapat dieksekusi di bawah hak pengguna lain, mentransfer kredensial melalui file terenkripsi.


Saya hanya dapat menambahkan bahwa perangkat lunak ini gratis hanya untuk penggunaan pribadi.


Tetapi perlu diingat bahwa dari program yang berjalan di bawah hak administratif, Anda dapat melakukan kerusakan. Sebagai contoh, luncurkan konsol perintah istimewa melalui dialog File - Open.



Jalankan cmd.exe langsung dari editor registri.


Kebijakan untuk melarang menu konteks dan pengelola tugas lainnya, yang beberapa di antaranya dapat mengonfigurasi AdmiLink, akan membantu sedikit melindungi diri mereka. Tetapi bagaimanapun juga, Anda harus berhati-hati.


Pernahkah Anda membuat kruk aneh? Saya sarankan berbagi cerita di komentar.

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


All Articles