Avanguard: The Win32 Anti-Intrusion Library

Тема в разделе "CHEATS", создана пользователем HoShiMin, 17 мар 2019.

Метки:
  1. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Эта защита не имеет отношения к локальным протекторам и их отламыванию. Когда у вас нет ничего кроме голого адреса для передачи управления, обход при помощи SetProcessValidCallTargets становится весьма сомнительным, за исключением некоторых редких случаев выхода из виртуальной машины с байткодом.

    Мне честно говоря пока даже не удалось понять, зачем вам с Инде в античит-библиотеке обходить cfg.
     
  2. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.459
    Адрес:
    Россия, Нижний Новгород
    Незачем, обсуждение само сюда зашло. А чтобы заинжектить дллку, есть гораздо более простые и прямолинейные способы.
     
  3. Indy_

    Indy_ Well-Known Member

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

    > Мне честно говоря пока даже не удалось понять, зачем вам с Инде в античит-библиотеке обходить cfg.

    А как передать управление на произвольный адрес при включённой cfg ?

    Перезапись переменной с указателем приведёт к проверке cfg. В лабораторных" условиях отладка происходит при выключенной системной защите. В реальных условиях инжект это меньшая из проблем. Проблема обхода cfg существовала очень давно. Не выполнялся скан на уязвимости, предполагалось что ошибки или намеренного лазика быть не может как выше.
    --- Сообщение объединено, 27 фев 2020 ---
    HoShiMin,

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

    Например ?
    Впрыснуть код можно, но запустится ли он и будет стабилен ?
    В твоём случае весь обход сводится к передаче управления для локального создания обьектов в доверенном потоке, будь то выделение памяти или содание нового треда. Вот только это всё происходит без cfg/cfi/etc защиты, тупо тесты на ос с отключённой защитой.

    Вообще эта поделка может работать при включённой защите или произойдёт тот же int29 ?

    А есчо ты смотрел пайлод ?

    - нет. Ты удивился почему не видна подгрузка модуля. Потому что загрузчик восстановлен и релоцирован, твой патч LdrXX идёт лесом автоматически, хоть это и не предполагалось, но так работает lwe двигатель для загрузки из памяти :sarcastic:
     

    Вложения:

    • Slim.pdf
      Размер файла:
      59,2 КБ
      Просмотров:
      392
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    все вирты имеют эмульную часть, тч некоторая просадка профайла неизбежна. Но насколько она фатальна зависит от конкретной ситуации == если вирта цепляет физ гпу, то её производительность резко растёт и цпу разгружается (что создаёт изрядный запас для организации эмуль фильтров). Второй момент, что значит "неиграбельная"? куча публики гамят на слабых машинах в мин настройках. Третий момент, читы создаются не столько для процесса игры сколько..

    1. для понтов == типО чувак раскачал акк до ай-ай-ай :laugh1::laugh2::laugh3:
    2. для заработка, чтобы продавать прокаченные акки иль сами читы чувачкам из №1 :laugh1::laugh2::laugh3:
     
  5. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    998
    3. для того же, зачем существуют онлайн казино - прачечная.
     
  6. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    для прачечной лучше стругать сами онлайн гамисы, читы в этом плане очень плохо подходят, пч не являются офиц видом деятельности.
     
  7. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Есть пучок методов, все они (ну или все которые мне известны) сводятся к манипуляции существующими разрешенными для перехода функциями (они же cfg gadgets) до победного. Можно например адрес возврата перезаписать и сорвать стек. Особо яйцеголовые предлагают пользоваться исключительно набором имеющихся гадгетов, не выходя из cfg в принципе. По запросу "cfg bypass" гугл все расскажет.
     
  8. Indy_

    Indy_ Well-Known Member

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

    Для gadget's нужна сформированная в стеке последовательность данных и главное уже переданное управление. Но в данном случае управление можно получить переписав указатель, а до прохода по нему будет cfg проверка.

    > По запросу "cfg bypass" гугл все расскажет.

    Он всякую чушь находит. Всё сводится к передаче управления через ветвление без проверки cfg:

    - BYPASS CONTROL FLOW GUARD COMPREHENSIVELY, Zhang Yunhai
     
  9. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Когда есть последовательность, сформированная на стеке, проблемы уже практически нет. Обходить cfg приходится когда последовательность у вас в хипе, а то и в каком-нибудь битмапе.

    Ну это недостаток выдачи по любому запросу в поисковике, 95% чуши.

    https://www.syssec.ruhr-uni-bochum.de/media/emma/veroeffentlichungen/2015/03/28/COOP-Oakland15.pdf
     
  10. Indy_

    Indy_ Well-Known Member

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

    Выше в примере я устанавливаю ловушку(VEH), что бы получить управление. Там тоже проверка указателя. Если её отключить как другом примере, то будет детект, так как mrdata R-секция. И нужно после инит процесса её хэш тоже хранить и проверять. Так что эти все публикации по обходу для данной задачи не годятся.
     
  11. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Я и говорю, что и сама защита cfg, и методы обхода - они совсем про другое. При полном доступе на локальной системе можно и SetProcessValidCallTargets применить и любые другие агрессивные меры.
     
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    На 8 работает через RtlpInterceptorRoutines. Только тестовое апп не выполняет операций с кучей, так что управление не получается. В принципе способ годный.
    --- Сообщение объединено, 27 фев 2020 ---
    Попробовал на Foxit Reader:

    Вызывается очень часто из 5 адресов в нт.
     

    Вложения:

    • Ij9.7z
      Размер файла:
      284,9 КБ
      Просмотров:
      330
    • icp.png
      icp.png
      Размер файла:
      23,6 КБ
      Просмотров:
      342
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    LdrpSendDllNotifications() проходит по списку callback:parameter. Прототип callback(x, x, parameter). Если процедурой задать (x, x), тогда при возврате на стеке останется контролируемый параметр. Тогда проход по списку позволит загрузить массив данных в стек. Проблема с конвенцией вызова, указатель на параметры LdrpSendDllNotifications() в ECX. Тогда наверно можно обождать вызов из апп загрузчика :scratch_one-s_head:
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Оказывается nt!ExecuteHandler() тоже не протекчена cfg. Тогда можно загрузить в стек ROP через нотифи: ntdll!ExecuteHandler -> ESP+12/RET -> ZwQueryDir -> ZwMapView -> ESP+12/RET -> Buffer{}

    Вот стек(w8):
    ex.png
     

    Вложения:

    • Ex.7z
      Размер файла:
      2,4 КБ
      Просмотров:
      308
    ormoulu нравится это.
  15. ormoulu

    ormoulu Well-Known Member

    Публикаций:
    0
    Регистрация:
    24 янв 2011
    Сообщения:
    1.208
    Зопейшу-ка я это, такое ощущение, что может пригодиться.
     
  16. Indy_

    Indy_ Well-Known Member

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

    Это стаб для вызова SEH. Интересно что он не изменен XP-10, так как реализован на асм, есть в врк. Наверно поэтому там и не cfg-проверки. Наверно нужно посмотреть маркирован ли он в cf-карте. Вероятно что нет.
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    виртой всё можно накрыть :)

    ЗЫ..
    https://wasm.in/threads/avanguard-the-win32-anti-intrusion-library.33212/page-8#post-416123
    чтобы не эмулить call/jXX в вирте, можно перед запуском бинаря сформировать таблицы виртуальных адресов с учётом всех прыжков в коде, тч скорость обращения к зеркалам будет такой же, как и к оригинальной памяти.
     
  18. Indy_

    Indy_ Well-Known Member

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

    Это бинарная трансляция". Что бы не эмулировать блок многократно он оборачивается стабами и напрямую вызывается, те блок морфится в памяти. Это весьма сложная задача. И единственный вариант для реализации быстрого локального визора. Во первых на сборку нужно очень много памяти.
     
  19. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    Indy_, вирта по-любому формирует таблицы (ре)трансляции, чтобы не куролесить в памяти хоста. главная тут проблема, что бинарь из-под вирты начнёт рваться прочитать зеркало. И вот тута возникают лаги на отлов таких попыток.
     
  20. Indy_

    Indy_ Well-Known Member

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

    Попытка обнаружить трансляцию под VMware без железной вирты безуспешна. Удивительно как оно вообще так может работать, либо трансляция и вовсе отключена для выравнивания тайминга не знаю.

    А проблема тут главная как получить управление в потоке безопасно.
    --- Сообщение объединено, 29 фев 2020 ---
    Кстате вот сурки ExecHandler(), w2k.
    --- Сообщение объединено, 29 фев 2020 ---
    HoShiMin,

    Есчо нюанс, ты семпл выше посмотрел ?

    Сурец бесполезен, ничего не поймёшь. Следует отладчиком пройти посмотреть как формируется ROP.

    Атака в таком случае проста: запись списка, затем ожидание события в загрузчике. К сожалению база буфера фиксирована, может быть проблема с ASLR. Но это лишь простой пример, если стек смещён первым безопасным вызовом, то можно сформировать любую последовательность ROP. Это уже точно не эта тема :)
     

    Вложения: