Archive

Posts Tagged ‘técnicas hacking’

Entrevista a David Marugán (@RadioHacking)

abril 13, 2016 Deja un comentario

David Marugán (@RadioHacking) es una persona que resalta por sus amplios conocimientos en radiofrecuencias y trayectoria en dicho campo. Ha sido ponente en eventos de seguridad informática, es uno de los colaboradores del programa de televisión “Mundo Hacker” y ha colaborado en la redacción de los libros “HACKING PRÁCTICO DE REDES WIFI Y RADIOFRECUENCIA” y “HACKING CON INGENIERÍA SOCIAL. TÉCNICAS PARA HACKEAR HUMANOS” ambos publicados por la editorial RA-MA.
Aquellos que le conocéis seguramente habréis podido notar que se trata de una persona sencilla y amable, uno de los mayores expertos en su área que conozco, con una personalidad carismática que explica y comparte sus conocimientos a todo el que quiera aprender. En esta entrada he querido hacer una pequeña entrevista a David para que nos cuente un poco sus motivaciones y su perspectiva sobre el apasionante mundo de las radiofrecuencias.

Adastra:
Tengo entendido que llevas muchos años como radioaficionado, ¿cómo ha surgido tu interés por el mundo de las radiofrecuencias?

David:
Cuando era niño, con unos nueve años, me di cuenta por casualidad que haciendo una pequeña modificación en un radiocasette Sanyo escuchaba “algo” extraño al comienzo del díal de la radio, algo que no tenía nada que ver con la FM comercial, después de un tiempo escuchando me percaté de que era la policía de Madrid. Aquello me fascinó y comencé a observar cómo eran las emisoras y antenas de la policía, taxis, ambulancias, camiones, etc. hasta que averigué que existían unas emisoras de radioaficionado que permitían incluso hablar con otros paises.”Engañé” a mi padre para que me comprara un equipo de segunda mano muy básico con una antena de coche instalada en la barandilla de la terraza. Al poco tiempo hacía contactos internacionales a veces repitiendo frases en inglés que escuchaba a otros “de oído” sin saber muy bien que querían decir. Han pasado 30 años de aquello y me fascina igual que antes, apenas sé nada todavía.

Adastra:
¿Cómo consigues mantener la motivación y el interés por lo que haces? ¿consideras que hay algún “truco” especial, tienes algún consejo para las personas interesadas en convertise en radioaficionados?

David:
Mi consejo es que comiencen desde lo más básico. Conozco personas capaces de decodificar radio digital TETRA y no sabrían sintonizar una simple emisora de Onda Corta con un receptor analógico. Aunque obviamente hay ciertas emisiones digitales muy interesantes (y cada vez más), es importante comenzar comprendiendo lo más básico, saber cómo funcionan las cosas para poder sacar a la radio todo el provecho posible y no estar luego perdido y quizás perder la motivación. Animo a las personas interesadas a que pregunten a radioaficionados con cierta experiencia que estarán encantados de ayudarles con los primeros pasos y por supuesto a buscar información en Internet, algo que muchos no tuvimos y que supone una gran ventaja en esta época. Luego el límite lo pones tú.

Adastra:
En tu experiencia, ¿qué dispositivos y herramientas recomendarías a una persona que quiere adentrarse en el complejo mundo del radiohacking?

David:
Siempre recomendaría comenzar con algún equipo analógico, por ejemplo un receptor no muy avanzado, buscar en internet frecuencias que puedan interesarnos y sobre todo “escuchar” mucho para ir aprendiendo. Una buena forma es usar un receptor como el SDR on-line de la Universidad de Twente que cubre toda la Onda Corta sin gastarnos nada de momento y así ver qué nos interesa en realidad. Por supuesto es imprescindible un SDR low-cost para poder monitorizar frecuencias más altas y comenzar a ver señales en nuestro ordenador de forma muy asequible. Después, si la experiencia nos ha gustado, cosa muy probable, vendrán otro tipo de dispositivos SDR más avanzados, software de análisis de señales, analizadores de espectro, antenas específicas, etc. Hay magníficos tutoriales, libros y foros para comenzar en esto de forma muy sencilla.

Adastra:
Actualmente cuando se habla de “delitos informáticos”, casi siempre se hace alusión a ciberdelincuentes que actúan en Internet. ¿Crees que las radiofrecuencias en los tiempos que corren pueden ser aprovechadas por los delincuentes para realizar actividades ilegales? ¿De qué forma lo harían?

David:
En ocasiones digo que solemos mirar siempre hacia Internet y que quizás se está dejando de lado un terreno enorme y complejo como la radio, que además está presente en todo tipo de comunicaciones críticas de nuestra vida diaria. Por poner un ejemplo que se comprenda, imaginemos una empresa de seguridad que custodia una infraestructura crítica. Es posible que cuide su seguridad informática y siga todas las recomendaciones al respecto, haga auditorias y use medidas de seguridad típicas en sus redes, y que por otro lado los agentes que vigilan estas instalaciones estén usando una red de radio digital sin cifrado, dando información muy importante de sus procedimientos de trabajo y movimientos en el terreno. Esto es más común de lo que parece e incluso ocurre en ciertos cuerpos policiales que además transmiten información muy sensible sobre personas, vehículos, etc. ¿Por qué este desequilibrio cuando hablamos de seguridad? En los tiempos que corren, con las amenazas a las que nos enfrentamos cada día, esto debería corregirse por las autoridades competentes sin más dilación.
Otro caso sería la posible utilización de comunicaciones radio en el ámbito de la delincuencia o el terrorismo. Por ejemplo el DAESH utiliza equipos de alta gama de la marca Hytera y transmiten en DMR cifrado para evitar las técnicas COMINT por parte de sus enemigos, ellos sí se cuidan mucho de la seguridad en sus comunicaciones. Todavía hoy servicios de inteligencia de todo el mundo usan las denominadas Estaciones de Números para mandar comunicados cifrados con el método OTP a sus agentes a miles de kilómetros. Existen métodos de comunicación radio de muy difícil control, que no pasan por ninguna pasarela de terceros, como sí ocurre en Internet o GSM y que con medios asequibles podrían mantener comunicaciones a larga distancia de forma cifrada ¿Si el sistema de las estaciones de números se aplicara para comunicaciones entre células terroristas? ¿cuánto tiempo tardaríamos en detectarlas? ¿seríamos realmente capaces de hacerlo? En el próximo Mundo Hacker Day hablaré, entre otras cosas, sobre la relación de las comunicaciones radio y el mundo del crimen organizado. Aprovecho para llamar la atención sobre el hecho de que no solo hemos de mirar a Internet o a las comunicaciones móviles cuando buscamos canales de comunicación ocultos. A lo mejor debemos mirar un poco más hacia “arriba”.

