Jednoduchý IMSI Catcher

Alias jednoduchá hračka pro ty, kteří se doma trochu nudí a chtěli by si vyzkoušet, co všechno lze dekódovat pomocí levné klíčenky RTL-SDR. Následující popis nemá nabádat k porušování zákona o elektronických komunikacích, ale slouží jako jednoduchá demonstrace funkce SDR přijímačů pro studijní účely.

skener GSM pásma

Co to je IMSI Catcher ? Jedná se o zařízení, které používají (samozřejmě v profesionální verzi) státní složky, tajné služby ale i soukromé bezpečnostní firmy pro odhalování a zachytávání idenfitikací mobilních telefonů v zájmové oblasti. Jelikož zločinné organizace i jednotlivci používají mnoho mobilních telefonů a stovky často anonymních SIM karet (předplacené karty), není je možné vždy včas za pomocí operátorů odhalovat. Je tam velmi ztížená identifikace telefonních čísel, která musí tyto služby odposlouchávat pokud mají dostát zákona o tom, že musí odposlouchávat telefony jen zájmových osob na základě soudního povolení.

V principu máte dvě možnosti, jak cíleně mobilní telefony v zájmové oblasti identifikovat. Buď vytvoříte umělou buňku síťového operátora, umístíte ji do zájmové oblasti a necháte všechny mobilní telefony aby se automaticky na ni přihlásily a tím pádem odhalíte všechny telefony v okolí (viz policejní „AGÁTA“), anebo budete pasivně dekódovat data ze vzduchu od všech operátorů a čekat na to, až se jednou za čas telefony ohlásí do sítě. Do sítě se samozřejmě neposílá informace o telefonních číslech, ale jednoúčelové identifikátory – tzv. IMSI (International Mobile Subscriber Identity). Jedná se o jedinečný kód, kterým se identifikuje mobilní telefon s vloženou SIM kartou a jedná se o složeninu několika informací. Jednak je zde informace o zemi a číslu operátora, část čísla IMSI je generovaná ze seriového čísla SIM karty.

program IMSI catcher

Pokud máte klasickou SDR klíčenku RTL-SDR a umíte minimální základy LINUXu, můžete si vyzkoušet vytvořit jednoduchý IMSI cacher doma. Toto dekódování je na hraně zákona, protože tato data jednoznačně identifikují účastníka sítě. Na druhou stranu je také potřeba upozornit na několik základních nedostatků, kvůli kterým bych to s tím porušováním zákona neviděl tak kriticky.

  • Pomocí klasické RTL-SDR klíčenky můžete sledovat jen původní pásmo 900MHz pro klasické GSM 2G sítě. Ty jsou dnes v podstatě na ústupu a nahrazovány masivně 3G a 4G sítěmi včetně volání. Zachytit je tedy možné jen zlomek mobilních telefonů, především starší výroby.
  • Ze získané informace samozřejmě nezjistíte ani telefonní číslo, ani žádné další informace, které by identifikovali konkrétního účastníka.
  • V žádném případě tímto způsobem nebudete dekódovat hovory, SMS či servisní data určená pro jednotlivého účastníka.

Jedná se tedy jen o jednoduchý logger přihlašování starších mobilních telefonů do GSM sítě, který slouží především jako demonstrace možností dnešní SDR přijímací techniky. Když jsem tento software zkoušel a snažil se zjistit, zda opravdu funguje, snažil jsem se zachytit vlastní telefon. Vlastní IMSI jsem si zjistil pomocí programu v telefonu a pak jsem zkoušel přihlašovaní do sítě. Úspěchu jsem nakonec dosáhl, ale pouze v tom případě, kdy jsem na telefonu nastavil natrvdo přihlašovaní na 2G GSM síť a pomocí informací z telefonu jsem věděl na jaké buňce a v jakém sektoru je telefon přihlášen. Žádné cílené schraňování dat nebo sledování stanic určitě nečekejte, jedná se především o jednoduchou demonstraci SDR technologie.

Postup instalace:

sudo apt update

sudo apt install cmake git autoconf libtool pkg-config build-essential python-docutils libcppunit-dev swig doxygen liblog4cpp5-dev python-scipy python-gtk2 libosmocore-dev

git clone https://git.osmocom.org/gr-gsm

cd gr-gsm/

mkdir build

cd build

cmake ..

mkdir $HOME/.grc_gnuradio/ $HOME/.gmuradio/

make

sudo make install

sudo ldconfig

make -j $nproc

cd

sudo apt install python-numpy python-scipy python-scapy

git clone https://github.com/Oros42/IMSI-catcher.git

Nyní je vše nainstalováno a je možné to program spustit. Nejprve je dobré použít automatický skener pásem, který vám vypíše seznam okolních buněk, identifikace a kmitočty:

grgsm_scanner

V tabulce, kterou vám vypíše si zvolíte nějakou buňku dle vašich preferencí a spustíte přijímač:

sudo grgsm_livemon -f xxx.xM

Pak otevřete druhé okno a spusťte logovací skript:

cd IMSI-catcher/

sudo python simple_IMSI-catcher.py –sniff