viernes, 23 de noviembre de 2012

Fortaleciendo un sistema Joomla

Vimos en post anteriores;  Vulnerabilidades en Joomla (I) y Vulnerabilidades en Joomla (II) como  detectar vulnerabilidades en un sistema Joomla.

En este post contaré las medidas que conviene tomar para tener una web joomla lo más segura posible.

Que necesitamos tener para dormir un poco tranquilos:

  •     Copias de seguridad
  •     Versiones de los programas actualizadas.
  •     Calidad del hosting
  •     Medidas específicas de seguridad


Copias de seguridad.
Sobra cualquier explicación de porque esta debe ser la primera medida de seguridad.
Normalmente los proveedores de alojamiento a través de sus paneles de control te permiten hacer copias de seguridad.
Se trata de herramientas muy generales y como tenemos un sitio con un sistema determinado mi consejo es usar una herramienta más específica.
Recomiendo Akeeba Backup, una de las mejores herramientas para salvaguardar sistemas Joomla. Tiene una configuración muy versátil que nos permite diversos tipos de respaldo: Completos, incrementales, sólo bases de datos, exclusión de tablas, ficheros o directorios.
Además necesitamos una herramienta que nos planifique las la realización de las copias  y la descarga a otro sitio externo.
Remote Control, otro producto de Akeeba Backup realiza esta dos tareas de forma muy efectiva.

Una adecuada política de copias de seguridad: tipos y periodicidad es impresencidible si queremos marcar la diferencia entre un servicio web  profesional  y la web hecha por el amigo de un primo que sabe hacer páginas web


Versiones de los programas actualizadas.
Es importante estar suscrito  de correos relacionadas con la seguridad de los componentes que tengamos instalados en nuestra web Joomla.
Una lista muy completa es  la Jooma VEL (Vulnerability Extensión List), que siempre que se detecta una vulnerabilidad envía un correo con toda la información disponible sobre la vulnerabilidad detectada.
También debemos tomar la costumbre de consultar  esta lista cuando instalemos un nueva extensión de Joomla.
Y muy importante tener claro: Desactivar una extensión no elimina los potenciales peligros que pueda tener dicha extensión.

Importante pues borrar todas aquellas extensiones que no se usen.

Hosting
Comprobar  que el hosting tiene también el software actualizado: Versiones de servidor web, de php, de base de datos, del panel de control.
Comprobar  que puertos y servicios presta el hosting y solicitar que se cierren todos aquellos que no usamos (si el alojamiento es compartido probablemente nos digan que no se puede).
Comprobar que las configuraciones están de acuerdo a las prácticas de seguridad.

En cierta ocasión me encontré con un Hosting que no solo tenía el puerto 3306 (standard de MySQL) sino que además la versión de MySQL estaba fuera de mantenimiento.

Si estamos en un servidor compartido la seguridad de nuestro sitio web depende además de la seguridad de las otras webs que estén en el mismo servidor y de la configuración de seguridad de la infraestructura del servidor.

A veces nos fijamos demasiado en el espacio o transferencia a la hora de contratar un hosting  y olvidamos temas de seguridad.

Medidas específicas en el hosting.
Revisemos las opciones de seguridad que nos da el hosting a través de su panel de control y veamos como nos pueden ayudar: filtros, firewall, protección contra ataques  DDoS, etc.

Fichero .htaccess.
Alimentar constantemente este fichero con nuevas directivas. Analizemos nuestro access log y veamos que tipos de ataques nos hacen y pongamos las medidas correcta para que queden detenidos en este nivel de seguridad.


Medidas específicas en Joomla.
Además de las medidas anteriores que son válidas para cualquier sistema hay extensiones de Joomla que nos pueden ayudar a proteger nuestra web.

Estas extensiones se ejecutan en el mismo de nivel de arquitectura y privilegio que el propio Joomla por lo que cualquier vulnerabilidad de las descritas anteriormente puede inutilizar las que hagamos dentro de Joomla.
Antes de empezar a ver que extensiones nos pueden ayudar tomemos algunas simples medidas profilácticas:

  • Empezamos borrando ficheros inútiles como el configuration.php-dist  probablemente no sea necesario volver a tirar de él.
  • Comprobar los permisos de ficheros y directorios
  • Saquemos del configuratión php fuera del document root.
  • Cambiemos el nombre del usuario admin
Y más cosas que se detallan en este excelente post
Y a continuación veremos algunas extensiones de seguridad para Joomla
Quienes tengan cierta experiencia en Joomla ya imaginarán que las extensiones de seguridad estará formada por una serie de plugins.
He aquí los plugins que recomiendo usar:

jHackGuard: Actúa como filtro para bloquear ataques de inyección, file inclusion y transversales de directorios. Es muy similar a lo que hace el .htaccess aunque más fácil de configurar. Es una extensión gratuita que ha creado SiteGround un proveedor holandés de alojamientos. Coloca un pequeño enlace en la parte inferior con un link a su web. Es posible por configuración eliminarlo.

Joomla Backend Token: Sirve para ocultar el acceso al backend. Ya sabemos que es posible acceder a formulario de acceso colocando a continuación el directorio /administrator/
Con este plugin necesitaremos además especificar un token:
http://www.tusitio.com/administrator/index.php?token=xxxxx
xxxx será el número que nosotros especifiquemos.
Es configurable la redirección en caso de no concordar el token suministrado con el token requerido: la home de sitio, google, etc.....
Este plugin no se ha actualiza a las últimas versiones de Joomla

Login Alert. Este plugins simplemente manda un correo  cuando un usuario determinado se conecta al backend. No protege de nada pero te avisa de accesos no autorizados.

Si queremos gastarnos algo de dinero podemos usar Admin Tools Profesional, del mismo equipo que ha desarrollado Akeeba Backup.
Integra tareas similares a las de los plugins descritos y muchas cosas mas. 


Y para finalizar
La seguridad no es proyecto con fin definido, si no un estado. Y debemos estar siempre trabajando para que ese estado no caiga por debajo de unos umbrales mínimos de calidad.
Y siempre, el ultimo recurso: las copias de seguridad.
En un proximo post, aunque no el siguiente: Me han atacado... y ahora qué?

sábado, 3 de noviembre de 2012

