Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dr_checker — DR.CHECKER : Инструмент обнаружения уязвимостей Soundy для драйверов ядра Linux | Kitploit
Инструменты/GitHubGitHub/ucsb-seclab/dr_checker
Статический анализСканеры уязвимостейАнализ уязвимостейФаззингАнализ Бинарных Файлов
GitHubucsb-seclab/dr_checker

dr_checker

DR.CHECKER : Инструмент обнаружения уязвимостей Soundy для драйверов ядра Linux

Репозиторий
33972124 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

DR.CHECKER: Инструмент Soundy для обнаружения уязвимостей в драйверах ядра Linux

License

warning

Этот репозиторий содержит все исходники, включая скрипты настройки. Теперь с удивительным UI для просмотра предупреждений вместе с соответствующими исходными файлами.

Протестировано на

Ubuntu >= 14.04.5 LTS

Объявления

16 февраля 2018:

  • DR.CHECKER был докеризирован. Обратитесь к Docker Usage о том, как его использовать.

Часто задаваемые вопросы

0. Использование докеризированной настройки (рекомендуется)

Обратитесь к документу Docker Usage для подробностей об использовании DR.CHECKER в предварительно собранном Docker-контейнере.

1. Настройка

Наша реализация основана на LLVM, а именно LLVM 3.8. Нам также нужны инструменты, такие как c2xml, для разбора заголовочных файлов.

Сначала убедитесь, что у вас есть cmake (используется скриптами настройки/сборки) и libxml (требуется для c2xml):

sudo apt-get install cmake libxml2-dev

Затем мы создали единый скрипт, который загружает и собирает все необходимые инструменты.

cd helper_scripts
python setup_drchecker.py --help
usage: setup_drchecker.py [-h] [-b TARGET_BRANCH] [-o OUTPUT_FOLDER]

optional arguments:
  -h, --help        show this help message and exit
  -b TARGET_BRANCH  Branch (i.e. version) of the LLVM to setup. Default:
                    release_38 e.g., release_38
  -o OUTPUT_FOLDER  Folder where everything needs to be setup.

Пример:

python setup_drchecker.py -o drchecker_deps

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

2. Сборка

Это зависит от успешного завершения Настройки. У нас есть единый скрипт, который собирает всё; пожалуйста.

cd llvm_analysis
./build.sh

3. Запуск

Это зависит от успешного завершения Сборки. Чтобы запустить DR.CHECKER на драйверах ядра, нам нужно сначала преобразовать их в LLVM байткод.

3.1 Сборка ядра

Сначала нам нужно иметь собираемое ядро. Это означает, что вы должны иметь возможность скомпилировать ядро, используя обычную настройку сборки, т.е. make. Мы сначала захватываем вывод команды make, из этого вывода мы извлекаем точную команду компиляции.

3.1.1 Генерация вывода make (или makeout.txt)

Просто передайте V=1 и перенаправьте вывод в файл. Пример:

make V=1 O=out ARCH=arm64 > makeout.txt 2>&1

ПРИМЕЧАНИЕ: НЕ ИСПОЛЬЗУЙТЕ НЕСКОЛЬКО ПРОЦЕССОВ, т.е. -j. Запуск в многопроцессорном режиме испортит выходной файл, так как несколько процессов пытаются записывать в него.

Вот и всё. DR.CHECKER позаботится обо всём остальном.

3.2 Запуск анализа DR.CHECKER

Есть несколько шагов для запуска анализа DR.CHECKER, все эти шаги упакованы в один скрипт helper_scripts/runner_scripts/run_all.py Как запустить:

python run_all.py --help
usage: run_all.py [-h] [-l LLVM_BC_OUT] [-a CHIPSET_NUM] [-m MAKEOUT] [-g COMPILER_NAME] [-n ARCH_NUM] [-o OUT] [-k KERNEL_SRC_DIR] [-skb] [-skl] [-skp] [-ske] [-ski] [-f SOUNDY_ANALYSIS_OUT]

