- Баллы
- 173
Avanguard 2
The Win32 Anti-Intrusion Library
The Win32 Anti-Intrusion Library
Итак, погнали!
Коротко, в чём суть: пишем библиотеку для защиты от инжектов.
Писать будем с нуля, основываясь на опыте прошлой версии. Постараемся сделать проект максимально простым, легковесным и быстрым, а главное - надёжным.
В рамках проекта, кроме базового функционала, постараемся решить инжект валидных библиотек (стримилки, драйвера) и сделать удобную систему информирования об инжектах, чтобы решение о блокировке принимала не библиотека, а человек, что позволит минимизировать последствия ложных срабатываний.
Делать будем эталонную реализацию, пользуясь идеями которой, каждый сможет написать свой собственный вариант защиты от распространённых видов инжектов для своих собственных защит и лаунчеров. В комментариях также буду описывать принципы работы основных компонентов (защита от создания потоков, защита от модификации памяти, защита от макросов и т.д.), подводные камни и возможные проблемы, а также, возможные пути их решения.
Список возможностей (будет пополняться по мере разработки):
- [✔️] Защита от создания сторонних потоков
- [✔️] Защита от инжекта через оконные хуки
- [✔️] Фильтр загружаемых модулей
- [✔️] Защита от инжекта через AppInit_DLLs
- [✔️] Защита от мануалмаппинга библиотек
- [✔️] Защита от угона контекста потоков
- [✔️] Фильтр APC
- [❌] Проверка исполняемых секций
- [❌] Поддержка пользовательских хуков
- [✔️] Проверка памяти на наличие неизвестных регионов
- [✔️] Проверка стактрейсов
- [❌] Система репортов
- [❌] Привязки к Java, C# и Delphi
- [❌] Связка с драйвером для запрета на получение хэндлов со стороны
Для проекта нам понадобятся:
- Библиотека для перехвата функций - берём свою (HookLib), чтобы иметь полный контроль над установкой перехватов и не тащить лишних зависимостей.
- Дизассемблер (необходим для хуков и проверок) - возьмём Zydis, как самый быстрый и легковесный.
- Некий хэш для проверки секций - возьмём t1ha, как самый быстрый из всех существующих.
- Библиотека для шифрования строк, чтобы в бинарнике нельзя было найти нужную строку и по ней выйти на место её использования - берём xorstr.
Основной репозиторий проекта: https://github.com/HoShiMin/Avanguard
WinXP не поддерживается. Возможно, в будущем поддержка появится, но не в приоритете.
Заметки о принципах работы защиты:
#1: Защищаемся от создания потоков со стороны
#2: Защищаемся от AppInit_DLLs
#3: Защищаемся от инжектов через оконные хуки
#4: Защищаемся от инжектов через APC
#5: Защита от угона контекста
#6: Защита от скана памяти
#7: Виртуализация на службе у читера
Все идеи по предотвращению ложных срабатываний, по защите, предложения по интерфейсу API, по нужным функциям или по оптимизации алгоритмов пишем в комментариях.
Последнее редактирование:




