PÓS-GRADUAÇÃO LATO SENSU EM PERÍCIA DIGITAL LABORATÓRIO DE PERÍCIA DIGITAL PROFESSOR: DIEGO AJUKAS
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-ndk Inicializar 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): http://source.android.com/source/building.html
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 mv lime.ko lime-goldfish.ko
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 Ou sdcard_rw 872415264 2013-02-25 16:48 lime.dump $ adb forward tcp:4444 tcp:4444 $ adb shell root@android:/ # insmod /sdcard/lime.ko path=tcp:4444 format=lime E no computador: $ nc localhost 4444 > lime.dump
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/bin DWARFDUMP := /usr/bin/dwarfdump -include version.mk all: dwarf dwarf: module.c $(MAKE) ARCH=arm CROSS_COMPILE=$(CCPATH)/arm-linuxandroideabi- -C $(KDIR) CONFIG_DEBUG_INFO=y M=$(PWD) modules $(DWARFDUMP) -di module.ko > module.dwarf
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%) adding: Users/Michael/android-source/System.map (deflated 73%)
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 Etc.
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: Decompilação
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: Ex: ssh
VULNERABILIDADES Distribuição de vulnerabilidades identificadas nos SO em 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 Fonte: http://www.gfi.com/blog/most-vulnerable-operating-systems-and-applications-in-2014/
VULNERABILIDADES Distribuição por Sistema Operacional (Desktop) Mac OS X 7,72% Linux 1,74% Outros 0,31% Windows 90,23% Windows Mac OS X Linux Outros Fonte: https://www.netmarketshare.com/operating-system-market-share.aspx?qprid=10&qpcustomd=0
VULNERABILIDADES Fonte: http://www.asymco.com/2015/04/14/personal-computer/
VULNERABILIDADES Comparação: https://www.cvedetails.com/product/15556/apple-iphone- Os.html?vendor_id=49 https://www.cvedetails.com/product/17153/microsoft- Windows-7.html?vendor_id=26 VS Mesmo vale para Android: https://www.cvedetails.com/product/19997/google-android.html?vendor_id=1224
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 LABORATÓRIO DE PERÍCIA DIGITAL PROFESSOR: DIEGO AJUKAS