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

CreateMutexA vs NtCreateMutant?

Пожалуйста, обратите внимание, что пользователь заблокирован
Может ли кто-то объяснить плюсы нэйтив апи в контексте написания мальвари?
что значит плюсы апи? это значит что использование апи, лучше? лучше чем что?
если ты еще не постиг дзен - то вин-апи это то что будешь юзать 100% - если пишешь малварь под винду.
вне зависимости от того лучше ли винапи чем что-то или хуже
 
Последнее редактирование:
если ты еще не постиг дзен
Постижение дзен это абстрактное понятие, а вот вопрос задал я вполне конкретный.
Сформулирую подругому: Есть ли преимущества в использовании функций с префиксами "Nt" и "Zw"?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Есть ли преимущества в использовании функций с префиксами "Nt" и "Zw"?
это один из ходов который все используют для снятия ран-тайм детектов - он заезжен всеми - но от этого не стал совсем безполезным.
такой ход Sophos \ Sentinel и подобные уже давно учитывают, для них это эквиваленты
а вот вопрос задал я вполне конкретный.
не правда, ваш вопрос был совсем не конкретый, понятие - есть плюс или нет всегда относительно, и вот только после втрого поста стало понятно что вы имелли ввиду.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Продолжая вашу тему, возмите сэмпл малвари у который в импорте ничего нет кроме - ntdll - и поглядите в IDA,
несколько функций отриверсить не долго, не нужно риверсить весь бинарь целиком
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Может ли кто-то объяснить плюсы нэйтив апи в контексте написания мальвари?
При простом вызове существенной разницы не будет, поэтому не имеет много смысла использовать нэйтив апи вместо вин апи. Если ты будешь пытаться обойти хуки в юзер моде через прямой вызов сисколлов, то, очевидно, будешь юзать нэйтив апи.
 
Для обхода ав это имеет смысл в комплексе, в итоге тебе понадобится сисколлы для 30+ апи. Что бы все это не превратилось в ад сразу делай уровень абстракции от ос, потому что если тебе сегодня понадобилось CreateMutexA менять на NtCreateMutant, то завтра тебе понадобится что то еще, и если у тебя CreateMutexA вызывается не в одном месте а в 10 местах в каждых из 10 твоих, проектов то будет тебе веселье все это выпиливать. Бери себе за правило работать с апи ос только через абстракции и никак иначе, каждая из апи ос должна встречтася только в одном месте одной библиотеки. И забудь про апи которые заканчиваются на A.
 
Спасибо за ответы. Немного разобрался.

Нашел интересную статью, как раз эта тема освещается поверхностно (то что надо для такого нуба, как я, лол)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Может ли кто-то объяснить плюсы нэйтив апи в контексте написания мальвари?
Смотря как ты это натив апи используешь.
Если ты получаешь функции через GetProcAddress (и получаешь адреса, из загруженной либы), то нет. Если хуки в юзермоде стоят, то они уже стоят на Nt функциях.
Если ты юзаешь сисколы, то имеет смысл. Это поможет обойти бомже аверы, у которых хуки в юзермоде.
Обойти защиту в кернел моде никак не получится, но другой момент, что в кернел моде тоже можно не о всём узнать. Обычно фильтры используют.
Фильтры могут реагировать на создание процессов/потоков/загрузку либ штатными средствами (LoadLibrary)/работа с файлами (кстати скорее всего нельзя понять, что конкретно ты делаешь с файлом, но будет видно, что ты как минимум открываешь хэндл к нему).
Так что использование сисколов на создание потоков скорее всего бессмысленная вещь.
Но это если рассматривать в контексте защиты от аверов.

Если ты рассматриваешь в контексте защиты от ревёрсеров (от отладки), то более чем имеет смысл.
К примеру, часто для отладки используется x64dbg, в нём по умолчанию есть плагин ScyllaHide, который хукает Nt функции.
И скажем, если ты хочешь спрятать поток через NtSetInformationThread, то ты не спрячешь его, если ты вызывал эту функцию просто через ntdll, которая уже загружена в память.
Если ты вызываешь её через сисколл, то всё проходит более чем удачно.
Но опять таки, это защита от лохов. Если видишь такую проблему, то обычно грузишь какой-нибудь плагин, который может работать в ring0 (TitanHide допустим).
Там уже такое не прокатывает. Можно конечно и без плагинов обходиться. Допустим искать \x0f\x05 в памяти и патчить. Но это совсем тупой вариант.
В общем, кому надо будет, тот заревёрсит..

Подводя итог, можно сказать, что сисколы имеют смысл в малвари, но от них не будет какого-то супер профита в виде FUD вечного.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
что сисколы имеют смысл в малвари, но от них не будет какого-то супер профита в виде FUD вечного.
не прямые сисколы имеют смысл - это важно. если вы будите сисколить по учебнику - толку не будет вообще, если вы юзаеете всякие SysWhishpers с гита - тоже толку не будет.
На сегодня вам нужен не задроченый способ как анхучить сискол который вы думаете юзать - только тогда это имеет смысл.
 
Анхучить сискол в 2023г в юзерланде уже не актуально. АВ ставят их до кучи в r3 по старой памяти, но в основном ориентир у них на r0.
 
Анхучить сискол в 2023г в юзерланде уже не актуально. АВ ставят их до кучи в r3 по старой памяти, но в основном ориентир у них на r0.
А есть ли какие-то альтернативы?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
На сегодня вам нужен не задроченый способ как анхучить сискол который вы думаете юзать - только тогда это имеет смысл.
А зачем его анхучить? анхук, вероятно, может вообще ав стригерить
Единственное, что я вижу не очень хорошее, так это использование сисколлов у себя в коде.
Решить такую проблему просто, если найти паттерн \x0F\x05\xC3 и сделать туда прыжок.
Правда код такой всё равно имеет нюансы. К примеру, придется либо редактировать свой шеллкод, либо придется секцию кода менять.
Всё это приводит к вызовам VirtualAlloc/VirtualProtect, что не есть хорошо (потому что их Nt функции похучены могут быть).
Мне кажется, что эти вызовы выглядят палевнее, чем сисколл в секции кода.

Вообще не очень понял ту же проблему с таким кодом
Код:
NtCreateProcess PROC
    mov [rsp +8], rcx          ; Save registers.
    mov [rsp+16], rdx
    mov [rsp+24], r8
    mov [rsp+32], r9
    sub rsp, 28h
    mov ecx, 029943818h        ; Load function hash into ECX.
    call SW3_GetSyscallNumber              ; Resolve function hash into syscall number.
    add rsp, 28h
    mov rcx, [rsp+8]                      ; Restore registers.
    mov rdx, [rsp+16]
    mov r8, [rsp+24]
    mov r9, [rsp+32]
    mov r10, rcx
    syscall                    ; Invoke system call.
    ret
NtCreateProcess ENDP
 


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