Hack 4 Career - 2020

mertsarica

Hack 4 Career - 2020 Copyright © by mertsarica. All Rights Reserved.

This book was produced with Pressbooks.

1

Giriş

2009 yılında “Bilgi güçtür ve paylaşıldıkça artar” mottosuyla oluşturduğum blogumda, bilgi güvenliği farkındalığını arttırma adına çok sayıda teknik yazıya yer vermeye çalıştım. Yıllar içinde okurlarımdan aldığım olumlu geri dönüşler sonucunda, yazılarımı yıllar bazında e-kitap olarak derlemeye ve siber güvenlik meraklıları ile paylaşmaya karar verdim.

Emek, zaman ve kaynak ayırarak yaptığım araştırmalar sonucunda yazdığım bu yazıların, siber güvenlik alanında kendini geliştirmek isteyenler için faydalı olması dileklerimle…

1

Cerberus Analizi

2020 yılının Şubat ayında cep telefonuma beni oldukça şüphelendiren bir SMS geldi. Mesajda yer alan https://ko[.]tc/hediyekazani web adresini ziyaret ettiğimde http://www-bedavainternethediyeuygulama[.]com web adresine yönlendirildiğimi farkettim. SMS’in gelmesinden kısa bir süre sonra web sitesini tekrar ziyaret ettiğimde bu defa da sitedeki görsellerin değişmiş olduğunu gördüm. “Şüphe, siber güvenlik araştırmacısının kamçısıdır” diyerek bu durum ile yakından ilgilenmeye karar verdim.

Web sitesinden sunulan 5GBeta.apk dosyasını indirip, mobil zararlı yazılım analizi amacıyla kullanılan o meşhur Koodous web uygulamasına yüklediğimde analiz başarısızlıkla sonuçlandı. Ardından bu uygulamayı VirusTotal web uygulamasına yüklediğimde her ne kadar bunun bir bankacılık zararlı uygulaması olduğuna dair bir ipucu (Cerberus) ile karşılaşsam da davranışsal analiz çıktısında komuta kontrol merkezinin adresini göremedim. Aklıma takılan sorulara yanıt bulamadığım için iş başa düştü ve 5GBeta.apk uygulamasını Genymotion Android öykünücüsü (emulator) ile hızlıca dinamik olarak analiz etmeye karar verdim.

Zararlı uygulamayı Android’e yükler yüklemez kötü emellerini gerçekleştirmek için ilk iş olarak izinleri teker teker istemeye başladı. İzinleri aldıktan ve yükleme işlemi başarıyla tamamlandıktan sonra simgesini gizleyip, arka planda çalışmaya ve komuta kontrol merkezi ile olan kryll[.]ug (8[.]208.19.185) web adresi ile haberleşmeye başladı. 8[.]208.19.185 ip adresini VirusTotal üzerinden arattığımda pasif DNS bilgilerinden hiç de masum olmadığı net olarak görülüyordu.

Sanal Android işletim sistemimde herhangi bir bankacılık uygulaması yüklü olmadığı için karşıma kredi kartı bilgimi çalmak üzere oluşturulmuş Google Play ekranı çıktı. Test için oluşturulan 16 haneli bir kredi kartı numarası girdiğimde kaydetme butonunun (SAVE) etkinleşmediğini gördüm. Kredi kartı hanesini 19 yaptığımda SAVE butonu aktif hale geldi. Muhtemelen art niyetli kişi, 3 haneli CVV2 numarasının kontrolünü kredi kartı numarasının girildiği forma yönelik yapmış ve böyle bir hata ortaya çıkmıştı. Girdiğim tüm bilgilerin komuta kontrol merkezine şifreli olarak gittiğini gördükten sonra şifreleme anahtarının da peşine düşmeye karar verdim.

Şifreleme anahtarından önce zararlı uygulamanın bankacılık bilgilerini çalıp çalmadığını teyit etmek için sanal sistemim üzerine 10 tane bankanın mobil uygulamasını yükledim ve teker teker çalıştırmaya başladım. Yaptığım testler sonucunda zararlı uygulama, hedef aldığı mobil bankacılık uygulaması çalıştığı anda bankacılık uygulamasının giriş ekranının üzerine sahte bir ekran açarak kullanıcı tarafından ekrana girilen tüm bilgileri çalabiliyordu.

Şifreleme anahtarını bulmak için GDA aracı ile 5GBeta.apk uygulamasını kaynak kodunu çevirip uygulama ile ilgili temel bilgilerin yer aldığı AndroidManifest.xml dosyasına baktığımda, zararlı uygulama başlatıldığında ilk çalışacak olan MainActivity sınıfı ile kaynak kodu arasındaki sınıfların farklı olduğunu gördüm. Bu da zararlı kod bloğunun dinamik olarak çalışma esnasında yüklendiğine işaret ediyordu.

Zararlı uygulamanın yüklü olduğu /data/data/mcneapsbpysnarhkjjm.yjolrmlaqlpzyjfuls.gsiwerlnfzdy klasörüne baktığımda boyutu büyük olan ring0.apk ve NpA.json dosyaları dikkatimi çekti. NpA.json dosyasının aslında bir DEX dosyası olduğunu öğrenip jadx aracı ile kaynak koduna çevirdiğimde AndroidManifest.xml dosyasında yer alan MainActivity sınıfı ile karşılaşmış oldum.