Adastra:
Me has contado que sueles hacer “excursiones” sobre el espectro radioeléctrico y que en ocasiones te has encontrado con cosas extrañas las cuales suelen ser comentadas entre radioaficionados. En tu experiencia, ¿cuáles han sido las cosas más extrañas/curiosas que te has encontrado?

David:
El espectro radioeléctrico es enorme: emisiones militares, radares OTH, señales no identificadas o de tipo “propietario”, emisiones clandestinas, estaciones de números, jammers que sabotean otras emisiones por motivos de censura, etc, etc. Suelo decir como analogía que el espectro radioeléctrico es un ecosistema con una fauna y flora realmente diversa, y a veces muy extraña. Lo más curioso que me he encontrado es el caso que ahora estoy siguiendo sobre el uso ilegal de un satélite militar norteamericano para mandar fotos “familiares” a medio mundo.
La que quizás más me ha impactado a nivel personal, hace ya más de veinte años, tiene que ver con un conflicto armado brutal y todavía hoy me emociona recordar el contenido de las emisiones. No puedo dar muchos más detalles por respeto a las personas implicadas, pero es muy posible que después de éstas emisiones fallecieran, y además sé que lo hicieron para proteger a otras personas indefensas; incluso pude escuchar de forma lejana el tableteo las ametralladoras y después de los comunicados un largo silencio. Fue realmente estremecedor.

Adastra:
En uno de tus articulos para SecurityArtWork titulado “Creepy images“, has mencionado que las imágenes transmitidas por radio pueden contener mensajes ocultos utilizando técnicas de esteganografía. ¿Has encontrado algo al respecto en esas imágenes?

David:
Yo no he sido capaz de encontrar nada, pero el concepto de estego en radio es muy diferente al informático debido a la forma de transmitir información y aunque podría ocurrir, no creo que estemos en ese caso. En este tema lo que más curiosidad me despierta es saber el motivo que lleva a alguien a mandar estas imágenes ilegalmente por un satélite militar, los detalles técnicos del procedimiento usado para transmitir en realidad están muy claros, localizar la emisión es bastante más complicado, aquí no existen IPs o “huellas digitales” de ningún tipo.

Adastra:
Para ser un radioaficionado, tengo entendido que es necesario obtener una autorización, la cual se consigue presentando un examen y una vez aprobado, te entregan tu carnet. ¿Cómo es dicho examen? ¿es completamente teórico o incluye también una parte practica? ¿Hay puntuaciones?

David:
Hace años eran más complicados, teniendo incluso en algunos casos pruebas prácticas de código Morse y diferentes tipos de licencia según la banda de frecuencias a usar. Hoy se han simplificado en una autorización única que nos abre todo un mundo para experimentar en radio. Se trata de un examen teórico que se compone de dos pruebas: la primera, conocimientos de electricidad y radio, la segunda trata sobre conocimientos normativos. El número de preguntas de cada prueba es de 30, se realizan en el mismo día y para superar cada una de ellas basta con tener 15 correctas. La duración máxima del examen es de 90 minutos. Se trata de una prueba sencilla si se estudia y realizan los test de práctica. Yo recomiendo informarse en la web de la U.R.E, la Unión de Radioaficionados Españoles, donde se puede encontrar todo el material necesario e información sobre los trámites para solicitar el examen y después la autorización.

Adastra:
¿Es obligatorio tener un carnet de radioaficionado para realizar pruebas en tu casa, por ejemplo?

David:
Es obligatorio tener autorización y un indicativo legal único para poder transmitir en bandas que requieren de esta autorización. Para recibir no es necesario tener una licencia, tampoco es necesario para bandas libres o no licenciadas, cumpliendo ciertos requisitos a la hora de transmitir. Pero yo recomiendo, por las posibilidades que nos brinda, realizar el esfuerzo y sacar la autorización a través del examen, merece mucho la pena. No tener esta autorización nos reduce muchísimo nuestro campo de investigación.

Adastra:
Desde el desconocimiento y vaya por delante mi ignorancia sobre estás cuestiones, ¿existe alguna forma de “mezclar” el mundo de redes como Internet con la información que puede existir en el espectro radioeléctrico? ¿es posible implementar una especie de “puente” que permita el intercambio de información?

David:
Claro que sí, de hecho hoy los radioaficionados usamos terminales analógicos y software específico para usar sistemas de voz sobre IP como el denominado Echolink, que permite que a través de un pequeño terminal portátil o walkie de muy bajo coste podamos conversar con personas incluso en el otro lado del mundo, o por ejemplo el sistema digital de radio denominado DMR, un sistema de mayor complejidad y prestaciones superiores, que haciendo una analogía muy facilona, tiene ciertas similitudes con el GSM pero sin pasar por un operador y sin usar cifrado (no porque no se pueda, sino porque está prohibido usar cifrado por parte de radioaficionados, ya que se supone que uno de sus fines es el de la experimentación y divulgación). Fíjate Daniel, tú que eres todo un referente cuando se habla de la Deepweb, que hasta existe un Internet exclusivo para radioaficionados con autorización a nivel mundial. El bloque de direcciones IP 44.0.0.0/8 está reservado desde los 80 para radioaficionados. Invito a los lectores a que busquen información sobre AMPRNET (Amateur Packet Radio Network) y sus posibilidades actuales, seguro que les sorprenderá si no la conocen. Hoy radio e Internet están totalmente relacionados.

