thinkJDs Blog WhooHoo es blinkt!!!

3Sep/108

“Ein genialer Hack!” oder “SQL im Supermarkt?”

Ich habe öfter mit Barcodes zu tun.
Öfter heißt in diesem Fall jeden Tag und Barcodes heißt Code 128, Code 39, Code 2aus5, Datamatrix, Qr und Aztec :-)

In den unendlichen Weiten des Internets ist mir ein genialer Hack über den Weg gelaufen. Obwohl ich wirklich oft mit den Dingern arbeite, bin ich noch nie auf so eine geniale, fast schon bombastische, Idee gekommen.

Wie immer erst mal ein paar Basics:

Es gibt zwei Sorten von Barcodescannern.

  • Laserscanner oder Pen-Scanner
    Diese besitzen eine Diode oder ein Laser der einen Strich über die Barcodefläche zeichnet. Das reflektierte Licht, wird von einem CCD-Sensor im Inneren aufgefangen.
    Dieser spuckt an seinem Ausgang ein Signal aus, Impulsen aus welche man wiederum in die enthaltenen Daten interpretieren kann.
  • Kamerascanner
    Sie haben eine kleine Digicam im Inneren, der Barcode wird abfotografiert und dann das Bild ausgewertet. Diese Scanner könne nicht nur eindimensionale Barcodes wie auf der Käsepackung lesen, sie können auch 2D Codes wie zum Beispiel QR oder Datamatrix entschlüsseln.

Jetzt kommt der Kracher:

Die Laserscanner, welche leider nicht mehr so verbreitet (von Supermarktkassen mal abgesehen HeHeHe) besitzen einen sehr interessanten Angriffsvektor.
Wie schon beschrieben, lesen sie den Barcode indem sie die Impulse des zurückgeworfenen Lichts interpretieren.
Wenn ich jetzt LED sage, habt ihr sicher schon die Zündende Idee dahinter erkannt :-)

barflash1.jpg

Man könnte doch eine LED so ansteuern, dass sie dem Scanner vorgaukelt, ihr ausgesendetes Licht, wäre die Reflektion von einem gescannten Barcode.
So kann man dem Scanner "aus der Ferne" eigene Daten unterschmuggeln.
Das Device im Bild oben, tut genau das.

Ja ja ich hör euch schon sagen: "Na toll und was soll das bringen?"
Ganz einfach, was macht wohl die Supermarktkasse wenn sie einen Barcode gescannt hat?
Richtig! Einen Select auf der DB um den Preis der Wahre heraus zu finden.
Was, wenn der Scanner der Kasse zum Beispiel

0815123456;DROP DATABASE;

scannt und diese Daten ohne weitere Prüfung in die SQL-Abfrage packt?
Ein wunderschönes Beispiel für SQL-Injektion.

Wenn ihr damit mal etwas Spaß haben wollt, könnt ihr euch so ein Device ganz einfach selbst basteln. Die Pläne und den Sourcecode findet ihr auf der Seite des Erfinders. Dazu gibt es noch ein tolles Cheat Sheet, mit dem ihr ein paar gängige Atacken austesten könnt.
Hättet ihr noch ein paar ideeen was man damit anstellen könnte?

Hack The Planet!!! ;-)

thinkJD

Kommentare (8) Trackbacks (0)
  1. Hm. Ein sehr netter Gedanke! Ich kann mir aber nicht vorstellen, dass das ernsthaft funktioniert. Oder anders gesagt: Es wird funktionieren, wenn die Kassiererin das Ding vor lauter Dummheit scannt, die LED somit ins Sichtfeld des CCD bringt, und dabei ein der Datenbank bekannter Code gesendet wird (zB. für ein anderes Produkt). Für Brute-Force im eigentlichen Sinne wird es sicherlich nicht ausreichen.
    Vielleicht sind Supermarktkassen ja so einfach gestrickt, ich würde aber als Entwickler darauf achten, dass der Scanner keinesfalls ein DB-Statement schickt, sondern würde einen Layer einführen, der die Scanner-Signale auf DB-Statements mappt und ungültige Signale verwirft. Somit kann genau das verhindert werden.

    Aber wie gesagt, mag sein, dass Supermarktsysteme recht einfach gestrickt sind, und auf Sicherheit kein Wert gelegt wird, weil solche Angriffe bisher unbekannt sind.

  2. Scannen musst du das Teil nicht, es muss nur in die Nähe kommen. Das CCD ist immer “auf Empfang” nur der Laser wird über Polygonspiegel in alle Richtungen abgelenkt. Ein Blinksignal in richtiger Frequenz wird auch aus der Ferne den gewünschten Effekt erzielen.

    Ich hab natürlich keine Ahnung, wie ein so ein Kassensystem gestrickt ist, es wird wohl nicht so einfach sein vor allem, weil jeder Entwickler als erste Grundregel lernt, eine Injection zu vermeiden.

    Aber vielleicht wäre es auch an anderen Stellen denkbar, man könnte eine Tür mit Barcodescanner bruteforcen oder so ein Pay-back ich druck dir Punkte aus Terminal oder oder oder :-)

  3. Ich dachte wir reden von den Scanner-Pistolen von damals. Die benötigen das Ding direkt vor sich. Die anderen Scanner arbeiten mit Polygonspiegeln, das ist richtig.

    Aber ich hab den Gedankengang schon verstanden :)
    Auch diese Was-kostet-das-nochmal-Terminals würden sich anbieten, wo man Dinger dranhalten kann, um zu erfahren was die kosten würden. Da könnte man dann erstmal den Preis korrigieren.

  4. LOL! Stell dir das mal vor!

    Moment, ich muss nur noch schnell nach dem Preis für dieses 15Klingen-Super-Duper Rasierdingsbums gucken.

    *Biep*

    Cool 1,50€

    Ich brauch so ein Teil und einen Entwickler solcher Automaten, der etwas aus dem Nähkästchen plaudert :-)

  5. …. warum kann man sich dafür nicht einfach eine barcode auf ‘nem zettel erstellen, wenn man damit über jeden scanner im markt die db droppen kann?
    Weils nicht geht…?

  6. Du hast das falsch verstanden. Die DB wirst Du wahrscheinlich nicht droppen können. Es geht eher darum, den Scanner aus der Ferne dazu zu bringen, irgendwas™ zu scannen.
    Das Drop Database Beispiel war nur eine Überspitzung um das Potenzial zu verdeutlichen.

  7. prdukt für 1 € nehmen den barcode nehemn auf 15€ prduk drauf geht doch.


Leave a comment

(required)

Noch keine Trackbacks.