Integrity Levels
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Windows Vista ve sonraki sürümlerde, tüm korunan öğeler bir bütünlük seviyesi etiketi ile gelir. Bu yapı, genellikle dosyalara ve kayıt defteri anahtarlarına "orta" bir bütünlük seviyesi atar, Internet Explorer 7'nin düşük bütünlük seviyesinde yazabileceği belirli klasörler ve dosyalar hariç. Varsayılan davranış, standart kullanıcılar tarafından başlatılan süreçlerin orta bir bütünlük seviyesine sahip olmasıdır, oysa hizmetler genellikle bir sistem bütünlük seviyesinde çalışır. Yüksek bir bütünlük etiketi, kök dizini korur.
Ana kural, nesnelerin, nesnenin seviyesinden daha düşük bir bütünlük seviyesine sahip süreçler tarafından değiştirilemeyeceğidir. Bütünlük seviyeleri şunlardır:
Güvenilmez: Bu seviye, anonim oturum açma ile süreçler içindir. %%%Örnek: Chrome%%%
Düşük: Temelde internet etkileşimleri için, özellikle Internet Explorer'ın Korunan Modu'nda, ilişkili dosyaları ve süreçleri etkileyen ve Geçici İnternet Klasörü gibi belirli klasörler için. Düşük bütünlük seviyesine sahip süreçler, kayıt defteri yazma erişimi olmaması ve sınırlı kullanıcı profili yazma erişimi dahil olmak üzere önemli kısıtlamalarla karşılaşır.
Orta: Çoğu etkinlik için varsayılan seviye, standart kullanıcılara ve belirli bir bütünlük seviyesine sahip olmayan nesnelere atanır. Yöneticiler grubunun üyeleri bile varsayılan olarak bu seviyede çalışır.
Yüksek: Yöneticiler için ayrılmıştır, onlara daha düşük bütünlük seviyelerindeki nesneleri değiştirme yetkisi verir, bunlar arasında yüksek seviyedeki nesneler de bulunur.
Sistem: Windows çekirdeği ve temel hizmetler için en yüksek operasyonel seviyedir, yöneticiler için bile erişilemez, kritik sistem işlevlerinin korunmasını sağlar.
Yükleyici: Diğer tüm seviyelerin üzerinde yer alan benzersiz bir seviyedir, bu seviyedeki nesnelerin herhangi bir diğer nesneyi kaldırmasına olanak tanır.
Bir sürecin bütünlük seviyesini Sysinternals'dan Process Explorer kullanarak alabilirsiniz, sürecin özelliklerine erişip "Güvenlik" sekmesine bakarak:
Ayrıca whoami /groups
komutunu kullanarak mevcut bütünlük seviyenizi de alabilirsiniz.
Dosya sistemindeki bir nesne, bir minimum bütünlük seviyesi gereksinimi gerektirebilir ve bir süreç bu bütünlük seviyesine sahip değilse onunla etkileşimde bulunamaz. Örneğin, standart bir kullanıcı konsolundan bir dosya oluşturalım ve izinleri kontrol edelim:
Şimdi, dosyaya Yüksek bir minimum bütünlük seviyesi atayalım. Bu bir yönetici olarak çalışan bir konsoldan yapılmalıdır, çünkü normal bir konsol Orta Bütünlük seviyesinde çalışacak ve bir nesneye Yüksek Bütünlük seviyesi atamasına izin verilmeyecektir:
Bu noktada işler ilginçleşiyor. DESKTOP-IDJHTKP\user
kullanıcısının dosya üzerinde TAM yetkileri olduğunu görebilirsiniz (aslında bu dosyayı oluşturan kullanıcıydı), ancak uygulanan minimum bütünlük seviyesi nedeniyle, artık dosyayı değiştiremeyecek, yalnızca Yüksek Bütünlük Seviyesi içinde çalışıyorsa (not edin ki dosyayı okuyabilecektir):
Bu nedenle, bir dosyanın minimum bir bütünlük seviyesi olduğunda, onu değiştirmek için en az o bütünlük seviyesinde çalışıyor olmanız gerekir.
cmd.exe
dosyasının bir kopyasını C:\Windows\System32\cmd-low.exe
konumuna aldım ve ona bir yönetici konsolundan düşük bir bütünlük seviyesi atadım:
Şimdi, cmd-low.exe
çalıştırdığımda, orta bir seviyede yerine düşük bir bütünlük seviyesinde çalışacak:
Meraklılar için, bir ikili dosyaya yüksek bütünlük seviyesi atarsanız (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high
), otomatik olarak yüksek bütünlük seviyesinde çalışmayacaktır (orta bütünlük seviyesinden çağırırsanız --varsayılan olarak-- orta bütünlük seviyesinde çalışacaktır).
Tüm dosya ve klasörlerin minimum bir bütünlük seviyesi yoktur, ancak tüm süreçler bir bütünlük seviyesinde çalışmaktadır. Ve dosya sistemiyle olan benzer şekilde, bir süreç başka bir süreç içinde yazmak istiyorsa en az aynı bütünlük seviyesine sahip olmalıdır. Bu, düşük bütünlük seviyesine sahip bir sürecin, orta bütünlük seviyesine sahip bir sürece tam erişimle bir tanıtıcı açamayacağı anlamına gelir.
Bu ve önceki bölümde belirtilen kısıtlamalar nedeniyle, güvenlik açısından, her zaman bir süreci mümkün olan en düşük bütünlük seviyesinde çalıştırmak önerilir.