Dies ist das Archiv für 19 May 2009.

Develop and Improve Nepenthes

Abgelegt unter Honeypot, Nepenthes am 19 May 2009
Other Languages: None

Unter der Schirmherrschaft des Google Summer of Codes will Markus Koetter einige Änderungen an Nepenthes vornehmen:

  • low interaction honeypot
  • supporting ipv4, ipv6 and unix domain sockets
  • supporting tcp, udp and ssl/tls to serve and connect services
  • interfacing p0f to fingerprint incoming connections
  • embedding python to allow writing service protocols in a scripting language
  • using libemu to detect and emulate shellcode
  • downloading malware via the most common protocols

Besonders interessant finde ich den Ansatz, Python als Möglichkeit zum Entwickeln von Services in nepenthes einzubinden. Meiner Meinung nach kränkelte nepenthes schon lange an einer hohen Hürde zum Erstellen neuer Vulnerability Module.

Glastopf lernt schnattern

Abgelegt unter Glastopf, Honeypot, Internet am 12 May 2009
Other Languages: None

Der, im Scherz geäußerte, Wunsch eines Freundes nach Twitter-Nachrichten vom Glastopf hat mich dazu motiviert einen kurzen Blick auf die Twitter-API zu werfen. Interessant ist für mich: Twitter REST API Method: statuses update. Verwenden kann man diese Schnittstelle mit Python relativ einfach:

import urllib
 
message = "Hello Twitter!"
data = urllib.urlencode({"status" : message})
res = urllib.urlopen(
        "http://%s:%s@twitter.com/statuses/update.xml" % 
        (username,password), data)

Sehr einfach und trotzdem effektiv. Es werden keine Module außer den “build-in” gebraucht. Man sollte beachte, das Twitter Nachrichten die aus mehr als 140 Zeichen bestehen abschneidet. Aktuell ist die Twitter-Erweiterung für den Glastopf noch in der Testphase, will man schon mal einen Eindruck von den später verfügbaren Funktionen bekommen, lohnt sich ein Blick auf meine Twitter Page.

Omnivora Windows Honeypot

Abgelegt unter Honeypot, Nepenthes am 11 May 2009
Other Languages: None

Omnivora ist ein von Philipp Trinius entwickelter low-interaction Honeypot für Windows. Prinzipiell orientiert er sich stark an Nepenthes.
Omnivora (Projekt Blog) ist jedoch primär nicht für den produktiven Einsatz gedacht, vielmehr soll hiermit ein Werkzeug gereicht werden, um unerfahrenen Personen auf einfache Weise das Funktionsprinzip eines Honeypots näher zu bringen. Diesen Anspruch erfüllt Omnivora auch ausreichend gut. Schön wäre noch eine grafische Auswertung der gesammelten Daten und ein paar Möglichkeiten Angriffe zu simulieren.
Auf der Homepage der Universität Mannheim findet man noch weitere Informationen zum Background und der gesteckten Ziel.
Der Honeypot ist frei bei Sourceforge zu erhalten.

TrumanBox

Abgelegt unter Monitoring, Sandbox am 11 May 2009
Other Languages: None

Seit geraumer Zeit sind die Ergebnisse der Diplomarbeit von Christian Gorecki verfügbar. Thema war die TrumanBox, eine quasi Simulation des Internets um das Verhalten von Malware, in z.B. einer Sandbox, länger beobachten zu können.

Die komplette Diplomarbeit und den Quellcode der TrumanBox findet man hier.

Glastopf IRC Bot

Abgelegt unter Glastopf, Honeypot, IRC, Internet, Monitoring, RFI am 7 May 2009
Other Languages: None

Seit langen spiele ich schon mit dem Gedanken, dem Glastopf Web Honeypot ein IRC Log Bot zu verpassen. An sich eine nicht all zu schwere Aufgabe:
Im Folgenden möchte ich kurz erläutern, wie ich mir das vorstelle und worauf ich meine Lösung aufbaue.

class ircbot():
    """IRC client class"""
    def __init__(self):
        self.s=socket.socket()
        self.s.connect((server, port))
        self.s.send(nick)
        self.s.send(ident)

Hier definiere ich Variablen und verbinde zum IRC Server.

    def ircthread(self):
        """IRC client"""
        readbuffer = ""
        while True:
            readbuffer=readbuffer+self.s.recv(1024)
            temp=readbuffer.split("\n")
            readbuffer=temp.pop()
            for line in temp:
                line=line.rstrip()
                line=line.split()
                print line
                if(line[0]=="PING"):
                    self.s.send(PONG)

Dies ist der Prozess, der sich um die Kommunikation mit dem IRC Server kümmert.

    def sendfunc(self, message):
        """Sends the message to the IRC channel"""
        while True:
            if self.joined == True and message != "":
                self.s.send(message)
                message = ""
                time.sleep(2)
                break

Hiermit sende ich die Nachricht vom Glastopf an den IRC Channel.

if __name__ == '__main__':
    # Wir erstellen eine Instanz...
    bot = ircbot()
    # Starten die Kommunikation mit dem Server...
    ircthread = threading.Thread(target=bot.ircthread)
    ircthread.start()
    # Und schreiben in den channel:
    bot.sendfunc("Send this to the channel!")
    bot.sendfunc("Log this!")

Die ist das ungefähre Prinzip meines IRC Log Bots. Ich muss mir noch Gedanken über: Quits: glastopfbot (glastopfbot@ip) (Excess Flood) machen und wie der Bot reagiert, wenn er mit dem Senden von Nachrichten an den Server nicht mehr hinterher kommt. Da wir immer ein time.sleep() brauchen, kann, je nach Platzierung der Log Nachrichten, der Bot die Antwort an den Angreifer verzögern oder es könnte zum Timeout kommen.


Design von Robin Hastings - Farbanpassung von Ulysses Ronquillo