Conpot ist ein low interactive Honeypot der verschiedene Steuersysteme von Industrieanlagen nachahmen kann. In diesem Artikel wird eine Möglichkeit für den Betrieb des Honeypots in einem Docker Container vorgestellt.
Für den weiteren Verlauf des Artikels wird ein Computer oder Server benötigt auf dem Docker bereits installiert ist und läuft.
Leider wird von den Entwicklern des Honeypots momentan noch keine
direkte Möglichkeit angeboten einen Docker Container zu erstellen. Aus
diesem Grund wurde für diesen Artikel eine eigene Datei mit dem Namen
Dockerfile
erstellt, die diese Möglichkeit bietet. Der Inhalt dieser
Datei ist im nachfolgenden Beispiel aufgeführt und kann auch
heruntergeladen
werden.
::: {.code-include lexer="Dockerfile"} ../../file/article/2015/02/19/run-conpot-inside-a-docker-container/Dockerfile :::
Die Datei wird für das Erstellen in diesem Artikel verwendet und muss zuerst heruntergeladen werden.
$ mkdir -p /tmp/conpot
$ cd /tmp/conpot
$ wget https://www.dinotools.de/file/article/2015/02/19/run-conpot-inside-a-docker-container/Dockerfile
Anschließend kann der Befehl docker build
zum Einsatz kommen um ein
neues Image für den späteren Container zu erstellen. Dieser Vorgang kann
unter Umständen eine paar Minuten dauern.
$ sudo docker build --rm --tag conpot .
War die Erstellung erfolgreich, wird noch ein Verzeichnis benötigt in dem die Log-Dateien permanent gespeichert werden können. Die Dateien in diesem Verzeichnis bleiben erhalten, auch wenn der eigentliche Container beendet oder gelöscht wird.
$ sudo mkdir -p /opt/honeypot/conpot1
Danach wird es Zeit für den ersten Start des Honeypots in einem neuen Container.
$ sudo docker run --rm --publish 80:80 --publish 102:102 --publish 161:161/udp --publish 502:502 --volume /opt/honeypot/conpot1:/opt/myhoneypot/var conpot
2015-02-18 18:27:45,595 Starting Conpot using template: /usr/local/lib/python2.7/dist-packages/Conpot-0.4.0-py2.7.egg/conpot/templates/default
2015-02-18 18:27:45,595 Starting Conpot using configuration found in: /usr/local/lib/python2.7/dist-packages/Conpot-0.4.0-py2.7.egg/conpot/conpot.cfg
2015-02-18 18:27:45,795 Fetched 89.16.154.168 as external ip.
2015-02-18 18:27:45,797 Conpot modbus initialized
2015-02-18 18:27:45,798 Found and enabled ('modbus', <class conpot.protocols.modbus.modbus_server.ModbusServer at 0x7fbde415f530>) protocol.
2015-02-18 18:27:45,799 Conpot S7Comm initialized
2015-02-18 18:27:45,799 Found and enabled ('s7comm', <class 'conpot.protocols.s7comm.s7_server.S7Server'>) protocol.
2015-02-18 18:27:45,800 Found and enabled ('http', <class 'conpot.protocols.http.web_server.HTTPServer'>) protocol.
2015-02-18 18:27:45,801 Found and enabled ('snmp', <class 'conpot.protocols.snmp.snmp_server.SNMPServer'>) protocol.
2015-02-18 18:27:45,802 No proxy template found. Service will remain unconfigured/stopped.
2015-02-18 18:27:45,802 Modbus server started on: ('0.0.0.0', 502)
2015-02-18 18:27:45,802 S7Comm server started on: ('0.0.0.0', 102)
2015-02-18 18:27:45,802 HTTP server started on: ('0.0.0.0', 80)
2015-02-18 18:27:45,911 SNMP server started on: ('0.0.0.0', 161)
2015-02-18 18:27:50,967 Privileges dropped, running as nobody/nogroup.
Wie die Meldungen beim Start bereits vermuten lassen, werden mehrere Dienste durch den Honeypot angeboten. So verbergen sich hinter den TCP-Ports 80, 102 und 502 sowie hinter dem UDP-Port 161 verschiedene Dienste.
Mit Hilfe der Tastenkombination Strg. + C kann der laufende Honeypot wieder gestoppt werden.
Links
- Webseite: conpot (englisch)
- Webseite: conpot auf GitHub (englisch)
- Webseite: Docker Dokumentation (englisch)