Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Power shell saldırılarının ayak i̇zleri

Adeo tarafından Microsoft İstanbul ve Ankara ofislerinde gerçekleştirilen SOME Etkinliğinde Halil Öztürkci'ye ait sunum

Ähnliche Bücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen
  • Als Erste(r) kommentieren

Power shell saldırılarının ayak i̇zleri

  1. 1. PowerShell Saldırılarının Ayak İzleri HALİL ÖZTÜRKCİ ADEO BİLİŞİM DANIŞMANLIK HİZMETLERİ A.Ş
  2. 2. Ben Kimim ADEO Kurucu Ortağı ve Güvenlik Birimi Yöneticisi Türkiye Bilişim Vakfı Yönetim Kurulu Üyesi Bahçeşehir & Bilgi & TOBB Üniversiteleri Öğretim Görevlisi Adli Bilişim Uzmanı Beyaz Şapkalı Hacker Adli Bilişim Derneği & USMED Microsoft MVP, Enterprise Security SANS Mentor (www.sans.org) CISSP, GPEN, GCFA, GREM, CHFI, CEH... ww.halilozturkci.com
  3. 3. ADEO Hakkında 2008 yılında kuruldu. İstanbul ve Ankara’da iki ofisi var. Siber güvenlik konusunda Türkiye’de bir çok şirkete ve kuruma hizmet veriyor. Ankara’da CyberCrime Center ismiyle açtığı Türkiye’nin ilk özel adli bilişim laboratuvarına sahip. Siber Güvenlik hizmetlerimizin detayları www.adeosecurity.com adresinde mevcut. halilozturkci
  4. 4. Ajanda PowerShell Nedir PowerShell Saldırı Araçları PowerShell İle Saldırgan Neler Yapabilir PowerShell Saldırılarının Ayak İzlerinin Analizi
  5. 5. PowerShell Nedir? Windows PowerShell, Microsoft tarafından Windows komut satırı Cmd.exe ve Windows Script Host'a alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır. Windows PowerShell 1.0 sürümü Windows XP, Windows Server 2003 ve Windows Vista için ücretsiz olarak indirilebilmektedir. Windows 7'den itibaren Windows PowerShell 2.0 işletim sistemi ile beraber gelmektedir. Yan taraftaki tabloda PowerShell sürümlerini işletim sistemleri bazında görebilirsiniz.
  6. 6. PowerShell Saldırı Araçları PowerSploit- A PowerShell Post-ExploitationFramework (https://github.com/PowerShellMafia/PowerSploit)
  7. 7. Deep in Thought: Chinese Targeting of National Security Think Tanks Çin hükümeti destekli en gelişmiş siber saldırı ekibi olan DEEP PANDA ele geçirdikleri sisteme zamanlanmış görev olarak Powershell.exe’yi ekliyorlar. Base64 olarak encode edilmiş kod parçası C&C sunucularından çalıştırılabilir zararlı kodu indirip hafızadan çalıştırıyor. Diğer sistemlere bu PowerShell scriptini WMI üzerinden kopyalıyorlar. Bütün bu işlemlerde standart Windows araçlarını ve sistemlerde geçerli kullanıcı hesaplarını kullanıyorlar.
  8. 8. PowerShell İle Saldırgan Neler Yapabilir? Bir Windows sistemi ele geçiren saldırgan PowerShell üzerinden neredeyse bütün kötü amaçlı işlemleri gerçekleştirebilir. ◦Hak Yükseltme (Privilege Escalation) ◦Kimlik Çalma (Credential Theft) ◦Ağ Üzerinde Diğer Hedeflere Atlama (Lateral Movement) ◦Veri Bozma (Data Destruction) ◦Sistemde Kalıcılık Sağlama (Persistence) ◦Veri Çalma (Data Exfiltration)
  9. 9. PowerShell Saldırısının İzleri Nerelerde Olabilir? Event Logs Prefetch Registry Network Memory PowerShell saldırılarına ait ayak izlerine rastlayabileceğimiz bileşenler.
  10. 10. PowerShell İzleri – Event Logs Saldırganların Powershellkullanarak neler yaptıklarını tam olarak öğrenememizintemel sebeplerin başında ilgili sistemler üzerinde yeteri seviyede loglamanınyapılmaması geliyor. Windows Server 2012R2 ile birlikte Process Trackingaudit altında yeni bir group policyayarı geldi ve bu ayar sayesinde ilgili prosesin tam komut satırı detayları loglanabiliyor. Bu ayar ilk çıktığında sadece Windows 8.1 ve Server 2012R2 sistemlerinde uygulanabilirken sonrasında çıkan yamaların yardımıyla Windows 7 ve sonrası işletim sistemlerinde de kullanılabilir duruma geldi. Bu ayarın aktif olması için Audit Policytanımlarında Process Tracking’in de aktif edilmiş olması gerekiyor. Bu tanımlardan sonra ilgili sistem üzerinde oluşturulan her proses için Event ID değeri 4688 olan bir log kaydı Security loglarına düşer.
  11. 11. PowerShell İzleri – Event Logs Audit Process Creation 1 Oluşturulan her bir prosese ilişkin detayların Security loglarında yer almasını sağlayan Audit politikası
  12. 12. PowerShell İzleri – Event Logs Include Command Line In Process Creation Events 2 3 Oluşturulan prosesin komut satırından aldığı parametreler de loglanabiliyor
  13. 13. PowerShell İzleri – Event Logs Yerelden olsun uzaktan olsun PowerShellüzerinden bir komut yada script çalıştırılması durumunda aşağıdaki üç log dosyasında bu işlemle alakalı kayıtlar oluşturulabilir. ◦ • Windows PowerShell.evtx ◦ • Microsoft-Windows-PowerShell-Operational.evtx ◦ • Microsoft-Windows-PowerShell-Analytic.etl Aşağıdaki iki log dosyasında ise Windows Remote Management (WinRM) servisi üzerinden gerçekleştirilen PowerShell aktivitelerine ait bilgiler yer alır. ◦ • Microsoft-Windows-WinRM-Operational.evtx ◦ • Microsoft-Windows-WinRM-Analytic.etl
  14. 14. PowerShell İzleri – Event Logs Windows PowerShell.evtx Bu log dosyasında PowerShell her başlatıldığında ve sonlandırıldığında bir kayıt oluşturulur. ◦ Event ID 400: “Engine state is changed from None to Available.” ◦ Event ID 403: “Engine state is changed from Available to Stopped.” ◦ Event ID 600: “Provider "<provider name>" is <state>” Bu kayıtların hiç birinde ilgili eylemi gerçekleştiren kullanıcı hesabı hakkında bilgi yer almaz. Analiz sırasında bu kayıtlar incelenerek PowerShell üzerinden gerçekleştirilen saldırının ne kadar sürdüğü ve yerel mi uzaktan mı gerçekleştirildiği gibi bilgilere ulaşılabilir.
  15. 15. PowerShell İzleri – Event Logs Microsoft-Windows-PowerShell-Operational.evtx Bu log dosyasında PowerShell işlemlerinin operasyonuyla alakalı olaylar saklanır. ◦ Event ID 40961: “PowerShell console is startingup” ◦ Event ID 40962: “PowerShell console is ready for user input” Bu kayıtlar yerelden çalıştırılan PowerShell konsollarının ne zaman başlatıldığını ve ne zaman kullanıcıdan girdi beklemeye hazır hale geldiğini gösterir. Bu iki olayda da eylemi gerçekleştiren kullanıcı hesabı hakkında bilgi yer alır.
  16. 16. PowerShell İzleri – Event Logs Microsoft-Windows-PowerShell-Analytic.evtx Varsayılan olarak Analytic ve Debug logları tutulmaz ve gösterilmez. Detaylı analytic loglarını görüntülemek için Event Viewer’daki View menüsünden Show Analytic and Debug Log seçeneğini seçmeli. Ardından Analytic loglarını toplamak istediğiniz bileşen üzerinde Enable Log seçeneğini aktif ederek logların toplanmasını sağlamalısınız.
  17. 17. PowerShell İzleri – Event Logs Microsoft-Windows-PowerShell-Analytic.evtx Analyticlogları tutulmaya başladıktan sonra aşağıdaki ID’lere sahip kayıtlar üzerinde analiz yapılabilir. Event ID 32850:Uzaktan komut çalıştırma işleminin hangi kullanıcı hesabı üzerinden gerçekleştirildiğini gösterir. Event ID 32867/32868: Uzaktan çalıştırılan PowerShell komutunun ve bu komutun çıktısının (payload) neler olduğunun yer aldığı kayıtlardır. Decode edildikten sonra çalıştırılan komut ve çıktıları hakkında bilgi verir.
  18. 18. PowerShell İzleri - Prefetch Prefetch kavramı, uygulamaların daha hızlı açılmasını sağlamak için Windows XP ile birlikte duyurulan bir kavramdır. Sık kullanılan uygulamaların henüz çalıştırılmadan önce ilgili uygulamanın kodlarının hafızaya yüklenerek ihtiyaç duyulması halinde hızlıca çalışması esasına dayanır. Windows tarafından bu uygulamaya ait .PF uzantılı bir prefetch dosyası oluşturulur. Bu dosyalar %windir%Prefetch klasöründe yer alırlar ve bu dizin altında en fazla 128 dosya yer alabilir. Bu klasörde yer alan Layout.ini dosyası sistemin açılışı sırasında yüklenen dosyalar ve klasörler hakkında bilgiler içerir. Prefetch dosyasının kendisi bir binary dosyadır ve uygulamaya ilişkin bilgiler içerir. Bu dosyanın içerisinde uygulamanın en son ne zaman çalıştırıldığı,kaç kez çalıştırıldığı ve uygulama yüklenirken ilk 10 saniye içinde erişilen diğer dosyaların hangileri olduğu bilgisi yer alır. Bunun yanında, uygulamanın adı ve uygulama tarafından yüklenen sürücülerin bilgisi de bu dosyanın içeriğinde bulunur. Bununla birlikte ilgili prefetch dosyasının oluşturulma zamanına bakarak uygulamanın ilk kez ne zaman çalıştırıldığı bilgisi de elde edilebilir. Windows Vista ve sonrasındaki işletim sistemlerinde prefetch dosyalarının biraz daha gelişmiş hali olan superfetch dosyaları kullanılmaktadır.
  19. 19. PowerShell İzleri - Prefetch Çağrılan PowerShell scriptin ilk 10 saniye içinde yüklenmesi durumunda ilgili script hakkında bilgilere ulaşılabiliyor. Bununla birlikte PowerShell’in interaktif modda çalıştırılması durumunda çağırılan script bilgisine prefetch dosyası üzerinden ulaşılamaz.
  20. 20. PowerShell İzleri - Registry Normal şartlarda PowerShell üzerinden gerçekleştirilen saldırılarda registry üzerinde herhangi bir ize rastlanmaz. Bunun yanında saldırgan tarafından ele geçirilen sistemlerde PowerShell’in çalışmasını etkileyecek değişiklikler yapılmış olabilir. PowerShell Execution Policy sayesinde bir sistemde hangi türden PowerShell scriptlerinin çalışabileceği belirlenir ve saldırganlar tarafından bu ayarlar değiştirilerek ele geçirilen sistemler üzerinde yetkisiz scriptler çalıştırılabilir. Windows PowerShell ortamında 5 farklı çalıştırma politikası mevcuttur. ◦ Restricted – Herhangi bir script çalışmaz. Windows PowerShell sadece interaktif modda çalışabilir. Varsayılan olarak Windows Server 2012 R2 haricindekiler bu modda çalışır. ◦ AllSigned – Sadece güvenilen yayıncılar tarafından imzalanmış scriptler çalışabilir. ◦ RemoteSigned – İndirilen scriptler güvenilen yayıncılar tarafından imzalandıktan sonra çalışabilir. Windows Server 2012 R2 sistemler için varsayılan mod budur. ◦ Unrestricted – Herhangi bir sınırlama olmadan bütün Windows PowerShell scriptleri çalıştırılır. İnternetnet indirilen scriptler içinse kullanıcının karşısında scripti çalıştırmak için izin isteyen bir ekran çıkar. ◦ Bypass- Herhangi bir sınırlama olmadan bütün Windows PowerShell scriptleri çalıştırılır ve kullanıcılardan herhangi bir onay istenmez.
  21. 21. PowerShell İzleri - Registry PowerShell Execution Policy ile ilgili ayarlar registry içinde HKLMSOFTWAREMicrosoftPowerShell1ShellIdsMicrosoft.PowerShellanahtarı altında yer alan ExecutionPolicy isimli değer altında saklanır. Bu değer beş farklı şekilde yer alabilir. Bunlar ◦ Restricted ◦ AllSigned ◦ RemoteSigned ◦ Unrestricted ◦ Bypass Bu anahtar saldırgan tarafından PowerShellscriptleri çalıştırılmadan önce değiştirilmiş olabilir ve bu anahtarın son değiştirilme zamanı saldırının başlangıcı hakkında bize bilgi verebilir. Hatırlatma! Saldırgan bu ayarı değiştirmeden ilgili PowerShell scriptinin çalıştırırken komut satırına ekleyeceği ExecutionPolicy Bypass parametresi ile çalıştırma politikasını script bazlı değiştirebilir.
  22. 22. PowerShell İzleri - Registry
  23. 23. PowerShell İzleri - Network Uzak sistemler üzerinde de PowerShell script çalıştırılabiliyor. (PowerShell Remoting) PowerShell 2.0 ve sonrasında iletişim için kullanılan iki port var. Bunlar; ◦ 5985 (HTTP) ◦ 5986 (HTTPS) İki iletişimde de payload şifreli taşınır. HTTPS iletişiminde başlık bilgisi de şifreli taşınır. HTTP üzerinden gerçekleşmesi durumundabaşlıkbilgisi içinde sadece ilgili komutun hangi kullanıcı tarafındançalıştırıldığı ve PowerShell sürüm bilgisi yer alır. (NTLMSSP kimlik doğrulamasındaki Authorizationbaşlığı) İçerik şifreli taşındığı için ham paket verisi üzerinden analiz yapmak yerine flow üzerinden bir analiz gerçekleştirip anormallikleri tespit etmek daha doğru bir yaklaşımdır.
  24. 24. PowerShell İzleri - Memory PowerShell üzerinden gerçekleştirilen saldırılarda ilgili sistemin hafızasının imajı alınarak da saldırganın izi sürülebilir. Powershell remoting ile uzak sistem üzerinde çalıştırılan scriptler c:windowssystem32wsmprovhost.exe prosesi tarafından host edilir. Bu prosesten sonra olacaklar çalıştırılacak PowerShell komutuna bağlıdır. ◦ Eğer native cmdlet komutlarından birisi çalıştırılacaksa bu durumda wsmprovhost.exe prosesi üzerinden işlemler devam eder ayrı bir powershell.exe child prosesi oluşturulmaz. Komut tamamlandıktan sonra da wsmprovhost.exe prosesi sonlandırılır. ◦ Eğer PowerShell tarafından ayrı bir binary dosya yüklenip çalıştırılacaksa(örneğin diskteki bir çalıştırılabilir dosya) bu durumda ilgili yeni proses wsmprovhost.exe’nin child prosesi olarak sistemde çalıştırılır. Uygulamanın sonlanması durumunda wsmprovhost.exe de sonlandırılır. ◦ Eğer komut interaktif bir PowerShell oturumu açacaksa (örneğin Enter-PSSession üzerinden) bu durumda komut direkt olarak wsmprovhost.exe konteksinde çalışır ve wsmprovhost.exe prosesi PSSession oturumu sonlanınca sonlanır. Hafıza imajı alındıktan sonra karakter dizilerini çıkartılıp bu karakter dizileri arasında PowerShell komutları aranabilir.
  25. 25. Teşekkürler ADEO Security Labs @2016 www.adeosecurity.com

×