• XSS.stack #1 – первый литературный журнал от юзеров форума

Как чистить детекты в рантайме (C++)?

Снимать хуки с ntdll смысла нет, если ты об этом, ав могут забить тревогу, если увидят, что ты их снял
Для этого вместо вызовов NtApi нужно делать прямые вызовы в ядро, через сисколы, и на подсистеме WOW64 через HG
Это позволяет не снимая юзермод хуки обойти логгинг на уровне ntdll, если там стоят хуки (а они там стоят обычно)
В ядро сейчас ав хуки свои не ставят, потому что заморочено PG байпасить, тем более для аверов, они не такие хитровымудреные, как блекхеты
Они обычно регистрируют свои колбэки, что-то вроде официального метода перехвата, который разрешает винда, но поддерживается там не такое множество функций, как хотелось бы аверам, создание процесса, доступ к файлам, в общем по пальцам пересчитать можно
Да и в основном такие заморочки в EDR решениях, обычные десктопные ав вроде авиры или eset хукают юзермод и все
Так что вызовы напрямую в ядро через сисколы решают этот вопрос

А так рандомизируй рантайм, делай фейковые вызовы апишек, что бы поведение было "расплывчатым"
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Кроме хука Ntdll, обхода AMSI/ETW что можно еще сделать?
Инжект в легитимный процесс системы, при условии, что сам алгоритм инжекта не спалится, или COM/DLL-HiJacking, ну или использование lolbin'ов.
 
Для этого вместо вызовов NtApi нужно делать прямые вызовы в ядро, через сисколы, и на подсистеме WOW64 через HG
сисколы и hg по твоему не палево?)) их не использует ни один легитивный софт))) это сразу алерт для АВ. то, что ваш стилак не палится, это просто еще не внесли сигнатуру на сиську.
и хуки могут ставить и в ядре. их тоже сискол обойдет?)))))
 
124124
и хуки могут ставить и в ядре. их тоже сискол обойдет?)))))
Дурачок, снова еб%ло грязью залепил и читаешь слово через 5, перечитывай беги, все обосновано в сообщении
iu


В ядро сейчас ав хуки свои не ставят, потому что заморочено PG байпасить, тем более для аверов, они не такие хитровымудреные, как блекхеты
Они обычно регистрируют свои колбэки, что-то вроде официального метода перехвата
Да что я тебе о PG, ты даже не знаешь что это такое, эксперт диванный.

сисколы и hg по твоему не палево?)) их не использует ни один легитивный софт))) это сразу алерт для АВ
Давай задетекти мне HG сигнатурно, который морфится на уровне ассемблера, не имеет никаких постоянных сигнатур и к тому же отрабатывает в виде шеллкода, который изначально поширован, а ключик генерится в антиэмуле

просто еще не внесли сигнатуру на сиську
Еб%ло у тебя треснет такое детектить сигнатурно, реморф на каждый билд, нет ни одной цепочки более 10-15 байт, которая бы была одинаковой от версии к версии, а по поведению его не отследить, но что можно доказать тупому животному из болота ? Оно все время будет бросаться грязью и говном в проходящих мимо.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну, справедливости ради, какая-то идска палила вызов syscall не из секции .text ntdll.dll, я, если вспомню, где я это видел, сброшу сюда. Не помню, каким образом это перехватывалось, вероятно, что в ядре. Но обходилось это достаточно просто: находился любой незапатченный фрагмент ntdll с инструкцией syscall, а сисколлы малварки вместо самой инструкции syscall имели jmp на найденную незапатченную инструкцию.
 
Далеко не всегда так, кому-то не в заморочку. Вот, например Аваст в ядре колдует и ничего, живой.
Все АВ сейчас подписываются на колбэки, НО НИ В КОЕМ СЛУЧАЕ НЕ ХУЧАТ классическим методом через сплайсинг или замену адресов вызвов в ssdt (в юзермоде аналог техники хук IAT)
PG сразу по руками бьет, и самое долгое время, которое проработает система после спласинга или патча SSDT в ядре = 10 минут, потом гарантированный BSOD
1672957354493.png



Примеры и прототипы некоторых колбэков

События создания/завершения процессов и потоков​

За подписку на события создания/завершения процессов отвечают следующие функции NTAPI
C:
NTSTATUS PsSetCreateProcessNotifyRoutine(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
  [in] BOOLEAN Remove
);

NTSTATUS PsSetCreateProcessNotifyRoutineEx(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
  [in] BOOLEAN Remove
);

NTSTATUS PsSetCreateProcessNotifyRoutineEx2(
    [in] PSCREATEPROCESSNOTIFYTYPE NotifyType,
  [in] PVOID NotifyInformation,
  [in] BOOLEAN Remove
);

Аналогично происходит подписка/удаление подписки на события о создании/завершении потоков с помощью NTAPI:
C:
NTSTATUS PsSetCreateThreadNotifyRoutine(
    [in] PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);

NTSTATUS PsRemoveCreateThreadNotifyRoutine(
    [in] PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine
);

Минифильтры файловой системы​

Регистрация драйвера минифильтра файловой системы выполняется с помощью следующей NTAPI:
C:
NTSTATUS FLTNTAPI FltRegisterFilter(
    [in]  PDRIVER_OBJECT Driver,
  [in]  const FLT_REGISTRATION *Registration,
  [out] PFLT_FILTER *RetFilter
);

Все эти колбэки можно по пальцам пересчитать, их очень мало, в ядре сейчас нет легального метода с рабочим PG хучить все что вздумается.​

Именно поэтому через через сисколы и HG можно обойти очень много чего.​

 
Последнее редактирование:
сисколы и hg по твоему не палево?)) их не использует ни один легитивный софт))) это сразу алерт для АВ. то, что ваш стилак не палится, это просто еще не внесли сигнатуру на сиську.
и хуки могут ставить и в ядре. их тоже сискол обойдет?)))))
Не могу сказать точно, но где то видел что некоторые игровые движки используют сисколы ради скорости, но возможно это все байки.
Ну, справедливости ради, какая-то идска палила вызов syscall не из секции .text ntdll.dll, я, если вспомню, где я это видел, сброшу сюда. Не помню, каким образом это перехватывалось, вероятно, что в ядре. Но обходилось это достаточно просто: находился любой незапатченный фрагмент ntdll с инструкцией syscall, а сисколлы малварки вместо самой инструкции syscall имели jmp на найденную незапатченную инструкцию.
Кстати интерестно было бы про это почитать, если найдешь ссылку.
 
Ну, справедливости ради, какая-то идска палила вызов syscall не из секции .text ntdll.dll, я, если вспомню, где я это видел, сброшу сюда. Не помню, каким образом это перехватывалось, вероятно, что в ядре. Но обходилось это достаточно просто: находился любой незапатченный фрагмент ntdll с инструкцией syscall, а сисколлы малварки вместо самой инструкции syscall имели jmp на найденную незапатченную инструкцию.
Да даже кодкейв найти, суммарно в ntdll на любой винде найдется пустое место между функциями что бы расположить там шеллкод в виде стаба нужного сискола, а номерок патчить при желании на нужный перед вызовом, либо наклепать таких стабов под все используемые в твоем приложении сисколы
Вот для примера ntdll из под старенькой XP, предостаточно места, что бы разместить там хоть 10 стабов, и это заведомо искались участки длиной более 10 байт, что бы было 5 на полезную команду и 5 на прыжок к следующему участку
1672957931266.png

ps. возможно EDR еще проверяют принадлежит ли адрес вызова какой-то функции из экспорта ntdll, тогда твой метод с заменой именно уже существующего стаба, который не похукан и не используется выглядит намного предпочтительней
 
Пожалуйста, обратите внимание, что пользователь заблокирован
что ваш стилак не палится, это просто еще не внесли сигнатуру на сиську.
А что кстати на нее сигнатуру вешать, по сути то они могли бы наверное на стаб сискола который не в нтдлл вешать сигнатуру сразу, или просто на его вызов(там специфичный опкод), почему не вешают тогда? Наверное потому что это ни разу так не работает? Опущу вопрос почему "ваш", если я один разработчик. Тебе нужно чуть-чуть лучше начать разбираться в вопросе. Чтобы это сделать нужно учиться, а не писать бестолковые сообщения и не разводить холивары из-за языков.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
и есчо такое почитай, и ты Lumma тоже https://medium.com/@fsx30/hooking-heavens-gate-a-wow64-hooking-technique-5235e1aeed73
как взрослые дяди ловят ваши илит техники.
Вот, опять же, ты меня не послушал. Я тебе говорю, разберись чуть-чуть в теме.
То, что ты скинул это не heavens gate, это прыжок в WoW64 Layer, где конечно можно все это дело хукнуть, и даже больше скажу это все хукают. А ручной вызов syscall или sysenter ты не похучишь. У меня как раз ручной вызов.
 
инструкцию sysenter тоже поморфишь?)))
давай тогда аверы поставят детект на весь ntdll, там дохера sysenter по коду разбросано, АПАСНА, АХТУНГ, NTDLL = ВИРУС

а так же почитай что дилдо скинул выше
Но обходилось это достаточно просто: находился любой незапатченный фрагмент ntdll с инструкцией syscall, а сисколлы малварки вместо самой инструкции syscall имели jmp на найденную незапатченную инструкцию.
Поясняю для особо тупорылых простым языком - свой стаб сискола располагается в кодовой секции ntdll, и оттуда он и вызывается. Это как раз для того что бы В ТВОЕМ ПОЛЬЗОВАТЕЛЬСКОМ КОДЕ не было инструкций syscall\sysenter
А еще иди читай про техники перекрытия кода, когда одна инструкция находится внутри другой, и в статике ее не видно, а что бы динамика туда не залезла есть антиэмули
И вообще побольше читай, полезно для мозга, и не таких пациентов как ты книги спасали.




Просто оставлю это здесь, может в твоей голове что-то зашевелится, ты еще не дорос до спора на эту тему ни морально, ни знаниями.
1672969265348.png

Капи, тебе не надоело каждый день уходить из топика обдристанным ?
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
его сигнатурно палят, инструкция не морфится )
Там два байта. Я очень сомневаюсь что кто то будет делать двухбайтовую сигнатуру, они всегда в связке идут с другими инструкциями и сигнатурят обычно стаб. А там два байта, не помню какие, но если их засигнатурить это переведут к ложным детектам, по этому так не делают
 
свой стаб сискола располагается в кодовой секции ntdll, и оттуда он и вызывается
где такое реализовано у shamel? либо ты пиздишь либо квейк .

техники перекрытия кода
ну ка перекрой мне sysenter? это не jmp

Там два байта.
для кодосекции они уникальны

тебе не надоело каждый день уходить из топика обдристанным ?
по себе людей не судят , ара )
 
Пожалуйста, обратите внимание, что пользователь заблокирован
где такое реализовано у shamel? либо ты пиздишь либо квейк .
Я не пойму я тут при чем :) у меня ручные вызовы сисколлов, пока никто сигнатуры на них не повесил и вешать не собираются.
 
его сигнатурно палят, инструкция не морфится )
Гонишь чтоли? Найти два байта для сискола в ntdll проблема? Проблема может абсолютный джамп/рет туда сделать из своего кода? Даже во "вложенных" инструкциях их прям дохрена.

sc.png


Угомонись, Капа.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх