viernes, 22 de julio de 2016

Aportaciones a la "nueva" vulnerabilidad de OpenSSH

Me he hecho eco de la noticia en referencia a la "nueva" vulnerabilidad de OpenSSH en la versión 7.2p2 leídas en las siguientes URLs:

Fuentes que informan de la vulnerabilidad


Fuente original


La vulnerabilidad como sabréis, se recoge en el CVE-2016-6210, y consiste en:

Explicación aportada por la fuente original

Es decir:

Explicación/traducción aportada por la fuente: blog.segu-info.com.ar

A los datos aportados por todas las noticias, quería añadir mi aportación:

1.- Dicha vulnerabilidad NO sólo afecta a la versión 7.2p2, sino también a versiones anteriores tal y como se comenta en la noticia original

Anuncio de las versiones afectas a través de la fuente original

2.- En 2006 ya se detecto este mismo este mismo problema sobre OpenSSH 4.1 portable en sistemas SUSE. (CVE-2006-5229)

CVE-2006-5229

3.-  Existe un módulo de metasploit que te permite escanear servidores OpenSSH que trabaja en base a lo dispuesto en el punto anterior.

Modulo de metasploit

RECOMENDACIÓN:
Como se puede comprobar en la imagen que se muestra a continuación, el valor a partir del cual el escáner considera que el usuario existe es, mínimo, 1 sg.

Por mi experiencia, los valores que confirman o que con una alta probabilidad confirman que un usuario existe están por debajo de ese umbral.

Por lo que los resultados trasmitidos por el escáner no es del todo confiables

 Intentos de utilizar el escáner de metasploit configurando el umbral por debajo de 1 sg.

4.- A los códigos sugeridos tanto en la página donde se muestra la información original como en la página del "lado del mal", personalmente, le he hecho una revisión.


En esta versión,  se utilizan dos archivos:
               
                1.- Listado de direcciones IP
                2.- Listado de usuarios a comprobar

Además, en dicha versión, sólo se mostrarán por pantalla información sobre la IP, el usuario y los segundos que se tardado en recibir respuesta siempre y cuando dicho tiempo este por encima de 0.5 sg (es modificable).
                                                           

Código generado

Salida por pantalla


Postdata: Gracias Jonathan

viernes, 8 de julio de 2016

Conocimientos para detectar si un PDF es malicioso - Parte 2 y última

Estructura  lógica de un archivo PDF

Ya se ha visto la estructura física, veamos ahora la estructura lógica de un archivo PDF.

Tal y como se ha perfilado, los archivos PDF funcionan a través de objetos. Estos objetos se reúnen en lo que se denomina: objetos indirectos, es decir, los objetos indirectos son objetos con nombre que contienen objetos u otros objetos indirectos.

Estos objetos indirectos vienen representado por las palabras claves: obj y endobj. Más concretamente, un objeto indirecto viene representado de la siguiente manera:

<ID> <Versión del objeto> obj
...
endobj

Leyenda:

ID           Identificador del objeto indirecto.
                Los identificadores pueden NO ser secuenciales en el archivo PDF

Versión del objeto  Cuando se crea un objeto indirecto este valor es de 0, si por cualquier 
                                circunstancia el objeto indirecto se actualiza el nuevo objeto indirecto 
                                podrá el valor 1, es decir, este valor indica la cantidad de veces que el  
                                objeto indirecto ha sido actualizado

La estructura lógica de un archivo PDF tiene forma de árbol.

La estructura parte de un objeto indirecto raíz, denominado: Document catalog, que se ramifica en las siguientes áreas o ramas:

1.- Page Tree
2.- Outline hierarchy
3.- Article Theards
4.- Named destinations
5.- Interactive form

NOTA: El Document Catalog, es el elemento /Root de la sección Trailer.

El objeto indirecto 1470 0 es el Document Catalog del documento PDF

El objeto Document Catalog tiene entre las entradas más interesantes, las siguientes:

