Анализ sip трафика в asterisk с помощью sngrep

Самый популярный инструмент Elastix:

Нужна ли для вашего общения АТС, чат или видео? Нужны инструменты для видеоконференций, презентаций и совместной работы в режиме реального времени? Хорошо, нет проблем, в этом случае вы можете использовать  Elastix. Нет необходимости в каких-либо дополнительных сборах или дополнительных загрузках, и вы можете легко установить его на Windows, Linux или Raspberry Pi в качестве локального решения.

Кроме того, это поможет вам работать удаленно, делиться экранами, не ограничивать время для бесконечных пользователей и так далее. Кроме того, он дает вам возможность превращать посещения веб-сайтов в потенциальных клиентов и продажи, ведущие функции колл-центра и повествование и многое другое.

Многообещающие функции:

  1. Онлайн-конференции без приложений
  2. Простая установка и управление
  3. Живой чат и звонки с абонентами сайта
  4. Примечания к ответу на Fb-странице
  5. Предлагает первоклассное обслуживание клиентов

И самое главное, он  доступен 24/7  с вашего удаленного рабочего стола или мобильного гаджета.

Лучший друг Камайлио:

Если вы хотите управлять более чем тысячами настроек звонков в секунду, в этом случае  Kamailio  станет вашим лучшим другом. Он опубликован под лицензией GPLv2+ и используется для создания обширных платформ для передачи голоса по IP (VoIP) и связи в реальном времени. Например, вы можете использовать этот инструмент для мгновенного чата, WebRTC и множества различных приложений.

Кроме того, он может лучше всего подходить для подъема  по шлюзам SIP-to-PSTN , медиасерверам или системам АТС. С другой стороны, вы можете использовать его с ограниченными ресурсами и серверами операторского класса. А чтобы обеспечить высокую производительность, он написан для систем Unix/Linux, включая оптимизации для конкретных архитектур.

Мощные функции:

  1. Асинхронный SCTP, UDP и TCP
  2. Безопасные услуги через TLS для (голос, видео, текст) VoIP
  3. WebRTC (IPv4 и IPv6) с поддержкой WebSocket
  4. Отказоустойчивость маршрутизации, маршрутизация с наименьшими затратами и балансировка нагрузки
  5. Многие серверные системы поддерживают

Одним словом, его главная цель — стать комбинированной средой обитания для своих пользователей, чтобы они могли успешно работать на защищенных и масштабируемых серверах протокола инициации сеанса.

SIP Server Integration

Homer and homer encapsulation protocl (HEP) integration with sip server brings the capabilities to SIP/SDP payload retention with precise timestamping better monitor and detect anomilies in call tarffic and events correlation of session ,logs , reports also the power to bring charts and statictics for SIP and RTP/RTCP packets etc. We read about sipcapture and sip trace modules in project sipcapture_siptrace_hep.

Both Kamailio and Opensips HEP Integration are structurally simmilar. In kamailio SIPCAPTURE module enables support for –

● Monitoring/mirroring port● IPIP encapsulation (ETHHDR+IPHDR+IPHDR+UDPHDR)● HEP encapsulation protocol mode (HEP v1, v2, v3)

Figure showing Opensips integartion with external capturing agent via proxy agent ( which can be HOMER)

To achieve that, load and configure the SipCapture module in the routing script.

Snippets fro Kamailio Homer docker installation as a collector

Outsnippets from screen while the installation takes place

Capture tools

Store sip_trace in database

modparam("siptrace", "trace_to_database", 1)
modparam("siptrace", "db_url", DBURL)
modparam("siptrace", "table", "sip_trace")

where the sip_trace tabel description is

+-------------+------------------+------+-----+---------------------+----------------+
| Field       | Type             | Null | Key | Default             | Extra          |
+-------------+------------------+------+-----+---------------------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| time_stamp  | datetime         | NO   | MUL | 2000-01-01 00:00:01 |                |
| time_us     | int(10) unsigned | NO   |     | 0                   |                |
| callid      | varchar(255)     | NO   | MUL |                     |                |
| traced_user | varchar(128)     | NO   | MUL |                     |                |
| msg         | mediumtext       | NO   |     | NULL                |                |
| method      | varchar(50)      | NO   |     |                     |                |
| status      | varchar(128)     | NO   |     |                     |                |
| fromip      | varchar(50)      | NO   | MUL |                     |                |
| toip        | varchar(50)      | NO   |     |                     |                |
| fromtag     | varchar(64)      | NO   |     |                     |                |
| totag       | varchar(64)      | NO   |     |                     |                |
| direction   | varchar(4)       | NO   |     |                     |                |
+-------------+------------------+------+-----+---------------------+----------------+

