Hilfe, ich wurde gehackt und soll jetzt zahlen

12.03.2019, 12:22 - Autor: PGD

Erpressung gibt es online in vielen Varianten. Ob das Weihnachtsgeschäft eines Webshops mit DDOS lahmgelegt wird oder eine Firma damit erpresst wird Geschäftsgeheimnisse zu veröffentlichen oder die Daten Verschlüsselt und Geld für das Entschlüsselungspasswort verlangt oder oder oder...

Der Einfallsreichtum einiger ist recht groß wenn es darum geht an Ihr Geld zu kommen. Dinge wie Datendiebstahl, Cryptotrojaner und (D)DOS haben wir bereits besprochen und daher will ich in diesem Punkt auf eine relativ primitive Masche eingehen, die jedoch sehr gekonnt mit dem Ängsten und Unwissen der meisten User spielt. Diese sogenannten "Scaremails" sind wie die meisten anderen Angriffe auch relativ primitiv. Dafür lässt sich hier der Erfolg des Angriffs auch genau beziffern. Also sehen wir uns einmal eine solche Mail an:

I’m aware that "supergeheim" is your password.

You don’t know me and you’re thinking why you received this e mail, right?

Well, I actually placed a malware on the porn website and guess what, you visited this web site to have fun (you know what I mean). While you were watching the video, your web browser acted as a RDP (Remote Desktop) and a keylogger which provided me access to your display screen and webcam. Right after that, my software gathered all your contacts from your Messenger, Facebook account, and email account.

What exactly did I do?

I made a split-screen video. First part recorded the video you were viewing (you’ve got a fine taste haha), and next part recorded your webcam (Yep! It’s you doing nasty things!).

What should you do?

Well, I believe, $700 is a fair price for our little secret. You’ll make the payment via Bitcoin to the below address (if you don’t know this, search “how to buy bitcoin” in Google) .

BTC Address: 1JmfaVr3x5fRKRmuhUBpWNQFy51Sfo4T6u
(It is cAsE sensitive, so copy and paste it)

Important:
You have 48 hours in order to make the payment. (I have an unique pixel within this email message, and right now I know that you have read this email). If I don’t get the payment, I will send your video to all of your contacts including relatives, coworkers, and so forth. Nonetheless, if I do get paid, I will erase the video immidiately. If you want evidence, reply with “Yes!” and I will send your video recording to your 5 friends. This is a non-negotiable offer, so don’t waste my time and yours by replying to this email!



Im Grunde wird versucht Ihnen weis zu machen, dass Ihr Computer gehackt und ein kompromittierendes Video, dass Sie bei der Selbstbefriedigung zeigt angefertigt wurde.

Als kleinen Beweis für das vermeintliche können des angeblichen Hackers wird Ihnen entweder eines Ihrer Passwörter genannt oder Ihre Telefonnummer oder die Mail stammt scheinbar von Ihrer eigenen Mail-Adresse. Wie leicht eine Email zu fälschen ist haben wir ja bereits gesehen also wollen wir uns im weiteren ansehen wie diejenige Person an Ihre Email und Ihre Telefonnummer oder eines Ihrer Kennwörter kommt.

Manche werden es sich schon gedacht haben - das Zauberwort heißt: SQL-Injection bzw. kurz SQLi. An dieser Stelle will ich mit Ihnen einen solchen Angriff durchspielen...

Stellen wir uns vor wir hätten es mit einem verwundbaren Suchformular zu tun. Verwundbar heißt in dem Fall, dass der Entwickler die User-Eingaben nicht filtert und daher kann ein Angreifer SQL-Code auf der Seite ausführen.

Sagen wir um die Produktsuche durchzuführen wird folgende SQL-Abfrage ausgeführt:

SELECT name, beschreibung, preis FROM produkte WHERE name LIKE '%[SUCHMUSTER]%'

Hier wird dann anstatt [SUCHMUSTER] die Formulareingabe platziert. Eine derartiges SQL-Statement dient dazu Daten aus einer Datenbank abzufragen. Diese Abfrage bedeutet frei übersetzt:

GIB MIR name, beschreibung, preis AUS DER TABELLE produkte WENN DAS FELD name DEM FOLGENDEN MUSTER ENTSPRICHT 'BELIEBIGE ZEICHEN [SUCHMUSTER] BELIEBIGE ZEICHEN'

Solange der User als Suchmuster "Laptop", "Maus", "Tastatur" oder "Campingkocher" eingibt ist alles gut. Es entsteht aber ein Problem wenn die Eingabe beispielsweise

asdfgh' UNION email, password, id FROM kunden WHERE username LIKE '

lautet. Sehen wir uns an was passiert wenn wir diese Eingabe in den SQL-String einbauen:

SELECT name, beschreibung, preis FROM produkte WHERE name LIKE '%asdfgh' UNION SELECT email, password, id FROM kunden WHERE username LIKE '%'

Frei Übersetzt heißt die Abfrage nun:

GIB MIR name, beschreibung, preis AUS DER TABELLE produkte WENN DAS FELD name DEM FOLGENDEN MUSTER ENTSPRICHT 'BELIEBIGE ZEICHEN asdfgh' UND DANACH DIE FELDER email, password, id DER TABELLE kunden WENN DAS FELD username DEM FOLGENDEN MUSTER ENTSPRICHT 'BELIEBIGE ZEICHEN'

Ein Produktname, der auf asdfgh endet wird eher nicht gefunden werden aber die Felder email, password und id der kunden-Tabelle eines jeden Benutzernamens erzeugen dann eine Liste, die anstatt der Produkte angezeigt werden kann.

Hierbei ist die ID-Spalte als eindeutige Identifikationsnummer des Eintrages besonders geeignet um dann Daten später zusammenzuführen. So kann in einem zweiten Durchlauf telefon, username und id abgefragt und die zwei Listen anhand der ID-Nummer dann vereint werden.

Natürlich müsste man dazu auch die entsprechenden Spaltennamen und Tabellennamen kennen. Diese lassen sich erraten oder aus einer bestimmten Tabelle einer bestimmten Datenbank in der der DB-Serverdienst die einzelnen Datenbanken, Tabellen, User, etc. verwaltet auslesen.

Da es doch sehr viele einzelne Schritte erfordert erstmals einen verwundbaren Parameter zu finden und sich dann mit zig Abfragen durch die Datenbankverwaltung zu wühlen bis man endlich die Daten exfiltrieren kann ist dieser Angriff technisch doch recht Anspruchsvoll. Allerdings gibt es Tools, die dem Angreifer diese Arbeit abnehmen und die Durchführung eines solchen Angriffs zum Kinderspiel machen. Eines dieser Tools wäre SQLmap (http://sqlmap.org/) welches ich in meinem Buch "Hacken mit Kali-Linux" ausführlich behandle.

Das Aufwändigste ist hierbei das finden einer verwundbaren Webseite und das füttern von SQLmap mit den ganzen URLs um auf die Verwundbarkeit zu testen.

Die zumeinst gehashten Passwörter werden dann mit Tools wie zB der CSVHashCrack Suite geknackt und dann als Feld in eine Email eingefügt wie zB bei einem Serienbrief in Word. Schafft man es nicht das Passwort herauszufinden hat man immer noch Dinge wie Login-Namen, Zeit des letzten Logins, etc. aus denen man ein Paar Details entnehmen kann um das Opfer zu ängstigen. Ein derartiges Tool selbst zu entwickeln wäre ebenfalls kinderleicht. Es benötigt nur wenige Zeilen Python-Code:

csv="""email1@domain1.net,strenggeheim
email2@domain2.com,passwort2
email3@domain3.de,passwort3""".split("\n")

mail_text = 'I know your password is "%PASS%"...'

import smtplib
from email.mime.text import MIMEText

server = smtplib.SMTP("mail.spamschleuder.net", 587)
server.login("spammer@spamschleuder.net", "passw1234")
sender = "spammer@spamschleuder.net"

for line in csv:
    email, pw = line.split(",")
    print("sending mail to "+email)
    
    msg = MIMEText(mail_text.replace("%PASS%", pw))
    msg["Subject"] = "I know what you did last Summer" 
    msg["From"] = sender
    msg["To"] = email

    server.sendmail(sender, email, msg.as_string())


Wie üblich habe ich hier drauf verzichtet die Daten aus einer Datei zu laden und ein paar Testdaten am Anfang der Datei aufgeführt und diese an den Zeilenschaltungen mit .split("\n") getrennt.

Danach habe ich die Serienmail-Vorlage in der Variable mail_text abgelegt und die benötigten Module importiert.

Mit server = smtplib.SMTP(...) und server.login(...) bauen wir die Verbindung zum Postausgangsserver unserer Wahl auf, hierbei verden Server-URL, Port, Login und Passwort für den Server angegeben. Dann wird die Absender-Adresse in sender gespeichert.

In der for-Schleife werden nun alle Zeilen der CSV-Liste durchlaufen und für jede Zeile die folgenden Aktionen ausgeführt:

Zuerst wird die Zeile mit line.split(",") am Komma aufgetrennt und der erste Wert in email und der zweite Wert in pw gespeichert. Dann wird mit print(...) am Monitor ausgegeben an welche Mail gerade die Nachricht rausgeht.

In den folgenden vier Zeilen wird eine Email erstellt. Hierbei wird zuerst der Text angelegt indem %PASS% durch das eigentliche Passwort (Inhalt der Variable pw) ersetzt wird und der daraus resultierende Text der Funktion MIMEText() übergeben wird.

Dann wird noch der Betreff (Subject), Absender (From) und Empfänger (To) definiert und die vorbereitete Mail mit server.sendmail(...) abgeschickt.

Sollte ein "Spaßverderber" von Admin am Postausgangsserver ein stündliches Limit für den Emailversand festgelegt haben, wovon stark auszugehen ist, dann reicht es nach server.sendmail(...) noch ein time.sleep(X) einzufügen. Wobei hier das X durch die entsprechende Sekundenanzahl zu ersetzen wäre. Außerdem müsste man oben noch das Modul time einbinden.

Ein geübter Entwickler bastelt so etwas in der Kaffeepause aber selbst ein unerfahrener Anfänger, der einige Dinge erst mal googeln müsste wird kaum mehr als 1-3 Stunden inverstieren müssen.

Natürlich wird Ihnen auch angeboten, dass Sie den "Hacker" auf die Probe stellen können. Sie brauchen nur zu Antworten und Sie werden vor 5 Kontakten bloßgestellt. Die kurze Zahlungsfrist von 48 Stunden und die aggressive Art soll Sie einschüchtern damit Sie das "Schweigegeld" zahlen ohne vielmehr nachzufragen.

Allerdings hat es auf einen anderen Grund - der Erpresser könnte Ihnen nicht antworten oder mit Ihnen über die Höhe des Schweigegeldes oder sonstwas verhandeln selbst wenn er wollte. Einige Personen haben sich sicher schon über die Spammails beschwert und der Account ist eventuell schon geblockt wenn Sie die Mail lesen oder wird es in Kürze sein!

Sie sind der Meinung, dass niemand auf einen derart billigen Trick herreinfällt? Dann überprüfen wir Ihre Theorie doch mal - da der Erpresser die Zahlung in Bitcoins verlangt können wir die Zahlungen sehen. Bitcoins sind zwar anonym da Zahlungen nur zwischen BTC-Adressen erfolgen und dabei keine Namen oder andere persönliche Informtionen im Spiel sind allerdings sind alle diese "anonymen" Transaktionen öffentlich einsehbar. Rufen wir die BTC-Adresse bei

https://bitref.com/ oder https://www.blockchain.com/

Sie sehen also, ganz so anonym sind Bitcoins dann doch nicht. Das liegt einfach am System einer öffentlichen Blockchain, die diese Informationen auf verschiedenste Rechner verteilt und da alle diese Kopien übereinstimmen müssen werden die Einträge dadurch zwar fälschungssicher aber auch öffentlich zugänglich.

So kann der Weg des Geldes auch weiter von Adresse zu Adresse verfolgt werden bis dieser bei einem Exchange endet oder bei einer Bank die einen Geldautomaten betreibt. Sobald aus den Bitcoins dann irgendeine andere Währung wird ist es meist vorbei mit der Anonymität.

Es wurden also 0.82606344 BTC "verdient" und gleich weiter transferiert und das zwischen dem 18. und 25.12.2018. Umgerechnet entspricht das ca. 2.600 EUR - nicht schlecht als Verdienst von einer einzigen Woche.

Vier Zahlungen entsprechen in der Höhe ca. den geforderten 700 USD. Sie sehen hier also "Schwarz auf Weiß" 2.600 Gründe warum die andauernde Flut an Spammails nicht so schnell abreißen wird. Beachten Sie hier auch, dass wir nur von wenigen Tagen und einer einzigen Zahlungsadresse sprechen. Niemand weiß wieviele Serienmails mit wievielen BTC-Adressen diese Person versandt hat - wir können die "Verdienstmöglichkeiten" allerdings erahnen. Wer sich selber keine Email-Listen aus kleinen Foren oder Portalen exfiltrieren will der kann im Darknet und einigen Untergrund-Seiten derartige Listen mit hunderttausenden Einträgen für recht wenig Geld beziehen!