1.- /Type
2.- /Version
3.- /Extensions
4.- /Pages  --> referencia al objeto indirecto referenciado como: Page Tree
5.- /Dests
6.- /Outlines
7.- /Threads
8.- /Metadata

Contenido del objeto: Document Catalog

En la sección o rama, Page Tree, es donde encontraremos los objetos indirectos de tipo: page., que podemos decir que son las páginas de nuestro documento PDF que veremos al abrir el documento.

Estos objetos: Page Tree, tienen las siguientes entradas:

1.- /Type
2.- /Parent
3.- /Kids --> Array que contiene los objetos indirectos de tipo: Page, que caen directamente del objeto: Page Tree.
4.- /Count --> específica el número de nodos hojas que posee esta rama o sección

El objeto indirecto 1457 0 es el Page Tree del documento PDF


Contenido de uno de los objetos: Page, más concretamente del objeto indirecto: 1458 0

Es decir, si seguimos la secuencia, el árbol iría quedando:

Objeto 1470 (Document Catalog)
                Objeto 1457 (Page Tree)
                               Objeto 1458 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1459 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1460 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1461 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1462 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1463 (Pages)
                                               <Objetos contenidos en el objeto: page>
                               Objeto 1464 (Pages)
                                               <Objetos contenidos en el objeto: page>


Ahora que sabemos cómo se encuentra estructurado un archivo PDF, ¿qué debemos buscar para determinar si un archivo PDF puede ser malicioso?

A la hora de analizar un archivo PDF deberemos de fijarnos en los objetos indirectos, más concretamente en:

1.- /Page
2.- /JS
3.- /JavaScript
4.- /AA
5.- /OpenAction
6.- /AcroForm
7.- /JBIG2Decode
8.- /RichMedia
9.- /Color with a value larger than 2^24

Vamos a ver más en profundidad la información que nos puede aportar cada tipo de objeto.

1.- /Page: Nos indica el número de páginas que posee el documento, en el caso de tener un archivo malicioso con total seguridad sólo tendrá 1 página.

2.- /JS, /JavaScript y /RichMedia: Indican que el archivo PDF contiene código Javascript (los dos primeros tipos) o código flash. ¡¡Os imagináis las posibilidades!!

3.- /AA, /OpenAction y /AcroForm: Indican la existencia de una acción automática que se realiza cuando el documento o página es visualizado. En documento maliciosos, pueden ser utilizados para ejecutar código JavaScript u otro sin interacción del usuario.

4.- /JBIG2Decode y /Color with a value larger than 2^24: Indican la presencia de filtros vulnerables.

Con un conocimiento pormenorizado de la estructura interna de un archivo PDF, se puede hacer lo siguiente:

https://blog.didierstevens.com/2016/06/07/recovering-a-ransomed-pdf/

Bibliografía

resources.infosecinstitute.com/pdf-file-format-basic-structure/
Documento: Analyzing Malicious PDF Fiels by Didier Stevens


jueves, 7 de julio de 2016

Conocimientos para detectar si un PDF es malicioso - Parte 1

Antes de comentar analizar un archivo PDF para determinar si se trata de un archivo malicioso o no, debemos entender la estructura interna física y lógica del archivo para saber qué buscar.

Como comentario inicial decir que el lenguaje PDF se basa en el lenguaje PostScript (lenguaje de programación), pero el lenguaje PDF es un subconjunto de PostScript que no posee las características que hace que sea un lenguaje de programación.


Estructura  física de un archivo PDF

Estructura interna de un archivo PDF


Header: Se corresponde con la primeros bytes de cualquier archivo PDF, y específica la versión utilizada por el documento .pdf.

 El resto de la línea nos muestran caracteres sin ningún valor informativo.

Versión de PDF utilizada por el documento: 8448180488.pdf

NOTA: Los caracteres "%" indican inicio y fin de comentario.
         Si la cabecera no está presente o no sigue el patrón %PDF-X.Y%, entonces la mayoría de los lectores de archivos PDFs no visualizarán el contenido del archivo