Adastra:
En tu opinión ¿Qué relación existe entre el mundo del hacking y la radio?

David:
El hacking y la radio han estado siempre unidos de forma muy estrecha, de hecho se dice que la primeras comunidades de base tecnológica para compartir conocimientos y mejorar los sistemas fue la de los radioaficionados. Recordemos que ya Marconi en 1901 fue víctima de un troleo o ataque en una demo de Morse para demostrarle que su sistema no era tan seguro como presumía. Quizás ahí comenzó la historia del hacking. Después, muchas personas relacionadas con el hacking han sido radioaficionados, por poner un ejemplo citaremos a Clifford Stoll, el autor del famoso libro “El huevo del cuco”, que es radioaficionado y usa el indicativo K7TA. A día de hoy famosos hackers que todos conocemos investigan sobre seguridad en radio, SDR, etc. y cada vez se ve más en las conferencias de seguridad, parece que ahora la radio se ha vuelto a poner de moda gracias a los SDR low-cost… ¡Yo encantado!
Otra importante función de la radio y los radioaficionados es la evasión de sistemas de censura, como por ejemplo en el contexto de la denominada Primavera Árabe, donde muchos radioaficionados se pusieron al servicio de la libertad de expresión y ayudaron a sacar las noticias de ciertos países donde Internet había sido “cortado” en su totalidad por parte del gobierno y sus operadores de telecomunicaciones. Algunos medios de prensa occidentales fueron informados a través de estos radioaficionados de lo que ocurría en las revueltas. Aunque no soy nada conspiranoico, por desgracia muchos gobiernos están cerrando sus emisoras de Onda Corta, y se tiende a que toda comunicación considerada “moderna” pase por un “canuto” muy controlado: Internet, GSM, redes sociales, etc. ¿Existen gobiernos a los que la radio les resulta incómoda? Desde luego que sí, e invierten mucho en sabotear algunas emisiones. Para mi la radio siempre ha sido sinónimo de libertad, experimentación y conocimiento compartido.

Ha sido un placer poder entrevistar a David y conocer un poco más en profundidad el interesante mundo del radio y sus aplicaciones practicas. Os invito a seguirle en su cuenta de twitter @RadioHacking y comprar sus libros, los cuales se encuentran disponibles en la web de RA-MA.
Finalmente, desde aquí expreso mi respeto y agradecimiento a David no solamente por los conocimientos que dispone, sino también por su actitud a la hora de compartir lo que sabe y estar dispuesto a colaborar con las personas que tienen menos conocimientos y experiencia que él.
Espero que os haya gustado la entrevista y que os “pique” un poco la curiosidad por aprender sobre estos temas.

Un saludo y happy hack!
Adastra.

Retransmisión de trafico con TCPReplay

julio 2, 2015 Deja un comentario

