Empezando a practicar

Hola todos, hoy vamos a hacer un post un poco diferente. Lo normal suele ser que escriba un post sobre alguna herramienta o similar sobre la que hemos aprendido su uso básico, pero en esta ocasión, lo que os propongo son varios entornos sobre los que probar un poco vuestras habilidades de pentesting de forma legal. Así que como se suele decir, “A andar se aprende andando“, pues vamos allá.

La primera página esta más enfocada a los test de penetración de servidores. La página, o mejor dicho el proyecto provee de imágenes de sistemas montados con determinados servicios levantados y, de forma deliberada, estos sistemas son vulnerables. La idea es encontrar y explotar estas vulnerabilidades. La página del proyecto es Sec-track donde podéis encontrar los entornos:

Personalmente me están gustando mucho. Están ordenados por orden de dificultad, así que os recomiendo empezar por el primero y continuar después con los otros dos. Además, como veréis cuando lleguéis a la página, existe una gran cantidad de material que podéis ojear e investigar.

La segunda recomendación de hoy es un blog que está en mi blogroll, y que además de ser un excelente blog, con unos contenidos muy interesantes, aunque un poco pro-microsoft (maligno, sin mala intención eh), tiene una sección de retos muy interesantes. Están enfocados a la pentesting de webs. Me parecen unos retos excelentes donde poder practicas. La dirección del blog es esta: Un informático en el lado del mal, y los retos los podéis encontrar en el menú de la izquierda, en su parte inferior.

A disfrutar y practicar. Espero que los retos y entorno os gusten tanto como me están gustando a mi y que aprendáis mucho, que la teoría está muy bien, pero siempre es más entretenido practicar. Nos vemos.

Empezando a practicar

Cambiando nuestra MAC

Como la mayoría sabréis, las tarjetas de red tienen asociado un número MAC que las identifica, y que a su vez identifica la máquina en la que está. Sino cambiamos la tarjeta de ordenador claro.

Una de las ventajas de existir este número es que podemos hacer filtrados en nuestra red con su ayuda, ya que nosotros conocemos esos números y el resto de gente a priori no. Por ejemplo, aunque siempre acompañado de otros métodos, podemos restringir la función de nuestro servidor DHCP a la hora de suministrar IP’s. Si no se reconoce la MAC, no se le da IP o, en entornos donde hace falta que las máquinas mantengan una misma IP, se les puede asignar estas en función de su MAC.

Ahora seguro que os estaréis preguntando – y si es tan útil, ¿para que quiero cambiarla? Os voy a proponer un par de ideas y a partir de aquí ya lo dejaré a vuestra imaginación.

Pongamos por ejemplo que un día tenemos que enganchar nuestro portátil a una red donde solamente se dan IP’s a unas MAC concretas. Al enchufar el portátil no obtendríamos IP con lo cual no podríamos conectar. Una forma de poder hacer esto sería asignando al portátil una MAC que no este en uso en ese momento y que sepamos que pertenece a la red.

Otro ejemplo sería, por ejemplo, el tener una máquina para gestionar las reglas de un Firewall, de modo que solo desde esa máquina con una MAC concreta podamos modificar dichas reglas. Ahora bien, esa máquina, por lo que se deja de estar operativa, con lo cual dejaríamos de poder gestionar nuestro Firewall. La solución, sería tan fácil como modificar la MAC de otro máquina para poder administrar desde ella. Para mas ideas como ya he dicho, os lo dejo a vosotros.

Vamos a ello. El primer método que vamos a ver es para hacerlo manualmente y que el resultado dure durante la sesión. Como siempre, yo lo voy a hacer sobre Ubuntu, aunque esto es aplicable a todos los sistemas adaptando el procedimiento al sistema sobre el que queramos realizar el cambio.

¿Cuál es mi MAC? Para averiguarla bastará con ejecutar la instrucción:

# ifconfig

La cual nos mostrará algo como esto:

Link encap:Ethernet  direcciónHW 12:34:56:78:90:AB

La cadena con el siguiente formato es la dirección MAC: xx:xx:xx:xx:xx:xx

Para cambiarla, lo primero que tendremos que hacer es tirar abajo el interfaz de red del cual queremos cambiar la dirección MAC, en nuestro caso “eth0”:

# ifconfig eth0 down

Tras esto asignaremos una nueva dirección MAC a este interfaz:

# ifconfig eth0 hw ether 00:00:00:00:00:00

Y volveremos a levantar nuestro interfaz:

# infonfig eth0 up

Con esto tendremos nuestra dirección MAC cambiada.

Recordemos algo muy importante, las direcciones MAC siguen un sistema de numeración hexadecimal. Ya sabéis de [0 – F]

Pero claro, si queremos que este cambio permanezca en el sistema a pesar de reiniciar o apagar la máquina, tendremos que escribir esto en algún sitio. Y ese sitio es el fichero /etc/init.d/bootmisc.sh.

En el, tras abrirlo, escribiremos en el final de este, las tres instrucciones que hemos ejecutado manualmente antes. De esta forma el cambio será permanente mientras no las borremos del fichero.

Con esto tendremos una dirección MAC a nuestro gusto. Por Internet podéis buscar direcciones de MAC más o menos reales, ya que los primeros números de las tarjetas identifican el vendedor y está información está al alcance de todo el mundo.

Así como apunte rápido y para aquellos que utilizáis máquinas virtuales, no es necesario que hagáis nada de lo anterior, ya que en la configuración de estas, normalmente da la opción de asignar una dirección MAC.

Como siempre, animaros a preguntar y comentar si tenéis alguna duda, o por ejemplo, si se os ocurren más caso para los cuales sería interesante cambiar la dirección MAC. Eso si, legales por favor. Nos vemos.

Cambiando nuestra MAC

Auditando nuestro sistema: Lynis

Hoy vamos a hablar de una herramienta de auditoria para nuestros sistemas Linux o Unix. Antes de empezar a hablar de ella dejar muy claro, que aunque como veremos pasa una gran cantidad de test y comprueba un gran número de cosas, no es una herramienta definitiva, sino, simplemente una pequeña ayuda a completar con otras herramientas quizás más específicas pero, en muchos casos más efectivas, por supuesto sin desmerecerla ni mucho menos.

La herramienta es Lynis, y podéis leer sobre ella en su página. Es una herramienta para auditar nuestro sistema y comprobar la existencia de malware y instalaciones vulnerables principalmente en modo consola.

Para empezar una vez arrancado comprueba el sistema en el que está instalado y busca herramientas instaladas para auditarlas. Realiza un gran número de chequeos entre los que están:

  • Métodos de autenticación disponibles.
  • Certificados SSL expirados.
  • Software desactualizado.
  • Cuentas de usuario sin contraseñas.
  • Permisos de ficheros incorrectos.
  • Audita nuestro firewall.

Son muchos los chequeos que pasan, pero se ven claramente a la hora de lanzar el proceso, así que tampoco tiene demasiado sentido enumerarlos todos aquí.

Pero como la mejor forma de aprender las cosa es haciéndolas vamos a probar. Lo primero es instalarlo en nuestro sistema, para ello, si tenemos los repositorios adecuados bastará con un:

sudo aptitude install lynis

Para ver las diferentes opciones de las que disponemos bastara con ejecutar el comando sin nada más:

sudo lynis

Las opciones más destacables para la prueba inicial son:

–chech-update: La cual simplemente busca actualizaciones sobre los chequeos a pasar.

–check-all (-c): Para que chequee el sistema.

–quick: No necesita intervención del usuario.

Pues nada, vamos a ejecutar:

sudo lynis –check-update

sudo lynis –check-all

Como podéis ver a medida que va ejecutando chequeos os va mostrando los resultado obtenidos y no continua hasta que pulsáis [ENTER], salvo que lo hayáis lanzado con la opción –quick, en cuyo caso no parará hasta terminar. De todas formas no os preocupéis por ver los resultados en este momento, ya que se almacenan en un fichero que luego podremos estudiar con atención. Este fichero es:

/var/log/lynis.log

Si lo abrís comprobaréis que es bastante extenso, y aunque las primeras veces merece la pena ojearlo entero, hay veces que merece la pena buscar la información importante, como por ejemplo con instrucciones del tipo:

sudo cat /var/log/lynis.log | grep Warning

También podéis automatizar el proceso con el cron o cualquier otra posibilidad que se os ocurra. Finalmente, solo hacer hincapié en que no es una solución definitiva, si no solo una ayuda, ya que una de las cosas que le falta es comprobar todas las instalaciones de servidores que tengamos, por ejemplo, no tiene soporte para Tomcat que es un servidor bastante habitual. Ya hablaremos más adelante de detectores de rootkits más específicos y quizás más potentes. Pero de momento, para que juguéis un poco aquí está Lynis.

Espero que os haya servido, como siempre, se aceptan dudas, sugerencias, aportes y demás. Nos vemos.

Auditando nuestro sistema: Lynis

Comprobando contraseñas online: THC Hydra y Medusa

Quien más o quien menos tiene algún tipo de servidor, servicio, proceso, dispositivo o similar accesible desde internet y que está protegido por un usuario y una contraseña. Alguno estará pensando – yo no -, ¿seguro? Mirad a vuestro alrededor. Quizás no tengas servidores montados en tu ordenador pero, probablemente, tienes un router ADSL por ahí cerca al cual se accede mediante una combinación de usuario y contraseña.

Pues bien, hoy vamos a ver un par de herramientas que nos pueden ayudar a probar la fortaleza de estas contraseñas. Se que normalmente en el blog tratamos las herramientas de forma individual, pero como ambas tienen un uso muy similar, y su sintaxis es muy parecida vamos a hacer una revisión de las dos, y que luego cada uno elija la que más se adapte a él. De todas formas al final, del artículo también habrá un enlace a una tabla comparativa entre ambas tanto de usos como de características técnicas.

La primera de estas herramientas es THC Hydra, creada por “The Hackers Choice” que es un grupo de expertos en seguridad. Tenéis aquí su código fuente para descargar y una pequeña documentación. Como ya he comentado es una herramienta para probar nuestras contraseñas online, y soporta una gran cantidad de protocolos: TELNET, HTTP, FTP, POP3, IMAP, …, una larga lista que podréis encontrar en el enlace de documentación que os he dejado antes.

