Визоры больше не нужны

Тема в разделе "WASM.RESEARCH", создана пользователем Rel, 7 окт 2020.

  1. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    мне кажется, не уйти от того, чтобы пол ядра пропатчить, когда в деле больше одного процесса. Как вы с помощью ДБИ поймаете распасовку между двух процессов? пусть даже попроще, один процесс маппит страницу под аст, и шарит ее для всех. И в какой-то момент, аст другой из-за другого процесса.

    hiddy, мне интересен именно ваш взгляд. другие про эвристики вообще не говорят, а вы вроде понимаете что это такое. как бы вы решали мной описанную задачу?
     
    Последнее редактирование: 16 ноя 2020
    Aiks нравится это.
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Там это обсуждалось, хуки и дби можно отследить в малвари и снять их или отказаться работать. Если малварь инжектит код в другие процессы, то тоже легко можно потерять след. Эмулировать всю систему сложновато, частично это сделано в binee, но это тоже такое себе решение.
     
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    т.е. этот самый визор малварка может задетектить? Но как, и встречалось ли такое, кроме РоС?
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну мегоэлитные визоры мегоэлитных спецов не может задетектить даже их родная мать, так что...
     
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    hiddy,

    > Какие-то танцы с бубном проделали

    Рассказывает про гипервизоры, на картинке что то про модуль ядра и CR3, при этом говорит нам пришлось что то в юзер патчить :sarcastic:
    Походу неплохо заколхозили всё, но без этого никак https://wasm.in/threads/the-kernel-bridge-framework.33009/page-3#post-420350

    q2e74,

    > Как вы с помощью ДБИ поймаете распасовку между двух процессов?

    У меня до запуска потока в новом процессе инжект в загрузчик(до загрузки юзер либ). Протекторы часто клоны процессов создают.

    > И в какой-то момент, аст другой из-за другого процесса.

    Будет выборка, необходимые данные по указателю. Что они возникают без предварительной записи, значит что это ядро пишет, либо область расшарена. Никаких проблем с этим нет.

    M0rg0t,

    > т.е. этот самый визор малварка может задетектить?

    Как именно ?
    Для этого нужно знать конкретный визор как устроен. Замеры по таймингу врядле помогут.
     
    hiddy нравится это.
  6. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Indy_, так я не знаю как, вопрос был к Rel . Я из визоров юзал только Интел Пин и то раз 5, для теста малвари.
    Дебагер удобнее, как по мне.
     
    cddee3 нравится это.
  7. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    M0rg0t,

    Может и удобнее, если месяц вручную разбирать один семпл, есть ведь гуй удобный :)

    В 10-ке есть встроенное подобие визора, основано на IPT https://ionescu007.github.io/winipt/

    Это куда получше наверно, чем всякие извраты с VMX, этот механизм предназначен совсем для других целей.
     
    M0rg0t нравится это.
  8. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Перехватывать NtCreateUserProcess и запускать мотор для нового процесса. Прямые системные вызовы не проблема, т.к перед выполнением инструкции syscall разрешаются номер системного вызова и аргументы, можно перехватить запуск процесса (или любой другой вызов сервисной функции). На выходе два лога, скоррелировать данные не проблема при должном логировании. Также можно обогатить новый инстанс дби уже полученными данными из первого процесса, тогда все еще проще...

    Можно, но также можно отслеживать выборку к похученым функциям и выдавать оригинальные байты. Все выходы из ядра и процедуры загрузчика также обрабатываются, потому уйти из под надзора дби сложно.
     
    Indy_ и q2e74 нравится это.
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну вот смотри, вот допустим, у меня есть малварь, я запустил ее в саспендед моде, проинжектил в процесс свой шелл, поставил этим шеллом перехваты определенных функций сплайсингом, как мне теперь перехватить "выборку" (я так понимаю, что выборка на эльфийском это обращение к виртуальной памяти), когда малварь будет например считывать первые байты перехваченных мною функций?
     
    q2e74 нравится это.
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Так ведь прямых действий нет - обращение к памяти(выборка) проходит заданный фильтр, где находится определённый критерий, как например критерий OEP или например выборка заданной строки. А сервисы это вообще ниочём, ну определены все дерные вызовы они так же фильтруются. В клоны процессов на этапе инит нтлдр инжектится загрузочный стаб, который отрабатывает задолго до начала работы юзер кода и начинает транслировать загрузчик. Выйти из этого цикла невозможно. Если ты как то скипнешь итерацию(не представляю как, тк все обратные ядерные вызовы мониторятся), то этот пробел" будет виден в логе, соотвественно будет разбор этого места, фикс и повторный запуск. По этой причине такие инструменты гибкие, тк сразу видно сложное место, обход защиты и тп. А отладчик это задродство.

    Проблемы обычно три - профайл(тайминг), замер тайминга защитой(это крайне редко и всегда просто), ну и главное - рассинхронизация это очень трудно решается. К примеру был такой семпл patric" - протекторы, крэкми; так там рассинхрон межпроцессный, не спецом а из за ошибки(эксклюзивный асинхронный доступ к файлу), что очень трудно было выяснить(ну или я не искал решение по таким проблемам). А обычный протекторы или крипторы они кучи клонов создают это вообще ниочём, детские забавы раскручивается автоматикой вовсе без участия кодера.
    --- Сообщение объединено, 8 дек 2020 ---
    hiddy,

    > Также можно обогатить новый инстанс дби уже полученными данными из первого процесса, тогда все еще проще...

    Так и делалось, вначале снимается не большой целевой лог, потом двиг пересобирается вносятся нужные для решения поправки и вновь запускается, это делается налету очень быстро и очень много раз. Если апп не тяжёлое по таймингу которое не нужно крутить часами, то решение находится крайне быстро. По этой причине я давно отладчик за инструмент не считаю, кроме кд конечно. Юзер отладчик сейчас это игры нуби с красивым гуем, эффективности не имеющие тупо трата времени.
     
    q2e74 нравится это.
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Я нихера не понял, вот есть малварь запущенная, есть мой шелл в процессе малвари, что я должен сделать в своем шелле, чтобы перехватить обращение кода малвари к определенному участку памяти? Что я должен сделать в своем шелле, чтобы перехватить сисколл?
     
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Тебе ведь за публикацию не знаю чего заплатили а такой примитив спрашиваешь. Опосредованно делается так скажем :sarcastic:
     
  13. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Indy_, за что мне там что заплатили не важно. Если ты не хочешь делиться информацией, то можешь ничего и не отвечать. Я как бы на белорусских электриков без мотивации не надеюсь. Этот вопрос скорее адресован hiddy, но и в принципе я не ожидаю здесь получить внятного ответа.
     
    nullPtr нравится это.
  14. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.186
    Адрес:
    подполье
    А какой вам может быть ответ если вы ОЕР не находите?
    --- Сообщение объединено, 9 дек 2020 ---
    Сперва авером конец, потом не проходит и пары лет, как пацыент сходит с ума, затем конец уже дибагирам один раз разобрался и больше не вспоминал. Возможно все уже под визором работают
    --- Сообщение объединено, 9 дек 2020 ---
    А, ну кряклаб есчо зацепило слегка
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Так стоп. Я думаю, что пора собраться с силами и признать, что не искать оеп - это нормально. Те, кто не ищут оеп - тоже люди, не их вина, что им не нужно искать оеп. Не стоит считать, что тот, кто не ищет оеп, какой то не такой человек, это его осознанный выбор, и более того, нужно иметь определенное мужество, чтобы на васме признать, что не ищешь оеп.

    Да всем конец рано или поздно наступит, в вечности останутся только визоры.

    Ну с потерей креклаба пациент переключил всю свою активность на васм, хорошо это или плохо? Скорее плохо, вон приходят новые люди на васм, а он на них сразу накидывается и давай с ними визорами мерятся.
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Кто бы знал, что нашего спеца с его меговизорами может уделать обычная баба (Моргот, твоя любимая Шахеризада) за счет простого дампинга:
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Rel,
    Да что она там дампить собралась? У нормальных посонов во всем адресном пространстве нет ни одной выделенной страницы - все в анклавах :)
     
    TrashGen и Rel нравится это.
  18. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    А какой прок от дампа в произвольный момент времени ?

    Это получится какой то слепок состояние приложения, бесполезный. В дампе найти открытые данные ?

    Обычно интересуют алгоритмы, а не данные. Инициализация приложения начинается с его EP, там ключевые механизмы которые интересны. Если приложение уже работает, то толку от его текущего состояния нет никакого. Разве что если его интерфейсы интересуют, больше ничего тк активность пропущена.

    TrashGen,

    Не свежий пост конечно но я обьясню как это работает. Когда ты транслируешь код, выборку подменяешь аверская вирта получает фейк указатель, который транслируется при самой трансляции и выборке в реальный. Тогда авер вирта получает невалид указатель и на это завершается, так как сама вирта прямую выборку не выполняет. Это попытка выборки из иного мода в с-анклав, конечно она не пройдёт.
     
  19. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну чтобы криптор снять, запускаешь, снимаешь дамп уже загруженной полезной нагрузки этим скриптом и загружаешь в Иду. Первоначальные значения в секции данных особо значения в анализе малвари не имеют, таблицу импорта, релоки и тд автоматом востановить. Анализируешь бинарник без криптора. Профит. Плюс, если там статические строки зашифрованы и расшифровываются на старте, то они будут уже расшифрованы.
     
    M0rg0t нравится это.
  20. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Да, так почти все протекторы и крипторы делают, это тупо загрузчики о чём изначально и был вопрос. Но разве можно так просто идой открыть дамп, у них ведь обычно битый импорт и тп. Хотя всё верно, как и всякий отладчик илу наверно можно аттачить и далее изучать семпл. Зачем тогда дамп. Но суть не в этом - ручной разбор, закопаешься. А если это с защитой то ничего не сдампишь и отладчик не прицепишь.