Wetland
Wetland es un honeypot SSH de alta interacción, diseñado para registrar ataques de fuerza bruta. Además, wetland registrará la interacción de shell, scp, sftp, exec-command, direct-forward, reverse-forward realizada por el atacante.
Wetland está basado en el módulo ssh de Python paramiko. Y wetland se ejecuta como un servidor tcp multihilo utilizando SocketServer.
Características
- Usar docker para proporcionar un entorno linux real.
- Toda la autenticación por contraseña se redirigirá a docker.
- Todos los comandos se ejecutarán en docker.
- Guardar una copia del archivo cuando el hacker suba archivos con SFTP.
- Extraer y guardar archivos del exec-log cuando el hacker suba archivos con SCP.
- Proporcionar un script playlog para reproducir el log de tipo [shell | exec | direct-forward | reverse-forward].
- Funcionalidad de red avanzada para suplantar la dirección IP del atacante entre wetland y docker (gracias a honssh)
- Diversas formas de reportarte cuando wetland es tocado por un hacker, pero por ahora solo correo electrónico y bearychat.
Requisitos
- Un sistema linux (probado en ubuntu)
- Imágenes sshd en docker (ej. rastasheep/ubuntu-sshd)
- python2.7
- paramiko
- yagmail
- IPy
- requests
Configuración e Instalación
- Copiar wetland.cfg.default a wetland.cfg
- Generar claves utilizadas por el servidor ssh
- ejecutar
mkdir data
- ejecutar
ssh-keygen -t rsa, y colocarlas en data/
- ejecutar
ssh-keygen -t dsa, y colocarlas en data/
- Recuerda que Wetland y el contenedor sshd deben usar las mismas claves.
- Instalar los requisitos de Python
- ejecutar
pip install -r requirements
- Configurar el banner del servidor ssh
- Editar el banner en wetland.cfg
- Debe ser igual al banner ssh del contenedor sshd
- O puedes ejecutar
python util/initwetland.py ./, este script hará todo el trabajo anterior
- Configurar los plugins de salida en wetland.cfg
- habilitar o deshabilitar en la sección
[output]
- Editar la url de los robots entrantes al usar bearychat
- Editar usuario, contraseña... al usar correo electrónico
- Instalar p0f si lo deseas
- ejecutar
git clone https://github.com/p0f/p0f
- ejecutar
cd p0f
- ejecutar
./build.sh
- Editar la sección
[p0fp0f] en wetland.cfg
- si no necesitas p0f, simplemente deshabilita p0f en la sección [output]
- Instalar docker
- instalar docker con la documentación en www.docker.com
- ejecutar
docker search sshd, luego elegir una imagen que ejecute sshd
- ejecutar
docker run -d --name sshd sshd_image_name
- ejecutar
docker inspect sshd, luego editar la dirección ip del docker y el puerto en wetland.cfg
- el puerto ssh de sshd debe ser el mismo que el de wetland
- eliminar y reemplazar el contenedor sshd de vez en cuando si lo deseas
Ejecución
- Ejecutar
- ejecutar
nohup python main.py &
- Detener
- ejecutar
netstat -autpn | grep 22
- luego
kill pid_number
- ahaha
- Limpiar
- Quizás debas eliminar algunas interfaces creadas por el módulo de red manualmente.
- ejecutar
ip link list
- luego
ip link del dev wdxxxxxx
- finalmente limpiar la tabla nat de iptables o simplemente reiniciar
- Ver logs
- ejecutar
python util/clearlog.py -p log eliminará los logs que solo tengan pwd.log, y usuario:contraseña se escribirá en el archivo -l, por defecto ./pwd.txt
- luego usar playlog.py en util
- cambios en el sistema de archivos
- filechange.py copiará la capa de lectura-escritura del contenedor sshd a ./ , la capa incluye lo que el hacker creó y eliminó
- ej.
docker inspect sshd --format '{{.Id}}' | python filechange.py -
Wetland dockerizado
- ejecutar
docker pull ohmyadd/wetland
- verlo en docker hub
POR HACER
-
wetland dockerizado
-
crear una imagen sshd docker realista
-
automatizar la creación del contenedor sshd
-
añadir watchdog
-
utilizar el incoming y outgoing de bearychat
-
sistema de logs distribuido y soporte para hpfeeds