10 Şubat 2016 Çarşamba

Linux Dağıtımlarında Ayrıcalık Yükseltme Metodolojileri ve Savunma Önerileri (Privilege Escalation Attack Vectors and Mitigation)

Got-Privilege-oguzhanakkaya 


Aldığım karar neticesinde hakkında Türkçe kaynak sıkıntısı olan konular üzerine özgün ve seçkin içerik oluşturmayı planlıyorum.Burada hedeflediğim plan tamamen daha sonradan bu alanda gelecekler için bir soluk olmak.Bu yazı ve daha sonrasında ki tüm yazıları istediğiniz platformda paylaşabilir,düzenleyebilir ve alıntılamalar yapabilirsiniz.Tek istirhamım kaynak gösterirseniz sevinirim,çünkü siteye gelecek kullanıcıların daha fazla seçkin içerikle karşılaşmasını istiyorum.

İlk yazımda bilgisayar bilimi zaafiyetler literatüründe "Privilege Escalation" diye tabir edilen ve işletim sistemleri ile bilgisayar yazılımlarının korkulu rüyası olan ayrıcalık yükseltme işlem ve girişimlerini detaylıca irdelemeye çalışacağım.Bu yazıda olayı teknik olarak detaylı inceleyip sadece Linux sistemlerdeki metodlara yoğunlaşacağım.Daha sonraki yazılarımda Windows yada MacOS yönünden de incelemeyi düşünüyorum. Bu terimle ilk kez karşılaşan insanlar içlerinden neden ayrıcalık yükseltmek isteyelim diye söylenmeye başlamıştır bile.Bilindiği üzere Von Neumann Mimarisi'yle beraber zamanla işletim sistemlerinin ataları olan tek kullanıcılı(single user tasking) işletim sistemleri yerini çok kullanıcılı(multi user tasking) işletim sistemlerine bıraktı.Bu değişimin temel nedeni ise zaman içinde bilgisayarların kullanım ve işlev farklılıkları oluştukça tek kullanıcılı sistemlerin bu ihtiyaçlara cevap verecek niteliğe sahip olmamasıydı.Çok kullanıcılı sistemler kaynak paylaşımı,bilgi gizliliği gibi bilgi güvenliği açısından temel ve hayati kavramların çıkış noktası olmuştur.Sunucu yönetimi gibi kavramlarda bu değişimle ortaya çıkmış ve küçük bir kast organizasyonuyla temel yönetim hiyerarşisi kabuklaşmaya başlamıştır.Akabinde kullanıcılara yönelik sistemlerde de sistemi daha kolay yönetebilmek adına thread(iş) parçacıkları çeşitli korumalı sistem kullanıcıları üzerinden gerçekleştirilmeye başlanmıştır.Günümüzde ise gerek açık kaynak sistemler de gerek ücretli sistemlerde bu çok kullanıcı hiyerarşisi yaygınlaşmış sistemlerden ayrı düşünülemez hale gelmiştir. Modern dünyadaki saldırganlar ise sistemlere ve uygulama yazılımlarına çeşitli yöntemlerle sızdıktan sonra bulundukları statü ve yetkiyle sınırlı kalmak istemezler.Bunu gerçek dünyada şuna benzetebiliriz;Dahilerin katılabildiği ve yardım için düzenlenen bir televizyon programına katıldınız diyelim.Bu programda herkes bir toplumsal sorunun çözümü hakkında çözüm üretip bu çözümün akılcılığına göre para kazanıp bu parayı da yardım için bağışlayacaktır.Ben çoğu insanın en yüksek yardımı yapmak için en akılcı çözümleri bulmak için uğraşacağını düşünüyorum.En yüksek yardım için de tek yol yarışmada en fazla paraya sahip olmaktır.Bu örneklemeden yola çıkacak olursak ;
  • Dahiler > Saldırganlar
  • Üretilen Akılcıl Yöntemler > Privilege Escalation Yöntemleri
  • Para > Ayrıcalık Elde Etme
  • En Çok Bağışı Yapan Kişi > Tüm Gücü ve Statüyü Elinde Bulunduran Kök Kullanıcı
