Cazando Malware (Parte I)

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

Instalamos las dependencias:
$ sudo apt-get install git python-virtualenv libssl-dev 
 libffi-dev build-essential libpython-dev python2.7-minimal authbind
Instalamos Java:
$ 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

$ source cowrie-env/bin/activate
(cowrie-env) $ pip install -r requirements.txt
Copiamos el fichero de configuración y lo pasamos a home/cowrie/etc/
$ cp ~/cowrie/cowrie.cfg.dist ~/cowrie/etc/cowrie.cfg
Editamos el fichero configuración.
[telnet]
enabled = true

Generamos Claves RSA y DSA para ssh en data

$ 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 ..
Hay que añadir las siguientes líneas al fichero cowrie.cfg, donde hayamos creado las claves anteriores.
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:
$ 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
Telnet:
$ sudo touch /etc/authbind/byport/23
$ sudo chown cowrie:cowrie /etc/authbind/byport/23
$ sudo chmod 770 /etc/authbind/byport/23
*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:
Port 33333
Editaremos de nuevo el fichero cowrie.cfg:
[ssh]
listen_endpoints = tcp:22:interface=0.0.0.0 
[telnet]
listen_endpoints = tcp:23:interface=0.0.0.0
Y por último editamos en ~/cowrie/bin/cowrie
AUTHBIND_ENABLED=yes
Un vez realizados todos estos pasos ya tendremos nuestro honeypot funcionando.

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:

Comentarios

  1. Que buen paper, ansioso de la segunda parte!

    ResponderEliminar
  2. Muy buena pinta esta serie. Deseando que lleguen las siguientes partes!

    ResponderEliminar
  3. Buenas!
    Me 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!

    ResponderEliminar
    Respuestas
    1. 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

      Eliminar
  4. Tendría algun problema de realizar esse procedimiento en un Raspberry Pi?

    ResponderEliminar

Publicar un comentario