Body: Contiene los "objetos" incluidos dentro del archivo PDF, entre los cuales nos podemos encontrar: Booleanos, números, nombres, diccionarios, streams y el objeto NULL (objetos directos o objetos). Pero también contendrá los objetos llamados indirectos.

En definitiva, está sección contendrá los datos que serán mostrados al usuario.

Comienzo de la sección "Body" del documento: 8448180488.pdf

El contenido de dicha sección se verá más adelante.

Tabla 'xref': Es una tabla de referencias cruzadas que contiene las referencias a todos los objetos contenidos en el documento o, mejor dicho, en el cuerpo o body del documento.

Esta tabla permite conocer  los objetos contenidos en el documento sin necesidad de leer el contenido de todo el documento.

Parte de la tabla: xref, del documento: 8448180488.pdf

Toda la tabla: xref, del documento: 8448180488.pdf



Toda la tabla: xref, vista de manera más legible.


La primera línea tras la clausula: xref, se corresponde con el siguiente patrón:

<ID del objeto> <Número de objetos, del tipo anterior, dentro del documento>

Nuestro ejemplo:
ID objeto: 1468 (caja roja)
Número de objetivos del tipo anterior: 36 (caja verde)

Patrón detectado tras la clausula: Xref

NOTA: En el caso estudiado sólo se tiene un tipo de objeto, pero en un documento de tipo .pdf, podrían existir múltiples IDs de objetos.

Para cada uno de los objetos del tipo definido se tiene información  está representado por una línea compuesta por 20 bytes(incluido el CRLF).

Objetos del tipo 1436

La información dada por cada uno de los objetos sigue el siguiente patrón

<offset del objeto> <Número de generación del objeto> <f|n>

Los primeros 10 bytes se corresponde con el offset donde se encuentra ubicado el objeto, partiendo siempre desde el comienzo del archivo. Tras estos bytes, nos aparecerá un espacio en blanco y un número que se corresponde con el número de objeto dentro de un mismo tipo de objeto. Tras este número, nos aparecerá otro espacio en blanco y una "f" (free, libre) o una "n" (non-free, en uso). Por último, el CRLF

Más concretamente, la "f" significa que el objeto sigue estando en el archivo pero que no puede ser utilizado, y por lo tanto NO será presentado al abrir el documento. La "n" significa que el objeto esta en el archivo y se encuentra en uso. El valor

El número de generación del objeto (NGO), se podría explicar diciendo que controla las veces que un objeto ha sido "eliminado" o categorizado como "f" (free). Es decir, cada vez que un objeto es puesto como "f" el valor correspondiente al NGO se incrementara en uno. Si por cualquier circunstancia dicho objeto se vuelve a utilizar el NGO se mantendrá con el valor incrementado a uno, pero si se vuelve a eliminar, el NGO se volverá a incrementar.

NOTAS IMPORTANTES:
1.- Pueden existir múltiples tablas de referencias cruzadas debido a la actualización del documento.

Como es el caso del documento utilizado como ejemplo:

Comienzo de la segunda sección "xref" del documento: 8448180488.pdf

2.- El primer objeto debe tener como identificador el 0 y contendrá una entrada de objeto con NGO 65535, marcado como "free" (f). Por ejemplo:

Primer objeto de la segunda sección "xref" del documento: 8448180488.pdf

2.- El último objeto de la tabla de referencias cruzadas tendrá el GNO a 0

Tal y como se ha comentado anteriormente, un archivo PDF puede modificarse, actualizarse porque se ha retocado el contenido. En este caso, la estructura inicial del documento no se elimina del propio documento, sino que se mantiene aunque no sea visible. Es decir, las actualizaciones modifican o añaden objetos al documento, pero nunca los elimina.

Esto implica que las modificaciones se escriban al final del documento, generando así mismo, una nueva sección "body", una nueva "tabla de referencias cruzadas" y una nueva sección "trailer". Visualmente ...