Un apóstofre (') no es una comilla (")

Me he visto en la necesidad de tener que revisar mucho en shell de Unix y he visto como muchos progamadores usan el apóstofre (') o la comilla (") indistintamente, pero no es lo mismo.

¿Cuándo usar apostrofes ('') y cuando usar comillas ("")?

Los apóstrofes nos permiten expresar cadenas de texto, por ejemplo:

echo 'hola '; 

Algo más complejo:

nombre = ' Juan';
echo 'Hola ' . $nombre;


Aparecería el saludo : Hola Juan;

A ninguno se nos escapa que si ponemos:

echo 'Hola $nombre";

 nos aparecerá es lo siguiente: Hola $nombre

Ahora es donde introducimos  el comilla (") porque la comilla no es un simple carácter para delimitar un texto es mucho más porque lleva implícita una llamada a un parser, que no es poco. 

El proceso es siguiente: se analiza carácter a carácter el texto que es tratado como literal hasta que en encuentra un nombre de variable y lo sustituye por su valor y continua el proceso hasta el final.

Entonces:

echo "Hola $nombre";
  
Nos dará este resultado: Hola Juan;

Variaciones (sobre un mismo string).

Con lo anteriormente visto tenemos varias posibilidades con resultados iguales.


  1. echo "Hola $Juan"
  2. echo "Hola" $Juan
  3. echo 'Hola' $Juan
  4. echo 'Hola $Juan'

Las tres primeras opciones dan el mismo resultado pero solamente la primera y la tercera se pueden considerar sintácticamente correctas.
La tercera hace algo sin sentido: pone al parser a analizar un cadena con un solo string. Trabajo en balde.
La cuarta daría un resultado no deseado.

De las dos correctas. ¿Hay alguna mejor que la otra?.

Dado que ambas dan el mismo resultado, lo siguiente que debemos preguntarnos es: ¿Cual tiene mejor rendimiento?.

La respuesta es fácil: Aquella que no use el parser.

Los parser son unos grandes devoradores de recursos de un sistema por lo que debemos intentar evitar su uso siempre que nos sea posible.



 
 

sábado, 27 de octubre de 2012

Metadatos. Una fuente de información desconocida

Introducción 

Gracias al uso descuidado de Microsoft Word, hoy ya es posible conocer algunos entresijos de la Autoridad Provisional de la Coalición que (des)gobernó Iraq tras la invasión del país por tropas estadounidenses y de sus aliados.
Al parecer, los funcionarios de dicho organismo no conocían los metadatos que Word incluye en los documentos y sus peligrosos "efectos colaterales", lo que ha permitido acceder a información que refleja la incompetencia de las fuerzas de ocupación.

Podemos ver en este enlace mas detalle:  http://www.computerbytesman.com/privacy/blair.htm



Pero... ¿Que son los metadatos?.

Según la wikipedia los metadatos son datos que guardan información sobre otros datos. En el caso aplicado a los documentos son datos que almacenan información sobre el propio documento: datos del creador, fecha del creación, historial de modificaciones, etc.

La existencia de metadatos no tiene que ser un problema si el usuario normal los puede controlar y verificar de forma transparente.

Pero cuando la creación y manejo de los metadatos es opaca para los usuarios los metadatos se pueden convertir en un problema.

Como conocer y modificar los metadatos.

Es contradictorio que tomemos todas la precauciones del mundo al escribir un documento para no dar más información que la estrictamente necesaria  y por otro lado estamos mandando información sin ser consciente de ello.

La NSA tiene publicado un documento al respecto, donde explica en detelle como trabajar con ellos

Por su parte, Microsoft permite descargar un plugin que se supone elimina los metadatos. Pero el tema sigue opaco para nosotros.

La máxima transparencia debe venir de los formatos Abiertos. Aunque existe la creencia general de que para eliminar todos los metadatos basta en principio con importar un doc en OpenOffice y convertirlo a odt o la simple conversión de formato Word a pdf.

Y no es así los documentos en formato abierto tambien tienes sus propios metadatos pero, en este caso sí están documentados y existe herramientas tambien fiables que nos permiten verlos, modificarlos y eliminarlos. 

Manos a la obra. Como eliminar los metadatos de un documento Office. 

Un método bastante fiable es pasar el documento a un formato abierto como puede ser OpenOffice. Necesitamos tener esta suite ofimática en nuestro equipo. No voy en este post a contar las bondades de Open Office pero aconsejo tenerla instalada independientemente de que tengamos también la suite de Microsoft.

También sera necesario instalar un programa que elimine los metadatos del documentoOpen Office, ya con la garantía de que no hay nada oculto. Uso para eso el programa: OOMetaExtractor de Informática64  y lo podréis encontrar en su página de herramientas

Ya tenemos lo necesario en nuestro equipo.

Primero empezamos por la conversión que es tan simple como abrir el documento con Open Office y volverlo a guardar en formato open: odt.

Arrancamos OOMetaExtractor:





Y abrimos el documento Open Office que hemos creado.





Solo nos queda limpiar los metadatos: Metadata -> Clean




Volvemos a abrir el documento para verificar:

Podemos ver el documento limpio de metadatos.

No olvidemos de mandar el documento que hemos creado, no el original Word.






viernes, 12 de octubre de 2012

TOR: Navegación privada y anónima

Las comunicaciones en internet no son privadas al 100%, y lo sabemos todos. O deberíamos de saberlo. Nuestros datos viajan a través un número indeterminado de nodos hasta llegar a su destino Incluso el protocolo https deja al descubierto nuestras direcciones IP.

 Tenemos tres frentes que proteger si queremos navegar de forma anónima.


  • Privacidad de los datos.
  • Ocultación de nuestra IP al servidor
  • Ocultación de la ruta de datos entre el servidor  y nosotros.


El primer punto está bien solucionado con el protocolo https y la arquitectura de seguridad que lo soporta: certificados, claves asímetricas, etc., etc. Pero el cifrado sólo se realiza sobre la parte de datos y deja en claro las direcciones IP, tanto de origen como de destino.
La ocultación de nuestra IP al servidor está solucionada con más sombras que luces usando proxys anónimos. Primero he de decir que desaconsejo usar estos proxys si estamos transmitiendo en claro. Estamos depositando toda nuestra información en un servicio que puede leer todo lo que pasa e incluso manipular ciertos datos. Y no hay que olvidar que no sabemos quien puede estar detrás de estos proxys. Incluso con conexiones cifradas nuestras direcciones de origen y destino van en claro.
Aún así todavía nuestra comunicación va dejando un rastro en la red que sólo podemos romper usando un proxy que además nos garantize el anonimato. Por supuesto tenemos los mismo riesgos que he mencionado antes.

Entonces la pregunta triple pregunta es:
¿como cifrar nuestros datos cuando no están cifrados,  ocultar nuestra dirección IP y no dejar traza en los nodos intermedios?
La  respuesta es simple: usando TOR (The Onion Route).

¿Que es TOR?
TOR es una red de aquipos que permite la creación de túneles virtuales a través de los cuales viajan nuestros datos cifrados 

Los datos salen cifrados de nuestro equipo, saltan de router a router añadiendo en cada salto su propio cifrado que se suman unos sobre otros como las capas de una cebolla (de ahí su nombre)


Se compone de los siguientes tipos de nodos: 

Nodos OR ( del inglés Onion Router): Funcionan como encaminadores
Nodos OP (del inglés Onion Proxy):  Su función es obtener información del servicio de directorio, establecer circuitos aleatorios a través de la red y manejar conexiones de aplicaciones del usuario. 
Normalmente se ejecuta en local para garantizarnos que la conexión ya sale cifrada y anónima desde nuestrequipo
El esquema simplificado es el siguiente: se establece un circuito entre varios nodos por el que viajan nuestros datos y se informa a cada OR del establecimiento de un circuito. Cada OR solo sabe quien le sigue y quien le precede. No hay información completa del circuito. 
Se establece claves de cifrado entre cada elemento del circuito y una vez está todo preparado los datos viajan por la red. 
Periódicamente los circuitos se renuevan para eliminara posibilidad de rastreo.


Límites a TOR
TOR no resuelve todos los problemas relacionados con nuestra privacidad y anonimato. TOR no impide que el sitio web al que nos conectamos obtenga cierta información sobre nosotros que es capaz de extraer del navegador: Tipo de navegador, Sistema Operativo y las versiones en las que están. Quizá no sea una información importante ni revelada nada especial  pero debemos ser conscientes de ese límite. También si excesivamente paranoicos hay que decir que es posible mediante otras técnica ocultar esa información pero sale del ámbito de este post.
A excepción de Firefox (y su botón para "torificar") las demas aplicaciones (Internet Explorer, Chrome, IRC, FTP's, etc) no comunican a través de TOR de forma automática. Es necesario realizar alguna acción para indicarles que deben hacer.
Debemos buscar dentro de los parámetros de conexión un apartado dedicado al proxy e indicar que queremos que trabaje con proxy SOCKS en el puerto 9050.
Finalmente recordar que aunque el dato viaja con el cifrado propio de la red TOR a la salida de la misma el dato queda descifrado y solo se mantiene la comunicación privada si estamos con protocolo https en origen.
El proyecto TOR nos recomienda, además, cambiar ciertos hábitos si vamos a usar TOR


Instalar TOR. 
Hemos de ir sitio web del Proyecto TOR y descargar el Tor Bundle completo que contiene: el cliente TOR, Vidalia el interfaz gráfico y un firefox con el plugin de TORr instalado.
Solo tenemos que ejecutarlo, instalarlo y activarlo siguiendo las instrucciones y acaberemos viendo el Mozilla Firefox:




Mozilla FireFox "torizado"
Podemos observar en el mensaje inferior que nos dice que nuestra Dirección IP "parece ser" la 173.... que se corresponde con uno de los puntos de salida dela red TOR
A través de panel de control Vidalia podemos cambiar esa dirección (use a new identity)





 Y el parte superior derecha podemos ver el botón de TOR 



et voilá! ya podemos navegar anónimamente y de forma privada (casi al 100%) por la red. 


Cuando usar TOR.
Afortunadamente vivimos en una sociedad en la que no es necesario, por el momento, ocultar nuestra IP cuando queremos opinar algo por la red por lo que salvo casos paranoicos (o delictivos) no se le ve demasiada utilidad a ello.
Pero la aparición de hot-spot wifis que han salido como setas en otoño y a los que nos conectamos en cuanto tenemos oportunidad constituyen un problema muy serio para nuestra privacidad. Las redes abiertas de los medios de transportes, cafeterías, etcétera. Incluso aquellas redes en las que temporalmente nos dan una contraseña no deben inspirarnos tampoco demasiada confianza.
Para esta situación TOR es la solución ideal porque hace que nuestro datos viajen cifrados por la poco fiable wifi anónima que nos hemos encontrado en cualquier sitio. 
Mi opinión es que tengamos instalado TOR en nuestros equipos y a la más mínima sospecha o duda apretemos el botón TOR de nuestro Firefox y naveguemos tranquilos (o al menos muy tranquilos)



martes, 2 de octubre de 2012

Ataques DoS: De la fuerza bruta a la sutileza


Se llama ataque de Denegación de Servicio (Denial of Service, o por sus iniciales en inglés DoS) aquel tipo de ataque por el cual el atacante intenta interrumpir el servicio. Aunque puede haber muchas formas de hacerlo, la más común de ellas bombardeando al servicio con un anormal número de peticiones.

El ataque DoS se aprovecha de ciertas debilidades de la arquitectura TCP/IP.  La  primera de ellas es la inexistencia de un mecanismo de autentificación de la dirección IP que permite falsificar las direcciones de origen lo que hace muy difícil tanto bloquearlas por cortafuegos como rastrearlas hasta su origen.

Un poco de historia.
Hay que remontarse a la segunda mitad de los años 90 para tener noticias de los primeros ataques de Denegación de Servicio (en adelante los llamaré DoS). Estos primeros ataque eran de un único origen y con la dirección sin modificar lo que hacía relativamente sencillo identificarlos y bloquearlos.
Los ataques DoS con un único origen tenían además el inconveniente para el atacante de que era necesario un gran ancho de banda para que el servicio de interrumpiera sobre todo en los grandes sistemas.
La falsificación de las direcciones IP (IP spoofing) y la  posibilidad de coordinar el ataque desde diversos sitios (Distributed DoS, o DDos) volvió a inclinar la balance del lado de  los agresores.

Cortesia de http://www.sott.netPara complicar más la cosa a los defensores a principios de este milenio entra en escena un nuevo blanco para estos ataques: los DNS. Ya no se atacaba un servidor más o menos importante, si no que se atacaba al propio corazón de internet.




Se han ido desarrollando diversas técnicas para luchar contra estos ataques aunque, como en otras ramas de la seguridad no existe proceso finalizado si no estados de seguridad.



 ¿Quien está detrás de los ataques?.

Hoy en día realizar de ataque de DoS simple no tiene ninguna posibilidad de prosperar pues la batalla del ancho de banda está definitivamente ganada del lado de los defensores. No se puede decir lo mismo de los ataques Distribuidos.
Los ataques distribuidos necesitan detrás una importante infraestructura que quedan fueran del alcance del hacker solitario y por tanto son realizados por grupos organizados.
Hay tres tipos de grupos principales:

Cibercrimen.  Extorsión a empresas exigiendo dinero a cambio de no interrumpir sus servicios. Juegos online, pornografía suelen ser los principales objetivos de estos ataque (nada diferente de los gansters de los años 30, solo que han cambiado la thompson por el ordenador).
Ciber Guerra. Son acciones prepetradas por grupos militares o terrorista sustituyendo las armas físicas por armas cibernéticas. Tienes fines políticos, sabotaje industrial.

  
Hacktivismo. Puede considerar esta actividad como una desobidiencia civil dentro de la red. Sus fines generalmente son políticos o sociales y aunque generalmente parece que hay cierta alineación entre causas "justas" y este tipo de activismo no necesariamente es así
Hay una frontera que separa claramente el hacktivismo de los otros tipos: la voluntariedad. Los sistemas que actuan en un ataque DDoS hacktivista lo hacen de forma voluntaria (aunque puedan usar las técnicas de IP Spoofing) mientras que las otras organizaciones se suelen valer de equipos zoombies que has sido previamente infectados.  Independientemente de lo justa que sea la causa no debería considerarse hacktivismo a los ataques DDoS en los que esten envueltos sistemas con desconocimiento de sus propietarios.


Tipos de ataque

Inundación de Ping. Se trata del ataque más simple y que puede verse como una contienda pura de ancho de banda. Así pues necesita para tener éxito disponer de un elevado número de equipos implicados en este ataque. Como su propio nombre indica, se traca de enviar gran cantidad de tramas ICMP como para colapsar el ancho de línea del recepto.

Inundación de SYN. Para entender este ataque es necesario saber como funciona el Three Way Hand-Shake (protocolo de establecimiento de una conexión TCP).
Cuando un servidor recibe una petición de conexión (SYN), responde con un paquete de acuse de recibo de esta petición (SYN+ACK). En este momento se establece lo que se llama half-session. Este estado queda así hasta que el cliente le devuelve otro acuse de recibo.
Si el cliente no responde o la dirección es falta el servidor quederá un tiempo con la media sesión abierta. Una media sesión requiere unos recursos internos del sistema. Todo consiste en mandar los suficientes paquetes SYN para agotar todos los recursos del servidor en medias sesiones abiertas.
Aunque este ataque necesita menos ancho de banda que el de inundación de Ping tiene pocas posibilidades de prosperar si no se usa IP spoofing pues los modernos servidores rechazan automática peticiones de conexión que vienen de un mismo origen mientras tengan medias sesiones abiertas con ese origen.

Three Way Handshake



Inundación de peticiones de aplicación. Es el mismo principio de la inundación de SYN pero en el nivel 7 de la capa OSI. Se trata de impedir que pueda completarse la petición mediante de envío incompleto de una. Al no poder darse por completada los recursos no son liberados y el sistema acaba colapsado.

Dentro de cada tipo de ataque se pueden usar  bien paquetes corrientes o confeccionar paquetes especiales que aprovechen debilidades específicas de los sistemas atacados (no todos los sistemas se comportan igual ante paquetes extraño):
Ping de la muerte: Consiste en mandar un paquete mayor que el máximo soportado.
Paquetes con la dirección de origen que sea la misma que la del servidor lo que hace que el mismo servidor se bloquee.

Defensa

La defensa, pues tan clásicas como si estuviéramos en una guerra tradicional

Aumento de potencia: sistemas escalables, balanceadores de carga (tener mas artillería que el enemigo)
Cortafuegos: tanto de red como de aplicación (usar búnkeres más robusto).
Monitores:  Analizar de tráfico para detectar anormalidades. (Sistemas de inteligencia).

Resumiendo: mas potentes, mas resistentes y más listos. (Nada nuevo bajo sol).

Cookie incrustada en SYN.
Hago especial mención de esta técnica por lo elegante y sofisticada que es.  Aunque solo vale para los ataques de Inundación de SYN. Consiste en lo siguiente. cuando se recibe una trama SYN el sistema toda la información de la media sesión en el contador de la respuesta (SYN+ACK) y libera los recursos que fuera necesario.
Si se trata de una SYN atacante no habrá respuesta pero tampoco quedaran recursos hipotecados en el servidor. Si, por el contrario es una petición legítima el servidor solo tiene que restar uno al contador de secuencia y con los datos del contador de secuencia y con esos datos acaba de construir la sesión. El cliente es ajeno a todo esto y no es necesario tomar ninguna accion especial en el lado cliente.



Coockie SYN


Conclusión

Los ataques DDoS forman un frente abierto todavía y que ha evolucionado desde los ataques de fuerza bruta a nivel de red hasta los modernos ataques en el nivel de aplicación mediante el envío de sofisticados paquetes.
La aparición de modernos toolkits que permiten cada vez organizar ataques de DDoS con menos recursos (y conocimientos) está causando que cada vez aumenten los ataque de este tipo.
Y frente a este lado oscuro tenemos los cada vez más potentes sistemas, balanceadores, sofisticados firewall todos ellos con la delicada tarea no solo de impedir estos ataques si no de permitir que las peticiones legítimas puedan llegar a su destino.
Un frente más de batalla.

viernes, 28 de septiembre de 2012

Vulnerabilidades en Joomla (II). Identificando

En el último post dejamos joomlascan ejecutándose después de darle una pequeña ayuda para pudiera identificar la existencia de algún sistema que interceptaba los errores 404.
Poco a poco joomlascan empieza a escupir el resultado de los diversos test que está realizando.
El siguiente paso es tratar de extraer la máxima información de su huella digital (fingerprint).

## Fingerprinting in progress ...

~Generic version family ....... [1.5.x]

~1.5.x en-GB.ini revealed [1.5.12 - 1.5.14]

* Deduced version range is : [1.5.12 - 1.5.14]

## Fingerprinting done.


## 7 Components Found in front page  ##

 com_wrapper com_xmap
 com_phocadownload com_content com_ckforms
 com_weblinks com_user

Nos dice, para empezar que se trata de un joomla! 1.5.12-14 y que ha localizado desde la front-page siete componentes que enumera a continuación.

Bueno, pues ya tenemos bastante idenficado el sistema. Sigamos analizando la salida

Empieza a buscar las vulnerabilidades del sistema. :

Vulnerabilities Discovered
==========================

# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes

# 2
Info -> Generic: Unprotected Administrator directory
Versions Affected: Any
Check: /administrator/
Exploit: The default /administrator directory is detected. Attackers can bruteforce administrator accounts. Read: http://yehg.net/lab/pr0js/view.php/MULTIPLE%20TRICKY%20WAYS%20TO%20PROTECT.pdf
Vulnerable? N/A

# 3
Info -> Core: Missing JEXEC Check - Path Disclosure Vulnerability
Versions effected: 1.5.11 <=
Check: /libraries/phpxmlrpc/xmlrpcs.php
Exploit: /libraries/phpxmlrpc/xmlrpcs.php
Vulnerable? No

La información sobre cada vulnerabilidad tienen todas el mismo formato.

  • Info: Descripción de la vulnerabilidad
  • Version afectada:  Valor de la version o Any para todas
  • Check: literal de la URL que detecta esa vulnerabilidad
  • Exploit: Información sobre la posibilidad de explotar la vulnerabilidad
  • Vulnerable: Sí, No, No puede ser determinado [N/A]

Y así tenemos hasta 193 análisis.  Veamos el fin del scan


# 193
Info -> Component: com_KSAdvertiser Remote File & Bypass Upload Vulnerability
Versions Affected: any
Check: /index.php?option=com_ksadvertiser&Itemid=36&task=add&catid=0&lang=en
Exploit: /index.php?option=com_ksadvertiser&Itemid=36&task=add&catid=0&lang=en
Vulnerable? N/A

There are 5 vulnerable points in 193 found entries!

~[*] Time Taken: 8 min and 25 sec
~[*] Send bugs, suggestions, contributions to joomscan@yehg.net

Que nos dice que ha encontrado 5 vulnerabilidades. Son las siguientes:

# 1
Info -> Generic: htaccess.txt has not been renamed.
Versions Affected: Any
Check: /htaccess.txt
Exploit: Generic defenses implemented in .htaccess are not available, so exploiting is more likely to succeed.
Vulnerable? Yes
# 7
Info -> Core: Admin Backend Cross Site Request Forgery Vulnerability
Versions effected: 1.0.13 <=
Check: /administrator/
Exploit: It requires an administrator to be logged in and to be tricked into a specially crafted webpage.
Vulnerable? Yes
# 12
Info -> CorePlugin: TinyMCE TinyBrowser addon multiple vulnerabilities
Versions effected: Joomla! 1.5.12
Check: /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/
Exploit: While Joomla! team announced only File Upload vulnerability, in fact there are many. See: http://www.milw0rm.com/exploits/9296
Vulnerable? Yes
# 27
Info -> CoreComponent: com_mailto timeout Vulnerability
Versions effected: 1.5.13 <=
Check: /components/com_mailto/
Exploit: [Requires a valid user account] In com_mailto, it was possible to bypass timeout protection against sending automated emails.
Vulnerable? Yes
# 31
Info -> Component: Seminar com_seminar Blind SQL Injection Vulnerability
Versions effected: 2.0.4 <=
Check: /components/com_seminar/
Exploit: /index.php?option=com_seminar&task=View_seminar&id=1+and+1=1::index.php?option=com_seminar&task=View_seminar&id=1+and+1=2
Vulnerable? Yes

A partir de aquí, si somos los administradores del sistema ya sbaemos que medidas tomar y si estamos haciendo un test de penetración debemos investigar los exploits de estas debilidades

Pero como en esta caso somos los administradores veremos que medidas  tomar:

#1: Deberemos renombrar el fichero htacces como .htaccess
#7: Como estamos en una versión superior no es necesario tomar medidas.
#12: Igual que el anterior. Subir de nivel.
#27. Subir de Nivel 
#31. Subir de Nivel.

Para finalizar he aquí algunos de los check que ejecuta joomlascan:

  • /index.php?option=com_content&view=%' +'a'='a&id=25&Itemid=28
  • /index.php?option=com_poll&task=results&id=14&mosmsg=DOS@HERE<<>AAA<><>
Este es realmente espectacular:
  • /index.php?option=com_acajoom&act=mailing&task=view&listid=1&Itemid=1&mailingid=1+UNION+SELECT+1,1,1,1,concat(0x1e,username,0x3a,password,0x1e,0x3a,usertype,0x1e),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1+FROM+jos_users+where+usertype=0x53757065722041646d696e6973747261746f72+LIMIT+1,1--
  • /administrator/components/com_dadamail/config.dadamail.php?GLOBALS[mosConfig_absolute_path]=
  • /index.php?option=com_jeguestbook&view=../../../../../../../../etc/passwd

Si analizando el access.log de vuestro servidor encontrais peticiones de este tipo, (y seguro que las encontrareis) no os quepa duda estan atacando vuestro sistema.

En próximos post veremos que medidas preventivas tomar para hacer un sistema joomla más robusto y que hacer si por no haber tomado medidas o, a pesar de haberla tomado, nuestro sistema se ha visto comprometido.

Aunque no será en los próximos post, que dedicaremos a otros temas.

martes, 18 de septiembre de 2012

Vulnerabilidades en Joomla (I). Identificando

Joomla! es un de los Gestores de Contenidos (o CMS, como se les conoce de sus siglas en inglés), mas populares y potentes tanto por su diseño como por la cantidad de extensiones que se le pueden instalar.
Su éxito hace que sean un objetivo goloso para aquellos que se dedican a buscar vulnerabilidades. En este post y en el siguiente veremos como detectar vulnerabilidades en Joomla y las medidas a tomar para robustecerlo.

Análisis de vulnerabilidades. 
Para realizar este análisis usaremos JoomlaScan que es un programa diseñado para encontrar vulnerabilidades en webs realizadas con Joomla!.

Sus características son las siguientes:
  •     Realizado en lenguaje Perl
  •     Actualizaciones Online sin necesidad de descarga de nuevo software.
  •     Analisis completo.
  •     Detecta vulnerabilidades como: inyeccion SQL, LFI, RFI, XSS entre otros.
  •     Basado en OWASP 
Hay que recalcar que este programa está exclusivamente diseñado para buscar vulnerabilidad específicas en el  código de Joomla! por lo que no está de más que se ejecute otras herramientas de scaneo más genéricas: para servidores web, php, mysql....

 En este post usaremos la versión de consola aunque existe una versión de ventanas.

Su sintaxis, que puede variar de versión a versión es muy sencilla y en su forma más simple es:

joomla.pl -u http://www.sitioasecanear.com


 ..|''||   '|| '||'  '|'     |      .|'''.|  '||''|.
.|'    ||   '|. '|.  .'     |||     ||..  '   ||   ||
||      ||   ||  ||  |     |  ||     ''|||.   ||...|'
'|.     ||    ||| |||     .''''|.  .     '||  ||
 ''|...|'      |   |     .|.  .||. |'....|'  .||.


=================================================================
OWASP Joomla! Vulnerability Scanner v0.0.4
(c) Aung Khant, aungkhant]at[yehg.net
YGN Ethical Hacker Group, Myanmar, http://yehg.net/lab
Update by: Web-Center, http://web-center.si (2011)
=================================================================


Vulnerability Entries: 652
Last update: Avgust 12, 2012

Use "update" option to update the database
Use "check" option to check the scanner update
Use "download" option to download the scanner latest version package
Use svn co to update the scanner and the database
svn co https://joomscan.svn.sourceforge.net/svnroot/joomscan joomscan


Target: http://www.xxxxxxxxxxxxxxxxxx.net

Server: Apache/2.2.20 (Unix) mod_ssl/2.2.20 OpenSSL/0.9.7a mod_bwlimited/1.4
X-Powered-By: PHP/5.2.17


## Checking if the target has deployed an Anti-Scanner measure

## WARNING ##

[!] The target responds with 200 for every 404 request
[!] Activating anti-200 Bypass ...  Please wait.


[!] Damn, unable to bypass! The target emits random strings.
[!] I need your help.

[!] Enter strings in common or valid regular expression
    when you see after requesting the two urls:
    http://www.
www.xxxxxxxxxxxxxx.net/a_sdf and http://www.xxxxxxxxxxxxxx.net/hj_kl
    e.g Page Not Found, \d{10,15}

 >>



Después de darnos algunas instrucciones sobre como actualizar el scanner empezamos a ver la información que suministra.


En primer lugar nos indica que el sitio está ejecutándose es un sistema Unix con Apache 2.2.20 y PHP 5.2.17

Con esta información ya podríamos deducir si se trata de un sistema actualizado o no. Sorprende saber la cantidad de hosting que corren con versiones no ya antiguas, si no algunas veces incluso fuera de mantenimiento.

Luego intenta detectar medidas de seguridad. En el último post de esta serie hablaremos de ellas cuando tratemos el tema de fortalecer nuestro sitio web en Joomla!

Vemos como en este caso como recibe un codigo de retorno 200 cuando espera un código de retorno 404 (página no encontrada)

El sitio web analizado (del que soy propietario) tiene instalado un plugin de joomla!   que intercepta la respuesta de página no encontrada y devuelve a la portada. Se trata una medida básica de seguridad y ya volveremos a ello.

La portada no es estática en su totalidad y eso  causa cierta confusión al programa  por eso te pide que le suministres algún valor fijo en tu página para poder seguir.  Lo único que tenemos hacer copia y pegar los dos urls que te en el navegador e indicarle algún valor fijo de la portada.


Y nosotros seguiremos en el próximo post analizado el resultado del scan. 

sábado, 8 de septiembre de 2012

Ayuda a un empresario

No, no es coña.

Algunos pensasarán.... ¿no les ayuda el gobierno lo suficiente? encima va este tío y me pide que les ayude. Pues va en serio, pero no es un empresario europeo si no un empresario de paises pobres y además gente que es tal su pobreza que están fuera de los circuitos tradicionales de créditos.

Entonces, dirán otros, ¿se trata de dar dinero a una ONG?.

Tampoco. Se trata de prestarlo.

Y ya una vez despertada la curiosidad voy a explicarlo mas detalladamente.

Es importante el concepto: tú no “donas” dinero, sino que lo prestas. El receptor te lo va devolviendo según los plazos establecidos (el tiempo del crédito suele ser de entre 3 meses y un año) y luego haces lo que quieras con el dinero: recuperarlo o prestárselo a otro. No es caridad, es apoyar a una persona que está trabajando duro para salir de la pobreza y hacerlo con dignidad.
 
La tasa de créditos incobrados es muy baja. Existe el riesgo, por supuesto, como en todo préstamo, pero en general se trata de gente muy responsable a la hora de cumplir con sus compromisos.

Y.. ¿quien canaliza este dinero?.
 Por medio de una organización sin ánimo de lucro llamada Kiva, esta es su página web

Si te decides a financiar a alguien eres avisado puntualmente de cada devolución y se crea una página web de acceso público con tu historial de préstamos.  Aquí se puede ver la mía  que es bien bonita, al menos a mí me así me lo parece.
Además Kiva te permite regalar una tarjeta con la cantidad de dinero que quieras para que quien reciba el regalo pueda prestarlo a quien mejor le parezca, luego lo recupera y se lo gasta en su regalo. Pero en el camino alguien ha podido salir adelante
 ¿Por qué no te planteas un regalo diferente este año y ayudas a alguien que lo merece y se esfuerza por crear una vida mejor para él y los suyos?

Y... ¿que intereses obtengo?. Pues 0%. No se trata de una inversión de todo capital que dispongas.... ¿Pero una pequeña parte? ¿Porque no una pequeña parte?.

Recuerda,  no siempre preguntes:  ¿Cuanto me dan por mi dinero?, alguna vez debes preguntar: ¿Qué vais a hacer con mi dinero?.  Kiva es una de las respuestas, aunque no la única.





lunes, 3 de septiembre de 2012

Introducción a nmap (y III)

En este artículo, último de esta serie de introducción de nmap, continuaremos analizando la información que hemos obtenido con nmap y veremos que es más importante analizar bien la información que tenemos que llenar un documento con datos y datos sin sacar ninguna conclusión.

Vuelvo a ejecutar el comando nmap para hacer ping a toda la red:

##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-09-03 18:15 ope
Nmap scan report for 192.168.1.1
Host is up (0.015s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.016s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.35 Host is up (0.016s latency).
Nmap scan report for 192.168.1.36
Host is up (0.031s latency).
MAC Address: 30:17:C8:3F:9B:92 (Unknown)
Nmap done: 256 IP addresses (5 hosts up) scanned in 9.08 seconds
##

La salida es aparentemente igual a la de los post anteriores. En esta ocasión vamos  a analizar las MAC Address.

192.168.1.1  -----  50:67:F0:7F:8F:8D (Unknown)
192.168.1.10 ----- 00:30:1B:B0:22:0F (Shuttle)
192.168.1.34 ----- Equipo desde donde ejecutamos el comando nmap
192.168.1.35 ----- 00:0C:6E:D5:39:B7 (Asustek Computer)
192.168.1.36 ----- 30:17:C8:3F:9B:92 (Unknown)

 Y este es el resumen del post anterior

192.168.1.1  -----  50:67:F0:7F:8F:8D (Unknown)
192.168.1.10 ----- 00:30:1B:B0:22:0F (Shuttle)
192.168.1.33 ----- Equipo desde donde ejecutamos el comando nmap
192.168.1.34 ----- 00:0C:6E:D5:39:B7 (Asustek Computer)
192.168.1.36 ----- A4:5C:27:EE:49:6E (Nintendo Co.)




Las dos primeras direcciones coinciden pero a partir de la tercera la cosa cambia, ha desaparecido la dirección 33 (en su lugar aparece la dirección 35) y las MAC de las direcciones 34 y 36 no coinciden.

Un mínimo conocimiento de redes nos dice que lo más estable es la MAC y la dirección IP es menos estable. Lo mejor es que  identificaremos cada puesto por su MAC.

Los valores de la dirección 192.168.1.1 permanecen sin variación lo que es de esperar pues se trata del router.
Igual pasa con el equipo 192.168.1.10 (el equipo que hemos identificado previamente como Linux).

A partir de la dirección 33 vemos que los valores cambian. ¿Que podemos deducir de la siguiente informacion?. Claramente que esos equipos tienen direcciones IP dinámicas.

Recopilemos ahora la información obtenida en estos tres post.

  • Hemos identificado el router.
  • Hemos identificado dos equipos que siempre están encendidos. (Pueden ser servidores)
  • Hemos identificado otros dos equipos que a veces están encendidos  (Pueden ser portátiles u otros dispositivos y posiblemente conectados por wifi).
  • Hemos visto que el equipo Linux (Shutlle) siempre tiene la misma dirección IP (Esto nos confirmaría que se trata de un servidor).
  • Hemos visto que el equipo Windows (Asustek) tiene dirección IP dinámica. (Podríamos descartar que sea un servidor y pensar que se trata de un puesto de sobremesa).
  • La red en la que estamos tiene tanto direcciones estáticas como dinámicas. Siendo las estáticas el rango bajo de las mismas (posiblemente hasta el 32) y las altas dinámicas.
Esta información junto con la obtenida anteriormente nos saca un inventario bastante ajustado de lo que podemos encontrar en una instalación.

Para estos post hemos usado una red muy simple (un router y terminales), si la red hubiera tenido más elementos la cosa no habría sido tan sencilla incluso puede  llegar a ser tarea imposible en redes más complejas y con sistemas de protección.

Espero que para los menos familiarizados con nmap o aquellos que quieran empezar a usarlo les sirva como guía de introducción a esta potente herramienta. 

jueves, 30 de agosto de 2012

Introducción a nMap (II)

 En la anterior entrega vimos como scanear con nMap una red, localizar las IP's de las máquinas y ver que puertos estaban abiertos.
En esta entrega intentaremos  sacar más información  sobre las maquinas identificadas.
Pero antes hagamos una reflexiones.
Un sistema de scan de redes puede tener lugar a lo largo de varios días (o semanas), como es el caso de esta serie de artículos que se irán confeccioando en distintos momentos.
Por eso una buena práctica es guardar todos los resultados de cada sesión pues la redes son dinámicas y los terminales pueden encenderse y apagarse, además de otras consideraciones que iremos analizando en posteriores capítulos.

Nos ponemos en nuestro puesto y ejecutamos nuestro scan de direcciones ip
##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 17:21 ope
Nmap scan report for 192.168.1.1
Host is up (0.031s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.047s latency).
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.33
Host is up.
Nmap scan report for 192.168.1.34
Host is up (0.046s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap scan report for 192.168.1.36
Host is up (0.016s latency).
MAC Address: A4:5C:27:EE:49:6E (Nintendo Co.)
Nmap done: 256 IP addresses (5 hosts up) scanned in 5.63 seconds

 Si lo comparamos con el primer artículo de esta serie vemos que tenemos una máquina activa más. Sin investigar demasiado veo que el quinto puesto parece ser una Nintendo. Esto me da una pista muy importante: Alguien ha encendido la Nintendo sin haber acabado sus deberes del colegio. (En un análisis de redes hemos de aprender a extraer cualquier tipo de información que nos pueda ser útil y no limitarnos a la información técnica.)

Por no diversificarnos sigamos centrados en los dos puestos que teníamos identificados como Linux (192.168.1.10) y Windows(192.168.1.33)

Para obtener una información más detallada vamos a ejecutar nmap con la opción -sV (V de versión).
##nmap -sV 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 17:38 ope
Nmap scan report for 192.168.1.10
Host is up (0.019s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE VERSION
2022/tcp open  ssh     OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Service Info: OS: Linux

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.92 seconds

Una vez más podemos observar cierta falta de concordancia con los datos obtenidos en la anterior prueba, pues solo encontramos abierto el puerto 2022. Y vuelvo a repetir en cada momento ni todas las máquinas de una red están conectadas ni tienen que tener los mismo servicios en ejecución.

Analizando la entrada vemos que en el puerto 2022 tenemos un servidor ssh OpenSSH con versión incluida y todo.
Y, además, confirmamos que tenemos una máquina con Linux, tal y como habiamos deducido en el post anterior.

Repetimos la operación para la máquina que suponemos que es Windows.

##nmap -sV 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 18:26 ope
Nmap scan report for 192.168.1.34
Host is up (0.0067s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE      VERSION
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds Microsoft Windows XP microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Service Info: OS: Windows

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.19 seconds

Obtenemos un poco más de información sobre el puerto 445 y la confirmación de que se trata de un equipo Windows.

El siguiente paso que vamos a realizar es tratar de fijar con el máximo detalle la versión del sistema operativo. Para ello nos olvidamos del scan  (parámetro -s) y usaremos el parámetro -O.
Mientras que la técnica hasta aquí usada era relativamete sencilla el parámetro -O usa una técnica bastante mas compleja basada en la comparación de las huella digital (finger print) del sistema operativo.

El concepto es el siguiente: lanzar contra la maquina una serie de paquetes de protocolo con diversas variantes (una muy importante es un control de los tiempos de inactividad). Estos paquetes se lanzan tanto contra puertos abiertos como cerrados. Las especificaciones del protocolo TCP/IP no llegan a tal nivel de detalle y por lo tanto dejan las respuestas de los sistemas ante tales situaciones abiertas.
Parece lógico pues que cada sistema (incluso cada versión) no responda de manera exactamente igual ante esta prueba.

La información obtenida forma un bloque de información, (finger print), que se compara con las que nMap tiene en una base de datos y nos da el porcentaje de concordancia de la huella obtenida.

Veamos los ejemplos prácticos en nuestros equipos.

##nmap -O 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 19:27 ope
Nmap scan report for 192.168.1.34
Host is up (0.0041s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Device type: general purpose
Running: Microsoft Windows 2000|XP
OS details: Microsoft Windows 2000 SP4, Microsoft Windows XP SP2 or SP3
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.31 seconds

Ya sabemos con más exactitud lo que está corriendo en esa máquina.

Y vayamos a la supuesta máquina linux.

##nmap -O 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-30 19:32 ope
Nmap scan report for 192.168.1.10
Host is up (0.00094s latency).
Not shown: 999 closed ports
PORT     STATE SERVICE
2022/tcp open  down
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.51%D=8/30%OT=2022%CT=1%CU=44288%PV=Y%DS=1%DC=D%G=Y%M=00301B%TM=
OS:503FB1D5%P=i686-pc-windows-windows)SEQ(SP=FE%GCD=1%ISR=106%TI=Z%CI=Z%II=
OS:I%TS=8)SEQ(SP=FE%GCD=1%ISR=106%TI=Z%CI=Z%II=I%TS=9)SEQ(CI=Z%II=I)SEQ(SP=
OS:FE%GCD=1%ISR=106%TI=Z%CI=Z%TS=9)OPS(O1=M5B4ST11NW4%O2=M5B4ST11NW4%O3=M5B
OS:4NNT11NW4%O4=M5B4ST11NW4%O5=M5B4ST11NW4%O6=M5B4ST11)OPS(O1=NNT11%O2=NNT1
OS:1%O3=NNT11%O4=NNT11%O5=NNT11%O6=M5B4ST11)OPS(O1=NNT11%O2=NNT11%O3=NNT11%
OS:O4=NNT11%O5=NNT11%O6=NNT11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W
OS:6=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW4%CC=Y%Q=)ECN(R=Y%DF=Y%T=40%W
OS:=3908%O=%CC=N%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T1(R=Y%DF=Y%T=40
OS:%S=O%A=O%F=AS%RD=0%Q=)T1(R=Y%DF=Y%T=40%S=O%A=O%F=A%RD=0%Q=)T2(R=N)T3(R=Y
OS:%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST11NW4%RD=0%Q=)T3(R=Y%DF=Y%T=40%W
OS:=3890%S=O%A=O%F=AS%O=M5B4ST11NW4%RD=0%Q=)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=O
OS:%F=A%O=NNT11%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%
OS:DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%
OS:O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=4
OS:0%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.05 seconds

Bueno, pues parece en este caso, no solo no hemos ampliado la información si no que parece que ni siquiera podemos estar seguro de que es una máquina Linux.

Saquemos provecho de este inconveniente y veamos lo que podemos aprender, que es de lo que se trata.

Ese bloque de información que nMap no ha sido capaz de cuadrar es la huella digital. Nos invita gentilmente a enviar esta información junto con la identificación del Sistema Operativo al equipo de nMap para aumentar la base de datos.

No vamos  alargar más por hoy el artículo y en el próximo veremos porque no ha sido posible obtener una información más detallada de la máquina 192.168.1.10  e interaremos hacer un resumen de lo hecho hasta ahora.


domingo, 26 de agosto de 2012

Introducción a nMap (I)

Nmap es una herramienta de código abierto que se usa para el mapeo de redes (Network map). Se trata de una de las herramientas más potentes que hay para scanear redes y además al ser de código abierto es gratuitas. Buena y barata.

Existen versiones de Nmap para Linux y Windows que podremos descargarnos desde el sitio oficial.

Lo más duro de esta herramienta es empezar. Tiene tantos parámetros, alguno de los cuales tan parecidos, que para los recien llegados se vuelve todo un poco confuso. A lo largo de este post y los dos siguientes voy a tratar de explicar a través de unos procesos simples un método de trabajo usando algunas de las opciones más básicas de este programa.
Con este método estaremos en condiciones de sacar información de redes sencillas (SOHO - Small office Home office) y nos dejara con los conocimientos necesarios para abordar otros entornos más complejos.

Para ello deberemos disponer de una Red de Área Local con al menos dos equipos. No necesariamente tienen que ser Windows o Linux. Si bien uno de ellos ha de serlo forzosamente para ejecutar nmap el otro puede ser cualquier consola de juegos (Nintendo, Wii, Xbox, ...) que tenga conexion wifi.

No sólo debemos pensar en ordenadores, con las redes wi-fi es normal enganchar consolas de juegos, smartphones, etc.

Cuantos más cacharros tengamos más variedad de resultados tenemos y más podremos aprender.

En estos artículos obviaré ciertos pasos y trabajaré con conceptos que entiendo necesarios para abordar un estudio de este tipo.

Aunque Nmap tiene una interfaz gráfica en estos artículos trabajaremos exclusivamente en la interfaz de comandos (CLI) por lo que  abriremos una ventana de DOS desde la que trabajaremos

Partiremos de una red sencilla:
  • Un router ADSL con wifi
  • 1 Ordenador desde el que ejecutaremos el nmap conectado por cable
  • 2 Ordenadores (1 con Windows y otro con Linux) conectados por cable
  • 2 Consolas (Wii y Nintendo)
  • Direcciones de red:  192.168.1.0/25  (192.168.1.1 - 192.168.1.255)
  • Máscara de red: 255.255.255.0
  • Router por defecto: 192.168.1.1
  • Dirección de Broadcast: 192.168.1.44
Es la configuración normal que traen los router ADSL domésticos.



 Las tareas que vamos a realizar son las siguientes:

Identificar los equipos conectado.
Scanear los puertos abiertos
Identificar que se está ejecutando en cada puerto
Identificar el sistema operativo de cada máquina.

Para identificar los equipos usaremos el siguiente comando: nmap -sP 192.168.1.0/24
El parámetros -s significa scan y va acompañado de otros parámetro que indica que tipo de scan vamos a realizar.
En este caso -sP quiere decir "hazme un scan del tipo ping". Con este comando es como si realizaramos un comando ping contra todos y cada uno de las direcciones permitidas en nuestra red:

##nmap -sP 192.168.1.0/24

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-25 16:41 ope
Nmap scan report for 192.168.1.1
Host is up (0.016s latency).
MAC Address: 50:67:F0:7F:8F:8D (Unknown)
Nmap scan report for 192.168.1.10
Host is up (0.016s latency).
MAC Address: 00:30:1B:B0:22:0F (Shuttle)
Nmap scan report for 192.168.1.33
Host is up.
Nmap scan report for 192.168.1.34
Host is up (0.016s latency).
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)
Nmap done: 256 IP addresses (4 hosts up) scanned in 10.20 seconds
##

Podemos ver que nos ha localizado 4 equipos.

192.168.1.1
192.168.1.10
192.168.1.33
192.168.1.34

El equipo 192.168.1.1 es el router ADSL y por el momento no nos dedicaremos a él.  De los otros equipos uno es el equipo desde donde estamos trabajando y los otros  se corresponden a los dos equipo. (No tenemos encendidas las consolas).

Con el comando ipconfig vemos que estamos trabajando desde la dirección 192.168.1.33 y tampoco vamos centrarnos en él. Nos quedan pues los equipos 192.168.1.10 y 192.168.1.34.

Veremos que podemos obtener de ellos. Siguendo el método lo siguiente será ver que puertos nos presenta.

Esto lo haremos con el parámetros -sS, la opción S dice a nmap que realice un scan de SYN, que es es inicio de toda conexión TCP (three way handsake).

Lanzaremos este scan contra cada una de las máquinas objetivos:

##nmap -sS 192.168.1.10

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-26 09:04 ope
Nmap scan report for 192.168.1.10
Host is up (0.0048s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
2022/tcp open  down
5901/tcp open  vnc-1
6001/tcp open  X11:1
MAC Address: 00:30:1B:B0:22:0F (Shuttle)

Nmap done: 1 IP address (1 host up) scanned in 4.92 seconds

##nmap -sS 192.168.1.34

Starting Nmap 5.51 ( http://nmap.org ) at 2012-08-26 09:05 ope
Nmap scan report for 192.168.1.34
Host is up (0.00s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
139/tcp  open   netbios-ssn
445/tcp  open   microsoft-ds
2869/tcp closed icslap
MAC Address: 00:0C:6E:D5:39:B7 (Asustek Computer)

Nmap done: 1 IP address (1 host up) scanned in 6.26 seconds


Empezamos a ver cosas interesantes. La máquina .10 tiene tres puertos abiertos: 2022, 5901, 6001. Nmap intenta por el número de puerto identificar que servicio está escuchando en cada puerto. Por supuesto que el administrador de cada máquina es muy libre de salirse de los estandares de puertos y ponerlos como quiera por lo que esta información deberemos tomarla con reservas. El servicio X11 (X-Windows)  nos puede hacer pensar que estamos en ante una máquina *NIX con un servidor VNC. El puerto 2022 parace menos común por lo que por el momento no nos sirve de mucho.

En la siguiente máquina tampoco nos es difícil ver que se trata de un equipo Windows con ficheros compartidos.

Esto es todo por ahora. En la próxima entrega intentaremos conocer con más detalle qué está corriendo en cada puerto y que sistema operativo hay en cada máquina con precisión.