sample databse storage for sip traces

select * from sip_trace;

| id | time_stamp          | time_us | callid  | traced_user | msg         | method | status | fromip                   | toip                     | fromtag  | totag    | direction |
+----+---------------------+---------+---------------------------------------------+-------------+-----------------------------------
|  1 | 2019-07-18 09:00:18 |  417484 | MTlhY2VmNDdjN2QxZGM5ZDFhMWRhZThhZDU4YjE0MGM |             | INVITE sip:altanai@sip_addr;transport=udp SIP/2.0
Via: SIP/2.0/UDP local_addr:25584;branch=z9hG4bK-d8754z-1f5a337092a84122-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:derek@call_addr:7086;transport=udp>
To: <sip:altanai@sip_addr>
From: <sip:derek@sip_addr>;tag=de523549
Call-ID: MTlhY2VmNDdjN2QxZGM5ZDFhMWRhZThhZDU4YjE0MGM
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Supported: replaces
User-Agent: Bria 3 release 3.5.5 stamp 71243
Content-Length: 214

v=0
o=- 1563440415743829 1 IN IP4 local_addr
s=Bria 3 release 3.5.5 stamp 71243
c=IN IP4 local_addr
t=0 0
m=audio 59814 RTP/AVP 9 8 0 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv                                                                                                                                                                                      | INVITE |        | udp:caller_addr:27982 | udp:sip_pvt_addr:5060   | de523549 |          | in        |

|  2 | 2019-07-18 09:00:18 |  421675 | MTlhY2VmNDdjN2QxZGM5ZDFhMWRhZThhZDU4YjE0MGM |             | SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP local_addr:25584;branch=z9hG4bK-d8754z-1f5a337092a84122-1---d8754z-;rport=27982;received=caller_addr
To: <sip:altanai@sip_addr>
From: <sip:derek@sip_addr>;tag=de523549
Call-ID: MTlhY2VmNDdjN2QxZGM5ZDFhMWRhZThhZDU4YjE0MGM
CSeq: 1 INVITE
Server: kamailio (5.2.3 (x86_64/linux))
Content-Length: 0                                                                                                                                                                                                                                                                                                                                                                                                                                                           | ACK    |        | udp:caller_addr:27982 | udp:local_addr:5060   | de523549 | b2d8ad3f | in       |
...
+----+---------------------+---------+---------------------------------------------+-------------+-----------------------------------

Heplify

Multi-Protocol Go HEP Capture Agent made   https://github.com/sipcapture/heplify

wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz

move package to /usr/local/go

mv go 

Either add go bin to ~/.profile

export PATH=$PATH:/usr/local/go/bin

and apply

source ~/.profile

or set GO ROOT , and GOPATH

export GOROOT=/usr/local/go
export GOPATH=$HOME/heplify
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

installation of dependencies

go get

clone heplify repo and make

make 

CAPTAGENT

New OSS Capture-Agent framework with capture suitable for SIP, XMPP and more. With internal method filtering , encryption and authetication this does look very promising howevr since I have perosnally not tried it yet , I will leave this space TBD for future

  • tbd

Плюсы и минусы использования sngrep.

Плюсы:
+ утилита проста в освоении.
+ утилита имеет наглядное представление хождения трафика.
+ хорошо подходит для срочного анализа дампов и скорой отладки.
+ подходит для обучения молодым VoIP-инженерам.
+ хороший базовый функционал.
+ возможность рассмотрения пакетов в связке.
+ гибкая настройка интерфейса.

Минусы:
— не подходит для глубокого анализа трафика.
— нет возможности прослушать дамп.
— не подходит для анализа большого дампа.

В рамках компенсации минусов данной утилиты был разработан мощный инструмент для анализа VoIP-трафика – Wireshark, узнать о котором Вы можете из статьи на нашем сайте.

SIP-серверы для Linux

Сип-серверов для операционной системы Linux очень много. Каждый из них обладает как своими плюсами, так и некоторыми минусами.

Ниже представлены 3 сервера, которые являются лучшими в классе по мнению многих экспертов.

Ekiga

Разработкой данного софта занимался Дамьен Сандрас. Эта программа по умолчанию встроена в Ubuntu и представляет собой утилиту SIP/NetMeeting-клиента. Имеются поддержка SIP-телефонии и интегрированные адресные книги. Есть возможность работы внутри локальных сетей.

Asterisk