optional arguments:
  -h, --help            show this help message and exit
  -l LLVM_BC_OUT        Destination directory where all the generated bitcode files should be stored.
  -a CHIPSET_NUM        Chipset number. Valid chipset numbers are:
                        1(mediatek)|2(qualcomm)|3(huawei)|4(samsung)
  -m MAKEOUT            Path to the makeout.txt file.
  -g COMPILER_NAME      Name of the compiler used in the makeout.txt, This is
                        needed to filter out compilation commands. Ex: aarch64-linux-android-gcc
  -n ARCH_NUM           Destination architecture, 32 bit (1) or 64 bit (2).
  -o OUT                Path to the out folder. This is the folder, which
                        could be used as output directory during compiling
                        some kernels. (Note: Not all kernels needs a separate out folder)
  -k KERNEL_SRC_DIR     Base directory of the kernel sources.
  -skb                  Skip LLVM Build (default: not skipped).
  -skl                  Skip Dr Linker (default: not skipped).
  -skp                  Skip Parsing Headers (default: not skipped).
  -ske                  Skip Entry point identification (default: not
                        skipped).
  -ski                  Skip Soundy Analysis (default: not skipped).
  -f SOUNDY_ANALYSIS_OUT    Path to the output folder where the soundy analysis output should be stored.

Скрипт собирает, компонует и запускает DR.CHECKER на всех драйверах, поэтому может занять значительное время (45–90 мин). Если вы хотите запустить DR.CHECKER вручную на отдельных драйверах, обратитесь к standalone.

Вышеуказанный скрипт выполняет следующие задачи в многопроцессорном режиме, чтобы использовать все ядра CPU:

3.2.1. Сборка LLVM

  • Включено по умолчанию. Все сгенерированные файлы байткода будут помещены в папку, указанную в аргументе -l. Этот шаг занимает значительное время, в зависимости от количества имеющихся у вас ядер. Итак, если вы уже выполнили этот шаг, вы можете пропустить его, передав -skb.

3.2.2. Компоновка всех файлов байткода драйверов в единый файл байткода.

  • Включено по умолчанию Это выполняет компоновку: проходит по всем файлам байткода, определяет связанные файлы, которые нужно скомпоновать, и компонует их (с помощью llvm-link) в единый файл байткода (который будет сохранён рядом с соответствующим файлом байткода).

Аналогично предыдущему шагу, вы можете пропустить этот шаг, передав -skl.

3.2.3. Разбор заголовочных файлов для определения полей функций входа.

  • Включено по умолчанию. Этот шаг ищет объявления точек входа в заголовочных файлах и сохраняет их конфигурацию в файле: hdr_file_config.txt в каталоге сборки LLVM. Чтобы пропустить: -skp

3.2.4. Определение точек входа во всех скомпонованных файлах байткода.

  • Включено по умолчанию Этот шаг определяет все точки входа во всех скомпонованных файлах байткода драйверов. Результат будет сохранён в файле: entry_point_out.txt в каталоге сборки LLVM. Пример содержимого файла entry_point_out.txt:
FileRead:hidraw_read:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc
FileWrite:hidraw_write:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc
IOCTL:hidraw_ioctl:/home/drchecker/33.2.A.3.123/llvm_bc_out/drivers/hid/llvm_link_final/final_to_check.bc

Чтобы пропустить: -ske

3.2.5. Запуск Soundy-анализа на всех определённых точках входа.

  • Включено по умолчанию. Этот шаг запустит DR.CHECKER на всех точках входа в файле entry_point_out.txt. Результат для каждой точки входа будет сохранён в папке, указанной для опции -f. Чтобы пропустить: -ski

3.2.6 Пример:

Теперь мы покажем пример от момента, когда у вас есть исходники ядра, до получения предупреждений об уязвимостях. Мы загрузили ядро mediatek 33.2.A.3.123.tar.bz2. Сначала скачайте и распакуйте указанный файл. Допустим, вы распаковали файл в папку с именем: ~/mediatek_kernel

Скачать инструмент