checkm8, checkra1n and USB hubs

November 16th, 2021 by Elcomsoft R&D
Category: «Mobile», «Tips & Tricks»

If you ever used the checkra1n jailbreak or the checkm8 acquisition method available in some mobile forensic products like iOS Forensic Toolkit, you know that the trickiest parts of the process are the first two: entering DFU, and using the exploit itself. Even if you have the right cables and enough experience, sometimes you may still bump into a weird issue or two. The device may not enter DFU whatever you do, or the exploit fails. How can you increase your success rate?

Cables first

You must have the right cable for everything to work. Type-C to Lightning cables never work; always use a USB-A cable instead. Here’s the technical explanation (from checkra1n Installation Tips & Tricks):

The BootROM will only enter DFU if it detects USB voltage, which boils down to checking whether a certain pin is asserted from the Tristar chip. The Tristar does this based on the cable’s accessory ID, and apparently USB-A and USB-C cables have different accessory IDs, and the one of the USB-C cables makes the Tristar not assert the USB voltage pin.

But what if your Mac has the Type-C ports only? Just use a USB-C to USB-A connector, but not a USB hub. Most probably you will even need two: the second one for the USB dongle that most forensic products require. Also, you may need to use the third port to connect an external drive to save the data extracted from the iPhone.

What about the Macs based on the Apple Silicon? Please read The state of checkra1n on Apple Silicon Macs first, in particular:

The problematic part of the exploit can be disabled and replaced with a manual unplugging and replugging of the lightning cable.

There is actually an easier and safe workaround: if you experience troubles using checkm8 on an M1-based Mac, use a USB hub. Yes, that’s right; the very thing that causes problems on Intel Macs can be your savior on Apple Silicon. That’s true for the iPhone 6s and iPhone SE (first generation) at least: when they are connected though a hub, checkm8 works like a charm without reconnections.