Категория > Новости > Herpaderping и Ghosting. Изучаем два новых способа скрывать процессы от антивирусов - «Новости»
Herpaderping и Ghosting. Изучаем два новых способа скрывать процессы от антивирусов - «Новости»23-04-2022, 00:00. Автор: Durham |
Маскируем запуск процессов при помощи Process Doppelgänging». Для простоты в наших экспериментах мы будем использовать Microsoft Defender и Mimikatz. warningСтатья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону. Особенности процессовКак антивирус узнает, что в системе был запущен какой‑либо процесс? Microsoft дает возможность разработчикам антивирусных решений получать через API нужные им события (например, Вся штука в том, что уведомление Важно пониматьИсполняемый файл — это не процесс. Исполняемый файл может быть связан со множеством процессов (в Task Manager можно легко проследить, сколько процессов связано, например, с Процесс содержит виртуальное адресное пространство, исполняемый код, открытые дескрипторы для системных объектов, контекст безопасности, уникальный идентификатор процесса, переменные среды, класс приоритета, минимальный и максимальный размеры рабочего множества и по крайней мере один поток выполнения. Поток — это базовая единица, в которой операционная система выделяет процессорное время. Поток может выполнять любую часть кода процесса, включая части, которые в данный момент выполняются другим потоком. Создание процессаРассмотрим создание процесса по шагам.
Важный момент: процессы запускаются из исполняемых файлов, но информация внутри исполняемого файла может меняться относительного того, что находится в image section (так как она кешируется memory manager). Сканирование процесса в поисках зловредаКак уже было сказано, антивирусы могут получать уведомления о событиях создания процессов и потоков (PsSetCreateProcessNotifyRoutineEx и PsSetCreateThreadNotifyRoutineEx). Выглядит это примерно так:
typedef struct _PS_CREATE_NOTIFY_INFO {
SIZE_T Size;
union {
ULONG Flags;
struct {
ULONG FileOpenNameAvailable : 1;
ULONG IsSubsystemProcess : 1;
ULONG Reserved : 30;
};
};
HANDLE ParentProcessId;
CLIENT_ID CreatingThreadId;
struct _FILE_OBJECT *FileObject;
PCUNICODE_STRING ImageFileName;
PCUNICODE_STRING CommandLine;
NTSTATUS CreationStatus;
} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;
Перейти обратно к новости |