Re: SIP Dictionary and Bruteforcing Attacks

От: Dmitry Akindinov <CGatePro_at_mx_ru>
Дата: Fri 19 Nov 2010 - 12:11:28 MSK

Здравствуйте,

В 5.4 будет несколько улучшений для борьбы с такими сканерами.

Например, при получении нескольких плохиз пакетов с IP адреса или нескольких неудачных попыток аутентифицироваться, этот адрес добавляется во временный чёрный список. Все последующие запросы с этого адреса просто не обрабатываются.

Кое-что можно и нужно делать уже в текущих версиях. Как минимум - перенаправлять Signals for Unknown в какой-нибудь аккаунт (pbx или другой), а Access for Unknown - перенаправлять в null. Тогда ошибка будет не 404, а 401 - на любое имя/номер.

On 2010-11-19 0:43, Andriy Harisios wrote:
> Здравствуйте.
>
>
> Подскажите пожалуйста кто как защищается от SIP Dictionary and Bruteforcing Attacks, средствами самого CommunigatePro,
> и средствами OS.
> В SMTP, HTTP и других есть запретить после Х на ХХ, а для SIP не нашли.
>
> А вот недавний случай.
> Лог :Установки-Real-Time-SIP-(Передача-Приём)-Уровень Журнала:СБОИ
> IP Адрес сервера 192.100.ХХХ.ХХХ
> Размер лог файла более 200мб, все записи такого типа.
>
> 04:05:29.714 1 ROUTER SYSTEM: '100@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
>
> Пользователя или псевдонима 100 на сервере нет, и очень странно что там еще и собственный адрес сервера.
>
> Несколько дней спустя, уровень лога увеличен:
> ----------------------------------------------------------------------------------
> 05:09:03.995 2 SIPDATA-050484 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5078 404-REGISTER(315 bytes)
> 05:09:03.998 1 SIPDATA-050485 inp: err udp[95.142.165.203]:5078 packet(374 bytes). illegal opCode in cSeq
> 05:09:03.998 3 SIPDATA-050485 err: ACK sip:100@192.100.ХХХ.ХХХ SIP/2.0
> 05:09:03.998 3 SIPDATA-050485 err: Via: SIP/2.0/UDP 95.142.165.203:5078;branch=z9hG4bK-3460301728;rport
> 05:09:03.998 3 SIPDATA-050485 err: Content-Length: 0
> 05:09:03.998 3 SIPDATA-050485 err: From: "100"<sip:100@192.100.ХХХ.ХХХ>; tag=3130300131373839383937353131
> 05:09:03.998 3 SIPDATA-050485 err: Accept: application/sdp
> 05:09:03.998 3 SIPDATA-050485 err: User-Agent: friendly-scanner
> 05:09:03.998 3 SIPDATA-050485 err: To: "100"<sip:100@192.100.ХХХ.ХХХ>
> 05:09:03.998 3 SIPDATA-050485 err: Contact: sip:100@192.100.ХХХ.ХХХ
> 05:09:03.998 3 SIPDATA-050485 err: CSeq: 1 REGISTER ACK
> 05:09:03.998 3 SIPDATA-050485 err: Call-ID: 3074664473
> 05:09:03.998 3 SIPDATA-050485 err: Max-Forwards: 70
> 05:09:03.998 3 SIPDATA-050485 err:
> 05:09:03.999 2 SIPDATA-050486 inp: req [0.0.0.0]:5060<- udp[95.142.165.203]:5083 REGISTER(359 bytes) sip:4@192.100.ХХХ.ХХХ
> 05:09:03.999 2 SIPDATA-050486 created SIPS-046480
> 05:09:03.999 1 ROUTER SYSTEM: '4@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
> 05:09:03.999 1 SIGNAL-048016 failed to route the 'From' address '4@192.100.ХХХ.ХХХ'. Error Code=unknown user account
> 05:09:04.000 2 SIPDATA-050487 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(304 bytes)
> 05:09:04.011 2 SIPDATA-050488 inp: req [0.0.0.0]:5060<- udp[95.142.165.203]:5083 REGISTER(359 bytes) sip:5@192.100.ХХХ.ХХХ
> 05:09:04.011 2 SIPDATA-050488 created SIPS-046482
> 05:09:04.011 1 ROUTER SYSTEM: '5@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
> 05:09:04.011 1 SIGNAL-048018 failed to route the 'From' address '5@192.100.ХХХ.ХХХ'. Error Code=unknown user account
> 05:09:04.011 2 SIPDATA-050489 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(304 bytes)
> 05:09:04.912 1 SIPDATA-050490 inp: err udp[95.142.165.203]:5078 packet(374 bytes). illegal opCode in cSeq
> 05:09:04.912 3 SIPDATA-050490 err: ACK sip:101@192.100.ХХХ.ХХХ SIP/2.0
> 05:09:04.912 3 SIPDATA-050490 err: Via: SIP/2.0/UDP 95.142.165.203:5078;branch=z9hG4bK-2075177942;rport
> 05:09:04.912 3 SIPDATA-050490 err: Content-Length: 0
> 05:09:04.912 3 SIPDATA-050490 err: From: "101"<sip:101@192.100.ХХХ.ХХХ>; tag=3130310132323737323833343234
> 05:09:04.912 3 SIPDATA-050490 err: Accept: application/sdp
> 05:09:04.912 3 SIPDATA-050490 err: User-Agent: friendly-scanner
> 05:09:04.912 3 SIPDATA-050490 err: To: "101"<sip:101@192.100.ХХХ.ХХХ>
> 05:09:04.912 3 SIPDATA-050490 err: Contact: sip:101@192.100.ХХХ.ХХХ
> 05:09:04.912 3 SIPDATA-050490 err: CSeq: 1 REGISTER ACK
> 05:09:04.912 3 SIPDATA-050490 err: Call-ID: 3890601971
> 05:09:04.912 3 SIPDATA-050490 err: Max-Forwards: 70
> 05:09:04.912 3 SIPDATA-050490 err:
> 05:09:04.913 2 SIPDATA-050491 inp: req [0.0.0.0]:5060<- udp[95.142.165.203]:5083 REGISTER(356 bytes) sip:6@192.100.ХХХ.ХХХ
> 05:09:04.913 1 ROUTER SYSTEM: '6@192.100.ХХХ.ХХХ' rejected. Error Code=unknown user account
> 05:09:04.913 1 SIGNAL-048020 failed to route the 'From' address '6@192.100.ХХХ.ХХХ'. Error Code=unknown user account
> 05:09:04.913 2 SIPDATA-050491 created SIPS-046484
> 05:09:04.913 2 SIPDATA-050492 out: rsp [0.0.0.0]:5060 -> udp[95.142.165.203]:5083 404-REGISTER(301 bytes)
> 05:09:04.924 1 SIPDATA-050493 inp: err udp[95.142.165.203]:5083 packet(358 bytes). illegal opCode in cSeq
> 05:09:04.924 3 SIPDATA-050493 err: ACK sip:1@192.100.ХХХ.ХХХ SIP/2.0
> 05:09:04.924 3 SIPDATA-050493 err: Via: SIP/2.0/UDP 95.142.165.203:5083;branch=z9hG4bK-4052544163;rport
> 05:09:04.924 3 SIPDATA-050493 err: Content-Length: 0
> 05:09:04.924 3 SIPDATA-050493 err: From: "1"<sip:1@192.100.ХХХ.ХХХ>; tag=310133333937353639343331
> 05:09:04.924 3 SIPDATA-050493 err: Accept: application/sdp
> 05:09:04.924 3 SIPDATA-050493 err: User-Agent: friendly-scanner
> 05:09:04.924 3 SIPDATA-050493 err: To: "1"<sip:1@192.100.ХХХ.ХХХ>
> 05:09:04.924 3 SIPDATA-050493 err: Contact: sip:1@192.100.ХХХ.ХХХ
> 05:09:04.924 3 SIPDATA-050493 err: CSeq: 1 REGISTER ACK
> 05:09:04.924 3 SIPDATA-050493 err: Call-ID: 1822939846
> 05:09:04.924 3 SIPDATA-050493 err: Max-Forwards: 70
> 05:09:04.924 3 SIPDATA-050493 err:
> ----------------------------------------------------------------------------------
> На данный момент отлов такого типа атак идет с помощью триггер-sms, и добавления в список запрещенных IP.
> Питались с помощью IPTABLES ограничить INVITE и REGISTER, работало, но криво.
>
> Попытались прикрутить fail2ban for Asterisk, но попытка закончилась при рассмотрении логов, и стало ясно
> что если и удастся прикрутить то останется только возможность блокировать самого себя.
> Подскажите кто либо прикручивал такую вещь,и как подкрутить само логирование сервера чтоб скрипт
> мог брать оттуда данные,сам скрипт ниже.
> Всем спасибо.
>
> ----------------------------------------------------------------------------------
> # Fail2Ban configuration file
> #
> #
> # $Revision: 250 $
> #
>
> [INCLUDES]
>
> # Read common prefixes. If any customizations available -- read them from
> # common.local
> #before = common.conf
>
>
> [Definition]
>
> #_daemon = asterisk
>
> # Option: failregex
> # Notes.: regex to match the password failures messages in the logfile. The
> # host must be matched by a group named "host". The tag "<HOST>" can
> # be used for standard IP/hostname matching and is only an alias for
> # (?:::f{4,6}:)?(?P<host>\S+)
> # Values: TEXT
> #
>
> failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
> NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
> NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
> NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
> NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Peer is not supposed to register
> NOTICE.*<HOST> failed to authenticate as '.*'$
> NOTICE.* .*: No registration for peer '.*' \(from<HOST>\)
> NOTICE.* .*: Host<HOST> failed MD5 authentication for '.*' (.*)
> NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
>
> # Option: ignoreregex
> # Notes.: regex to ignore. If this regex matches, the line is ignored.
> # Values: TEXT
> #
> ignoreregex =
> ----------------------------------------------------------------------------------
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ##################################################################
> Вы получили это сообщение потому, что подписаны на список рассылки
> <CGatePro@mx.ru>.
>
> Чтобы отписаться, отправьте сообщение на адрес<CGatePro-off@mx.ru>
> Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
> Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
> Для административных запросов адрес<CGatePro-request@mx.ru>
> Архив списка: http://mx.demos.su/lists/cgp-russian/
>
>
>

-- 
Best regards,
Dmitry Akindinov -- Stalker Labs.
Получено Fri Nov 19 09:11:34 2010

Этот архив был сгенерирован hypermail 2.1.8 : Fri 19 Nov 2010 - 16:15:59 MSK