Этот СИП-сервер является одним из самых востребованных для организации телефонии в сфере бизнеса. Разработали его ещё в 1999 году для замены дорогих мини-АТС. Софт позволяет проводить видеосеансы, взаимодействует со стандартной телефонией и умеет шифровать звонки, не допуская прослушивания. Единственный его минус – сложность функционала.

3CX Phone System

Данный сервер очень часто применяется при телефонизации компаний с большим числом работников. Он может быть использован в качестве call-центра или софта для конференцсвязи. Кроме того он встроен в CRM. Главный недостаток сервера заключается в его исходном коде закрытого типа, не позволяющего добавлять собственные разработки.

грубая акула

грубая акула — это эффективный инструмент сетевого криминалистического анализа (NFAT), который можно использовать для обработки и проверки сетевого трафика, такого как файлы PCAP, и захвата непосредственно с сетевых интерфейсов.

Он включает в себя реконструкцию сеансов TCP, построение карт сети, извлечение хэшей сильно зашифрованных паролей, преобразование хэшей в формат Hashcat для выполнения атаки Brute Force в автономном режиме.

Основная цель этого проекта — помочь сетевым администраторам и исследователям безопасности, ответственным за анализ сетевого трафика и выявление слабых мест.

Доступны две версии BruteShark: приложение на основе графического пользовательского интерфейса (GUI) для Windows и инструмент CLI для Linux и Windows. Некоторые из проектов, включенных в это решение, можно даже использовать независимо для анализа сетевого трафика на машинах Windows и Linux.

BruteShark также может выполнять различные операции, такие как извлечение DNS-запросов, вырезание файлов, извлечение вызовов VoIP (SIP, RTP), построение схемы сети для пользователей и сетевых узлов, извлечение хэшей аутентификации с использованием Hashcat (NTLM, HTTP-Digest, CRAM-MD5, Kerberos, д.), а также получение и кодирование паролей и имен пользователей.

Все проекты реализованы через .Net Standard и .Net Core для кроссплатформенной и современной поддержки. Это решение предлагает трехуровневую архитектуру и включает один или несколько проектов, включая PL, BLL и DAL на каждом уровне.

Через DAL (уровень доступа к данным) проект помогает читать необработанные файлы PCAP с использованием таких драйверов, как WinPcap, libpcap и библиотек-оболочек, таких как SharpPcap. Точно так же BLL (уровень бизнес-логики) отвечает за анализ сетевой информации (TCP, пакеты и т. д.), а PL использует сквозной проект и относится как к уровням BLL, так и к уровням DAL.

Тпрокси

Тпрокси — это простой инструмент командной строки с открытым исходным кодом для проксирования TCP-соединений по сети. Tproxy написан на языке программирования Go и представляет собой инструмент командной строки Go, упакованный в виде бинарного файла Go, поэтому он доступен на всех современных платформах Linux и macOS.

На изображении ниже показана командная строка для мониторинга соединений Mysql:

Его основной вариант использования — проксирование HTTP-соединений и проверка содержимого HTTP-запроса и ответов. Его также можно использовать для проксирования других протоколов, таких как SOCKS или TCP. Его можно использовать для проксирования TCP-соединений между двумя хостами или для анализа трафика в реальном соединении. Он полезен для отладки и тестирования приложений, использующих TCP в качестве транспортного протокола, а также для создания прокси-сервисов TCP.

Он был написан с целью предоставления простого в использовании интерфейса для утилиты командной строки tcpdump, позволяющей пользователям проксировать TCP-соединения и выполнять другие расширенные сетевые анализы без необходимости понимать базовый протокол TCP.

Ниже в командной строке отображаются соединения gRPC:

Он действует как TCP-прокси, позволяя вам подключаться к удаленным службам и приложениям, как если бы вы находились на локальном компьютере. Он позволяет создавать пользовательские службы TCP на удаленных хостах, аналогично обратному прокси-серверу TCP, который обеспечивает различные улучшения безопасности, устранения неполадок и производительности при работе с приложениями, использующими TCP.

Ниже приведены еще несколько вариантов использования Tproxy.

  • Это полезно для отладки и оптимизации TCP-соединений.
  • Это также полезно для понимания того, как работают другие прокси-программы, такие как Burp Suite и ZAP.
  • Его можно использовать для проксирования TCP-соединений между двумя хостами или между хостом и удаленной службой TCP, такой как база данных или веб-служба.
  • Мониторинг соединений MySQL и соединений gRPC, а также проверка надежности соединения с точки зрения скорости повторной передачи и RTT.

