it-swarm-tr.com

CMD.exe dosyasını Yerel Sistem Hesabı altında nasıl çalıştırırsınız?

Şu anda Vista kullanıyorum ve aynı Windows Servisim ile aynı işlemleri elle yapmak istiyorum. Windows Hizmeti Yerel Sistem Hesabı altında çalıştığından, bu aynı davranışı taklit etmek istiyorum. Temel olarak, Yerel Sistem Hesabı altında CMD.EXE'yi çalıştırmak istiyorum.

Çevrimiçi olarak DOS Görev Zamanlayıcı AT komutunu kullanarak CMD.exe'ye dokunmayı öneren bilgileri buldum, ancak "güvenlik geliştirmeleri nedeniyle bu görevin hariç tutulduğu anda çalışacağını ancak etkileşimli olamayacağını" Vista uyarısı aldım. İşte örnek bir komut:

AT 12:00 /interactive cmd.exe

Başka bir çözüm, yalnızca CMD.exe'yi başlatan Hizmet Denetimi (sc.exe) aracılığıyla ikincil bir Windows Hizmeti oluşturulmasını önerdi. 

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

Bu durumda servis başlatılamaz ve aşağıdaki hata iletisiyle sonuçlanır:

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

Üçüncü öneri, bir Zamanlanmış Görev aracılığıyla CMD.exe'yi başlatmaktı. Zamanlanmış görevleri çeşitli hesaplar altında yürütebilseniz de, Yerel Sistem Hesabı'nın bunlardan biri olduğuna inanmıyorum.

Runas'ı da kullanmayı denedim, ancak zamanlanmış bir görevi çalıştırırken bulunanla aynı kısıtlamaya girdiğimi düşünüyorum.

Şimdiye kadar, girişimlerimin her biri başarısızlıkla sonuçlandı. Herhangi bir öneri?

124
Ben Griswold

Kişisel olarak test etmemiş olmama rağmen, yukarıda belirtilen AT KOMİSYON çözümünün XP, 2000 ve Server 2003 için işe yarayacağına inanmak için iyi bir nedenim var. Vista veya Windows Server 2008 ile çalışmaz - büyük olasılıkla ek güvenlik ve/interaktif anahtarın kullanımdan kaldırılması nedeniyle. 

Ancak, SysInternals 'dan PSTools ' un (Temmuz 2006’da Microsoft tarafından edinilmiş olduğunu) gösteren bu makale ile karşılaştım. magic gibi Yerel Yönetici Hesabı altında çalışıyordu:

psexec -i -s cmd.exe

PSTools iyi çalışıyor. Bu benim sorunuma uygun bir çözüm sunan, hafif ve iyi belgelenmiş bir araçlar seti.

Yardım teklif edenlere çok teşekkürler.

196
Ben Griswold
  1. Psexec.exe dosyasını Sysinternals 'den indirin.
  2. C:\sürücünüze yerleştirin.
  3. Standart veya yönetici bir kullanıcı olarak oturum açın ve aşağıdaki komutu kullanın: cd \. Bu sizi psexec'in bulunduğu sürücünün kök dizinine yerleştirir.
  4. Aşağıdaki komutu kullanın: psexec -i -s cmd.exe burada -i etkileşimli ve -s sistem hesabı içindir.
  5. Komut tamamlandığında, bir cmd Kabuk başlatılacak. whoami yazın; 'sistem' diyecek
  6. Görev yöneticisini açın. Explorer.exe'yi öldür.
  7. Yükseltilmiş bir komuttan Kabuk yazın start Explorer.exe.
  8. Explorer başlatıldığında, başlangıç ​​menü çubuğunda "system" ismine dikkat edin. Artık sistem32 dizinindeki bazı dosyaları silebilirsiniz; yönetici olarak silemezsiniz veya yönetici olarak bu dosyaları silmek için izinleri değiştirmek için denemek zorunda kalırsınız.

Herhangi bir korumalı pencere dizinindeki Sistem dosyalarını yeniden adlandırmaya veya kaldırmaya çalışan kullanıcılar, bir dosyayı yeniden adlandırırken tüm Windows dosyalarının DACLS tarafından korunduğunu bilmelidir; bu dosyanın sahibini değiştirmeniz ve dosyanın sahibi olan TrustedInstaller'ın yerini alması gerekir. Dosyanın sahibi olarak yönetici grubuna aittir, daha sonra izin değiştirdikten sonra yeniden adlandırmayı deneyin, çalışacaktır ve Windows Explorer'ı çalıştırırken, çekirdek ayrıcalıklarına sahip Explorer kullanıyorsanız, güvenlik nedeniyle Ağ erişimi açısından biraz kısıtlısınız ve hala bir araştırma konusu. geri erişimim için

39
raven

Bir cevap bulundu here bu sorunu binPath parametresine/k start ekleyerek çözüyor gibi görünüyor. Böylece bu size verecek:

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

Ancak, Ben onun için işe yaramadığını ve Windows Server 2008'de denediğimde yerel sistemde cmd.exe işlemini yarattığını söyledi, ancak etkileşimli değildi (pencereyi göremedim). 

İstediğini yapmanın kolay bir yolu olduğunu sanmıyorum, ama neden yaptığını merak ediyorum? Sadece servisini çalıştırırken neler olduğunu görmeye mi çalışıyorsun? Exe'yi yerel sistem olarak çalıştırmak yerine, neler olup bittiğini belirlemek için günlükleri kullanabiliyor gibisiniz ...

