CRLF инъекции
Вставка символов возврата каретки и перевода строки — комбинации, известной как CRLF, — в поля ввода веб-формы представляет собой метод атаки, называемый внедрением CRLF. Эти невидимые символы указывают на конец строки или конец команды во многих традиционных интернет-протоколах, таких как HTTP, MIME или NNTP.
Например, вставка CRLF в HTTP-запрос с последующим определенным HTML-кодом может отправлять пользовательские веб-страницы посетителям веб-сайта.
Эта атака может быть выполнена для уязвимых веб-приложений, которые не применяют надлежащую фильтрацию к пользовательскому вводу. Эта уязвимость открывает двери для других типов атак с использованием инъекций, таких как XSS и внедрение кода, а также может происходить на взломанном веб-сайте.
Как определить кодировку строки
Для определения, в какой кодировке строка, используйте одну из следующих конструкций:
echo $'СТРОКА_ДЛЯ_ПРОВЕРКИ' | chardet
Или:
echo $'СТРОКА_ДЛЯ_ПРОВЕРКИ' | enca -L ru
Вместо СТРОКА_ДЛЯ_ПРОВЕРКИ впишите строку, для которой нужно узнать кодировку. Если у вас строка не на русском языке, то откорректируйте значение опции -L.
Примеры запуска:
echo $'\xed\xe5 \xed\xe0 \xe9\xe4\xe5\xed\xf3\xea \xe0\xe7\xe0\xed\xed\xfb\xe9\xec\xee\xe4\xf3\xeb\xfc' | chardet <stdin>: windows-1251 with confidence 0.970067019236
echo $'\xed\xe5 \xed\xe0 \xe9\xe4\xe5\xed\xf3\xea \xe0\xe7\xe0\xed\xed\xfb\xe9\xec\xee\xe4\xf3\xeb\xfc' | enca -L ru MS-Windows code page 1251 LF line terminators
Если возникло сообщение об ошибке:
bash: chardet: команда не найдена
то попробуйте установить chardet из стандартных репозиториев.
Если chardet не найдена в репозиториях, то поищите программу uchardet, затем установите и используйте её.
Программы для определения кодировки в Linux
Команда file -i показывает неверную кодировку
Чтобы узнать кодировку файла используется команда file с флагами -i или —mime, которые включают вывод строки с типом MIME. Пример:
file -i mypoem_draft.txt file -i mynovel.txt
Связанная статья: Инструкция по использованию команды file
Команда file показывает кодировки, но для одного из моих файлов она неверна. Рассмотрим ещё одну альтернативу.
Программа enca для определения кодировки файла
Утилита enca определяет кодировку текстовых файлов и, если нужно, конвертирует их.
Установим программу enca:
sudo apt install enca
Примеры использования:
enca mypoem_draft.txt enca mynovel.txt
В этот раз для обоих файлов кодировка определена верно.
Запуск команды без опции выводит что-то вроде:
MS-Windows code page 1251 LF line terminators
Это удобно для чтения людьми. Для использования вывода программы в скриптах есть опция -e, она выводит только универсальное имя, используемое в enca:
enca -e mypoem_draft.txt CP1251/LF
Если вам нужно имя, которое используется для названия кодировок в iconv, то для этого воспользуйтесь опцией -i:
enca -i mypoem_draft.txt CP1251
Для вывода предпочитаемого MIME имени кодировки используется опция -m:
enca -m mypoem_draft.txt windows-1251
Для правильного определения кодировки программе enca нужно знать язык файла. Она получает эти данные от локали. Получается, если локаль вашей системы отличается от языка документа, то программа не сможет определить кодировку.
Язык документа можно явно указать опцией -L:
enca -m -L russian mypoem_draft.txt
Чтобы узнать список доступных языков наберите:
enca --list languages
Вы увидите:
belarusian: CP1251 IBM866 ISO-8859-5 KOI8-UNI maccyr IBM855 KOI8-U bulgarian: CP1251 ISO-8859-5 IBM855 maccyr ECMA-113 czech: ISO-8859-2 CP1250 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK estonian: ISO-8859-4 CP1257 IBM775 ISO-8859-13 macce baltic croatian: CP1250 ISO-8859-2 IBM852 macce CORK hungarian: ISO-8859-2 CP1250 IBM852 macce CORK lithuanian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic latvian: CP1257 ISO-8859-4 IBM775 ISO-8859-13 macce baltic polish: ISO-8859-2 CP1250 IBM852 macce ISO-8859-13 ISO-8859-16 baltic CORK russian: KOI8-R CP1251 ISO-8859-5 IBM866 maccyr slovak: CP1250 ISO-8859-2 IBM852 KEYBCS2 macce KOI-8_CS_2 CORK slovene: ISO-8859-2 CP1250 IBM852 macce CORK ukrainian: CP1251 IBM855 ISO-8859-5 CP1125 KOI8-U maccyr chinese: GBK BIG5 HZ none:
Инъекция заголовка узла
На серверах, на которых размещено множество веб-сайтов или веб-приложений, заголовок узла становится необходимым для определения того, какой из веб-сайтов или веб-приложений надлежит запросу, каждое из которых известно как виртуальный хост, должен обрабатывать входящий запрос.
Значение заголовка сообщает серверу, на какой виртуальный хост отправлять запрос. Когда сервер получает неверный заголовок узла, он обычно передает его первому виртуальному узлу в списке. Это представляет собой уязвимость, которую злоумышленники могут использовать для отправки произвольных заголовков узлов первому виртуальному узлу на сервере.
Манипуляции с заголовком узла обычно связаны с приложениями PHP, хотя это также может быть сделано с помощью других технологий веб-разработки. Его последствия могут включать выполнение чувствительных операций злоумышленниками, например, сброс пароля и т.д.
Windows Admin Shares
Для перемещения между компьютерами сети могут использоваться общие сетевые ресурсы, доступ к которым имеют только локальные администраторы узла (техника Windows Admin Shares). Среди них есть сетевой ресурс IPC$ (Inter-Process Communication). Он предоставляет интерфейс для удалённого вызова процедур (RPC), через который можно обратиться к менеджеру сервисов Service Control Manager (SCM). Менеджер позволяет запускать и останавливать службы, а также взаимодействовать с ними (техника Service Execution). Эти две техники работают вместе для копирования исполняемого файла на удалённый компьютер и последующего запуска либо для выполнения команд через RPC.
Копирование и запуск исполняемого файла происходят следующим образом. Вначале будет выполнено подключение к ресурсу ADMIN$ (C:\Windows), куда помещается файл. Затем необходимо соединиться с ресурсом IPC$ и обратиться с его помощью к интерфейсу SCM для создания и старта сервиса, который запустит скопированный файл. Всё это происходит поверх протокола SMB (Server Message Block).
Рисунок 1. Обращение к ресурсу ADMIN$
RPC может работать не только поверх SMB, но и поверх чистого TCP. В этом случае последовательность действий такова: злоумышленник подключается к IPC$, обращается к какому-либо сервису и отправляет ему команды.
Рисунок 2. Передача файла psexecsvc.exe
Запросы к SCM выявляются путём разбора вызовов DCE/RPC и поиска обращений к SVCCTL — интерфейсу менеджера сервисов SCM: OpenServiceW(), StartServiceW().
Рисунок 3. Создание нового сервиса с помощью SCM
С помощью RPC реализуются и другие техники, например Account Discovery. Отправка запросов сервису Security Accounts Manager по протоколу SAMR позволяет получить список учётных записей и групп в домене, а перебор идентификаторов SID с помощью службы Local Security Authority (LSARPC) позволяет узнать имена пользователей на удалённом узле.
Рисунок 4. Получение учётных записей с помощью lookupsids
Один из популярных методов закрепления в системе и продвижения по сети — создание задач, выполняемых по расписанию (Scheduled Task), путём отправки запросов сервису планировщика ATSVC.
Рисунок 5. Создание новой задачи в планировщике задач ATSVC
Описанные сценарии вполне легитимны и могут использоваться в повседневной деятельности администраторов, поэтому нужно создавать вспомогательные правила, которые автоматизировали бы обнаружение RPC-вызовов и обращений к сервисам. Эти действия необходимо анализировать в связи с другими событиями, учитывать общий контекст происходящего. Такой анализ может потребовать больших трудозатрат.
Более эффективны точечные правила, которые анализируют сетевой трафик с учётом порядка команд и значения объектов в запросах, характерных для конкретных инструментов. Например, зная последовательность действий и структуру данных, которые определены в коде утилиты psexec из набора Impacket, можно с большой точностью выявить следы её запуска в трафике.
Рисунок 6. Фрагмент кода psexec
Рисунок 7. SMB-пакет, который отправляется в результате выполнения представленного выше участка кода
Как принять участие в Диктанте по информационной безопасности 2021 (иб-диктант.рф)
Всё достаточно просто, вам необходимо перейти на сайт иб-диктант.рф и без какой-либо регистрации нажать на кнопку «Начать тест». Всплывёт ещё одна страничка, содержащая инструкцию, как пройти диктант вот с таким текстом:
Вы перейдете к первому вопросу. К каждому вопросу будет предложено четыре варианта ответа, если в тексте вопроса не указано, что допускается несколько вариантов ответа, то правильный ответ только один. Выберите тот ответ, который считаете правильным, и нажмите на кнопку «Ответить». Вы сразу сможете увидеть, правильно ли вы ответили на вопросы теста, и получить подробное разъяснение. Чтобы перейти к следующему вопросу, нажмите на кнопку «Следующий вопрос». Время прохождения тестирования не ограничено.
Ещё раз нажимаете на кнопку «Начать тест» и появляется первый вопрос. Небольшое дополнение к инструкции от Кулответа. После выбора ответа на вопрос, нажимаете на кнопку «Ответить» и сразу же в режиме онлайн вам покажут правильный вариант ответа на Ибдиктант и информируют о том, почему именно этот вариант верный. Так что не стоит сразу искать ответы к диктанту по информационной безопасности, попробуйте найти их самостоятельно. Но если вы хотите получить сертификат с «золотой медалью», можете воспользоваться описанием ниже, как Кулответ проходил диктант, конечно мы не на все вопросы ответили верно, но в статье ошибки уже исправлены.
Атаки по внедрению SQL-кода
Так в чем же здесь кроется проблема? Ее суть в том, что атакующий может вставить специфичные для языка SQL символы, чтобы вмешаться в логику запроса и выполнить произвольный SQL-код. Например, если атакующий отправит в качестве имени пользователя следующую строку:
Сгенерированный SQL-запрос станет таким:
Последовательность обозначает начало комментария. Добавив эти символы в часть username запроса, атакующий закомментирует оставшуюся его часть. В итоге запрос, по сути, станет следующим:
Такой запрос, независимо от переданного пароля, вернет ID пользователя с правами администратора. Внедрившись в SQL-запрос, атакующий обошел систему аутентификации и может авторизоваться как администратор даже без пароля. В этом и заключается суть внедрения SQL — вставляя особые символы и изменяя структуру SQL-запроса, атакующие могут вынудить БД выполнить незапланированный SQL-код.
Изменение кодировки в Linux
Использование команды iconv
В Linux для конвертации текста из одной кодировки в другую используется команда iconv.
Синтаксис использования iconv имеет следующий вид:
iconv опция iconv опции -f из-кодировки -t в-кодировку файл(ы) ввода -o файлы вывода
Где -f или —from-code означает кодировку исходного файла -t или —to-encoding указывают кодировку нового файла. Флаг -o является необязательным, если его нет, то содержимое документа в новой кодировке будет показано в стандартном выводе.
Чтобы вывести список всех кодировок, запустите команду:
iconv -l
Конвертирование файлов из windows-1251 в UTF-8 кодировку
Далее мы научимся, как конвертировать файлы из одной схемы кодирования (кодировки) в другую. В качестве примера наша команда будет конвертировать из windows-1251 (которая также называется CP1251) в UTF-8 кодировку.
Допустим, у нас есть файл mypoem_draft.txt его содержимое выводится как
������� � �������� ������ ����...
Мы начнём с проверки кодировки символов в файле, просмотрим содержимое файла, выполним конвертирование и просмотрим содержимое файла ещё раз.
enca -i mypoem_draft.txt cat mypoem_draft.txt iconv -f CP1251 -t UTF-8//TRANSLIT mypoem_draft.txt -o poem.txt cat poem.txt enca -i poem.txt
Примечание: если к кодировке, в который мы конвертируем файл добавить строку //IGNORE, то символы, которые невозможно конвертировать, будут отбрасываться и после конвертации показана ошибка.
Если к конечной кодировке добавляется строка //TRANSLIT, конвертируемые символы при необходимости и возможности будут транслитерированы. Это означает, когда символ не может быть представлен в целевом наборе символов, он может быть заменён одним или несколькими выглядящими похоже символами. Символы, которые вне целевого набора символов и не могут быть транслитерированы, в выводе заменяются знаком вопроса (?).
Изменение кодировки программой enca
Программа enca не только умеет определять кодировку, но и может конвертировать текстовые файлы в другую кодировку. Особенностью программы является то, что она не создаёт новый файл, а изменяет кодировку в исходном. Желаемую кодировку нужно указать после ключа -x:
enca -x UTF-8 mypoem_draft.txt
Конвертация строки в правильную кодировку
Команда iconv может конвертировать строки в нужную кодировку. Для этого строка передаётся по стандартному вводу. Достаточно использовать только опцию -f для указания кодировки, в которую должна быть преобразована строка. Т.е. используется команда следующего вида:
echo $'СТРОКА_ДЛЯ_ИЗМЕНЕНИЯ_КОДИРОВКИ' | iconv -f 'ЖЕЛАЕМАЯ_КОДИРОВКА'
Пример:
echo $'\xed\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc' | iconv -f 'Windows-1251' не найден указанный модуль
Также для изменения кодировки применяются программы:
- piconv
- recode
- enconv (другое название enca)
2016: Запуск сайта No More Ransom для борьбы с троянцами-вымогателями
В конце июля 2016 года был запущен сайт No More Ransom — совместная международная инициатива «Лаборатории Касперского», McAfee, Европола и полиции Нидерландов, направленная на борьбу с троянцами-вымогателями. В качестве основных итогов первого года работы проекта компания приводит следующие цифры: расшифровано более 28 тысяч зараженных вредоносным ПО устройств, а сумма сэкономленных на выкупе денег составила 8 миллионов евро.
На сайте http://omoreransom.org можно найти 54 утилиты для расшифровки файлов, разработанные «Лабораторией Касперского» и другими участниками проекта. Эти инструменты успешно борются со 104 семействами вымогателей. За год сайт No More Ransom посетили 1,3 миллиона уникальных пользователей, из них 150 тысяч пришлось на 14 мая этого года — пик эпидемии шифровальщика WannaCry. Платформа No More Ransom доступна уже на 26 языках.
За 2016 год проект поддержали более ста партнеров, среди которых как частные компании, так и правоохранительные органы разных стран. Из недавно присоединившихся — банковский конгломерат Barclays, бельгийский CERT (CERT.BE), и Глобальный форум по киберэкспертизе (Global Forum on Cyber Expertise, GFCE), а также правоохранительные органы Чехии, Греции, Гонконга и Ирана.
Боремся с обфускацией
Перед злоумышленниками особенно остро стоит проблема обхода средств защиты, поскольку для успешного развития атаки внутри корпоративной сети необходимо оставаться незамеченным как можно дольше. Первым эшелоном выступают средства сигнатурного анализа трафика, потому что именно через них проходит сетевой поток данных начальной компрометации и загрузки модулей на дальнейших стадиях.
Средства сигнатурного обнаружения выявляют уже известные угрозы. Аналитики проводят исследования, определяют общие признаки и на этом основании составляют правила и сигнатуры. В противовес злоумышленники используют техники обфускации кода, кодирования и шифрования. Это либо разрушает искомый паттерн, либо скрывает его от средства защиты.
Как правило, вредоносные программы используют те или иные методы кодирования информации. Наиболее распространёнными являются Base-подобные кодировки, чаще всего это — Base64. К примеру, ответ от агента Cobalt Strike содержит данные внутри POST-запроса, закодированные стандартным Base64. При исследовании сетевого трафика надлежит определять использование как минимум стандартной Base64-кодировки и применять правила анализа уже к декодированному содержимому.
Рисунок 17. Передача данных в кодировке Base64
Рисунок 18. Декодирование исполняемого файла
Нужно учитывать, что некоторые хакерские инструменты умеют определять выполнение в виртуализированной среде. В таком случае они не запускают вредоносные функции и ведут себя как легитимное ПО. Поэтому песочница должна принимать меры по сокрытию своего присутствия и распознавать техники обхода. Виртуальные машины в песочнице должны моделировать пользовательскую рабочую станцию. Для этого устанавливается прикладное ПО, образы виртуальных машин наполняются пользовательскими файлами так, чтобы они были похожи на рабочие компьютеры потенциальных жертв внутри организации. Вредоносная программа может проверить наличие характерных для виртуальных машин процессов, ключей реестра и файлов, размер жёсткого диска и оперативной памяти, наличие перемещений курсора мыши. Соответствующие запросы необходимо перехватывать на уровне ядра, чтобы сделать бесполезными проверки с уровня пользователя.
В случае сложных целенаправленных кампаний (APT-атак) соответствующие индикаторы компрометации могут быть ещё неизвестны на момент атаки
Поэтому важно проводить ретроспективный анализ файлов при появлении новых данных
Предотвращение инъекционных атак
Как мы видели в этой статье, все инъекционные атаки направлены на серверы и приложения с открытым доступом для любого пользователя Интернета. Ответственность за предотвращение этих атак распределяется между разработчиками приложений и администраторами серверов.
Большинство атак допускаются на серверах с языком программирования PHP и если вы хотите защитить свое php приложение то, прочитайте о 6 советов по безопасности для защиты вашего PHP сайта.
Разработчики приложений должны знать риски, связанные с неправильной проверкой пользовательского ввода, и изучать лучшие практики для очистки пользовательского ввода в целях предотвращения рисков.
Администраторы серверов должны периодически проверять свои системы, чтобы обнаруживать уязвимости и исправлять их как можно скорее. Существует много вариантов выполнения этих аудитов, как по запросу, так и автоматически.
Обнаружение атаки
Действия в случае обнаружения вирусной атаки должны быть известны не только специалистам центра мониторинга (SOC) или ИБ-отдела, но и всем сотрудникам компании
Компьютер важно как можно быстрее изолировать от сетевой инфраструктуры, не выключая питание, а все предупреждения системы — зафиксировать на фотографиях (например, с камеры мобильного телефона). Пользователь, на устройстве которого обнаружена вредоносная программа, должен зафиксировать все действия, которые могли привести к заражению, и обратиться в службу технической поддержки
При описании инцидента можно ориентироваться на следующие опорные вопросы:
- Какие странности в поведении компьютера или программ вы заметили?
- Что вы делали перед тем, как обнаружили заражение? Работали с файлами, внешними носителями, сетевыми папками, открывали письма в почте, работали в интернете?
- Как часто и каким образом проявляются признаки заражения?
- К какой сети вы были подключены в момент заражения (домашняя сеть, публичный Wi-Fi, интернет, VPN и т. д.)?
- Какая операционная система используется на компьютере, как давно она обновлялась?
- Каково имя вашего компьютера?
- С какой учётной записью вы работали в этот момент?
- К каким данным у вас есть доступ?
- Кому вы сообщили об инциденте и в какой форме?
Исследуем хакерский инструментарий
В большинстве своём злоумышленники используют уже готовые фреймворки, поэтому в поиске подозрительного трафика важно знать особенности, характерные для различных инструментов. Так, популярный среди киберпреступников фреймворк Koadic передаёт полезную нагрузку в виде ответа веб-сервера внутри HTML
Сама полезная нагрузка зашифрована, а к расшифровщику применены техники обфускации кода: случайные имена пользовательских функций, их аргументов и переменных. Зашифрованный скрипт дополнительно закодирован. Для обхода средств обнаружения вторжений (IDS) авторы скрывают имя функции, используемой для выполнения расшифрованного скрипта.
Рисунок 19. Обфускация «полезной» нагрузки в Koadic
Ниже представлен ответ агента Koadic командному серверу. Часть служебной информации, например тип исполненного задания, создатели хранят в собственных HTTP-заголовках. Идентификаторы сессии и задачи устанавливаются случайным образом, а путь к библиотеке mshtml обфусцирован для обхода сигнатур IDS, но вид URI всё равно является одним из индикаторов, по которому можно узнать Koadic.
Рисунок 20. Запрос, свидетельствующий об использовании Koadic
Опишем несколько подходов, которые помогают выявить шифрованное соединение с использованием Meterpeter из состава фреймворка Metasploit.
Долгое время хорошо работало правило детектирования Meterpreter HTTPS Reverse Shell, которое анализировало SSL-сертификат защищённого соединения. Дело в том, что в сертификате, сгенерированном через Metasploit, поля Distinguished Name (DN) Issuer и DN Subject содержат идентичные наборы из 6 RDN, расположенных в фиксированном порядке.
Рисунок 21. Содержимое полей DN Issuer и DN Subject
Другим примером детектирования служит обнаружение Meterpreter Reverse TCP Shell. В начале соединения происходит отправка пакета определённой длины, внутри которого передаётся публичный ключ RSA-2048. Такой пакет дополнительно защищён шифром гаммирования (XOR), однако из-за малой длины гаммы в структуре пакета можно выявить повторяющиеся части. На рисунке ниже выделены такие фрагменты, а также сам зашифрованный ключ.
Рисунок 22. Обнаружение Meterpreter Reverse TCP Shell
Благодаря большому количеству нулей в начале шифруемых данных и малой длине гаммы можно без труда найти ключ и посмотреть, что находится за XOR.
Рисунок 23. Расшифровка публичного ключа
Для фреймворка Cobalt Strike также были выявлены неизменные паттерны, связанные с особенностями используемого SSL-сертификата, которые позволяют обнаружить такую коммуникацию.
Инъекции почтовых команд
Этот метод атаки может использоваться для эксплуатации почтовых серверов и приложений, которые создают операторы IMAP или SMTP с неправильно проверенным пользовательским вводом.
Иногда серверы IMAP и SMTP не имеют надежной защиты от атак, как это было бы в случае большинства веб-серверов, и, следовательно, могли бы быть более уязвимыми. Входя через почтовый сервер, злоумышленники могут обойти ограничения, такие как капчи, ограниченное количество запросов и т.д.
Чтобы использовать SMTP-сервер, злоумышленникам нужна действующая учетная запись электронной почты для отправки сообщений с введенными командами. Если сервер уязвим, он будет отвечать на запросы злоумышленников, позволяя им, например, переопределить ограничения сервера и использовать свои службы для рассылки спама.
Внедрение IMAP может осуществляться в основном в приложениях веб-почты с использованием функции чтения сообщений. В этих случаях атаку можно выполнить, просто введя в адресной строке веб-браузера URL-адрес с введенными командами.
Защищайтесь эффективно!
Как вы видите, есть немало вариантов защиты от внедрения SQL-кода. Лучший способ — это по возможности использовать везде подготовленные инструкции или же утвержденный список, если такие инструкции применить невозможно. Приведение типов можно рассмотреть в качестве альтернативы утвержденному списку, но опять же, если нет возможности использовать подготовленные инструкции. Чистку ввода не рекомендуется задействовать в качестве единственного метода защиты от внедрений SQL-кода. Этот метод следует применять в совокупности с подготовленными инструкциями и утвержденным списком, чтобы добиться наилучшей безопасности, а также устранить ряд других web-уязвимостей.
- Развертывание Flask приложения на Heroku и подключение к БД MySQL - JawsDB
- Использование SQLite с Rust и Actix Web (с тестами)
- SQL в науке о данных
Читайте нас в Telegram, VK и
Перевод статьи Vickie Li: Learn About SQL Injection Attacks
Предотвращение дальнейшего заражения
Работу по сдерживанию заражения важно начинать параллельно расследованию. Так вы сможете максимально сократить все возможные последствия инцидента
При этом стоит понимать, что неверный порядок действий способен усугубить ситуацию. В идеале компания должна иметь и довести до всех пользователей чёткий план действий на случай массового заражения инфраструктуры. Это — такое же непреложное правило безопасности, как наличие огнетушителя и плана эвакуации на случай пожара.
Приоритетными являются задачи, связанные со сдерживанием распространения вредоносных программ. Основной механизм защиты в этом случае — изоляция заражённых систем и учётных записей от общей инфраструктуры, особенно критически важных её участков. Что следует сделать:
- Отключить узлы от сети или заблокировать их на сетевом уровне.
- Произвести блокировку пользователей или групп, попавших в очаг заражения.
- Принудительно отключить сетевые папки, в том числе неинфицированные.
- Изолировать СУБД.
- Изолировать системы хранения резервных копий и поставить ограничения на запись.
- Произвести блокировку командных центров на внешнем периметре сети.
- Удалить заражённые письма из почтовых ящиков пользователей.
- Настроить средства защиты уровня узла на обнаружение и блокировку действий вредоносных программ.
- Установить критически важные обновления, закрывающие эксплуатируемые вредоносной программой уязвимости.
При наличии полноценного SOC большая часть этих действий выполняется с использованием средств автоматизации, что сильно сокращает время реагирования и, соответственно, может уменьшить масштабы бедствия.
Pass the Hash
Злоумышленнику не обязательно знать пароль пользователя, чтобы получить доступ к какому-либо сервису. Техника Pass the Hash эксплуатирует особенности протокола аутентификации NTLM, которые позволяют подключаться к ресурсам даже при наличии хеша пароля. Если же в инфраструктуре используется механизм аутентификации Kerberos, злоумышленник может прибегнуть к атаке Overpass the Hash, которая является развитием этой техники.
Протокол Kerberos был разработан специально для того, чтобы пароли пользователей не передавались по сети. Для этого на своей машине пользователь хешем своего пароля шифрует запрос на аутентификацию. В ответ Key Distribution Center выдаёт ему билет на получение других билетов — так называемый Ticket-Granting Ticket (TGT). Теперь клиент считается аутентифицированным, и в течение десяти часов он может обращаться за билетами для доступа к другим сервисам.
Последовательность действий при атаке Overpass the Hash состоит в следующем. Злоумышленник получает хеш пароля пользователя (например, с помощью техники Credential Dumping), шифрует им запрос на аутентификацию и выпускает для себя билет TGT. Затем он запрашивает билет для доступа к интересующему сервису и успешно в нём авторизуется.
Рисунок 10. Использование RC4 в атаке
При таком способе выявления возможно большое количество ложных срабатываний. Для снижения количества ошибок потребуется дополнительный поведенческий анализ.
В то же время в трафике можно обнаружить и инструменты, с помощью которых осуществляются атаки Credential Dumping и Pass the Hash, например mimikatz. Многие киберпреступники используют в своих целях готовые фреймворки для тестирования на проникновение, которые подгружают дополнительные модули разными способами. В частности, Koadic, применяемый в атаках MuddyWater, передаёт mimikatz на заражённый узел по протоколу HTTP в виде закодированной в Base64 библиотеки, сериализованного .NET-класса, который будет её внедрять, и аргументов для запуска утилиты. Результат выполнения передаётся по сети в открытом виде также по протоколу HTTP.
XSS (межсайтовый скриптинг)
Всякий раз, когда приложение принимает ввод от пользователя, который оно генерирует, не проверяя и не кодируя его, оно дает злоумышленнику возможность отправлять вредоносный код другому конечному пользователю.
Атаки с использованием межсайтовых скриптов (XSS) используют эти возможности для внедрения вредоносных сценариев в надежные веб-сайты, которые в конечном итоге отправляются другим пользователям приложения, которые становятся жертвами злоумышленника.
Браузер жертвы выполнит вредоносный скрипт, не зная, что ему нельзя доверять. Поэтому браузер разрешает ему получать доступ к токенам сеансов, файлам cookie или конфиденциальной информации, хранящейся в браузере. При правильном программировании скриптов могут даже переписать содержимое файла HTML.
Опасность не только в SELECT
Внедрение SQL не ограничивается инструкциями . Атакующие могут также делать внедрение в инструкции для обновления записи, для их удаления и для создания в таблице новых записей. Предположим, к примеру, что пользователи могут менять свои пароли, передавая их новые версии через HTTP-форму.
Эта форма приведет к выполнению сервером SQL-запроса UPDATE с новым паролем для текущего авторизованного пользователя, которым в данном случае является пользователем с ID .
Атакующие могут контролировать раздел инструкции . Что если они отправят новый пароль, например такой:
Этот запрос приведет к следующему изменению :
В этом запросе секция закомментирована, а значит запрос изменит все пароли в таблице Users на “password12345”. После этого атакующий сможет с помощью этого пароля авторизовываться от лица любого пользователя.
Режим предупреждения для пользователей
(NEW!) Перед предупреждением о возможностях режима правила уменьшения поверхности атаки, включенные, можно настроить в режиме аудита или режиме блокировки. В новом режиме предупреждения каждый раз, когда содержимое блокируется правилом уменьшения поверхности атаки, пользователи видят диалоговое окно, которое указывает на блокировку контента. Диалоговое окно также предлагает пользователю возможность разблокировать контент. Затем пользователь может повторить свое действие, и операция завершится. Когда пользователь разблокирует контент, содержимое будет разблокировано в течение 24 часов, а затем блокируется резюме.
Режим Warn помогает организации иметь правила уменьшения поверхности атаки, не мешая пользователям получать доступ к контенту, необходимому для выполнения задач.
Требования к режиму предупреждения для работы
Режим Warn поддерживается на устройствах, работающих в следующих версиях Windows:
- Windows 10, версия 1809 или более поздней
- Windows 11
- Windows Server версии 1809 или более поздней версии
антивирусная программа в Microsoft Defender должна работать с защитой в режиме реального времени в
Кроме того, антивирусных программ установлены.
- Минимальное требование к выпуску платформы:
- Минимальное требование к выпуску двигателя:
Дополнительные сведения и обновления см. в сайте Update for Microsoft Defender antimalware platform.
Случаи, когда режим предупреждения не поддерживается
Режим Warn не поддерживается для трех правил уменьшения поверхности атаки при настройке Microsoft Endpoint Manager. (Если вы используете групповую политику для настройки правил уменьшения поверхности атаки, поддерживается режим предупреждения.) Три правила, которые не поддерживают режим предупреждения при настройке Microsoft Endpoint Manager, являются следующими:
- (GUID)
- события WMI (GUID)
- (GUID)
Кроме того, режим предупреждения не поддерживается на устройствах с более старыми версиями Windows. В этих случаях правила уменьшения поверхности атаки, настроенные для работы в режиме предупреждения, будут работать в режиме блокировки.
Credential Dumping
Существует несколько подходов к реализации Credential Dumping, которые можно отследить путём анализа трафика. Один из них — это атака DCSync, то есть копирование учётных записей пользователей на поддельный домен-контроллер. Атака выявляется с помощью разбора RPC-вызовов, которые передаются по сети, и поиска запросов DsGetNCChanges.
Рисунок 11. Обнаружение атаки DCSync
Кроме того, злоумышленники могут попытаться скопировать файл NTDS.dit, содержащий данные об учётных записях. Поэтому необходимо отслеживать передачу этого файла по сети. Ещё один способ реализовать Credential Dumping — это удалённый доступ к реестру по протоколу WINREG. Запросы на доступ к ключам SAM, SECURITY и LSA могут свидетельствовать о попытке получить учётные данные.
Где искать следы атаки
Эффективным методом выявления атаки является мониторинг и анализ событий, происходящих в инфраструктуре уже после проникновения злоумышленников в локальную сеть, со своевременным реагированием на инциденты. Однако здесь есть свои особенности. Мониторинг событий на конечных узлах позволяет обнаружить факт компрометации, но для того чтобы восстановить цепочку атаки, потребуется отследить перемещения злоумышленников между узлами сети и выявить подключения ко внешним командным серверам.
Анализ сетевой активности дополняет картину происходящего в инфраструктуре. Если злоумышленники получили возможность выполнять команды в пределах одного компьютера, то перед ними стоят две задачи: установить связь с командным сервером и начать продвигаться по сети. Все эти действия оставляют следы в сетевом трафике, а скрыть их становится сложнее. Например, если на отдельном узле иногда достаточно воспользоваться упаковщиком для сокрытия вредоносной утилиты, то для того чтобы полностью скрыть идентифицирующие утилиту сетевые запросы к другим узлам или командному серверу, потребуется изменить логику её работы. Кроме того, в атаках часто применяются бесфайловые вредоносные программы (fileless malware), которые исполняются сразу в оперативной памяти. Тело такого объекта не сохраняется на жёстком диске, а в некоторых случаях не создаётся также никаких новых процессов — вредоносный код внедряется в один из уже работающих. При этом сохраняются все функции хакерской программы, в том числе — коммуникации с командным центром.
Мы рассмотрим несколько популярных техник, которые могут выдать присутствие злоумышленников, и покажем, как обнаружить их в сетевом трафике.