Антиинжект: отловить смену контекста

Тема в разделе "WASM.BEGINNERS", создана пользователем HoShiMin, 5 окт 2017.

  1. Indy_

    Indy_ Well-Known Member

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

    Даже если вы захватите тред, то ничего не сможите вызвать. Любая передача управления приведёт к исключению, срабатыванию ловушки.

    И вообще данная тема - основа безопасности, есть множество разработок и они не полноценны. Это самая актуальная тема на данный момент. Почему вы думаете что можите найти решение, которое никто не нашёл.
     
  2. Fail

    Fail Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2012
    Сообщения:
    503
    Я бы сказал, что _вцелом_ нужно более подробное описание, структурированное и понятное, как сделали авторы доклада о CCFIR.

    Мммм..., а почему вы тестируете подобные техники на не современной ОС?

    Было бы странно, если бы он хотел найти решение, которое уже найдено:)
     
  3. unc1e

    unc1e Active Member

    Публикаций:
    2
    Регистрация:
    28 июл 2017
    Сообщения:
    287
    Я понял вашу концепцию(надеюсь), но вот к примеру:
    1) Мы вклиниваемся в визор
    2) В цикле, где он перебирает байты, определяет длину инструкций, копирует их в буфер с необходимыми правами - именно там мы можем вызывать произвольный код/модифицировать регистры.
    Те речь не идет о передачи потока управления в read-only память, я имел ввиду выполнение произвольных команд внутри тела визора. Та же цепочка SuspendThread("SomeHypervizorThread") -> SetThreadContext -> ResumeThread позволит нарушить целостность потока управления визора, а, следовательно, и самого приложения
     
  4. Indy_

    Indy_ Well-Known Member

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

    > Мммм..., а почему вы тестируете подобные техники на не современной ОС?

    А какая разница, я в той оси помню нужные мне адреса в км и прочие вещи. Зачем себе создавать помехи.

    unc1e,

    Эта техника зарубает любой инжект и залив на корню, какие то уязвимости в визоре нет смысла искать его не имея - да, для аллокаций используется штатный код, который выполняется под визором через рекурсивный его вызов, но данные тех детали значения не имеют.
     
  5. Indy_

    Indy_ Well-Known Member

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

    > Я бы сказал, что _вцелом_ нужно более подробное описание, структурированное и понятное

    Основы я описал, причём думаю не плохо. Выполните свою работу, тогда можно обсудить и углубиться в тех детали. Но а пока это не нужно. Любой иной человек не дал бы вам данной инфы - эта железячная техника, она много весит".
     
  6. unc1e

    unc1e Active Member

    Публикаций:
    2
    Регистрация:
    28 июл 2017
    Сообщения:
    287
    Спасибо вам за замечательную информацию - было очень полезно узнать про методы борьбы с ROP и подобными инжектами))
     
  7. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Indy_, Ваша реализация основана на Intel SGX?
     
  8. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.553
    Адрес:
    Russia
    Ну вот Инде заставили выложить часть карт на стол. Зря он повелся на "слабо". Надо было дальше молчать. Хотя ТС-у данные подсказки все равно ничего не дадут (ИМХО, не в обиду).
     
  9. HoShiMin

    HoShiMin Well-Known Member

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

    HoShiMin Well-Known Member

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

    Indy_ Well-Known Member

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

    Я ничего не говорил про sgx. Мисье не читает, он гадает ?

    https://wasm.in/blogs/softvernye-anklavy.548/

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

    Его в памяти вообще может не быть, это софтверный анклав. Он существует только при наличии выборки данных(DF).

    > существуют ли юзермодные способы создать отображение уже выделенной памяти?

    Нет. Зачем вам это ?
     
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    https://exelab.ru/f/index.php?action=vthread&forum=6&topic=24797

    Тема создана для поиска решения по OP инжектам и я закрыл её так как решение найдено.

    https://exelab.ru/f/index.php?action=vthread&forum=6&topic=24744&page=0

    Для увеличения тайминга при работе визора цикличный код должен быть оптимизирован через его изоляцию в буфер.

    https://exelab.ru/f/index.php?action=vthread&forum=3&topic=24393&page=0

    Поиск лучшего дизасма по профайлу.
     
  13. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.460
    Адрес:
    Россия, Нижний Новгород
    Indy_, огромное спасибо за матчасть! Теперь есть, от чего отталкиваться
     
  14. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Э, не)) это давно еще в 2016 году осенью в виде PoC (ReX) было мной реализовано, Inde, я же писал об этом еще.... потом появились ёлки - метелки - сатаны и пети, визоры -гуано, имхо все встроено в железо, вот сижу и думаю, кто мне чип тюнинг удаленно на матринке делает ;)
     
  15. Indy_

    Indy_ Well-Known Member

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

    Я как то не особо понимаю ваш ход мыслей, вы их описывайте, ну что бы не приходилось задавать эти вопросы.
     
  16. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Один раз прочитал, ничего не понял. Второй раз прочитал, опять ничего не понял. Задача тс понятна и очевидна в общем случае нерешаема.
    Решение которое привел инди, мне полностью не понятно из-за обрывистого повествования, но что сразу понятно, что производительность у такого решения будет низкая.
    Главное, чего я не могу понять, зачем это нужно. Получается такой своего рода JIT с гарантированным (? без полного описания не могу сказать) деревом выполнения, но нах это нужно я хз.
     
  17. Indy_

    Indy_ Well-Known Member

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

    > но что сразу понятно, что производительность у такого решения будет низкая.

    Я ранее не раз сказал про профайл. Это важно. Смотрите тут поиск решений по данной задаче:

    Оптимизация циклов - цикл выделяется в буфер и там исполняется https://exelab.ru/f/index.php?action=vthread&forum=6&topic=24744&page=0

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

    Вы можите найти мои примеры тестов, в виде видосов, просадка профайла визуально не заметна даже на тяжёлых апп, типо браузеров.

    Тему вернули эту не просто для обсуждения, это был линк из другой темы.
     
  18. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Я пока вообще не понял, зачем это может быть нужно. Честно, мне нету смысла вникать слишком глубоко, однако если объясните в чем цель всего этого скажу спасибо, просто любопытно. Пока вижу выполнение кода в контексте другого процесса.
     
  19. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    ммм, а как же Inde APC? те же TLS или уведомления DllThread? Разъясните почему свой поток с чужим трэдом можно перепутать? или я туплю? Помните на руткисах и кряклабе я выкладывал сорцы, да они на Си и сложны но все же пахали...