This repository has been archived by the owner on Sep 20, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 96
/
readme.txt
149 lines (114 loc) · 6.59 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Бут-лоадер для драйверов
------------------------
Позволяет загружать специально собранные драйвера в момент старта ОС.
Драйвер загружается до инициализации ядра NT, а значит до старта PatchGuard, и может патчить любой
ядерный код. Драйвер получает управление раньше всех других загружаемых драйверов (в том числе раньше
всех boot-load драйверов) и может мониторить и влиять на их загрузку.
Цифровая подпись драйвера не требуется.
Поддерживаются все ОС Windows, начиная с XP, и по Windows 8, включительно.
Поддерживаются две архитектуры: x86 и AMD64 (EM64T).
Бут-лоадер работает со всеми типами NTFS-разделов.
Собраный проект состоит из трех основных частей:
- начальный загрузчик (IPL);
- специально собранный, с учетом возможности старта до ядра NT, драйвер;
- программа-установщик (или библиотека-установщик (DLL));
Код IPL метаморфный, состоит из некоторого кол-ва блоков, которые перемешиваются в случайном порядке при
каждой сборке проекта. Код IPL зашифрован, и расшифровывается динамически, в процессе выполнения.
Таким образом, каждый свежесобраный IPL бинарно отличен от предыдущего.
Драйвер также шифруется при записи на диск и расшифровывается начальным загрузчиком при старте.
Имеется ограничение на размер драйвера: в силу технических особенностей работы IPL, размер драйвера
не может превышать 100КБ.
Проект собирается с помощью MS Visual Studio 2005 и MS Windows 7 WDK.
Дополнительные компоненты
-------------------------
Драйвер может содержать в себе следующие дополнительные компоненты:
- мэнеджер виртуальной ФС. Создает виртуальную, зашифрованую(RC6) файловую систему (VFS) в неразмеченных
секторах диска. Предоставляет User-mode интерфейс для работы с файлами на этой ФС.
- фильтр доступа к диску. Блокирует доступ "извне" к секторам, содержащим IPL и виртуальную ФС. Скрывает
виртуальную ФС.
- инжектор DLL. Позволяет загружать(инжектить) DLL, находящиеся на VFS или прикрепленные, непосредственно к
файлу драйвера, в заданные процессы. Имеет интерфейс для управления инжектами из user-mode.
- загрузчик драйверов. Предоставляет интерфейс для возможности загрузки сторонних неподписанных драйверов.
- стек протоколов TCP/IP (включая: ARP, ICMP, DNS). Предоставляет драйверам и user-mode приложениям интерфейс
для работы с сетью, совместимый с BSD-sockets.
Состав проекта
--------------
1. Генератор IPL(\BkGen).
2. Библиотека лоадера (\BkLib).
3. Программа-установщик (\BkSetup).
4. Библиотека-установщик (\SetupDll).
5. Драйвер-инжектор (\KLoader).
6. Библиотека виртуальной ФС (\FsLib).
7. Библиотека для загрузки сторонних драйверов (\DrvLdr).
8. Библиотека-фильтр для защиты секторов загрузчика и виртуальной ФС (\BkFilter).
9. Утилита для прикрепления файлов(\FJ).
10. Утилита для управления виртуальной ФС(\VFS)
11. Батники для сборки примерного установщика с примерами DLL (\BkBuild).
Генератор IPL
-------------
Собирается только для х86 в исполняемый файл BkGen.exe
При запуске создает файл VBR.COM содержащий метаморфный код начального загрузчика.
При каждом запуске генерирует уникальный загрузчик.
Библиотека лоадера
------------------
Собирается под х86 и под AMD64 в статическую библиотеку (.lib).
Содержит функции, необходимые для установки и инициализации лоадера.
Импортируется установщиком и драйвером. Подробнее см. файл bklib.h.
Программа-установщик
--------------------
При сборке ищется файл лоадера VBR.COM и интегрируется в ресурсы.
Собирается только под x86 в исполняемый файл BkSetup.exe.
Библиотека-установщик
---------------------
Собирается под х86 и х64 в динамическую библиотеку SetupDll.dll
Библиотека экспортирует одну функцию: ULONG BkInstall(BOOL bReboot),
при вызове которой, производится установка загрузчика в системе.
В случае ошибки, функция возвращает код ошибки Win32.
Драйвер-инжектор
----------------
Собирается под х86 и AMD64 как драйвер NT (kloader.sys).
Инжектит прикрёпленные DLL в указаннае процессы. Список DLL и процессов
задается файлом конфигурации для утилиты FJ.
Библиотека виртуальной ФС
-------------------------
Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys).
Создает виртуальную файловую систему в неразмеченной области системного жесткого диска.
В случае отстутсвия неразмеченной области достаточного размера, уменьшается
размер последнего раздела на диске.
ФС представляет собой модифицированную FAT16. Размер кластера равен размеру физического
сектора диска. Максимальный поддерживаемый объем виртуального диска ~32Мб.
Имена файлов в формате 8.3, длинные имена не поддерживаются. Каталоги не поддерживаются.
ФС полностью зашифрована посредством RC6.
Библиотека для загрузки сторонних драйверов
-------------------------------------------
Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys).
Позволяет загружать и выполнять образы сторонних драйверов ядра NT.
Библиотека-фильтр для защиты секторов загрузчика и виртуальной ФС
-----------------------------------------------------------------
Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys).
Фильтрует низкоуровневые запросы на чтение/запись секторов диска.
Запрещает изменение(запись) секторов, содержащих начальный загрузчик.
Блокирует изменение сторонними приложениями и драйверами секторов, содержащих
виртуальную ФС. При чтении секторов, содержащих виртуальную ФС, обнуляет
их содержимое, маскируя таким образом, наличие ФС.
Утилита для прикрепления файлов
-------------------------------
Собирается только под х86 в исполняемый файл FJ.EXE.
Используется для присоединения инжектируемых DLL к файлу драйвера и для
присоединения файла драйвера к инсталлеру. Подробнее см. \FJ\ReadMe.txt.
Батники для сборки примерного установщика
-----------------------------------------
BkBuild.bat - собирает инсталлер с прикреплёнными к нему драйверами kloader.sys
для х86 и amd64, соответственно. К каждому драйверу прикрепляются
DLL для инжекта.
BkSetup.cfg - конфигурационный файл для сборки прграммы-установщика и прикрепления к нему драйверов.
setupdll.cfg- конфигурационный файл для сборки библиотеки-установщика и прикрепления к ней драйверов.
demo32.dll - 32х-битная демо-библиотека.
demo64.dll - 64х-битная демо-библиотека.
Порядок сборки
--------------
1. При помощи Visual Studio 2005 собрать весь проект. Сначала собрать под i386,
затем, под amd64.
2. Открыть консоль (CMD.EXE), зайти в папку \BkBuild и запустить из консоли
BkBuild.exe
3. Забрать готовый установщик из папки \BkBuild\Release.