Большинство пользователей обнаружат, что Tproxy упрощает их рабочий процесс и позволяет им выполнять сложный сетевой анализ и анализировать веб-приложения без необходимости изменять приложение или саму сеть. Инструмент можно скачать с Гитхаб.

Homer Integration with influx DB

time series Reltiem DB install

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.7.7_amd64.deb
sudo dpkg -i influxdb_1.7.7_amd64.deb

start

 >influxd
 8888888           .d888 888                   8888888b.  888888b.
   888            d88P"  888                   888  "Y88b 888  "88b
   888            888    888                   888    888 888  .88P
   888   88888b.  888888 888 888  888 888  888 888    888 8888888K.
   888   888 "88b 888    888 888  888  Y8bd8P' 888    888 888  "Y88b
   888   888  888 888    888 888  888   X88K   888    888 888    888
   888   888  888 888    888 Y88b 888 .d8""8b. 888  .d88P 888   d88P
 8888888 888  888 888    888  "Y88888 888  888 8888888P"  8888888P"

2019-07-19T07:03:04.603494Z	info	InfluxDB starting	{"log_id": "0GjGVvbW000", "version": "1.7.7", "branch": "1.7", "commit": "f8fdf652f348fc9980997fe1c972e2b79ddd13b0"}
2019-07-19T07:03:04.603756Z	info	Go runtime	{"log_id": "0GjGVvbW000", "version": "go1.11", "maxprocs": 1}
2019-07-19T07:03:04.707567Z	info	Using data dir	{"log_id": "0GjGVvbW000", "service": "store", "path": "/var/lib/influxdb/data"}

For Kamailio integration follow github instructions on https://github.com/altanai/kamailioexamples

References :

Call List Window in sngrep

The first window that sngrep shows is Call List window and it displays the different SIP Call-Ids found in messages. The displayed columns depend on your terminal width and your custom configuration. Columns and their descriptions are given in the table below.

Column Description
Idx Line number column.
Method Type of SIP message column.
SIP From SIP message From column.
SIP To SIP message To column.
Msgs Numerical amount of messages column.
Source Source IP and port number column.
Destination Destination IP and port number column.
Call State Call identifier column.

The Call List window is shown below.

Call List Window in sngrep

➤Key Bindings:

Key Function Description
ESC  Quit Escape and quit sngrep.
Enter Show Show more information about the highlighted line item.
Space Select After pressing the spacebar, the line is selected. With this you can select multiple lines and can be used with the F2 save option.
F1  Help Gives a help menu.
F2 Save Option to save the current capture session dialogs to a .pcap or .txt to a specific path and file name.
F3 Search Gives the option to search in a more specific and granular way.
F4 Extended Gives an extended view.
F5 Clear Clear the screen.
F7 Filter Like search but with more options to filter the end result.
F8 Settings Adjust sngrep settings interface, capture options, call flow options, and EEP/HEP Homer options.
F9 Clear with Filter Clear the screen with filter.
F10 Columns Adjust what columns are displayed on the open sngrep window.

Filter Option in Call List Window

In Call List window, you can filter the calls by pressing the F7 key.

The filtering options window is given below.

Filter Option in Call List Window

Call Flow Window in sngrep

The selected message payload will be displayed in the right side of the window.

Call Flow Window in sngrep

You can move between messages using arrow keys and select them using Spacebar. Selecting multiple messages will display the Message Diff Window.

➤Key Bindings:

Key Function
Arrows  Move through messages.
Enter Display current message raw (so you can copy payload).
F2 / d Toggle SDP info instead of Method/ResponseCode in arrows.
F3 t Toggle message preview side panel.
F4 x Show current dialog and its extended one.
F5 s Show one column per address.
F6 R Show raw messages of dialogs.
F7 c Change flow color mode.
F9 l Turn on/off address resolution if enabled.
9 Increase/Decrease preview side panel.
T Restore preview side panel size.
D Only show messages that has SDP content.

➤ There are several color modes to display the arrows:

Mode Description
By Method/Response Red for Method, Green for Responses.
By Call-Id Display current message raw. Each Call-ID one color, useful when displaying multiple calls flows.
By CSeq Each CSeq one color.

➤There are a few common messages you will see in most calls, some with simple text names:

INVITEINVITE is used to set up a new media session between endpoints. INVITE will also typically contain session information in the form of SDP, which elaborates how to send media to/from your endpoint.

ACKYour platform should acknowledge the 200 OK. This is important, if the 200 OK is not ACK’d the call will be torn down automatically after a short time.

BYEOn receipt of this BYE the call is hung up. BYE is a new request (like an INVITE) and therefore the other party will respond with a 200 OK just as they would to an INVITE.

➤And some numeric codes, followed by a human-readable description:

100 TryingThis is simply an acknowledgement that indicates the request was received.

200 OK Once your call has been answered, this is the final stage of negotiating the call setup. This looks similar to INVITE but the SDP provides information about the remote party. At this point the call is already established, and two-way audio should take place.

➤Some of the most common (and some uncommon) codes are given below:

400 Bad Request
401 Unauthorised
402 Payment Required
403 Forbidden
404 Not Found
406 Not Acceptable
407 Proxy Auth Required
408 Timeout
410 Gone
480 Temporarily Unavailable
481 Call/Transaction Does Not Exist
484 Address Incomplete
486 Busy Here
488 Not Acceptable Here
500 Server Internal Error
502 Bad Gateway
503 Service Unavailable
600 Busy Everywhere
603 Decline

Tegsoft makes no representations or warranties, either express or implied, by or with respect to anything in this document, and shall not be liable for any implied warranties of merchantability or fitness for a particular purpose or for any indirect, special or consequential damages.

Copyright 2021, Tegsoft. All rights reserved.

«Tegsoft» and Tegsoft’s products are trademarks of Tegsoft. References to other companies and their products use trademarks owned by the respective companies and are for reference purpose only.

5xx – ошибки сервера

SIP/2.0 500 Internal Server ErrorВнутренняя ошибка сервера.

SIP/2.0 500 DB TimeoutНет ответа от базы данных.

SIP/2.0 500 Database ErrorТо же самое, но в другой момент.

SIP/2.0 500 Wrong DB ResponseНеправильный ответ базы данных.

SIP/2.0 500 Undefined ReasonНеопределенная причина.

SIP/2.0 500 account has been moved to a remote systemАккаунт перенесен в удаленную систему (дословно).

SIP/2.0 500 Call placing quota exceededПревышен CPS.

SIP/2.0 501 Method Not Supported HereВ сервере не реализованы какие-либо функции, необходимые для обслуживания запроса. Метод запроса SIP не поддерживается.

SIP/2.0 502 Bad GatewayСервер, функционирующий в качестве шлюза или прокси-сервера, принимает некорректный ответ от сервера, к которому он направил запрос.

SIP/2.0 503 Service UnavailableСервер не может в данный момент обслужить вызов вследствие перегрузки или проведения технического обслуживания.

SIP/2.0 504 Server time-outСервер не получил ответа в течение установленного промежутка времени от сервера, к которому он обратился для завершения вызова.

SIP/2.0 505 SIP Version not supportedВерсия не поддерживается. Сервер не поддерживает эту версию протокола SIP.

SIP/2.0 513 Message too bigСервер не в состоянии обработать запрос из-за большой длины сообщения.

A 3 line patch solution

This was a source of frustration to me, and in true open source style, I “scratched my own itch” and in August 2018 spent some time trying to figure out what was causing this bug.

I am not a C programmer by trade, but the Freeswitch code is well structured and easy to follow.

Eventually I stumbled across the directory.

In this directory are several files implementing the different transports that the SOFIA SIP library supports; UDP, TCP and TLS.

After comparing the code in with the code in I discovered that 3 critical lines were missing from the TLS transport file. The lines that sent the received decrypted packets to the capture server.

So I added these lines in and made a pull-request.

Sadly after over 5 months later, the Freeswitch team haven’t given any feedback on my patch, despite several requests in the issue tracker and in their Slack channel. I was hoping that such a small patch, that would allow more people to use Freeswitch with TLS, would be accepted quickly (or at least be responded to with feedback). I guess they are too busy.

Anyway, never mind, if you are experiencing this issue too, I have created a patch file you can apply directly to a Freeswitch 1.8 tree.

Happy secure VoIPing!

Update 2019-02-26

The code has now been merged! :)

Описание утилиты.

Sngrep — это терминальная утилита, которая отлавливает SIP (Session Initiation Protocol) пакеты в реальном времени по Caller-Id и отображает ход потоков стрелками из узла в узел, аналогично используемым в SIP RFC. Данный инструмент был призван упростить процесс анализа трафика, а также сэкономить время администратора сервера на поиск неисправностей.

