PÓS-GRADUAÇÃO LATO SENSU EM PERÍCIA DIGITAL
LABORATÓRIO DE
PERÍCIA DIGITAL
ANÁLISE DE DISPOSITIVOS MÓVEIS
ANÁLISE DE MEMÓRIA E DE MALWARE • Extração de Memória no Android • Análise de Malware em Android • Malware em iOS?
EXTRAÇÃO DE MEMÓRIA NO ANDROID
Etapas:
• Preparação do ambiente
• Criação do Dispositivo Virtual de Android (Opicional) • Baixar Código Fonte do Android
• Compilação Cruzada
• Carregar o LiME LKM no Android e fazer o dump de Memória • Criar um profile pro volatility
PREPARAÇÃO DO AMBIENTE
Download do Android SDK e NDK: • Android SDK: http://developer.android.com/sdk/index.html • Android NDK: http://developer.android.com/tools/sdk/ndk/index.html E descompactar: • ~/android-sdk • ~/android-ndkInicializar o ambiente de build (Opcional):
• http://source.android.com/source/initializing.html
Download do código fonte:
• http://source.android.com/source/downloading.html
Criar o sistema (Opcional):
CRIAÇÃO DO DISPOSITIVO VIRTUAL DE ANDROID
(OPICIONAL)
BAIXAR CÓDIGO FONTE DO ANDROID
Pode se baixar o código fonte do fabricante específico (modelo específico) ou baixar o código específico para o emulador de Android se for realizar apenas testes (Conhecido como Goldfish):
$ git clone https://android.googlesource.com/kernel/goldfish.git ~/android-source
Cloning into '/Users/Michael/android-source'...
remote: Total 2442118 (delta 2048282), reused 2442118 (delta 2048282) Receiving objects: 100% (2442118/2442118), 501.84 MiB | 395 KiB/s, done. Resolving deltas: 100% (2048284/2048284), done.
$ cd ~/android-source/ $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/android-goldfish-2.6.29 remotes/origin/android-goldfish-3.4 remotes/origin/linux-goldfish-3.0-wip remotes/origin/master
$ git checkout -t remotes/origin/android-goldfish-2.6.29 -b goldfish
Checking out files: 100% (26821/26821), done.
Branch goldfish set up to track remote branch android-goldfish-2.6.29 from origin. Switched to a new branch 'goldfish
COMPILAÇÃO CRUZADA
Etapas:
• Crosscompile do kernel; e
• Download e crosscompile do LiME;
• Alterar o Makefile adicionando as linhas:
KDIR_GOLDFISH := ~/android-source
CCPATH := ~/android-ndk/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86/bin
• E substituir as linhas:
$(MAKE) -C /lib/modules/$(KVER)/build M=$(PWD) modules strip --strip-unneeded lime.ko
mv lime.ko lime-$(KVER).ko
• Pelas linhas:
$(MAKE) ARCH=arm CROSS_COMPILE=$(CCPATH)/arm-linux-androideabi- -C $(KDIR_GOLDFISH) EXTRA_CFLAGS=-fno-pic M=$(PWD) modules
CARREGAR O LIME LKM NO ANDROID E FAZER O
DUMP DE MEMÓRIA
Basta usar o adb:
$ cd ~/android-sdk/sdk/platform-tools/
$ ./adb push ~/lime-forensics/src/lime-goldfish.ko /sdcard/lime.ko
Para o dump podemos fazer via sdcard ou remoto:
$ adb shell
root@android:/ # insmod /sdcard/lime.ko "path=/sdcard/lime.dump format=lime" root@android:/ # ls -al /sdcard/lime.dump
----rwxr-x system sdcard_rw 872415264 2013-02-25 16:48 lime.dump
Ou
$ adb forward tcp:4444 tcp:4444 $ adb shell
root@android:/ # insmod /sdcard/lime.ko “path=tcp:4444 format=lime”
E no computador:
CRIAR UM PROFILE PRO VOLATILITY
Crosscompile do volatility:
• Alterar o Makefile: $ svn checkout https://volatility.googlecode.com/svn/trunk/ ~/android-volatility $ cd ~/android-volatility/tools/linux obj-m += module.o KDIR := ~/android-source CCPATH := ~/android-ndk/toolchains/arm-linux-androideabi-4.7/prebuilt/darwin-x86/binDWARFDUMP := /usr/bin/dwarfdump -include version.mk all: dwarf
dwarf: module.c
$(MAKE) ARCH=arm CROSS_COMPILE=$(CCPATH)/arm-linux-androideabi- -C $(KDIR) CONFIG_DEBUG_INFO=y M=$(PWD) modules
CRIAR UM PROFILE PRO VOLATILITY
Criar vtypes:
$ make
$ head module.dwarf
.debug_info
<0><0x0+0xb><DW_TAG_compile_unit> DW_AT_producer<GNU C 4.7> DW_AT_language<DW_LANG_C89> DW_AT_name<~/volatility_android/tools/linux/module.c> DW_AT_comp_dir<~/android-source> DW_AT_stmt_list<0x00000000>
<1><0x1d><DW_TAG_base_type> DW_AT_byte_size<0x00000004> DW_AT_encoding<DW_ATE_unsigned> DW_AT_name<long unsigned int>
<1><0x24><DW_TAG_pointer_type> DW_AT_byte_size<0x00000004> DW_AT_type<<0x0000002a>>
Fazer o Profile:
$ zip ~/android-volatility/volatility/plugins/overlays/linux/Golfish-2.6.29.zip module.dwarf ~/android-source/System.map
adding: module.dwarf (deflated 90%)
EXAMINAR A MEMÓRIA
• Processos em execução;
• Acesso a dados protegidos (lockscreen)
• /system/gesture.key
• Dados que não vão ao disco:
• /app-cache/com.android.browser/cache/webviewCache
ANÁLISE DE MALWARE EM ANDROID
• Ferramentas
• Engenharia reversa • Exemplos
FERRAMENTAS
ONLINE
• Sites de antivírus de desktop
• virustotal.com • metascan-online.com • Sites específicos: • https://apkscan.nviso.be/ • http://anubis.iseclab.org/ OFFLINE • Androtools • http://www.nyxbone.com/malware/android_tools.html
ENGENHARIA REVERSA
• apk = zip + xmls
• AndroidManifest.xml
• Permissões e outras informações relevantes
http://developer.android.com/reference/android/Manifest.permission.html
• Usar outras ferramentas de engenharia reversa similares ao Java:
EXEMPLOS
• FakeBank.apk • ZITMo.apk
MALWARE EM IOS?
• Jailbreak
• Vulnerabilidades • Outros ataques
JAILBREAK
• Processo de jailbreak elimina uma série de restrições em equipamentos com iOS, permitindo modificar algumas configurações e instalar aplicações fora da App Store.
• Libera funções desconhecida para muitos usuários que podem ser exploradas por atacantes/malwares:
VULNERABILIDADES
Distribuição de vulnerabilidades identificadas nos SO em 2014
Fonte: http://www.gfi.com/blog/most-vulnerable-operating-systems-and-applications-in-2014/ Sistema Operacional # total de vulnerabilidades # de vulnerabilidades altas # de vulnerabilidades médias # de vulnerabilidades baixas Apple Mac OS X 147 64 67 16 Apple iOS 127 32 72 23 Linux Kernel 119 24 74 21 Windows 68 47 20 1 Android 6 4 1 1
VULNERABILIDADES
Fonte: https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&qpcustomd=0 Windows 90,23% Mac OS X 7,72% Linux 1,74% Outros0,31%Distribuição por Sistema Operacional (Desktop)
VULNERABILIDADES
VULNERABILIDADES
Comparação: • https://www.cvedetails.com/product/15556/Apple-Iphone-Os.html?vendor_id=49 VS • https://www.cvedetails.com/product/17153/Microsoft-Windows-7.html?vendor_id=26Mesmo vale para Android:
MALWARE EM IOS?
XcodeGhost (set/15)
• Plataforma de desenvolvimento Xcode modificada para injetar código malicioso nos aplicativos de iOS no momento da compilação.
PÓS-GRADUAÇÃO LATO SENSU EM PERÍCIA DIGITAL