Введение
Интернет — глобальная система объединенных компьютерных сетей для хранения и передачи данных. Сам дизайн и основы функционирования интернета открыли двери между нашими «защищенными» корпоративными сетями и самой Сетью. Это все та же сеть, построенная на TCP/IP. И руководители ИБ, и специалисты по сетевой безопасности хорошо знают, как сделать интернет безопасным для своей организации.
Всемирная паутина (www), веб — это распределенная система связи «документов», расположенных на сотнях миллионов веб-серверов, подключенных к интернету. Это давно уже не просто веб-страницы и веб-сайты, а полноценные информационно-коммуникационные системы с веб-интерфейсом. В минимальной конфигурации есть веб-сервер (например, Apache или IIS), операционная система веб-сервера (Windows/Linux), сервер БД (MySQL/MS SQL) и сетевая служба обновления веб-сайта (FTP/SFTP). Все эти компоненты должны быть безопасными, поскольку в случае взлома любого из них злоумышленники могут получить доступ к данным. Веб — всего лишь транспорт, платформа, сервис.
Уязвимость (vulnerability) — ошибка или недостаток в системе, используя который можно намеренно нарушить ее конфиденциальность, целостность или доступность. Речь пойдет не столько о защите самого веб-приложения, а о том, что уязвимости веба позволяют киберпреступникам получать доступ к расположенным за ним сетевым устройствам, серверам приложений, БД и пр. Некоторые уязвимости известны только теоретически, другие же могут активно использоваться при наличии эксплойта (exploit) — программного кода, использующего уязвимость в программном обеспечении и применяемого для проведения атаки на систему. Уязвимости веб-приложений гораздо проще выявить, эффективнее использовать и при этом скрыть свое присутствие. Уязвимости могут эксплуатироваться не только из интернета, но и изнутри (внутренний нарушитель). Не всегда они являются дефектами разработки самого приложения, а часто возникают в результате проблем с безопасностью обработки информации, неправильных конфигураций, слабого администрирования и порой даже отсутствия осведомленности у лиц, ответственных за информационные технологии и их безопасность.
Предлагаемые решения проблемы не всегда очевидны, понятны и доступны — от противоречия друг другу до потери доступности и полного хаоса. Пример популярного подхода:
- внедрить и поддерживать систему управления информационной безопасностью, в том числе обеспечить постоянное информирование о новых проблемах безопасности (это ведь основа, концепт, а не решение прикладной задачи);
- проверить все ваши существующие приложения на предмет правильной разработки и обеспечения информационной безопасности (реально ли это сделать, не говоря о стоимости подобного);
- убедиться, что все обновления/патчи сделаны сразу, и регулярно проверять необходимость в них (бесспорно, но проблему не решает);
- доверять веб-разработку/поддержку только знающим и опытным/рекомендованным экспертами программистам (как это оценить и проверить);
- обеспечить тщательную проверку их работы специалистами по безопасности, в том числе с использованием активного исследования программного кода (безопасники не знают веб так, как программисты);
- передать на квалифицированную поддержку все средства защиты информации;
- внедрить систему защиты от целевых атак (речь о массовых атаках с простыми сценариями);
- провести оценку всех информационных систем на предмет их соответствия;
- и так далее.
Веб-уязвимости сегодня превосходят по количеству и связанным рискам любые другие проблемы информационной безопасности. 20% веб-приложений 10 лет назад — это уже почти 80% общего числа корпоративных приложений сегодня. Веб не только в интернете, ERP, АБС, управление сетями и многое другое используют веб-технологии
Подавляющее большинство внешних атак на корпоративные информационные системы нацелены именно на уязвимости веб-приложений, и с кратным ростом рисков пристальное внимание стало уделяться выявлению и устранению уязвимостей именно в них. И если внутри сети злоумышленнику доступен веб, его задачи упрощаются на порядок
Рисунок 1. Уязвимости веб-приложений
Wapiti
сканер
- File disclosure (Local and remote include/require, fopen, readfile…)
- Database Injection (PHP/JSP/ASP SQL Injections and XPath Injections)
- XSS (Cross Site Scripting) injection (reflected and permanent)
- Command Execution detection (eval(), system(), passtru()…)
- CRLF Injection (HTTP Response Splitting, session fixation…)
- XXE (XML External Entity) injection
- SSRF (Server Side Request Forgery)
- Use of know potentially dangerous files
- Weak .htaccess configurations that can be bypassed
- Presence of backup files giving sensitive information
- Shellshock
php.testsparker.compremium.bgabank.com Wapiti до уровня OWASP ZAP, конечно, не дотягивает. Но все же он отработал качественнее W9scan
Перебор паролей веб-форм
Самый сложный вариант — это перебор паролей для веб-форм. Здесь нам нужно узнать что передает на сервер нужная форма в браузере, а затем передать в точности те же данные с помощью hydra. Вы можете посмотреть какие поля передает браузер с помощью перехвата в wireshark, tcpdump, в консоли разработчика и так далее. Но проще всего открыть исходный код формы и посмотреть что она из себя представляет. Далеко ходить не будем и возьмем форму WordPress:
Как видите, передаются два поля log и pwd, нас будут интересовать только значения полей input. Здесь несложно догадаться, что это логин и пароль. Поскольку форма использует метод POST для передачи данных, то нам нужно выбрать модуль http-post-form. Синтаксис строки параметров будет выглядеть вот так:
адрес_страницы:имя_поля_логина=^USER^&имя_поля_пароля=^PASS^&произвольное_поле=значение:строка_при_неудачном_входе
Строчка запуска программы будет выглядеть вот так:
Переменные ^USER^ и ^PASS^ содержат имя пользователя и пароль взятые из словаря, также, возможно, придется передать дополнительные параметры, они передаются также, только значения будут фиксированы. Заканчивается выражение строкой, которая присутствует на странице при неудачном входе. Скорость перебора может достигать 1000 паролей в минуту, что очень быстро.
Примеры запуска Hydra
Попытаться войти как пользователь root (-l root) используя список паролей (-P /usr/share/wordlists/metasploit/unix_passwords.txt) в 6 потоков (-t 6) на данный SSH сервер (ssh://192.168.1.123):
hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 6 ssh://192.168.1.123
Попытаться войти как пользователь user (-l user) используя список паролей (-P passlist.txt) на данный FTP сервер (ftp://192.168.0.1):
hydra -l user -P passlist.txt ftp://192.168.0.1
Попытаться войти на SSH сервера (ssh) из списка (-M targets.txt) используя список пользователей (-L logins.txt) и список паролей (-P pws.txt):
hydra -L logins.txt -P pws.txt -M targets.txt ssh
Попробовать зайти на FTP сервера в указанной подсети (ftp://[192.168.0.0/24]/) с именем пользователя admin (-l admin) и паролем password (-p password):
hydra -l admin -p password ftp://[192.168.0.0/24]/
Зайти на почтовый сервер (imap://192.168.0.1/), использующий протокол IMAP с именам пользователей из списка (-L userlist.txt) и паролем defaultpw (-p defaultpw), в качестве типа аутентификации выбран PLAIN:
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
Зайти на почтовый сервер с протоколом POP3S, размещённом указанном на IPv6 (-6) адресе 2001:db8::1, на порту 143 со списком учётных данных в формате «логин:пароль» размещённом в файле defaults.txt (-C defaults.txt) с использованием типа аутентификации DIGEST-MD5 и принудительным TLS шифрованием через STLS:
hydra -C defaults.txt -6 pop3s://:143/TLS:DIGEST-MD5
Оборудование
Для проведения гидродермабразии используется мультифункциональный аппарат HydraFacial MD TOWER. Оборудование, расходные материалы американского косметологического бренда имеют сертификаты FDA и ISO 13485, отвечающие всем международным стандартам качества. Ассортимент запатентованных насадок Hydropeel является одним из ключевых элементов лечения. Каждая имеет свой дизайн и предназначена для решения определенной проблемы:
- Классический синий наконечник – используется на этапах очищения, отшелушивания в сочетании с сывороткой Activ-4.
- Бирюзовая насадка — идеально подходит для глубокой очистки, удаления все видов загрязнений, угрей, прыщей. Используется вместе с сывороткой Beta-HD, ампулой Glysal.
- Прозрачный наконечник — способствует проникновению увлажняющих, омолаживающих сывороток. Используется с Antiox-6 , Antiox +, DermaBuilder, Britenol.
- Оранжевый наконечник – для лечения гиперпигментации, склонной к акне, жирной кожи или для уменьшения пор. Используется в сочетании с сыворотками Activ-4, Beta-HD.
В процедуре Hydrafacial предусмотрены насадки для корректировки косметических недостатков тела. Они намного шире лицевых наконечников, что обеспечивает высокую эффективность, сокращает количество проходов. Используются с сывороткой Activ-4.
Синтаксис Hydra
- -R восстановить предыдущую прерванную/оборванную сессию
- -S выполнить SSL соединение
- -s ПОРТ если служба не на порту по умолчанию, то можно задать порт здесь
- -l ЛОГИН или -L ФАЙЛ с ЛОГИНАМИ (именами), или загрузить несколько логинов из ФАЙЛА
- -p ПАРОЛЬ или -P ФАЙЛ с паролями для перебора, или загрузить несколько паролей из ФАЙЛА
- -x МИНИМУМ:МАКСИМУМ:НАБОР_СИМВОЛОВ генерация паролей для брутфорса, наберите «-x -h» для помощи
- -e nsr «n» — пробовать с пустым паролем, «s» — логин в качестве пароля и/или «r» — реверс учётных данных
- -u зацикливаться на пользователя, а не на паролях (эффективно! подразумевается с использованием опции -x)
- -C ФАЙЛ формат где «логин:пароль» разделены двоеточиями, вместо опции -L/-P
- -M ФАЙЛ список серверов для атак, одна запись на строку, после двоеточия ‘:’ можно задать порт
- -o ФАЙЛ записывать найденные пары логин/пароль в ФАЙЛ вместо стандартного вывода
- -f / -F выйти, когда пара логин/пароль подобрана (-M: -f для хоста, -F глобально)
- -t ЗАДАЧИ количество запущенных параллельно ЗАДАЧ (на хост, по умолчанию: 16)
- -w / -W ВРЕМЯ время ожидания ответов (32 секунды) / между соединениями на поток
- -4 / -6 предпочитать IPv4 (по умолчанию) или IPv6 адреса
- -v / -V / -d вербальный режим / показывать логин+пароль для каждой попытки / режим отладки
- -O использовать старые SSL v2 и v3
- -q не печатать сообщения об ошибках соединения
- -U подробные сведения об использовании модуляef
Владимир Садовский, руководитель группы мониторинга и реагирования на инциденты информационной безопасности «М.Видео-Эльдорадо», — о том, как построить процесс безопасного программирования
Угрозы безопасности в ритейле
- Реализация автотестов безопасности при тестировании приложений.
- Создание костюмных правил для статического анализатора с привязкой к критичным бизнес-процессам и интеграциям.
- Ручной анализ частей измененного кода, в разрезе функционала, который имеет высокую критичность на основании рисков.
- Процесс поиска закладок в коде, периодический аудит внешних библиотек.
Работа с Big Data и построение моделей аномального поведения и отклонения от нормы.
Процесс мониторинга и аудита JS-скриптов. Современные сайты не работают без JS-скриптов. Зачастую они загружаются с внешних ресурсов
Поэтому важно понимать их функционал, и какую угрозу JS-скрипты несут для сайта. Поиск уязвимостей на основании аналитики сервисов и метрик Google и Яндекс.
Регулярное проведение тестирования защищенности проекта в целом.
Использование программы Bug Bounty для выявления новых уязвимостей.
Интеграция WAF для защиты приложений и эффективного реагирования на проблемы
Как пользоваться Hydra
Сущестествует база логинов и паролей, в качестве которой программа использует специальные словари. Чтобы повысить вероятность успешного подбора паролей и логинов можно задавать маски, устанавливать длину и предполагаемые символы, из которых они могут состоять, также есть возможность генерировать пароли по уже готовым алгоритмам.
Модульность отличает Hydra от других, похожих на нее программ. Благодаря модулям можно подключать к программе новые компоненты, которые обеспечивают поддержку новых сетевых устройств и протоколов. Новые модули можно скачать на официальном сайте программы, у других пользователей или же написать самому.
https://youtube.com/watch?v=-dnZ4IUyW5A
Руководство по Hydra
Поддерживаемые службы (это же название модулей):
- asterisk
- afp
- cisco
- cisco-enable
- cvs
- firebird
- ftp
- ftps
- http-head
- https-head
- http-get
- https-get
- http-post
- https-post
- http-get-form
- https-get-form
- http-post-form
- https-post-form
- http-proxy
- http-proxy-urlenum
- icq
- imap
- imaps
- irc
- ldap2
- ldap2s
- ldap3
- ldap3s
- ldap3-crammd5
- ldap3-crammd5s
- ldap3-digestmd5
- ldap3-digestmd5s
- mssql
- mysql
- nntp
- oracle-listener
- oracle-sid
- pcanywhere
- pcnfs
- pop3
- pop3s
- postgres
- rdp
- redis
- rexec
- rlogin
- rsh
- rtsp
- s7-300
- sip
- smb
- smtp
- smtps
- smtp-enum
- snmp
- socks5
- ssh
- sshkey
- svn
- teamspeak
- telnet
- telnets
- vmauthd
- vnc
- xmpp
Дополнительная информация об опции -x
Использование
-x MIN:MAX:CHARSET где MIN минимальное количество символов в пароле MAX максимальное количество символов в пароле CHARSET это указание наборов символов для использования в генерации. Валидными значениями CHARSET являются: 'a' для букв нижнего регистра, 'A' для букв верхнего регистра, '1' для чисел, а для всех остальных, просто добавляйте их самих.
Примеры:
Сгенерировать пароли длинной от 3 до 5, состоящие из букв нижнего регистра:
-x 3:5:a
Сгенерировать пароли длинной от 5 до 8, состоящие из букв верхнего регистра и цифр:
-x 5:8:A1
Сгенерировать пароли длинной от 1 до 3 символов, содержащих только слэши:
-x 1:3:/
Сгенерировать пароли длинной 5 символов, которые состоят только из /%,.-
-x 5:5:/%,.-
Webpack
Ещё один способ устранения угроз — правильно сконфигурировать webpack. Чтобы защититься от XSS, XEE и подобных атак, надо продумать соблюдение политик CORS (Cross-origin resource sharing) и CSP (Content Security Policy)
В обоих случаях важно соблюдать заголовки, чтобы проверять достоверность тех или иных скриптов, которые используются в проекте. В браузерах есть механизмы проверки достоверности того или иного источника, к примеру, Safari будет на каждом шагу выдавать предупреждения, если CORS и CSP настроены некорректно
Есть два пути соблюдения CORS и CSP. Первый — настроить заголовки ответа на запросы в серверной части. Второй — прописать обе политики через мета-теги и атрибуты. Последний способ рекомендуется в том случае, если у вас ленивые back-end разработчики, они вечно заняты и им не до политик безопасности. Мета-теги можно прописывать сразу же при сборке приложения. В этом нам помогут такие плагины, как html-webpack-plugin, html-webpack-exclude-assets-plugin, script-ext-html-webpack-plugin, csp-html-webpack-plugin и crypto. Кроме того, если у вас в проекте есть сторонние ресурсы (например, ссылки на внешние шрифты, применяемые в CSS; ресурсы, подгружаемые из CDN, и так далее), то рекомендую использовать ещё и webpack-subresource-integrity-plugin. Таким образом, вы будете сообщать браузеру, что подгружаемые ресурсы в скрипте достоверны, в них нет никаких внедрений, они целые и неиспорченные. И если даже кто-то внедрил в ресурс зловредные данные, а ты их подгрузил, то надо быть готовым к этому и обезопасить свой проект от подобных угроз.
Хочу обратить особое внимание на то, в какой последовательности и каким образом создаются экземпляры классов для плагинов. Очерёдность должна быть именно такой:. Тогда при сборке в теге появится мета-тег
В атрибуте будут прописаны директивы, которые говорят о том, каким скриптам и ресурсам можно доверять
Тогда при сборке в теге появится мета-тег . В атрибуте будут прописаны директивы, которые говорят о том, каким скриптам и ресурсам можно доверять.
Директива показывает, какой базовый URL используется для загрузки скриптов, CSS, картинок и прочего.
Объекты обычно не загружаются, поэтому в директиве c ставьте .
Директива относится к JS-скриптам.
Не забывайте каждый раз прописывать атрибут типа . Причем хэш нужно вычислять с помощью алгоритма SHA256 или SHA512.
Что касается директивы , то у нашего проекта есть особенность: мы используем styled-components, чтобы для каждого компонента прописывать CSS и изолировать их друг от друга. И поэтому надо обязательно указать, что у нас в используются значения и , иначе styled-components отвалится.
Для тега автоматически будут заданы атрибуты , и . Они говорят браузеру о том, что ресурсы подтягиваются из достоверных источников
Иначе, если браузер увидит, что ресурс не соответствует CSP или CORS, то он просто не загрузит этот скрипт или CSS-файл, а в консоли напишет что-то вроде: «Обрати внимание на этот скрипт, на вот эту строку, где ты инициализируешь его. Посмотри, у тебя что-то не так!»
В документации MDN, OWASP и W3C есть рекомендации по соблюдению политик CSP и CORS. Кроме того, любой инструментарий для тестирования на проникновение будет сообщать о соблюдении правил CORS и CSP в проекте. Любой фреймворк или инструмент, который будет проводить автоматическое тестирование проекта, укажет на недочёты.
Установка THC Hydra
Первым делом нам необходимо установить этот инструмент. Это довольно популярная утилита для тестирования безопасности, поэтому вы можете найти ее в официальных репозиториях. Для установки нужных пакетов в Ubuntu выполните:
Чтобы установить программу в Red Hat/CentOS команда аналогичная:
Но в официальных репозиториях, как правило, находятся более старые версии программы. Если вы хотите самую свежую, то придется собрать ее из исходников. Но здесь нет ничего сложного. Сначала загрузим исходники последней версии с GitHub, на данный момент, это 8.4:
Затем необходимо их распаковать и перейти в папку с исходниками:
Дальше выполните такие команды для компиляции и установки:
Разработчики поступили очень грамотно, когда настроили установку в /usr/local. Таким образом, утилита не распространится по всей файловой системе, а будет в одном месте. Если вы еще хотите установить графическую оболочку, то вам нужно переместиться в папку hydra-gtk и выполнить те же команды:
Нужно заметить, что для ее сборки необходимы пакеты разработки gtk2. Но я бы не советовал вам использовать этот графический интерфейс. Если разобраться в работе с утилитой через терминал, то он совсем не нужен, тем более, что вся гибкость утилиты раскрывается через командную строку.
Вредоносное ПО
Под Linux существуют многие разновидности вредоносных программ: вымогатели, криптомайнеры, руткиты, черви, бэкдоры и трояны удалённого доступа (RAT). Преступники успешно используют их для получения финансовой выгоды, шпионажа, саботажа, хактивизма или просто из желания доказать, что системы могут быть скомпрометированы.
Ниже перечислены наиболее распространённые типы вредоносных программ в экосистеме Linux.
Вымогатели
Это, безусловно, самая финансово успешная категория вредоносных программ за последнее время. Учитывая растущую популярность Linux, злоумышленники, управляющие вымогателями, считают эту операционную систему очень перспективной мишенью.
В качестве примера Linux-вымогателей можно привести RansomEXX/Defray7777, относительно недавно портированный под эту операционную систему. Его применяла кибергруппировка Gold Dupont, атакующая организации из сфер здравоохранения и образование и технологические отрасли.
Другой вымогатель — Erebus, впервые замеченный в сентябре 2016 года, — в июне 2017 года Erebus заразил 153 Linux-сервера южнокорейской хостинговой компании NAYANA и вывел из строя 3400 клиентских сайтов.
Криптомайнеры
Относительно новым мотивом для злоумышленников является проникновение и злоупотребление вычислительными ресурсами для добычи криптовалюты.
Многие вредоносные криптомайнеры не просто заражают Linux-системы, но и очищают их от присутствия майнеров-конкурентов, а также стремятся захватить как можно более мощные системы с практически неограниченными вычислительными возможностями, такие как контейнеры Docker или Redis.
Для проникновения в систему майнеры используют распространённые уязвимости. Например, программа coinminer, детектируемая компанией Trend Micro под названием Coinminer.Linux.MALXMR.SMDSL64, использует уязвимости обхода авторизации SaltStack (CVE-2020-11651) и обхода каталога SaltStack (CVE-2020-11652).
Вредоносные скрипты
Командные интерпретаторы присутствуют на всех UNIX-машинах, поэтому злоумышленники активно используют его, тем более что это значительно проще, чем использовать скомпилированные вредоносные программы.
Причин популярности вредоносных скриптов для атак на Linux:
-
они легко загружаются в виде текстовых файлов;
-
они имеют небольшой размер;
-
меньше вероятность того, что они будут легко обнаружены;
-
они могут быть созданы «на лету».
Веб-шеллы и бэкдоры
Веб-шелл — установленный на веб-сервере скрипт, который выполняет команды преступника и обеспечивает ему прямой доступ к взломанной системе. Например, в августе 2020 года мы столкнулись с Ensiko, веб-оболочкой PHP, нацеленной на Linux, Windows, macOS или любую другую платформу, на которой установлен PHP. Помимо удалённого выполнения кода с помощью Ensiko злоумышленники могут выполнять команды оболочки и повреждать веб-сайты.
Руткиты
Руткит — набор вредоносных программ, которые внедряются в Linux-систему, частично или полностью подменяя стандартные системные утилиты, драйверы и библиотеки. Основная цель руткита — скрывать своё присутствие от администраторов и пользователей скомпрометированной системы, обеспечивая злоумышленнику полный или частичный контроль.
В ходе наших исследований мы сталкивались с несколькими семействами руткитов. Чаще всего это были Umbreon, Drovorub или Diamorphine.
Программа THC – HYDRA
Перед тем как мы начнем рассматривать как пользоваться htc hydra, нам необходимо разобраться какие параметры команде передавать и как это делать. Давайте сначала рассмотрим общий синтаксис:
$ hydra опции логины пароли -s порт адрес_цели модуль параметры_модуля
Опции задают глобальные параметры утилиты, с помощью них вы можете настроить необходимые параметры, например, указать что нужно выводить информацию очень подробно, список логинов и паролей для перебора задается тоже с помощью опций, но я выделил его в отдельный пункт. Дальше нужно задать порт сервиса на удаленной машине и ip адрес цели. В конце мы задаем модуль перебора, который будем использовать и параметры модуля. Обычно это самая интересная часть но начнем мы с опций:
- -R – восстановить ранее прерванную сессию Hydra;
- -S – использовать SSL для подключения;
- -s – указать порт;
- -l – использовать логин;
- -L – выбирать логины из файла со списком;
- -p – использовать пароль;
- -P – использовать пароль из файла со списком;
- -M – взять список целей из файла;
- -x – генератор паролей;
- -u – по умолчанию hydra проверяет все пароли для первого логина, эта опция позволяет проверить один пароль для всех логинов;
- -f – выйти, если правильный логин/пароль найден;
- -o – сохранить результат в файл;
- -t – количество потоков для программы;
- -w – время между запросами в секундах;
- -v – подробный вывод;
- -V – выводить тестируемые логины и пароли.
https://youtube.com/watch?v=0vpfCMqZri4
Это были основные опции, которые, вы будете использовать. Теперь рассмотрим модули, а также способы аутентификации, которые вы можете подобрать:
- adam6500;
- asterisk;
- cisco;
- cisco-enable;
- cvs;
- ftp;
- http-head;
- http-get;
- http-post;
- http-get-form;
- http-post-form;
- http-proxy;
- http-proxy-urlenum;
- icq;
- imap;
- irc;
- ldap2;
- ldap3;
- mssql;
- nntp;
- pcanywhere;
- pcnfs;
- pop3;
- redis;
- rexec;
- rlogin;
- rpcap;
- rsh;
- rtsp;
- s7-300;
- smb;
- smtp;
- smtp-enum;
- snmp;
- socks5;
- ssh;
- teamspeak;
- telnet;
- vmauthd;
- vnc;
- xmpp.
Как видите, количество доступных протоколов достаточно большое, вы можете проверить безопасность как ssh, ftp, и до веб-форм. Дальше мы рассмотрим как пользоваться hydra, как использовать самые часто применяемые протоколы.