CMD.exe'yi Yerel Sistem Hesabı altında nasıl çalıştırıyorsunuz?


144

Şu anda Vista çalıştırıyorum ve Windows Hizmetimle aynı işlemleri manuel olarak tamamlamak istiyorum. Windows Hizmeti Yerel Sistem Hesabı altında çalıştığından, aynı davranışı taklit etmek istiyorum. Temel olarak, Yerel Sistem Hesabı altında CMD.EXE çalıştırmak istiyorum.

DOS Görev Zamanlayıcısı AT komutunu kullanarak CMD.exe'yi lauching öneren çevrimiçi bilgiler buldum, ancak "güvenlik geliştirmeleri nedeniyle, bu görevin istisna olduğu sırada etkileşimli olarak çalışacağını" belirten bir Vista uyarısı aldım. İşte bir örnek 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şturmayı önerdi.

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

Bu durumda hizmet 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, Zamanlanmış Görev aracılığıyla CMD.exe'yi başlatmaktı. Zamanlanmış görevleri çeşitli hesaplar altında çalıştırabilseniz de, Yerel Sistem Hesabı'nın bunlardan biri olduğuna inanmıyorum.

Ben de Runas kullanarak denedim, ama zamanlanmış bir görev çalıştırırken bulunanla aynı kısıtlamaya koşuyorum düşünüyorum.

Şimdiye kadar her girişimim başarısızlıkla sonuçlandı. Baska öneri?

Yanıtlar:


221

Kişisel olarak test etmeme rağmen, yukarıda belirtilen AT COMMAND çözümünün XP, 2000 ve Server 2003 için çalışacağına inanmak için iyi bir nedenim var. Benim ve Bryant'ın testine göre, aynı yaklaşımın Vista ile çalışmadığını belirledik veya Windows Server 2008 - büyük olasılıkla ek güvenlik ve / etkileşimli anahtarın kullanımdan kaldırılması nedeniyle.

Ancak, ben bu rastladım makalenin kullanımını gösterir PsTools gelen SysInternals aşağıdaki ve aniden büyü gibi Yerel Yönetici Hesabı altında koşuyordu aracılığıyla komut satırı başlattı (2006 Temmuz ayında Microsoft tarafından satın alındı):

psexec -i -s cmd.exe

PSTools iyi çalışıyor. Sorunuma uygun bir çözüm sağlayan hafif, iyi belgelenmiş bir araç takımı.

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


11
-dEklediğim için bunu daha çok seviyorum , böylece başlattığım konsolu kullanmaya devam edebiliyorum.
SamB

1
Ben sadece Vista x64 üzerinde denedim ve var "PsExec hizmet üzerinde çalışıyor ... uyumsuz bir sürümüdür." Doğrudan \\ live.sysinternals.com \ tools \ psexec ve en son ikili dosyadan denendi. X64 sürümü yok gibi görünüyor
ZXX

52
  1. Sysinternals'dan psexec.exe dosyasını indirin .
  2. C: \ sürücünüze yerleştirin.
  3. Oturum açma ve bir standart veya yönetici kullanıcı olarak aşağıdaki komutu kullanın: cd \. Bu sizi psexec'in bulunduğu sürücünüzün kök dizinine yerleştirir.
  4. Aşağıdaki komutu kullanın: psexec -i -s cmd.exeBurada -i etkileşimli ve -s sistem hesabı içindir.
  5. Komut tamamlandığında, bir cmd kabuğu başlatılır. Türü whoami; 'sistem' diyecek
  6. Görev yöneticisini aç. Explorer.exe'yi öldürün.
  7. Yükseltilmiş bir komut kabuğu türünden start explorer.exe.
  8. Explorer başlatıldığında, başlat menü çubuğundaki "sistem" adını göreceksiniz. Artık system32 dizinindeki yönetici olarak silemeyeceğiniz veya yönetici olarak bu dosyaları silmek için izinleri değiştirmek için çok uğraşmanız gereken bazı dosyaları silebilirsiniz.

Herhangi bir Windows korumalı dizinindeki Sistem dosyalarını yeniden adlandırmaya veya silmeye çalışan kullanıcılar, bir dosyayı yeniden adlandırırken tüm Windows dosyalarının DACLS tarafından korunduğunu bilmelidir. Dosya sahibini değiştirmeniz ve dosyanın sahibi olan TrustedInstaller'ı değiştirmeniz ve kullanıcının dosya sahibi olarak yönetici grubuna aittir, daha sonra izni değiştirdikten sonra yeniden adlandırmaya çalışın, işe yarayacak ve çekirdek ayrıcalıklarına sahip Windows Gezgini'ni çalıştırırken, güvenlik nedeniyle Ağ erişimi açısından biraz sınırlısınız ve hala bir araştırma konusu. geri dönebilmem için


