OsmocomBB einsetzen mit Motorola C123

Nebenbeierfindung: Die Lampomate! (CC-BY-SA 3.0 ;) )

Wochenende Nr. 1: Zum ersten mal trafen wir uns, um die beim 27C3 gepriesene Opensource-Firmware OsmocomBB auf unserem Testphone Motorola C118 auszuprobieren. Eher unvorbereitet kommt es dazu, denn obwohl unser Kollege in Flensburg hardwaretechnisch gut ausgestattet ist, fehlt ihm der notwendige PL2303-chip um einen Adapter von Serial auf 2.5mm 3-poligen Klinkestecker (also known as T191 unlock cable) selber zu basteln. Konkret benötigt dieser Adapter auf der Seite des Handys eine Betriebsspannung von 3.3V. Ein kurzfristig bei MediaMarkt teuer erworbener Adapter (_ enter model name here _) von Serial auf USB sollte ungeachtet einer Betriebsspannung von 7.0V+ trotzdem unser Handy mit der Osmocom-Firmware flashen, jedoch ohne Erfolg. Nachdem wir uns #osmocom irc-channel hatten bestätigen lassen, dass unser Handy definitiv getoasted ist (oder zumindest die Datenpins der Headsetbuchse) war die letzte Rettung eine Samstag-Abend-Einkaufaktion dank Ebay Kleinanzeigen für ein Motorola C139. Denn wie sich herausstellte, war der MediaMarkt-USB-Adapter mit einem zusätzlichen MAX1797 Step-Up-Wandler ausgestattet, der sich von unserem Profilötmeister dedo ohne größere Komplikationen entfernen ließ. Ohne diesen Wandler konnten wir nun den Headsetstecker direkt an die TXD- und RXD-Connectors von PL2303 löten. Zum Test messten wir beim flashen von einer Firmware die Peaks der Betriebsspannung mit einem Multimeter, welche bei akzeptablen ~4V lagen. Das Kompilieren von OsmocomBB ging ohne Probleme und nach der Anleitung von rot13.org war es nun auch möglich, die Firmware auf das C139 zu flashen! Unglücklicherweise, hatten wir wohl genau mit diesem Model pech und waren nicht in der Lage eine Verbindung zu einer Mobilfunkzelle aufzubauen, geschweige denn mit Wireshark oder Tcpdump GSM-Traffic mitzuschneiden. Die Layer23-Applikation mobile blieb still, meldete aber auch keine ungewöhnlichen Fehler.

 Wochenende Nr. 2: Dieses Wochenende ein neuer Versuch, diesmal unter ArchLinux mit einem selbst zusammengeschraubten Buildscript welches im Vergleich zur offiziellen Anleitung die aktuellste Version von dem offiziellen gcc Arm-Toolchain enthält. Somit gillt, ganz einfach und unkompliziert:

yaourt -S osmocombb-git kraken-git wireshark-gtk gnu-netcat

… und schon ist die komplette Suite unter /opt/osmocombb installiert (und auch das Programm “kraken” mit dem sich später der mit A5/1 verschlüsselte GSM-traffic entschlüsseln lässt). Nachdem das Handy mit dem USB-Adapter an den PC angeschlossen ist (bei uns zeigt lsusb den Adapter so an: Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port), wird mit osmocon die Firmware wie folgt auf das Motorola-Handy geflashed:

sudo /opt/osmocombb/host/osmocon/osmocon -p /dev/ttyUSB0 -m c123 /opt/osmocombb/target/firmware/board/compal_e88/layer1.compalram.bin

Sollte es zur Problemen bei der Ausführung von layer1 geben, kann man auch den Parameter “-m c123xor” ausprobieren. Zumindest sollte, nachdem man den roten Auflegen-Knopf einmal kurz gedrückt hat, folgender output erscheinen:

(...)
got 1 bytes from modem, data looks like: 43  C
Received PROMPT2 from phone, starting download
(...)
handle_write(): 2555 bytes (47611/47611)
handle_write(): finished
(...)
got 1 bytes from modem, data looks like: 42  B
Received DOWNLOAD ACK from phone, your code is running now!

OSMOCOM Layer 1 (revision osmocon_v0.0.0-906-g5bbea93)
======================================================================
Device ID code: 0xb4fb
Device Version code: 0x0000
ARM ID code: 0xfff3
cDSP ID code: 0x0128
Die ID code: 3783221bd8039bd3
======================================================================
REG_DPLL=0x2413
CNTL_ARM_CLK=0xf0a1
CNTL_CLK=0xff91
CNTL_RST=0xfff3
CNTL_ARM_DIV=0xfff9
======================================================================

