This is an old revision of the document!
Table of Contents
Reverse engineering Blackberry Q5 setup "calls to home"
Blackberry disabled it's servers on January 4 2022 (Business Insider), making their phones basically bricks, if they were not “activated” before that date. I just bought a used BB Q5 with BBOS 10, that would not allow to use “autoloader” (to flash new OS), or really any other exploit method I could find online. So I took it's fate into my own hands and started investigation.
The setup
My setup for this investigation looks like this:
- Dell Latitude 5290 with Ubuntu 24.04
- Blackberry Q5 with some weird BBOS 10 version that I'm unable to exploit
…and that's it.
Steps
Getting my feet wet
First I created a WiFi hotspot on my Ubuntu machine, and with Wireshark in background I connected my Q5 on “Network setup” screen to said hotspot. It showed me that after connecting to WiFi, Q5 asks DNS for such domains (in correct order):
- cse.doc.blackberry.com
- xtra.gpsonextra.com
- inet.registration.blackberry.com
- pki.services.blackberry.com
- clients3.google.com
- cs.sl.blackberry.com (only after DNS response for inet.registration.blackberry.com)
Setting up local DNS server
For my WiFi hotspot, I used builtin thingy in Ubuntu settings that allows me to create a hotspot in two clicks. Turns out, it also runs dnsmasq
as a DHCP server and DNS-cache. Good thing, that after looking in htop, it uses a flag that loads config from /etc/NetworkManager/dnsmasq-shared.d/
. So I created a new file in that directory, and added such configuration:
address=/www.blackberry.com/10.42.0.1 address=/pki.services.blackberry.com/10.42.0.1 address=/inet.registration.blackberry.com/10.42.0.1 address=/cse.doc.blackberry.com/10.42.0.1
Restart the hotspot device, and Blackberry now thinks my laptop is blackberry.com
.
Setting up local HTTP server
Just quick and simple Nginx configuration, to check what URL's are being requested:
server { listen 80; root /var/www/html; server_name inet.registration.blackberry.com; access_log /var/log/nginx/inet.registration.blackberry.com.access.log; error_log /var/log/nginx/inet.registration.blackberry.com.error.log; location / { try_files $uri $uri/ =404; } }
First requests
For now I've only setup the inet.registration.blackberry.com domain in Nginx, but after looking in access log, we can see some interesting stuff:
10.42.0.61 - - [26/May/2025:23:10:57 +0200] "GET /select/wifiloginsuccess/EN/ HTTP/1.1" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:10:59 +0200] "POST /ra/scep/rimbbcp-ica-1/rimbbcp-ira-1/rimbbcp-dev-p1?operation=PKIOperation HTTP/1.0" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:00 +0200] "POST /ra/scep/rimbbcp-ica-1/rimbbcp-ira-1/rimbbcp-dev-p1?operation=PKIOperation HTTP/1.0" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:01 +0200] "POST /ra/scep/rimbbcp-ica-1/rimbbcp-ira-1/rimbbcp-dev-p1?operation=PKIOperation HTTP/1.0" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:03 +0200] "POST /ra/scep/rimbbcp-ica-1/rimbbcp-ira-1/rimbbcp-dev-p1?operation=PKIOperation HTTP/1.0" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:04 +0200] "POST /ra/scep/rimbbcp-ica-1/rimbbcp-ira-1/rimbbcp-dev-p1?operation=PKIOperation HTTP/1.0" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:17 +0200] "GET /select/wifiloginsuccess/EN/ HTTP/1.1" 404 162 "-" "-" 10.42.0.61 - - [26/May/2025:23:11:18 +0200] "GET /select/wifiloginsuccess/ HTTP/1.1" 404 134 "-" "Mozilla/5.0 (BB10; Kbd) AppleWebKit/537.35+ (KHTML, like Gecko) Version/10.2.1.3247 Mobile Safari/537.35+" 10.42.0.61 - - [26/May/2025:23:11:57 +0200] "GET /select/wifiloginsuccess/EN/ HTTP/1.1" 404 162 "-" "-"
What we can see here, is that:
- Blackberry first checks if there is internet by GET'ting
inet.registration.blackberry.com/select/wifiloginsuccess/EN/
- Then it wants to do a
PKIOperation
which I would believe to be a Public key request - And after pressing the “Hotspot login” button on BB, it asks about
wifiloginsuccess
again