Bu hileyi, explorer'ı sık sık yükseltilmiş kullanıcı olarak başlatmak için kullanıyorum. Özellikle, VNC üzerinden örneğin ağ ayarlarını ayarlamanız gereken bir bilgisayara bağlandığında. +1 benden
TPAKTOPA

Bu numara şimdi geçersiz görünüyor. İşletim sistemim Windows 7 SP1. Başlat menüsü çubuğunda "sistem" görmeye kadar gittim. Ancak yine de system32 klasöründeki bir dosyayı yeniden adlandırırken, izin reddedildiğini söylüyor. System32 klasörü artık TrustedInstaller'a aittir ve yerel sistem hesabının bile yalnızca özel izinleri vardır.
Shaohua Li

TrustedInstaller'a ait herhangi bir korumalı windows dizininde olan herhangi bir dosyayı yeniden adlandırmaya veya silmeye çalışırsanız, geçerli kullanıcının izin değiştirerek dosyanın sahibi olması gerekir, sonra yeniden adlandırabilir veya silebilirsiniz, Bu genellikle slmgr'yi silmek için kullanılır. exe ve diğer sistem dosyaları için ödeme yapmadan pencerelerin iz sürümüne sınırsız erişim elde etmek
kuzgun

10

Burada binPath parametresine / k start ekleyerek sorunu çözmüş gibi görünen bir yanıt buldum. Böylece bu size:

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

Ancak, Ben onun için işe yaramadı ve Windows Server 2008'de denediğimde yerel sistem altında cmd.exe işlemi yarattı, ancak etkileşimli değildi (pencereyi göremedim).

Sorduğun şeyi yapmanın kolay bir yolu olduğunu düşünmüyorum, ama neden yaptığını merak ediyorum? Sadece hizmetinizi yürüttüğünüzde neler olduğunu görmeye mi çalışıyorsunuz? Exe'yi yerel sistem olarak çalıştırmak yerine ne olduğunu belirlemek için günlük kaydını kullanabileceğiniz anlaşılıyor ...


Merhaba Bryant. Bu çözüm, esasen soruda özetlenmiştir. Aslında sizin için çalışıyor mu? Benim için başarısızlığa neden oluyor. Teşekkürler.
Ben Griswold

Bryant, başka bir bileşenin kurulumunu ve kaldırılmasını yöneten bir Hizmetim var. Hizmetim işini yapamazsa, destek grubumuza bileşeni "zorla" kaldırmanın kolay bir yolunu vermek istiyorum. Test yaparken, kaldırmayı da "zorlamak" istiyorum. Yardım için teşekkürler ..
Ben Griswold

1
@Ben: "Etkileşimli Hizmetler Algılama" başlangıç ​​türü "Manuel" veya "Devre Dışı" olarak ayarlanmış mı?
Merhaba71

1
Server 2012 için etkileşimli hizmetlere izin vermek için HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices0 (Varsayılan 1)
Ivan Chau


6

Çok ayrıcalıklı Yerel Sistem bağlamı yerine, hizmetinizin gerçekten ihtiyaç duyduğu minimum izin kümesini incelemenizi ve kullanmanızı öneririm. Örneğin, Yerel Hizmet .

Etkileşimli hizmetler, oturum 0 yalıtımı nedeniyle Windows Vista ve Windows Server 2008 üzerinde artık çalışmıyor veya en azından artık kullanıcı arabirimi göstermiyor .


4
Mike, cevap için teşekkürler. Tavsiyenize katılıyorum ve herkesin cevabınızdan faydalanacağına rağmen, soruyu cevapladığınıza inanmıyorum.
Ben Griswold

@Ben Griswold: Bununla birlikte, Vista'da eski yolu başarısız kılan şeyin tam olarak ne olduğunu gösteriyor. +1.
SamB

1
Soru "Yerel Sistem Hesabı altında CMD.exe'yi nasıl çalıştırıyorsunuz?"
Jaco Pretorius

2
@SamB ve katkıda bulunacak bir şeyiniz olduğunda, bunun aslında bir cevabı olmayan yorumlar budur .
2014'te Synetech

6

Çalıştırmak için Güvenli Masaüstü Kullanımı cmd.exeolaraksystem

CMDBir hata ayıklayıcı ekleyerek Windows XP / Vista / 7 / 8.1'de çekirdek erişimine kolayca 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. CMDYönetici olarak çalıştır

  2. Ardından Yükseltilmiş'te bu komutu kullanın:

     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. Sonra çalıştırın osk(ekran panosu). İşlem gezgini üzerinden kontrol ederseniz sistem bütünlüğü düzeyi ile çalışmaz, ancak servis oturumunda OSK kullanabiliyorsanız şu şekilde çalışır:NT Authority\SYSTEM

