Autor: @txambe
¿ Que es un Honeypot ?
Un honeypot es un sistema que esta expuesto a ser atacado o comprometido. Por si mismos no solucionan ningún problema de seguridad, son una herramienta que nos ayudará a entender las técnicas de los intrusos y en base a esa información adoptar medidas de protección para los entornos de producción.
Tendremos que usar y configurar un honeypot en función de la información que queramos obtener.
Clasificación de los Honeypots.
Los honeypots pueden ser clasificados en base al entorno donde se instalan y hay dos categorías principales: según su objetivo y según su permisividad a la interacción con el atacante.
En primer lugar vamos a ver las dos posibles según los objetivos:
- De producción: La función de los honeypots en redes de producción es la obtención de información sobre las técnicas empleadas para tratar de vulnerar los sistemas que componen dicha infraestructura. Aunque presentan unos resultados mejores, y tienen mayor posibilidad de encontrar vulnerabilidades de tipo 0-day, tiene su mayor inconveniente en el peligro que presentan, dado que para los sistemas organizativos supone el permitir (incluso provocar), que el tráfico malintencionado conviva con el legítimo.
- De investigación: El principal objetivo es la recopilación de la mayor cantidad de información posible que permita al investigador poder analizar las nuevas tendencias en los métodos de ataque, así como los principales objetivos perseguidos y los distintos orígenes de los ataques. El resultado de este análisis es recogido en informes cuyo objetivo es respaldar la toma de decisiones en la implantación de las medidas de seguridad preventivas. En en este caso los honeypots no representan un valor añadido a la seguridad de manera directa, sino que representan contramedidas inteligentes.
En segundo lugar vamos a ver su clasificación por la permisividad a la interacción entre el honeypot y el atacante.
• Baja: En estos casos el honeypot no son servicios reales sino que se encarga de emular un servicio, una aplicación o un sistema que es vulnerable. Sus ventajas principales son su sencilla instalación y configuración y el bajo riesgo que añaden a la red, pero su inconveniente es su gran limitación en su capacidad para obtener diferentes tipos de datos, dado que principalmente se consigue información de los logs como los intentos de conexión, la fecha, hora, la IP, el puerto de origen y el puerto de destino.
En resumen, los honeypots de baja interacción no dan acceso al atacante, están en sistemas operativos emulados, con riesgos bajos, datos limitados a solo los intentos de conexión, con una fácil configuración y mantenimiento.
• Media: En los casos de interacción media, se aumenta la relación entre el sistema y el atacante. En este caso se emulan servicios que responden al atacante, que puede llegar a conseguir acceso a recursos falso como pueden ser un servidor de FTP o un SSH. Pueden ser utilizados para capturar malware y/o para simular vulnerabilidades específicas de un servicio. Añaden un mayor riesgo pero generalmente los resultados son mucho más interesantes que en le caso de un honeypot de tipo bajo.
En definitiva, los honeypots de media interacción dan acceso limitado al atacante, están en sistemas operativos emulados, con riesgo medio, con una recolección de datos variable según los conocimientos del atacante, una configuración baja/media y un mantenimiento medio.
• Alta: En esta ocasión están construidos con máquinas reales con un sistema operativo vulnerable real que son ofrecidos a los atacantes. Son colocados en la red interna de la organización en producción y aunque presentan un alto riesgo, cuando detectan actividad, suele ser importante.
Como conclusión los honeypots de alta interacción dan acceso total al atacante, están en sistemas operativos reales, con riesgo alto, con una recolección de datos total, y una configuración y mantenimiento difícil.
Comentaros que no hay una guia exacta de como detectar honeypots , ya que cada uno tiene sus peculiaridades , a continuación podréis ver unos puntos a revisar cuando estéis en vuestra fase de pentesting.
Modo Usuario Linux (UML)
Algunas personas han tratado de utilizar UML como un honeypot, pero para medir su eficacia, necesitamos recordar primero lo que es UML. Básicamente, UML es una forma de tener un sistema Linux funcionando dentro de otro sistema Linux. Llamaremos al kernel inicial de Linux el kernel del host (o el sistema operativo anfitrión), mientras que el iniciado por el comando linux se llamará el sistema operativo invitado. Se ejecuta "por encima" del núcleo del host, todo en userland. Tenga en cuenta que UML es sólo un kernel hackeado que puede ejecutarse en userland. Por lo tanto, se tiene que proporcionar el sistema de archivos que contiene tu distribución preferida de linux.
Por defecto, UML se ejecuta en el modo TT (Tracing Thread). Un hilo principal será ptrace ()
host$ ps a [...] 1039 pts/6 S 0:00 linux [(tracing thread)] 1044 pts/6
Rápidamente descubrimos que cuando se utiliza la configuración por defecto, UML no está diseñado para estar oculto:
uml$ dmesg Linux version 2.6.10-rc2 (userland@spa.stens.org) (gcc version 3 )
Uno de los grandes problemas con UML es que no utiliza un disco duro real, utiliza un dispositivo IDE falso llamado ubd *. Si echamos un vistazo a /etc/fstab, ejecute el comando mount o revise el directorio /dev/ubd/, observaremos que estamos dentro de un sistema UML. Para ocultar esa información, es posible iniciar UML con las opciones fake_ide y fakehd. Pero no olvides que lo que lees puede no ser cierto: echa un vistazo al dispositivo raíz ubd de UML para ver que es 98 (0x62).
UML también puede identificarse fácilmente al echar un vistazo al árbol /proc. La mayoría de las entradas
$ cat /proc/cpuinfo processor : 0 vendor_id : User Mode Linux model name
Las entradas iomen, ioports, interrupciones, y muchos otros parecen sospechosos. Para contrarrestar este comportamiento UML, puede utilizar hppfs (Honeypot procfs ) y personalizar las entradas en la jerarquía / proc.
Otro lugar donde buscar UML es el espacio de direcciones de un proceso. En el sistema operativo anfitrión, el espacio de direcciones tiene el aspecto siguiente:
host$ cat /proc/self/maps 08048000-0804c000 r-xp 00000000 03:01 1058722 /bin/cat 0804c000-0804
Al contrario, el espacio de direcciones dentro del sistema operativo invitado se ve así:
uml:~# cat /proc/self/maps 08048000-0804c000 r-xp 00000000 62:00 9957 /bin/cat 0804
VMWare
VMware es un sistema de virtualización que proporciona un sistema virtual x86/x64. Por lo tanto, puede instalar (casi) cualquier sistema operativo que desee, desde Linux o Windows a Unix.
El primer paso para detectar un VMware es mirar el hardware que se supone que debe emular. Antes de la versión 4.5, había algunos componentes de hardware que no eran configurables:
La tarjeta de video: VMware Inc [VMware SVGA II] PCI Display Adapter,
La tarjeta de red: Advanced Micro Devices [AMD] 79c970 [PCnet 32 LANCE]
El nombre de los dispositivos IDE y SCSI :
VMware Virtual IDE Hard Drive, NECVMWar VMware IDE
Chroot and Jails
Chroot nunca fue diseñado para la seguridad, pero se considera necesario cuando se quiere proteger un servidor. Detectar que estás en un entorno chroot, o incluso eludirlo, no es realmente tan difícil.A menos que el directorio chroot esté en una partición específica, y colocado en la parte superior de la misma, los números de inodo no son los esperados de un directorio raíz real:
# ls -ial / 2 drwxr-xr-x 24 root root 4096 2004-11-30 08:14 . 2 drwxr-xr-x 24 root root
Todos los procesos tienen un indicador "J" específico, como se muestra a continuación:
jail# ps PID TT STAT TIME COMMAND 6908 p0 SJ 0:00.02 /bin/sh
También hay que echar un vistazo a los PID ya que no aumentan de la manera habitual.
El número de inodo del directorio raíz no es 2 como se esperaba.
Por defecto, los sockets no procesados están prohibidos como se puede ver:
jail# ping -c 3 arbiyitro.com ping: socket: Operation not permitted
Otros aspectos que os pueden hacer sospechar son los siguientes:
El controlador del mouse tiene el fabricante etiquetado como "Microsoft SMS Solutions"
El código de operación CPUID coloca el valor 0x02 en EAX
Intenta establecer una conexión HTTP con 666.com y obtiene el error "no se puede conectar"
Las únicas impresoras instaladas en la máquina tienen la palabra "genérico" en su nombre.
Al ejecutar el comando "net view" y recibe la respuesta "La lista de servidores para este grupo de trabajo no está disponible actualmente."
Como decía anteriormente este es un proceso , que requiere paciencia y ser muy observador.
Enlaces de interés:
1. awesome-honeypots
2. honeyscore.shodan.io
3. http://www.securityfocus.com/infocus/1803
4. http://www.securityfocus.com/infocus/1805
5. user-mode-linux.sourceforge.net/
Muy interesante, gracias por el trabajo, saludos
ResponderEliminar