Wetland
Wetland est un honeypot SSH à haute interaction,conçu pour enregistrer les attaques par force brute. De plus, wetland enregistrera les interactions shell、scp、sftp、exec-command、direct-forward、reverse-forward effectuées par l'attaquant.
Wetland est basé sur le module ssh python paramiko. Et wetland fonctionne comme un serveur TCP multi-threading utilisant SocketServer.
Features
- Utiliser docker pour fournir un environnement linux réel.
- Toute authentification par mot de passe sera redirigée vers docker.
- Toutes les commandes seront exécutées sur docker.
- Sauvegarder une copie du fichier lorsque le hacker télécharge des fichiers via SFTP.
- Extraire et sauvegarder les fichiers du journal d'exécution lorsque le hacker télécharge des fichiers via SCP.
- Fournir un script playlog pour rejouer les logs de type [shell | exec | direct-forward | reverse-forward].
- Fonctionnalité réseau avancée pour usurper l'adresse IP de l'attaquant entre wetland et docker (grâce à honssh).
- Plusieurs façons de vous prévenir lorsque wetland est touché par un hacker, mais actuellement seulement par email et bearychat.
Requirements
- Un système Linux (testé sur Ubuntu)
- images sshd dans docker (par exemple rastasheep/ubuntu-sshd)
- python2.7
- paramiko
- yagmail
- IPy
- requests
Setup and Configuration
- Copier wetland.cfg.default vers wetland.cfg
- Générer les clés utilisées par le serveur ssh
- exécuter
mkdir data
- exécuter
ssh-keygen -t rsa, et les placer dans data/
- exécuter
ssh-keygen -t dsa, et les placer dans data/
- Rappelez-vous que Wetland et le conteneur sshd doivent utiliser les mêmes clés.
- Installer les dépendances python
- exécuter
pip install -r requirements
- Configurer la bannière du serveur ssh
- Modifier la bannière dans wetland.cfg
- Elle doit être identique à la bannière ssh du conteneur sshd
- Ou vous pouvez exécuter
python util/initwetland.py ./,ce script fera tout le travail ci-dessus
- Configurer les plugins de sortie dans wetland.cfg
- activer ou désactiver dans la section
[output]
- Modifier l'URL du robot entrant lors de l'utilisation de bearychat
- Modifier l'utilisateur、mot de passe... lors de l'utilisation de l'email
- Installer p0f si vous le souhaitez
- exécuter
git clone https://github.com/p0f/p0f
- exécuter
cd p0f
- exécuter
./build.sh
- Modifier la section
[p0fp0f] dans wetland.cfg
- si vous n'avez pas besoin de p0f, désactivez-le simplement dans la section [output]
- Installer docker
- installer docker avec la documentation sur www.docker.com
- exécuter
docker search sshd, puis choisir une image exécutant sshd
- exécuter
docker run -d --name sshd sshd_image_name
- exécuter
docker inspect sshd, puis modifier l'adresse IP et le port de docker dans wetland.cfg
- le port ssh de sshd doit être identique à celui de wetland
- supprimer et remplacer le conteneur sshd de temps en temps si vous le souhaitez
Running
- Exécution
- exécuter
nohup python main.py &
- Arrêt
- exécuter
netstat -autpn | grep 22
- puis
kill pid_number
- ahaha
- Nettoyage
- Vous devrez peut-être supprimer manuellement certaines interfaces créées par le module réseau.
- exécuter
ip link list
- puis
ip link del dev wdxxxxxx
- enfin, nettoyer la table NAT d'iptables ou redémarrer
- Visualiser les logs
- exécuter
python util/clearlog.py -p log supprimera les logs qui ne contiennent que pwd.log, et les noms d'utilisateur:mots de passe seront écrits dans le fichier -l, par défaut ./pwd.txt
- puis utiliser playlog.py dans util
- modifications du système de fichiers
- filechange.py copiera la couche lecture-écriture du conteneur sshd dans ./ , cette couche inclut ce que le hacker a créé et supprimé
- e.g.
docker inspect sshd --format '{{.Id}}' | python filechange.py -
Dockerized wetland
- exécuter
docker pull ohmyadd/wetland
- voir sur docker hub
TODO
-
ajouter watchdog
-
créer une image docker sshd réaliste
-
automatiser la création du conteneur sshd
-
ajouter watchdog
-
utiliser les fonctionnalités entrantes et sortantes de bearychat
-
système de logs distribué et support hpfeeds