9
Bryant

Çok fazla ayrıcalıklı Yerel Sistem bağlamı yerine, hizmetinizin gerçekten ihtiyaç duyması ve kullanması için gereken minimum izin setini kullanmanızı öneririm. Örneğin, Yerel Hizmet .

İnteraktif servisler artık çalışmıyor - ya da en azından UI göstermiyor - Windows Vista ve Windows Server 2008'de session 0 yalıtımı nedeniyle.

6
Mike Dimmick

cmd.exesystem olarak çalıştırmak için Secure Desktop'ı kullanma

Bir hata ayıklayıcı ekleyerek kolayca Windows XP/Vista/7/8.1'deki CMD aracılığıyla çekirdeğe erişebiliriz:

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. CMD dosyasını Yönetici olarak çalıştırın

  2. Ardından, bu komutu Yükseklik:

     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. Ardından osk (onscreenkeyboard) komutunu çalıştırın. Explorer Gezgini'ni kontrol ederseniz hala sistem Bütünlüğü düzeyinde çalışmaz, ancak servis oturumunda OSK kullanabilirseniz, NT Authority\SYSTEM olarak çalışacaktır.

bu yüzden Güvenli Masaüstü'nde çalıştırmanız gerektiğine dair bir fikrim vardı.

Herhangi bir dosyayı Yönetici olarak başlatın. UAC istemleri göründüğünde, yalnızca Win+U ve OSK ile başlayın ve bunun yerine CMD ile başlayacaktır. Ardından, yükseltilmiş istemde whoami yazın ve NT Authority\System alacaksınız. Bundan sonra, Explorer'ı Shell sistem komutundan başlatabilir ve Sistem profilini kullanabilirsiniz, ancak güvenlik nedeniyle ağda yapabileceklerinizi SİSTEM ayrıcalıklarıyla sınırlandırırsınız. Bir yıl önce keşfettiğimde daha fazla açıklama ekleyeceğim.

Bunun nasıl gerçekleştiğine dair kısa bir açıklama

Cmd.exe Yerel Sistem Hesabı Altında PsExec Kullanmadan Çalıştırma. Bu yöntem daha önce keşfedilen Debugger Trap tekniğini kullanır, bu tekniğin hata ayıklayıcıdaki kurnaz/kötü niyetli solucan veya kötü amaçlı yazılımları yakalamak ve geçici olarak yayılmayı durdurmak veya başka bir exe çalıştırmak için kullanabileceği kendi yararları vardır. Burada bu kayıt defteri anahtarı, Windows yerel hata ayıklayıcısındaki ekran klavyesini yakalar ve bunun yerine cmd.exe'yi çalıştırır, ancak cmd hala Logged kullanıcı ayrıcalıklarıyla çalışacaktır, ancak session0'da cmd çalıştırırsak sistem Shell'i alabiliriz. bu yüzden buraya güvenli bir masa üzerinde cmd'yi dağıttığımız başka bir fikir eklediğimizi hatırla. Dolayısıyla, yükseltilmiş bir şeyi ne zaman çalıştırırsanız, karanlık, etkileşimli olmayan masaüstündeki UAC İstemini ve UAC istemlerini yanıtlamanız gerekir. Win+U ve ardından OSK öğesini seçerek Yerel sistem ayrıcalıkları altında çalışan CMD.exe öğesini alacaksınız. CMD ile yerel sisteme erişmenin daha da fazla yolu var.

3
raven

buna bir alternatif olarak ... (Interactive, güvenlik geliştirmeleri olan kişiler için işe yaramaz, ancak önemli olmayan şeyler için çalışır) ve kutu açıldığında Servis'i kutu tipine sokup SİSTEMİ kullanıcı kutusuna koyarsanız İşlem Korsanıdır. ve C:\Users\Windows\system32\cmd.exe'yi bırakın ve gerisini bırakın, Tamam'ı tıklatın ve cmd içeren bir pencereye sahip olun ve sistem olarak çalıştırın;

3
James5001

Başka bir yol var. PowerRun adında bir programın yükseltilmiş cmd çalışmasına izin veriyor. TrustedInstaller haklarında bile. Hem konsol hem de GUI komutları için izin verir. 

2
Alexander Haakan

etkileşimli olması gerekmeyen bir toplu iş dosyası yazabiliyorsanız, yapılması gerekenleri yapmak için o toplu iş dosyasını bir hizmet olarak çalıştırmayı deneyin.

1

Görev zamanlayıcısını kullanarak,/add:/user: ve/pass'ın uygun argümanları ile SYSTEM altında çalışan bir CMDKEY çalıştırması planlayın.

Hiçbir şey yüklemenize gerek yok.

0
Paul Harris

RunAsTi yardımcı programını TrustedInstaller (yüksek ayrıcalık) olarak çalıştırmak için kullanıyorum. Yardımcı program Windows'un kurtarma modunda bile kullanılabilir (Shift + Restart yaparak girdiğiniz mod), psexec yardımcı programı burada çalışmaz. Ancak C:\Windows ve C:\Windows\System32 (X:\Windows ve X:\Windows\System32 değil) yollarınızı PATH ortam değişkenine eklemeniz gerekir, aksi halde RunAsTi kurtarma modunda çalışmaz, yalnızca yazdırır: RunTopenPriv [%] ayrıcalıklar veya referans verilen gruplar arayana atanır.

0
anton_rh