Бесследное чтение памяти программы

Тема в разделе "WASM.ZEN", создана пользователем LastNoob, 28 дек 2019.

  1. HoShiMin

    HoShiMin Well-Known Member

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

    LastNoob, у тебя, случайно, нет какой-нибудь установленной игрушки с EAC/BE? Скинь их драйвера, если есть
     
  2. Indy_

    Indy_ Well-Known Member

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

    > эти продукты уже далеко не школьные поделки, в которых за пару минут можно найти обход.

    Ошибаешься, на любой ядерный фильтр можно провести как минимум race-condition атаку, они не умеют писать стабильный код, это не смогли сделать даже аверы за столько лет(те синхрон в их драйверах).
     
  3. HoShiMin

    HoShiMin Well-Known Member

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

    Indy_ Well-Known Member

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

    Когда будет семпл, тогда можно будет посмотреть и действительно что то обсудить. А так это ниочём.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Вы что все разве не поняли до сих пор? Стабильный код может только Инде писать, а не аверы и другие люди, которые этим десятки лет занимаются.
    --- Сообщение объединено, 31 дек 2019 ---
    При всём, Инде не шарит просто.
     
  6. Indy_

    Indy_ Well-Known Member

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

    > а не аверы и другие люди, которые этим десятки лет занимаются.

    Я не хочу приводить старые ссылки на публикации, но ты ошибаешься. Мне у них уже нет смысла что то смотреть, в их драйверах, иной подход ;)

    Прекрати писать гадости хоть на новый год, в конце концов ты можешь и надоесть.
     
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    ну, с таким же успехом можно поставить ОЧЕНЬ ПРОЧНУЮ ДВЕРЬ посередь пустыни и Надеяться, что все будут ломиться сугубо в неё :) обнаружить наличие внешней озу можно чрез игру с кэшем проца и даже дравера не требуется. бЯда кучи разрабов секуры в том, что они рассматривают абстрактную модель работы компа. меж тем, современные компы делаются по схеме плоского/сквозного ввода/вывода. То бишь жестянка получается весьма скоростной даже при серьёзных недостатках архи и довольно дешёвой. А вот для секурки имеем полный швАХЪЪЪ == всё разграничение доступа идёт сугубо чрез софтуху, закрыть все дырки она физически не может, да и то (что прикрывает) сродни набедренной повязке туземца. даже прикрыв все опасные асм команды эмулем, толку очень мало == гамис может использовать внешний таймер на серваче и/ль внутренний на основе дельт скоростей работы параллельных потоков (эмуль эти дельты здорово перекашивает). И опять же для расчёта дельт хватает ринг3. я уж совсем молчу об изысках вихревых токов :)
     
  8. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Закономерный вопрос - как?
    Что поменяется, когда мы переводим систему в виртуальный режим? Добавится ещё 4 уровня в таблице трансляций. И что? Кэш как работал, так и продолжит работать.
     
  9. UbIvItS

    UbIvItS Well-Known Member

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

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Так ведь нужно знать, где и что искать. А как будут искать? Перебрать всё адресное пространство за обозримое время нереально. Значит, будут ориентироваться на гостевую PTE. А обращения к ней можно отфильтровать, скрыв записи о регионах нашего гипервизора.
    Кроме того - ещё один момент - используя гипервизор, мы развязываем руки в области ядерных хуков. Если реализована подмена памяти, то и PatchGuard нам уже не страшен и обход античитов упрощается.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.241
    адрес в озу кратен номеру слота в кэше.
    неважно акь подменяешь память (весь принцип виртуальной памяти того же хоста тоже строится на подменах), важно, что у тебя нет эффективного метода заблокировать доступ к памяти. опять же дажЬ в ссанном ринг3 можно прозрачно отчекать всю озу. С дравером и того хужей. полный камуфляж вирты (другими словами, стопудовый эмуль с гирляндами фильтров) тожЪ пустой, ибо тадЫ получаем жуДЪкую просаду профайла. короче, можно соорудить кучу тестов, кои чётко будут показывать, что вирта не соответствует профайлу заявленной жестянки. :)
    --- Сообщение объединено, 1 янв 2020 ---
    и си тесты вполне способны угадать реальный конфиг хоЗЪта :)
     
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Всё равно упорно не понимаю, как ты стал бы искать по всему адресному пространству.
    Пусть обе страницы (исходная и подменная) в кэше. Всё, что ты делаешь - на соответствующий #VMEXIT меняешь физический адрес страницы в PTE с одного на другой (в зависимости от того, какой запрашивают доступ).
    И, собственно, что? Как ты узнаешь, что страницу подменили, если она спокойно читается и там лежат валидные данные? И второе - всё-таки, как искать скрытую гипервизором память? Вот у тебя адресное пространство от 0x00000000 до 0xFFFF..FF. Идти с шагом по 4 килобайта и смотреть, какое время доступа к каждому адресу? Понадобятся тысячелетия, чтобы обойти всю память и найти такие анклавы.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    melt/spectre вроде бы тогда не заработал на нт, на сколько помню результаты показывали полный анстаб. Тут где то была тема.
     
  14. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    У меня единственная игра на компе, та, что сейчас тестирую...
    Вопрос, наврное, глупый, но можно ли как-то использовать прерыванияя железа/биоса из системы, минуя системные прерывания?

    Сейчас вот почитал, как скрыть виртуальную машину и решил скачать игру, в данный момент качается, пока что клиент не ругается, думаю, управлять с виртуалки самый подходящий вариант ;)
    В целом, планирую написать не чит, а бот, который будет бегать по координатам и выполнять дейлики, никаких преимуществ, кроме автоматизации он иметь не будет, а передача управления
    будет реализована через обычное управление по клавишам и мышке, вернее их эмуляция
     
  15. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Использовать для чего? Какие прерывания тебе нужны и что значит "минуя системные прерывания"? Повесить свой обработчик прерываний, перезаписав виндовый, можно, но тебя прихлопнет PatchGuard. Его надо или отключать или, опять же, с помощью гипервизора, обманывать проверки. Объясни подробнее, что в итоге ты хочешь получить с помощью прерываний.
    --- Сообщение объединено, 1 янв 2020 ---
    А какую ты тестируешь? Какой там античит?
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Как вариант еще можно попробовать запустить игру на линксе под вайн стейджинг. Само собой ядерный протектор не заведется, но потенциально его можно зареверсить и съемулировать его присутствие для юзермодной части игры. Если все это заведеться, то инструментализацию процесса под вайном достаточно легко сделать. Но канеш это много работы.
     
  17. LastNoob

    LastNoob Member

    Публикаций:
    0
    Регистрация:
    28 янв 2018
    Сообщения:
    80
    HoShiMin, игра warframe
    По поводу прерываний, думаю, что должно быть какое-то прерывание, получающее прямой доступ к памяти, минуя winAPI, по факту, все, что мне требуется, это читать память
     
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    Ну посмотри в дизассемблере, как реализована функция NtReadVirtualMemory, проблема в том, что номера сисколов в отличии от Линукса не нормированны, и могут меняться от системы к системе. И еще, если защита реализована в режиме ядра, то вызов через сискол тебе не даст абсолютно ничего.
    --- Сообщение объединено, 1 янв 2020 ---
    https://j00ru.vexillium.org/syscalls/nt/64/
     
  19. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    131
    Напиши макрос на мышь или клаву и мозг не колупай...
     
    Indy_ нравится это.
  20. Indy_

    Indy_ Well-Known Member

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

    Ты не понимаешь главное, что такое адресное пространство. Что бы произвести выборку из чужого процесса твой должен два раза сменить его, переключить таблицы адресной трансляции. Почему два раза - что бы после чтения в промежуточный буфер вернуться в своё ап. Так и работает NtReadVM, два раза переключается ап, после первого переключения область памяти копируется в общий ядерный буфер(пул). Старшие адреса общие, они вне переключения ап, за исключением области гуя разумеется, на который обычно и происходит атака. Код самого ядра же не уязвим ни для каких атак.
    --- Сообщение объединено, 1 янв 2020 ---
    Немного поискал, вот https://seclists.org/fulldisclosure/2013/Dec/130

    К таким атакам ядро не уязвимо. Его пишут спецы, там минимум синхронизаций в сервисной обработке. Данная задача не решаема никак.
     
    LastNoob нравится это.