мне кажется, не уйти от того, чтобы пол ядра пропатчить, когда в деле больше одного процесса. Как вы с помощью ДБИ поймаете распасовку между двух процессов? пусть даже попроще, один процесс маппит страницу под аст, и шарит ее для всех. И в какой-то момент, аст другой из-за другого процесса. hiddy, мне интересен именно ваш взгляд. другие про эвристики вообще не говорят, а вы вроде понимаете что это такое. как бы вы решали мной описанную задачу?
Там это обсуждалось, хуки и дби можно отследить в малвари и снять их или отказаться работать. Если малварь инжектит код в другие процессы, то тоже легко можно потерять след. Эмулировать всю систему сложновато, частично это сделано в binee, но это тоже такое себе решение.
hiddy, > Какие-то танцы с бубном проделали Рассказывает про гипервизоры, на картинке что то про модуль ядра и CR3, при этом говорит нам пришлось что то в юзер патчить Походу неплохо заколхозили всё, но без этого никак https://wasm.in/threads/the-kernel-bridge-framework.33009/page-3#post-420350 q2e74, > Как вы с помощью ДБИ поймаете распасовку между двух процессов? У меня до запуска потока в новом процессе инжект в загрузчик(до загрузки юзер либ). Протекторы часто клоны процессов создают. > И в какой-то момент, аст другой из-за другого процесса. Будет выборка, необходимые данные по указателю. Что они возникают без предварительной записи, значит что это ядро пишет, либо область расшарена. Никаких проблем с этим нет. M0rg0t, > т.е. этот самый визор малварка может задетектить? Как именно ? Для этого нужно знать конкретный визор как устроен. Замеры по таймингу врядле помогут.
Indy_, так я не знаю как, вопрос был к Rel . Я из визоров юзал только Интел Пин и то раз 5, для теста малвари. Дебагер удобнее, как по мне.
M0rg0t, Может и удобнее, если месяц вручную разбирать один семпл, есть ведь гуй удобный В 10-ке есть встроенное подобие визора, основано на IPT https://ionescu007.github.io/winipt/ Это куда получше наверно, чем всякие извраты с VMX, этот механизм предназначен совсем для других целей.
Перехватывать NtCreateUserProcess и запускать мотор для нового процесса. Прямые системные вызовы не проблема, т.к перед выполнением инструкции syscall разрешаются номер системного вызова и аргументы, можно перехватить запуск процесса (или любой другой вызов сервисной функции). На выходе два лога, скоррелировать данные не проблема при должном логировании. Также можно обогатить новый инстанс дби уже полученными данными из первого процесса, тогда все еще проще... Можно, но также можно отслеживать выборку к похученым функциям и выдавать оригинальные байты. Все выходы из ядра и процедуры загрузчика также обрабатываются, потому уйти из под надзора дби сложно.
Ну вот смотри, вот допустим, у меня есть малварь, я запустил ее в саспендед моде, проинжектил в процесс свой шелл, поставил этим шеллом перехваты определенных функций сплайсингом, как мне теперь перехватить "выборку" (я так понимаю, что выборка на эльфийском это обращение к виртуальной памяти), когда малварь будет например считывать первые байты перехваченных мною функций?
Rel, Так ведь прямых действий нет - обращение к памяти(выборка) проходит заданный фильтр, где находится определённый критерий, как например критерий OEP или например выборка заданной строки. А сервисы это вообще ниочём, ну определены все дерные вызовы они так же фильтруются. В клоны процессов на этапе инит нтлдр инжектится загрузочный стаб, который отрабатывает задолго до начала работы юзер кода и начинает транслировать загрузчик. Выйти из этого цикла невозможно. Если ты как то скипнешь итерацию(не представляю как, тк все обратные ядерные вызовы мониторятся), то этот пробел" будет виден в логе, соотвественно будет разбор этого места, фикс и повторный запуск. По этой причине такие инструменты гибкие, тк сразу видно сложное место, обход защиты и тп. А отладчик это задродство. Проблемы обычно три - профайл(тайминг), замер тайминга защитой(это крайне редко и всегда просто), ну и главное - рассинхронизация это очень трудно решается. К примеру был такой семпл patric" - протекторы, крэкми; так там рассинхрон межпроцессный, не спецом а из за ошибки(эксклюзивный асинхронный доступ к файлу), что очень трудно было выяснить(ну или я не искал решение по таким проблемам). А обычный протекторы или крипторы они кучи клонов создают это вообще ниочём, детские забавы раскручивается автоматикой вовсе без участия кодера. --- Сообщение объединено, 8 дек 2020 --- hiddy, > Также можно обогатить новый инстанс дби уже полученными данными из первого процесса, тогда все еще проще... Так и делалось, вначале снимается не большой целевой лог, потом двиг пересобирается вносятся нужные для решения поправки и вновь запускается, это делается налету очень быстро и очень много раз. Если апп не тяжёлое по таймингу которое не нужно крутить часами, то решение находится крайне быстро. По этой причине я давно отладчик за инструмент не считаю, кроме кд конечно. Юзер отладчик сейчас это игры нуби с красивым гуем, эффективности не имеющие тупо трата времени.
Я нихера не понял, вот есть малварь запущенная, есть мой шелл в процессе малвари, что я должен сделать в своем шелле, чтобы перехватить обращение кода малвари к определенному участку памяти? Что я должен сделать в своем шелле, чтобы перехватить сисколл?
Rel, Тебе ведь за публикацию не знаю чего заплатили а такой примитив спрашиваешь. Опосредованно делается так скажем
Indy_, за что мне там что заплатили не важно. Если ты не хочешь делиться информацией, то можешь ничего и не отвечать. Я как бы на белорусских электриков без мотивации не надеюсь. Этот вопрос скорее адресован hiddy, но и в принципе я не ожидаю здесь получить внятного ответа.
А какой вам может быть ответ если вы ОЕР не находите? --- Сообщение объединено, 9 дек 2020 --- Сперва авером конец, потом не проходит и пары лет, как пацыент сходит с ума, затем конец уже дибагирам один раз разобрался и больше не вспоминал. Возможно все уже под визором работают --- Сообщение объединено, 9 дек 2020 --- А, ну кряклаб есчо зацепило слегка
Так стоп. Я думаю, что пора собраться с силами и признать, что не искать оеп - это нормально. Те, кто не ищут оеп - тоже люди, не их вина, что им не нужно искать оеп. Не стоит считать, что тот, кто не ищет оеп, какой то не такой человек, это его осознанный выбор, и более того, нужно иметь определенное мужество, чтобы на васме признать, что не ищешь оеп. Да всем конец рано или поздно наступит, в вечности останутся только визоры. Ну с потерей креклаба пациент переключил всю свою активность на васм, хорошо это или плохо? Скорее плохо, вон приходят новые люди на васм, а он на них сразу накидывается и давай с ними визорами мерятся.
Кто бы знал, что нашего спеца с его меговизорами может уделать обычная баба (Моргот, твоя любимая Шахеризада) за счет простого дампинга:
Rel, Да что она там дампить собралась? У нормальных посонов во всем адресном пространстве нет ни одной выделенной страницы - все в анклавах
Rel, А какой прок от дампа в произвольный момент времени ? Это получится какой то слепок состояние приложения, бесполезный. В дампе найти открытые данные ? Обычно интересуют алгоритмы, а не данные. Инициализация приложения начинается с его EP, там ключевые механизмы которые интересны. Если приложение уже работает, то толку от его текущего состояния нет никакого. Разве что если его интерфейсы интересуют, больше ничего тк активность пропущена. TrashGen, Не свежий пост конечно но я обьясню как это работает. Когда ты транслируешь код, выборку подменяешь аверская вирта получает фейк указатель, который транслируется при самой трансляции и выборке в реальный. Тогда авер вирта получает невалид указатель и на это завершается, так как сама вирта прямую выборку не выполняет. Это попытка выборки из иного мода в с-анклав, конечно она не пройдёт.
Ну чтобы криптор снять, запускаешь, снимаешь дамп уже загруженной полезной нагрузки этим скриптом и загружаешь в Иду. Первоначальные значения в секции данных особо значения в анализе малвари не имеют, таблицу импорта, релоки и тд автоматом востановить. Анализируешь бинарник без криптора. Профит. Плюс, если там статические строки зашифрованы и расшифровываются на старте, то они будут уже расшифрованы.
Rel, Да, так почти все протекторы и крипторы делают, это тупо загрузчики о чём изначально и был вопрос. Но разве можно так просто идой открыть дамп, у них ведь обычно битый импорт и тп. Хотя всё верно, как и всякий отладчик илу наверно можно аттачить и далее изучать семпл. Зачем тогда дамп. Но суть не в этом - ручной разбор, закопаешься. А если это с защитой то ничего не сдампишь и отладчик не прицепишь.