Bagaimana Anda menjalankan CMD.exe di bawah Akun Sistem Lokal?

144

Saat ini saya sedang menjalankan Vista dan saya ingin secara manual menyelesaikan operasi yang sama dengan Layanan Windows saya. Karena Layanan Windows berjalan di bawah Akun Sistem Lokal, saya ingin meniru perilaku yang sama ini. Pada dasarnya, saya ingin menjalankan CMD.EXE di bawah Akun Sistem Lokal.

Saya menemukan informasi online yang menyarankan lauching CMD.exe menggunakan perintah DOS Task Scheduler AT, tetapi saya menerima peringatan Vista bahwa "karena peningkatan keamanan, tugas ini akan berjalan pada saat dikecualikan tetapi tidak secara interaktif." Berikut ini contoh perintah:

AT 12:00 /interactive cmd.exe

Solusi lain menyarankan membuat Layanan Windows sekunder melalui Kontrol Layanan (sc.exe) yang hanya meluncurkan CMD.exe.

C:\sc create RunCMDAsLSA binpath= "cmd" type=own type=interact
C:\sc start RunCMDAsLSA

Dalam hal ini layanan gagal untuk memulai dan menghasilkan pesan kesalahan berikut:

FAILED 1053: The service did not respond to the start or control request in a timely fashion.

Saran ketiga adalah meluncurkan CMD.exe melalui Tugas Terjadwal. Meskipun Anda dapat menjalankan tugas yang dijadwalkan di berbagai akun, saya tidak percaya Akun Sistem Lokal adalah salah satunya.

Saya sudah mencoba menggunakan Runas juga, tetapi berpikir saya berlari ke batasan yang sama seperti yang ditemukan ketika menjalankan tugas yang dijadwalkan.

Sejauh ini, setiap upaya saya berakhir dengan kegagalan. Ada saran?

Ben Griswold
sumber

Jawaban:

221

Meskipun saya belum menguji secara pribadi, saya memiliki alasan yang baik untuk percaya bahwa solusi AT COMMAND yang dinyatakan di atas akan bekerja untuk XP, 2000 dan Server 2003. Per pengujian saya dan Bryant, kami telah mengidentifikasi bahwa pendekatan yang sama tidak bekerja dengan Vista atau Windows Server 2008 - kemungkinan besar karena keamanan tambahan dan / interaktif beralih tidak digunakan lagi.

Namun, saya menemukan artikel ini yang menunjukkan penggunaan PSTools dari SysInternals (yang diakuisisi oleh Microsoft pada bulan Juli 2006.) Saya meluncurkan baris perintah melalui yang berikut dan tiba-tiba saya berjalan di bawah Akun Admin Lokal seperti sulap:

psexec -i -s cmd.exe

PSTools bekerja dengan baik. Ini adalah seperangkat alat yang ringan dan terdokumentasi dengan baik yang menyediakan solusi tepat untuk masalah saya.

Terima kasih banyak kepada mereka yang menawarkan bantuan.

Ben Griswold
sumber
11
Saya lebih suka ini dengan -dmenambahkan, sehingga saya dapat terus menggunakan konsol tempat saya meluncurkannya.
SamB
1
Saya baru saja mencoba di Vista x64 dan mendapat "Layanan PsExec berjalan pada ... adalah versi yang tidak kompatibel." Dicoba langsung dari \\ live.sysinternals.com \ tools \ psexec dan biner terbaru. Sepertinya tidak ada versi x64
ZXX
52
  1. Unduh psexec.exe dari Sysinternals .
  2. Tempatkan di drive C: \ Anda.
  3. Logon sebagai standar atau admin pengguna dan menggunakan perintah berikut: cd \. Ini menempatkan Anda di direktori root drive Anda, di mana psexec berada.
  4. Gunakan perintah berikut: psexec -i -s cmd.exe mana -i untuk interaktif dan -s untuk akun sistem.
  5. Ketika perintah selesai, shell cmd akan diluncurkan. Tipewhoami ; ia akan mengatakan 'sistem "
  6. Buka pengelola tugas. Bunuh explorer.exe.
  7. Dari jenis shell perintah yang ditinggikan start explorer.exe .
  8. Ketika explorer diluncurkan perhatikan nama "sistem" di bilah menu mulai. Sekarang Anda dapat menghapus beberapa file dalam direktori system32 yang sebagai admin Anda tidak dapat menghapus atau sebagai admin Anda harus berusaha keras untuk mengubah izin untuk menghapus file-file itu.

Pengguna yang mencoba mengubah nama atau menghapus file Sistem di direktori windows yang dilindungi harus tahu bahwa semua file windows dilindungi oleh DACLS saat mengganti nama file Anda harus mengubah pemilik dan mengganti TrustedInstaller yang memiliki file dan membuat pengguna seperti pengguna yang milik grup administrator sebagai pemilik file kemudian coba ganti namanya setelah mengubah izin, itu akan berfungsi dan saat Anda menjalankan windows explorer dengan hak istimewa kernel Anda agak terbatas dalam hal akses Jaringan karena alasan keamanan dan itu masih merupakan topik penelitian bagi saya untuk mendapatkan akses kembali

gagak
sumber
Saya menggunakan trik ini, untuk memulai explorer sebagai pengguna yang sering ditinggikan. Terutama, ketika terhubung melalui VNC ke PC, di mana perlu mengatur pengaturan jaringan, misalnya. +1 dari saya
TPAKTOPA
Trik ini tampaknya tidak valid sekarang. OS saya adalah Windows 7 SP1. Saya sudah sejauh melihat "sistem" di menu start bar. Namun tetap ketika mengganti nama file di folder system32, katanya izin ditolak. Folder system32 sekarang dimiliki oleh TrustedInstaller, dan bahkan akun sistem lokal hanya memiliki izin khusus.
Shaohua Li
jika Anda mencoba untuk mengubah nama atau menghapus file apa pun yang ada di direktori windows yang dilindungi yang dimiliki oleh TrustedInstaller, Anda pengguna saat ini harus memiliki file dengan mengubah izin, maka Anda dapat mengubah nama atau menghapusnya, ini sering digunakan untuk menghapus slmgr. exe dan file sistem lainnya untuk mendapatkan akses tanpa batas ke versi jejak windows tanpa membayar untuk itu
gagak
10

Menemukan jawaban di sini yang tampaknya menyelesaikan masalah dengan menambahkan / k mulai ke parameter binPath. Jadi itu akan memberi Anda:

sc create testsvc binpath= "cmd /K start" type= own type= interact

Namun, Ben mengatakan itu tidak berhasil untuknya dan ketika saya mencobanya di Windows Server 2008 ia membuat proses cmd.exe di bawah sistem lokal, tetapi itu tidak interaktif (saya tidak bisa melihat jendela).

Saya tidak berpikir ada cara mudah untuk melakukan apa yang Anda minta, tapi saya bertanya-tanya mengapa Anda melakukannya? Apakah Anda hanya mencoba melihat apa yang terjadi ketika Anda menjalankan layanan Anda? Sepertinya Anda bisa menggunakan pencatatan untuk menentukan apa yang terjadi alih-alih harus menjalankan exe sebagai sistem lokal ...

Bryant
sumber
Hai Bryant. Solusi ini pada dasarnya diuraikan dalam pertanyaan. Apakah ini benar-benar bekerja untuk Anda? Itu mengakibatkan kegagalan bagi saya. Terima kasih.
Ben Griswold
Bryant, Saya memiliki Layanan yang mengelola pemasangan dan penghapusan komponen lain. Saya ingin memberi kelompok dukungan kami cara mudah untuk "memaksa" menghapus komponen jika Layanan saya gagal melakukan tugasnya. Saat menguji, saya ingin dapat "memaksa" uninstall juga. Terima kasih atas bantuannya ..
Ben Griswold
1
@ Ben: Apakah Anda memiliki layanan "Deteksi Layanan Interaktif" jenis mulai diatur ke "Manual" atau "Dinonaktifkan"?
Hello71
1
Untuk memungkinkan layanan interaktif untuk Server 2012, HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServicesperlu ditetapkan sebagai 0 (Default 1)
Ivan Chau
6

Saya akan merekomendasikan Anda bekerja mengatur izin minimum yang layanan Anda benar-benar butuhkan dan menggunakannya, daripada konteks Sistem Lokal yang terlalu istimewa. Misalnya, Layanan Lokal .

Layanan interaktif tidak lagi berfungsi - atau setidaknya, tidak lagi menampilkan UI - di Windows Vista dan Windows Server 2008 karena isolasi sesi 0 .

Mike Dimmick
sumber
4
Mike, terima kasih atas tanggapannya. Meskipun saya setuju dengan rekomendasi Anda dan saya pikir semua orang akan mendapat manfaat dari jawaban Anda, saya tidak percaya Anda telah menjawab pertanyaan itu.
Ben Griswold
@ Ben Griswold: Namun, ia menunjukkan dengan tepat apa yang membuat cara lama gagal di Vista. +1.
SamB
1
Pertanyaannya adalah "Bagaimana Anda menjalankan CMD.exe di bawah Akun Sistem Lokal?"
Jaco Pretorius
2
@ SamB, dan itulah gunanya komentar, ketika Anda memiliki sesuatu untuk disumbangkan yang sebenarnya bukan jawaban .
Synetech
6

Menggunakan Secure Desktop untuk menjalankan cmd.exesebagaisystem

Kita bisa mendapatkan akses kernel melalui CMDWindows XP / Vista / 7 / 8.1 dengan mudah dengan melampirkan debugger:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
  1. Jalankan CMDsebagai Administrator

  2. Kemudian gunakan perintah ini di Elevated:

     CMD REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
    
  3. Kemudian jalankan osk(onscreenkeyboard). Itu masih tidak berjalan dengan tingkat integritas sistem jika Anda memeriksa melalui proses explorer, tetapi jika Anda dapat menggunakan OSK di sesi layanan, itu akan berjalan sebagaiNT Authority\SYSTEM