THIS FIRMWARE WAS COMPILED WITHOUT TX SUPPORT!!!
Assert DSP into Reset
Releasing DSP from Reset
Setting some dsp_api.ndb values
Setting API NDB parameters
DSP Download Status: 0x0001
DSP API Version: 0x0000 0x0000
Finishing download phase
DSP Download Status: 0x0002
DSP API Version: 0x3606 0x0000
LOST 752!

Parallel dazu wird jetzt die layer23-Applikation “mobile” gestartet mit:

sudo mkdir -p /root/.osmocom/bb/
sudo touch /root/.osmocom/bb/mobile.cfg
sudo /opt/osmocombb/host/layer23/src/mobile/mobile -i 127.0.0.1

Jetzt ist man schon in der Lage mit telnet (default-port 4247) auf die Osmocom-Shell zuzugreifen um EInstellungen vorzunehmen oder Verbindungsinformationen abzurufen. Mit dem Programm “cell_log” kann man sich die verfügbaren Provider und Basisstationen in der Umgebung anzeigen lassen:

<000d> cell_log.c:191 Cell: ARFCN=971 MCC=262 MNC=10 (Germany, DB Systel GSM-R)
<000d> cell_log.c:191 Cell: ARFCN=967 MCC=262 MNC=10 (Germany, DB Systel GSM-R)
<000d> cell_log.c:191 Cell: ARFCN=964 MCC=262 MNC=10 (Germany, DB Systel GSM-R)
<000d> cell_log.c:191 Cell: ARFCN=958 MCC=262 MNC=10 (Germany, DB Systel GSM-R) 

Aber wir wollen ersteinmal Telefonate unserer O2-Handys aufzeichnen, dazu suchen wir uns die ARFCN von den bei uns verfügbaren O2-Zellen raus:

<000d> cell_log.c:191 Cell: ARFCN=676 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1012 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1020 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=645 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1002 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1009 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1013 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=1015 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=643 MCC=262 MNC=07 (Germany, O2)
<000d> cell_log.c:191 Cell: ARFCN=653 MCC=262 MNC=07 (Germany, O2) 

Um Trafficanalyse auf einem bestimmten Frequenzbereich durchzuführen, “fixen” wir layer23-ARFCN auf 676 (O2 Germany) mit folgendem Befehl:

/opt/osmocombb/host/layer23/src/misc/ccch_scan -a 676

Parallel dazu:

nc -u -l 4729 > /dev/null &
sudo wireshark -k -i lo -f 'port 4729'

Weitere (unvollständige) Vorgehensweise:

cd /opt/kraken/
sudo wget http://opensource.srlabs.de/attachments/download/41/a51_table_torrents.tgz
sudo tar xvf a51_table_torrents.tgz
sudo aria2c *

Soweit so gut … Wir werden diesen Blogpost noch erweitern!

Tools:

  • osmocon
  • osmoload

Further reading: http://srlabs.de/research/decrypting_gsm/, http://srlabs.de/uncategorized/airprobe-how-to, http://bb.osmocom.org/trac/wiki/Sniffing/, http://cgit.osmocom.org/cgit/osmocom-bb/, http://security.osmocom.org/trac/, Vortrag vom 27c3 zu Angreifen von Handys meist via SMS, Vortrag vom 27c3 zu OsmocomBB, Noch einer der ein Motorola gehackt hat, [Video] Cracking A5 GSM encryption (HAR 2009)

Gloassar:
GSM-R: Global System for Mobile Communications – Rail(way) Ein in Deutschland von der DB Systel betriebenes Rangier- und Bahnsteuerungsfunk.
Ergänzungen::
http://lists.osmocom.org/pipermail/baseband-devel/2011-May/001909.html

URGENT:

need
Bus 002 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
for burst_ind

git clone
git checkout sylvain/burst_ind
git pull
make

💬 Are you interested in our work or have some questions? Join us in our public Signal chat pi crew 👋
🪙 If you like our work or want to supprot us, you can donate MobileCoins to our address.