bu yüzden onu Güvenli Masaüstünde çalıştırmanız gerektiği fikrine kapıldım.

Herhangi bir dosyayı Yönetici olarak başlatın. UAC istemleri göründüğünde, Win+ düğmesine basın Uve OSKbaşlayın; CMDbunun yerine başlayacaktır . Sonra yükseltilmiş istemine yazın whoamive alırsınız NT Authority\System. Bundan sonra, Explorer'ı sistem komut kabuğundan başlatabilir ve Sistem profilini kullanabilirsiniz, ancak güvenlik nedeniyle SYSTEM ayrıcalıklarıyla ağda yapabilecekleriniz biraz sınırlıdır. Bir yıl önce keşfettiğim gibi daha sonra daha fazla açıklama ekleyeceğim.

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

Koşu Cmd.exeKullanmadan yerel sistem hesabı altındaPsExec. Bu yöntem, daha önce keşfedilen Hata Ayıklayıcı Tuzak tekniğini çalıştırır, bu tekniğin kendi faydaları vardır, bu hata ayıklayıcıdaki bazı kurnaz / kötü niyetli solucan veya kötü amaçlı yazılımları yakalamak ve yayılmayı veya hasarı geçici olarak durdurmak için başka bir exe çalıştırmak için kullanılabilir. Burada bu kayıt defteri anahtarı windows yerel hata ayıklayıcısında ekran klavyesini hapseder ve cmd.exe yerine çalışır ancak cmd yine de Logged on users ayrıcalıklarıyla çalışır, ancak session0'da cmd çalıştırırsak sistem kabuğunu alabiliriz. Bu yüzden burada güvenli masaüstünde cmd'yi yaydığımız başka bir fikir ekliyoruz, oturum hesabı 0'da sistem hesabı altında güvenli masaüstü çalışmalarını hatırlıyoruz ve sistem kabuğunu alıyoruz. Bu nedenle, yükseltilmiş bir şey çalıştırdığınızda, karanlık, etkileşimli olmayan masaüstünde UAC istemini ve UAC istemlerini yanıtlamanız gerekir ve bunu gördüğünüzde Win+ tuşuna basmanız Uve ardındanOSKCMD.exeYerel sistem ayrıcalıkları altında çalışacaksınız . Yerel sisteme erişmenin daha da fazla yolu varCMD


ya da NT yetkilisi ile yükseltilmiş cmd'yi çalıştırmak için daha fazla yol var Ayrıcalıklar
kuzgun

Bu çok güzel. Çok hoş. Bir şeyleri yapmak için 3. taraf eklentilerine güvenmekten nefret ediyorum. Bu süper hızlı ve kolaydır. Kalıcı da :-) Tek sorun UAC penceresindeki tüm komutları çalıştırmak zorunda ve sadece bazı uygulamalar açık olmasıdır. Explorer.exe örneğin açılmaz. Bunu tetiklemenin başka bir yolu varsa denemek istiyorum. UAC'yi belirli uygulamaları sınırlamadan yerel windows ortamında diğer uygulamaları çalıştırabilmek istiyorum. Harika şeyler Raven!
KonaRin

3

Bunun bir alternatifi işlem hacker olarak çalıştırılırsa ... : \ Kullanıcılar \ Windows \ system32 \ cmd.exe gerisini bırakın tamam tıklayın ve üzerinde cmd olan bir pencere var boch ve sistem olarak çalıştırın şimdi kendiniz için diğer adımları yapın çünkü bunları bilmenizi öneririm


2

Başka bir yol var. Yükseltilmiş cmd'nin çalışmasına izin veren PowerRun adlı bir program vardır. TrustedInstaller haklarında bile. Hem konsol hem de GUI komutlarına izin verir.


1

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


0

TrustedInstaller (yüksek ayrıcalık) olarak çalıştırmak için RunAsTi yardımcı programını kullanın . Yardımcı program Windows'un kurtarma modunda bile ( + yaparak girdiğiniz mod ) kullanılabilir, psexec yardımcı programı orada çalışmaz. Ama sen eklemeniz gerekir ve (değil ve kadar) yolları , aksi takdirde ortam değişkeni RunAsTi kurtarma modunda çalışmaz, sadece yazdırır: arayan kişiye atanır başvurulan ayrıcalıkların tümü veya gruplar: SeImpersonateName için AdjustTokenPrivileges .ShiftRestartC:\WindowsC:\Windows\System32X:\WindowsX:\Windows\System32PATH


0

Görev zamanlayıcısını kullanarak, / add: / user: ve / pass:

Hiçbir şey kurmanıza gerek yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.