Tcpreplay es una suite de herramientas para el análisis y manipulación de paquetes de datos, muy utilizada principalmente por administradores de sistemas y redes. Las herramientas incluidas en Tcpreplay funcionan principalmente sobre ficheros PCAP que han sido generados previamente por herramientas como tcpdump, wireshark, ethereal, etc. Permiten modificar las cabeceras de los paquetes en varias de sus capas para posteriormente reinyectarlos en la red o también para clasificar y tipificar los paquetes de datos incluidos en los ficheros PCAP. Dicho esto, el principal objetivo de TCPReplay es permitir la modificación de paquetes de datos para probar el funcionamiento de routers, firewalls, IDS/IPS y similares, no obstante es importante tener en cuenta que no funciona adecuadamente contra servidores concretos de cualquier tipo, ya que es un “stateless dispacher”, lo que quiere decir que se encarga de gestionar la posible comunicación que puede existir entre un cliente y un servidor. TCPReplay no soporta flujos de comunicación o el modelo clásico de múltiples peticiones y respuestas, solamente se encarga de replicar los paquetes de datos contenidos en un PCAP. En este articulo os hablaré de esta herramienta, pero seguramente para muchos de vosotros sea más interesante una herramienta que permita hacer labores de fuzzing contra servicios concretos simplemente alterando y reinyectado los paquetes contenidos en un PCAP, para esto también hay varias utilidades y librerías de las que hablaré en el próximo post.
Para empezar, hay que tener en cuenta que hay una versión bastante antigua de la herramienta y que fue inicialmente desarrollada por Aaron Turner (http://tcpreplay.synfin.net/) pero desde hace un tiempo, el equipo de Appneta a tomado el control y ahora todas las mejoras se suben directamente a su repositorio Git. La herramienta se puede instalar directamente desde el código, el cual se encuentra ubicado en el siguiente repositorio: https://github.com/appneta/tcpreplay o en sistemas basados en Debian con APT-GET (instala una versión antigua).

>./configure –prefix=/opt/tcpreplay
>make
>sudo make install

>cd bin

>ls -l

total 2916

-rwxr-xr-x 1 adastra adastra 516147 jun 11 00:33 tcpbridge

-rwxr-xr-x 1 adastra adastra 120661 jun 11 00:33 tcpcapinfo

-rwxr-xr-x 1 adastra adastra 404802 jun 11 00:33 tcpliveplay

-rwxr-xr-x 1 adastra adastra 433456 jun 11 00:33 tcpprep

-rwxr-xr-x 1 adastra adastra 444838 jun 11 00:33 tcpreplay

-rwxr-xr-x 1 adastra adastra 553339 jun 11 00:33 tcpreplay-edit

-rwxr-xr-x 1 adastra adastra 496851 jun 11 00:33 tcprewrite

Una vez instalado, se puede ver la versión del programa y las características soportadas.

>./tcpreplay -V

Ahora es el momento de utilizar la herramienta y jugar un poco con los interruptores que soporta. Antes de continuar, es necesario contar con un fichero PCAP que será utilizado por la herramienta para replicar los paquetes de datos que se encuentran almacenados en dicho fichero. Para realizar pruebas simples, se pueden capturar paquetes con TCPDump, Wireshark o Scapy y guardarlos en un PCAP o también es posible descargar alguno de los ficheros de ejemplo que se encuentran subidos en el proyecto. http://tcpreplay.appneta.com/wiki/captures.html

Para efectos prácticos, se utilizarán los ficheros PCAP del proyecto, los cuales se pueden abrir con una herramienta como wireshark

tcpreplay

PCAP de “BigFlows”

Partiendo de este fichero, se puede utilizar la herramienta e indicar la interfaz de red que será utilizada para el envío de los paquetes.

>sudo ./tcpreplay -i eth0 -t /home/adastra/Escritorio/smallFlows.pcap

File Cache is enabled

Actual: 14261 packets (9216531 bytes) sent in 0.087737 seconds.

Rated: 105047254.8 Bps, 840.37 Mbps, 162542.59 pps

Flows: 1209 flows, 13779.81 fps, 14243 flow packets, 18 non-flow

Statistics for network device: eth0

Attempted packets: 14261

Successful packets: 14261

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El ejemplo anterior utiliza el interruptor “-i” para especificar el dispositivo primario de salida, por medio del cual se enviarán los paquetes del fichero PCAP y con “-t” se especifica que los paquetes deben enviarse tan pronto como sea posible.
Existen otras opciones que permiten limitar la velocidad, el número de paquetes máximo a enviar o incluso, especificar otro dispositivo de salida por el que también se replicará el trafico.

>sudo ./tcpreplay -i eth0 -p 100 -L 100 /home/adastra/Escritorio/smallFlows.pcap

Actual: 101 packets (61705 bytes) sent in 1.00 seconds.

Rated: 61653.7 Bps, 0.493 Mbps, 100.91 pps

Flows: 11 flows, 10.99 fps, 101 flow packets, 0 non-flow

Statistics for network device: eth0

Attempted packets: 101

Successful packets: 101

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El interruptor “-p” permite indicar el número de paquetes que se enviarán por segundo y “-L” indica el número total de paquetes que se deben leer y enviar desde el PCAP. Como se puede apreciar, en este caso concreto ambos interruptores tienen el valor “100” por este motivo los paquetes se han enviado en exactamente 1 segundo.

Por otro lado, anteriormente se ha utilizado el interruptor “-t” que indica que los paquetes deben enviarse a su destino lo más rápido posible, sin embargo existe otra opción que permite controlar la velocidad de trasferencia de los paquetes, dicho interruptor es –mbps.

>sudo ./tcpreplay -i eth0 -L 100 –mbps 9500 /home/adastra/Escritorio/smallFlows.pcap

Actual: 101 packets (61705 bytes) sent in 0.000525 seconds.

Rated: 117533333.3 Bps, 9490.26 Mbps, 192380.95 pps

Flows: 11 flows, 20952.38 fps, 101 flow packets, 0 non-flow

Statistics for network device: eth0

Attempted packets: 101

Successful packets: 101

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

En este caso, se envían los paquetes a un máximo de 9500 MB por segundo y tal como se puede ver en las estadísticas que arroja “tcprelay”, el promedio ha sido de 9490 MBPS. Evidentemente, entre más bajo sea este valor, más tiempo tardará la herramienta en replicar los paquetes de datos.

Otra característica interesante de TCPReplay es la posibilidad de controlar los flujos de trafico, los cuales son simplemente una secuencia de paquetes que se intercambian entre un emisor y un receptor. Por ejemplo, el clásico TCP Hanshake, es un “traffic flow” que se compone por una serie de paquetes que de forma independiente puede que no tengan mayor sentido, pero cuando se relacionan con otros paquetes tienen significado bien definido. TCPReplay cuenta con varios interruptores para controlar los flujos contenidos en un fichero PCAP. Uno de ellos es “–unique-ip”, el cual se encarga de modificar la dirección IP de destino tras cada repetición de un bucle (con el interruptor –loop). Con “–flow-expiry”, se le indica a la herramienta que debe ignorar aquellos flujos que se consideran “expirados”, es decir, aquellos que tardan más tiempo del especificado en completarse. El valor de este interruptor debe indicarse en segundos y evidentemente, entre más pequeño sea, mayor será el número de paquetes descargados ya que se consideran que hacen parte de un flujo expirado.

 

>sudo ./tcpreplay -i eth0 -t –flow-expiry 30 /home/adastra/Escritorio/bigFlows.pcap

Actual: 791615 packets (355417784 bytes) sent in 8.01 seconds.

Rated: 43556960.3 Bps, 348.45 Mbps, 97013.55 pps

Flows: 58505 flows, 40686 unique, 17819 expired, 7169.87 fps, 791179 flow packets, 436 non-flow

Statistics for network device: eth0

Attempted packets: 791615

Successful packets: 791615

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

El fichero “bigFlows.pcap” contiene una buena muestra de datos con paquetes de todo tipo, con lo cual es una buena forma de ver el funcionamiento de estos interruptores. En este caso concreto se puede ver que el número de flujos que tardan 30 o más segundos en completarse son marcados como expirados.

>sudo ./tcpreplay -i eth0 -t –flow-expiry 90 /home/adastra/Escritorio/bigFlows.pcap

Actual: 791615 packets (355417784 bytes) sent in 7.08 seconds.

Rated: 45216137.2 Bps, 361.72 Mbps, 100709.00 pps

Flows: 41818 flows, 40686 unique, 1132 expired, 5320.07 fps, 791179 flow packets, 436 non-flow

Statistics for network device: eth0

Attempted packets: 791615

Successful packets: 791615

Failed packets: 0

Truncated packets: 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN): 0

