Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
А если предположить, что существуют такие «слепые» зоны, оставаясь в пределах которых можно безнаказанно творить что заблагорассудится (в границах разумного) и не бояться при этом спалить весь редтиминг? Что ж, такие зоны действительно есть, и это никакой не Ring 0, а обычный интерпретатор Python! На питоне написано огромное количество наступательных утилит, но запускать их принято с удаленной машины. Почему? Ах да, зависимости...
Сегодня мы с тобой разберем подход Living-Off-the-Blindspot, представленный исследователем Диего Каприотти (@naksyn) на недавнем DEF CON 30.
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Давай сперва окинем взором теорию и разберемся, почему твой антивирус (или EDR) знает о тебе все, потом поймем принцип бесфайлового импорта модулей в Python, а затем перейдем к рассмотрению его реализации в Pyramid. Для первых двух частей я воспользуюсь слайдами оригинального выступления.
Первое, на чем хочется заострить внимание, — это две самые любимые техники разработчиков защитного софта для анализа поведения программ:
Чтобы отслеживать злоупотребление механизмами Windows API, твой антивирус, скорее всего, патчит джампами реализации функций из библиотек user32.
и ntdll.
после их загрузки в память анализируемым процессом. После вызова таких, казалось бы, оригинальных функций WinAPI ничего не подозревающий процессор наталкивается на соответствующий джамп, указывающий на область памяти уже подгруженной библиотеки средства защиты, и следует по нему, в результате чего контроль над потоком выполнения программы передается антивирусу.
Теперь «вирусоненавистник» может как угодно измываться над твоим процессом, исследуя его виртуальную память и проводя другие одному богу известные проверки, по результатам которых будет вынесен вердикт: «виновен» (заблокировать выполнение API-функции или, может, вообще убить процесс) или «оправдан» («отпустить» поток выполнения исходной программе).
Что‑то похожее мы проворачивали, когда экспериментировали с техникой флуктуирующего шелл‑кода. Тогда наш джамп (патч для перехвата контроля над функцией kernel32!
) выглядел примерно так:
/*
{ 0x49, 0xBA, 0x37, 0x13, 0xD3, 0xC0, 0x4D, 0xD3, 0x37, 0x13, 0x41, 0xFF, 0xE2 }
Disassembly:
0: 49 ba 37 13 d3 c0 4d movabs r10,0x1337d34dc0d31337
7: d3 37 13
a: 41 ff e2 jmp r10
*/
uint8_t trampoline[] = {
0x49, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // mov r10, addr
0x41, 0xFF, 0xE2// jmp r10
};
Я уже рекомендовал статью @ShitSecure A tale of EDR bypass methods, где доступным языком разобраны популярные приемы, которые применяются средствами защиты, и способы их обхода. Повторение — мать учения, и к тому же там тоже есть про хуки в userland.
Куда более мощный механизм сохранения контроля над поведением процессов реализуется через ядерный механизм Notification Callback Routines. Он предоставляет интерфейсы для реализации функций подписки на потенциально опасные события, например вызов ntdll!
. Когда получено уведомление о создании нового процесса, EDR бежит внедрять свои библиотеки в целевой процесс, чтобы в том числе иметь возможность патчить стандартные библиотеки Windows API, как описано в предыдущем разделе.
Другой показательный пример того, зачем нужны Kernel Callbacks, — таймлайн запрета получения доступа к памяти процесса lsass.
, описанный в другом крутом ресерче с DEF CON 30 — EDR detection mechanisms and bypass techniques with EDRSandBlast авторов @th3m4ks и @_Qazeer.
Так, получая уведомления о нежелательных событиях на каждом из этапов дампа LSASS (создание процесса дампера, получение им хендла lsass.
, чтение памяти lsass.
, создание файла с результирующим слепком памяти), антивирус или EDR может выстроить многоуровневую защиту от получения злоумышленником учетных данных из памяти сетевого узла.
Существует куча других подходов, как предотвратить вредоносную активность на конечных точках, например сканирование памяти запущенных процессов по планировщику, но для базового представления нашей темы этого будет достаточно.
В исходной статье автор разделяет стратегии байпаса EDR на четыре основные области. Мы сократим их до трех:
sleep 100500
, выполняя по одной команде в сутки, думать о рисках каждого введенного в консоль символа. Это сложно (очень). Обычно это можно себе позволить, если весь твой инструментарий кастомный, но, как люди используют ту же «Кобу» (запрещенный на территории РФ инструмент) на проектах, я пока так и не понял.Что происходит внутри интерпретатора Python и как трактовать те или иные маркеры его поведения? «А черт его знает...» — так ответят не только большинство из нас, но и многие вендоры защитного ПО. Для нас прелесть этого языка в том, что, начиная с версии 3.7, официальная сборка интерпретатора поставляется в standalone-виде, то есть не требует установки на хост.
Кроме того, до тех пор, пока мы остаемся в пределах интерпретатора (то есть не выполняем инжекты в другие процессы или не создаем новых), вся телеметрия исходит от подписанного python.
, а это не облегчает жизнь защитному ПО, когда надо разбираться, что из этого есть что.
Итак, что же нам нужно, чтобы вооружить standalone-интерпретатор Python?
|
|