Comments

  1. Coole Sache,

    hoffe bald mehr zu diesem Thema hier lesen zu können. Bis jetzt konnte ich noch alles nachvollziehen, wobei ich mir überlege von Ubuntu ebenfalls zu Arch zu wechseln. Gerade beim Befehl “ccch_scan -a ARFCN” kamen im GSMTAP viele komische Meldungen/Fehlermeldungen, so bin ich mir da nicht sicher ob das geklappt hat. Wir können ja gerne mal mailen. Gruß Tim

  2. hi

    kannst du mir vieleicht ein geraet bauen das in der lage ist..das gsm netzabhoeren zu koennen.

    grus
    muffin

  3. hi, ich habe es schon laufen hier, wer infos haben möchte kann sich gerne bei mir melden ich helfe gern weiter, und man kanns ich auch austauschen.
    ich bin hier erreichbar: http://www.friendsbook.com.de dort heisse ich mixter merlin einfach in der suche eingeben und dann finet ihr mich schon.
    mfg mixter

  4. We currently working on a new version of this tutorial. There’s still a lot of research to do ;) If anyone knows public available documentation or tutorials please post it here, thanks.

  5. Hi,
    ich habe hier ein ähnliches Setup wie ihr (C155 und USBSerial Kabel mit PL2303). Mit dem Kabel den Traffic auf der Luftschnittstelle abzuhören wird schwierig, die Datenrate reicht dafür nicht. Osmocom empfiehlt ausdrücklich Kabel mit dem FT232-Chip, die man auf “illegale” Datenraten hochziehen kann.
    http://bb.osmocom.org/trac/wiki/Hardware/SerialCable gibt da mehr Infos.

    Sylvain selbst hat ein Tutorial zum GRPS Sniffing gemacht, siehe https://srlabs.de/gprs/ . Um den Traffic auf der Luftschnittstelle zu holen nimmt er da die Applikation “layer23”, die zwar im Osmocom Wiki beschrieben ist, aber nicht mehr im git vorhanden zu sein scheint. Entweder die versteckt sich in einer Ecke die ich nicht kenne, oder wurde gelöscht und etwas anders hat die Funktion übernommen.

    Würde mich freuen wenn ihr mal per Mail rüberkommt, ich ziehe bald ebenfalls in den Raum Stuttgart und vielleicht kann man sich ja mal austauschen.

  6. @ mino

    Hi,
    Der Layer23 heißt jetzt ccch_scan.

    Hoffe das hilft dir. Kannst uns ja mal ein Feedback geben, wie es mit dem Traffic läuft. ;)

  7. Wäre wunderbar mit einem genauer Update mit dem neuen transceiver in sylvain/testing und openbts setup

  8. Hallo,
    gibt es eigentlich ein fertiges iso, so àhnlich wie gsmmap.iso, dass man als fertiges Image in der virtualBox laufen lassen kann mit allen osmocom features? gruss

  9. @onny kann man so ein Iso ueberhaupt fertig erstellen, oder ist das nicht mòglich?

  10. osmoman: Das ist möglich. Im Endeffekt könnte man eine Ubuntu Live ISO bauen, bei der schon Osmocom vorkompiliert und mit dazugehörigen Libs installiert ist. Welche Methode hierfür zurzeit die beste ist, kann Ich dir leider nicht sagen.

  11. Hallo,
    gibt es noch eine andere Anleitung die nicht per Archlinux läuft? oder gibt es von Archlinux eine livecd wo die obige Anleitung auch funktioniert???

    Gruß Frank

  12. Es ist Absicht, dass es keine fertigen Images gibt. Das soll etwas die Menschen abhalten, die noch nicht reif genug dafür sind. Allerdings ist das gesamte Vorgehen so gut dokumentiert, dass es beim Einrichten kaum noch Schwierigkeiten geben sollte. Ich habe das gerade mal unter Ubuntu 13.10 probiert und es gab nur wenige Fallstricke.
    Als Kabel habe ich ein altes Headsetkabel und ein ebay-cp2102-Modul zusammengelötet. Um die geänderten Baudraten mit cp210x einzutragen, musste ich aber ein aktuelles pyUSB nachladen.
    Für die GnuArmToolchain habe ich diese Anleitung verwendet (die andere war veraltet): http://bb.osmocom.org/trac/wiki/GnuArmToolchain
    Davor habe ich aber texinfo entfernt und durch die ältere Version 4 ersetzt. http://packages.debian.org/wheezy/texinfo
    Danach habe ich libosmocore installiert http://bb.osmocom.org/trac/wiki/libosmocore
    und zum Schluss osmocom-bb http://bb.osmocom.org/trac/wiki/Software/GettingStarted

  13. Ich suche seit Tagen verzweifelt nach dem Kraken Programm b.z.w wie installiere ich den auf Linux kann mir Bitte jemand ein Tip geben

Leave a Reply

Your email address will not be published. Required fields are marked *