Gerçek dünyadan verdiğimiz örnek ışığında,saldırganlar da daha fazlasını yapmak,saldırı senaryosunu en iyi şekilde gerçekleştirebilmek ve sistemlerle oyuncak gibi oynamak için en fazla yetkiye sahip kullanıcılarla aynı ayrıcalıklara sahip olmayı hedeflerler.Bu ayrıcalık yükseltme girişimleri,bir uygulama yazılımında olabileceği gibi işletim sistemi boyutunda da olabilir.En tehlikeli olanlar sistem boyutunda olanlardır ki saldırganlar kök kullanıcıları(root,NT_system) ve bu kök kullanıcı ayrıcalığına sahip olan kullanıcıları hedef alır.Çünkü saldırganlar bu yetkiye erişince istedikleri her şeyi yapabileceklerinin farkındadır.Uygulama boyutunda olanlar ise dış katmanda aşırı riskli olmamakla beraber,maksimum tehlike uygulama ve bu uygulamaya bağlı servislerde sınırsız ayrıcalığı kazandıracaktır.   Ayrıcalık yükseltme işlemleri temelde yatay ayrıcalık yükseltme ve dikey ayrıcalık yükseltme girişimleri olarak 2 ana kategoriye ayrılır.
  • Dikey Yönde Ayrıcalık Yükseltme Girişimleri (Vertical Privilege Escalation)
  • Yatay Yönde Ayrıcalık Yükseltme Girişimleri.(Horizontal Privilege Escalation)

privilegeescalation Temel Olarak Açık Kaynak ve Ücretli Sistemler Benzer Hiyerarşiyi Kullanmaktadır.[/caption]   Dikey yönde olan ayrıcalık yükseltme girişimleri genellikle yukarı doğru yetki almak isteyen saldırganın çeşitli yöntemler kullanarak (Exploits,File Permissions,Permissive SUDO,Path issues,Race Condition vb. ) üçgenin tepe noktasına doğru sistemi komple ele geçirmeye yönelik dikey eğilime girme mandalitesidir. Yatay yönde yapılan girişimler ise adından anlaşılacağı gibi aynı seviyede yapılan girişimlerdir.Genellikle web uygulamalarında karşımıza çıkmaktadır.Bir mail clientinde A kullanıcısı iken B kullanıcısına erişim almayı bu girişimlere örnek olarak verebiliriz.(Session fixation,Keystroke Logging,Simple Password,Theft or Hijacking of Session Cookies,XSS)

  1-) Dikey Yönde Ayrıcalık Yükseltme Girişimleri (Risk Seviyesi)

          Linux Sistemlerde Uygulanabilecek Girişimler:
  • Exploitler (Very High)

Exploit geliştirmek ciddi bir emek,bilgi birikimi,bilgisayar matematiği zekası gerektiren bir uzmanlık alanıdır.(Daha sonraki yazılarımızda dilimiz döndüğünce icazet vereceğim.) Şuanda basitçe exploitlerin genel iskelet yapısı üzerinden en riskli ayrıcalık yükseltme işlemimizi inceleyelim.
İşlem adımları:
  • İşletim Sistemi ve Linux Çekirdeği(Kernel) Hakkında Bilgi Edinilmesi.
