Lost In Security

Syndicate content
Updated: 2 years 50 weeks ago

El último superviviente (II) - iOS

Sun, 2013/04/07 - 03:30
En el pasado artículo estuvimos revisando los puntos débiles que tiene un malware a la hora de sobrevivir un reinicio del sistema, y nos centramos en OSX. Ahora toca el turno a iOS, que al ser una especie de spin-off de OSX, vamos a ver que existen muchas similitudes. De hecho, en el caso de iOS, no existen tantos puntos donde una aplicación va a poder registrarse para sobrevivir a un reinicio. Al ser un sistema tan cerrado, y mucho más simple que un sistema clásico de escritorio, estos puntos de arranque son mucho menos. El sitio por excelencia para registrarse una aplicación que quiera ser arrancada en el reinicio es /System/Library/LaunchDaemons, y su funcionamiento es exactamente igual que en la de su hermano OSX. Basta con dejar un archivo con un formato específico (fichero .plist) en ese directorio, que será interpretado por launchd en el arranque y ejecutará lo que esté configurado. Aunque es importante reseñar que no es posible acceder a incluir ningún fichero en ese directorio sino es a través de algún exploit/jailbreak. También existen el directorio /Library/LaunchAgents y /Library/LaunchDaemons, pero no son utilizados por el sistema. Tan sólo después de hacer un jailbreak, sí que se utiliza el segundo, y algunas aplicaciones de Cydia registran ahí sus ficheros .plist (como OpenSSH). Por ejemplo, en el primer malware que apareció para iOS (sólo para dispositivos con jailbreak), llamado iKee (con todas sus variantes iKee.A, iKee.B y iKee.C), utilizaba este sistema para sobrevivir al reinicio, instalando tres archivos en este directorio. Si nos fijamos en el código de iKee, veamos cómo instalaba uno de estos ficheros: rm -rf /System/Library/LaunchDaemons/com.apple.ksyslog.plist
#cp com.apple.ksyslog.plist /private/var/mobile/home/
cp com.apple.ksyslog.plist /System/Library/LaunchDaemons/com.apple.ksyslog.plist
#/bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.ksyslog.plist También en el caso del 'troyano' creado por FinFisher para la monitorización de dispositivos iOS, se utiliza un archivo .plist en el directorio /System/Library/LaunchDaemons llamado com.apple.logind.plist, con el objetivo de sobrevivir un reinicio (y ejecutar el binario logind): <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>home.logind</string> <key>OnDemand</key> <false/> <key>ProgramArgumments</key> <array> <string>/System/Library/CoreServices/logind.app/logind</string> <string></string> <string></string> </array> <key>StandardErrorPath</key> <string>/dev/null</string> </dict> </plist> En teoría, no existe ningún otra forma de registrarse en el sistema para ser ejecutado en un arranque. Aunque no es del todo cierto, puesto que Apple sí que permite ejecutar aplicaciones que no sean del sistema en el arranque, sin tener que utilizar ningún exploit o jailbreak: utilizando el parámetro UIBackgroundModes (a partir de 4.0) en el fichero Info.plist de la app. Según la documentación de Apple, UIBackgroundModes se utiliza para especificar si una app necesita ejecutarse de forma continua en el background, pero Apple sólo permite ciertos tipos de aplicaciones utilizar este parámetro:
  • Audio (audio): para que suenen las canciones
  • Posición (location): si se necesita tener un control fino de la posición (por ejemplo en aplicaciones de deportes)
  • VoIP (voip): siempre conectado para recibir llamadas
  • Revistas (newsstand-content): descargar contenidos de forma inmediata
  • Accesorios externos (external-accesory): estar conectado continuamente
  • Bluetooth (bluetooth-central y bluetooth-peripheral): estar conectado continuamente
Para posibles fines que pueda tener un malware, la que más interesa es la opción de VoIP, puesto que permite controlar las comunicaciones en background, y además será arrancada en el reinicio del dispositivo por parte del sistema. <key>UIBackgroundModes</key> <array> <string>voip</string> </array> Para demostrarlo, el desarrollador Timothy L. Ekl ha desarrollado una pequeña app que utiliza la clave UIBackgroundModes con el valor 'voip', y efectivamente, la aplicación se ejecuta en el reinicio del sistema de forma automática. Según parece, en el proceso de revisión de Apple a la hora de incorporar una nueva app en la AppStore, si una app tiene el parámetro UIBackgroundModes puesto a 'voip', se comprueba que realmente es una aplicación de VoIP, y si no, se rechaza. En nuestro caso de un malware, nos da relativamente igual puesto que en principio ese malware habrá infectado el sistema con otros medios que no sea a través de la AppStore, con lo que podría usar este parámetro sin problemas para sobrevivir al reinicio. A día de hoy no se ha visto ningún malware que utilice esta técnica, pero puede que en el futuro podamos ver alguno. El último superviviente (I) - OSX
El último superviviente (II) - iOS
Categories: Security Posts

Españoles por la BlackHat

Sat, 2013/04/06 - 23:30
Siguiendo con la estela del artículo publicado 'Españoles por la Phrack', vuelvo a la carga con un artículo parecido, pero en este caso sobre una de las conferencias de seguridad que más conoce la gente: BlackHat. Si os dedicáis a la seguridad informática, alguna vez tenéis que ir a Las Vegas durante el mes de agosto para conocer de primera mano que suceden en estas conferencias, puesto que es casi una peregrinación obligada. Las conferencias BlackHat fueron fundadas en 1997 por Jeff Moss (The Dark Tangent) y aunque al principio eran las conferencias donde todos los investigadores nos guardábamos nuestros descubrimientos para enseñarlos allí, poco a poco se ha ido perdiendo ese espíritu por diversas razones; ahora mismo existen innumerables conferencias de seguridad en casi todos los países, muchas conferencias se han vuelto más comerciales, etc. También influyó cuando en 2005 Jeff Moss vendió las conferencias a la empresa CMP Media, por alrededor de $13.9 millones. Aún así, todavía hoy en día son las más conocidas, y su versión de Las Vegas es posiblemente una de las conferencias de seguridad con más asistentes del mundo. Aunque nos ha costado un poco, también los españoles poco a poco nos hemos ido quitando el miedo y ya es normal ver a algún español dando alguna presentación en cualquiera de las BlackHat que se celebran por el mundo. Hagamos un repaso de las apariciones de españoles en alguna BlackHat: Como bien ha indicado Juan Garrido en los comentarios, también desde el año 2010 dentro de la BlackHat existe una sección para mostrar herramientas novedosas, que se llama BlackHat Arsenal. También a ella han acudido varios españoles para enseñar sus herramientas:
Categories: Security Posts