Como se puede ver en las estadísticas generadas por la herramienta, el número de flujos expirados es muchísimo menor, ya que el limite que se ha especificado es de 1 minuto y medio, un valor lo suficientemente alto como para considerar que se trata de una conexión extremadamente lenta o simplemente que el destinatario no era capaz de procesar los paquetes enviados por el emisor debido a que se encontraba ocupado o no disponible.

Existen algunas otras características interesantes en TCPReplay, tales como la posibilidad de integrar Netmap para mejorar las operaciones I/O por medio de buffers RX/TX preasignados y buffers en memoria con accesos asíncronos.

Un saludo y Happy Hack!
Adastra.

HoneyPots Parte 1 – Kippo

marzo 24, 2015 1 comentario

Este será el primer articulo de una serie en la que se hablará sobre algunos de los honeypots más utilizados para la detección y prevención de ataques. Antes de continuar y para los que no lo saben, un Honeypot en informática es un servicio activo que acepta y procesa peticiones como cualquier servidor del tipo SSH, HTTP, SMB, etc. Pero en realidad se encarga de monitorizar y registrar los intentos fallidos de autenticación y cualquier ataque contra el supuesto servicio, se trata de un señuelo. Es una forma de engañar a un atacante haciéndole creer que se encuentra perfilando y analizando un servicio del objetivo, cuando en realidad lo que está haciendo es suministrándole información al objetivo sobre las actividades que está realizando.
Uno de los más conocidos y utilizados es Kippo, un honeypot que se encarga de levantar un servicio SSH en el puerto indicado y registrar todos los intentos de autenticación realizados contra dicho servicio. Kippo es un honeypot altamente personalizable y es posible utilizarlo para localizar a un atacante e incluso, para que pueda iniciar sesión en el supuesto sistema y permitirle interactuar con un sistema de ficheros ficticio, el cual también es configurable.

A continuación se explica como instalar y configurar Kippo en un sistema Linux.

Instalación y configuración de Kippo.

Kippo es un sistema que ha sido desarrollado utilizando Python y Twisted, una potente librería de la que ya he hablado en alguna ocasión. Una de las ventajas de Kippo, es que se puede lanzar de forma programática desde un script en Python gracias a las funciones definidas en el modulo “twistd” de Twisted, esto significa que puedes crear tus propios scripts en Python y arrancar Kippo en cualquier momento.

Para instalar Kippo, se debe tener Python instalado y algunas librerías en el entorno, tales como Twisted, PyCrypto y service_identity Zope. Una vez cumplidas dichas dependencias, se puede descargar el proyecto desde su repositorio en GitHub.

>git clone https://github.com/desaster/kippo.git

>ls -F

data/ doc/ honeyfs/ kippo.cfg.dist log/ start.sh* txtcmds/

dl/ fs.pickle kippo/ kippo.tac README.md stop.sh utils/

 

Lo primero que se puede apreciar en el directorio descargado, es que existen dos ficheros ejecutables que son “start.sh” y “stop.sh”, evidentemente son utilizados para iniciar y detener Kippo, pero antes de iniciar el Honeypot, se deben conocer las propiedades de configuración que permitirán personalizar el servicio y que sea más difícil para un atacante determinar que se trata de un honeypot. El script “start.sh” buscará el fichero de configuración “kippo.cfg” en el directorio desde donde se ejecuta y como se puede apreciar en el listado de contenidos del directorio, dicho fichero no existe, pero si que se puede ver el fichero “kippo.cfg.dist”, el cual se puede renombrar a “kippo.cfg”. El fichero “kippo.cfg.dist” contiene las propiedades que pueden ser útiles para iniciar el servicio con por la configuración defecto. Algunas de dichas propiedades (las más interesantes) se explican a continuación.

ssh_addr: Interfaz de red en la que iniciará el honeypot. El valor por defecto es “0.0.0.0”

ssh_port: Puerto en el que iniciará el honeypot. El valor por defecto es “2222”

hostname: Será cadena que verá un atacante cuando consiga una shell en el honeypot. Evidentemente, es una buena recomendación poner un nombre que parezca pertenecer a un servidor real en el objetivo.

download_path: Directorio en el que se guardaran todos los ficheros que intente descargar el atacante en el servidor.

filesystem_file: Probablemente es una de las propiedades más interesantes a la hora de engañar a un atacante haciéndole creer que se encuentra en un sistema legitimo, ya que esta propiedad se encarga de definir un sistema de ficheros completo, con sus correspondientes ficheros, permisos y demás. Este fichero se debe encontrar en formato de objetos serializados en Python (Pickle). Se puede utilizar el script “utils/createfd.py” para crear dicho sistema de ficheros partiendo de un sistema elegido por el usuario.

data_path: En el directorio indicado en esta propiedad se debe ubicar el fichero “usersdb.txt” en el se definirá por cada línea, el usuario y sus credenciales de acceso al supuesto honeypot. Evidentemente, se recomienda indicar una contraseña que sea fácilmente predecible para que el atacante pueda entrar y contar con más tiempo para saber de quien se trata.

txtcmds_path: En el directorio indicado en esta propiedad se deben definir los programas y utilidades que podrá ejecutar el atacante una vez se encuentre dentro del honeypot.

ssh_version_string: Será el banner que devolverá el servicio cuando se realicen peticiones sobre el puerto definido en la propiedad “ssh_port”

interact_enabled: Kippo permite controlar las sesiones que el atacante tenga iniciadas contra el honeypot en un servicio independiente de monitoreo. Por defecto dicha propiedad se encuentra desactivada, pero es muy útil para ver en tiempo real lo que está haciendo el atacante en el honeypot.

interact_port: Puerto en el que se iniciará el servicio de monitoreo. Solamente tiene sentido indicar un valor en esta propiedad si “interact_enabled” tiene el valor “true”.
Existen otras propiedades en Kippo que también pueden ser interesantes para el lector, por ese motivo se recomienda leer la documentación para hacerse una idea de cuáles son dichas propiedades.

Una buena practica para captar la mayor cantidad de atacantes, consiste en el definir el honeypot un puerto que no requiera privilegios de root para ser utilizado, como por ejemplo el “2222” y redireccionar todas peticiones entrantes por el puerto “22” al puerto donde está corriendo el honeypot. Esto puede hacerse muy fácilmente utilizando una regla de iptables como la siguiente.

iptables -t nat -A PREROUTING -p tcp –dport 22 -j REDIRECT –to-port 2222

Ahora bien, si se cuenta con un servicio SSH productivo, se recomienda levantarlo en un puerto distinto al “22”.

El siguiente fichero de configuración puede ser utilizado para arrancar Kippo con algunos valores de configuración personalizados.

[honeypot]

ssh_port = 2222

hostname = PROServer

log_path = log

download_path = dl

contents_path = honeyfs

filesystem_file = fs.pickle

data_path = data

txtcmds_path = txtcmds

rsa_public_key = data/ssh_host_rsa_key.pub

rsa_private_key = data/ssh_host_rsa_key

dsa_public_key = data/ssh_host_dsa_key.pub

dsa_private_key = data/ssh_host_dsa_key

exec_enabled = true

fake_addr = 172.28.78.10

ssh_version_string = SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze2

interact_enabled = true

interact_port = 5000

 

El fichero anterior debe ubicarse en el directorio de Kippo con el nombre “kippo.cfg”. Ahora es el momento de lanzar el script “start.sh” para iniciar el honeypot.

>./start.sh

twistd (the Twisted daemon) 14.0.0

Copyright (c) 2001-2014 Twisted Matrix Laboratories.

See LICENSE for details.

Starting kippo in the background…

EL servicio quedará abierto en el puerto “2222” y además, es posible ver los logs que ha generado Kippo en el proceso de arranque.

>cat log/kippo.log

2015-01-25 23:57:37+0100 [-] Log opened.

2015-01-25 23:57:37+0100 [-] twistd 14.0.0 (/usr/bin/python 2.7.6) starting up.

2015-01-25 23:57:37+0100 [-] reactor class: twisted.internet.epollreactor.EPollReactor.

2015-01-25 23:57:37+0100 [-] HoneyPotSSHFactory starting on 2222

2015-01-25 23:57:37+0100 [-] Starting factory <kippo.core.ssh.HoneyPotSSHFactory instance at 0x7fa27d2b67e8>

2015-01-25 23:57:37+0100 [-] Factory starting on 5000

2015-01-25 23:57:37+0100 [-] Starting factory <twisted.internet.protocol.Factory instance at 0x7fa27c03cd40>

>nc localhost 2222

SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze2

>

 

Como se puede ver, el banner devuelto por el servicio es el mismo que se ha definido en la propiedad “ssh_version_string”. Por otro lado, también se ha abierto el puerto “5000” para monitorizar el servicio. En dicho puerto se podrá acceder a una consola de administración básica que permitirá listar las sesiones activas, visualizar en tiempo real lo que el atacante está digitando en la consola del honeypot e incluso, interactuar con dicha sesión y escribir en la misma consola que el atacante está utilizando, algo que evidentemente despertaría sus sospechas.

>telnet -e q 127.0.0.1 5000

Telnet escape character is ‘q’.

Trying 127.0.0.1…

Connected to 127.0.0.1.

Escape character is ‘q’.

*** kippo session management console ***

List of commands:

list – list all active sessions

view – attach to a session in read-only mode

hijack – attach to a session in interactive mode

disconnect – disconnect a session

help – this help

exit – disconnect the console

 

En el fichero “log/kippo.log” se podrán ver las trazas de cada uno de los intentos de conexión que se han realizado contra el honeypot.

2015-01-26 00:06:42+0100 [kippo.core.ssh.HoneyPotSSHFactory] New connection: 127.0.0.1:43249 (127.0.0.1:2222) [session: 2]

2015-01-26 00:06:42+0100 [HoneyPotTransport,2,127.0.0.1] Remote SSH version: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

2015-01-26 00:06:42+0100 [HoneyPotTransport,2,127.0.0.1] kex alg, key alg: diffie-hellman-group1-sha1 ssh-rsa

2015-01-26 00:06:42+0100 [HoneyPotTransport,2,127.0.0.1] outgoing: aes128-ctr hmac-md5 none

2015-01-26 00:06:42+0100 [HoneyPotTransport,2,127.0.0.1] incoming: aes128-ctr hmac-md5 none

2015-01-26 00:06:44+0100 [HoneyPotTransport,2,127.0.0.1] NEW KEYS

2015-01-26 00:06:44+0100 [HoneyPotTransport,2,127.0.0.1] starting service ssh-userauth

2015-01-26 00:06:44+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] adastra trying auth none

2015-01-26 00:06:44+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] adastra trying auth keyboard-interactive

2015-01-26 00:06:51+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] login attempt [adastra/123456] failed
2015-01-26 00:07:01+0100 [-] adastra failed auth password

2015-01-26 00:07:01+0100 [-] unauthorized login:

2015-01-26 00:07:03+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] adastra trying auth password

2015-01-26 00:07:03+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] login attempt [adastra/asadas] failed

2015-01-26 00:07:04+0100 [-] adastra failed auth password

2015-01-26 00:07:04+0100 [-] unauthorized login:

2015-01-26 00:07:05+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] adastra trying auth password

2015-01-26 00:07:05+0100 [SSHService ssh-userauth on HoneyPotTransport,2,127.0.0.1] login attempt [adastra/wwqwq] failed