# uname -a 
Linux Gentoo 4.x.x-Gentoo 1 SMP PREEMPT Tue Aug 4 09:34:36 UTC 2015 x86_64 Intel(R) xxxxxx @ xxx.GHz GenuineIntel GNU/Linux Linux dev-machine 2.6.18-371.1.2.el5 1 SMP Tue Oct 22 12:57:43 EDT 2015 i686 i686 i386 GNU/Linux   # cat /etc/lsb-release DISTRIB_ID="Gentoo" DISTRIB_RELEASE="4.02" DISTRIB_CODENAME="Legendary" DISTRIB_DESCRIPTION="Gentoo 4.2.8"
  • Exploiti Sistem Gereksinimlerine Uygun Derleme ve Çalıştırmada Kullanılacak Araçların Hedef Uyumluluğunun Belirlenmesi(python,perl,gcc versiyon vs.)
#gcc -v 
Using built-in specs. COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.8.4/gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.4/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /var/tmp/portage/sys-devel/gcc-4.8.4/work/gcc-4.8.4/configure --host=x86_64-pc-linux-gnu --build=x86_64 pkgversion='Gentoo Hardened 4.x.x p1.6 '... Thread model: posix gcc version 4.8.4 (Gentoo Hardened 4.x.x p0.6, pie-0.0.x) #python -V Python 2.7.9

  • Exploiti Sisteme Uyarlı Hale Getirme(Derleme,Debug vs.)

gcc
  • Exploiti Hedefe Aktarma
En çok tercih edilen metodlar wget yada curl komutuyla dosyayı bir hosttan uzaktan çağırmak ancak sftp,ftp gibi dosya transfer protokolleri ilede aktarım yapabilirsiniz.

  wget2
  • Exploit Exec
 # ./2.4.27
  • Bingo r00t !!! (Exploit Ekran Görüntüsü RedHat Distrosuna Aittir.)
gotroot

Savunma Önerisi: Patchleri Sürekli Güncel Tutmak ve GRSecurity Gibi Güvenlik Yamalarını Kurmak.  
  • File Permissions (High)

  • 777 İznine Sahip Dizinler:
Öneri:Dizin izinleri 777(Yazma,Okuma,Değiştirme Yetkisi) olan dizinlerin izinlerini değiştiriniz.
  • Default Dosya Yoluna Sahip Script Yönetim Panelleri,Configleri,Kaynak Kodları
Öneri:Diğer SETGID(Diğer Kullanıcı Gruplarının Sahip Olduğu İzin Sınıfı) permisyonuna sahip kullanıcıların erişim okuma gibi fonksiyonlarını kısıtlama,sembolik link kullanımını engelleme,panel yollarını değişme,config dosyalarını encode etme.
  • SETUID ve SETGID Yanlış Yapılandırılmasından Kaynaklanan Sunucu Uygulamalarında Fuzzing,Overflow Flags Arama,Race C. Girişimleri,Komut Enjeksiyonu Girişimleri
Öneri:Bash'ın sahip olduğu uygulamaların kullanıcılar tarafından kullanım iznini yapılandırın.Tehlikeli kabuk uygulamalarının(gcc,wget,curl,ls,cd vb.) erişim iznini kısıtlayın,


#ls -al
 /bin/ln -rwxr-xr-x 1 root root 59480 Jul 21 09:12 /bin/ln
  • SUDO İzin İstismarı (High)

Sudo sanıldığının aksine kelime manası olarak su do super user yap anlamında değil root yetkisini bu kullanıcıda kullan manasındadır.Sudoers configindeki yanlış yapılandırmalar yine tehlikeli istismarlara yok açabilir.

#nano /etc/sudoers

// Tehlikeli Yetkilendirme Örneği Çeşitli Kullanıcılara Root Yetkisi Verilmiş!!!!!

## User privilege specification ## root ALL=(ALL) ALL Ali ALL=(ALL) ALL Ghost ALL=(ALL) ALL ## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL) ALL ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL ## Uncomment to allow members of group sudo to execute any command # %sudo ALL=(ALL) ALL

ÖneriLinux Sistemlerde Sudoers Yapılandırılması
  • PATH Okuma İstismarı(Issues) (Very High)

  • Sistemde kurulu uygulamalar hakkında bilgi alınabilir ve çalışma dizinleri değiştirilen uygulamaların çalışma dizinleri öğrenilebilir.(versiyonu,bağımlılıkları vs.Exploitlemede kullanılan toolslar ıcın olmazsa olmaz bır gereksınımdır.).
#printenv 

MANPATH=/etc/java-config-2/current-system-vm/man:/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.8.4/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.24/man:/etc/java-config-2/current-system-vm/man/:/usr/lib64/php5.6/man/:/usr/share/postgresql/man/:/usr/share/postgresql-9.4/man/ SSH_AGENT_PID=3018 GLADE_PIXMAP_PATH=: ANDROID_HOME=/opt/android-sdk-update-manager GPG_AGENT_INFO=/tmp/gpg-JINALA/S.gpg-agent:3020:1 TERM=xterm SHELL=/bin/bash XDG_MENU_PREFIX=xfce- ANDROID_SWT=/usr/share/swt-3.7/lib #which gcc /usr/bin/.secretdir/gcc

  Öneri: Linux Path Confugration  

  • Bonus - Mobil Cihaz ve Tabletlerde Ayrıcalık Yükseltme

 

Kingoroot gibi çeşitli uygulamalarla yada recovery modda sdcarddan çalıştırılan uygulamalarla cihazlarda root yetkisi elde edilmektedir.Androidin de bir linux distrosu olduğunu düşünürsek root yetkisi almadaki amaçlar temelde benzerdir.Sistemi zorlayan ve özel yetki isteyen işlemler,root olunarak kullanıcısının istediğini yapabilme özgürlüğüne kavuşmuş olacaktır.Ayrıca cihaz kullanıcıya bağlı olarak sistem yazılımları olarak %98 oranında özelleştirilebilmektedir(Android mobil cihaz ve tabletlerde rom atma işlemleriyle).Bu ayrıcalıklar kullanıcının isteği dışında malware yazılımlarcada alınabilmektedir.Benzer olarak iOS işletim sistemine sahip iPhone cihazlarda bu metodlara benzer metodlarla (jailbreak) ayrıcalık yükseltme işlemlerine tabi tutulmaktadır.

Genel Linux Ayrıcalık Yükseltme Ataklarına Karşı İzlenebilecek Yollar:

 
Veri Yürütme Engellemesidir.NX'ler temel Linux programlarını ve hizmetlerini otomatik olarak izler. NX'nin tüm programları izlemesini sağlayarak korumanızı artırabilirsiniz.NX sayesinde sistemde korunan bellek alanlarında(bellek bloğu) kod çalıştırma denemelerini algılamaya devam edebilir ve saldırıların engellenmesine yardımcı olur.Adres uzayında çalıştığımızda exploitlemeler için en çok sorun çıkaran koruma önlemidir.Bypass edilmesi ciddi sonuçlar doğurabilir.
Ram üzerinde çalışan uygulamaların bulundukları hafıza adreslerini sabit adres aralıklarında değilde,belirli periyotlarda farklı hafıza adres bloklarında bulunmasını sağlayan mekanizmalardır.Amaç sistemi olası overflow saldırılarından korumak olsada daha sofistike koruma yöntemleri olan(abisi) DEP gibi metodlarda hackerler tarafından bypass edilmiştir.Bypass edilmesi ciddi sonuçlar doğurabilir.
Tasklistte çalışan uygulamalara belli kullanıcı çalıştırma yetkisi verme kısıtlama ve kontrol altında tutma güdümüdür.Windows'ta bu UAC(SID)'la sağlanırken linuxta ise verilebilecek PID id yetkilendirmeleriyle sağlanabilir.ps aux komutu ile detaylı linux görev yöneticisi bilgisi ve uygulama PID'leri öğrenilebilir.
Linux ve Mac sistemleride malwareler tehdit etmektedir.Toplumda ki linux sisteme virus bulaşmaz kanısı yanlıştır.İyi bir anti virus & loggerle beraber iyi bir firewall edinilmelidir.Bu yazılımların sistem saatiyle senkronize çalıştığına azami özen gösterilmelidir.
Linux’ da zorunlu erişim denetimi (MAC) mekanizmasına gerçekleşmesini sağlayan bir projedir.Bu mekanizmanın kullanılması önemli oranda bir güvenlik sağlayacaktır.Hiyerarşiye uymayan girişim ve uygulama hareketleri sistem tarafından değer görmeyecektir.3 Mod üzerinden çalışmaktadır. SELinux-Benchmark_2_original1
  • Çeşitli Uygulama ve Sistem Bileşenlerini(Stratejik) Kriptolomak
  • Derleyici Tasarımlarında Çeşitli Overflow Notasyonlarına Uygun Hiyerarşi İzlenmesi.
 

2-) Yatay Yönde Ayrıcalık Yükseltme Girişimleri (Uygulama Katmanı)


Düşük seviye dillerde yazılan uygulamalarda da görülebileceği gibi,yüksek seviye dillerde yazılan uygulamalarda çok sık görülen sorunsaldır.Programlama paradigmalarının gizemine tam erişememiş yazılımcılar tarafından yazılan uygulamalarda bolca rastlanmaktadır.Her ne kadar pazarı tekelleştiren firma uygulama geliştirme yazılımlarına guvenlık onlemlerı almaya calıssada pek başarılı olamıyor.(isim vermeyeceğim anlayan anlamıştır kendılerını :) ).Ülkemizde ise durum daha vahim durumdadır.Canım ulkemde henüz programlaya muktedir olamadan(paradigmalardan bahsetmedim bile) hemen para kazanmaya çalışan binlerce genç kardeşim mevcut(Kesinlikle suçlamıyorum sistem buna itiyor insanları yapacak birşey yok).Haliyle buda canım ülkede yazılan her 5 yazılımdan ikisini eleğe çevirebileceğimiz manasına geliyor. Bu tür açıklar çok çeşitlidir.Web uygulamalarında daha farklı,mobil uygulamalarda daha farklı ve özel uygulamalarda daha farklı ufuklara ve heyecanlara yol açmaktadır(Benim açımdan).Bunlara tek tek girersek çıkamayız işin içinden.Şunu bilmemiz yeterli dikey yonde gerceklestırılen ayrıcalık yukseltme ataklarında amaç nasıl sistemi ele geçirmekse buradaki amaçta yatay yönde uygulamada söz sahibi olmaktır yada aynı seviyedeki kullanıcıların yetkilerini elde etmektir.Basit bir senaryo ve video ile yazıyı sonlandıracağım. Sabırla okuduğunuz için teşekkür ederim. Senaryo Bır Banka sitesinde hesapları yönetebilen yönetici yetkisine sahip kullanıcımız ve normal kullanıcılarımız olsun.Yönetici kardeşimiz diğer kullanıcıların banka hesaplarını görme ve düzenleme yetkisine sahip olsun.Malum firmanın malum dilinde kodlanan scriptinde admin fonksiyonunu barındıran aspx dosyalarında dış kullanıcı erişimi filtrelenmemiş olsun.Aynı zamanda yönetici panelinden sql sorgusu çalıştırabilsin.(Malum firmaya kimse düşman olduğumu düşünmesin o firmanın dillerinide etkin olarak kullanıyorum felsefe şunu emreder su gibi olacaksınız ;))Dış ayrıcalık yükseltme denemeleri yapan x kullanıcımız bu durumu farkederek panele dış erişim sağlayarak yatay olarak yöneticinin yetkilerine erişsin ve her şeyi berbat etsin.Videoda bu gösterilecektir tam olarak.Oysa gerekli filtrelemeler tanımlı olsaydı x kullanıcısı admin yetkilerinin bir kısmına dahi olsa erişemeyip ayrıcalığını yükseltemeyecekti.  



Read More...