(Update @ 15. März – Kleinere Bemerkung zu Firewalls/Router hinzugefügt.)
Hallo.
Ich wollte heute einmal erklären, wie man sich einen Amun Honeypot auf einem Linux System installiert. (Getestet wird hier in einer VM mit Debian 5.0 Lenny)
Vorneweg: Ich erkläre das ganze anhand der aktuellen Amun Version 0.1.7, da mir das am sinnvollsten erscheint. Vorraussetzungen für die erfolgreiche Einrichtung sind Basiskenntnisse im Umgang mit Linux, besonders Debian Systemen.
Was benötigt man dafür?
Als allerstes natürlich ein funktionierendes Hostsystem. Hierbei empfiehlt sich ein kleiner vServer, den man dann ausschließlich nur für den Honeypot verwendet. Oder alternativ auch ein kleiner HomeServer. Extra einen teuren Rootserver würde ich dafür nicht kaufen.
Dazu basiert Amun auf der Python Skriptsprache. Sollte der passende Interpreter noch nicht installiert sein, könnt ihr diesen sehr einfach nachinstallieren:
$ su -
$ apt-get install python
Desweiteren braucht Amun noch die Psyco Erweiterung für Python, welche ebenfalls im Debian Repository zu finden sein sollte.
$ su -
$ apt-get install python-psyco
$ exit
Und zu guter letzt noch den eigentlich Amun Honeypot, welcher hier zu finden ist: http://sourceforge.net/project/platformdownload.php?group_id=221628
Möchtet ihr submit-mysql oder log-mysql nutzen, wird außerdem noch MySQLdb benötigt. Wenn ihr log-surfnet nutzen möchtet, wird psycopg2 genutzt.
Vorbereitungen & Konfiguration
Ihr steht jetzt vor eurem frischen Debian System und habt Python und Python-Psyco installiert. (Falls die beiden Module genutzt werden, auch die anderen Pakete.)
Legt einen neuen User “Amun” an und meldet euch mit diesem an. Geht in das Homeverzeichnis des Users und ladet euch per wget die aktuelle Amun Version.
Extrahiert das tar.gz Archiv und begeht euch in den Ordner. Ihr findet weitere Unterordner wie config/, log-modules/ usw. vor. Doch bevor wir uns der Konfiguration widmen, werden wir dem System erstmal sagen, das Amun beim Systemstart mitgestartet werden soll. Dazu benötigen wir ein kleines Startscript:
#!/bin/sh
# Amun Honeypot Startscript# path to amun server
amuncommand=”/usr/bin/env python /home/amunserver/amun/amun_server.py”case “$1″ in
start)
echo -n “Starting Amun Honeypot… ”
start-stop-daemon –start –quiet –pidfile /var/run/amunserver.pid –make-pidfile –background –exec $amuncommand
echo “done.”
;;
stop)
echo -n “Stoping Amun Honeypot… ”
start-stop-daemon –stop –quiet –pidfile /var/run/amunserver.pid
echo “done.”
;;
*)
echo “Usage: /etc/init.d/amun {start|stop}”
exit 1
;;
esacexit 0
In der Variable amuncommand gebt ihr den Pfad zum amun_server.py, samt Pythonumgebung an. Speichert das Script als amun unter /etc/init.d/amun ab.
Nun könnt ihr Amun jederzeit per /etc/init.d/amun {start|stop} starten oder stoppen.
Jetzt müssen wir dem System noch sagen, er soll es bei jedem Systemstart starten.
$ su -
$ update-rc.d amun defaults
$ exit
Fertig. Ab sofort startet Amun jedesmal beim booten des System mit. Endlich können wir mit der Konfiguration des Amun Honeypots beginnen.
Geht wieder in das Verzeichnis, wohin ihr den Amun Honeypot entpackt habt. Dort cd’t ihr in das conf/ Verzeichnis.
Passen wir jetzt zuerst einmal die amun.conf an. Dazu öffnet ihr diese mit einem beliebigen Editor. (vim oder nano)
### define the amun server ip
ip: 0.0.0.0
Dort könnt ihr, falls der Server mehrere IP Adressen besitzt eine von diesen eintragen, oder per 0.0.0.0 einfach auf allen Adressen horchen lassen.
### define submission modules
submit_modules:
submit-md5,
# submit-anubis,
# submit-cwsandbox,
# submit-joebox
Solltet ihr eure Malware an verschiedene Sandbox-Dienste schicken wollen, nehmt die # vor submit-anubis und/oder submit-cwsandbox und/oder submit-joebox weg.
### define logging modules
log_modules:
# log-surfnet
Hier sind die logging Module. Standard steht hier nur das log-surfnet Modul auskommentiert drinne. Hier könnt ihr noch nach belieben log-blastomat, log-mail, log-mysql und log-syslog adden. (Auf die Konfiguration dieser Dienste gehe ich aber nicht weiter ein.)
Unter den vuln_modules usw. braucht ihr nichts verändern. Solltet ihr allerdings hinter einem Router oder einer Firewall sitzen, müsst ihr diese Ports die bei den vuln_modules angegeben sind dort forwarden, da euer Honeypot sonst keine Angriffe erhalten kann. (Wie auch, wenn der “Zutritt” zum System nicht gewährt ist? :p)
Als einfachste Methode empfiehlt sich hier einfach eine DMZ für den Server zu öffnen.
Schauen wir uns jetzt die Konfiguration der submit Module an.
### define the email address reports should be sent to
### (set to None if only logging to submission.log should be enabled)
reportToEmail: None
Ersetzt das None mit einer eurer E-Mail Adressen um die Logs an diese E-Mail geschickt zu bekommen. (Achtung, nutzt ein extra Postfach für die Logs, da es sehr viele werden.)
Dies tut ihr in allen 3 submit Modulen, falls ihr alle 3 nutzen möchtet.
Soweit, so gut. Was die log Module angeht, müsst ihr selber mal schauen, da ich sie nie wirklich genutzt habe. Sollte aber nicht sonderlich schwer sein, da alles in den Files kommentiert ist.
Voil’a. Euer Amun Honeypot ist soweit erfolgreich konfiguriert. Ihr könnt diesen jetzt per /etc/init.d/amun start zum Leben erwecken.
Viel Spaß nun mit eurem frischen Amun Honeypot. :]
Anmerkungen, Probleme, usw. bitte als Kommentar verfassen.
















