Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
INVITE Initiate a dialog for establishing a call. RFC 3261
ACK Confirm that an entity has received. RFC 3261
BYE Signal termination of a dialog and end a call. RFC 3261
CANCEL Cancel any pending request. RFC 3261
UPDATE Modify the state of a session without changing the state of the dialog. RFC 3311
REFER Ask recipient to issue a request for the purpose of call transfer. RFC 3515
PRACK Provisional acknowledgement. RFC 3262
SUBSCRIBE Initiates a subscription for notification of events from a notifier. RFC 6665
NOTIFY Inform a subscriber of notifications of a new event. RFC 6665
PUBLISH Publish an event to a notification server. RFC 3903
MESSAGE Deliver a text message. Used in instant messaging applications. RFC 3428
INFO Send mid-session information that does not modify the session state. RFC 6086
OPTIONS Query the capabilities of an endpoint RFC 3261
```
## Response Codes
**1xx—Проміжні відповіді**
```
100 Trying
180 Ringing
181 Call is Being Forwarded
182 Queued
183 Session Progress
199 Early Dialog Terminated
```
**2xx—Успішні відповіді**
```
200 OK
202 Accepted
204 No Notification
```
**3xx—Відповіді на перенаправлення**
```
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
305 Use Proxy
380 Alternative Service
```
**4xx—Відповіді про помилки клієнта**
```
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Conditional Request Failed
413 Request Entity Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Unsupported URI Scheme
417 Unknown Resource-Priority
420 Bad Extension
421 Extension Required
422 Session Interval Too Small
423 Interval Too Brief
424 Bad Location Information
425 Bad Alert Message
428 Use Identity Header
429 Provide Referrer Identity
430 Flow Failed
433 Anonymity Disallowed
436 Bad Identity-Info
437 Unsupported Certificate
438 Invalid Identity Header
439 First Hop Lacks Outbound Support
440 Max-Breadth Exceeded
469 Bad Info Package
470 Consent Needed
480 Temporarily Unavailable
481 Call/Transaction Does Not Exist
482 Loop Detected
483 Too Many Hops
484 Address Incomplete
485 Ambiguous
486 Busy Here
487 Request Terminated
488 Not Acceptable Here
489 Bad Event
491 Request Pending
493 Undecipherable
494 Security Agreement Required
```
**5xx—Відповіді про збій сервера**
```
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Server Time-out
505 Version Not Supported
513 Message Too Large
555 Push Notification Service Not Supported
580 Precondition Failure
```
**6xx—Глобальні відповіді на помилки**
```
600 Busy Everywhere
603 Decline
604 Does Not Exist Anywhere
606 Not Acceptable
607 Unwanted
608 Rejected
```
## VoIP Enumeration
### Telephone Numbers
Одним з перших кроків, які може зробити Red Team, є пошук доступних телефонних номерів для зв'язку з компанією, використовуючи інструменти OSINT, пошук в Google або сканування веб-сторінок.
Коли у вас є телефонні номери, ви можете використовувати онлайн-сервіси для ідентифікації оператора:
Знаючи, чи надає оператор послуги VoIP, ви можете визначити, чи використовує компанія VoIP... Більше того, можливо, що компанія не наймала послуги VoIP, але використовує PSTN карти для підключення свого VoIP PBX до традиційної телефонної мережі.
* **`nmap`** здатний сканувати UDP-сервіси, але через велику кількість UDP-сервісів, які скануються, це дуже повільно і може бути не дуже точним для такого роду сервісів.
* **`svmap`** з SIPVicious (`sudo apt install sipvicious`): Знайде SIP-сервіси в зазначеній мережі.
*`svmap`**легко заблокувати**, оскільки він використовує User-Agent `friendly-scanner`, але ви можете змінити код з `/usr/share/sipvicious/sipvicious`і змінити його.
* **`SIPPTS scan`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS сканер - це дуже швидкий сканер для SIP сервісів через UDP, TCP або TLS. Він використовує багатопоточність і може сканувати великі діапазони мереж. Дозволяє легко вказати діапазон портів, сканувати як TCP, так і UDP, використовувати інший метод (за замовчуванням буде використовувати OPTIONS) та вказувати інший User-Agent (і не тільки).
Дуже важливо аналізувати заголовки, які сервер відправляє нам у відповідь, залежно від типу повідомлення та заголовків, які ми відправляємо. З`SIPPTS send` з [**sippts**](https://github.com/Pepelux/sippts) ми можемо надсилати персоналізовані повідомлення, маніпулюючи всіма заголовками, та аналізувати відповідь.
Також можливо отримати дані, якщо сервер використовує веб-сокети. З`SIPPTS wssend` з [**sippts**](https://github.com/Pepelux/sippts) ми можемо надсилати персоналізовані WS повідомлення.
```bash
sippts wssend -i 10.10.0.10 -r 443 -path /ws
```
### Extension Enumeration
Розширення в системі PBX (Приватна Автоматична Обмінна Станція) відносяться до **унікальних внутрішніх ідентифікаторів, призначених окремим** телефонним лініям, пристроям або користувачам в організації чи бізнесі. Розширення дозволяють **ефективно маршрутизувати дзвінки в межах організації**, без необхідності в окремих зовнішніх телефонних номерах для кожного користувача або пристрою.
* **`svwar`** з SIPVicious (`sudo apt install sipvicious`): `svwar` є безкоштовним сканером ліній розширення SIP PBX. За своєю суттю він працює подібно до традиційних вордрайверів, **вгадуючи діапазон розширень або заданий список розширень**.
* **`SIPPTS exten`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS exten ідентифікує розширення на SIP сервері. Sipexten може перевіряти великі мережі та діапазони портів.
* **`enumiax` (`apt install enumiax`): enumIAX** є **перебірником імен користувачів** протоколу Inter Asterisk Exchange. enumIAX може працювати в двох різних режимах: послідовне вгадування імен користувачів або атака за словником.
Виявивши **PBX** та деякі **розширення/імена користувачів**, Червона команда може спробувати **автентифікуватися через метод `REGISTER`** до розширення, використовуючи словник загальних паролів для брутфорсу автентифікації.
Зверніть увагу, що **ім'я користувача** може бути таким же, як і розширення, але ця практика може варіюватися в залежності від системи PBX, її конфігурації та уподобань організації...
* **`SIPPTS rcrack`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack - це віддалений зломувач паролів для SIP-сервісів. Rcrack може перевіряти паролі для кількох користувачів на різних IP-адресах і діапазонах портів.
Якщо ви знайдете VoIP обладнання всередині **Open Wifi network**, ви зможете **перехопити всю інформацію**. Більше того, якщо ви знаходитесь у більш закритій мережі (підключеній через Ethernet або захищений Wifi), ви зможете виконати **MitM атаки, такі як** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) між **PBX та шлюзом**, щоб перехопити інформацію.
Серед мережевої інформації ви можете знайти **веб-дані** для управління обладнанням, **розширення** користувачів, **ім'я користувача**, **IP** адреси, навіть **хешовані паролі** та **RTP пакети**, які ви можете відтворити, щоб **почути розмову**, і більше.
Щоб отримати цю інформацію, ви можете використовувати інструменти, такі як Wireshark, tcpdump... але **спеціально створений інструмент для перехоплення VoIP розмов - це** [**ucsniff**](https://github.com/Seabreg/ucsniff).
[Перегляньте цей приклад, щоб краще зрозуміти **SIP REGISTER комунікацію**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example), щоб дізнатися, як **надсилаються облікові дані**.
* **`sipdump`** &**`sipcrack`,** частина **sipcrack** (`apt-get install sipcrack`): Ці інструменти можуть **екстрагувати** з **pcap****digest аутентифікації** в рамках SIP протоколу та **зламувати** їх.
* **`SIPPTS dcrack`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack - це інструмент для злому автентифікацій digest, отриманих за допомогою SIPPTS dump.
```bash
sippts dcrack -f data.txt -w wordlist/rockyou.txt
```
* **`SIPPTS tshark`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tshark витягує дані протоколу SIP з файлу PCAP.
**Не тільки SIP облікові дані** можна знайти в мережевому трафіку, також можливо знайти DTMF коди, які використовуються, наприклад, для доступу до **голосової пошти**.\
Ці коди можна відправляти в **INFO SIP повідомленнях**, в **аудіо**або всередині **RTP пакетів**. Якщо коди знаходяться всередині RTP пакетів, ви можете вирізати цю частину розмови і використовувати інструмент multimo для їх витягнення:
Якщо вказана IP-адреса, хост **не потрібно буде надсилати REGISTER** запити час від часу (в пакеті REGISTER надсилається час життя, зазвичай 30 хвилин, що означає, що в іншому випадку телефон повинен буде РЕГІСТРУВАТИСЯ кожні 30 хвилин). Однак, йому потрібно мати відкриті порти, що дозволяють з'єднання з VoIP сервером для прийому дзвінків.
Коли використовується **`type=friend`**, **значення** змінної **host****не буде використано**, тому якщо адміністратор **неправильно налаштує SIP-транк**, **будь-хто зможе підключитися до нього**.
У Asterisk **контекст** - це іменований контейнер або секція в плані набору, яка **групує пов'язані розширення, дії та правила**. План набору є основним компонентом системи Asterisk, оскільки він визначає **як обробляються та маршрутизуються вхідні та вихідні дзвінки**. Контексти використовуються для організації плану набору, управління контролем доступу та забезпечення розділення між різними частинами системи.
Кожен контекст визначається в конфігураційному файлі, зазвичай у файлі **`extensions.conf`**. Контексти позначаються квадратними дужками, з іменем контексту, що міститься всередині них. Наприклад:
Всередині контексту ви визначаєте розширення (шаблони набраних номерів) та асоціюєте їх з серією дій або додатків. Ці дії визначають, як обробляється дзвінок. Наприклад:
Цей приклад демонструє простий контекст під назвою "my\_context" з розширенням "100". Коли хтось набирає 100, дзвінок буде прийнято, буде програно вітальне повідомлення, а потім дзвінок буде завершено.
Більше того, за замовчуванням файл **`sip.conf`** містить **`allowguest=true`**, тоді **будь-який** атакуючий без **автентифікації** зможе дзвонити на будь-який інший номер.
***`SIPPTS invite`** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite перевіряє, чи **PBX сервер дозволяє нам здійснювати дзвінки без автентифікації**. Якщо SIP сервер має неправильну конфігурацію, він дозволить нам здійснювати дзвінки на зовнішні номери. Це також може дозволити нам переадресувати дзвінок на другий зовнішній номер.
Наприклад, якщо ваш сервер Asterisk має погану конфігурацію контексту, ви можете приймати запит INVITE без авторизації. У цьому випадку атакуючий може здійснювати дзвінки, не знаючи жодного користувача/пароля.
IVRS означає **Систему інтерактивної голосової відповіді**, технологію телефонії, яка дозволяє користувачам взаємодіяти з комп'ютеризованою системою через голосові або тональні введення. IVRS використовується для створення **автоматизованих систем обробки дзвінків**, які пропонують ряд функцій, таких як надання інформації, маршрутизація дзвінків та захоплення введення користувача.
1.**Голосових підказок**: Попередньо записані аудіоповідомлення, які направляють користувачів через варіанти меню IVR та інструкції.
2.**DTMF** (Dual-Tone Multi-Frequency) сигналізація: Тональні введення, що генеруються натисканням клавіш на телефоні, які використовуються для навігації через меню IVR та надання введення.
3.**Маршрутизація дзвінків**: Направлення дзвінків до відповідного призначення, такого як конкретні відділи, агенти або розширення на основі введення користувача.
4.**Захоплення введення користувача**: Збір інформації від абонентів, такої як номери рахунків, ID справ або будь-які інші відповідні дані.
5.**Інтеграція з зовнішніми системами**: Підключення системи IVR до баз даних або інших програмних систем для доступу або оновлення інформації, виконання дій або ініціювання подій.
У системі VoIP Asterisk ви можете створити IVR, використовуючи план набору (**`extensions.conf`** файл) та різні програми, такі як `Background()`, `Playback()`, `Read()` та інші. Ці програми допомагають вам відтворювати голосові підказки, захоплювати введення користувача та контролювати потік дзвінків.
Попередній приклад, де користувача просять **натиснути 1, щоб зателефонувати** в відділ, **2, щоб зателефонувати** в інший, або**повний номер**, якщо він його знає.\
Вразливість полягає в тому, що вказана **довжина номера не перевіряється, тому користувач може ввести 5-секундний тайм-аут повного номера, і він буде набраний.**
Однак, якщо **`${EXTEN}`** дозволяє вводити **більше ніж цифри** (як у старіших версіях Asterisk), зловмисник може ввести **`101&SIP123123123`**, щоб зателефонувати на номер 123123123. І це буде результат:
Тому дзвінок на розширення **`101`** та **`123123123`** буде надіслано, і лише перший, хто отримав дзвінок, буде встановлено... але якщо зловмисник використовує **розширення, яке обходить будь-яке зіставлення**, яке виконується, але не існує, він може **впровадити дзвінок лише на бажаний номер**.
Уразливість SIP Digest Leak впливає на велику кількість SIP телефонів, включаючи як апаратні, так і програмні IP телефони, а також телефонні адаптери (VoIP до аналогових). Уразливість дозволяє **витоку відповіді на аутентифікацію Digest**, яка обчислюється з пароля. **Офлайн-атака на пароль стає можливою**і може відновити більшість паролів на основі відповіді на виклик.
1. IP телефон (жертва) слухає на будь-якому порту (наприклад: 5060), приймаючи телефонні дзвінки
2. Зловмисник надсилає INVITE на IP телефон
3. Телефон жертви починає дзвонити, і хтось піднімає слухавку і кладе трубку (оскільки ніхто не відповідає на телефон на іншому кінці)
4. Коли телефон кладе трубку, **телефон жертви надсилає BYE зловмиснику**
5.**Зловмисник видає відповідь 407**, яка **питає про аутентифікацію**і видає виклик на аутентифікацію
6.**Телефон жертви надає відповідь на виклик аутентифікації** в другому BYE
7.**Зловмисник може тоді здійснити атаку методом грубої сили** на відповідь на виклик на своєму локальному комп'ютері (або розподіленій мережі тощо) і вгадати пароль
* **SIPPTS leak** з [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS leak експлуатує уразливість SIP Digest Leak, яка впливає на велику кількість SIP телефонів. Вихідні дані можна зберегти у форматі SipCrack для брутфорсу за допомогою SIPPTS dcrack або інструменту SipCrack.
Click2Call дозволяє **веб-користувачу** (який, наприклад, може бути зацікавлений у продукті) **ввести** свій **номер телефону**, щоб отримати дзвінок. Потім буде здійснено дзвінок на комерційний номер, і коли він **підніме слухавку**, користувач буде **зателефонований і з'єднаний з агентом**.
В Asterisk можливо використовувати команду **`ChanSpy`**, вказуючи **розширення(я) для моніторингу** (або всі з них), щоб чути розмови, які відбуваються. Цю команду потрібно призначити розширенню.
Наприклад, **`exten => 333,1,ChanSpy('all',qb)`** вказує, що якщо ви **зателефонуєте** на **розширення 333**, воно буде **моніторити****`всі`** розширення, **почне слухати** щоразу, коли починається нова розмова (**`b`**) в тихому режимі (**`q`**), оскільки ми не хочемо взаємодіяти з нею. Ви можете переходити від однієї розмови до іншої, натискаючи **`*`**, або набираючи номер розширення.
**RTCPBleed** є серйозною проблемою безпеки, що впливає на VoIP-сервери на базі Asterisk (опубліковано в 2017 році). Уразливість дозволяє **RTP (Real Time Protocol) трафіку**, який несе VoIP-розмови, **перехоплюватися та перенаправлятися будь-ким в Інтернеті**. Це відбувається тому, що RTP-трафік обходить аутентифікацію при навігації через NAT (Network Address Translation) брандмауери.
RTP-проксі намагаються вирішити **обмеження NAT**, що впливають на RTC-системи, проксуючи RTP-потоки між двома або більше сторонами. Коли NAT активний, програмне забезпечення RTP-проксі часто не може покладатися на інформацію про IP та порт RTP, отриману через сигналізацію (наприклад, SIP). Тому ряд RTP-проксі реалізували механізм, де такий **IP та порт автоматично вивчаються**. Це часто робиться шляхом перевірки вхідного RTP-трафіку та позначення IP та порту джерела для будь-якого вхідного RTP-трафіку як того, на який слід відповідати. Цей механізм, який може називатися "режим навчання", **не використовує жодного виду аутентифікації**. Тому **зловмисники** можуть **надсилати RTP-трафік до RTP-проксі** та отримувати проксований RTP-трафік, призначений для абонента або абонентки поточного RTP-потоку. Ми називаємо цю уразливість RTP Bleed, оскільки вона дозволяє зловмисникам отримувати RTP медіа-потоки, призначені для законних користувачів.
Ще одна цікава поведінка RTP-проксі та стеків RTP полягає в тому, що іноді, **навіть якщо не вразливі до RTP Bleed**, вони **приймають, пересилають та/або обробляють RTP-пакети з будь-якого джерела**. Тому зловмисники можуть надсилати RTP-пакети, які можуть дозволити їм інжектувати своє медіа замість законного. Ми називаємо цю атаку RTP injection, оскільки вона дозволяє інжекцію нелегітимних RTP-пакетів у існуючі RTP-потоки. Ця уразливість може бути виявлена як у RTP-проксі, так і в кінцевих точках.
Asterisk та FreePBX традиційно використовували **налаштування `NAT=yes`**, яке дозволяє RTP-трафіку обходити аутентифікацію, що потенційно призводить до відсутності звуку або одностороннього звуку під час дзвінків.
В Asterisk ви якимось чином можете **додати правила розширення та перезавантажити їх** (наприклад, зламавши вразливий веб-менеджер сервер), можливо отримати RCE, використовуючи команду **`System`**.
Якщо сервер **не дозволяє використання певних символів**у команді **`System`** (як у Elastix), перевірте, чи дозволяє веб-сервер **якось створювати файли всередині системи** (як у Elastix або trixbox), і використайте це, щоб **створити скрипт з бекдором**, а потім використайте **`System`** для **виконання** цього **скрипту**.
* **`Elastix.conf`** -> Містить кілька паролів у відкритому тексті, таких як пароль mysql root, пароль IMAPd, пароль веб-адміністратора.
* **Кілька папок** належатимуть скомпрометованому користувачу asterisk (якщо не працює під root). Цей користувач може читати попередні файли та також контролює конфігурацію, тому він може змусити Asterisk завантажувати інші скомпрометовані бінарні файли під час виконання.
Можливо вставити **`.wav`** у розмови, використовуючи інструменти, такі як **`rtpinsertsound`** (`sudo apt install rtpinsertsound`) та **`rtpmixsound`** (`sudo apt install rtpmixsound`).
Або ви можете використовувати скрипти з [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) для **сканування розмов** (**`rtpscan.pl`**), відправки `.wav`у розмову (**`rtpsend.pl`**) та **вставки шуму**у розмову (**`rtpflood.pl`**).
Існує кілька способів спробувати досягти DoS на VoIP серверах.
* **`SIPPTS flood`** з [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS flood надсилає необмежену кількість повідомлень до цілі.
*`sippts flood -i 10.10.0.10 -m invite -v`
* **`SIPPTS ping`** з [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ping робить SIP ping, щоб перевірити час відповіді сервера.
*`sippts ping -i 10.10.0.10`
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS IAX протокол, що використовується Asterisk.
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): Інструмент для виконання SIP/SDP INVITE повідомлень на UDP/IP.
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): Надсилає кілька добре сформованих RTP пакетів. Потрібно знати RTP порти, які використовуються (спочатку прослухайте).
* [**SIPp**](https://github.com/SIPp/sipp): Дозволяє аналізувати та генерувати SIP трафік, тому його також можна використовувати для DoS.
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP швейцарський ніж. Також може бути використаний для виконання SIP атак.
Найпростіший спосіб встановити програмне забезпечення, таке як Asterisk, - це завантажити **дистрибутив ОС**, який вже має його встановленим, наприклад: **FreePBX, Elastix, Trixbox**... Проблема з цими дистрибутивами полягає в тому, що, як тільки вони запрацюють, системні адміністратори можуть **більше не оновлювати їх**, і**вразливості** будуть виявлені з часом.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.