← Back to list

WhatsUpp malware analizi

Bu malware, bir mesajlaşma uygulaması gibi görünüp aslında sınırlı sayıda arayüzü olan sahte bir taklit uygulamasıdır. WhatsUp adında bir…

mehmet şerif paşa · 2023-06-18 09:36 · 10 claps · 4.2 min read
#malware #android #hacking #malwareanlysis
Open on Medium ↗
Wiki topics: 🔒 · Cybersecurity

WhatsUpp malware analizi

Bu malware, bir mesajlaşma uygulaması gibi görünüp aslında sınırlı sayıda arayüzü olan sahte bir taklit uygulamasıdır. WhatsUp adında bir teknoloji firmasını taklit etmektedir. Yüklendiği anda kendi içinde hazırlanan isim, email ve telefon gibi bilgileri uygulamaya entegre ederek temel yapıyı oluşturur.

Bu yukarıdaki tüm isim, saat, özel bilgiler belirttiğimiz gibi kaynak koddan alınmaktadır. Aşağıdaki gibi hazır bir şekile gelir.

Ayrıca izin listesine bakıldığında bu kadar küçük yapıda bir uygulamaya göre çok fazla yetki istemektedir:

Teknik bilgilerden sonra kodun yapısına geçtiğimizde ilk olarak MainActivity sınıfı çağırılmaktadır.

Yukarıya baktığımızda kendi içinde bazı değişken tanımlamaları bulunmaktadır. Kodu incelediğimizde bunlar yavaş yavaş anlamlı hale gelecektir. Burda dikkat edilmesi gerek nokta uygulama açıldığı anda bir Thread başlatılıyor ve runnable çalıştırılıyor. Bu da Payload.reverse_tcp() adında bir fonksiyonu çağırıyor ve içine bir ip adresi ve portu gönderiliyor.

Bu yapılan reverse shell gibi gözüküyor ama kodu daha iyi incelediğimizde daha ayrıntılı bilgi elde edebiliriz. Payload.reverse_tcp fonksiyonunu incelediğimizde

Görüldüğü gibi shell elde etmeyi amaçlayan ve 146.190.83.71:7777 ip-portu üzerinden iletişim kurmaya çalışan bir kod parçasıdır. Tcpdump ile 7777 portunu dinlediğimizde

uygulama çalıştırıldığı anda saldırgan, ip adresi ile aşağıdaki gibi tcp bağlantısı kurmaya çalışmaktadır.

Kodu yani shell kodunu ayrıntılı incelersek:

ilk önce “bin/sh -i” komutunu exec() yardımıyla çalıştırılmıştır. Bu komut saldırganın etkileşimli bir kabuk elde etmek istediğini belirtir. İkinci olarak, hem socket hem de bash üzerinden gelen-giden (InputStream-OutputStream) verilerini okumayı ve karşı tarafa yollamayı amaçlamaktadır. Kısaca saldırgan sistem üzerinde komut çalıştırabilecektir. Bu aşamadan sonra kodun diğer kısmına göz gezdirelim. MainActivity sınıfındaki bir diğer kod parçası şöyle devam etmektedir:

Burada bir parçalama işlemi yapıp string oluşturulmuş ama anlamsız bir şey göze çarpıyor. İp adresinde ikinci split işlemine (split(“,”)) bir anlamsızlık hakim. Parçalayacağı şeyde virgül namına bir şey yok. Koşul oluşturulmuş ama her türlü bu işlem sonucuna ip değişkeni şu ayarlanıyor: “116.14.139.117:4444”. Ardından bu ip değişkenini save() adlı fonksiyona gönderiliyor. Bu fonksiyonu incelediğimizde ise:

fix.dat adında bir dosya oluşturuluyor. Bunu (getExternalFilesDir) harici dosyalar dizinine ekliyor. Yani Android/data/data/uygulama_ismi/ altına oluşturuyor. Bunu adb ile aşağıdaki gibi görebiliyoruz.

fix.dat adında dosya oluşturup bunun içine gönderilen s1 (ip adresi) yazdırılıyor. Bu ayarlamadan sonra kodun devamında

yeni bir intent başlatılarak accesbility_settings ayarları açılmaktadır.

Uygulama tam kontrol izni istemektedir. Bu izinden sonra ise yine harici diske yazma ve harici diske okuma izni istemektedir.

Bu izinlerden sonra encrypt() adı verilen bir fonksiyon çağırılmaktadır.

Buraya özel kodlanmış değişkenler ise programın başında belirttiğimiz şu değişkenlerdir:

Görülüğü gibi programın ilk akış şeması şu şekildedir:

İlk önce harici depolama alanı olan /sdcard/Download/ dizini üzerindeki dosyaları listFiles() ile listelemiştir. Ardından bu dosyaları tek tek okumak için for döngüsüne sokulmuştur.

Bu her bir dosyanın .encrypted uzantısı oluşturulmuş ve SecretKeySpec fonksiyonu ile bütün dosyaların içeriğini şifreleme metoduna sokulmuştur. AES şifrelemesi kullanılmış ve key olarak da kodun en başında yer alan

bu key kullanılmıştır. Sonra ise her bir dosyanın içeriğini aşşağıdaki gibi

8 byte şeklinde okunarak AES algoritması ile şifrelenmiş ve yeni şifrelenmiş dosyanın (filename.encrypte) içine yazılmıştır. Sonra ise şifrelenmemiş asıl dosyalar delete() ile silinmiştir. Geriye kalan ise şifrelenmiş dosyalardır.

Bunlaran ayrı olarak uygulamanın içinde 2 adet daha önemli sınıf bulunmaktadır. Bunlardan birisi MyAccessibilityService sınıfıdır. Bu sınıf iki taraflı bir service olarak yazılmış olduğu görülmektedir.

Bu sınıf yukarıda fix.dat adında oluşturulan ve içerisinde saldırgan sunucunun ip’si bulunan bir dosyaydı. Bu sınıf ilk önce get1() fonksiyonu ile bu dosyayı okuyarak ip ve port bilgisini elde eder. Sonra ise bir diğer sınıf olan MessageSender sınıfına

s1 (gönderilecek mesaj), ip ve port bilgilerini parametre olarak göndermektedir. MessageSender sınıfı ise bu parametreleri aşağıdaki gibi işleyerek

socket bağlantısı oluşturur ve bunları saldırganın sunucusuna gönderir.

  • Buraya kadar okuduğunuz için teşekkür ederim. Blog yazımda bir hata olduysa veya gözden kaçırdığım bir şey varsa bana bildirebilirsiniz: (twitter: mehmet şerif paşa).

Malware indirme linki: https://s6.dosya.tc/server14/tpm5z5/mw.apk.html


메타데이터
post_id
ad08a902a8eb
slug
whatsupp-malware-analizi-ad08a902a8eb
url
https://medium.com/@mehmetserifpasa/whatsupp-malware-analizi-ad08a902a8eb
canonical_url
https://medium.com/@mehmetserifpasa/whatsupp-malware-analizi-ad08a902a8eb
author_url
https://medium.com/@mehmetserifpasa
status
ok
fetched_at
2026-07-28 14:41:34