Şifrelenmiş karakter dizilerini incelediğimde f sınıfının şifreleri çözmekten sorumlu olduğunu öğrendim. Bunu yapmak için şifreli karakter dizisinin RC4 anahtarı olan ilk 12 karakterini alıp, BASE64 ile çözülen geri kalan karakterlerin şifresini bu anahtar sayesinde çözüyordu. (Örnek şifreli karakter dizisi mjwpnqfxpgweNDNiYjQ2M2JiNzMxNzE3OWM5ODRjZmI1ZWFkYzYxMjY4NDE4YTY3MDVhNTZlZGZlMGNhNmQ1ZDVlMzU2MTE5NWU5YjYyNw== ise RC4 şifreleme anahtarı mjwpnqfxpgwe değeri oluyor. Bu anahtar ile geri kalan şifreleri karakterleri (NDNiYjQ2M2JiNzMxNzE3OWM5ODRjZmI1ZWFkYzYxMjY4NDE4YTY3MDVhNTZlZGZlMGNhNmQ1ZDVlMzU2MTE5NWU5YjYyNw==) BASE64 ile çözdükten sonra şifreleme anahtarı sayesinde çözüyor) Ben de tüm şifreleri karakter dizilerini çözmek için f sınıfında yer alan Java kodlarını compilejava.net sitesinden kolaylıkla faydalanarak çözebildim.

Komuta kontrol merkezine gönderilen şifreli verilerin şifreleme anahtarını bulmak için şifresi çözülmüş karakter dizilerinde JSON geçtiğini gördüğüm için kodda bu sınıfın kullanıldığı noktalara odaklandım. Zararlı uygulama çalıştıktan sonra komuta kontrol merkezine belli periyotlarda sti=004&q=info_device parametresini ardından da ws= şifreli parametresini gönderdiğini bildiğim için bu iki değerin birbirine eklendiği kod bloğunu buldum. Bu kod bloğunu analiz ettiğimde ise ws parametresinin alien_ring0_wdfes RC4 anahtarı ile şifrelendiğini tespit ettim.

Sıra alien_ring0_wdfes şifreleme anahtarı ile daha önce elde ettiğim şifreli verileri çözmeye, şifreleme anahtarının doğruluğunu teyit etmeye geldiğinde yazının başında belirtmiş olduğum sahte ekranların (html) komuta kontrol merkezinden geldiğini de öğrenmiş oldum.

Sonuç itibariyle son yıllarda adından özellikleri ile sıklıkla söz ettiren Cerberus mobil bankacılık zararlı yazılımının vatandaşlarımızı adı ve soyadını içeren SMS yolu ile hedef almaya başladığını öğrenmek beni oldukça şaşırttı ve endişelendirdi. Her zaman olduğu gibi Android kullanıcılarının bilmedikleri kaynaklardan uygulama yüklemekten kaçınmaları gerektiğinin altını tekrar ve tekrar önemle çizerek bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Not:

Bu yazı ayrıca Pi Hediyem Var #18 oyununun çözüm yolunu da içermektedir.

2

Profilime Kim Baktı ?

23 Eylül 2020 tarihinde Twitter’da siber güvenlik ile ilgili haberlere göz gezdirirken gündem olan başlıklarda #profilimekimbaktı etiketi dikkatimi çekti. Beni oldukça şüphelendiren bu etiketin gündem olmasının arkasında yatan sebebi bulmak için bu etiketi paylaşan hesaplara göz gezdirmeye karar verdim. Paylaşan hesaplardan birinin yazmış olduğu mesajda, Web Postegro & Lili isimli bir Android uygulamasının profil görüntüleyenleri gösterdiğinden bahsediyordu.

LinkedIn hariç Twitter, Facebook, Instagram gibi sosyal ağların, profil görüntüleyenlerin bilgisini kullanıcıları ile paylaşmadığını bildiğim için bu tür bir uygulamalara her zaman şüpheyle yaklaşmışımdır. Şüphelerim konusunda haklı olup olmadığımı anlamak için bu Android uygulamasını indirip analiz etmeye ve farkındalık adına kaleme almaya karar verdim.

İlk olarak Web Postegro & Lili Android uygulamasının Google Play’deki sayfasını incelemekle işe başladım. 24 Eylül itibariyle 100.000‘den fazla yüklenen bu mobil uygulamanın kullandığı izinlere baktığımda beni şüphelendiren bir izin ile karşılaşmadım. Yorumlara göz attığımda ise bazı kullanıcıların hesaplarına yurtdışından giriş yapıldığına dair şüpheli yorumlar gördüm. Geliştiricinin yanıtladığı yorumlardan birinde güvenlik politikasında yurt dışından bağlantı yapıldığının ifade edildiğini belirtmesine rağmen buna dair politikada herhangi bir kısım göremedim.

Google Play sayfasından ön bilgileri topladıktan sonra APKPure sitesinden Web Postegro & Lili uygulamasını analiz etmek için indirdim ve APK dosyasını VirusTotal‘a yüklediğimde bu uygulamanın zararlı olduğuna dair herhangi bir ize rastlamadım.

Ardından bu uygulamayı GenyMotion öykünücüsüne yükleyip, favori araçlarından biri olan Charles Proxy yardımı ile çalışma esnasında gerçekleştirdiği HTTP trafiğini kayıt altına almaya başladım. Uygulamanın haberleştiği payingpos[.]xyz web sunucusundan gelen ilk yanıtta, uygulama geliştiricisine ait olan postegro.llc Instagram hesabını gördüm. Hesabında paylaştığı fotoğraflardan birinde Google Play’den daha önce bu uygulamanın kaldırıldığını paylaşması dikkatimden kaçmadı. Instgram hesabında yer alan ve alan adı 5 Eylül tarihinde kayıt edilen web adresini ziyaret ettiğimde, Web Postegro & Lili uygulamasını (39.apk) direkt web sitelerinden indirebildiğimi öğrendim.

Charles Proxy ile kayıt altına alınan trafiği incelediğimde, Web Postegro Lili (Web Postegro Lili_v1.0_apkpure.com.apk) uygulamasının kullanım esnasında payingpos[.]xyz, webpostegro[.]net ve postegro[.]net sunucuları ile haberleştiğini gördüm.

39.apk isimli APK dosyasını da VirusTotal‘a yüklediğimde benzer şekilde zararlı olduğuna dair bir uyarı ile karşılaşmadım. Web Postegro & Lili (39.apk) uygulamasının kullanım esnasında postegro202039348[.]com, imagecropper2020[.]com, postegro[.]net ve de kapalı olan postegro[.]com sunucuları ile haberleştiğini gördüm. postegro[.]com adresi çalışmadığı için Web Postegro & Lili (39.apk) uygulamasının profillere bakma, profile bakanları gösterme gibi genel fonksiyonları çalışmıyordu dolayısıyla analizime Web Postegro & Lili (Web Postegro Lili_v1.0_apkpure.com.apk) uygulaması üzerinden devam ettim.