Para instalarla, tenemos dos posibilidades. La primera de ellas sería descargar el código fuente y compilarlo en nuestra máquina.

./configure

make

make install

Si tenemos todas las librerías necesarias instaladas, lo veremos tras ejecutar la primera instrucción, se compilará e instalará sin problemas. Si no, tendremos que instalar previamente las librerías adecuadas, en nuestros repositorios, hasta poder compilar e instalar con normalidad.

La segunda, mucho más fácil si utilizáis Ubuntu y la habéis Backtrakizado, sería instalarla desde los repositorios como hacemos habitualmente.

sudo aptitude install hydra

Con esto tendremos instalada la herramienta THC Hydra. Para comprobarlo, simplemente ejecutaremos el comando “hydra” en nuestro terminal y esto, nos debería mostrar su sintaxis.

La segunda herramienta que vamos a ver es Medusa. Es una herramienta del mismo estilo, aunque soporta menos protocolos por lo que he podido leer. La página donde podéis encontrar el código y la documentación está aquí.

De nuevo, para instalarla, tenéis dos opciones. La de compilar e instalar el código de forma manual como en el caso anterior. O, si habéis Backtrakizado vuestra Ubuntu, bastaría con ejecutar:

sudo aptitude install medusa

Una vez instaladas las dos herramientas vamos a probarlas. Para esto yo voy a lanzar un ataque sobre un router que tengo en casa preparado para estas cosas.

¿Qué necesitamos para la prueba? En primer lugar algo a lo que atacar, en mi caso el router, en el vuestro puede ser lo mismo, o podéis montar algún pequeño servidor ftp o similar. Además, vamos a necesitar uno o dos ficheros de diccionario, que no es más que un fichero con multitud de palabras que se utilizarán de usuario y contraseña. Yo en mi caso, para que la prueba no sea muy larga, me he hecho uno con 50 usuarios y otro con 50 posibles contraseñas. Pero para un uso serio de la herramienta, deberíais tener unos diccionarios mucho más extensos. Para esto, podéis generarlos vosotros, o podéis buscar en Google.

Bueno, manos a la obra. Empezaremos con el THC Hydra. Si habéis ejecutado el comando “hydra” como he dicho antes, tendréis en pantalla la sintaxis de uso de este.

Las más habituales son:

-l: Sirve para indicar un usuario específico.

-L: Sirve para pasar un diccionario con nombres de usuarios.

-p: Sirve para especificar una contraseña en concreto.

-P: Sirve para especificar un diccionario de contraseñas.

-vV: Muestra todas las pruebas realizadas por pantalla.

server: Especificación del objetivo.

service: Especificación del servicio, es decir, FTP, HTTP, …

Pues nada, vamos a probar:

hydra -L usuarios.txt -P passwords.txt 192.168.1.1 http-get http://192.168.1.1/index.html

En mi caso, como estoy probando el router que es una página web, al utilizar el service http-get he tenido que especificar también la página especifica. Si estáis probando con un service ftp bastaría con haber puesto:

hydra -L usuarios.txt -P passwords.txt 192.168.1.2 ftp

Tras la ejecución os volcará algo como esto si habéis obtenido resultado:

[DATA]…

[DATA]…

[STATUS]…

[80][www] host: 192.168.1.1   login: ataque   password: prueba

Hydra (http://www.thc.org) finished …

O como esto si no:

[DATA]…

[DATA]…

[STATUS]…

Hydra (http://www.thc.org) finished …

Como podéis ver ha sido bastante fácil, y claramente se puede leer el informe de resultado. Ya que si ha encontrado algo te lo dice y si no, no dice nada.

Al igual que con el comando hydra, si ejecutamos el comando medusa sin opciones, este nos muestra su sintaxis.Las más básicas son:

-h: Sirve para indicar un host concreto.

-H: Sirve para indicar un fichero de host.

-u y -U: Para lo mismo que en hydra

-p y -P: Para lo mismo que en hydra.

-F: Parará tras encontrar la primera coincidencia.

-O: Fichero donde escribirá los éxitos de las pruebas.

-M: Sirve para especificar el módulo a utilizar. HTTP, TELNET, IMAP, …

Pues nada, vamos a probar de nuevo:

medusa -h 192.168.1.1 -U usuarios.txt -P passwords.txt -O salida.txt -M http

Tras la ejecución obtendréis un listado de las pruebas realizadas y un [SUCCESS] al final de cada prueba que haya tenido éxito. Por si las pruebas eran muy extensas, lo he ejecutado con la opción -O, y en el fichero salida.txt tengo las combinaciones de usuario y contraseña que han tenido éxito.

A partir de aquí, ya utilizad la herramienta que más os guste o se acomode a vuestras necesidades. De todas formas, aquí os dejo la tabla comparativa que os comentaba al inicio del post.

Espero que os haya servido, y como siempre animaos a comentar y compartir experiencias. Nos vemos.

Comprobando contraseñas online: THC Hydra y Medusa

Backtrakizando Ubuntu

A lo largo de la vida del blog hemos ido viendo el funcionamiento de algunas herramientas de seguridad que instalábamos con mucha facilidad a través de nuestro gestor de paquetes. Herramientas como Nmap, Nessus, hping3, etc… Pero llega un punto en el que empezamos a buscar herramientas mucho más especificas y de uso no tan común, y estas no están disponibles en los repositorios.

La primera solución para tenerlas a nuestra disposición sería descargarse el código fuente, compilarlas e instalarlas en nuestros sistemas, lo cual pues no siempre funciona a la primera.

Otra solución fácil es buscar estos paquetes. Alguna vez hemos hablado en el blog de distribuciones de seguridad, una de ellas era Backtrack. La última versión de esta fantástica distribución de seguridad esta basada en Ubuntu, y por lo tanto, la gran cantidad de herramientas que posee compiladas y en forma de paquetes instalable es perfectamente compatible con nuestra distribución de Ubuntu. Así que para disponer de este gran abanico de herramientas vamos a añadir su fuente a nuestros repositorios.

En primer lugar editaremos el fichero /etc/apt/sources.list:

sudo vim /etc/apt/sources.list

En segundo lugar añadiremos la dirección del repositorio de Blacktrack al final de fichero:

deb http://repo.offensive-security.com/dist/bt4 binary/

Cerramos nuestro editor y añadimos las claves para que no nos de ningún error al actualizar:

gpg –keyserver keyserver.ubuntu.com –recv 720DB78AC5717CD1

gpg -armor –export 720DB78AC5717CD1 | sudo apt-key add –

Finalmente actualizamos nuestro gestor de paquetes y, a partir de aquí, contaremos con un montón de nuevas e interesantes herramientas a nuestro alcance.

Si queréis hacer este tipo de experimentos de fundir varias distribuciones en una sola, os recomiendo este par de artículos del blog de Security By Default:

1 – Armándonos para el ataque!! (1 de 2)

2 – Armándonos para el ataque!! (2 de 2)

Bueno, os animo a que lo intentéis y comentéis los resultados. Yo por mi parte, tengo en estos momentos Ubuntu 9.04 ya que no me termina de convencer aún la 9.10 y me dio algunos problemas con la red como ya comenté. Si alguien lo prueba con la 9.10 que comente si todo le ha ido bien. Nos vemos.

Backtrakizando Ubuntu

Recomendación: SQL injection

Hoy, solo os traigo la recomendación de una serie de artículos que están siendo publicados en el blog de “Un informático en el lado del mal“. La serie de artículos se titula “Serielized SQL Injection” y son francamente interesantes. Os recomiendo su lectura a todos aquellos que estéis interesados en estos temas, y a todos los demás por curiosidad. La serie parece ser que va a constar de seis artículos, aunque de momento solo se han publicado cuatro.

Espero que os guste. Nos vemos.

Recomendación: SQL injection

Nessus

Hoy vamos a ver otra de esas herramientas que vienen en nuestra distribución de linux, que podemos instalar fácilmente y que es de una gran utilidad. Vamos a ver la herramienta Nessus que es un escáner de vulnerabilidades. Con Nessus podremos escanear una o más redes y nos proporcionará información sobre que vulnerabilidades pueden ser explotadas en nuestro sistema. La información que nos proporciona es muy útil, ya que no solo nos indica la vulnerabilidad existente, si no que también nos indica como explotarla y como protegernos de ella. El funcionamiento normal de la herramienta será el de realizar un escáner de puertos con Nmap y una posterior batería de exploits tratando de aprovecharse de posibles vulnerabilidades. Como siempre lo mejor es verlo con nuestros propios ojos, así que vamos a ponernos manos a la obra.

El primer paso es instalar lo necesario, en este caso necesitaremos instalar do paquetes diferentes además de sus respectivas dependencias. Los dos paquetes consisten en el cliente de nessus y el servidor, ya que son los dos necesarios para el análisis. Como veces anteriores, si estamos en un sistema como Ubuntu bastará con ejecutar:

sudo aptitude install nessus nessusd

Tras esto necesitaremos realizar unos cuantos pasos de configuración bastante simples para poder empezar a utilizar nuestro escaneador.

El primero de ellos, es añadir un usuario para que utilice Nessus, esta acción la realizaremos con el comando “nessus-adduser“. Si queréis saber que opciones tiene, os recomiendo acudir a su página “man” correspondiente, yo aquí os voy a dar las instrucciones básicas. Lo primero que tendremos que especificar, será un usuario y contraseña y tras esto unas reglas sobre el alcance de recursos de este usuario, es decir, las redes que podrá escanear. Las reglas tendrán el siguiente formato:

accept | deny ip/máscara <- O accept o deny, no los dos.

… <- Se puede especificar todas las que se quiera.

default accept | deny <- Actuación por defecto para reglas no definidas.

Con esto tendremos un usuario perfectamente operativo para trabajar.

El siguiente paso es arrancar el servidor de Nessus (nessusd), para arrancarlo y pasarlo a segundo plano y que no nos moleste utilizaremos el siguiente comando:

sudo nessusd -D

Como recomendación, os aconsejo no arrancarlo salvo que vayáis a usarlo, porque aunque se necesita el usuario y contraseña para usarlo, nunca se sabe.

Tras esto, si arrancamos Nessus y nos vamos a la sección de plugins, que son los tipos de ataques a probar, veremos que no tenemos ninguno. Esto sucede porque para poder utilizarlos necesitamos un código de activación totalmente gratuito y que nos darán aquí con una simple dirección de correo electrónico. El porque de este registro, no lo tengo muy claro, es algo de que de esta forma te bajas los más actuales, y además, ellos si es para uso comercial se sacan algunas pelillas (dinero) con el desarrollo de nuevos scripts de análisis. Lo dicho, entráis en la página, introducís un correo y en pocos segundos tenéis vuestro código.

El siguiente paso es introducir el código en nuestro Nessus, para ello utilizaremos el siguiente comando:

sudo nessus-fetch

Ahora volvemos a arrancar Nessus o lo reiniciamos, si alguno lo tenía abierto para que contemple los cambios.

Una vez abierto Nessus, los configuramos con el host donde esta el servidor (nessusd), el usuario, la contraseña y aquellos plugins que queramos utilizar. Hay varias opciones acerca del escaneo y demás, pero con las que viene por defecto es suficiente para hacer la primera prueba, eso si, como siempre os animo a probar las demás.

Tras esto empezamos el escaneo y a esperar. Debido a la cantidad de vulnerabilidades que prueba Nessus, tendremos que esperar un rato, en mi caso fue poco más de media hora, para obtener los resultados.

Con esto tendremos un buen análisis de vulnerabilidades de nuestras máquinas, aquellas donde esté el servidor arrancado, y sus soluciones.

Bueno, espero que os sirva para ir probando cosas y aprendiendo algo, ya que a partir de aquí podemos empezar a investigar sobre las vulnerabilidades que nos salgan. Como siempre, si alguien tiene algún comentario que se anime a compartirlo. Nos vemos.

PD: Se que últimamente por falta de tiempo posteo mucho menos, pero que sepáis que el blog lo leo todos los días y que si tenéis alguna duda, estoy a vuestra disposición.

Nessus

Distribuciones de seguridad

Últimamente como habréis notado están apareciendo en el blog artículos sobre herramientas utilizadas para análisis de sistemas, ya sean sobre redes, escaneos de puerto, auditorías, seguridad en general. Como espero que esta tendencia siga ya que es un campo que me gusta mucho, hoy os voy a recomendar algunas distribuciones de linux enfocadas a la seguridad y el análisis forense. El motivo de la recomendación es que algunos de vosotros os habéis puesto en contacto conmigo preguntándome sobre está posibilidad, bien porque no queréis instalar tantas herramientas en vuestros sistemas de producción o bien porque queréis poderos llevar estas herramientas fácilmente en el bolsillo sin tener que llevaros el ordenador. Así que, como siempre, para vosotros queridos lectores, aquí tenéis una lista de distribuciones en Live CD enfocadas a todos estos temas.

BlackTrack

La primera de ellas es BackTrack, personalmente es una de las que más me gusta. Esta enfocada a realizar test de penetración en sistemas y trae una gran cantidad de herramientas relacionadas con esto. Además, trae en el propio CD varios manuales de como utilizarla. Aún así, una simple búsqueda en Google nos dará información y tutoriales relacionados con ella como para no dormir durante muchas noches. A día de hoy la versión actual es la 3, pero ya están el la Beta 4, así que supongamos que dentro de nada tendremos nueva versión.

Wifislax

La siguiente de la lista es Wifislax que es una distribución enfocada a la auditoría de redes inalámbricas. También viene en formato Live CD y trae una gran cantidad de herramientas para el análisis y penetración de redes inalámbricas. Además, trae por defecto una gran cantidad de drivers para dar soporte a tarjetas inalámbricas.

DLV

Dam Vulnerable Linux es una distribución plagada de bug’s, errores, agujeros de seguridad y vulnerabilidades. El motivo de todo esto, es que podamos practicar las técnicas que vayamos aprendiendo en un sistema real que posea las vulnerabilidades. Una gran idea, eso si, ni se os ocurra instalarla como un sistema de uso habitual.

Operator

Finalmente, os voy a recomendar una que además de herramientas de seguridad, también trae herramientas para el análisis forense y recuperación de datos. Esta distribución es Operator y también viene en formato Live CD. En este campo de análisis forense, realmente iba a recomendaros FIRE, pero en el momento de escribir este post no consigo acceder a su página, así que como no se si esto es temporal o permanente (esperemos que no) me he decantado por la otra. Para el que quiera probar descargar FIRE más adelante, solo tenéis que entrar en la página del link y el proyecto es el primero, se ve fácilmente.

Por supuesto, existe algunas más entre las que cabría destacar: Knoppix-STD y nUbuntu. Echadles una ojeada si podéis.

Las que os he recomendado son la que he utilizado muchas veces para investigar, las últimas dos simplemente he leido sobre ellas. Bueno, espero que os sirva para prácticar. Nos vemos.

Distribuciones de seguridad

Falsificar paquetes – hping

Hoy vamos a hablar de una herramienta llamada “hping“. Esta herramienta es un generador y analizador de paquetes TCP/IP. ¿Qué significa esto? Básicamente que podemos generar paquetes TCP/IP manipulados para que lleven la información que nosotros queramos. Normalmente es una herramienta que se utiliza para realizar auditorias de seguridad y testear redes y firewalls.

Como siempre para instalarla, al menos en Ubuntu, simplemente con echas mano de los repositorios tendremos suficiente. En este caso instalaremos “hping3” que es la última versión de esta herramienta, así que teclearemos lo siguiente en la consola:

sudo aptitude install hping3

Como siempre, después de instalarlo, iremos a la página del “man” correspondiente para ojear un poco las posibilidades que nos ofrece. Como se puede ver la página correspondiente nos ofrece varias utilidades como son:

  • Probar las reglas de un firewall.
  • Escaneo de puertos avanzado.
  • Probar el rendimiento de una red utilizando diferentes protocolos, tamaños de paquetes, TOS y fragmentación.
  • Descubrir el MTU de un camino.
  • Transferir archivos a través incluso de un firewall con unas reglas muy restrictivas.
  • Realizar un traceroute con diferentes protocolos.
  • Uso como Firewalk.
  • Descubrir un sistema operativo remoto.
  • Realizar auditorias en la pila TCP/IP.
  • Muchos otros.

Supongo que si alguno se ha leído el post anterior sobre NMap, se habrá percatado de que también realiza algunas de estas funciones, lo cual es lógico, ya que NMap es una implementación de todas estas funciones reunidas. Es por así decirlo, como una capa por encima. Pero, la ventaja que nos da bajar al escalón inferior es que hay cosas que podemos hacer con “hping” que no podemos hacer con NMap. A partir de aquí, voy a comentar como hacer varias cosas interesantes con “hping” y veremos como nos sorprende.

El primer uso que le podemos dar es como herramienta “ping“, con alguna pequeña diferencia sobre la información que nos brinda:

ping -c 1 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.631 ms
— 192.168.1.1 ping statistics —
1 packets transmitted, 1 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.594 ms

sudo hping3 -c 1 192.168.1.1

HPING 192.168.1.1 (eth0 192.168.1.1): NO FLAGS are set, 40 headers + 0 data bytes
len=46 ip=192.168.1.1 ttl=255 DF id=0 sport=0 flags=RA seq=0 win=0 rtt=0.6 ms
– 192.168.1.1 hping statistic –
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.5 ms

Como podéis ver la información es casi la misma, pero si nos fijamos, el “hping” nos devuelve un dato más que es el de “flags” que aunque ahora no sabemos a que corresponde lo vamos a ver más adelante.

El segundo uso que le vamos a dar es como escaner de puertos, es decir, imitando a NMap, y para esto es para lo que nos va a servir el campo “flags” comentado antes. Me temo que aquí para entender este apartado, se necesitan unos pequeños conocimientos sobre el funcionamiento del protocolo TCP. A grandes rasgos para el que no los tenga, solo decir que, TCP es un protocolo para comunicar dos o más máquinas. Es un protocolo orientado a conexión en el que los ordenadores se intercambian mensajes para saber el estado de cada uno y iniciar un intercambio de datos. (A groso modo, no os metáis mucho conmigo aquellos que lo conozcáis.)

Bien, pues algunos posibles mensajes que se intercambian pueden ser, están sacados de la RFC0793 que la tenéis aquí en español:

  • URG:  Hace significativo el campo “Puntero urgente
  • ACK:  Hace significativo el campo “Número de acuse de recibo
  • PSH:  Función de “Entregar datos inmediatamente” (‘push’)
  • RST:  Reiniciar (‘Reset’) la conexión
  • SYN:  Sincronizar (‘Synchronize’) los números de secuencia
  • FIN:  Últimos datos del emisor

Pues nada vamos a escanear. Es caso más trivial sería comprobar si un puerto esta abierto:

sudo hping3 -S 127.0.0.1 -p 80

HPING 127.0.0.1 (lo 127.0.0.1): S set, 40 headers + 0 data bytes
len=44 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=32792 rtt=0.2 ms

Como podéis ver si tenemos un servidor web lanzado, como es el caso, el valor de “flags” es “SA” lo que significa que ha respondido con un “SYS/ACK” que significa que esta abierto. Si paráramos el servidor veríamos lo siguiente tras ejecutar la misma instrucción:

len=40 ip=127.0.0.1 ttl=64 DF id=0 sport=80 flags=RA seq=0 win=0 rtt=0.1 ms

Aquí el valor de “flags” es “RA“, que es el “RST/ACK” lo que significa que esta cerrado.

Os voy a poner otro ejemplo más que será para escanear un rango de puertos, pero para más tipos os recomiendo que os arremanguéis un poquito y probéis, porque “hping” os ofrece un gran abanico de posibilidades. Sobre todo, aquellos que tengáis unas pequeñas nociones sobre TCP os recomiendo que probéis poniendo vosotros las banderas de los paquetes, es decir, “SYS“, “FIN” o “ACK” para ver como responden vuestros puertos y vuestros firewalls. Ya veréis como es una ventaja poder cambiar esto a vuestro antojo. Ahora, el ejemplo de escaneo de un rango de puertos.

sudo hping3 –scan ‘1-100’ 127.0.0.1

El tercer uso que le podemos dar a “hping” es emplearlo como el comando “traceroute“. que para el que no lo lo sepa, básicamente lo que hace es ver el camino que recorre un paquete desde un origen a un fin, enviando paquetes consecutivos incrementando su TTL o tiempo de vida. Evidentemente, esto es mucho más fácil hacerlo con el comando “traceroute” que con “hping“, ya que esta automatizado y nosotros lo vamos a tener que realizar a mano, pero de nuevo el esfuerzo queda compensado por la posibilidad de asignar las banderas (“flags“) a nuestra elección.

Existen dos formas de realizar esto, con el parámetro “-t” donde especificamos nosotros el valor de TTL que deseamos, o con el parámetro “-z” que que hace que cada vez que pulsemos la combinación de teclas “Ctrl+z” se incremente el TTL. Un ejemplo para realizar las dos ejecuciones sería el siguiente:

sudo hping3 -t 1 192.168.1.3

sudo hping3 -z 192.168.1.3

Y por último, pero no menos importante, enviar paquetes. Alguno pensara, pues vaya, eso se puede hacer con muchos programas. Bien, subamos unas lineas y recordemos como empezaba el post, “…podemos generar paquetes TCP/IP manipulados…“. Hasta ahora hemos manipulado las banderas de estos paquetes, podíamos haber manipulado sus tamaños, pero una de las cosas mas destacables, es que podemos manipular sus ip’s y los puertos de las conexiones, lo cual es muy interesante para falsificar tráfico en la red. Es decir, podemos enviar paquetes a una red donde la dirección de origen no sea la de nuestro ordenador.

Voy a mostraros un ejemplo. Vamos a generar tráfico en la red desde un ordenados con IP = 192.168.1.65, este ordenados no existe realmente, pero vamos a probar. Para comprobar esto, como lo voy a hacer en mi ordenado voy a arrancar el “Wireshark” para capturar paquetes y ver el resultado. También el que quiera puede usar “tcpdump“, el que os sea mas cómodo. Para hacerlo, el interfaz de captura será el de “loopback” o “lo“. Ejecutaremos lo siguiente:

sudo hping3 -a 192.168.1.65 -t 123 -s 100 -p 80 127.0.0.1

-a: Dirección origen.

-t: Valor del TTL.

-s: Puerto origen.

-p: Puerto destino.

<host>: Dirección de destino.

Paquetes falseados
Paquetes falseados

Como se puede ver en la imagen, los paquetes generados no llevan la dirección IP de mi ordenador, que es 192.168.1.2, si no que llevan la que le hemos puesto en “hping“. Ni que decir tiene, que si hacéis esto y analizáis los paquetes más a fondo en el Wiresark, veréis que todas las direcciones MAC están a cero, pero no todos los log’s registran las MAC’s.

Bueno, hasta aquí hemos llegado hoy. Si tenési dudas o comentarios o más ideas interesantes sobre como utilizar la herramienta os animo a comentarlo. Nos vemos.

Falsificar paquetes – hping

Creando logs de conexiones – Ippl

Hace un mes más o menos os hable de NMap, un escaner de puertos con el cual podíamos comprobar aquellos puertos que teníamos abiertos en nuestras máquinas. Si alguno lo probó, comprobaría que aunque tuviera casi todo cerrado, como debería ser, algunos puertos estaban abiertos, además, si tenía algún servicio corriendo para su uso personal, estos también estarían abiertos. Con NMap sabíamos hasta aquí.

Hoy os traigo una herramienta para conocer más cosas del exterior, es decir, de los que se intentan conectar a nosotros o escanear nuestro ordenador o servidor en busca de una posible entrada. La herramienta se llama “IPPL“, y es una herramienta que crea logs que luego podemos consultar de los intentos de conexión a nuestro ordenador. ¿Por qué puede esto ser interesante? Si tenemos servicios abiertos, por ejemplo, sabremos quien esta intentando conectar con ellos, si nos han realizado un escaneo de puertos y registraremos cualquier intento de conexión. Evidentemente, no hay ni punto de comparación entre las conexiones a un ordenador de escritorio y un servidor, pero para practicar un poco nos servirá uno de escritorio.

Lo primero es hacernos con el programa. Como siempre, yo me remito a Ubuntu, donde el “ippl” forma parte de los repositorios. Así que con una simple instrucción podemos instalarlo:

sudo aptitude install ippl

Tras esto, “ippl” estará instalado en nuestro sistema y solo tendremos que configurarlo a nuestro gusto.

El “ippl” tres opciones básicas:

-h: Muestra la ayuda.

-n: Ejecuta como no demonio.

-c: Para indicar el fichero de configuración.

Ippl” ya trae una configuración por defecto. El fichero de configuración se encuentra en “/etc/ippl.conf“. Personalmente, prefiero hacerme diferentes ficheros de configuración en vez de modificar el por defecto, de este modo con el parámetro “-c” de “ippl” puedo realizar logs a la medida, aunque evidentemente también se puede realizar uno muy grande en el que estén todas las conexiones y filtrarlos con otras herramientas como “grep” o “tail” o, una tercera opción, establecer filtrados en el fichero de configuración del “ippl“, eso a gusto de cada uno. Para pasarle nuestro propio fichero de configuración a “ippl” al ejecutarlo utilizaríamos la siguiente instrucción:

sudo ippl -c fichero.conf

Ahora vamos a ver un poco el fichero de configuración. Como ya he comentado viene uno por defecto en el que esta escrito casi todo lo necesario, pero en muchos casos comentado. Así que para realizar modificaciones, en muchos de los casos, bastará con descomentar o comentar aquellas lineas que nos sean útiles. Yo me voy a centrar en los puntos más importantes para no aburrir y aquel que este más interesado puede jugar un poco con el fichero de configuración.

La primera sección de la que voy a hablar es la de “Protocols logged“. Aquí señalaremos los protocolos de los que queramos que quede registro. Se nos quedará una linea de la siguiente manera:

run icmp tcp

Creo que es obvio que de este modo quedaría registro de conexiones con paquetes tipo “icmp” y “tcp“, pero no “udp” por ejemplo. Existen cuatro valores posibles para los protocolos, “tcp“, “icmp“, “udp” y “all“. Los tres primeros se corresponden con el nombre y el últimos los engloba a todos.

La siguiente sección que vamos a ver es la de “Log in a file“. Si vamos a utilizar “ippl” en un ordenador con mucho volumen de tráfico es mucho mejor que el log se cree en un fichero y no saliendo por la consola simplemente, sobretodo de cara a analizarlo posteriormente. Para esto bastará con tener descomentada la linea siguiente para indicarle el destino:

log-in all /directorio/fichero.log

Una gran ventaja, es que se pueden clasificar los logs en distintos ficheros, es decir, si estamos capturando varios tipos de protocolos, podemos hacer que cada uno se almacene en un fichero. Por poner un ejemplo con “tcp” y “udp” esto quedaría algo así:

log-in udp /directorio/udp.log

log-in tcp /directorio/tcp.log

Obviamente esto es una gran ventaja a la hora de clasificar y analizar el tráfico. Otra sección que nos ayudará a esto es la de “Logging format“. En esta sección especificaremos el tipo de detalle que tendrá el log. Existen tres tipos:

short: Fecha, hora, protocolo, IP entrante.

normal: Fecha, hora, protocolo, puerto, IP entrante. Esta es la forma por defecto.

detailed: Lo mismo que normal, pero muestra origen y destino de las conexiones y sus puertos.

El modo de poner esto en el fichero de configuración sería:

logformat detailed all

Existen varias opciones más para retocar y especificar más el tipo de tráfico del que queremos dejar constancia, pero no tiene mucho sentido entrar aquí más en detalle. Así que os remito al fichero de configuración por defecto para verlas. Y por supuesto, si tenéis alguna duda podéis preguntar en los comentarios.

Otro detalle más sobre “ippl” es que lo podemos usar como una aplicación normal y corriente o como demonio. La forma más cómoda, obviamente, es como demonio, pero para la pequeña prueba que os voy mostrar a continuación yo lo voy a utilizar como aplicación por practicidad a la hora de pegar los resultados aquí, ya que en este modo saca los resultados por pantalla.

Bueno, empecemos con un pequeña prueba. En ella voy a seguir los siguientes pasos, realizar una conexión al puerto 80, realizar una conexión ftp, realizar un conexión telnet y realizar un escaneado de puertos con NMap.

Las instrucciones que he ejecutado son las siguientes:

sudo ippl -n

links 127.0.0.1
ftp 127.0.0.1
telnet 127.0.0.1
nmap 127.0.0.1

Y el resultado obtenido, excluyendo la gran mayoría del “nmap” por extensión es el siguiente:

Jan 22 13:34:47 IP Protocols Logger: started.
Jan 22 13:35:15 www connection attempt from 127.0.0.1
Jan 22 13:35:29 ftp connection attempt from 127.0.0.1
Jan 22 13:36:00 telnet connection attempt from unknown@localhost [127.0.0.1]
Jan 22 13:36:00 auth connection attempt from 127.0.0.1
Jan 22 13:36:00 last message repeated 1 time(s)
Jan 22 13:36:20 www connection attempt from 127.0.0.1
Jan 22 13:36:20 ssh connection attempt from 127.0.0.1
Jan 22 13:36:20 domain connection attempt from 127.0.0.1
Jan 22 13:36:20 www connection attempt from 127.0.0.1
Jan 22 13:36:20 port 3389 connection attempt from 127.0.0.1
Jan 22 13:36:20 ldaps connection attempt from 127.0.0.1

Como se puede ver son fácilmente reconocibles todas las actividades que he realizado.

La única pega que le he encontrado, que por otra parte es normal, es que el escaneo de “nmap” en modo silencioso no deja ningún registro, pero era de esperar.

Bueno, ya sabéis si tenéis alguna duda preguntad .Espero que os sirva aunque solo sea para entreteneros un rato. Nos vemos.

Creando logs de conexiones – Ippl