SIP (Session Initiation Protocol)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
SIP (Session Initiation Protocol) ist ein Signalisierungs- und Anrufsteuerungsprotokoll, das weit verbreitet ist, um Multimedia-Sitzungen, einschließlich Sprache, Video und Instant Messaging, über IP-Netzwerke zu etablieren, zu modifizieren und zu beenden. Entwickelt von der Internet Engineering Task Force (IETF), ist SIP in RFC 3261 definiert und hat sich zum De-facto-Standard für VoIP und einheitliche Kommunikation entwickelt.
Einige wichtige Merkmale von SIP sind:
Textbasiertes Protokoll: SIP ist ein textbasiertes Protokoll, das es menschenlesbar und einfacher zu debuggen macht. Es basiert auf einem Anfrage-Antwort-Modell, ähnlich wie HTTP, und verwendet Methoden wie INVITE, ACK, BYE und CANCEL zur Steuerung von Anruf-Sitzungen.
Skalierbarkeit und Flexibilität: SIP ist hochgradig skalierbar und kann sowohl in kleinen als auch in großen Unternehmens- und Carrier-Umgebungen eingesetzt werden. Es kann leicht mit neuen Funktionen erweitert werden, was es anpassungsfähig für verschiedene Anwendungsfälle und Anforderungen macht.
Interoperabilität: Die weit verbreitete Annahme und Standardisierung von SIP gewährleisten eine bessere Interoperabilität zwischen verschiedenen Geräten, Anwendungen und Dienstanbietern und fördern nahtlose Kommunikation über verschiedene Plattformen hinweg.
Modulares Design: SIP arbeitet mit anderen Protokollen wie RTP (Real-time Transport Protocol) für die Medienübertragung und SDP (Session Description Protocol) zur Beschreibung von Multimedia-Sitzungen. Dieses modulare Design ermöglicht größere Flexibilität und Kompatibilität mit verschiedenen Medientypen und Codecs.
Proxy- und Weiterleitungsserver: SIP kann Proxy- und Weiterleitungsserver verwenden, um die Anrufweiterleitung zu erleichtern und erweiterte Funktionen wie Anrufweiterleitung, Anrufübertragung und Voicemail-Dienste bereitzustellen.
Präsenz und Instant Messaging: SIP ist nicht auf Sprach- und Video-Kommunikation beschränkt. Es unterstützt auch Präsenz und Instant Messaging, was eine breite Palette von Anwendungen für einheitliche Kommunikation ermöglicht.
Trotz seiner vielen Vorteile kann SIP komplex zu konfigurieren und zu verwalten sein, insbesondere bei der Behandlung von NAT-Traversal- und Firewall-Problemen. Dennoch machen seine Vielseitigkeit, Skalierbarkeit und umfassende Unterstützung in der Branche es zu einer beliebten Wahl für VoIP und Multimedia-Kommunikation.
Die grundlegenden SIP-Methoden, die in RFC 3261 definiert sind, umfassen:
INVITE: Wird verwendet, um eine neue Sitzung (Anruf) zu initiieren oder eine bestehende zu modifizieren. Die INVITE-Methode trägt die Sitzungsbeschreibung (typischerweise unter Verwendung von SDP), um den Empfänger über die Einzelheiten der vorgeschlagenen Sitzung zu informieren, wie Medientypen, Codecs und Transportprotokolle.
ACK: Wird gesendet, um den Erhalt einer endgültigen Antwort auf eine INVITE-Anfrage zu bestätigen. Die ACK-Methode gewährleistet die Zuverlässigkeit von INVITE-Transaktionen, indem sie eine End-to-End-Bestätigung bereitstellt.
BYE: Wird verwendet, um eine etablierte Sitzung (Anruf) zu beenden. Die BYE-Methode wird von einer der Parteien in der Sitzung gesendet, um anzuzeigen, dass sie die Kommunikation beenden möchte.
CANCEL: Wird gesendet, um eine ausstehende INVITE-Anfrage vor der Etablierung der Sitzung zu stornieren. Die CANCEL-Methode ermöglicht es dem Absender, eine INVITE-Transaktion abzubrechen, wenn er seine Meinung ändert oder wenn keine Antwort vom Empfänger erfolgt.
OPTIONS: Wird verwendet, um die Fähigkeiten eines SIP-Servers oder Benutzeragenten abzufragen. Die OPTIONS-Methode kann gesendet werden, um Informationen über unterstützte Methoden, Medientypen oder andere Erweiterungen anzufordern, ohne tatsächlich eine Sitzung zu etablieren.
REGISTER: Wird von einem Benutzeragenten verwendet, um seinen aktuellen Standort bei einem SIP-Registrar-Server zu registrieren. Die REGISTER-Methode hilft, eine aktuelle Zuordnung zwischen der SIP-URI eines Benutzers und seiner aktuellen IP-Adresse aufrechtzuerhalten, was die Anrufweiterleitung und -zustellung ermöglicht.
Beachten Sie, dass es nicht notwendig ist, die REGISTER-Methode zu verwenden, um jemanden anzurufen.
Es ist jedoch möglich, dass der Anrufer sich zuerst authentifizieren muss, um eine INVITE-Anfrage durchzuführen, oder er erhält eine 401 Unauthorized
-Antwort.
Neben diesen grundlegenden Methoden gibt es mehrere SIP-Erweiterungsmethoden, die in anderen RFCs definiert sind, wie zum Beispiel:
SUBSCRIBE: In RFC 6665 definiert, wird die SUBSCRIBE-Methode verwendet, um Benachrichtigungen über den Status einer bestimmten Ressource, wie z.B. die Präsenz oder den Anrufstatus eines Benutzers, anzufordern.
NOTIFY: Ebenfalls in RFC 6665 definiert, wird die NOTIFY-Methode von einem Server gesendet, um einen abonnierten Benutzeragenten über Änderungen im Status einer überwachten Ressource zu informieren.
REFER: In RFC 3515 definiert, wird die REFER-Methode verwendet, um anzufordern, dass der Empfänger eine Übertragung durchführt oder an eine dritte Partei verweist. Dies wird typischerweise für Anrufübertragungs-Szenarien verwendet.
MESSAGE: In RFC 3428 definiert, wird die MESSAGE-Methode verwendet, um Sofortnachrichten zwischen SIP-Benutzeragenten zu senden, was textbasierte Kommunikation innerhalb des SIP-Rahmens ermöglicht.
UPDATE: In RFC 3311 definiert, ermöglicht die UPDATE-Methode, eine Sitzung zu modifizieren, ohne den Status des bestehenden Dialogs zu beeinflussen. Dies ist nützlich, um Sitzungsparameter wie Codecs oder Medientypen während eines laufenden Anrufs zu aktualisieren.
PUBLISH: In RFC 3903 definiert, wird die PUBLISH-Methode von einem Benutzeragenten verwendet, um Ereignisstatusinformationen an einen Server zu veröffentlichen, die anderen interessierten Parteien zur Verfügung stehen.
1xx (Provisorische Antworten): Diese Antworten zeigen an, dass die Anfrage empfangen wurde und der Server weiterhin daran arbeitet.
100 Trying: Die Anfrage wurde empfangen, und der Server arbeitet daran.
180 Ringing: Der Angerufene wird benachrichtigt und wird den Anruf annehmen.
183 Session Progress: Bietet Informationen über den Fortschritt des Anrufs.
2xx (Erfolgreiche Antworten): Diese Antworten zeigen an, dass die Anfrage erfolgreich empfangen, verstanden und akzeptiert wurde.
200 OK: Die Anfrage war erfolgreich, und der Server hat sie erfüllt.
202 Accepted: Die Anfrage wurde zur Bearbeitung angenommen, aber noch nicht abgeschlossen.
3xx (Umleitungsantworten): Diese Antworten zeigen an, dass weitere Maßnahmen erforderlich sind, um die Anfrage zu erfüllen, typischerweise durch Kontaktaufnahme mit einer alternativen Ressource.
300 Multiple Choices: Es stehen mehrere Optionen zur Verfügung, und der Benutzer oder Client muss eine auswählen.
301 Moved Permanently: Die angeforderte Ressource hat eine neue permanente URI erhalten.
302 Moved Temporarily: Die angeforderte Ressource ist vorübergehend unter einer anderen URI verfügbar.
305 Use Proxy: Die Anfrage muss an einen bestimmten Proxy gesendet werden.
4xx (Client-Fehlerantworten): Diese Antworten zeigen an, dass die Anfrage eine fehlerhafte Syntax enthält oder vom Server nicht erfüllt werden kann.
400 Bad Request: Die Anfrage war fehlerhaft oder ungültig.
401 Unauthorized: Die Anfrage erfordert eine Benutzer-Authentifizierung.
403 Forbidden: Der Server hat die Anfrage verstanden, lehnt jedoch die Erfüllung ab.
404 Not Found: Die angeforderte Ressource wurde auf dem Server nicht gefunden.
408 Request Timeout: Der Server hat innerhalb der Zeit, die er bereit war zu warten, keine vollständige Anfrage erhalten.
486 Busy Here: Der Angerufene ist derzeit beschäftigt und kann den Anruf nicht annehmen.
5xx (Server-Fehlerantworten): Diese Antworten zeigen an, dass der Server nicht in der Lage war, eine gültige Anfrage zu erfüllen.
500 Internal Server Error: Der Server ist beim Verarbeiten der Anfrage auf einen Fehler gestoßen.
501 Not Implemented: Der Server unterstützt die Funktionalität, die zur Erfüllung der Anfrage erforderlich ist, nicht.
503 Service Unavailable: Der Server kann die Anfrage aufgrund von Wartungsarbeiten oder Überlastung derzeit nicht bearbeiten.
6xx (Globale Fehlerantworten): Diese Antworten zeigen an, dass die Anfrage von keinem Server erfüllt werden kann.
600 Busy Everywhere: Alle möglichen Ziele für den Anruf sind beschäftigt.
603 Decline: Der Angerufene möchte nicht am Anruf teilnehmen.
604 Does Not Exist Anywhere: Die angeforderte Ressource ist im Netzwerk nirgendwo verfügbar.
Die REGISTER-Methode wird im Session Initiation Protocol (SIP) verwendet, um einem Benutzeragenten (UA), wie einem VoIP-Telefon oder einem Softphone, zu ermöglichen, seinen Standort bei einem SIP-Registrar-Server zu registrieren. Dieser Prozess informiert den Server, wohin eingehende SIP-Anfragen, die für den registrierten Benutzer bestimmt sind, geleitet werden sollen. Der Registrar-Server ist normalerweise Teil eines SIP-Proxy-Servers oder eines dedizierten Registrierungsservers.
Hier ist ein detailliertes Beispiel der SIP-Nachrichten, die an einem REGISTER-Authentifizierungsprozess beteiligt sind:
Erste REGISTER-Anfrage vom UA an den Registrar-Server:
Diese initiale REGISTER-Nachricht wird von der UA (Alice) an den Registrar-Server gesendet. Sie enthält wichtige Informationen wie die gewünschte Registrierungsdauer (Expires), die SIP-URI des Benutzers (sip:alice@example.com) und die Kontaktadresse des Benutzers (sip:alice@192.168.1.100:5060).
401 Unauthorized Antwort vom Registrar-Server:
Der Registrar-Server antwortet mit einer "401 Unauthorized"-Nachricht, die einen "WWW-Authenticate"-Header enthält. Dieser Header enthält Informationen, die erforderlich sind, damit sich der UA authentifizieren kann, wie z.B. den Authentifizierungsbereich, Nonce und Algorithmus.
REGISTER-Anfrage mit Authentifizierungsdaten:
Der UA sendet eine weitere REGISTER-Anfrage, diesmal mit dem "Authorization"-Header, der die erforderlichen Anmeldeinformationen enthält, wie den Benutzernamen, das Realm, die Nonce und einen Antwortwert, der mit den bereitgestellten Informationen und dem Passwort des Benutzers berechnet wird.
So wird die Authorization-Antwort berechnet:
Erfolgreiche Registrierung Antwort vom Registrierungsserver:
Nachdem der Registrar-Server die bereitgestellten Anmeldeinformationen überprüft hat, sendet er eine "200 OK"-Antwort, um anzuzeigen, dass die Registrierung erfolgreich war. Die Antwort enthält die registrierten Kontaktdaten und die Ablaufzeit für die Registrierung. An diesem Punkt ist der Benutzeragent (Alice) erfolgreich beim SIP-Registrar-Server registriert, und eingehende SIP-Anfragen für Alice können an die entsprechende Kontaktadresse weitergeleitet werden.
Es wird nicht erwähnt, aber Benutzer B muss eine REGISTER-Nachricht an Proxy 2 gesendet haben, bevor er Anrufe empfangen kann.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)