Web Postegro & Lili uygulaması çalıştığında karşıma profili gizli olanlara bakma (Hesaplara bak) ve profiline bakanları görmeye (Bana kim baktı) imkan tanıyan menüler geldi. Hesaplara bak menüsüne tıkladığımda uygulama kendi arayüzünden instagram.com sunucusu ile haberleşerek Instagram kullanıcı adı ve parolasının girildiği giriş sayfasını karşıma çıkardı. Bu araştırmaya özel olarak oluşturduğum osmantosman24 Instagram kullanıcı adım ve parolam ile giriş yapar yapmaz uygulamanın arka planda instagram.com sunucusu ile doğrulama sonrasında oluşan oturum bilgilerimi cookie parametresi ile payingpos[.]xyz adresine gönderdiğini ve bu ve daha fazla bilgimi /data/data/com.web.lilipostego/shared_prefs/com.web.lilipostego_preferences.xml dosyasına kayıt ettiğini tespit ettim!

Uygulamayı kullanabilmem için en az 10 kişinin beni veya benim 10 kişiyi takip etmem gerektiği için hızlıca takibe takip yapan Instagram hesaplarını takip etmeye başlayarak onların da beni takip etmesini sağladım. Takipçi sayımı arttırıp, takip ettiğim tüm hesapları takip etmeyi bıraktıktan sonra uygulamanın menüleri arasında gezmeye başladım ve profili genele kapalı, gizli olan hesapların içeriğini görüntüleyebildim. Görünüşe göre bu uygulama gelirini, uygulama üzerindeki limitlerin (reklam kaldırma, hikayeleri sınırsız görüntüleme, hesaplara sınırsız bakma, profil görüntüleyenlerin isimlerinin sansürsüz görünmesi gibi) belirli bir ücret karşılığında kaldırılması ile sağlıyordu.

