SIP (Session Initiation Protocol)
Reading time: 14 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
SIP (Session Initiation Protocol) είναι ένα ** πρωτόκολλο σήμανσης και ελέγχου κλήσεων** που χρησιμοποιείται ευρέως για την εγκαθίδρυση, τροποποίηση και τερματισμό πολυμεσικών συνεδριών, συμπεριλαμβανομένων της φωνής, του βίντεο και της άμεσης μηνυμάτων, μέσω δικτύων IP. Αναπτύχθηκε από την Internet Engineering Task Force (IETF), το SIP ορίζεται στο RFC 3261 και έχει γίνει το de facto πρότυπο για VoIP και ενοποιημένες επικοινωνίες.
Ορισμένα βασικά χαρακτηριστικά του SIP περιλαμβάνουν:
- Πρωτόκολλο Βασισμένο σε Κείμενο: Το SIP είναι ένα πρωτόκολλο βασισμένο σε κείμενο, το οποίο το καθιστά αναγνώσιμο από ανθρώπους και πιο εύκολο στην αποσφαλμάτωση. Βασίζεται σε ένα μοντέλο αιτήματος-απάντησης, παρόμοιο με το HTTP, και χρησιμοποιεί μεθόδους όπως INVITE, ACK, BYE και CANCEL για τον έλεγχο των συνεδριών κλήσεων.
- Κλιμάκωση και Ευελιξία: Το SIP είναι εξαιρετικά κλιμακούμενο και μπορεί να χρησιμοποιηθεί σε μικρές αναπτύξεις καθώς και σε μεγάλες επιχειρηματικές και carrier-grade περιβάλλοντα. Μπορεί να επεκταθεί εύκολα με νέες δυνατότητες, καθιστώντας το προσαρμόσιμο σε διάφορες περιπτώσεις χρήσης και απαιτήσεις.
- Διαλειτουργικότητα: Η ευρεία υιοθέτηση και τυποποίηση του SIP εξασφαλίζουν καλύτερη διαλειτουργικότητα μεταξύ διαφορετικών συσκευών, εφαρμογών και παρόχων υπηρεσιών, προάγοντας την απρόσκοπτη επικοινωνία σε διάφορες πλατφόρμες.
- Μοναδικός Σχεδιασμός: Το SIP συνεργάζεται με άλλα πρωτόκολλα όπως το RTP (Real-time Transport Protocol) για τη μετάδοση μέσων και το SDP (Session Description Protocol) για την περιγραφή πολυμεσικών συνεδριών. Αυτός ο μοναδικός σχεδιασμός επιτρέπει μεγαλύτερη ευελιξία και συμβατότητα με διαφορετικούς τύπους μέσων και κωδικοποιητές.
- Proxy και Redirect Servers: Το SIP μπορεί να χρησιμοποιεί proxy και redirect servers για να διευκολύνει τη δρομολόγηση κλήσεων και να παρέχει προηγμένες δυνατότητες όπως προώθηση κλήσεων, μεταφορά κλήσεων και υπηρεσίες φωνητικού ταχυδρομείου.
- Παρουσία και Άμεσες Μηνύσεις: Το SIP δεν περιορίζεται μόνο στην επικοινωνία φωνής και βίντεο. Υποστηρίζει επίσης την παρουσία και τις άμεσες μηνύσεις, επιτρέποντας μια ευρεία γκάμα εφαρμογών ενοποιημένης επικοινωνίας.
Παρά τα πολλά πλεονεκτήματά του, το SIP μπορεί να είναι περίπλοκο να ρυθμιστεί και να διαχειριστεί, ιδιαίτερα όταν ασχολείται με ζητήματα NAT traversal και firewall. Ωστόσο, η ευελιξία, η κλιμάκωση και η εκτενή υποστήριξή του σε όλη τη βιομηχανία το καθιστούν δημοφιλή επιλογή για VoIP και πολυμεσική επικοινωνία.
SIP Methods
Οι βασικές μέθοδοι SIP που ορίζονται στο RFC 3261 περιλαμβάνουν:
- INVITE: Χρησιμοποιείται για να ξεκινήσει μια νέα συνεδρία (κλήση) ή να τροποποιήσει μια υπάρχουσα. Η μέθοδος INVITE μεταφέρει την περιγραφή της συνεδρίας (συνήθως χρησιμοποιώντας SDP) για να ενημερώσει τον παραλήπτη σχετικά με τις λεπτομέρειες της προτεινόμενης συνεδρίας, όπως τύποι μέσων, κωδικοποιητές και πρωτόκολλα μεταφοράς.
- ACK: Αποστέλλεται για να επιβεβαιώσει την παραλαβή μιας τελικής απάντησης σε ένα αίτημα INVITE. Η μέθοδος ACK εξασφαλίζει την αξιοπιστία των συναλλαγών INVITE παρέχοντας αναγνώριση από άκρο σε άκρο.
- BYE: Χρησιμοποιείται για να τερματίσει μια καθιερωμένη συνεδρία (κλήση). Η μέθοδος BYE αποστέλλεται από οποιοδήποτε μέρος της συνεδρίας για να δηλώσει ότι επιθυμεί να τερματίσει την επικοινωνία.
- CANCEL: Αποστέλλεται για να ακυρώσει ένα εκκρεμές αίτημα INVITE πριν η συνεδρία καθιερωθεί. Η μέθοδος CANCEL επιτρέπει στον αποστολέα να ακυρώσει μια συναλλαγή INVITE αν αλλάξει γνώμη ή αν δεν υπάρχει απάντηση από τον παραλήπτη.
- OPTIONS: Χρησιμοποιείται για να ερωτήσει τις δυνατότητες ενός SIP server ή user agent. Η μέθοδος OPTIONS μπορεί να αποσταλεί για να ζητήσει πληροφορίες σχετικά με υποστηριζόμενες μεθόδους, τύπους μέσων ή άλλες επεκτάσεις χωρίς να καθιερωθεί πραγματικά μια συνεδρία.
- REGISTER: Χρησιμοποιείται από έναν user agent για να καταχωρήσει την τρέχουσα τοποθεσία του σε έναν SIP registrar server. Η μέθοδος REGISTER βοηθά στη διατήρηση μιας ενημερωμένης αντιστοίχισης μεταξύ του SIP URI ενός χρήστη και της τρέχουσας διεύθυνσης IP του, διευκολύνοντας τη δρομολόγηση και την παράδοση κλήσεων.
warning
Σημειώστε ότι για να καλέσετε κάποιον δεν είναι απαραίτητο να χρησιμοποιήσετε το REGISTER για οτιδήποτε.
Ωστόσο, είναι πιθανό ότι για να εκτελέσει μια INVITE ο καλών χρειάζεται να αυθεντικοποιηθεί πρώτα ή θα λάβει μια 401 Unauthorized
απάντηση.
Εκτός από αυτές τις βασικές μεθόδους, υπάρχουν πολλές επεκτάσεις μεθόδων SIP που ορίζονται σε άλλα RFC, όπως:
- SUBSCRIBE: Ορισμένο στο RFC 6665, η μέθοδος SUBSCRIBE χρησιμοποιείται για να ζητήσει ειδοποιήσεις σχετικά με την κατάσταση ενός συγκεκριμένου πόρου, όπως η παρουσία ενός χρήστη ή η κατάσταση κλήσης.
- NOTIFY: Επίσης ορισμένο στο RFC 6665, η μέθοδος NOTIFY αποστέλλεται από έναν server για να ενημερώσει έναν εγγεγραμμένο user agent σχετικά με τις αλλαγές στην κατάσταση ενός παρακολουθούμενου πόρου.
- REFER: Ορισμένο στο RFC 3515, η μέθοδος REFER χρησιμοποιείται για να ζητήσει από τον παραλήπτη να εκτελέσει μια μεταφορά ή να παραπέμψει σε τρίτο μέρος. Αυτό χρησιμοποιείται συνήθως για σενάρια μεταφοράς κλήσεων.
- MESSAGE: Ορισμένο στο RFC 3428, η μέθοδος MESSAGE χρησιμοποιείται για να στείλει άμεσες μηνύσεις μεταξύ των SIP user agents, επιτρέποντας την κειμενική επικοινωνία εντός του πλαισίου SIP.
- UPDATE: Ορισμένο στο RFC 3311, η μέθοδος UPDATE επιτρέπει την τροποποίηση μιας συνεδρίας χωρίς να επηρεάζεται η κατάσταση του υπάρχοντος διαλόγου. Αυτό είναι χρήσιμο για την ενημέρωση παραμέτρων συνεδρίας, όπως κωδικοποιητές ή τύποι μέσων, κατά τη διάρκεια μιας σε εξέλιξη κλήσης.
- PUBLISH: Ορισμένο στο RFC 3903, η μέθοδος PUBLISH χρησιμοποιείται από έναν user agent για να δημοσιεύσει πληροφορίες κατάστασης γεγονότων σε έναν server, καθιστώντας τις διαθέσιμες σε άλλα ενδιαφερόμενα μέρη.
SIP Response Codes
- 1xx (Προσωρινές Απαντήσεις): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα ελήφθη και ο server συνεχίζει να το επεξεργάζεται.
- 100 Trying: Το αίτημα ελήφθη και ο server εργάζεται πάνω σε αυτό.
- 180 Ringing: Ο καλούμενος ειδοποιείται και θα απαντήσει στην κλήση.
- 183 Session Progress: Παρέχει πληροφορίες σχετικά με την πρόοδο της κλήσης.
- 2xx (Επιτυχείς Απαντήσεις): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα ελήφθη επιτυχώς, κατανοήθηκε και έγινε αποδεκτό.
- 200 OK: Το αίτημα ήταν επιτυχές και ο server το έχει εκπληρώσει.
- 202 Accepted: Το αίτημα έγινε αποδεκτό για επεξεργασία, αλλά δεν έχει ολοκληρωθεί ακόμα.
- 3xx (Απαντήσεις Ανακατεύθυνσης): Αυτές οι απαντήσεις υποδεικνύουν ότι απαιτείται περαιτέρω ενέργεια για να εκπληρωθεί το αίτημα, συνήθως επικοινωνώντας με έναν εναλλακτικό πόρο.
- 300 Multiple Choices: Υπάρχουν πολλές διαθέσιμες επιλογές και ο χρήστης ή ο πελάτης πρέπει να επιλέξει μία.
- 301 Moved Permanently: Ο ζητούμενος πόρος έχει ανατεθεί σε μια νέα μόνιμη URI.
- 302 Moved Temporarily: Ο ζητούμενος πόρος είναι προσωρινά διαθέσιμος σε διαφορετική URI.
- 305 Use Proxy: Το αίτημα πρέπει να σταλεί σε έναν καθορισμένο proxy.
- 4xx (Απαντήσεις Σφάλματος Πελάτη): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα περιέχει κακή σύνταξη ή δεν μπορεί να εκπληρωθεί από τον server.
- 400 Bad Request: Το αίτημα ήταν κακώς διαμορφωμένο ή μη έγκυρο.
- 401 Unauthorized: Το αίτημα απαιτεί αυθεντικοποίηση χρήστη.
- 403 Forbidden: Ο server κατάλαβε το αίτημα αλλά αρνείται να το εκπληρώσει.
- 404 Not Found: Ο ζητούμενος πόρος δεν βρέθηκε στον server.
- 408 Request Timeout: Ο server δεν έλαβε ένα πλήρες αίτημα εντός του χρόνου που ήταν προετοιμασμένος να περιμένει.
- 486 Busy Here: Ο καλούμενος είναι αυτή τη στιγμή απασχολημένος και δεν μπορεί να απαντήσει στην κλήση.
- 5xx (Απαντήσεις Σφάλματος Server): Αυτές οι απαντήσεις υποδεικνύουν ότι ο server απέτυχε να εκπληρώσει ένα έγκυρο αίτημα.
- 500 Internal Server Error: Ο server συνάντησε ένα σφάλμα κατά την επεξεργασία του αιτήματος.
- 501 Not Implemented: Ο server δεν υποστηρίζει τη λειτουργικότητα που απαιτείται για να εκπληρώσει το αίτημα.
- 503 Service Unavailable: Ο server είναι αυτή τη στιγμή ανίκανος να χειριστεί το αίτημα λόγω συντήρησης ή υπερφόρτωσης.
- 6xx (Παγκόσμιες Απαντήσεις Αποτυχίας): Αυτές οι απαντήσεις υποδεικνύουν ότι το αίτημα δεν μπορεί να εκπληρωθεί από κανέναν server.
- 600 Busy Everywhere: Όλοι οι πιθανοί προορισμοί για την κλήση είναι απασχολημένοι.
- 603 Decline: Ο καλούμενος δεν επιθυμεί να συμμετάσχει στην κλήση.
- 604 Does Not Exist Anywhere: Ο ζητούμενος πόρος δεν είναι διαθέσιμος πουθενά στο δίκτυο.
Examples
SIP INVITE Example
INVITE sip:jdoe@example.com SIP/2.0
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: John Doe <sip:jdoe@example.com>
From: Jane Smith <sip:jsmith@example.org>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Contact: <sip:jsmith@pc33.example.com>
User-Agent: ExampleSIPClient/1.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Content-Length: 142
v=0
o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com
s=-
c=IN IP4 pc33.example.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000te
Κάθε Παράμετρος Εξηγείται
- Request-Line:
INVITE sip:jdoe@example.com SIP/2.0
- Αυτή η γραμμή υποδεικνύει τη μέθοδο (INVITE), το URI αιτήματος (sip:jdoe@example.com), και την έκδοση SIP (SIP/2.0). - Via:
Via: SIP/2.0/UDP pc33.example.com;branch=z9hG4bK776asdhds
- Η κεφαλίδα Via προσδιορίζει το πρωτόκολλο μεταφοράς (UDP) και τη διεύθυνση του πελάτη (pc33.example.com). Η παράμετρος "branch" χρησιμοποιείται για την ανίχνευση βρόχων και την αντιστοίχιση συναλλαγών. - Max-Forwards:
Max-Forwards: 70
- Αυτό το πεδίο κεφαλίδας περιορίζει τον αριθμό των φορών που μπορεί να προωθηθεί το αίτημα από τους μεσολαβητές για να αποφευχθούν οι άπειροι βρόχοι. - To:
To: John Doe <sip:jdoe@example.com>
- Η κεφαλίδα To προσδιορίζει τον παραλήπτη της κλήσης, συμπεριλαμβανομένου του ονόματος εμφάνισης τους (John Doe) και του SIP URI (sip:jdoe@example.com). - From:
From: Jane Smith <sip:jsmith@example.org>;tag=1928301774
- Η κεφαλίδα From προσδιορίζει τον αποστολέα της κλήσης, συμπεριλαμβανομένου του ονόματος εμφάνισης τους (Jane Smith) και του SIP URI (sip:jsmith@example.org). Η παράμετρος "tag" χρησιμοποιείται για να προσδιορίσει μοναδικά τον ρόλο του αποστολέα στη συνομιλία. - Call-ID:
Call-ID: a84b4c76e66710
- Η κεφαλίδα Call-ID προσδιορίζει μοναδικά μια συνεδρία κλήσης μεταξύ δύο χρηστών. - CSeq:
CSeq: 314159 INVITE
- Η κεφαλίδα CSeq περιέχει έναν αριθμό ακολουθίας και τη μέθοδο που χρησιμοποιείται στο αίτημα. Χρησιμοποιείται για την αντιστοίχιση απαντήσεων σε αιτήματα και την ανίχνευση μηνυμάτων εκτός σειράς. - Contact:
Contact: <sip:jsmith@pc33.example.com>
- Η κεφαλίδα Contact παρέχει μια άμεση διαδρομή προς τον αποστολέα, η οποία μπορεί να χρησιμοποιηθεί για επόμενα αιτήματα και απαντήσεις. - User-Agent:
User-Agent: ExampleSIPClient/1.0
- Η κεφαλίδα User-Agent παρέχει πληροφορίες σχετικά με το λογισμικό ή το υλικό του αποστολέα, συμπεριλαμβανομένου του ονόματος και της έκδοσης του. - Allow:
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
- Η κεφαλίδα Allow απαριθμεί τις μεθόδους SIP που υποστηρίζονται από τον αποστολέα. Αυτό βοηθά τον παραλήπτη να κατανοήσει ποιες μέθοδοι μπορούν να χρησιμοποιηθούν κατά τη διάρκεια της επικοινωνίας. - Content-Type:
Content-Type: application/sdp
- Η κεφαλίδα Content-Type προσδιορίζει τον τύπο μέσου του σώματος του μηνύματος, στην προκειμένη περίπτωση, SDP (Session Description Protocol). - Content-Length:
Content-Length: 142
- Η κεφαλίδα Content-Length υποδεικνύει το μέγεθος του σώματος του μηνύματος σε bytes. - Message Body: Το σώμα του μηνύματος περιέχει την περιγραφή συνεδρίας SDP, η οποία περιλαμβάνει πληροφορίες σχετικά με τους τύπους μέσων, τους κωδικοποιητές και τα πρωτόκολλα μεταφοράς για την προτεινόμενη συνεδρία.
v=0
- Έκδοση πρωτοκόλλου (0 για SDP)o=jsmith 2890844526 2890842807 IN IP4 pc33.example.com
- Προέλευση και αναγνωριστικό συνεδρίαςs=-
- Όνομα συνεδρίας (ένα μόνο παύλα υποδεικνύει ότι δεν υπάρχει όνομα συνεδρίας)c=IN IP4 pc33.example.com
- Πληροφορίες σύνδεσης (τύπος δικτύου, τύπος διεύθυνσης και διεύθυνση)t=0 0
- Πληροφορίες χρονοδιάγραμμα (χρόνοι έναρξης και λήξης, 0 0 σημαίνει ότι η συνεδρία δεν είναι περιορισμένη)m=audio 49170 RTP/AVP 0
- Περιγραφή μέσου (τύπος μέσου, αριθμός θύρας, πρωτόκολλο μεταφοράς και λίστα μορφών). Σε αυτή την περίπτωση, προσδιορίζει μια ροή ήχου χρησιμοποιώντας RTP/AVP (Πρωτόκολλο Μεταφοράς Πραγματικού Χρόνου / Προφίλ Ήχου Βίντεο) και μορφή 0 (PCMU/8000).a=rtpmap:0 PCMU/8000
- Χαρτογράφηση χαρακτηριστικού που συνδέει τη μορφή (0) με τον κωδικοποιητή (PCMU) και τη συχνότητα ρολογιού του (8000 Hz).
Παράδειγμα SIP REGISTER
Η μέθοδος REGISTER χρησιμοποιείται στο Πρωτόκολλο Έναρξης Συνεδρίας (SIP) για να επιτρέψει σε έναν χρήστη (UA), όπως ένα τηλέφωνο VoIP ή ένα softphone, να καταχωρήσει την τοποθεσία του σε έναν διακομιστή καταχώρησης SIP. Αυτή η διαδικασία ενημερώνει τον διακομιστή για το πού να δρομολογήσει τις εισερχόμενες SIP αιτήσεις που προορίζονται για τον καταχωρημένο χρήστη. Ο διακομιστής καταχώρησης είναι συνήθως μέρος ενός διακομιστή μεσολάβησης SIP ή ενός αφιερωμένου διακομιστή καταχώρησης.
Ακολουθεί ένα λεπτομερές παράδειγμα των μηνυμάτων SIP που εμπλέκονται σε μια διαδικασία αυθεντικοποίησης REGISTER:
- Αρχικό REGISTER αίτημα από τον UA προς τον διακομιστή καταχώρησης:
REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0
Αυτό το αρχικό μήνυμα REGISTER αποστέλλεται από τον UA (Alice) στον διακομιστή καταχώρισης. Περιλαμβάνει σημαντικές πληροφορίες όπως τη επιθυμητή διάρκεια καταχώρισης (Expires), το SIP URI του χρήστη (sip:alice@example.com), και τη διεύθυνση επαφής του χρήστη (sip:alice@192.168.1.100:5060).
- 401 Unauthorized απάντηση από τον διακομιστή καταχώρισης:
cssCopy codeSIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="example.com", nonce="abcdefghijk", algorithm=MD5, qop="auth"
Content-Length: 0
Ο διακομιστής μητρώου απαντά με ένα μήνυμα "401 Unauthorized", το οποίο περιλαμβάνει μια κεφαλίδα "WWW-Authenticate". Αυτή η κεφαλίδα περιέχει πληροφορίες που απαιτούνται για να πιστοποιήσει τον εαυτό του το UA, όπως το authentication realm, nonce, και αλγόριθμο.
- Αίτημα REGISTER με διαπιστευτήρια πιστοποίησης:
REGISTER sip:example.com SIP/2.0
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
Max-Forwards: 70
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Authorization: Digest username="alice", realm="example.com", nonce="abcdefghijk", uri="sip:example.com", response="65a8e2285879283831b664bd8b7f14d4", algorithm=MD5, cnonce="lmnopqrst", qop=auth, nc=00000001
Content-Length: 0
Ο UA στέλνει ένα άλλο αίτημα REGISTER, αυτή τη φορά περιλαμβάνοντας την κεφαλίδα "Authorization" με τα απαραίτητα διαπιστευτήρια, όπως το όνομα χρήστη, το realm, το nonce και μια τιμή απόκρισης που υπολογίζεται χρησιμοποιώντας τις παρεχόμενες πληροφορίες και τον κωδικό πρόσβασης του χρήστη.
Αυτός είναι ο τρόπος με τον οποίο υπολογίζεται η απόκριση Authorization:
import hashlib
def calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop):
# 1. Calculate HA1 (concatenation of username, realm, and password)
ha1_input = f"{username}:{realm}:{password}"
ha1 = hashlib.md5(ha1_input.encode()).hexdigest()
# 2. Calculate HA2 (concatenation of method and uri)
ha2_input = f"{method}:{uri}"
ha2 = hashlib.md5(ha2_input.encode()).hexdigest()
# 3. Calculate the final response value (concatenation of h1, stuff and h2)
response_input = f"{ha1}:{nonce}:{nc}:{cnonce}:{qop}:{ha2}"
response = hashlib.md5(response_input.encode()).hexdigest()
return response
# Example usage
username = "alice"
password = "mysecretpassword"
realm = "example.com"
method = "REGISTER"
uri = "sip:example.com"
nonce = "abcdefghijk"
nc = "00000001"
cnonce = "lmnopqrst"
qop = "auth"
response = calculate_sip_md5_response(username, password, realm, method, uri, nonce, nc, cnonce, qop)
print(f"MD5 response value: {response}")
- Επιτυχής εγγραφή από τον διακομιστή μητρώου:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK776asdhds
From: Alice <sip:alice@example.com>;tag=565656
To: Alice <sip:alice@example.com>;tag=7878744
Call-ID: 1234567890@192.168.1.100
CSeq: 2 REGISTER
Contact: <sip:alice@192.168.1.100:5060>;expires=3600
Expires: 3600
Content-Length: 0
Αφού ο διακομιστής μητρώου επαληθεύσει τα παρεχόμενα διαπιστευτήρια, στέλνει μια απάντηση "200 OK" για να υποδείξει ότι η εγγραφή ήταν επιτυχής. Η απάντηση περιλαμβάνει τις καταχωρημένες πληροφορίες επαφής και τον χρόνο λήξης για την εγγραφή. Σε αυτό το σημείο, ο χρήστης (Άλις) είναι επιτυχώς εγγεγραμμένος με τον διακομιστή SIP registrar, και οι εισερχόμενες SIP αιτήσεις για την Άλις μπορούν να δρομολογηθούν στη σωστή διεύθυνση επαφής.
Παράδειγμα Κλήσης
.png)
note
Δεν αναφέρεται, αλλά ο Χρήστης Β πρέπει να έχει στείλει ένα REGISTER μήνυμα στο Proxy 2 πριν μπορέσει να λάβει κλήσεις.
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.