Barcode Hacking Process
Posted April 12th, 2010 by rybolovThis is something I’ve been working on in my spare brain cycles: building a process for barcode hacking.
Limitations with barcode hacking:
- Feedback: is hard to get and depends on the scanner and the scanner app. In other words, you really need access to a working setup to test any kind of techniques. This isn’t web-based SQLi where you can compare the output against other results, you have to look “inside the guts” to see if a change happened.
- Reflections and Noise: Laser-based scanners have problems with reflection on phone screens. This *almost* limits you to printed barcodes and reduces some of the interactivity.
- UPC: This symbology sucks for barcode hacking because you’re limited to 12 digits, no letters are supported.
Kernels of nummieness:
- Most modern barcodes are attached via USB and are recognized as a keyboard.
- Read the previous sentence again. =) You know what to do here.
- The USPS uses DataMatrix barcodes for postage. These include command characters that “freak out” anything I read them on. This has much potential, now if I can figure out how to harness this for the powers of mischief.
- I have a Symbol 2D barcode reader, you can buy them on eBay for ~$120.
The process should run something like this:
- Configuration injection: given the make and model of the scanner, turn on all available symbologies to increase the reader attack surfaces. These command sets are available from the manufacturer and there is a wealth of untapped firmware vulns in them.
- Discovery test: to determine which symbologies are supported by the barcode scanner. The goal is to get something that supports the full ASCII set. Code 128 (1D), PDF-417, QR, Aztec, and DataMatrix are your friends here. For discovery, you can use “all 1’s” or something along those lines.
- Command injection: attempt to pass OS commands to the reader application and download and install a payload onto the OS via browser, ftp, etc or to gain a shell on the box.
- Application escape: Attempt to escape out of the application and into the OS. Then it’s just a simple matter of regular exploits *or* if you’re lucky, you’re already admin. At least try a ctrl-alt-del and see what happens.
- SQL injection: this you know, string concatenation that’s passed to the database. The problem is that depending on the system, you might not get feedback so blind SQLi is harder. “‘ or 1=1;–” probably won’t work because there isn’t really a login or when you’re scanning barcodes you’re already past that point. I think the goal here should be command execution: add users, exec OS commands, and turn on additional services.
- Malformed barcode: as a last resort, try fuzzing with non-standards-compliant barcodes to get either the scanner or the application to barf.
BTW, all the kids with their barcodes that say “‘ or 1=1;–” crack me up because they’re being barcode skiddies and don’t understand how barcodes are really used. =)
SQL Injection Bogus Example by ME! Only you can stop the stupidity.
Similar Posts:
Posted in Hack the Planet, Technical | 1 Comment »
Tags: barcode • itsatrap • pwnage • tools
April 12th, 2010 at 2:33 pm
[…] This post was mentioned on Twitter by grecs and novainfosec, alex knorr. alex knorr said: Barcode Hacking Process: This is something I’ve been working on in my spare brain cycles: building a process for … http://bit.ly/dDjJkV […]