Из основных возможностей утилиты следует отметить:
— Захват SIP-пакетов в реальном времени.
— Захват SIP-пакетов с различных устройств, взаимодействующих с сервером.
— Возможность чтения дампа формата .pcap
— Возможность формирования дампов формата .pcap с захватом RTP, TCP, UDP.
— Возможность формирования дампов формата .pcap с интересующим Вас трафиком из общего пула информации, захваченной в реальном времени.
— Поддержка транспортных протоколов типа: RTP, TCP, TLS, UDP.
— Возможность фильтрации с использованием BPF (Berkeley Packet Filter).

Если Вас интересует, как установить и настроить sngrep, ознакомьтесь с нашей статьёй на тему: Установка и настройка sngrep.

Анализ трафика при помощи Wireshark

Сергей Пол

30 ноября 2015

Часто для анализа и  устранения конкретной проблемы нужно взглянуть на реальный SIP-трафик от 3CX Phone System 3CX или от VoIP-клиента.

Например:

Вы можете проверить SIP трафик, поступающий на сервер, и таким образом убедиться, что он не будет блокироваться брандмауэром на стороне клиента или брандмауэром между сервером и VOIP-провайдером.

  • Вы можете проверить, запросы STUN.
  • Вы можете проверить  формат INVITES и других сообщений SIP, которые отправляются VoIP-провайдером или VoIP-шлюзом.
  • Вы можете просмотреть процесс регистрации телефонов.

Кроме того, Техническая Поддержка 3CX может попросить Вас дать информацию по SIP-трафику, чтобы проанализировать проблему более подробно.
Чтобы собрать SIP-трафик:
1. Загрузите и установите приложение для сбора. В данном примере мы используем Wireshark (), который можно загрузить сwww.wireshark.org

    1. Включите интерфейсы в меню. Перейдите в Capture > InterfaceТеперь выберите сетевой интерфейс, для  которого будет отслеживаться трафик и нажмите на кнопку Start, после этого вы сможете видеть всю информацию и проходящих через этот интерфейс пакетах.
  1. Для того чтобы отслеживать только SIP-трафик,ведите слово SIP в поле Filter и нажмите Apply.4. Повторите действие, которое вы хотите проанализировать (например, регистрацию на VoIP-провайдере, или исходящий вызов).В главном окне программы будут отображаться только SIP-пакеты. После завершения, вы можете сохранить данные через меню File.Дополнительная фильтрация (если фильтр задан верно, поле подсвечивается зеленым):
  • ip.addr == IP_АДРЕС (весь трафик С и НА данный адрес)
  • ip.scr == IP_АДРЕС (весь трафик С данного адреса)
  • ip.dst == IP_АДРЕС (весь трафик НА  данный адрес)
  • ip.scr == IP_АДРЕС && sip (весь SIP-трафик С данного адреса)
  • ip.dst == IP_АДРЕС && sip (весь SIP-трафик НА  данный адрес)

В программе Wireshark реализован удобный механизм для диагностики (анализа) VoIP-звонков, в частности можно получить графическую диаграмму звонков и посмотреть, как происходил обмен данными. Wireshark позволяет анализировать протокол SIP и его RTP-трафик.

Продемонстрируем это на примере.

Предположим, что во время выполнения VoIP-звонка с помощью программы Wireshark был выполнен захват сетевых пакетов и этот дамп следует проанализировать.

1. Откройте ранее сохраненный файл с дампом VoIP-пакетов.

2. Выберите SIP или RTP-пакет из списка (в нашем примере анализируем RTP-трафик). Для фильтрации пакетов вы можете в полеFilter ввести значение  sip или rtp для отображения только определенного типа трафика.

3. Зайдите в меню Statistics (или Telephony, в зависимости от версии программы) > VoIP Calls.
Откроется окно VoIP Calls со списком VoIP-звонков.

В списке VoIP-звонков показывается следующая информация для каждого звонка:

  •  Start Time: Время начала звонка.
  • Stop Time: Время окончания звонка.
  • Initial Speaker: IP-адрес источника пакетов, который инициировал звонок.
  • From: Для SIP-звонков в поле «From» отображается запрос INVITE.
  • To: Для SIP-звонков в поле «To» отображается запрос INVITE.
  • Protocol: Протокол.
  • Packets: Число пакетов, участвующих в звонке.
  • State: Статус звонка.
  • Comment: Дополнительные комментарии.
  1. Выберите VoIP-вызов и затем нажмите кнопку Graph (или Flow, в зависимости от версии программы). Появится окно Graph Analysisс графической диаграммой обмена данными VoIP-звонка.

Если у вас есть интересные идеи или вам требуется помощь по настройке оборудования пишите всегда буду рад помочь.

