Hallo.
Und zwar soll es in diesem Thread um die Möglichkeiten gehen, Logs von Keyloggern zu übertragen.
Grob gesagt gibt es zwei Möglichkeiten, im Programm die
Eingaben zwischenzuspeichern:
1. Man loggt in eine Variable (beispielsweise eine Stringvariable)
2. Man loggt in eine Datei, die lokal auf dem Rechner des Victims liegt (möglichst verschlüsselt).
Vorteil/Nachteil von 1:
[+] Keine Datei/Ordner, die vom Victim entdeckt werden könnte
[+] Möglicherweise überhaupt garkein Zugriff seitens des Keyloggers auf das Dateisystem des Victims nötig
[-] Sofern Victim offline am PC arbeitet, werden diese Logs möglicherweise niemals ankommen, da sie ja nur im RAM liegen
Vorteil/Nachteil von 2:
[+] Log permanent vorhanden, kann also auch zu einem späteren Zeitpunkt verwendet werden [Offline Logging]
[-] Eine Datei/Ordner, die vom Victim entdeckt werden könnte
Zur Übertragung:
1. TCP/UDP das wäre ein Online-Keylogger
2. Per E-Mail
3. Per Http-Upload (beispielsweise Php Datei)
Vorteil/Nachteil von 1:
[+] Direktes, live Mitlesen
[+] Es müssen zur reinen Übertragung von den Logs nicht extra Benutzerdaten einkompiliert werden
[-] Nur möglich, wenn man selbst den Server geöffnet hat. Anderweitig empfängt man die Logs nicht.
Vorteil/Nachteil von 2:
[+] Man könnte direkte Benachrichtigungen erhalten, sofern eine neue E-Mail ankommt
[-] Man muss ggf. Benutzerdaten ins Programm kompilieren, sofern man keine anderen Dienste über Php nutzt ( sei es auch die Zielemailadresse)
Vorteil/Nachteil von 3:
[+] Definitiv keine eigenen Benutzerdaten außer einem Link vom Webspace nötig
[-] Hier muss man abwägen, ob man einen Gesamtlog überträgt und die Php Datei den Gesamtlog schreiben lässt oder nur Teillogs.
Bei einem Gesamtlog besteht die Gefahr, dass andere einem die gesamten Logs weglöschen könnten.
Bei Teillogs muss man wiederum "splitten", was bereits gesendet wurde und was nicht.
Zum Sendezeitpunkt und Loginhalt:
Ich habe Victims erlebt, die schreiben pro Tag nur 30 Zeichen (loggen sich z.B. mit zwei Accounts auf Lesewebseiten ein und scrollen dann nur).
Eine Überprüfung der Zeichenlänge, z.B. die Überprüfung ob 1000 Zeichen getippt wurden, würde bei diesen Menschen (sofern man überhaupt in eine Datei loggt), erst nach dutzenden Tagen oder gar Monaten zu einer Übertragung des Logs führen.
Sofern man in eine Stringvariable loggt und dieses Zeichenanzahl überprüft, würde man de facto nie einen Log erhalten, sofern die Victims sich so verhalten.
Sehr suboptimal, da man ja einerseits alles immer erhalten möchte, andererseits kein Polling betreiben möchte.
Was wenn Gamer beispielsweise die Taste "s" 100x drücken?
Gut , diesen Spam könnte man mit Regex wie folgt erkennen:
DerJeweiligeString = Regex.Replace(DerJeweiligeString, "(.+)\1{6,}", "")
Das würde ab einer wiederholten Zeichenfolge der Anzahl 6 (z.B. "rrrrrr") alles entfernen.
Soweit sogut, jetzt loggt sich der Benutzer danach aber in Facebook ein und sein Kennwort
ist zufälligerweise: "wwwwww46478". Shice, jetzt wird das "wwwwww" weggeschnitten und wir haben das Kennwort nicht.
Wie entfernt man also diesen Spam? Gute Frage...
Zurück zur Frage davor. Man könnte natürlich anstatt die Zeichenanzahl zu prüfen, einfach
einen Zeitintervall festlegen. Beispielsweise legt man den Intervall 5 Minuten fest.
Was ist jedoch, wenn der Benutzer den PC hochfährt, sich einloggt auf Facebook und
danach direkt wieder herunterfährt? Ups, das hat keine 5 Minuten, sondern nur 3,5 Minuten gebraucht -> Scheiße, wir erhalten keinen Log.
Jetzt könnte man natürlich Intervall auf 1 Minute stellen, aber das wäre auch wieder mehr oder weniger Polling.
Schreibt, was ihr für Ideen habt würde mich interessieren.
Bearbeitet von <Kevin>, 25 May 2015 - 21:21 Uhr.