Hoy vengo a contaros cómo realizar vuestro propio laboratorio para capturar malware. Parece mentira pero es bastante "sencillo", solo necesitamos: un puñado de máquinas en diversos países en el mundo, tiempo, dinero (tampoco mucho) y ganas de llevarlo a cabo.
Como se trata de una actividad compleja, va a ser un proceso largo. En un sólo post no vamos a poder explicar todo el proceso a la vez, por lo que le dedicaremos una serie de ellos, siendo este el primero.
Empecemos con un pequeño esquema para dejar todo un poco mas claro:
Podéis ver 3 elementos bien diferenciados:
- Honeypots (Cowrie)
- BBDD (Elasticsearch)
- Frontal Web para ver los resultados(Kibana).
Y ahora es cuando vienen las preguntas de cómo se monta este tinglado.
¿CÓMO FUNCIONA?
Los honeypots generan logs en base a los eventos que registren, el Logstasth los normaliza ("parsea") y los pasa a Elasticsearch para que éste los indexe y los almacene. Kibana se conectará a Elasticsearch para presentar los datos mediante una interfaz web, para que podamos verlos de manera sencilla y rápida.A través de de esta serie de entradas en el blog vamos a ir viendo cada uno de los pasos hasta que lleguemos al resultado final. En este ejemplo podemos ver desde donde se han realizado los ataques registrados en nuestro honeypot, visto desde Kibana.
*Nota: En la imagen apreciamos un poco de "customización", que cada usuario puede realizar a su gusto una vez puesto en marcha todo. Es darle "amor" a Kibana para que te haga todo eso.
PASO 1: Creación del Honeypot.
En nuestro caso a la hora de crear el Honeypot usaremos Cowrie. Es un software que simulará un SSH y un telnet para que los "malos" puedan subir e intentar ejecutar el malware. Cuando lo hagan no pasará nada ya que caerán en nuestra trampa y el malware será nuestro para un posterior análisis, mientras nos tomamos un café.
A continuación llevamos a cabo la instalación:
*Nota: El sistema base que se ha usado para la instalación es Ubuntu 16.04.3, versión de Ovh y Digital Ocean
*Nota: El sistema base que se ha usado para la instalación es Ubuntu 16.04.3, versión de Ovh y Digital Ocean
Instalamos las dependencias:
Instalamos Java:$ sudo apt-get install git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
$ sudo apt-get install openjdk-8-jre
Creamos usuario para el honeypot:
$ sudo adduser --disabled-password cowrie $ sudo su - cowrie
Descargamos cowrie:
$ git clone http://github.com/micheloosterhof/cowrie $ cd cowrie
Creamos entorno virtual de Python
$ pwd /home/cowrie/cowrie $ virtualenv cowrie-env
Activamos el entorno virtual e instalamos dependencias de Python
Copiamos el fichero de configuración y lo pasamos a home/cowrie/etc/$ source cowrie-env/bin/activate (cowrie-env) $ pip install -r requirements.txt
Editamos el fichero configuración.$ cp ~/cowrie/cowrie.cfg.dist ~/cowrie/etc/cowrie.cfg
[telnet] enabled = true
Generamos Claves RSA y DSA para ssh en data
Hay que añadir las siguientes líneas al fichero cowrie.cfg, donde hayamos creado las claves anteriores.$ cd data $ ssh-keygen -t dsa -b 1024 -f ssh_host_dsa_key $ ssh-keygen -t rsa -b 1024 -f ssh_host_rsa_key $ cd ..
rsa_public_key = etc/ssh_host_rsa_key.pub rsa_private_key = etc/ssh_host_rsa_key dsa_public_key = etc/ssh_host_dsa_key.pub dsa_private_key = etc/ssh_host_dsa_key
Activamos el uso de puertos 22 y 23 para el honeypot
Ssh:Telnet:$ sudo apt-get install authbind $ sudo touch /etc/authbind/byport/22 $ sudo chown cowrie:cowrie /etc/authbind/byport/22 $ sudo chmod 770 /etc/authbind/byport/22
*Nota: Tendremos que editar el fichero /etc/ssh/sshd_conf para cambiar el puerto ssh del servicio ssh de la administración de la propia máquina real, y ponemos el que queramos. En mi caso:$ sudo touch /etc/authbind/byport/23 $ sudo chown cowrie:cowrie /etc/authbind/byport/23 $ sudo chmod 770 /etc/authbind/byport/23
Editaremos de nuevo el fichero cowrie.cfg:Port 33333
[ssh] listen_endpoints = tcp:22:interface=0.0.0.0
Y por último editamos en ~/cowrie/bin/cowrie[telnet] listen_endpoints = tcp:23:interface=0.0.0.0
Un vez realizados todos estos pasos ya tendremos nuestro honeypot funcionando.AUTHBIND_ENABLED=yes
Hay que tener en cuenta que no tendrá todavía el Logstash instalado, por lo tanto no normalizará los logs y tampoco se los enviará al Elasticsearch.
Esto quedará pendiente para la segunda parte de este pequeño laboratorio que estamos montando.
Espero que hasta este momento os esté gustando y os pique el gusanillo para montarlo.
Para cualquier duda, no olvidéis que podéis escribirme por el telegram de Hackplayers o directamente añadir comentarios en este post.
Un saludo a todos. Nos volveremos a ver en la siguiente parte.
Aquí tenéis todas las partes del laboratorio:
Que buen paper, ansioso de la segunda parte!
ResponderEliminarMuy buena pinta esta serie. Deseando que lleguen las siguientes partes!
ResponderEliminarInteresantísimo!
ResponderEliminarBuenas!
ResponderEliminarMe ha surgido un problemilla.
Se supone que en esta parte "sudo adduser --disabled-password cowrie" añadimos un usuario y permitimos que sea "legal" que no tenga contraseña. El problema es que despues de añadir las claves:
rsa_public_key = etc/ssh_host_rsa_key.pub
rsa_private_key = etc/ssh_host_rsa_key
dsa_public_key = etc/ssh_host_dsa_key.pub
dsa_private_key = etc/ssh_host_dsa_key
Cuando voy a realizar un sudo me pide contraseña del usuario cowrie... Y no es una contraseña vacia ni ninguna de las palabras que puse con las claves RSA y DSA ¿sabéis a que se puede deber? mil gracias!
Crealas con root o con otro usuario con permisos de admin y cuando las hayas generado, cambias el propietario de ellas con chown cowrie:cowrie
EliminarTendría algun problema de realizar esse procedimiento en un Raspberry Pi?
ResponderEliminar