jadi saya punya ide Anda harus menjalankannya di Secure Desktop.

Mulai file apa saja sebagai Administrator. Ketika UAC muncul, cukup tekan Win+ Udan mulai OSKdan itu akan mulai CMD. Kemudian pada prompt yang ditinggikan, ketik whoamidan Anda akan mendapatkanNT Authority\System . Setelah itu, Anda dapat memulai Explorer dari shell perintah sistem dan menggunakan profil Sistem, tetapi Anda agak terbatas apa yang dapat Anda lakukan pada jaringan melalui hak istimewa SISTEM untuk alasan keamanan. Saya akan menambahkan lebih banyak penjelasan nanti karena saya menemukannya setahun yang lalu.

Penjelasan Singkat tentang bagaimana ini terjadi

Berjalan Cmd.exeDi Bawah Akun Sistem Lokal Tanpa MenggunakanPsExec . Metode ini menjalankan teknik Debugger Trap yang ditemukan sebelumnya, yah teknik ini memiliki manfaatnya sendiri, dapat digunakan untuk menjebak beberapa licik / cacing jahat atau malware di debugger dan menjalankan beberapa exe lain sebagai gantinya untuk menghentikan penyebaran atau kerusakan sementara. di sini kunci registri ini menjebak keyboard pada layar di windows native debugger dan menjalankan cmd.exe sebagai gantinya tetapi cmd masih akan berjalan dengan Logged pada hak pengguna, namun jika kita menjalankan cmd di session0 kita bisa mendapatkan shell sistem. jadi kami tambahkan di sini ide lain kami span cmd pada desktop aman mengingat desktop aman berjalan di sesi 0 di bawah akun sistem dan kami mendapatkan shell sistem. Jadi, setiap kali Anda menjalankan apa pun yang ditinggikan, Anda harus menjawab UAC prompt dan UAC meminta pada desktop gelap, non-interaktif dan setelah Anda melihatnya Anda harus menekanWin +Udan kemudian pilih berjalan di bawah hak istimewa sistem lokal. Bahkan ada lebih banyak cara untuk mendapatkan akses sistem lokalOSKAnda akanCMD.exeCMD

gagak
sumber
ya ada lebih banyak cara untuk menjalankan cmd sebagai Peningkatan dengan otoritas NT Privileges
gagak
Ini sangat bagus. Sangat bagus. Aku benci mengandalkan add-on pihak ke-3 untuk menyelesaikan sesuatu. Ini super cepat dan mudah. Permanen juga :-) Satu-satunya masalah adalah Anda harus menjalankan semua perintah di jendela UAC dan hanya beberapa aplikasi yang terbuka. Explorer.exe tidak terbuka misalnya. Saya ingin bereksperimen jika ada cara lain untuk memicu ini. Saya ingin dapat menjalankan aplikasi lain di lingkungan windows asli tanpa UAC membatasi aplikasi tertentu. Hal hebat Raven!
KonaRin
3

alternatif untuk ini adalah Proses peretas jika Anda menjalankannya sebagai ... (Interaktif tidak bekerja untuk orang-orang dengan peningkatan keamanan tetapi itu tidak masalah) dan ketika kotak terbuka masukkan Layanan ke dalam jenis kotak dan masukkan SISTEM ke dalam kotak pengguna dan masukkan C : \ Users \ Windows \ system32 \ cmd.exe biarkan sisanya klik ok dan Anda telah memiliki jendela dengan cmd dan jalankan sebagai sistem sekarang lakukan langkah-langkah lain untuk diri Anda sendiri karena saya menyarankan Anda mengenal mereka

James5001
sumber
2

Ada cara lain. Ada program yang disebut PowerRun yang memungkinkan cmd tinggi untuk dijalankan. Bahkan dengan hak Tepercaya. Memungkinkan untuk perintah konsol dan GUI.

Alexander Haakan
sumber
1

jika Anda dapat menulis file batch yang tidak perlu interaktif, coba jalankan file batch itu sebagai layanan, untuk melakukan apa yang perlu dilakukan.


sumber
0

Saya menggunakan utilitas RunAsTi untuk menjalankan sebagai TrustedInstaller (hak istimewa tinggi). Utilitas dapat digunakan bahkan dalam mode pemulihan Windows (mode yang Anda masukkan dengan melakukan Shift+ Restart), utilitas psexec tidak berfungsi di sana. Tetapi Anda perlu menambahkan C:\WindowsdanC:\Windows\System32 jalur (bukan X:\Windowsdan X:\Windows\System32) ke PATHvariabel lingkungan, jika tidak RunAsTi tidak akan bekerja dalam mode pemulihan, itu hanya akan mencetak: AdjustTokenPrivileges untuk SeImpersonateName: Tidak semua hak istimewa atau grup yang direferensikan ditugaskan ke pemanggil .

anton_rh
sumber
0

Menggunakan penjadwal tugas, jadwalkan menjalankan CMDKEY di bawah SISTEM dengan argumen yang sesuai dari / tambahkan: / pengguna: dan / lewati:

Tidak perlu menginstal apa pun.

Paul Harris
sumber