AppArmor
WhiteIntel, şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunan dark-web destekli bir arama motorudur.
WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılımı saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını ücretsiz deneyebilirsiniz:
Temel Bilgiler
AppArmor, programlara sağlanan kaynakları kısıtlamak için tasarlanmış bir çekirdek geliştirmesidir, etkin bir şekilde Zorunlu Erişim Kontrolü (MAC) uygulayarak erişim kontrol özelliklerini doğrudan kullanıcılara değil programlara bağlayarak çalışır. Bu sistem, genellikle önyükleme sırasında profilleri çekirdeğe yükleyerek çalışır ve bu profiller bir programın erişebileceği kaynakları belirler, örneğin ağ bağlantıları, ham soket erişimi ve dosya izinleri gibi.
AppArmor profilleri için iki işletim modu bulunmaktadır:
Uygulama Modu: Bu mod, profilde tanımlanan politikaları aktif olarak uygular, bu politikalara aykırı hareketleri engeller ve syslog veya auditd gibi sistemler aracılığıyla bunları ihlal etmeye yönelik girişimleri kaydeder.
Şikayet Modu: Uygulama modunun aksine, şikayet modu, profilin politikalarına aykırı hareketleri engellemez. Bunun yerine, bu girişimleri kısıtlamaları uygulamadan politika ihlalleri olarak kaydeder.
AppArmor'ın Bileşenleri
Çekirdek Modülü: Politikaların uygulanmasından sorumludur.
Politikalar: Program davranışı ve kaynak erişimi için kuralları ve kısıtlamaları belirtir.
Ayrıştırıcı: Politikaları çekirdeğe yükleme veya raporlama işlevini yerine getirir.
Araçlar: AppArmor ile etkileşimde bulunmak ve yönetmek için bir arayüz sağlayan kullanıcı modu programlarıdır.
Profil Yolu
Apparmor profilleri genellikle /etc/apparmor.d/ klasöründe saklanır
sudo aa-status
komutuyla kısıtlanan ikili dosyaları listeleyebilirsiniz. Listelenen her ikili dosyanın yolundaki "/" karakterini bir noktaya değiştirirseniz, bahsedilen klasördeki apparmor profilinin adını elde edersiniz.
Örneğin, /usr/bin/man için bir apparmor profili /etc/apparmor.d/usr.bin.man konumunda olacaktır.
Komutlar
Profil oluşturma
Etkilenen yürütülebilir dosyayı belirtmek için mutlak yol ve joker karakterleri (dosya eşleştirmesi için) kullanılabilir.
Dosyalar üzerinde yürütülecek erişimi belirtmek için aşağıdaki erişim kontrolleri kullanılabilir:
r (okuma)
w (yazma)
m (belleğe eşleme olarak yürütme)
k (dosya kilitleme)
l (sert bağlantı oluşturma)
ix (yeni programın politikayı devralarak başka bir programı yürütmesi için)
Px (ortamı temizledikten sonra başka bir profil altında yürütme)
Cx (ortamı temizledikten sonra başka bir alt profil altında yürütme)
Ux (ortamı temizledikten sonra kısıtsız yürütme)
Değişkenler profillerde tanımlanabilir ve profilden dışarıdan manipüle edilebilir. Örneğin: @{PROC} ve @{HOME} (profil dosyasına #include <tunables/global> ekleyin)
İzin verme kurallarını geçersiz kılmak için reddetme kuralları desteklenir.
aa-genprof
Profil oluşturmaya başlamak için apparmor size yardımcı olabilir. Apparmor'un bir binary tarafından gerçekleştirilen eylemleri incelemesine ve ardından hangi eylemleri izin vermek veya reddetmek istediğinize karar vermenize olanak tanımasına yardımcı olabilir. Sadece şunu çalıştırmanız yeterlidir:
Ardından, farklı bir konsolda genellikle ikili dosyanın gerçekleştireceği tüm eylemleri gerçekleştirin:
Ardından, ilk konsolda "s" tuşuna basın ve ardından kaydedilen eylemlerde ihmal etmek isteyip istemediğinizi, izin vermek isteyip istemediğinizi veya başka bir şey yapmak isteyip istemediğinizi belirtin. İşiniz bittiğinde "f" tuşuna basın ve yeni profil /etc/apparmor.d/path.to.binary dizininde oluşturulacaktır.
Yön tuşları kullanarak neyi izin vermek/engellemek/ihmal etmek istediğinizi seçebilirsiniz.
aa-easyprof
Ayrıca bir uygulamanın apparmor profil şablonunu oluşturabilirsiniz:
Varsayılan olarak oluşturulan bir profilde hiçbir şey izin verilmez, bu nedenle her şey reddedilir. Örneğin, örneğin /etc/passwd r,
gibi satırlar eklemeniz gerekecektir.
Yeni profili ardından şu şekilde zorlayabilirsiniz:
Günlüklerden bir profil değiştirme
Aşağıdaki araç, günlükleri okuyacak ve kullanıcıya tespit edilen yasak eylemlerin bazılarını izin verip vermek istemediğini soracaktır:
Ok tuşları kullanarak neyi izin vermek/engellemek/neyi olursa olsun seçebilirsiniz
Profil Yönetimi
Günlükler
service_bin
yürütülebilir dosyasının /var/log/audit/audit.log dosyasındaki AUDIT ve DENIED günlüklerinden bir örnek:
Ayrıca bu bilgilere şu şekilde de ulaşabilirsiniz:
Docker'da Apparmor
Docker'ın docker-profile profili varsayılan olarak yüklendiğine dikkat edin:
Varsayılan olarak Apparmor docker-default profil'ü https://github.com/moby/moby/tree/master/profiles/apparmor adresinden oluşturulur.
docker-default profil Özeti:
Tüm ağa erişim
Yetenek tanımlanmamıştır (Ancak, bazı yetenekler temel kural içeren temel kural dosyalarını içerir #include <abstractions/base> )
Herhangi bir /proc dosyasına yazma izni yok
Diğer /proc ve /sys alt dizinleri/dosyaları okuma/yazma/kilitleme/bağlantı/çalıştırma erişimi reddedilmiştir
Bağlama izni yok
Ptrace yalnızca aynı apparmor profili tarafından sınırlanmış bir işlemde çalıştırılabilir
Bir docker konteyneri çalıştırdıktan sonra aşağıdaki çıktıyı görmelisiniz:
Dikkat edin ki apparmor, varsayılan olarak konteynıra verilen yetenek ayrıcalıklarını bile engelleyecektir. Örneğin, SYS_ADMIN yeteneği verilmiş olsa bile /proc içine yazma iznini engelleyebilecektir çünkü varsayılan olarak docker apparmor profili bu erişimi reddeder:
Apparmor kısıtlamalarını atlamak için apparmor'ı devre dışı bırakmanız gerekmektedir:
Varsayılan olarak AppArmor konteynerin içinden klasörleri bağlamasını da yasaklayacaktır SYS_ADMIN yeteneği olsa bile.
Docker konteynerine yetenekler ekleyebilir/çıkarabilirsiniz (bu hala AppArmor ve Seccomp gibi koruma yöntemleri tarafından kısıtlanacaktır):
--cap-add=SYS_ADMIN
SYS_ADMIN
yeteneği verir--cap-add=ALL
tüm yetenekleri verir--cap-drop=ALL --cap-add=SYS_PTRACE
tüm yetenekleri kaldırır ve sadeceSYS_PTRACE
yeteneğini verir
Genellikle, bir docker konteynerinin içinde bir ayrıcalıklı yeteneğin bulunduğunu fark ettiğinizde ve saldırının bazı kısımlarının çalışmadığını gördüğünüzde, bunun nedeni docker apparmor'ın bunu engelliyor olması olabilir.
Örnek
(Örnek buradan alınmıştır)
AppArmor işlevselliğini göstermek için, aşağıdaki satırı eklediğim yeni bir Docker profilı olan "mydocker"ı oluşturdum:
Profili etkinleştirmek için aşağıdakileri yapmamız gerekiyor:
Profilleri listelemek için aşağıdaki komutu kullanabiliriz. Aşağıdaki komut, yeni AppArmor profilimi listeliyor.
Aşağıda gösterildiği gibi, "AppArmor" profili "/etc/" dizinine yazma erişimini engellediği için " /etc/" dizinini değiştirmeye çalıştığımızda hata alırız.
AppArmor Docker Bypass1
Bir konteynerin çalıştırdığı apparmor profilini şu şekilde bulabilirsiniz:
Ardından, kullanılan tam profilini bulmak için aşağıdaki satırı çalıştırabilirsiniz:
AppArmor Docker Bypass2
AppArmor, yol tabanlıdır, bu da demektir ki eğer apparmor docker profilini değiştirebilir ve yeniden yükleyebilirseniz. Kısıtlamaları kaldırabilir ve onları "atlayabilirsiniz."
AppArmor Shebang Bypass
Bu bu hatada, belirli kaynaklarla perl'in çalışmasını engelliyorsanız bile, sadece bir kabuk betiği oluşturursanız ve ilk satırda #!/usr/bin/perl
belirtirseniz ve dosyayı doğrudan çalıştırırsanız, istediğinizi çalıştırabilirsiniz. Örn.:
WhiteIntel, şirketin veya müşterilerinin hırsız kötü amaçlı yazılımlar tarafından kompromize edilip edilmediğini kontrol etmek için ücretsiz işlevler sunan dark-web destekli bir arama motorudur.
WhiteIntel'in asıl amacı, bilgi çalan kötü amaçlı yazılımlardan kaynaklanan hesap ele geçirmeleri ve fidye yazılım saldırılarıyla mücadele etmektir.
Websitesini ziyaret edebilir ve motorlarını ücretsiz deneyebilirsiniz:
Last updated