Tutorial: Aufsetzen eines Amun Honeypots

(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
;;
esac

exit 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.

Post to Twitter

Dieser Beitrag wurde unter Allgemein abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

5 Antworten auf Tutorial: Aufsetzen eines Amun Honeypots

  1. Pingback: GlasBlog » Blog Archive » Amun Tutorial

  2. ultraanonymus sagt:

    mmmh ein Tutorial für Whitehat Scriptkiddys…

  3. Fuesiks sagt:

    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!

  4. duke sagt:

    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/

  5. Fuesiks sagt:

    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

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>