Inside a cavity duplexer
In many cellular systems (GSM or otherwise) there is a frequency duplex
between the uplink and downlink frequency band. If you use a single
antenna to serve a BTS, then somehow you need to split the frequency
band between the Rx and Tx side by means of a Duplexer.
The most common technology for this is the so-called Cavity
Duplexer. I've used those devices (and seen them in use) for a long
time, but never really opened one so far. The problem is that they are
finely tuned, and each mechanical change can severely impact
performance. As I had to repair a broken SMA socket on one of them
recently, I took the chance to take a picture
In the first picture you can see the bottom side. This consists of a
milled aluminum block, with a series of circular cavities. The Tx
output of the BTS is connected to the SMA socket on the bottom right,
the antenna to the SMA socket on the top side, and the Rx port to the
SMA socket on the bottom left of the picture:
The small cylindrical objects in the center of the cavities are not
milled from the same part, but they are separate pieces mounted by
screws from the bottom of the unit.
The second picture shows the top section of the duplexer:
You can see a ~ 4mm aluminum plate with lots of (now empty) holes which
are for the ~ 117 screws with which the top plate is screwed against the
bottom part shown in the first picture.
The important part, however, are the screws that you can see sticking out
of the top part. Those are used for tuning and present "obstacles" in
the path of the waves as they pass through the cavities.
The big miracle for me is not that there are some resonances which build
up a filter, but that you can actually transfer as much as 100W of RF
power from the Tx input through to the antenna output.
[ /gsm |
permanent link ]
Kevin Redon starts collaborative Osmocom project to collect terminal profile
As Kevin Redon writes in
his blog, he has created some tools and a project for
collaboratively gathering a database on the TERMINAL PROFILE capabilities of mobile phones.
The terminal profile describes which particular features regarding
proactive sim or sim application toolkit a given phone
supports.
This is not only important for SIM application / SIM toolkit developers,
but it is also an important factor when trying to analyze the potential
threat that can originate from a malicious SIM card attack.
I personally see no reason why my phone should ever report its GPS
position to the SIM card, or why the SIM card should be able to re-write
the nubers I'm dialling. Yes, there are cases where such features are
useful, but then they should be explicitly enabled by the user, and the
default should be that they are all switched off.
Who knows, after all, with some attention to this problem we might still
see a SIM firewall / proxy, that you can put between the SIM and the
phone to prevent any of those features from being (mis)used.
So all you need to do to contribute to the database is some way how you
can read out the terminal profile from your mobile phone(s), and use
Kevin's tool to upload it to the public website. And hwo do you read
out the terminal profile? For example by using Osmocom SIMtrace to sniff the
communication between SIM card and phone.
[ /gsm |
permanent link ]
Announcing the low-power, light-weight sysmoBTS
It hasn't been a secret that when I co-started a company called sysmocom more than a year ago, it was not
about opening a webshop that sells cheap phones and DYI electronics kits
to the larger community. Rather, it was to develop and sell exciting
products surrounding Free Software and mobile communications.
There are of course the more or less obvious things to do, like system
integration of OpenBSC and the related software on embedded systems,
selling them as appliances including training, support and maintenance
service.
However, we of course also want to more than that. Today it is my
pleasure to say that the availability of our first BTS product called
sysmoBTS has been officially announced.
See the
news item, the product page and the
data
sheet for more information.
To make it very clear in the beginning: sysmoBTS is not an open
hardware project. The schematics and layout files are proprietary and
not disclosed publicly. Such is the FPGA bitstream and the layer1
inside the DSP.
However, any code running on the integrated ARM processor is available
as free software. This includes a yocto/poky-built Embedded Linux
distribution featuring u-boot, the Linux kernel (including all kernel
modules!), the osmo-bts and OpenBSC software
as well as many other Free Software packages.
We think this is a reasonable compromise between espanding a bit from
our previous "BSC and above in Free Software" down to a "BTS Layer2 and
above" divide. After all, if you use OpenBSC with a BTS from Siemens,
Ericsson, Nokia or ip.access, you don't have access to the source code
of anything running inside the BTS at all.
sysmoBTS offers some great new capabilities, such as integrating the BSC
or even the entire osmo-nitb onto
the ARM/Linux processor inside the BTS hardware itself, creating a less
than 500gram, 10W power consuming autonomous GSM network.
I'm going to stop marketing here, but I thought it is one of the major
milestones for sysmoocm and thus for what I've spent way too much time
on in recent months - and thus deserves to be mentioned here on this
personal blog.
[ /gsm |
permanent link ]
Alcatel MTK phone UART pinout
The Alcatel OT-890D is a MT6573 based smartphone. It seems one of the
UARTs is available on test pads as seen in this picture:
The voltage level is still 3.3V, so no fancy 1.8V gear is required.
During boot, the UART is first used at 19200 bps, where it prints the
strings "MW01" and "MW02". I then switches to 115200 bps where it
prints "READY", and finally switches to 921600 bps, where it seems to
output some mixed binary/text messages containing AT commands and
responses between AP and BP, as well as some debug information:
�Ue� � � T+CREG=2
�Ue�!�!�!T+CSQSQ=1
�Ue�!�!�!AT+CREG=2
�Uew�"w�"w�"SQSQ=1
'Ue""" AT+EFUN=1
SML: Load!_Ue""""""
SML: Load!hU("("("
I haven't yet investigated if the binary between the text is some
standard HDLC framing or a TS 07.10 multiplex.
If anyone knows more about the boot process (MW01/MW02/READY) or the
binary protocol, please let me know.
[ /gsm |
permanent link ]
More research into the Motorola Horizon macro and Mo-bis
Once upon a time there was an Americans company called Motorola, and they
decided to implement GSM. Unfortunately they decided to deviate
significantly from the specification and implement their own proprietary
back-haul protocol between BTS and BSC, called Mo-bis. It replaces the
standardized A-bis interface.
Today, There are plenty of phased-out Motorola
Horizon / Horizon II macro BTSs that have been phased out.
Basically you can get them for scrap value, which makes them an ideal
target for GSM enthusiasts willing to run a single-cell network with
little investment. So while there are actually people who are interested
in operating a power-consuming device roughly the size of a washing
machine in their home/office - they are normally not interested in
running a 19" rack sized Motorola BSC with it. Also, the BSCs are much
less frequently to be found compared to the BTS.
So it would be great to support Mo-bis from within OpenBSC. A couple of
brave young men have set out to try the seemingly impossible. There's
absolutely zero documentation available on that protocol, and no
wireshark support either. However, the University of Brno (Czech) has a
functional Motorola BTS + BSC setup, and I was able to obtain protocol
traces from them and actually experiment with the equipment in their
lab.
The entire Motorola GSM architecture seems to be over-engineered without
end. Basically you are looking at a distributed computer from the early
1990ies. Lots of processor cards (m68k, ppc) interconnected by HDLC
links on top of synchronous 2Mbps links with 64k timeslots. Those links
are available e.g. on the backplane of the BTS as a TDM highway.
So basically even inside the BTS, the individual processors talk over
E1 to each other. In the BSC, there is a token ring based LAN between
some of the cards instead. And the MCUF in the BTS even supports to
transport those proprietary inter-cpu links via fiber optic (!).
Each processor has a 16bit identifier by which it can be addressed in
form of physical addresses. Individual processes on the
processors have fixed process identifiers, and they allocate
a variety of mailboxes in which they can receive messages from
remote processors. There are routing functions at intermediate notes.
So any process on any processor card can send messages to any mailbox of
any other process on any other processor, independent of its physical
location (locally at the BTS, or at the remote BSC, or even at remote
BTSs).
Besides physical addresses, there are also functional addresses. Thos
addresses are used particularly to support fail-over. Every board in a
BTS and BSC can be fully redundant, and if you use physical addresses,
you would address one of the two redundant boards. Using functional
addresses, you address the function they both can perform, and some
routing magic will make sure it ends up at the current active node in
the pair.
There are multiple processors in every TRX, and a couple of processors
for each BTS, processors in the E1 line cards, etc. Now speaking of the
actual Mo-bis interface: It seems to be a weird mixture between 08.58
(RSL) and 08.08 (BSSAP/BSSMAP). However, after staring at the messages
sufficiently long, I have been able to write a more or less complete
wireshark dissector for them. Radio Channel Activation (RACH/IMM.ASS)
are for example handled directly inside the BTS, they don't exist as
transactions on the Mo-bis like they do in A-bis.
So implementing the actual location update / MO+MT voice call and SMS
related transactions is actually not all that hard. What makes things
really difficult is the way the BTS is initialized at startup.
Basically what resembles the OML part of standardized A-bis.
There is a lot of low-level management and bring-up of the individual
processes and boards, and the download of a large 500 kByte-sized BLOB
simply called database. This binary database contains literally
hundreds of configuration parameters for the BTS and its neighbors. It
also contains sophisticated configuration of the message routers, the
switching/multiplexing of 64k timeslots on the various links,
information on redundant paths within the back-haul network, etc.
Interestingly, using the password combination 3beatles and
4stooges on any of the serial consoles of the BTS or BSC, you can
enter into a "god-mode" which permits you to enter the executive
monitor (EMON). The executive is the operating system they run on
both m68k and ppc processors. It provides access to something like a
syslog of messages from the various processes, and you can manually
generate messages that are to be sent to mailboxes of processes. You
can inspect the object table (application programs an databases),
read/write to PCMCIA flash cards, read and write to logical and physical
memory, inspect CPU and I/O usage and much more. In fact, the
integrated Code Object Manager (COM) even allows the processors to
synchronize their code versions and remotely boot other CPUS via HDLC
channels.
For a communications system geek like myself, it's extremely fascinating
to see such a sophisticated and versatile system. I only wonder why on
earth somebody would come up with something as complex, only to connect
a couple of BTSs to a BSC. Thus, the only logical explanation is that
Motorola has developed this distributed proprietary computing system way
before they went into GSM, and they probably just recycled it as it
already existed.
If anyone knows more about the history of this, I would be excited to
hear about it. It literally feels like being an archaeologist.
Analyzing ancient technology from our forefathers. But then, it only
is 20 odd years old. The only time I had a similar feeling was when I
briefly came in touch with IBM mainframes in 2001 and looking at IBMs
SNA protocol stack.
[ /gsm |
permanent link ]
New OsmocomBB RSSI monitor firmware
Jolly has been hacking up a nice new RSSI monitoring
firmware application for OsmocomBB.
I let the pictures speak for themselves:
I really hope this trend continues and we'll get some actual user
interface in OsmocomBB at some point this year..
[ /gsm/osmocom-bb |
permanent link ]
OP25 project joins hosting on osmocom.org
Some days ago, I noticed that the famous OP25 project (a Free Software
implementation of the APCO25 system, a digital trunked radio system) was
no longer reachable on-line. It seems they were running this on a
desktop PC in a university. As nobody in the project still seems to be
at that university, a change in the network configuration had
accidentally rendered the website unreachable.
After some quick e-mails, I offered to host them within the osmocom.org
family of Free Software Projects for mobile communications. This is
when op25.osmocom.org was
created, and a full-site backup uploaded + installed.
I'm really happy that we were able to do a small part to help to make
sure this valuable project remains accessible to interested parties in
the signal processing and mobile communications field.
[ /gsm |
permanent link ]
GSM Security Training at DeepSec
Dieter Spaar and I will be holding yet another GSM security training
on November 15/16 at this years DeepSec conference in Vienna.
We have been giving a series of successful GSM Security trainings
in-house at various operators, as well as at a variety of conferences
during the last couple of years. If you want to beef up your knowledge
on the detailed inner workings of mobile networks, with a specific focus
on security related aspects, this training might be a great opportunity.
You can register here.
Unfortunately the Early Bird discount has already expired, but you still
have a chance to book before November 2nd, after which a late booking
fee will apply.
[ /gsm |
permanent link ]
First OsmocomGMR code release
The OsmocomGMR project. GMR is
Geo Mobile Radio, the specifications for (among others) the Thuraya
satellite telephone network.
For more details see the OsmocomGMR
announcement.
I still remember some years ago, when Dieter and I were first working on
some code to implement the GSM protocols, which later ended up becoming
OpenBSC. A number of other developers joined the project ever since,
and we have a wide user base, from individuals over academia up to
commercial deployments. Next we did GPRS, which was another journey
into a new world. While OsmoSGSN still has some bugs here and there, it
has come a long way ever since.
In December 2010 at 27C3 I had this crazy idea of looking into yet
another communications system (TETRA). Just one week of coding later,
the first working code emerged and later became OsmocomTETRA. Again, history
repeated itself and what was started by one person became a
collaborative effort in very short time.
Finally, in July 2011, I thought it would be time for yet
another communications system: ETSI GMR, used by Thuraya. This time I
was too busy to actually write any code, but I just read specifications,
found a supplier for some equipment and got some fellow Osmocom
developers interested in it. For weeks, the IRC channel was flooded
with daily reports about progress, new measurements/traces that had been
made and about new code that had been written. About three months
later, the code is capable of demodulating, decoding, de-interleaving,
and it can give you a BCCH protocol trace in wirshark.
With this pace of progess, I wonder where we might be in yet another one
or two years. At least on my personal agenda are the following items:
- Finish Erlang TCAP + MAP implementation, which will allow us to
implement a true HLR/AUC and finally a new MSC that can interoperate
with GSM/3G core networks
- Integrate OpenBSC and OpenBTS, especially now that we already have
the BTS-side A-bis implementation as part of osmo-bts
- Get funding to implement a GPRS/EDGE PCU, enabling osmo-bts to talk
to OsmoSGSN
- Work on some hardware+software interface that allows us to use the
Motorola Horizon Macro BTS with OpenBSC, or at least their TRXs (called CTU) with
osmo-bts
- Implement a UMA/GAN gateway (for UMA capable phones and femtocells)
- Support IuCS/IuPS from our MSC and SGSN for 3G Femtocells
- Complete the SIMtrace firmware/software to do full MITM and SIM card
emulation
- Work on automated regression testing for osmo-bts, OpenBSC, OsmoSGSN
and all other GSM related Osmocom components.
- Continue the excellent work that has been done on supporting MTK
chipsets from OsmocomBB at some point
At least now you know there is never any reason to be bored. If you
have time and are interested in helping with implementing any of this
stuff, let me know.
[ /gsm |
permanent link ]
Ground-breaking research on APCO P25 security
While we at OsmocomTETRA
have been looking only at implementing the TETRA protocols as
they are (and doing a bit of sniffing on unencrypted networks),
some researchers have recently published two ground-breaking papers on
the (lack of) security in the APCO P25 radio system.
In case you haven't heard about APCO P25: It is a digital mobile radio
system mainly used by Police in non-EU English speaking countries like
the US, Australia and New Zealand.
You can find the respective papers here and here.
So apparently P25 uses either single-DES or a proprietary cipher with
only 40 bit key-length. No, I'm not joking. Seems like it was
developed by people who have not the slightest clue about communications
security at all.
And guess what they used to receive and transmit P25 waveforms? Of
course the USRP and gnuradio. This once again proves how invaluable
those tools are, not just for the FOSS community, but also for the
communications research community.
[ /gsm |
permanent link ]
Major bugfix release of SIMtrace firmware
At the CCC Camp 2011,
the Osmocom SIMtrace project
was a major success. Not only were something like 60 units out of our
initial batch of 100 units sold, but the SIMtrace workshop was so
successful that it had to be held three times instead of once.
During the workshop we discovered a very annoying bug which I wasn't
able to solve immediately. Depending on the combination of
phone/simcard used, the SIMtrace would disconnect from USB and the phone
would claim there is no SIM card inserted.
The debugging went like this:
- SIMtrace was resetting very early in/after the ATR
- the reset reason was diagnosed as being a watchdog reset
- the watchdog was triggered by an IRQ storm from the USART
- the IRQ storm was caused by the firmware not clearing some parity
error / overrun related bits
However, at that point I couldn't further find the cause of the bug. I
assumed it was related to the PPS/PTS, but couldn't really point my
finger at it. If we sniff the PPS/PTS wrong, then of course our baud
rate is different from the real baud rate, which in turn would cause
perceived parity errors and the like.
I'm grateful that most people still didn't loose their interest in
simtrace and happily bought the unit and/or attended the workshop.
After a bit more debugging after the camp, I have now solved the bug.
I simply never realized that the TCK (ATR checksum byte) is only present
in cards that support T=1 as well as T=0. However, some simpler SIM
cards like the ones that we issued for our test GSM network on the camp
only do T=0 and thus don't transmit TCK.
The old code thus considered the first PTS/PPS byte (0xff) as the TCK,
and didn't recognize the PTS/PPS correctly.
Firmware version v0.2 fixes this problem. I've released
the firmware update, now also available from the wiki
[ /gsm |
permanent link ]
Update on the GSM network at the CCC Camp 2011
During the past weeks, I've been trying very hard to get to a technical
solution for the setup regarding the private GSM network that we intend
to operate at the CCC Camp
2011. Unfortunately, despite puting in way too much time that I
don't have, no really good solution appeared. There were times when I
was wondering if it would happen at all - mainly due to the lack of
properly integrated / tested RF related issues like PA, LNA, duplexer,
combiner, etc.
But it seems just in time Dieter came to the rescue. So now we have
pretty much figured out the equipment and settled on a configuration.
We'll have 2 Nokia Metrosite BTS with a total of 5 TRX, each running at
5W using borrowed equipment.
During the next 10 days, all the parts like antennas, cabling, plugs,
adapters and the BTS units themselves should arrive at my place. Let's
hope there are no serious fuck-ups that cause something to not arrive
in time.
So all in all, there's a 99% chance we will have a functional GSM
network. The Nokia A-bis support in OpenBSC will be brand new, so there
might be some glitches here and there. But then, that's part of the
fun. I'm already very curious to see what kind of coverage we get. I
guess if we do things right, it should reach well into Finowfurt itself,
and not just barely cover the camp grounds like we had at HAR 2009.
[ /gsm |
permanent link ]
On the recent THC release on the Vodafone femtocell
I am mainly posting this to prevent any more people mailing me about
this release. There's nothing really spectacular here.
Starting from 2009 on, the usual suspects (aka OpenBSC developers) have
been looking at various 3G femtocells, including the Vodafone one (I
have 10 of them here). Aside from that Alcatel-Lucent design that
Vodafone uses, we've also looked at the Cisco/AT+T/ip.access design, as
well as the Ubiquisys/SFR one. With some effort you can root all of
them, and you can then make sure they don't connect to the respective
operator but to an IP address of your choosing.
The protocols are vendor-dependent. The Vodafone femtocell uses a
version of RANAP (the protocol between RNC and MSC in UMTS) behind an 8
byte proprietary header. As RANAP is specified in the 3GPP, it was
pretty easy to build a small piece of code that interacts with the unit.
Ubiquisys (used by SFR) uses the UMA protocols, and the
Cisco/ip.access/AT+T design uses a proprietary ip.access protocol called
URSL (sort-of a "progression" of the 2G RSL to UMTS).
Supporting them from OpenBSC is not easy. While the call control and
SMS transfer protocols of 3G are identical to GSM, everything below
doesn't really bear much resemblance. I would guess it would take at
least a man-month to get basic signalling, call + SMS support working,
if not more.
Given the fact that the femtocells all speak their vendor-proprietary
dialects, and given that they often come with license terms that
only permit the use of their firmware in combination with their gateway
located at the operator network, we never thought it is a high priority
item for us to work on.
What you also have to consider, is that their output power of 20dBm is
even less than the 200mW of typical small-scale GSM BTS, and that they
typically only support the operation of 4 concurrent phones. Nothing
that you would be able to run e.g. a conference telephony network on.
Furthermore, due to the wide channels (5MHz), it is very likely that all
available sprectrum has been auctioned off/licensed to commercial
operators, so it's almost impossible to get something like a test
license. In GSM with 200kHz channels, there's often still a guard band
or some unallocated channel that can be used.
If you really want to have some free software + femtocell based 3G
network, go ahead and do it. The option existed for years now, ever
since femtocells started shipping to the market. All of them are some
form of embedded Linux systems. Rooting them isn't really different
from rooting a Linux based WiFi router / DSL modem. So what's that
new about the THC release? That a vendor of Linux embedded devices
chose a trivial password? If you're surprised by that, I guess you
haven't taken apart many embedded devices then.
[ /gsm |
permanent link ]
SIMtrace v1.0 prototypes are working out of the box
After the debacle with various wrong footprints in the v0.9,
I'm very happy to announce that the SIMtrace v1.0 hardware is working
fine. All footprints correct, schematics correct, layout/Gerber
correct. All we had to do is solder the components, attach it to USB,
flash the firmware and use it.
Here's a picture of the board (sorry, my soldering is not very clean):
Early next week we will be ordering a batch of 100 units from the SMT
house we have chosen.
[ /gsm |
permanent link ]
First working prototypes of Osmocom SIMtrace design
Last winter I was working on some hardware and software that can be used
to trace the communication between a SIM card and a phone and called it
Osmocom SIMtrace. At that
time, I was simply recycling an old OLIMEX development board for the
AT91SAM7S micro-controller.
But since the firmware for the micro-controller, the host software as
well as the wireshark plug-in has been written now, it would be a shame
if I was they only user of the project. Therefore, Kevin Redon and I
have spent some time in polishing and improving the design, as well as
generate some actual prototypes.
Unfortunately a number of mistakes were made (both on the design side
but also wrong component pin-outs) so there was a need for significant
re-working.
Nonetheless, we now have some 5 functional prototypes, a picture can be
seen in the
Osmocom Wiki, where you can also find the schematics
We're now having a second version of the PCB built, this time hopefully
with correct footprints for all parts. Once that is verified at the end
of next week, we will give "go" for the production of a small batch (100
units).
Interested developers will be able to obtain the resulting hardware from
mid-August onwards. We also expect to be offering them at the
Radio Village
of the 2011 CCC Camp.
Tracing the SIM<->Phone protocol can be useful in a variety of cases:
- Observing the behavior of operator-issued SIM cards in terms of
which SIM Application Toolkit or Proactive SIM features they use.
- Debugging aid while developing and interoperability testing of your
own SIM toolkit applets
- Prototyping and development of SAT blocker or other SIM card
firewalls which restrict the security or privacy threats originating
from untrusted operator SIMs or potentially compromised SIM cards.
[ /gsm |
permanent link ]
Exploring the Motorola Horizon macro BTS
Some days ago, my new 100kg toys have arrived: The Motorola horizonmacro
indoor cabinets, populated with 3 GSM 1800 TRX each. Pictures are at
the
openbsc.osmocom.org wiki
It took some time to manufacture the power cable, and specifically the
E1 cable (where I had to reverse engineer the pin-out of a 37pin sub-d
connector that the so-called BIB (balanced interface boards) use.
The next biggest time consumer was the fact that the command line based
user interface (MMI) has three modes; MMI-ROM, MMI-RAM and emon.
Figuring out which commands to use to switch modes isn't really
something that you can easily find. Especially the fact that the
MMI-ROM to MMI-RAM switching command has a parameter that needs to be
identical with one stored on the PCMCIA flash card (number "18" in my
case), didn't make things any easier.
So as an intermediate summary, I can make the following comments about
the Motorola BTS and specifically A-bis architecture:
- Motorola seems more proprietary and less specification oriented than
what I've seen so far (Ericsson, ip.access, Siemens, Nokia).
- They do not seem to implement a SAPI=62 OML link on A-bis at
all
- Thus, there is no GSM TS 12.21 compatible OML protocol at all
- Instead of using individual OML messages and/or attributes to set
things like ARFCN, BSIC and the like, the Motorola BSC seems to generate
one big database blob containing all parameters. This blob is
downloaded into the BTS RAM (optionally its PCMCIA Series2 flash card).
Particularly the latter part is causing quite some problems for me. As
I don't have a Motorola BSC, I cannot generate those database files.
My BTS units come with databases on their PCMCIA flash cards. I can
view their contents on the MMI. However, their config (EGSM) doesn't
match the actual radio hardware that's installed. Even after hours
spent with the MMI, there seems absolutely no way how those parameters
can be altered locally
I also have not found any hint / documentation at all about something
like a LMT (local maintenance terminal) like other BTS vendor. Using
such a software on a PC, you can typically configure the BTS via a RS232
line.
So most of my hope now lies in being able to analyze dumps of those old
Series2 flash cards in order to get some hints on that database format.
If anyone has any of the following information, it would make my day:
- Motorola A-bis / Mo-bis protocol traces
- Any Motorola BTS config databases (independent of BTS model/version)
- The sample database files that come with a Racal 6113 Option 225
- Any information on the database format
But to be honest, I don't have much hope. The equipment is old (about
1999), and only very few operators have been using it, as it seems.
[ /gsm |
permanent link ]
ETSI and its ridiculous fees for old archived documents
I am currently looking for some old meeting minutes in order to
understand who was the driving force behind certain features in GSM.
Ever since the GSM standardization had been handed over to 3GPP, all
meeting minutes are freely accessible and downloadable for everyone.
But what about the 15-20 years before that? They remain in the ETSI
archive.
So from April 2011, the ETSI has started to offer an archive DVD,
containing all the early CEPT and ETSI documents such as draft
standards and meeting minutes. What a great idea. This DVD set is
titled A Technical History of GSM Standards
But then, when you look at the price tag, you can only think "Seriously?
They must be kidding!!". They are selling it for 6,000 EUR. Yes,
this is not 60 EUR, not 600 but 6,000!. Go and see with your own eyes
at the ETSI web-shop
or
this flyer.
But if that hefty price was not enough, they add an additional burden:
You have to be an ETSI member to even buy it. And what is the cheapest
option? Well, as an individual/small business you can join for a
reduced
price of EUR 3,000 per year. So in order to get access to some old
meeting minutes from the 1980ies or 1990ies, I have to pay a total of
EUR 9,000? They must be out of their freaking minds. Sorry, but I am
simply lacking any other words how I could put it.
I think ETSI and the entire telecomms industry can be happy if anyone
shows an archaeological interest into ancient specification texts at
all. Scaring them away with a more than ridiculous price tag is
certainly not going to encourage students or researchers to understand
who, how and why GSM has ended up what it is today.
[ /gsm |
permanent link ]
Looking for documentation and/or protocol traces for Motorola Horizon BTS
It seems like I'll be getting my hands on some Motorola Horizon 1 BTS
soon. Of course it would be great to add OpenBSC support for yet
another vendor / model.
So if anyone out there has any information on Motorola Horizon,
I would be more than happy. Information includes:
- Motorola A-bis (Mo-bis) protocol traces
- Motorola A-bis (Mo-bis) protocol specs
- Installation manuals
- Configuration manuals
- Service manuals
Thanks in advance!
[ /gsm |
permanent link ]
Finally: A parseable MAPv1 ASN.1 specification
After way too much work in extracting the ASN.1 text from word documents, learning
about the differences in pre-1990 ASN.1 and pre-1990 TCAP with their respective
current-day counterpart, some futile attempts with the incomplete ASN.1 grammar
files available for ANTLR3, I have finally dedicated the entire day to manually
convert the MAPv1 from ETSI TS 09.02 3.10.0 (1994) to work with present-day
TCAP and present-day ASN.1 syntax.
The result not only passes the syntax and semantic checker, but it is accepted
by the Erlang asn1ct. It has not been tested/validated against any test data
so far. Just in case anyone else needs a 'working' version of MAPv1 some 20 years
after it was created, I have published the result here: http://cgit.osmocom.org/cgit/asn1_docextract/tree/output/3.10.0
Any bugfixes/improvements/complaints are obviously welcome.
Now I just need to figure out how to properly work with the ROS/ROSE
CONTRACT class and TCAP APPLICATION-CONTEXT class to formally describe the
various application contexts, their respective MAP operations and associated
application context versions. It's actually quite a bit surprising that the
ETSI/3GPP don't specify this formally in 29.002. The information is contained
in the human-readable part of the document, but not in the formal ASN.1 notation.
I wonder why...
[ /gsm |
permanent link ]
Following up on my GSM MAP archeology project
In the past weeks, I have been blogging
about the work I've been doing in trying to recover the earlier versions of the
GSM MAP ASN.1 files in order to support it from my own Osmocom Erlang MAP code.
After having gone through the tiresome exercise of implementing a custom MS
Word for DOS file parser to extract the ASN.1 definitions from the
3GPP-published DOC files, I tried to feed them into the Erlang asn1ct code
generator.
Unfortunately this didn't work, as the old MAP ASN.1 references very old ITU-T
TCAP from 1988. So I went to the ITU website. There again a similar story.
From their asn1 website section, you can only get the TCAPMessages
from 1997. If you want an older format, like the Q.773 from 1988, you can
download a PDF file. Most of that PDF file is actual text. But the ASN.1
sections are included as an image, so there is no way how you can copy+paste
them.
So there I went, and manually typed in those few pages of ASN.1 source code.
After I was finished, I thought I had finally done enough. Writing a
word-for-DOS parser, typing in pages of ASN.1 manually. What more can there
be? I should be able to finally generate Erlang code for decoding and encoding
the respective messages.
But it would be too simple if it was that easy. The 1988 TCAP as well as the
old MAP specifications use the ASN.1 "MACRO" construct to define the individual
MAP operations. However, as it seems the MACRO construct had been deprecated
in 1994 by the ISO in charge of ASN.1. Successive ISO specs for ASN.1
have completely remove the MACRO construct as similar results can be achieved
with newly-introduced information objects. So of course, the Erlang
asn1ct (as well as other free software ASN.1 tools) does not support such an
antique feature.
So here I am in the year 2011, unable to use information available in the
public ITU-T and ETSI/3GPP specifications to build a GSM MAP protocol
implementation that can deal with the messages that you encounter on real-world
SS7 links. I guess there are now the following different approaches to proceed:
- write a converter that translates MACRO into OBJECT
- manually convert the old MAP specs from MACRO to OBJECT
- add MACRO support to current-day ASN.1 tools
- find some old ASN.1 code generators that still support MACRO
All in all, this is a really dissatisfying situation, and I would say it is a
failure of the standardization bodies to provide useful versions of their
specifications. You cannot remove operations and associated message types from
a specification, while in real life even 15 years later a whole number of users
still use messages according to those (now removed) definitions. Meanwhile, the
old specs are getting useless, because you not only deprecate but completely
remove a language construct of the formal specification language used.
This renders the idea of having a formal specification useless. If I first
need to write my own converters or manually convert that very same formal
specification, errors can be introduced in the translation/conversion process,
just as much as errors could have been introduced in manually writing encoding
and decoding routines based on a non-formal-specified protocol like most of the
IETF / Internet protocols.
[ /gsm |
permanent link ]
More MS Word for DOS file parsing in the name of GSM
It seems that from TS 09.02 version 4.2.0 on, the editors have actually
put markers as "hidden text" inside the Word document, which allow
better automatic detection when a given ASN.1 module starts, is interrupted
by plain text, continues and ends. The following screen shot (from Section 14
of the above-mentioned document) is human-readable hidden text explaining the
syntax:
So now I'm adding this format as a second option to my extraction tool.
Please note: The tool I wrote yesterday (working fine with version 3.x.y of 09.02)
is available from asn1_docextract.git.
Later today it should also support the >= 4.2.0 annotations outlined in this
blog post.
[ /gsm |
permanent link ]
Implementing a custom MS Word for DOS file parser to properly do GSM SS7
Yes, I'm not kidding!
In recent months, I've been writing quite a bit of GSM MAP (Mobile Application
Part) code. MAP is the protocol used heavily in the GSM core network and
especially on the roaming interfaces between different operators. It is
specified in GSM TS 09.02 and later 3GPP TS 29.002.
The protocol specification relies on ASN.1 description of the messages as well
as the regular BER encoding rules. ASN.1 is this marvelous technology that
allows a protocol to be specified in an abstract and formal notation, in an
extensible way, removing all the problems of human-written marshalling code,
full of errors and differences due to different developers interpreting a
human-readable specification in different ways.
So far so good. You think it should be simple to write a parser and generator
for MAP messages: Simply feed them into the ASN.1 compiler of your choice, it
will generate code in the target language you require.
As long as both sides of the communication do that using exactly the same
revision of the specification (and don't make implementation mistakes), this
will work. The reality looks very different, though :( When I test my code
against something like one million of real-world messages captured on a
production SS7 roaming interface, it produces errors already on packet number
six of that trace.
The problem is: The protocol designers have not specified the first versions
in a really extensible way, i.e. a given operation originally only returned
one atomic data field, and it was later extended to return a sequence of data
fields. Thus, there is one additional level of hierarchy in the encoding.
Not only that, but in their infinite wisdom, the designers of MAP have also
failed to include versioning information in each and every message header.
Instead, it is part of the application context name, which is only
part of the first message of every conversation.
Furthermore, different versions of the MAP specifications disagree on
whether certain fields are deemed optional or not. This is further
complicated by somewhat strange versioning habits. There is the Revision
number of the TS 09.02 (like 3.8.10), then there is a different version
number encoded in the corresponding ASN.1 files like 'version9(9)' and
individual operations then have v1/v2/v3 in their application context
name.
Some even more wiser decision must have been to remove the description
of older messages from the later versions of the specifications. So even
specifications published in the year 2000 no longer include definitions of
messages that were still part 5 years earlier. Why does it matter? Because
today, in 2011, you still see MAP message on the international SS7 interfaces
that are encoded in some of the earliest versions of the MAP protocol!
And if all of this was not enough, the biggest bummer is: For most of
the releases of the specification, the ASM.1 text files are not distributed
separately, but they are interspersed with human-readable text in the
actual specification documents (which can be 600 pages long, nothing you want
to cut+paste).
Even worse: If you go to the ETSI homepage and download the PDF version of old
09.02 specs, they will actually provide a PDF with a scanned paper print-out,
i.e. no searching and no copy+pasting.
Luckily, the 3GPP has made the history of 3.8.0 and later available on their FTP
server. But they are in MS Word for DOS format, like they were written
originally. This format can not be opened by OpenOffice, and as far as I
know not even by any of the Windows Word versions that MS has released in
the last 10 years.
So what did I do? I actually installed MS
Word 5.5 for DOS (provided as Freeware from Microsoft) and ran it in
DOSEMU, to convert the specs into RTF format. This way I can at least open
them and look at them in a modern text processor.
But this still does not solve the copy+paste problem.
I finally found antiword, but it
mainly focuses on Word for Windows files and only does rudimentary text
extraction from Word for DOS files. But hey, there is an online copy of
chapter 16 from the File Formats Handbook, apparently published by
Dr.Dobb's (who remembers them!!) at some time in the past.
So what did I do? I wrote some custom parser for those old Word/DOS files,
which parses the paragraph format descriptions and tries to identify those
sections that contain the ASN.1 code. As they are almost the only part in the
specification that is enclosed with a border line on all four pages, this
should work pretty fine. Early results are quite promising!
My hope is now that the ETSI stylesheets did not change too much over time,
i.e. that this parser will be able to extract the ASN.1 spec for all of the
protocol versions that I can find. If that works, I can run them through
a validator, then pretty-print them and putt them all in one git tree in
chronological order. And maybe at some point in 2011, we will have the
marvels of an unified diff between two different MAP versions. The strange part is: Diff was developed in the 1970ies, GSM in the late 1980ies. They should have known about it back then, and used a revision control system like SCCS to record all the changes in the specification they make.
I guess this all is a glimpse how a digital archaeologist of the 22nd century
must feel when analyzing ancient artefacts and trying to understand what the
heck his ancestors have been doing back then.
UPDATE: The tool can be found at http://cgit.osmocom.org/cgit/asn1_docextract/
[ /gsm |
permanent link ]
Starting to experiment with Anritsu MD8470A signalling generator
Earlier this week I was able to pick up some new equipment (aka toys) from
the customs at Berlin TXL airport. Among other things I learned that despite
filing an Internet-Zoll-Anmeldung (IZA) (Internet Customs Declaration),
online via the German customs web site, you still have to print two copies of
it on actual paper. I only had one copy, and the customs department does not
have a copier to produce another copy. Buerocrats :/
In any case, I am now the proud owner of an Anritsu MD8470A signalling
generator, which is basically a small 3G (WCDMA) network on steroids, all
inside a single box. It can do mobility management, call control, voice calls,
sms, packet data service, WAP, etc. It even has a legacy GSM/GPRS radio, so you
can do inter-RAT hand-over between 3G and GSM.
But what is even more exciting: It includes (proprietary) APIs that allow you
to send sequences hand-crafted messages on RRC and any layer above. This means
it is an excellent tool for security and robustness testing of mobile phones.
[ /gsm |
permanent link ]
Struggling with adding Ericsson RBS support to OpenBSC
I've been spending way too much time recently in understanding the low-level
aspects of Ericsson RBS 2000 and the associated OM2000 protocol. The goal
here is to support this family of BTS from OpenBSC.
The first big obstacle was that the A-bis Layer2 (LAPD) is quite different
from what we've seen with Siemens BTS before - and also from what the GSM Specs
TS 08.56 says.
In the Ericsson A-bis, there are the following key differences regarding standard A-bis:
- E1 timeslot is not configured statically. Instead, the BTS scans the entire E1 link and looks for SABM messages to TEI=62/SAPI=62
- There is no TEI manager
- LAPD sessions are initiated from BSC to BTS
- There is not only one OML connection for each BTS, but one additional OML connection for each TRX
- OML does not follow 08.59/12.21 but is proprietary
All those parts above have now been solved. We can initialize the A-bis link
and talk OM2000 to the DXU/IXU of Ericsson RBS 2000, and we can use that to
configure and initialize the CF (central function), as well as to configure
the IS (Interface Switch) and CON (concentrator).
However, the IS configuration is already quite difficult. In that
configuration you connect 1:1 mappings of various ICPs (Interface Connection
Points). So you can connect any 64k or even 16k sub-slot of a TRX with any of
the E1 interface(s) timeslots. However, the assignment of which TRX(TRU) is
represented by which ICP is BTS specific. On a RBS 2401 for example, the first
TRX (TRX0) is attached to ICP 512..523 (1x 64kbps signalling + 8x16kbps traffic).
So if we configure the IS to connect those ICPs 512..523 to the ICPs 4..15,
then we will get the TRX0 routed to Timeslot 1,2 and 3 of the first E1/T1
interface. You can see some examples in page
89 (pdf page 115) of this document. This works on the RBS 2401, but it
seems like the RBS 2308 has different ICP/DCP assignments than the generic RBS
2000 example that they are showing.
If anyone is more familiar with the details of the Interface Switch in RBS2000,
and specifically the ICP / DCP mapping inside the RBS 2308, I would definitely
want to have a chat with you.
If we cannot figure this out, it is impossible to bring up the per-TRX OML and
RSL links, and thus impossible to use those BTS with OpenBSC :(
[ /gsm |
permanent link ]
SS7 work: M2UA, MTP3 and ISUP message {de,en}coding
One of my paid contracts required me to start moving directly into the GSM core
network, the SS7 domain. While so far I had a fairly good understanding of
SCCP, TCAP and MAP (which are required for GSM/3G roaming interfaces), I've
now had to look at the actual telephony signalling side of things.
Even in GSM networks, the gateway or inter-working MSC will translate all
the GSM TS 04.08 Call Control messages into ISUP, the ISDN User Part,
originally designed for call control signalling between ISDN networks.
As apparently always in SS7, there are many, many different standardized and
proprietary protocol stackings that can be seen in the wild. I'm now working
on a stack that looks like IP->SCTP->M2UA->MTP3->{ISUP, SCCP->TCAP->MAP}.
Luckily, for now there is no need to do any fully-fledged implementation of it,
simple message parsing and encoding routines are sufficient for the task at
hand.
It's been about time that I'm closing those last gaps in the knowledge of
GSM core network protocols. The only part that I'm still missing so far
is CAMEL. I know roughly how it works, but I've never played with it or
implemented any part of it.
[ /gsm |
permanent link ]
Supporting the HSL 2.75G femtocell from OpenBSC
The last couple of days I've been hacking away on reverse-engineering
the proprietary Abis-over-IP variant of the HSL Femtocell. This is required to get
this latest newcomer in the GSM femto/picocell market to work with
our OpenBSC (and later OsmoSGSN)
software. Progress is quite good now, apart from their custom RTP multiplexing
format, everything required for signalling, SMS and Voice is working from OpenBSC.
The HSL Femto is a nice and powerful piece of hardware, containing a TI DaVinci
ARM+DSP chip, 128MByte DDR2 memory, a Spartan-3A FPGA and 275Ms/s DAC as well
as 65 Ms/s ADC. Much too powerful for a single-ARFCN GSM system. This really
looks like the vendor wants to do multi-ARFCN software updates later. More details and some initial PCB photographs can be found in the OpenBSC wiki.
The Software side looks a bit like it is still maturing. Most bugs I have
found so far are apparently fixed in the SR1.0.1 firmware. The A-bis dialect
is quite different (and more simplistic) from what I've seen in any other BTS.
More details can once again be found at a page in our wiki.
What's exciting is that there now is a commercially available traditional
BTS product at relatively low cost. By traditional I mean it is
still only a BTS and not a Um-SIP gateway like OpenBTS.
I hope this will enable more people to use and experiment with OpenBSC, as the
cost and availability of the ip.access nanoBTS has always been an issue for
many people without a four-digit budget available.
[ /gsm |
permanent link ]
OpenBSC field test at 27c3 over
During the last week I was busy with
- December 22nd though 24th: Preparing OpenBSC to be ready for the field test at 27c3, i.e.
- improving the output of the log at "INFO" level to be not too verbose at the expected network load
- Implement the interface to LCR using a Unix domain socket rather than linking LCR with OpenBSC
- Configuring all 6 BTS, put them in multi-TRX config, test the setup
- Manufacturing nanoBTS stacking cable (with their weird RJ-69 plugs that you have to mill a notch off)
- Install all required software on the machine that will run OpenBSC
- December 25th and 26th: Setting up the network
- Physically mounting the nanoBTS units
- Patching cables throughout the building, installing PoE switches
- Configuring LCR
- Interfacing with the Phone Operation Center (POC) via E1 / DSS1
- December 26th through 30th: Running the network
- December 30th: De-installing the network
I don't have much time now, still have to unpack lots of boxes full of gear.
However, I have finally completed my scripts to graph some of the statistical
data of the field test. You can see the graphs in the OpenBSC
wiki.
Unfortunately we don't have the same body of statistical data for the previous
field tests at 25c3, 26c3 and har2009. However, for all of those three events
we have now graphs about the IMSI/Country distribution of all the phones that
have ever tried a LOCATION UPDATE with us: 25c3, 26c3, HAR2009,
providing some nice statistics on what nationalities are attending the
respective events.
[ /gsm |
permanent link ]
Interview about GSM security (in German)
The major Austrian newspaper Der Standard
was yesterday featuring an an
Interview with me on GSM security related issues. Being in Austria, the
interview is obviously in German language, sorry for all non-German-speaking
readers of my blog.
[ /gsm |
permanent link ]
Preparations for GSM network at 27C3 conference
Behind the scenes, we've been working on preparing the experimental
GSM/GPRS/EDGE network at the 27th
Chaos Communication Congress. The regulatory authority was nice enough
to grant us 6 ARFCN, which we will split to 3 BTS (2 TRX each), resulting in
one BTS with 2 TRX on each of the 3 conference building floors.
I've started a page in
the 27C3 conference wiki about the GSM network. Please notice that this
information is still preliminary at this point.
The wiki page also contains detailed instructions on how you can participate in the test network. I'm hoping a lot of you will bring a dedicated cellphone that you can put the 27C3 SIM inside and participate in the network.
I'm particularly excited about GPRS/EDGE support. We will be handing out
official, world-wide routed, unfiltered IPv4 addresses to each and every phone.
This means you are free to run port scans or other attacks (please: No
DoS) over an unfiltered IP network directly into your mobile phone.
[ /gsm |
permanent link ]
Learning how GPS _really_ works in order to truly understand RRLP
Back one or two years ago, when I first discovered the RRLP as a mechanism how operators
can get very precise GPS positioning of a mobile phone (without any authentication
or a way for the user to prevent or at least notice it), I was frankly speaking
shocked.
We've done some experiments at HAR2009 and obtained a number of great position
fixes, mostly from iPhones. The nice aspect of RRLP is that it is buried down
inside Layer3 of the GSM protocol stack in the baseband processor. This is at
a much lower level than all the web or App based location based services that
are running in an application program in userspace of the application
processor.
Now RRLP comes in a number of different flavors. What we have done so far is
called ms-based positioning, where the phone works as an autonomous GPS
receiver, pretty much like a personal navigation device or any hand-held GPS
receiver. So the network simply asks "tell me your GPS coordinates if you know
them" and the phone will respond. Some phones ask for assistance data in order
to do A-GPS. But that's it.
What has been more of a mystery to me is the ms-assisted GPS RRLP mode,
where the phone just performs some measurements and forwards the resulting
data to the network. I never really understood the details of how it works,
but always wanted to. Last week I finally found some time to do the research
required to fully understand it:
The network tells the phone the exact bit timing, Doppler shift and other
parameters for each of the satellites that it _knows_ the phone would be
receiving given the current cell the phone is registered to. The phone then
performs some measurements within very narrow time/frequency/synchronization
windows, and passes back the timing of those received signals relative to the
current GSM cell signal. Using this information, the actual position estimate
will be completely computed inside the network, not inside the phone.
Presumably this ms-assisted mode was implemented to not have to
put a full-blown GPS receiver into every phone, requiring sophisticated
processing in either hardware or software. Also, this method should be
much quicker as the network _knows_ all the current ephemeris data and
GPS signal timing, whereas a stand-alone GPS receiver would have to take
quite a lot of effort to acquire a signal from cold-start, even if there
is some assistance data.
Unfortunately I don't have the time to actually implement the network side for
this. It would be a fun project, but I have already way too many of them
(and customers who only pay for other features in our Free Software GSM stack).
There's now a RRLP wiki
page at security.osmocom.org. As short as it is it still contains more
information about RRLP than I could find on any other public source on the
network - except the protocol specs.
[ /gsm |
permanent link ]
Wireshark patches enhancing IPA Abis/IP dissector accepted
The wireshark project recently accepted two of my patches related to the
Abis/IP dissector. The first of
them makes the TCP/UDP port numbers that are interpreted as IPA multiplex
a configurable preference. This is really useful, as the actual port numbers
used in production setups seem to differ from site to site (with no real
standard port numbers and only some that are 'best practise'). Without this
patch, in many case you always need to click 'Decode as... GSM IPA' every
time you open a pcap file.
The second
patch adds support for printing the debug messages that the Hay Systems Ltd. HSL
Femtocell includes as stream identifier 0xDD in its Abis/IP variant.
I hope I can find some time to clean up / finish some of the other wireshark
patches that we have pending for quite some time. The main problem here
is that we imported some definitions from OpenBSC, which use gcc extensions
and are thus not permissible for wireshark inclusion.
[ /gsm |
permanent link ]
Starting to work on drivers for the Mediatek MT6139/MT6140 RF Transceiver
In the last two days, I have finally started to get some initial work done on
the OsmocomBB port for the Mediatek chipsets. My current focus is the
MT6139/6140 RF Transceiver, including stuff like setting it up for Rx and Tx,
computing the VCO/PLL dividers for all ARFCNs in 4 bands for uplink and
downlink, etc.
Next will probably be the drivers for the MTK digital baseband BPI (baseband
parallel interface) and BSI (baseband serial interface), which are needed to
actually use the MT6139/6140 driver, as well as the antenna switch module,
power amplifier and other parts of the RF front-end.
I'm not really testing any of this code at the moment, as I'm travelling a lot
without access to my Racal 6103 or other GSM handset testing equipment.
However, writing even untested code helps me understand the chipset better and
is a first step in the right direction. I guess January 2011 will provide more
time to continue/complete this task.
[ /gsm |
permanent link ]
Trying to understand Ericsson Abis-IP + OML
I've recently been able to look at packet traces of an Ericsson BTS (which they
call RBS) and have been working on understanding their proprietary Abis-over-IP
protocol stacking and OML layer.
By now, all equipment makers have migrated their BTS products from classic TDM
(E1/T1) lines to some form of IP-based back-haul. However, the GSM specs as
published by ETSI and 3GPP still only specify the E1/T1 transport layer, and
every vendor seems to invent their own protocol for back-haul.
What we already know (and support) is the ip.access style Abis-over-IP, where
they have their IPA multiplex layer inside TCP. Inside that they then have
pretty straight-forward 08.58 (RSL) and 12.21 (OML) messages.
With Ericsson, they use a stacking like this: Ethernet, IPv4, L2TP,
custom-HDLC, RSL/custom-OML.
The custom HDLC layer (I have called it Ericsson HDLC, or short EHDLC) seems
to work quite different from all other forms of HDLC that I've seen:
- 1 Byte Address
- 1 Byte Length (including the header!)
- 1-2 Bytes Control
- n Bytes Data
The Control octets are just like in any HDLC, i.e. you have U/I/UI/S Frames and
see commands like SABME, UA, RR, ... It mostly uses a two-octet control word
that has both N(R) and N(S) for acknowledgements. At the beginning they actually
do a XID exchange that seems compliant with ISO 8885 (if you cannot find that
document, try reading the AX.25 spec instead, its XID is compatible with ISO
8885).
I have not fully understood the Address octet yet. I see lots of changes in
the upper three bits, and it seems there is a SAPI or TEI that is the
lower 5 bits of the octet.
Having a length field in an HDLC header instead of any flag bytes is indeed
very uncommon to see.
The OML layer (called OM2000) is completely proprietary and shares nothing with
the GSM specs 08.59/12.21 apart from the three byte header. However, I have
managed to build a pretty complete dissector which you can find together with
the EHDLC code in this
rbs2409 patch which applies on top of the generic wireshark
abis_oml.patch
It is my hope that this information (and particularly the dissector) will prove
a valuable resource once we add Ericsson BTS support to OpenBSC. If there is anyone
who can provide us real BTS (RBS) hardware, please let me know :)
[ /gsm |
permanent link ]
Initial mt6235 Linux and u-boot code available
As Marcin
announced yesterday on the OsmocomBB mailing list, his initial u-boot and
Linux port to the MT6235 baseband processor has been pushed to the git.osmocom.org server. He has also
provided some instructions and pre-compiled kernel and u-boot images.
He's now working on the NAND, SD/MMC, GPIO and LCD drivers. If you want to
help out, feel free to contact Marcin about this.
Meanwhile, I've been doing a bit of theoretical analysis on the GSM baseband /
RF interface of the MT6235, based on the limited documentation that is available
to the general public. Seems like it's about time to start with practical
experiments soon..
[ /gsm/osmocom-bb |
permanent link ]
Announcing Osmocom SIMtrace: A smart card sniffer
During recent weeks I started to do some work related to SIM Application
Toolkit (STK / SAT). Debugging this kind of application is hard, as you
never really know what exactly is going on between your SIM and the phone,
and you don't have the full source code for either of them.
Thus, the need for passively sniffing/tracing the smart card interface between
SIM and phone was born. There are commercial solutions which are not only
prohibitively expensive, but then they are again proprietary/closed, i.e. you
cannot extend them how you want.
There are also some free/open projects like the good old Season scanner, or the
slightly more modern RebelSIM Scanner.
However, those are really dumb and you have to manually determine the bit-rate
using an oscilloscope and then program the UART accordingly. Furthermore, their
top speed is often limited. None of this is really useful if you e.g. want to
test a variety of combinations between N SIM and M phones, where you don't want N*M
times of manual determination of bit-timing on an oscilloscope.
As an alternative solution, I have now created Osmocom SIMtrace. It uses
an AT91SAM7S micro-controller as hardware interface between the SIM card
interface and USB. It properly sniffs the RST, CLK and I/O lines of the SIM
and does auto-bauding, follows negotiation of new bit-rate negotiation via
PPS/PTS and re-assembles / segments the APDUs as they come by.
Finally, the APDUs are picked up by a small command-line program that feeds them
into wireshark, where you can inspect them like any other communication protocol
that you're used to.
The code is still fairly experimental, but for anyone with an interest in this
topic it should definitely be possible to reproduce my results.
There is not much specific to SIM cards in this project, by the way. It should
work with any ISO 7816-3 T=0 smart card. Adding T=1 is just a matter of software,
if you need that protocol..
And now I'm finally off to doing the actual work that I wanted to do.
[ /gsm |
permanent link ]
A brief history on the withdrawal of the A5/2 ciphering algorithm in GSM
Recently, I wanted to investigate when and how A5/2 has been withdrawn from
both GSM networks and GSM phones alike. Unfortunately there was no existing
article discussing this history online, so I went through dozens of meeting
reports and other documents that I could find online to recover what had
happened.
If you don't know what this is all about: It is about the A5/2 air-interface encryption
algorithm that was used in certain GSM networks until about 2005-2007.
A5/2 was specified as a security by obscurity algorithm behind closed
doors in the late 1980ies. It was intentionally made weaker than it's (already
weak) brother A5/1. The idea was to sell only equipment with A5/2 to the
countries of the eastern block, while the less-weak A5/1 encryption was to
be used by the western European countries.
A5/2 had been reverse engineered and disclosed in the late 1990ies, and has
undergone a lot of attention from cryptographers such as Ian Goldberg and David
A. Wagner. In a 1999 paper, they already expect that it can be broken in
real-time.
It took several more papers until in August 2003, finally, the proponents of
the GSM systems (ETSI/3GPP/GSMA) have realized that there is a problem. And
the problem was worse than they thought: Since they key generation for A5/1
and A5/2 is the same, a semi-active downgrade attack can be used to
retroactively break previously-recorded, encrypted A5/1 calls. The only
solution to this problem is to remove A5/2 from all equipment, to make sure
the downgrade is not possible anymore.
Starting from 2004 the security related working groups of 3GPP and GSMA thought
about removing A5/2, and in the following years they convinced their respective
bodies (3GPP, GSMA), and members thereof (operators, equipment makers) to fix
this problem.
Ever since that time, it is known that using the same key generation for
different algorithms enables down-grade attacks. However, the key generation
for the then-new A5/3 algorithm was unmodified. So now that A5/1 has been
broken in recent years, even if the operators deploy A5/3, the same model of
down-grading attacks to A5/1 can be done again.
I have put down a time-line at the still mostly-empty security.osmocom.org website. Some of the goodies from it:
- It took from 1999-2007 until this gaping security hole was fixed. Call that incident response!
- Unnamed Northern American Operators (and the PTCRB) were the biggest
blockers to remove A5/2 support from their networks. This is particularly strange since US operators should always have had A5/1 access.
- As a breaking of the more secure A5/1 was already anticipated even back
then, in 2002 A5/3 was first specified. Five years later (2007) there was virtually no support for A5/3 among manufacturers of GSM network equipment
- It took until January 2009 until the GSMA discussed A5/3 testing with mobile phone makers
- It took until November 2009 until there was a plug-fest testing interoperability between A5/3 enabled GSM network equipment and A5/3 enabled phones.
And what do we learn from all this?
- GSM equipment manufacturers and mobile operators have shown no interest in fixing gaping holes in their security system
- Prior to that first A5/2 attack, they have never thought of procedures for upgrading the entire system with new ciphering systems (i.e. proactive plans for incident response)
- Even after the A5/2 disaster, they have not learned the slightest bit. The same problem that was happening with A5/1 - A5/2 downgrade attacks can today be done with A5/3 - A5/1 downgrade attacks. And this before the majority of the operators has even started to use the already-7-year-old A5/3 in their production networks.
- The security work group of 3GPP has had a lot of insight into the actual
threats to GSM security even 10 years ago. You can see that e.g. in the
Technical Recommendation 33.801. But nobody wanted to hear them!
- Similar problems exist with the authentication algorithms. It took 12 years from first practical attacks on COMP128v1 until the GSMA is looking at withdrawing it.
[ /gsm |
permanent link ]
All your baseband are belong to us
I'd like to point out the slides of the talk:
All Your Baseband Are Belong To Us by Ralf-Philipp Weinmann.
Ralf is one of those few people on this planet who have understood the security
implications of now being able to send arbitrary protocol frames (particularly
GSM L3 04.08 frames) to mobile phones.
GSM protocol stacks have never been written with the assumption that somebody
might send intentionally malformatted messages on the air interface. But at
the same time, the GSM network does not authenticate itself to the phone, i.e.
everyone who can present a network-side GSM air interface to a phone will be
able to exchange arbitrary messages with the phones.
This problem has been outlined in all the GSM security workshops and
presentations I have been giving during recent years. Still, apart from
Ralf-Philipp Weinmann's work, I have not seen a lot of public research in
that area.
Exploiting and owning the baseband processor is a dangerous threat, as the
microphone and entire audio path are connected to that very processor. Whoever
owns the baseband can turn the mobile phone into a passive surveillance device,
commonly called 'bug'. Since application processor and baseband processor are
very far apart these days, with various layers of software in between, the
user interface will not show any indication of what the baseband processor does.
[ /gsm |
permanent link ]
u-boot + Linux kernel port to Mediatek MT6235 baseband processor under way
I am really excited about some recent work by Marcin on starting a u-boot and Linux kernel port to the
Mediatek MT6235 baseband processor.
Among GSM baseband processors, the MT6235 is a very unusual device. Unlike
classic GSM baseband chips, it is not based on an MMU-less ARM7TDMI/ARM7EJS but
on an ARM926EJS core. This is a full-blown ARMv5 core on which a standard Linux
kernel could run.
The reason for the MT6235 to contain such an 'advanced' ARM core is simple: Mediatek
is producing chipsets and reference designs for very inexpensive but feature-rich
phones. Instead of going to a full-blown (and expensive) smart-phone design
with separate ARM cores for the baseband and application processor, they simply make
the base-band processor a bit stronger than needed for the GSM stack, and run the entire
rich UI on the same cpu, including TCP/IP stack, touch-screen, web browser,
e-mail client, H.264 playback / camera recording, etc.
The original firmware on the Mediatek chipsets is a Nucleus-kernel based software stack
which is completely proprietary.
Now the mid-term vision for us is to have a Linux port to the MT6235, and run the OsmocomBB
Layer1 (and possibly Layer2) code inside the kernel, while the Layer3 and a user interface
program is running as application programs in userspace.
This would allow us to do a very rich user interface (imagine network
monitoring modes, protocol tracing, manual cell selection, etc.) while still
having to care only about one processor in the system. Furthermore, there are millions of
MT6235 based devices, so there will be no shortage of inexpensive hardware to
run this code on.
The MT6235 also has a built-in SD/MMC controller (for storing e.g. protocol traces that you
take from the GSM network) and it has a fast, dual-mode USB2 high-speed USB controller
for connecting it with a PC
Sure, porting our Layer1 to a completely different baseband chipset will be a lot of work,
and I don't really have any idea how long it will take us. But I think the vision of
such a powerful device (and finally bringing OsmocomBB and the Linux kernel together)
should prove a very attractive motivational factor.
This also means: Even if you have no clue about the GSM protocols, you can now start to
contribute to OsmocomBB: A lot of Linux kernel drivers for e.g. SD/MMC, USB, frame-buffer,
SPI, I2C, PWM and other integrated controllers of the MT6235 need to be written.
Like all Mediatek data sheets, the MT6235 data sheet describing all those peripherals can
be found on various places on the Web, including (but not limited to) Chinese
developer forums.
It also seems there is at least one MT6235 based phone where JTAG and serial
console have been identified (Sciphone Dream G2), which should make debugging
and bootstrapping convenient.
[ /gsm/osmocom-bb |
permanent link ]
Job Offer: GSM baseband security research in Berlin/Germany
If you're following my blog because you have an interest in GSM
security related topics, there is currently a very interesting
job offer by Frank from GSMK. It is about a job doing
research into over-the-air attacks against baseband firmware in real-world
GSM/UMTS telephones. Whoever gets the job will likely use/extend OpenBTS,
OpenBSC or other GSM foss projects.
So if you're familiar with the GSM/3G protocol specs, have an interest
in software security / exploiting and may even have existing exposure to
OpenBSC, OpenBTS or OsmocomBB: Please send Frank a message and apply for
what I personally consider one of the most exciting opportunities in the
IT security industry today.
[ /gsm |
permanent link ]
Worlds first 20 minute voice call from a Free Software GSM stack on a phone
As Dieter
Spaar has pointed out in a mailing list post on the OsmocomBB developer
list, he has managed to get a first alpha version of TCH (Traffic Channel)
code released, supporting the FR and EFR GSM codecs.
What this means in human readable language: He can actually make voice calls
from a mobile phone that runs the Free Software OsmocomBB GSM stack on its
baseband processor. This is a major milestone in the history of our project.
While Dieter has been working on the Layer1 TCH support and the setup of the
voiceband path in the analog baseband chip (audio ADC/DAC), Andreas Eversberg
has been quietly working on getting call control of Layer3 into a state where
it can do all the signalling required for mobile-originated and
mobile-terminated call.
Combining both of their work together, they have been able to make a 20 minute
long voice call from a baseband processor running a Free Software GSM stack.
For all we know, it is the first time anything remotely like this has been done
using community-developed Free Software. Five years ago I would have thought
it's impossible to pull this off with a small team of volunteers. I'm very
happy to see that I was wrong, and we actually could do it. With less than
half a dozen of developers, in less than nine months of unpaid, spare-time work.
Sure, the next weeks and months will be spent on bringing the code from alpha
level to something more stable, fixing known issues and known bugs, etc. But
I'm confident the biggest part of the work on the OsmocomBB stack is behind us.
Big thanks to the developer team driving this project forward.
[ /gsm/osmocom-bb |
permanent link ]
|