mail: [email protected]

Описание ключей запуска.

-h or —help: отобразить справку по использованию.-V or —version: отобразить информацию о версии утилиты.-I or —input <filename.pcap>: прочесть дамп формата .pcap-r or –rtp: захватывать RTP-трафик/открыть с RTP.-O or —output <filename.pcap>: сохранить все захваченные пакеты в дамп .pcap-d or —device <device>: захватить трафик с определённого интерфейса. По умолчанию захватывается трафик со всех интерфейсов.-k or —keyfile <keyfile.pem>: использовать private keyfile для расшифровки TLS пакетов.-c or —calls: отображать только диалоговые окна.-l or —limit: лимитировать захвата трафика.-i or —icase: сделать выражения соответствия нечувствительными к регистру.-v or —invert: инвертировать выражения соответствия.-N or —no-interface: не отображать интерфейс sngrep, а просто произвести захват трафика.-q or —quiet: не выводить захваченные диалоги в режиме без интерфейса.-D or —dump-config: вывести конфиг.

Ниже будут рассмотрены примеры классических вариантов запуска sngrep с ключами:
1) sngrep port 5060 – захват всех SIP-пакетов со всех устройств на порту 5060.
2) sngrep -d eth0 -O /tmp/sip_capture.pcap host 192.168.0.50 port 5061 – отобразить SIP-пакеты с eth0, имеющего в качестве источника или назначения адрес 192.168.0.50 через порт 5061, найти дамп в /tmp/sip_capture.pcap
3) sngrep -I /tmp/sip_capture.pcap host 10.10.1.50 – отобразить все SIP-пакеты, захваченные с хоста 10.10.1.50, найти дамп в /tmp/sip_capture.pcap

Как устроен SIP-протокол

Модель протокола SIP – сугубо клиент-серверная.

Его ключевые функциональные элементы таковы:

  1. Пользовательский терминал – это устройство, посредством которого юзер управляет установкой и окончанием звонка. Реализуется как аппаратным способом, так и программным.
  2. Прокси-серверы – это устройства, принимающие и обрабатывающие запросы от пользовательских терминалов, осуществляя надлежащие запросу действия. В состав каждого входит клиентская часть и серверная, а потому они могут выполнять приём вызовов, инициируя запрос и возвращая ответ.
  3. Серверы переадресации – устройства для хранения записей о нынешнем местопребывании каждого имеющегося в сети терминала и прокси-сервера. Они не управляют звонками и не генерируют личные запросы.
  4. Серверы установления местопребывания юзеров – специальная база данных с адресными данными. Необходимы для гарантирования личной мобильности юзеров.

HEP protocol to the rescue!

One approach to solve this problem is to restrict the type of encrypted connection that Freeswitch
can establish (specifically forward secrecy) and then give the private key that your server is using to
the SIP capture tool.

Tools like SNGREP support this feature using the flag.

However I’ve never managed to get that to work, and besides, limiting the strength of the encryption
you’re using so that it can be intercepted seems to defeat the purpose.

This is where a protocol called HEP (Homer Encapsulation Protocol) comes to the rescue.
As the name suggests, it originally came out of the Homer SIP capture project.
But since then has been integrated into many SIP tools, including Freeswitch and SNGREP.

The basic idea behind HEP is to provide a way for the voice server itself to send the raw SIP packets
to a dedicated capture process after the packets have been decrypted.

This way, the voice server and handset can use any form of encryption they both support, and the decrypted packets can be sent to a local capture agent.

3xx – сообщения о переадресации

SIP/2.0 300 Multiple ChoicesУказывает несколько SIP-адресов, по которым можно найти вызываемого пользователя.

SIP/2.0 301 Moved PermanentlyВызываемый пользователь больше не находится по адресу, указанному в запросе.

SIP/2.0 302 Moved TemporarilyПользователь временно сменил местоположение. (Настроена переадресация по SIPUA в т.ч. с VOIP-телефона)

SIP/2.0 305 Use ProxyВызываемый пользователь не доступен непосредственно. Входящий вызов должен пройти через прокси-сервер.

SIP/2.0 380 Alternative ServiceЗапрошенная услуга недоступна, но доступны альтернативные услуги.

Проводник Wi-Fi

Последним в списке является Проводник Wi-Fi, у которого есть бесплатная версия для Windows и стандартная версия для Windows и macOS. Если анализ сети Wi-Fi — это все, что вам нужно (что в наши дни является стандартом), то Wifi Explorer облегчит вам жизнь.

