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