Уклонение от средств защиты: 1 Часть.

Уклонение от средств защиты: 1 Часть.

Life-Hack - Linux/Хакинг/Хакер/ИБ/Osint

Сокрытие процессов от антивирусного программного обеспечения (AV) - важная задача не только для хакеров, создающих вирусы, но и для специалистов по тестированию на проникновение. Существует много способов сокрытия процессов, и одним из них является Herpaderping.

Microsoft позволяет раз­работ­чикам анти­вирус­ного ПО получать с помощью API все нуж­ные им события нап­ример:

PsSetCreateProcessNotifyRoutineEx

Ког­да соз­дает­ся про­цесс, AV сра­зу узна­ет об этом, получая соот­ветс­тву­ющий Callback. Теперь он может анализировать исполня­емый файл и принять решение, раз­решить данный про­цесс или нет.

Про­цесс содер­жит вир­туаль­ное адресное прос­транс­тво, исполня­емый код, откры­тые дес­крип­торы для сис­темных объ­ектов, кон­текст безопас­ности, уни­каль­ный иден­тифика­тор про­цес­са, перемен­ные сре­ды, класс при­ори­тета, минималь­ный и мак­сималь­ный раз­меры рабоче­го мно­жес­тва и как минимум один поток выпол­нения.

Суть в том, что уве­дом­ление CreateProcessNotify — совсем не про соз­дание про­цес­са. Callback полетит в тот момент, ког­да внут­ри данного про­цес­са воз­никнет пер­вый поток (thread). По­ток — это базовая еди­ница, в которой ОС выделя­ет про­цес­сорное вре­мя. Поток может выпол­нять любую часть кода про­цес­са.

Рас­смот­рим этапы создания про­цес­са:

1) В начале для исполня­емо­го фай­ла мы получа­ем дес­крип­тор (handle), который запус­каем, нап­ример таким образом:

hFile = CreateFile(“C:\Windows\System32\svchost.exe”)

2) Соз­дается image section нап­ример:

hSection = NtCreateSection(hFile, SEC_IMAGE)

3) Image section пред­став­ляет собой осо­бый раз­дел и слу­жит для отоб­ражения фай­ла (или час­ти фай­ла) в память. Раз­дел соот­ветс­тву­ет PE-фай­лам и может быть соз­дан толь­ко в них. Соз­дается про­цесс в image section нап­ример:

hProcess = NtCreateProcessEx(hSection)

4) Наз­нача­ются аргу­мен­ты и перемен­ные сре­ды нап­ример:

CreateEnvironmentBlock/NtWriteVirtualMemory

5) Соз­дается поток для выпол­нения про­цес­са нап­ример:

NtCreateThreadEx  

Имейте ввиду: про­цес­сы запус­кают­ся из исполня­емых фай­лов, но информа­ция внут­ри исполня­емо­го фай­ла может менять­ся отно­ситель­ного того, что находит­ся в image section (так как она кеширу­ется memory manager).

Herpaderping

Нам потребуется mimikatz.exe, целевой исполняемый файл (тут можно указывать что угодно, у нас это будет hack.exe) и любой файл, не вызывающий подозрений у антивирусных программ.

Herpaderping по шагам:

1) Write — Создаем и открываем hack.exe, копируем в него mimikatz.exe, дескриптор не закрываем.

  2) Map — Создаем image section и мапим содержимое в память.

3) Modify — Создаем процесс с дескриптором ранее созданного раздела. После этого меняем содержимое файла hack.exe, копируя туда что‑нибудь легитимное. Помните важный момент из раздела про создание процесса? Так вот это он и есть: с этого момента то, что у нас в памяти, и то, что хранится в файле, отличается.

4) Execute — Создаем initial thread. Только сейчас антивирусу летит process creation callback. Различие содержимого в файле и в памяти сводит с ума AV, он не может понять, можно ли разрешать выполнение этого процесса.

5) Close — Закрываем открытый дескриптор.

Herpaderping на практике

Клонирум про­ект из GitHub и собира­ем его:

git clone https://github.com/jxy-s/herpaderping.git
cd .\herpaderping\
git submodule update --init –recursive

Вы­пол­няем коман­ду:

ProcessHerpaderping.exe mimikatz.exe hack.exe lsass.exe

Как мы видим, все выпол­нилось успешно, AV не сре­аги­ровал. Давайте взгля­нем, что покажет нам ProcessHacker.

У нас исполня­ется не mimikatz.exe, а hack.exe. А еще у нашего при­ложе­ния hack.exe есть сер­тификат, выдан­ный Microsoft.

Ну а сам hack.exe спо­кой­но лежит на рабочем сто­ле.


Report Page