Normal şartlarda güvenli mimariye sahip bir uygulama sizin Instagram bilgilerinize erişmek istediğinde yetkilendirme işlemi için Oauth protokolünden faydalanır ve sizden onay ister fakat Web Postegro & Lili uygulamasında kullanıcıdan izin, onay isteyen bir kısım bulunmuyordu. Bu durumda bu uygulamanın gizli profilleri görüntülemeye, profilleri görüntüleyenleri listelemeye imkan tanıyabilmesi için uygulama üzerinden Instagram’a giriş yapan kullanıcılara ait oturum bilgileri ile Instagram sunucularına bağlanıp tüm bu kullanıcılara ait hesapların bilgilerine sürekli erişmesi gerekiyordu. (session hijack) Bu yöntemi izlediğini anlamak için Web Postegro & Lili uygulamasının payingpos[.]xyz adresine cookie parametresi ile gönderdiği oturum bilgilerinin Instagram hesabıma erişme adına yeterli olduğunu anlamak için Burp Suite ile VPN üzerinden bir test gerçekleştirdim. Web Postegro & Lili uygulaması üzerinden Instagram’a tekrar giriş yaparak uygulamanın sunucuya gönderdiği yeni oturum bilgileri ile Burp Suite üzerinden Instagram hesabımın Login Activity sayfasına (https://www.instagram.com/session/login_activity/) istekte bulunduğumda başarıyla sunucudan yanıt alabildiğimi gördüm! Instagram tarafında hesabına bu şekilde erişenleri anlamamın bir yolu var mı diye Login Activity sayfasına tekrar baktığımda maalesef VPN ile yurt dışından yaptığım erişim görünmüyordu!

Facebook’un güvenlik ekibine bu durumu yukarıdaki ekran görüntüleri ile adım adım, çok defa anlatmış olmama rağmen maalesef en basit dolandırıcılık senaryosuna karşı yapmaları gerekenin ne olduğunu (5 dakika içinde Instagram hesabına önce bir ülken daha sonra ise başka bir ülkeden giriş yapılıyorsa kullanıcıyı uyarılır, Login Activity sayfasında hangi ülkeden bağlantı kurulduysa gösterilir vb.) bir türlü anlayamadılar.

Hesabımın kontrolünü geri kazanmak ve Web Postegro & Lili uygulamasından çıkış yaptıktan sonra geliştiricinin hesabıma erişiminin devam edip etmediğini öğrenmek için Instagram hesabıma Windows üzerinden erişip takip ettiğim kişilerin sayısını 1 arttırdım. Ardından webpostegro[.]net sunucusundan kullanıcıma ait güncel bilgileri getirmesini istediğimde takip etmeye başladığım son kullanıcının bilgilerini de getirebildiğini, kısaca erişiminin devam ettiğini gördüm!

Web Postegro & Lili uygulamasının ve geliştiricisinin Instagram hesabıma, oturumuma olan erişimlerini nasıl engelleyebilirim diye düşünürken Instagram parolamı değiştirmenin işe yarayıp yaramayacağına bakmaya karar verdim ve parolayı değiştirir değiştirmez hesabıma erişemediklerini webpostegro[.]net üzerinden teyit etmiş ve araştırmamı burada sonlandırmış oldum.

Yaptığım araştırmayı kısaca özetleyecek olursam;

Profilinize bakanları görmek için kullandığınız Web Postegro Lili Android uygulaması, Instagram hesabınıza erişirken kullandığınız oturum bilgilerinizi alarak Instagram hesabınızın tamamına erişim sağlamaktadır! Web Postegro Lili uygulamasından çıkış yapsanız da silseniz de geliştiricinin Instagram hesabınıza erişimi devam etmektedir. Bunu engellemek için Instagram parolanızı değiştirmeniz gerekmektedir.

Naçizane tavsiye olarak kullandığınız bir sosyal ağ, medya uygulamasının özellikleri arasında profilinizi görüntüleyenleri gösterme gibi hayal ettiğiniz bir özellik bulunmuyorsa, bunu yaptığını vaadeden bir kişi, uygulama, web sitesi vb. ile karşılaştığınızda kullanmadan, güvenmeden önce arka planda hangi bilgilerinizi feda edebileceğinizi hatırlamanızda fayda olacaktır.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

3

OPSEC

Sosyal medyada, ağlarda siber güvenlik uzmanlarını takip ettiğinizde veya siber güvenlik ile ilgili sunumlara göz attığınızda kimi zaman “OPSEC FAIL” şeklinde ibarelere rastlarsınız. Buralarda çoğunluklukla APT grupları tarafından ve/veya zararlı yazılım geliştiricileri tarafından yapılan önemli operasyonel hatalara dikkat çekilir. Nedir bu OPSEC diye merak edenleriniz için operasyon güvenliği (OPSEC), gerçekleştirilen operasyona dair kritik bilgilerin korunarak karşı istihbarat birimleri tarafından ele geçirilmesini engellemektir.

2-4 Ekim 2019 tarihinde Londra’da katıldığım Virus Bulletin etkinliğinde Kaspersky tarafından gerçekleştirilen Who is SandCat: an unveiling of a lesser-known threat actor başlıklı sunumda, Özbekistan istihbarat birimi olduğu düşünülen SandCat grubunun yaptığı OPSEC hatalarına yer verildi. Telemetry özelliği aktif olan Kaspersky Antivirüs yazılımı yüklü sistemlerde 0. gün istismar kodlarını test eden grubun bu testlerde kullandığı komuta kontrol merkezinin adresini askeri birimin adıyla (Military Unit 02616) kayıt etmiş olması, bu grubun OPSEC konusunu pek önemsemediğine işaret ediyordu. Fırsattan istifade etmeyi bilen Kaspersky araştırmacıları bu grup tarafından kullanılan 0. gün istismar kodlarını Kaskersky Antivirüs yüklü sistemden alıp, analiz edebilmişti.

VirusTotal üzerinde fırsat buldukça tehdit avına çıkan bir siber güvenlik araştırmacısı olarak geçtiğimiz aylarda ben de OPSEC konusuna dikkat etmeyen bir zararlı yazılım geliştiricisi ile karşılaştım.

fatura1.exe isimli zararlı yazılımı analiz sistemimde çalıştırdığımda karşıma sahte bir telefon faturası ve uyarı mesajı çıktı. fatura1.exe dosyasını RDG Packer Detector aracı ile incelediğimde aracın C# programlama dili ile geliştirildiğini öğrendim. ILSpy kaynak kodu çeviricisi ile kodlara kısaca göz attığımda kodların gizlendiğini (obfuscation) gördüm. Kaynak kodunu okunaklı hale getirmek için de4dot aracından faydalandım.

Kaynak koduna göz attığımda AES ile şifrelenmiş olan verileri çözen s_method2() fonksiyonu dikkatimi çekti. dnSpy hata ayıklayıcısı ile Main() fonksiyonunu adım adım analiz etmeye başladıktan kısa bir süre sonra s_method0() fonksiyonunun şifrelenmiş verileri çözüp byte_0 değişkenine atadıktan sonra bunu bir dosyaya kaydedip çalıştırdığını farkettim. Bunu öğrendikten sonra byte_0 değişkeninde yer alan veriyi diske kaydedip analiz etmeye karar verdim.

Bu dosyayı da dnSpy ve ayrıca ANY.RUN kum havuzu sistemi ile analiz ettiğimde Project Evrial isimli bir parola ve kripto para cüzdanı hırsızının (stealer) kırılmış sürümü (cracked) olduğunu gördüm.

Analiz neticesinde komuta kontrol merkezinin adresini (http://zmcoin.tk) tespit ettikten sonra komuta kontrol merkezini ziyaret etmeye karar verdim. Dizin listeme özelliğinin (directory browsing) aktif olması sayesinde zararlı yazılım tarafından çalınan dosyaları klasörde görüntüleyebildim. Dosyaları tarihe göre sıralayıp en eski tarihteki dosyayı indirip incelemeye başladığımda art niyetli kişinin bu zararlı yazılımı ilk olarak kendi test sisteminde test ettiğini gördüm. Tabii bu test sistemi üzerinde sadece zararlı yazılımı test etmekle kalmayıp şahsi işlerini de gerçekleştirdiği (OPSEC FAIL) için zararlı yazılım işletim sistemi üzerinde kendisine ait isim, soyad, e-posta adresi vb. bilgileri de çalmış ve kendi kazdığı kuyuya kendisi düşmüştü. 🙂

Görüleceği üzere operasyon güvenliğine önem vermeyen art niyetli kişiler sayesinde gerçekleştirilen siber operasyonlara ve operasyonu gerçekleştirenlere dair önemli bilgileri elde etmek mümkün olabilmektedir.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

4

TLS Parmak İzi

WordPress Güvenliği başlıklı blog yazımı okuyanlarınız, blogumun yönetici sayfasına 20’den fazla ip adresinden yıllardır (Mayıs 2020 sonuna kadar devam etti) süren sözlük saldırısı yapıldığını ve bununla nasıl mücadele ettiğimi görmüşlerdir. Siber saldırı girişimlerini tespit etmek kadar saldırıların arkasındaki grupları, kullanılan araçları tespit etmek de bu saldırılarla mücadele adına DoS ile Mücadele başlıklı blog yazımda ortaya koyduğum gibi büyük bir öneme sahiptir. Önceki tecrübelerimden yola çıkarak bu araştırmamda bloguma gerçekleştirilen sözlük saldırısı ile ilgili olarak ne tür bilgiler elde edebileceğime bakmaya karar verdim.

İlk olarak web sunucumun kayıtlarından sözlük saldırısını gerçekleştiren ip adreslerinin kayıtlarına baktığımda, HTTP trafiğini gerçekleştiren işletim sistemine, internet tarayıcısına ve kullanılan araca dair bilgi veren User Agent alanında Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 bilgisinin yer aldığını gördüm. Teoride sözlük saldırısını gerçekleştiren işletim sistemi Windows 10 gibi görünse de bu ip adresinin 22. bağlantı noktasına yönelik Nmap aracını -A parametresi (-A: Enable OS detection, version detection, script scanning, and traceroute) ile çalıştırarak hedef işletim sisteminin büyük bir olasılıkla Linux işletim sistemi olduğunu kolay bir şekilde öğrenmiş oldum.

Ardından 20 tane farklı ip adresinden sözlük saldırısını gerçekleştiren araçların aynı mı yoksa farklı mı (botnet olma ihtimali) olduğu sorusu aklımı kurcalamaya başladı. Bunu nasıl bulabileceğime dair hindi gibi düşünürken bir anda aklıma daha önce teknik bir makalede okuduğum ve siber tehdit istihbaratında da kullanılan JA3 metodu geldi!

JA3 metoduna göre TLS bağlantı esnasında istemci uygulaması tarafından üretilen “Client Hello” paketinde yer alan bilgilerden (Version, Accepted Ciphers, List of Extensions, Elliptic Curves, Elliptic Curve Format) elde edilen md5 özet değerinin aynı olduğu görülmüş. Örnek vermek gerekirse komuta kontrol merkezi ile TLS üzerinden haberleşen x sürüm Emotet bankacılık zararlı yazılımı 4d7a28d6f2263ed61de88ca66eb011e3 md5 özet değerine sahipmiş. Bu bilgiden yola çıkarak kayıt altına alınan TLS ağ trafiğinde (full packet capture) bu değeri aratarak Emotet zararlı yazılımının bulunduğu sistemleri ağınızda tespit etmek mümkün olabiliyor.

Tabii blogum Cloudflare’in arkasında olduğu ve TLS trafiği istemci ile Cloudflare ile sağlandığı için web sunucum üzerinden TLS bağlantılarını kayıt altına almam pratikte mümkün değildi. Ne yapmalı ne etmeli diye düşünürken çalışmamı bir sonraki adıma taşımak için bir yandan CPU, bellek ve disk anlamında çok daha iyi bir sunucuya ihtiyacım olduğunu da anladım. Fiyat ve performans açısından nasıl bir VDS (Virtual Dedicated Server) sunucusu almam gerektiğine dair bir tweet attıktan kısa bir süre sonra bilişim ve teknoloji dünyasının fenomeni, bloggerı sevgili Hamza ŞAMLIOĞLU (@TEAkolik) imdadıma yetişerek beni Hosting.com.tr yetkilileri ile bir araya getirdi. Kendileri ile görüştükten kısa bir süre sonra güvenlik araştırmalarıma sponsor olmayı kabul ederek bana iki tane canavar gibi VDS verdiler!

Hosting.com.tr, bulut hosting, bulut sunucu, fiziksel sunucu ve ek hizmetlerin olduğu ürün portföyü ile Türkiye’de güvenilir, hızlı ve kesintisiz internet hizmetleri ile müşteri protföyünü her geçen gün arttırmaktadırlar. 2015 yılında kurumsal kimlik, web altyapısı ve teknik altyapılarını yenileyerek tamamen responsive (mobil uyumlu) yeni web siteleri ve yönetim panelleri ile hizmet alımı ve tüm kontrol panel işlemlerini daha sade, daha hızlı yönetilebilir hale getirmişlerdir.

Yenilenen teknik altyapıları ile tüm sunucuları SSD diskler üzerine bulut sunucu mimarisine geçmiştir. Hosting.com.tr, klasik hosting hizmeti fiyatları ile SSD disklerde hizmet vermektedir. Bu çerçevede kaliteden ödün vermeden, koşulsuz müşteri memnuniyeti odaklı prensipleri ile sürekli ve mutlu müşteri portföyünü her geçen gün büyütmek için çalışmaktadırlar.

VDSlerime kavuştuktan sonra sözlük saldırısına dair HTTP trafiğine göz atmaya devam ettim ve /wp-login.php sayfasına önce GET ardından POST isteği yapıldığını gördüm. Bu durumda yapılan ilk GET isteğinde saldırganı yeni VDS’imde barındırdığım www.mertsarica.net adresine yönlendirerek POST isteğini oraya yapmasını sağlayarak JA3 md5 özet değerini elde edebilir miydim ?

Vakit kaybetmeden ilk iş olarak www.mertsarica.net alan adımı Hosting.com.tr altyapısında barındırdığım VDS’e yönlendirdim. Daha sonra Cloudflare’nin yönetim panelinden www.mertsarica.com/wp-login.php sayfasına yapılan tüm isteklerin www.mertsarica.net/wp-login.php sayfasına yönlendirilmesini sağladım. Salesforce firması tarafından geliştirilen JA3 aracını VDS’e kurduktan sonra tcpdump aracı ile www.mertsarica.net web sunucusuna yapılan bağlantıları kayıt altına almaya başladım.

Aradan bir gün geçtikten sonra tcpdump aracının çıktısına baktığımda sözlük saldırısını gerçekleştiren 6 farklı ip adresinin JA3 md5 özet değerinin (5641fa1bc96d6dd91ce79472b333d910) aynı olduğunu gördüm. Bu bilgiden yola çıkarak saldırıyı gerçekleştiren tüm sistemlerde aynı aracın kullanıldığını öğrenmiş oldum. Sıra hangi araç ile bu saldırının gerçekleştirildiğini öğrenmeye geldiğinde hemen bu md5 özet değerini JA3 parmak izi bilgilerinin tutulduğu JA3 SSL Fingerprint web sayfasında arattım ancak herhangi bir kayıt bulamadım. Bir gün bu md5 özet değerine dair bilginin JA3 SSL Fingerprint web sitesine ekleneceğini ümit ederek güvenlik araştırmamı burada sonlandırdım.

Kıssadan hisse, sizler de JA3 metodundan faydalanarak ağınızda gerçekleştirilen şüpheli, zararlı aktiviteleri tespit edebilir, benim gibi gerçekleştirilen siber saldırılara dair aklınızı kurcalayan sorulara yanıt bulabilirsiniz. Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

5

Magecart Analizi

Hatırlarsanız Magecart ile Mücadele başlıklı blog yazımda zararlı JavaScript kodunun analizine başka bir yazımda yer vereceğimi belirtmiştim. Bu zamana dek çok defa zararlı javascript kodu analiz etmiş ve nasıl analiz edilebileceğine dair yaklaşık 3 yıl önce Zararlı JavaScript Analizi başlıklı bir blog yazısı da yazmıştım. Tabii yıllar geçtikçe tehdit aktörlerinin kullandığı yöntemler değişmeye ve siber güvenlik analistlerinin, araştırmacılarının işlerini git gide daha da zorlaştırmaya başladı.

Magecart grubunun geliştirdiği zararlı JavaScript kodu (6cb1e31ff2f343a9d576d889bfcbde0e.js) ile ilk karşılaştığımda kodun kolay bir şekilde anlaşılamayacak kadar karmaşıklaştırılmış (obfuscated) olduğu JavaScript Obfuscator veya JavaScript Obfuscator Tool araçlarından biri kullanılmış olabilir.) hemen dikkatimi çekmişti. de4js ve IlluminateJs gibi araçların da varlığına güvenerek karmaşıklaştırılmış kodu kolay bir şekilde alt edeceğimi, en kötü dinamik kod analizi yaparak (debugging) mutlu sona ulaşabileceğimi düşünüyordum fakat evdeki hesap çarşıya uymadı. 🙂

İlk iş olarak JavaScript Beautifier web sitesinden faydalanarak zararlı kod bloğunu okunaklı hale getirdim. Ardından kodu anlaşılır hale getirmek için sırasıyla de4js ve IlluminateJs araçlarından faydalanmaya çalıştım ancak başarısız oldum. Chrome DevTools ile zararlı JavaScript kodunu hata ayıklaması (debugging) yaparak analiz etmeye başladım ve çok geçmeden bir zaman sonra işlerin yolunda gitmediğini farkettim. Chrome’dan kaynaklanan bir problem olabileceğini düşünerek şansımı Firefox ile denemeye karar verdim fakat o da birşeylerin yolunda gitmediğine dair uyarı verdi.

Ne yapabileceğime dair hindi gibi düşünüp dururken internet tarayıcısı yerine farklı bir araç ile hata ayıklaması yapabilmek için araştırma yapmaya başladım ve Visual Studio Code isimli kaynak kodu editörü ile karşılaştım. Chrome hata ayıklama eklentisi sayesinde arka planda HTML, JavaScript kodu analiz etmeye imkan tanıyan ve çok sayıda eklentiye sahip olan bu editör ile hata ayıklaması yapmaya başladığımda, SetCookie ile ilişkili fonksiyonun çok sayıda dizi (Array) oluşturarak bellekteki kullanılabilecek alanları tüketerek hata ayıklamasını etkisiz hale getirdiğini (self defending) gördüm.

Art niyetli kişilerin amaçları doğrultusunda bu kodun internet tarayıcısında sorunsuz bir şekilde çalışması gerektiği için kodda hata ayıklamasına yönelik kontroller olduğunu düşünerek her bir fonksiyonu adım adım analiz etmeye başladım. Nihai hedefim kodu baştan sonra dinamik olarak analiz etmek olmayıp çalınan bilgilerin hangi web sitesine iletildiğini ve gizlenmiş karakter dizilerini (strings) çözmek olduğu için gizlenmiş dizilerin çözülmesi amacıyla kullanılan _0x3a74 fonksiyonundan yola çıkarak ilerledim.

Analiz ederken bir yerde Regex ile removeCookie değerinde { işareti ile return kelimesi arasında boşluk kontrolü yapıldığını farkettim. Boşluk karakterinin tespit edilmesi durumunda kodun akışı yukarıda bahsettiğim çok sayıda dizi oluşturup probleme yol açan fonksiyona ilerliyordu. Peki art niyetli geliştirici neden böyle bir kontrol koymuştu ? Bu gibi karmaşıklaştırılmış, okunaklı olmayan kodlarla karşılaşan analistlerin ilk yaptığı iş, kodu araçlar (JavaScript Beautifier gibi) yardımıyla okunaklı, formata uygun bir hale getirmek olduğu için bu araçlar otomatik olarak araya boşluk koyuyorladı ve bu da kodun analiz edildiğine dair art niyetli kişilere güzel bir tespit mekanizması oluşturmaya imkan tanıyordu.

Kodu Regex kontrolünden başarıyla geçecek şekilde boşluksuz olarak düzenleyip gizlenmiş karakter dizilerini çözdükten sonra statik ve dinamik kod analizi sayesinde kredi kartı bilgilerinin (CVV, Holder, ccexpiry, ccnumber, cvc, fullname) çalınarak https://kinitrofitness[.]com/wp-includes/class-wp-customize-settings.php adresine iletildiğini tespit etmiş oldum.

Ülke olarak COVID-19 salgınını geride bırakacağımız sağlıklı günlerde yeni bir yazı ile tekrar görüşmek dileğiyle herkese sağlıklı ve güvenli günler dilerim.

Not:

Bu yazı ayrıca Pi Hediyem Var #17 oyununun çözüm yolunu da içermektedir.

6

Magecart ile Mücadele

Son yıllarda e-ticaret şirketlerinden (Newegg) havayolu şirketlerine (British Airways), biletleme şirketlerinden (Ticketmaster , Biletix) medya şirketlerine (ABS-CBN) kadar çok sayıda şirketin korkulu rüyası haline gelen Magecart grubu tarafından gerçekleştirilen siber saldırılar, Biletix vakasında da olduğu gibi ülkemizi, vatandaşlarımızı etkilemeye devam ediyor. Bu saldırılar sonucunda şirketler repütasyonel etkilerin yanı sıra GDPR, KVKK gibi kanunlar, regülasyonlar nedeniyle British Airways örneğinde olduğu gibi yüksek cezalarla da karşı karşıya kaldığını biliyoruz.

Hikayemize geçecek olursam, 2019 yılının Haziran ayında Twitter üzerinden benimle özel mesaj üzerinden iletişime geçen Tarık Uygun (@uyguntt), Akbank tarafından kredi kartı ile şüpheli işlem yapıldığına dair bir uyarı mesajı aldığını belirtti. (Alkışlar Akbank Dolandırıcılık Risk Yönetimi Ekibi’ne gelsin. :)) Kredi kartı ile alışveriş yaptığı en son sitenin spa ve masaj fırsatları sunan bir site olduğunu anımsadıktan sonra ufak bir araştırma sonucunda kredi kartı bilgilerini girer girmez bilgilerin hash parametresinde gizlenerek https://kinitrofitness[.]com/wp-includes/class-wp-customize-settings.php adresine iletildiğini farketmiş ve benimle bu durumu paylaşmaya karar vermiş.

Zaman bulduğum ilk fırsatta ilgili web stesini sanal makine üzerinden ziyaret ederek tüm istekleri ve yanıtları Fiddler Proxy aracı ile kayıt altına almaya başladım. Yeteri kadar gezdikten sonra Fiddler üzerinde ?hash= parametresini arttığımda siteye enjekte edilmiş olan zararlı JavaScript kodunun https://www.xyz.com/media/po_compressor/1/js/6cb1e31ff2f343a9d576d889bfcbde0e.js adresinde yer aldığını ve bu adresin de ana sayfaya enjekte edildiğini öğrendim.

Biletix Vakası yazısında olduğu gibi JavaScript kodunu dinamik analiz etmek yerine koda hızlıca bakmaya karar verdim. Koda baktığımda gizlenmiş olduğunu (obfuscated) ve IlluminateJs gibi araçlarla kolay bir şekilde çözülemediğini gördüm.

Biraz daha göz gezdirdikten sonra bu kodun müşterinin kredi kartı bilgilerini çaldığını (Number, Holder, HolderFirstName, HolderLastName, Date, Month, Year, CVV, Gate, Data, Sent, SaveParam) net olarak anladım. Google’da ufak bir araştırma yaptığımda da bunun geçtiğimiz Temmuz ayında Magento e-ticaret platformu kullanan 962 tane sitenin hacklenmesinde kullanılan kod ile benzer olduğunu farkettim.

Zararlı JavaScript kodunu analiz etmeyi başka bir yazıya bırakıp bu tür zararlı JavaScript kodu enjekte edilen siber saldırıların 2017 yılında Tehdit Avı başlıklı blog yazımda yer verdiğimden daha farklı bir noktaya gelmesi sebebiyle tespit adına daha farklı neler yapabileceğim üzerine kafa yormaya başladım.

Yakın zamanda kaleme aldığım Alan Adı Yönetimi Sarmalı başlıklı blog yazım için geliştirdiğim RedSpider isimli aracın biraz üzerinde oynayarak bu aracı hedef siteyi tarayan ve JavaScript kodlarını indirip Yara kuralları ile analiz eden bir araca çevirmek için işe koyuldum.

yara-python modülünü kurduktan sonra zararlı JavaScript kodu tespiti adına Yara-Rules projesinden faydalanmaya karar verdim. Kısa bir geliştirme süresinden sonra ortaya temelinde Scrapy yazılım iskeletinden faydalanılan RedScanner isimli araç çıktı.

Örnek olarak RedScanner aracını scrapy runspider –nolog RedScanner.py -a “urls=xyz[.]com” komutu ile hedef websitesi üzerinde çalıştırdığımda websitesine enjekte edilen zararlı kodu mevcut yara kuralları ile başarıyla tespit edebildiğini gördüm. RedScanner aracının kullandığı YARA kurallarına kendi özel kurallarınızı da ekleyerek aracın tespit oranını arttırabileceğinize de unutmayın.

Bu yazının Magecart ve benzer siber saldırılar ile websitelerine enjekte edilen zararlı JavaScript kodlarını tespit etmek isteyenlere yardımcı olacağını ümit ederek bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Not: Bu yazıyı yazmam için bıkmadan usanmadan aylarca beni sıkıştıran Zero Xyele isimli Twitter kullanıcısına teşekkür ederim. 🙂

7

LinkedIn Dolandırıcıları

Uzun yıllardan beri sosyal ağları ve medyayı etkin kullanan bir siber güvenlik araştırmacısı olarak bağlantılarım arasında yer alanlarınız özellikle hafta içi LinkedIn ve Twitter üzerinden okuduğum ve beğendiğim siber güvenlik makalelerini, haberleri paylaştıklarımı farkediyorlardır. Twitter hesabımın korumalı olması sebebiyle LinkedIn paylaşımlarımın Twitter’a kıyasla çok daha fazla kişiye ulaşması beraberinde art niyetli kişilerin, dolandırıcıların da radarına girmeme ve ilginç mesajlar almama yol açabiliyor.

Günlerden bir gün LinkedIn üzerinden Jenny Tores isimli bir kişiden özel bir mesaj aldım. Google Çeviri ile hazırlanmış bir metinden hallice olan mesajında, profilimi çok ilginç bulduğunu ve benimle iletişime geçmek istediğinden bahsediyordu. Haber peşinde koşan bir gazeteci edasıyla ayağıma gelen bu fırsatı değerlendirerek bu kişiyle iletişim kurmaya karar verdim.

Kendisine e-posta gönderdikten sonra gelen yanıtta hanım ablamız, Afganistan’da ABD vatandaşı bir asker olduğundan, yeni bir ilişkiye başlamak istediğinden, yaşın ve mesafenin önemli olmadığından ve asıl konuşmak istediği önemli konuyu bir sonraki e-postasında belirteceğinden bahsediyordu. Sosyal mühendislik girişiminin gerçekçi olabilmesi adına da sağolsun bana 4 tane fotoğrafını da göndermeyi ihmal etmemişti. Devrik cümleli LinkedIn mesajına kıyasla e-postasındaki yazı dili ise şaşırtıcı derecede iyiydi.

Gönderdiği ikinci e-postada hanım ablamız gerçekleştirdiği bir kurtarma operasyonunda içinde yüklü miktarda para bulunan bir kutu bulduğunu, kendisine düşen payın tam tamına 3.7 milyon dolar olduğunu, bu parayı görevini tamamlayana kadar başka bir ülkeye çıkarmak istediğinden ve tabii ki benim yardımıma ihtiyacı olduğundan bahsediyordu. 🙂 Yine bu e-postasında da yeni resimler göndermeyi ihmal etmemişti.

Üçüncü e-postasında ise bir yandan güvenini kazanabilmek bir yandan da sevkiyatı gerçekleştirebilmek için Birleşmiş Milletler diplomatını devreye sokacağı için kişisel bilgilerime, telefon numarama, pasaportumun veya kimliğimin o da olmazsa ehliyetimin taratılmış halini göndermemi istiyordu. Garanti olsun diye e-devletten ikametgahımı da hazır ettikten sonra gönderdiği yeni fotoğrafları incelemeye başladım. Kutu içinde yer alan 100’lük banknotları ve hanım ablamızın pasaportunu da gördükten sonra artık benden istediği tüm bilgilerimi göndermeye iyice ikna olmuştum. 🙂

“Vay efendim sen bana nasıl güvenmezsin” diye hanım ablamıza çıkıştıktan sonra gelen son e-postada hanım ablamız “Geçmişe bir sünger çekelim ama bir yandan da bilgilerini alayım” dedikten sonra yazışmayı sonlandırmaya ve epostalarda yer alan bilgileri incelemeye koyuldum.

Geçtiğimiz aylarda görsel arama motorlarının geldiği son noktayı konu alan faydalı bir yazı okuduktan sonra hanım ablamızın göndermiş olduğu e-postalara yakından göz atmaya karar verdim.

Üniformalı fotoğraflardan birini Yandex.Images arama motorunda arattığımda bu fotoğrafın kullanıldığı başka web siteleri olduğunu ve farklı bir isim (Jelissa Torres) altında sosyal medya hesabı olduğunu öğrendim.

@JelissaTorres Twitter hesabına göz attığımda Mayıs 2019 yılına kadar gönderdiği tweetler arasında Türkçe mesajlar da olması dikkatimi çekti. Bu mesajları Twitter’da arattığımda başka hesaplardan kopyala yapıştır yapılan mesajlar olduğunu öğrendim.

“Jelissa Torres army” anahtar kelimesi ile Google arama motorunda arama yaptığımda ise Kamerun’da bulunan bir kişinin bana gönderilen fotoğraflardan birini @ambrose_tarh Twitter hesabında paylaştığını daha sonrasında ise sildiğini farkettim. (OPSEC fail ?) Jelissa tarafından gönderilen e-postaların başlık bilgilerini kontrol ettiğimde gönderilen e-postaların saatleri ile Türkiye saati arasında -3 saat zaman farkı olduğunu gördüm. Kamerun’a komşu olan Senegal, Gana ve Gine ile Türkiye arasında 3 saat zaman farkı olduğunu göz önünde bulundurduğumda, bu e-postaların bu ülkelerin birinden Kamerunlu bu kişi veya bu kişi ile bağlantılı başka kişiler tarafından gönderilmiş olma ihtimalinin yüksek olduğunu düşünmeye başladım.

Fotoğraflara hızlıca göz attığımda amatörce yapılan fotomontajlar hemen dikkatimi çekti. Bundan 7 yıl önce kaleme aldığım Manipüle Edilmiş Fotoğraf Analizi blog yazımda olduğu gibi fotoğrafları ELA tekniği ve Forensically web uygulamasında yer alan kopyalama tespiti tekniği ile analiz etmeye başladım.

Kimsenin damgalı eşek gibi tişörtünün sırt kısmına adını ve telefon numarasını yazdırmayacağını düşünerek bu fotoğrafı ELA tekniği ile analiz ettiğimde, tahmin ettiğim üzere sırt kısmında yer alan isim ve telefon numarasının sonradan bu fotoğrafa eklendiğini tespit ettim.

Her ne kadar kartvizitinin yer aldığı fotoğrafta gözle görülür bir şekilde fotomontaj olduğu görülse de teyit etmek için Clone Detection sayfasından faydalanarak bu fotoğraf üzerinde çok sayıda kopyalama işlemi yapıldığını tespit ettim.

Son olarak pasaport fotoğrafını Yandex.Images üzerinde arattığımda ise arka plandaki pembe işaretin aynı olduğu benzer sahte pasaport fotoğraflarını bularak pasaportun da sahte olduğunu teyit etmiş oldum.

Bunların dışında e-postaya konu olan hanım ablamızın adı ve soyadı (Jennifer Torres) ile gönderdiği üniformalı fotoğraflardaki isim ve soyadın farklı olması da pek tabii dikkatimden kaçmadı.

Jennifer ile yazışmayı kestikten sonra aç gözlü dolandırıcılar tabii ki peşimi bırakmayıp yeni mesajlar ile LinkedIn mesaj kutumu meşgul etmeye bir süre daha devam ettiler.

Görünen o ki bir zamanların oldukça popüler Nijeryalı Prens dolandırıcıları artık faaliyetlerine LinkedIn üzerinde devam etme kararı almışlar dolayısıyla dikkatli olmakta ve çevrenizdekileri uyarmakta fayda olacağına inanıyorum.

Ülke olarak COVID-19 salgınını geride bırakacağımız sağlıklı günlerde yeni bir yazı ile tekrar görüşmek dileğiyle herkese sağlıklı ve güvenli günler dilerim.