Si el atacante consigue acceso, podrá ver una consola en el supuesto servicio y podrá interactuar con ella, limitado únicamente por los comandos que se han definido en la propiedad “txtcmds_path” del fichero de configuración utilizado para arrancar Kippo.

>ssh -p2222 localhost -l root

Password:

root@PROServer:~# ls

root@PROServer:~# pwd

/root

root@PROServer:~# whoami

root

root@PROServer:~# id

uid=0(root) gid=0(root) groups=0(root)

root@PROServer:~# uname -a

Linux PROServer 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/Linux

 

Desde la consola de administración, se puede ver la nueva sesión creada en el honeypot y se puede interactuar con ella.

>telnet -e q 127.0.0.1 5000

Telnet escape character is ‘q’.

Trying 127.0.0.1…

Connected to 127.0.0.1.

Escape character is ‘q’.

*** kippo session management console ***

List of commands:

list – list all active sessions

view – attach to a session in read-only mode

hijack – attach to a session in interactive mode

disconnect – disconnect a session

help – this help

exit – disconnect the console

list

ID clientIP clientVersion

3 127.0.0.1 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

view 3

** Attaching to #3, hit ESC to return

ls

root@PROServer:~# pwd

/root

root@PROServer:~# whoami

root

root@PROServer:~# id

uid=0(root) gid=0(root) groups=0(root)

root@PROServer:~#

** Interactive session closed.

hijack 3

** Attaching to #3, hit ESC to return

Te he pillado…

bash: Te: command not found

root@PROServer:~# whoami

root

disconnect 3

** Disconnecting session #3

exit

Connection closed by foreign host.

 

El comando “list” ha permitido visualizar las sesiones iniciadas en el honeypot y con los comandos “view” y “hijack” se puede interactuar con una de dichas sesiones, el primero solamente permite ver lo que el atacante escribe en la consola del honeypot, mientras que el segundo permite interactuar directamente con dicha sesión y enviar comandos/mensajes al atacante. Finalmente el comando “disconnect” interrumpe una sesión activa, cortando la conexión entre el atacante y el honeypot.

Más sobre Honeypots en un próximo articulo.

Saludos y Happy Hack!

Adastra.

Registro y análisis de emociones con Wefeelfine – Ingeniería social automatizada

diciembre 9, 2014 3 comentarios

El campo de la psicología y todo lo relacionado con los fenómenos socio-culturales siempre me han parecido muy interesantes en los que creo que hay mucho por hacer, especialmente desde el punto de vista de la informática, ya que estamos hablando de un campo del conocimiento que aun no ha alcanzado el grado madurez que tienen otros campos del conocimiento humano. No obstante, existen muchos documentos y herramientas que permiten comprender mejor la naturaleza de las emociones humanas y la forma en la que pueden afectar el comportamiento de una persona. La ingeniería social es una de dichas herramientas y se basa en una serie de principios generales que son transculturales y que suelen aplicar a un porcentaje de la población bastante alto, sin embargo su enfoque, como seguramente ya lo sabes, consiste principalmente en detectar las vulnerabilidades que pueda tener una persona en varios niveles, así como también para la detección del engaño. Los ingenieros sociales suelen conocer bastante bien los principales rasgos psicológicos y culturales de las personas con las que tratan, tal es su conocimiento sobre el comportamiento y la psique humana que son capaces de “cambiar” su modo de hablar, de expresarse y de transmitir ideas a las personas con las que se comunican con el fin de generar un sentimiento de confianza y conexión a su interlocutor. Se trata de una habilidad que en muchas ocasiones es innata en una persona, es simplemente su forma de ser y suelen generar un ambiente amigable y jovial allí donde vayan. Muchas personas son así por naturaleza, inmediatamente nos generan sentimientos agradables y nos sentimos más relajados y dispuestos a transmitir información. Los mejores ingenieros sociales son aquellos no fuerzan las cosas y que con una habilidad asombrosa controlan el flujo de los acontecimientos y las conversaciones, dando lugar a situaciones que les resultan favorables y muy ventajosas. Si bien suelen ser habilidades que son innatas en la mayoría de ingenieros sociales, no significa que no puedan ser desarrolladas comprendiendo cada uno los puntos vitales del Social Engineering Framework, solamente hace falta practica y mucha paciencia, pero al hablar de practica, no me refiero a utilizar SET desde casa y crear el típico Applet malicioso, me refiero a hablar con la gente que te rodea y tratar de conocer su “mindset” o conjunto de habilidades, características y rasgos psicológicos.

Ahora bien, como resulta evidente, las emociones juegan un papel central cuando hablamos de relaciones humanas. Lo que sentimos por otras personas impactan directamente en nuestro comportamiento y además, con el tremendo auge de las redes sociales, parece ser que hoy en día todo el mundo se siente mucho más a gusto expresando lo que piensan o sienten en Facebook, Twitter o otro cualquier sitio en Internet como blogs o foros que hablando personalmente con la gente. Es algo que siempre me ha parecido de lo más curioso y desde hace varios años, aprovechando la abrumadora cantidad de frases cargadas con diferentes tipos de sentimientos de personas que escriben en Internet, se ha creado un proyecto que desde mi punto de vista es uno de los mejores proyectos informáticos relacionados con el estudio y categorización de las emociones humanas, se trata de wefeelfine.org

Wefeelfine es una plataforma muy completa que se encarga de analizar blogs, foros, redes sociales con perfiles públicos y otros tipos de espacios personales en los que las personas transmiten sus ideas y se expresan, se trata de una herramienta de exploración de emociones a escala global. Además de recolectar información, su plataforma puede ser consultada en cualquier momento y admite varios tipos de filtros relacionados con el genero de las personas, edad, ciudad, o incluso una serie de emociones muy concretas, tal como se puede apreciar en las siguientes imágenes.

feeling1

Nube de sentimientos recolectados por wefeelfine.org

feeling2