Pingback: GlasBlog » Blog Archive » Amun Tutorial
mmmh ein Tutorial für Whitehat Scriptkiddys…
Hi, ich dacht ich bin einfach mal so dreist und stell hier meine Frage. Ich habe soweit alles konfiguriert und es läuft. Der Honeypot läuft auf einer VM mit Debian Lenny. Das einzige Problem ist wenn ich weitere IP Adressen ausser der auf dem Amun läuft (alle im selben Netz) in der Config einbinde immer diese Fehlermeldung beim starten von Amun bekomme:
amun_server socket error:
(99, ‘Cannot assign requested address’)
Traceback (most recent call last):
File “./amun_server.py”, line 1258, in
runMain()
File “./amun_server.py”, line 1049, in runMain
server = amunServer((amun_server_ip,port), “tcp”, currentSockets, decodersDict, event_dict, vuln_modules, divLogger, config_dict)
File “./amun_server.py”, line 78, in __init__
raise
File “./amun_server.py”, line 71, in __init__
self.bind(self.address)
File “/usr/lib/python2.5/asyncore.py”, line 303, in bind
return self.socket.bind(addr)
File “”, line 1, in bind
socket.error: (99, ‘Cannot assign requested address’)
Die amun.conf sieht folgenderweise aus:
### define the amun server ip
ip: ***.***.**.**, ***.***.**.**
Ich dachte das ich vllt via Arpd den Verkehr umleiten muss, das hat leider aber auch nicht geklappt, es kommt immernoch die selbe Fehlermeldung.
Wäre echt froh wenn ich einen Denkanstoss bekommen würde!
Danke schon einmal!
Nabend,
der Fehler ist mir selber noch nicht wirklich vorgekommen. Hab mal ein wenig im Netz geschaut und gesehen, dass der Socket Error #99 wohl damit zusammenhängen könnte, das ein anderer Dienst auf deinem System einen Port nutzt, den Amun selber benutzt, deshalb aber nicht binden kann. Hatte auf meinem System auch mal kurz getestet, eine zweite IP in die Config einzutragen und Amun brachte mir keine Fehlermeldungen. Außerdem sollte Amun auch als root gestartet werden, damit Ports unter 1024 gebunden werden können.
Ich würd einfach mal testen, alle vermeintlichen Services zu killen. (Zur Not noch nachverfolgen, welche Anwendung denn nun welchen Port belegt.)
Falls das nicht klappen sollte, kannst du auch mal beim Programmierer des Amun Honeypots nachfragen => http://zeroq.kulando.de/
Hi,
danke für die Antwort!
Amun wird immer als Root gestartet. Das komische ist ja das es mit der Adresse auf dem Amun physikalisch läuft fuktioniert, hier ist ein paar Ports schon vergeben, bringt allerdings keine Fehlermeldung. Nur sobald ich eine neue freie IP-Adresse eintrage, auf der rein garnichts läuft, kommt diese Fehlermeldung.
Ich melde mich mal bei dem Programmierer, aber danke für die Antwort!
Grüße