Это красиво оформленный и многофункциональный инструмент для проникновения прямо в сердце сети.

Почетное упоминание: было бы плохой услугой закрыть этот пост, не упомянув эксклюзивный для macOS сетевой анализатор, на который я наткнулся — Маленький снитч. Он имеет встроенный брандмауэр, поэтому он дает дополнительное преимущество, позволяя сразу же полностью контролировать весь трафик (что может показаться болезненным, но в долгосрочной перспективе является огромным преимуществом).

Что дальше?

Вы также должны изучить это программное обеспечение для мониторинга сети для лучшей видимости инфраструктуры. Если вы хотите построить карьеру в области сетей и безопасности, ознакомьтесь с некоторыми из лучшие онлайн-курсы здесь.

Wireshark

Об этой прог­рамме зна­ет, навер­ное, каж­дый, кто хотя бы раз стал­кивал­ся с задачей ана­лиза тра­фика. Популяр­ность Wireshark впол­не оправдан­на: во‑пер­вых, дан­ный про­дукт бес­пла­тен, во‑вто­рых, его воз­можнос­тей впол­не хва­тает для решения самых насущ­ных воп­росов, каса­ющих­ся перех­вата и ана­лиза переда­ваемых по сети дан­ных. Про­дукт поль­зует­ся зас­лужен­ной популяр­ностью у вирус­ных ана­лити­ков, реверс‑инже­неров, сис­темных адми­нис­тра­торов и, безус­ловно, пен­тесте­ров.

Что такое Wireshark, зна­ет, навер­ное, каж­дый

Этот ана­лиза­тор име­ет рус­ско­языч­ный интерфейс, уме­ет работать с боль­шим количес­твом сетевых про­токо­лов (перечис­лять здесь их все лишено смыс­ла: пол­ный спи­сок мож­но най­ти на сай­те про­изво­дите­ля). В Wireshark мож­но разоб­рать каж­дый перех­вачен­ный пакет на час­ти, прос­мотреть его заголов­ки и содер­жимое. У при­ложе­ния очень удоб­ный механизм навига­ции по пакетам, вклю­чая раз­личные алго­рит­мы их поис­ка и филь­тра­ции, есть мощ­ный механизм сбо­ра ста­тис­тики. Сох­ранен­ные дан­ные мож­но экспор­тировать в раз­ные фор­маты, кро­ме того, сущес­тву­ет воз­можность авто­мати­зиро­вать работу Wireshark с помощью скрип­тов на Lua и под­клю­чать допол­нитель­ные (даже раз­работан­ные самос­тоятель­но) модули для раз­бора и ана­лиза тра­фика.

По­мимо Ethernet, сниф­фер уме­ет перех­ватывать тра­фик бес­про­вод­ных сетей (стан­дарты 802.11 и про­токол Bluetooth). Тул­за поз­воля­ет ана­лизи­ровать тра­фик IP-телефо­нии и вос­ста­нав­ливать TCP-потоки, под­держи­вает­ся ана­лиз тун­нелиро­ван­ного тра­фика. Wireshark отлично справ­ляет­ся с задачей декоди­рова­ния про­токо­лов, но, что­бы понять резуль­таты это­го декоди­рова­ния, надо, безус­ловно, хорошо раз­бирать­ся в их струк­туре.

К недос­таткам Wireshark мож­но отнести то, что вос­ста­нов­ленные потоки не рас­смат­рива­ются прог­раммой как еди­ный буфер памяти, из‑за чего зат­рудне­на их пос­леду­ющая обра­бот­ка. При ана­лизе тун­нелиро­ван­ного тра­фика исполь­зует­ся сра­зу нес­коль­ко модулей раз­бора, и каж­дый пос­леду­ющий в окне прог­раммы замеща­ет резуль­тат работы пре­дыду­щего — в ито­ге ана­лиз тра­фика в мно­гоуров­невых тун­нелях ста­новит­ся невоз­можен.

В целом Wireshark — не прос­то популяр­ный, но очень доб­ротный про­дукт, поз­воля­ющий отсле­дить содер­жимое гуля­ющих по сети пакетов, ско­рость их переда­чи, най­ти «проб­лемные мес­та» в сетевой инфраструк­туре. Но в отли­чие от ком­мерчес­ких при­ложе­ний здесь нет удоб­ных инс­тру­мен­тов визу­али­зации. Кро­ме того, с помощью Wireshark не так уж и прос­то, нап­ример, выловить из тра­фика логины и пароли, а это одна из типич­ных задач при тес­тирова­нии на про­ник­новение.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: