umsonst telefonieren !!
Kanalgeflüster
Lauschangriff in VoIP-Netzen
Ein Angerufener kann auch ohne das Telefon abzuheben . also schon während es noch klingelt . aufzeichnen, was der Anrufer sagt. Das kann recht peinlich werden, etwa wenn der sich noch schnell über den "dämlichen Kunden" auslässt, den er gerade anrufen will. Mit ein wenig Bastelei kann man das selbst ausprobieren.
Das Early-Media-Merkmal ermöglicht es, Angerufenen bereits während des Aufbaus der Verbindung Audioinformationen zu übermitteln. Es ist eigentlich dafür gedacht, individuelle Besetztzeichen, Ansagen wie "Kein Anschluss unter dieser Nummer", "Teilnehmer ist vorübergehend nicht erreichbar", aber auch Preisansagen von CallByCall-Anbietern zu senden. Dies hat für den Nutzer den Vorteil, dass ihn diese Informationen nichts kosten . denn allein der Versuch, eine Telefonverbindung aufzubauen, wird üblicherweise nicht berechnet. Der Zähler tickt erst ab dem Moment, zu dem beide Teilnehmer aktiv verbunden werden.
Anzeige
In den meisten Fällen wird Early Media nur in Richtung des Anrufers eingesetzt, jedoch werden auch bereits die Sprachdaten vom Anrufer zur angerufenen Anlage übertragen. Damit kann der Anrufer Sprachbefehle oder MFV-Töne (Mehrfrequenzverfahren) zur Aktivierung von Systemen oder für interaktive Sprachantworten (Interactive Voice Response, IVR) senden. Mit Asterisk kann man diese Daten hörbar machen. So können dann während der Rufphase geäußerte Bemerkungen, etwa zu einem Kollegen über den "dämlichen Kunden, der sich über den Tisch ziehen lässt", aufgezeichnet werden, ohne das Telefon abzuheben. Weitere Informationen zu dieser Schwachstelle sind im Artikel "Vorgespräch" in c't 11/09 auf Seite 166 zu finden.
Aufbau
Für eine Testinstallation benötigt man ein Nutzerkonto bei einem SIP-Anbieter, der ein PSTN/VoIP-Gateway betreibt, das Early Media in beide Richtungen erlaubt, beispielsweise Sipgate. Ein Konto dort ist kostenlos, lässt sich online einrichten und verwalten und man bekommt eine Festnetznummer aus dem eigenen Ortsnetz zugeteilt . auf Wunsch sogar aus einem fremden Ortsnetz. Für Anrufe von Außen fallen keine weitere Telefonkosten an; nur für Gespräche nach Draußen berechnet Sipgate Gebühren.
Für die Installation haben wir Ubuntu 8.10 verwendet. Die Hardwareansprüche von Asterisk selbst sind minimal, sodass es sich ohne Probleme auf einem bereits bestehenden Server parallel betreiben lässt. Um die Schwachstelle in Early Media nachzuvollziehen, benötigt man Asterisk ab Version 1.4.1, da erst seit dieser Version die Funktion "Chanspy" mit der Option "Whisper" zur Verfügung steht. In den Ubuntu-Repositories steht Version 1.4.17 bereit. Für die Installation genügt folglich sudo apt-get install asterisk, alle erforderlichen Bibliotheken und Codecs werden vom Paketmanager nachgeladen. Anschließend startet Asterisk automatisch.
Damit der Asterisk-Server hinter einem NAT-Router aus dem Internet beziehungsweise von Sipgate erreichbar ist, ist eine Forwarding-Regel für den SIP-Port 5060 erforderlich. Da einige DSL-Router wie der W701V der T-Com eigene VoIP-Software enthalten, ist dieser Port bereits belegt und lässt sich auch nicht weiterleiten. In diesem Fall muss man seine SIP-Kommunikation auf einen anderen Port verschieben, beispielsweise Port 5061. Steht der Server zu Hause, ist es zudem sinnvoll, die öffentliche IP-Adresse des Anschlusses einem Domain-Namen eines dynamsichen DNS-Anbieters zuzuordnen, etwa dyndns.org.
Konfiguration
Die folgenden Konfigurationsbeispiele sollen nur das Problem demonstrieren. Sie führen nicht zu einer funktionierenden Telefonanlage mit der man auf normalen Wege Gespräche von Außen entgegennehmen kann. Dreh und Angelpunkt der Asterisk-Konfiguration sind die Dateien /etc/asterisk/sip.conf und /etc/asterisk.extensions.conf. sip.conf regelt alles rund um die Netzwerkkonfiguration und die verwendeten Codecs:
[general]
context=default
allowoverlap=no
bindport=5061
bindaddr=0.0.0.0
srvlookup=yes
qualify=no
disallow=all
allow=ulaw
allow=ilbc
allow=alaw
allow=g729
allow=gsm
allow=slinear
register => Sipgate-ID:Passwort@sipgate.de/Sipgate-ID
externhost=meinedomain.dyndns.org
nat=yes
Die Option bindport ist standardmäßig auf Port 5060 gesetzt. Wenn der DSL-Router mit diesem Port Probleme hat (s.o), muss man ihn wie im Beispiel auf Port 5061 setzen. Mit den Angaben in register meldet sich der Asterisk-Server am Sipgate-Server an. Die Sipgate-ID ist dabei die zugewiesene siebenstellige Nummer und das dazugehörige Passwort (nicht zu verwechseln mit den bei der Anmeldung vergebenen Daten). ID und Passwort sind im Sipgate-Konto des Anbieters einsehbar. Als [externhost] trägt man seine beim dynamischen DNS-Provider angelegte Domain an. Durch das Setzen der Option nat=yes weiß Asterisk, dass auf dem Weg zum SIP-Gateway ein NAT-Router steht.
Zusätzlich enthält sip.conf Angaben zu den Nutzer-Konten, mit denen sich sowohl die Nebenstellen als auch der SIP-Provider an der Asterisk-Anlage anmelden können. Ohne eine Anmeldung des Sipgate-Gateways wären nur abgehende Gespräche möglich. Für abgehende Gespräche muss man ein Gebührenkonto bei Sipgate einrichten und aufladen, andernfalls teilt einem eine Ansage mit, dass dieser Dienst nicht verfügbar ist.
[sipgate]
type=friend
insecure=invite
nat=yes
username=Sipgate-ID
fromuser=Sipgate-ID
fromdomain=sipgate.de
secret=Passwort
host=sipgate.de
qualify=yes
canreinvite=no
dtmfmode=rfc2833
context=default
[100]
type=peer
username=100
secret=test
host=dynamic
disallow=all
allow=ulaw
allow=alaw
dtmfmode=rfc2833
context=default
[200]
type=peer
username=200
secret=test
host=dynamic
disallow=all
allow=ulaw
allow=alaw
dtmfmode=rfc2833
context=default
Nebenstellen
Nun ergänzt man die Datei /etc/asterisk/extensions.conf um folgende Einträge:
[default]
exten => Sipgate-ID,1,Playback(soundfile,noanswer)
exten => Sipgate-ID,2,Congestion
exten => Sipgate-ID,102,Busy
exten => 100,1,Dial(SIP/${EXTEN},60)
exten => 100,2,Congestion
exten => 100,102,Busy
exten => 200,1,Chanspy(all,w)
exten => 200,102,Busy
exten => _X.,1,Set(CALLERID(num)=Sipgate-ID)
exten => _0[1-9].,1,Dial(SIP/${EXTEN}@sipgate)
Diese Konfiguration sorgt dafür, dass ankommende Anrufe auf die Ortsnetznummer an den Asterisk-Server geleitet werden. Da in diesem Beispiel kein normales Telefongespräch geführt werden soll, darf man den Anruf nicht auf herkömmlichem Weg an ein Telefon/Softphone vermitteln. Stattdessen wird er auf die interne Playback-Funktion umgeleitet, sodass der Anrufer die Sounddatei zu hören bekommt. Wichtig ist dabei der Parameter noanswer, der verhindert, dass Asterisk den Anruf vor dem Playback beantwortet und somit eine gebührenpflichtige Verbindung zustande kommt. Mit einer genügend langen Sounddatei hat man ausreichend Spielraum, die Early-Media-Funktion auszuprobieren. Wenn die Spieldauer des Sounds länger als das Timeout der Rufphase ist, wird die Verbindung durch den Netzbetreiber automatisch beendet.
Damit man während der Rufphase das vom Anrufer Gesagte hören kann, wird für die Nebenstelle 200 die Chanspy-Funktion aktiviert. Damit kann sich die Nebenstelle 100 durch Anruf bei der Nebenstelle 200 auf die bestehende VoIP-Verbindung aufschalten und sowohl die Sounddatei als auch den Anrufer hören. Da es beim einem Anruf aufgrund der Konfiguration nirgendwo klingelt, muss der Teilnehmer von dem Anruf wissen, um sich aufzuschalten. Die letzten beiden Einträge der extensions.conf definieren für die Nebenstellen, wie man nicht nur untereinander, sondern auch nach "Draußen" telefonieren kann.
Um die neue Konfiguration wirksam zu machen, kann man den Asterisk-Server mittels sudo /etc/init.d/asterisk restart neu starten oder die Asterisk-Konsole via sudo asterisk -r aufrufen und dort den Befehl reload eingeben. Mit dem Befehl sip debug lässt sich verfolgen, ob eine Verbindung zwischen Gateway und eigenen Server zustande kommt.
Um eine eigene Sounddatei in Asterisk einzubinden, muss man sie zunächst in das .gsm-Format konvertieren. Dazu bietet sich das Audio-Universalwerkzeug sox an, das man in einer Standard-Ubuntu-Installation zunächst mit diversen Codecs nachinstallieren muss: sudo apt-get install sox libsox-fmt-all. Anschließend wandelt sox -V sound.mp3 -r 8000 -c 1 -w sound.gsm eine im MP3-Format vorliegende Datei ins GSM-Format um. Damit Asterisk die neue Datei beim Start respektive beim Einlesen der Konfiguration findet, muss man sie ins Verzeichnis /usr/share/asterisk/sounds verschieben.
Als SIP-Phone haben wir das kostenlose X-Lite unter Windows (Version 3.0) und Linux (Version 2.0) verwendet. Unter Ubuntu muss man vor dem Start des Softphones noch die libstdc++5 nachinstallieren. In die Konfiguration unter System-Settings ist als SIP-Proxy und als Realm der eigene Asterisk-Server mit seiner lokalen IP-Adresse einzutragen. Als Username und Authorization User definiert man den in der sip.conf festgelegten User, also 100 und 200. Gleiches gilt für das Passwort.
Nach der Eingabe der Daten registriert sich X-Lite am Server. Wählt ein externer Anrufer die von Sipgate vergebene Ortsnetznummer, bekommt er die Soundatei zu hören. Wählt man von der internen Nebenstelle 100 die Nebenstelle 200 an, so hat man nach einer kurzen Hinweisansage des Asterisk-Servers "Hörzugriff" auf die Verbindung. Durch die Angabe des Parameters w in der Chanspy-Funktion ist zusätzlich die Whisper-Funktion für diesen Kanal aktiv. Damit kann man nicht nur dem Anrufer zuhören, sondern auch mit ihm sprechen. Prinzipiell lassen sich so kostenlos Telefongespräche führen, deren Länge nur durch das automatische Timeout des Netzbetreibers nach rund zwei Minuten beschränkt sind.
Ausblick
In den AGBs der Netzbetreiber wird in der Regel die Nutzung des Telefonnetzes ohne die Absicht, eine kostenpflichtige Verbindung aufzubauen, ausgeschlossen. Somit bewegt man sich bei derartigen Versuchen zumindest in einer Grauzone. Auch das Abhören von Anrufern kann rechtliche Probleme mit sich bringen. Anrufer sollten sich künftig jedoch überlegen, was sie etwa während des Klingelns oder in einer Warteschleife von sich geben.
Für weitere Asterisk-Experimente, Fragen zur Konfiguration und Details der einzelnen Optionen lohnt es sich, einen Blick in das online verfügbare "Asterisk Buch von Stefan Wintermeyer zu werfen. Vielleicht bekommt man ja nach den ersten Versuchen Appetit, Asterisk als produktive Telefonanlage zu Hause einzusetzen.(dab)
1 Comments:
von heise geklaut!
Kommentar veröffentlichen
<< Home