Hola tod@s, hoy os traigo una entrada, donde explico que es un honeypot, creo que es muy importante implementar este tipo de soluciones en nuestra red, ya que nos permite simular servicios en producción y así poder analizar los ataques de los ciberdelincuentes y poder endurecer los servicios que están producción.
Un honeypot básicamente es un sistema señuelo, que esta configurado para ello. Estas configuraciones simulan servicios reales. Una vez desplegado un honeypot este nos permitirá detectar, desviar, estudiar e incluso contrarrestar accesos no autorizados a redes legítimas.
Generalmente los honeypot son sistemas virtuales que son desplegados en un sistema operativo, estos contienen datos falsos y aplicaciones que intentan imitar los de un sistema real. Suelen estar monitorizados minuciosamente ya que los datos recogidos por un honeypot, nos permitirá hacernos una idea de los métodos de ataque que realiza un ciberatacante, a parte de mucha más información existente. Toda esta información es muy importante ya que nos permitirá establecer mejoras en la red legítima para un acceso seguro de nuestros clientes.
Es recomendable que tengamos completamente aislados los sistemas donde irán instalados los honeypot, ya que dependiendo del nivel de interacción del honeypot corremos más riesgo de que los ciberatacantes se hagan con el control de la máquina, existen los siguientes tipo de honeypot:
- Baja Interacción: El honeypot emula un servicio, una aplicación o un sistema vulnerable. Sus características principales son su sencilla instalación y configuración, junto con lo limitado de su capacidad para obtener diferentes tipos de datos.
- Alta Interacción: En este caso el honeypot es una aplicación con la cual se puede interactuar y que responde como se espera, con la diferencia de que su diseño está orientado a realizar un registro exhaustivo de la actividad que se lleva a cabo sobre ella y de que la información que contiene no es relevante en ningún caso.
Una vez explicado todo esto y teniendo claro que es un honeypot, vamos a proceder a instalar «Kippo», Kippo es un honeypot SSH de interacción media diseñado para registrar los ataques de fuerza bruta y, lo que es más importante, la interacción de shell completa realizada por el atacante. Si se quiere saber más sobre kippo, podemos acceder a su github.
La instalación de kippo se va a llevar a cabo en CentOS 7.
El primer paso que vamos a realizar es actualizar el sistema operativo:
Ahora vamos a instalar unos paquetes que son necesarios para el funcionamiento de Kippo:
Volvemos a actualizar debido a que hemos instalado los repositorios EPEL:
Instalamos el paquete pip de python:
Instalamos el un servidor web, para poder posteriormente visualizar todas las alertas con kippo-graph:
Instalamos otro paquete de python:
Ahora con la herramienta pip, instalamos la librería twisted:
Ahora instalamos la librería pyasn1:
Procedemos a instalar la librería pycrypto:
Instalamos un paquete de Mariadb necesario para kippo:
Instalamos la librería de mysql de python:
Instalamos el servidor de MYSQL:
Habilitamos y arrancamos el servidor de MYSQL:
Habilitamos y arrancamos el servidor HTTPD:
Ejecutamos el script post-instalación de mysql y elegimos las opciones que más se acomoden a nuestras condiciones:
Accedemos al servidor mysql:
Creamos la base de datos para Kippo:
Creamos un usuario para acceder a la base de datos kippo:
Ahora vamos a crear un usuario en nuestro CentOS 7 para que ejecute Kippo:
Le añadimos una contraseña al usuario:
Accedemos al usuario creado:
Clonamos el git de kippo:
Comprobamos que hemos clonado el git:
Accedemos a la carpeta descargada:
Una vez dentro nos dirigimos al siguiente directorio para importar una base de datos de ejemplo para kippo:
Una vez dentro del directorio, procedemos a loguearnos en el servicio de mysql con el usuario anteriormente creado para la base de datos kippo:
Entramos en la base de datos que hemos creado para kippo:
Importamos la base de datos de ejemplo para kippo:
Comprobamos que se han creado las tablas:
Y nos salimos de mysql:
Ahora nos dirigimos donde tenemos la carpeta de kippo:
Una vez dentro vamos a copiar el fichero de configuración de ejemplo para crear nuestra configuración personalizada:
Una vez copiado vamos a proceder a modificarlo:
En el fichero de configuración nos tendremos que ir al apartado de base de datos para añadir las credenciales de acceso a la base de datos de kippo:
Ejemplo de configuración del archivo kippo.cfg:
#
# Kippo configuration file (kippo.cfg)
#
[honeypot]
ssh_port = 2222
hostname = srvapp01
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
sensor_name=honeySSH
fake_addr = 192.168.66.254
ssh_version_string = SSH-2.0-OpenSSH_5.1p1 CentOS7
banner_file = SSH SRVAPP01
interact_enabled = false
interact_port = 5123[database_mysql]
host = localhost
database = kippo
username = kippo
password = password
port = 3306
Lo siguiente que vamos hacer es instalar los paquetes php para nuestro servidor web:
Luego nos dirigimos al directorio web de nuestro servidor:
Una vez ahí, clonamos el git de kippo-graph:
Tras clonar el git comprobamos que se ha descargado y cambiamos los permisos para que el dueño sea el usuario anteriormente creado para ejecutar kippo:
Entramos dentro de la carpeta descargada y le damos permisos totales al siguiente fichero:
De nuevo copiamos el fichero de configuración de kippo-graph para crear el nuestro:
Una vez copiado, procedemos a modificarlo:
Y modificamos las variables donde se almacenan las credenciales de acceso a la base de datos:
Comprobamos que la base de datos este en funcionamiento:
Comprobamos que el servidor web este listo:
Abrimos los puertos para que se pueda acceder a kippo-graph:
Modificamos la configuración de nuestro SSH, para que escuche en otro puerto que no sea el 22 (ahí estará kippo):
Modificamos la siguiente sección:
Reiniciamos el servicio de ssh:
Nos dirigimos donde tenemos la carpeta de kippo para configurar más a fondo kippo:
Ahora vamos a proceder a copiar el sistema de ficheros de nuestro CentOS 7 para que se muestre en kippo y así sea más real:
Cambiamos el nombre del sistema operativo:
Podemos añadir usuarios o modificar contraseñas de los usuarios ya creados en el siguiente fichero:
Si queremos habilitar comandos en la consola de nuestro kippo, lo hacemos de la siguiente manera, en este caso habilitamos que se pueda ejecutar el comando df -h:
Ahora vamos a proceder a ejecutar nuestro honeypot kippo:
Una vez ejecutado nuestro Kippo, por defecto kippo escucha en el puerto 2222 y no nos permite establecerlo en el puerto 22, ya que kippo necesita que se ejecute con un usuario sin privilegios y un usuario sin privilegios en linux no puede ejecutar nada por debajo del puerto 1024, pero esto lo solucionamos con el firewall, habilitamos masquerade en la zona publica:
Posteriormente redirigimos las peticiones de un puerto a otro puerto interno de la máquina:
Abrimos el puerto para nuestro ssh legítimo:
Una vez hecho todo esto, ya tenemos nuestro kippo y kippo-graph funcionando, simulamos un acceso:
Podemos visualizar el log:
Y podemos visualizar los intentos de acceso, donde podemos apreciar el usuario, la contraseña utilizada y la dirección desde donde se esta intentando acceder:
Luego en nuestra interfaz web lo podremos visualizar de la siguiente manera, donde vemos la siguiente información:
Fuentes:
Universidad Politécnica de Valencia
Con esto acabo esta guía, espero que os haya gustado.
Un saludo, David. Gracias por visitar el blog.