The Kernel-Bridge Framework

Тема в разделе "WASM.PROJECTS", создана пользователем HoShiMin, 18 ноя 2018.

  1. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Добрый день форумчанам!
    Пишу фреймворк на C++ для свободной работы в Ring0 и исследования памяти ядра и процессов.
    Представляет собой готовый драйвер с заготовками для лёгкого добавления своих обработчиков и файловых фильтров; API, не привязанный к проекту, и который можно использовать в сторонних самописных драйверах, а также юзермодная библиотека с обёртками над всем функционалом.

    Из основных возможностей:
    • Гипервизор (AMD-V/RVI)
    • Работа с портами ввода-вывода, проброс в юзермод через IOPL
    • Работа с памятью (физической и виртуальной, юзермодной и ядерной) - аллокации/чтение/запись/маппинг
    • MSR
    • Создание ядерных и юзермодных потоков
    • Доставка APC из ядра
    • Загрузка неподписанных драйверов (без поддержки SEH)
    • Отправка ядерных каллбэков в юзермод (Ob*** и Ps***)
    • Юзермодный файловый фильтр (Create/Read/Write/DeviceIoControl)
    • Исполнение произвольного кода в Ring0 из юзермодной памяти, поддержка SMEP
    • Парсер PE-файлов
    • Парсер PDB
    • Сканер сигнатур из ядра
    • Работа с Mdl из юзермода
    • Биндинг для питона
    В планах:
    • GUI-платформа для рантайм-анализа памяти, дампов, модификации системных данных
    • Скриптовый движок на питоне для прототипирования и выполнения произвольного кода в ядре
    • Интеграция с AsmJIT
    • Библиотека для инжектов и перехватов функций
    • Простой гипервизор для обхода PatchGuard и фильтрации сисколлов
    • Документация, до которой никак не дойдут руки
    • Страничка для проекта либо на github.io, либо на отдельном хостинге
    • Пройти HLK, если драйвер такого типа вообще может его пройти
    Примеры использования:
    И, наконец, репозиторий, где можно скачать подписанные бинарники:

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

    P.S.: Всего неделю назад узнал про аналогичный проект - Google Rekall. Что, однако, не отменяет моих планов!
    P.P.S.: Mikl___ , не серчай за даблпостинг, здесь ошибся с разделом, этот более подходящий (и более живой).
     
    Последнее редактирование: 6 янв 2019
    mantissa, galenkane, Indy_ и ещё 1-му нравится это.
  2. UbIvItS

    UbIvItS Well-Known Member

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

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Пашет на Win7..Win10. В планах есть поддержка ХР, но не в приоритете.

    А что до Rekall'a, он всё же отличается и от Blackbone (тоже "конкурент"), и от кб. В каждом есть свои фичи, которых нет у других. У меня, например, юзермодные фильтры и, видимо, самый обширный набор функций для работы с памятью. И банальная простота: скачал, подключил хедеры и юзай. Rekall же гвоздями приколочен к своему амплуа standalone-инструмента.
     
    galenkane нравится это.
  4. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    А при помощи этого фреймворка можно посниффать, что, драйвер отправляет/получает по шине FireWire?
     
  5. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Нельзя :dntknw:

    Давно уже нет - все его способы инжекта давно палятся всеми античитами, как и сам он давно во всех чёрных списках. Сейчас читеры пишут свои драйвера "под ключ", загружая через win64ast (или через турлу), обходы через DMA. Кое-кто пишет свои гипервизоры. И всё в привате, ибо паблик = моментальный блэклист.
     
  6. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Отличный проект, пробуйте, и ссылку на гитхаб тоже прикрепите. Может кто помогать будет, ревью сделает.
     
  7. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    А ссылка и так в шапке
     
  8. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    ну, что (если сохранишь банальную простоту) это (пожалуй) может стать очень важным аргументом для разгона твоего проекта.
    главное, что код открытый, тч годное можно выдернуть на свои нужды.
    вот на сие точно забей :) поддержка андроида иль линя будут гораздо актуальней :grin:
     
  9. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    Минута критики...
    1) много опасного кода.. в стиле size_t sig_length = strlen(mask)
    2) работа с PE Заявлена но она только UserMode судя по коду, возможно плохо смотрел . Вообще не хватает списка АПИ группированного по функционалу и по режиму работы, с нормальной навигацией, а не по гитхабу.
    3) нет тестов на плохих данных. Например если вы заявляете о безопасном АПИ то имеет смысл добавить тесты, где идут вызовы Всех АПИ с разными некорректными параметрами.

    И это так, на вскидку.
    к слову сказать подобный проект уже лет 10 назад был на гитхабе, и уже тогда С++ использовался гораздо шире.
    Проект был очень сильный.
    https://github.com/icestudent/ontl

    У вас С++ в проекте сильно ограничен. Попробуйте улучшить этот момент тоже. Добавьте Auto в конце концов )
    --- Сообщение объединено, 19 ноя 2018 ---
    Немного почистил во избежании срача
     
  10. Indy_

    Indy_ Well-Known Member

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

    > MmSecureVirtualMemory

    Вы должны знать что это кривая реализация. Она защищает лишь от удаления, но не от смены аттр.

    > Иногда возникает вопрос

    Верно всё, я просто завис на своих идеях. У меня свет клином сошёлся на протекторах и крипторах.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Да, есть такое. В основном, в работе с юзермодными буферами при передаче их по указателю. Где имело смысл, защитил память, поставил проверки, но кое-где - действительно - полагаюсь на то, что пользователь передал валидную память. Решил, что в таких случаях пока лучше положиться на try..except, а потом, при необходимости, в нужных местах добавлять проверки и валидацию.
    А с другой стороны, в конкретно этом примере с strlen - как мы можем быть уверены, что передали валидную строку? strlen_s не гарантирует, что не случится PageFault. Передавать длину извне? Тоже не можем полагаться на эти данные. И, честно говоря, я не вижу гарантированно надёжного способа работать с пользовательскими данными.
    Сделаю поддержку в км, когда напишу км-контейнеры, типа сетов, векторов и мап. Хочется перенести юзермодный модуль в ядро без изменений интерфейса.
    Сделаю вики-страничку на гитхабе, когда закончу питоновский биндинг
    В планах есть, но отложил на потом - слишком долго писать настолько всеобъемлющие тесты. Закончить бы основной функционал, там ещё делать и делать...

    Страшно представить, сколько времени он его писал...

    А как же AddSecureMemoryCacheCallback? Сам её не пробовал, но, судя по докам, каллбэк вызывается также при изменении атрибутов (и нет указания, что только при изменении в сторону уменьшения прав)
     
    Последнее редактирование: 19 ноя 2018
  13. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    ковырялка ядра по-определению надёжной быть не может :) это дэв-режим со всеми сопутствующими траблами :)
     
  14. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    И ещё приходится держать баланс между надёжностью и скоростью разработки, иначе можно погрязнуть в простынях проверок)
    --- Сообщение объединено, 19 ноя 2018 ---
    Как увидел Rekall - тоже появилась шальная мысль написать аналог под линь, но в лине хотя бы нет проблем с драйверами, всегда можно накидать простенький драйвер в 20 строчек и заinsmod'ить.
    А в сторону андроида даже не смотрел, хотя идея интересная)
     
    UbIvItS нравится это.
  15. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    HoShiMin, кстати, самый сок, когда ковырялка пашет под виртой, а юм панелька управления на хосте. + дамп пишется на хост. Тогда можно рестартить вирту с бэкап дампом. :)
     
    HoShiMin нравится это.
  16. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    Хммм, допустим: на виртуалке драйвер и юзермодный прокси, отвечающий за загрузку-выгрузку и общение с хостовой машинкой. Это можно.
     
  17. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    да, акь сказать == проприетарные модули идут без исходников порой, тч надобность ковырялок и в лине начинает быть актуальной :)
     
  18. f1redArk

    f1redArk Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    34
    Извините, а что есть турла?)
     
  19. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.422
    Адрес:
    Россия, Нижний Новгород
    f1redArk, __sheva740 и q2e74 нравится это.
  20. f1redArk

    f1redArk Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    34
    Тупой инжект через хуки до сих пор работает почти везде, ибо если его заблочить, то сразу отвалится куча всяких фрапсов, плееров, и прочего)
    --- Сообщение объединено, 20 ноя 2018 ---
    thx