Patrón de actualizaciones de un archivo PDF

Trailer: Permite al lector del documento PDF determinar donde se encuentra la tabla de referencias cruzadas así como otros objetos especiales. Todos los lectores de archivos PDF deberían empezar leyendo un archivo PDF desde el final, ya que es aquí donde reside está sección.

Comienzo de la sección "Trailer"

En la sección podríamos encontrar información como:

/size <integer>: Indica el número de objetos contenidos en todas las tablas de referencias existentes en el documento.

NOTA: El número usado NO debería ser una referencia de tipo de objeto.

/Prev <integer>: Indica el offset de las anterior tabla de referencia cruzada

/Root <objeto>: Indica el objeto "catalogo" o raíz del documento.

/Encrypt <objeto>:  Indica un objeto que se encuentra cifrado

/Info <objeto>:  Indica un objeto que contiene información sobre el documento.

startxref <offset>: Indica el offset respecto del inicio del documento donde se encuentra la tabla de referencias cruzadas

jueves, 9 de junio de 2016

Quiero que todo mi mundo navegue por TOR

Esta entrada tiene varios objetivos ...

1.- El principal: recordar cosas.

2.- Mostrar lo fácil que es configurar el "Burp" (herramienta basada en java para realizar pentest en entornos web) en su versión free, o la que tengas, para encaminar todas nuestras peticiones web a través de la red TOR, y así poder realizar pentesting o navegar de manera más anónima .

3.- Mostrar que el proceso anterior nos permitiría no sólo a la máquina sobre la que hemos realizado el proceso anterior navegar a través de TOR, sino a cualquier máquina que configuremos para que salga a Internet  a través del Burp anterior.

Imaginar que queremos que todos los elementos que se conecten a nuestra casa salgan a través del proxy-web que hemos configurado, utilizando para ello la red TOR

Todo esto tiene sentido siempre y cuando NO queremos crearnos un nodo TOR.

NOTA: Hay que tener en cuenta que existen sitios web que no permiten la navegación desde la red TOR.

Para hacer todo esto, lo primero es descargar las herramientas que necesitaremos, más concretamente, descargaremos dos:

1.- El navegador que permite establecer la conexión con los nodos de entrada hacía la red TOR.

Para ello hay que visitar la web:

https://www.torproject.org

URL para la descarga del navegador TOR para sistemas Windows

Descargado

Tras la descarga, se pasa a la instalación, y tras esta ya podremos empezar a navegar a través de TOR, siempre y cuando utilicemos el navegador web descargado.

NOTA: Siempre tiene que existir un proceso activo del navegador TOR activo, para que el túnel hacía la red TOR exista.

2.- Descargamos la versión gratuita de la suite Burp, que entre otras cosas,  nos permitirá utilizar su sección de proxy-web y así enviar las peticiones que pasen por él hacía el túnel generado por el navegador de TOR.

Para descargar la versión gratuita de la suite Burp, debemos ir a la URL:

https://portswigger.net/burp/downloadfree.html

URL para la descarga de la herramienta Burp en sistemas Windows

Descargado

Tras la descarga e instalación del navegador TOR, necesitaremos configurar el Burp para que las peticiones web que se recojan, las reenvíe por el túnel montado hacía la red de TOR por el navegador TOR.

Para ello, abrimos Burp y nos vamos a la sección: User Options >> SOCKS Proxy, y colocamos los parámetros de siguiente salto de la petición que pasa por el Burp.

NOTA: Por defecto, el siguiente salto lo marcará el default gateway

Configuración del siguiente salto de Burp

NOTA: Para conseguir los datos del puerto que utiliza el navegador TOR para generar el túnel contra la red TOR podemos mirar en la sección "Opciones" del propio navegador TOR.

Información sobre el puerto utilizado por el navegador TOR para construir el túnel contra la red TOR

Comprobamos la navegación

IP saliendo por la red TOR



IP navegando con el Internet Explorer sin utilizar la red TOR

IP navegando con el Internet Explorer a través de la red TOR

Para el tercer paso necesitamos antes de nada:

1.- Habilitar en el Burp otra instancia de proxy en donde la dirección IP sea la de la propia máquina, o modificar la instancia existente para que en vez de 127.0.0.1 aparezca la IP de la máquina.

Se establece una nueva instancia de proxy-web basada en la IP de la máquina y un puerto distinto.

2.- Modificar cualquier firewall que el sistema tenga activo para permitir conexiones hacía el puerto del proxy-web

Tras esto, configuraremos los navegadores del resto de los dispositivos de nuestra red para que las comunicaciones fluyan a través del proxy-web habilitado.

Configuración de un navegador de otro equipo

Confirmación de la navegación a través de la red TOR.

NOTAS FINALES

Para tener bien configurado un proxy-web en nuestra red interna, desde mi punto de vista, habría que:

1.- Diseñar e implementar una red que obligue a los usuarios a configurarse el proxy-web, si o si, para poder navegar.

2.- Utilizar una máquina que exclusivamente haga de proxy-web,  que además sea robusto y que tenga activo el proceso del navegador TOR.

3.- Tener en cuenta la siguiente entrada: 

http://4null0.blogspot.com.es/2016/02/minimizar-exposicion-las-infecciones.html


4.- Securizar y bastionar.

PD: Gracias Pablo por tus comentarios

viernes, 3 de junio de 2016

Eres un chivato mi querido móvil

Hace unos días leí varios artículos sobre las actividades de los gobiernos en manifestaciones para detectar a los asistentes.

http://antivigilancia.org/es/2015/06/la-vigilancia-y-la-protesta-social/

Para ello utilizan los "IMSI catchers".

Pero, ¿qué es el IMSI?

El IMSI o  International Mobile Subscriber Identity (Identidad Internacional del Abonado a un Móvil), es un identificador único que se almacena en la SIM de un dispositivo móvil, y que le identifica a través de las redes de telefonía móvil.

Como por ley, cada tarjeta SIM tiene que estar vinculada a una persona, al menos en nuestro país, por la IMSI se puede identificar a una persona.

Más información:
                               
https://es.wikipedia.org/wiki/IMSI

NOTA: No confundir con el IMEI o International Mobile Station Equipment Identity, (Identidad internacional de equipo móvil), que es el identificador del dispositivo móvil, vamos del teléfono, y es único a nivel mundial.

Más información:
https://es.wikipedia.org/wiki/IMEI

Pero, ¿qué son los IMSI catchers?

Resumiendo ... son torres móviles falsas, también llamadas Stingrays.

 Definición de IMSI catchers

Más información:

                               https://antivigilancia.org/es/2016/03/detectando-antenas-de-celulares-espias/

Contramedidas

El artículo expone las siguientes medidas de prevención.

Medidas de prevención propuestas por el artículo.

Personalmente, he empezado a utilizar Orbot y Orfox (navegador basado en firefox, que necesita de orbot para funcionar). Para navegar, pero también -el orbot- para otro tipo de comunicaciones.
Para mi desgracia mi móvil no es compatible con SnoopSnitch y la app AIMSICD genera tantos errores, que tendré que seguir ciego y no ver las torres que me solicitan cambios de algún tipo.

NOTAS:

A raíz de estas lecturas me oteado información sobre vulnerabilidades en el protocolo SS7 (https://antivigilancia.org/es/2015/06/consultando-al-espia-de-bolsillo-vulnerabilidades-ss7-y-rastreo-global-2/) y he vuelto a visualizar los vídeos de la gente de Layakk sobre ataques en 2G y 3G

Sistema de localización geográfica de un terminal móvil [Rootedcon 2013]
https://www.youtube.com/watch?v=-pR7cm2V9u8

Atacando 3G [Rootedcon 2014]
https://www.youtube.com/watch?v=vIMysm0nswY



Además, apagaré siempre que crea oportuno al chivato que llevo en mi bolsillo.