Aplicando los filtros: Sentimiento=tense, Genero=Femenino, Edad=Entre 30 y 39 años, Condiciones climáticas=Todas, País=España, Fechas=Todas

Por otro lado, cuenta con varias vistas que permiten visualizar la información de la forma en la que resulte más cómoda para el usuario, tal como se indica en el apartado “movements”: http://wefeelfine.org/movements.html

Personalmente, la característica que me parece más interesante de la plataforma son los servicios REST que se encuentran definidos para que cualquier desarrollador pueda consultarlos. La API para poder invocar a dichos servicios de forma correcta se encuentra definida en el siguiente enlace: http://www.wefeelfine.org/api.html y no requiere ningún tipo de autenticación y/o autorización, son servicios abiertos que cualquiera puede utilizar en un momento dado.

Tal como se aprecia en la siguiente imagen, es posible utilizar un navegador web para invocar a cualquiera de los servicios disponibles e inspeccionar la respuesta para ver los datos que ha devuelto.

feeling3

Invocación a la API de wefeelfine desde un navegador web

Ahora bien, lo más común es crear rutinas que invoquen a dichos servicios para automatizar el proceso de consulta y en ese sentido, es posible utilizar cualquier lenguaje de programación ya que solamente es necesario realizar una petición HTTP y parsear la respuesta. El siguiente script es un buen ejemplo del uso de Python para consultar y parsear algunos de los servicios disponibles en la API de wefeelfine.

import requests 
from bs4 import BeautifulSoup 
def search(api, text): 
    response = requests.get(api) 
    soup = BeautifulSoup(response.content, 'lxml') 
    feelings = soup.feelings.find_all(&quot;feeling&quot;) 
    print text 
    for feeling in feelings: 
        if feeling.has_key(&quot;feeling&quot;): 
            print &quot;[*] Sentimiento: %s &quot; %(feeling['feeling']) 
        if feeling.has_key(&quot;sentence&quot;): 
            print &quot;[*] Sentencia: %s &quot; %(feeling['sentence'])                
        if feeling.has_key(&quot;postdate&quot;): 
            print &quot;[*] Fecha: %s &quot; %(feeling['postdate'])                
        if feeling.has_key(&quot;posturl&quot;): 
            print &quot;[*] URL Origen: %s &quot; %(feeling['posturl'])                
        print &quot;\n&quot; 
search(&quot;http://api.wefeelfine.org:8080/ShowFeelings?display=xml&amp;returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,born,country,state,city,lat,lon,conditions&amp;limit=10&quot;,&quot;[*] Consultando los ultimos 10 sentimientos registrados&quot;) 


search(&quot;http://api.wefeelfine.org:8080/ShowFeelings?display=xml&amp;returnfields=imageid,feeling,sentence,posttime,postdate,posturl,gender,born,country,state,city,lat,lon,conditions&amp;feeling=sad&amp;city=madrid&amp;limit=10&amp;gender=female&quot;, &quot;[*] Consultando los ultimos 10 sentimientos registrados de personas con genero 'femenino' que se sienten 'felices'&quot;) 

La función “search” es la que se encarga de utilizar la librería “requests” para ejecutar una petición HTTP contra el servicio REST indicado y parsear la respuesta utilizando la librería BeautifulSoup, la cual se encuentra en formato XML.

Es un script muy simple y que refleja la cantidad de información que se puede extraer de la plataforma. Aunque muchos de los sentimientos registrados se encuentran en ingles, los sentimientos expresados en castellano en blogs, redes sociales y cualquier otro sitio web en Internet, quedan prácticamente excluidos de la plataforma, ¿Acaso os estoy dando ideas para un próximo proyecto?😉.
Es una plataforma muy interesante y el estudio realizado por los investigadores que han montado la plataforma es simplemente brillante y para aquellas personas a las que nos interesan los temas relacionados con la informática, el hacking y las ciencias humanas como la filosofía y la psicología, puede resultar muy entretenido. Os recomiendo su lectura: http://wefeelfine.org/wefeelfine.pdf

Un Saludo y Happy Hack!

Explotación de Software Parte 34 – Desarrollo de Shellcodes en Linux – Egghunters

octubre 2, 2014 1 comentario

Explicación sobre el funcionamiento y uso de los EggHunters bajo plataformas Linux.
Utilizamos las técnicas descritas por Skape en su paper titulado “Safely Searching Process Virtual Address Space” el cual puede ser encontrado en el siguiente enlace: http://www.hick.org/code/skape/papers/egghunt-shellcode.pdf

skapeEggHunter.nasm:    https://github.com/Adastra-thw/ExploitSerie/blob/master/skapeEggHunter.nasm
shellcodeEggHunter.c:     https://github.com/Adastra-thw/ExploitSerie/blob/master/shellcodeEggHunter.c

Repositorio GIT de la serie:
https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Explotación de Software Parte 33 – Desarrollo de Shellcodes en Linux – Reverse Shell

septiembre 18, 2014 1 comentario

Desarrollo de una ReverseShell en un sistema Linux. Se enseña el uso de la systemcall “socketcall” con las funciones “socket” y “connect”.

reverse.nasm:      https://github.com/Adastra-thw/ExploitSerie/blob/master/reverse.nasm
reverseTest.c:     https://github.com/Adastra-thw/ExploitSerie/blob/master/reverseTest.c


Repositorio GIT de la serie:

https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Explotación de Software Parte 32 – Desarrollo de Shellcodes en Linux – Bind Shell

septiembre 11, 2014 1 comentario

Desarrollo de una BindShell en un sistema Linux. Se enseña el uso de la systemcall “socketcall” con las funciones “socket”, “bind”, “listen” y “accept”.

dump.sh:  https://github.com/Adastra-thw/ExploitSerie/blob/master/dump.sh
bind.nasm: https://github.com/Adastra-thw/ExploitSerie/blob/master/bind.nasm

Repositorio GIT de la serie:

https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

 

A %d blogueros les gusta esto: