
Автоматизированный инструмент для обнаружения уязвимостей перехвата DLL, который анализирует PE-бинарные файлы во время загрузки и выполнения с помощью перехвата API, перечисляет отсутствующие DLL и тестирует вредоносную имитацию.
aDLL — это инструмент для анализа бинарных файлов, ориентированный на автоматическое обнаружение уязвимостей DLL Hijacking. Инструмент анализирует образ бинарного файла, загруженный в память, для поиска DLL, загружаемых во время загрузки, и использует библиотеку Microsoft Detours для перехвата вызовов функций LoadLibrary/LoadLibraryEx для анализа DLL, загружаемых во время выполнения. Цель — получить список DLL, которые не найдены исполняемым файлом в тех папках, где они ищутся.
Для начала использования aDLL в папке Binaries доступен скомпилированный исполняемый файл. Рекомендуется использовать версию, архитектура которой (32- или 64-разрядная) соответствует версии анализируемого исполняемого файла.
Для корректной работы инструмента необходимо, чтобы DLL «hook32», «hook64», «informer32» и «informer64» находились в том же каталоге, что и исполняемый файл aDLL.exe.
aDLL разработан и протестирован в системах Windows 10. Если система старая и/или Visual Studio не установлена, возможно, инструмент выдаст ошибку «VCRUNTIME140.dll not found». В этом случае необходимо установить обновление Visual C++ Redistributable. Обновление можно найти здесь: https://www.microsoft.com/es-ES/download/details.aspx?id=49984.
Для изменения/перекомпиляции инструмента рекомендуется использовать Visual Studio 2015 или более позднюю версию. Решение Visual Studio состоит из трех проектов: aDLL, Hook и Informer. _ - aDLL: должен быть скомпилирован как исполняемый файл. При возникновении ошибок компоновки необходимо добавить библиотеку shlwapi.lib в качестве дополнительной зависимости с помощью компоновщика Visual Studio._ _ - Hook: должен быть скомпилирован как DLL с той же архитектурой, что и анализируемый исполняемый файл. Полученный файл Hook должен быть переименован в hook32.dll или hook64.dll в зависимости от ситуации. Если вы хотите анализировать исполняемые файлы обеих архитектур, необходимо иметь обе DLL в том же каталоге, что и aDLL.exe._ _ - Informer: то же, что и Hook. Должен быть скомпилирован как DLL и переименован в informer32.dll или informer64.dll._
Инструмент имеет опцию -h для вывода на экран краткого описания доступных опций.
.\aDLL -h
В качестве типичного примера использования aDLL должен получить как минимум путь к анализируемому исполняемому файлу.
.\aDLL -e "C:\System32\notepad.exe"
ОПЦИИ:
-h Отображает справку инструмента с кратким описанием каждой опции.
-e Указывает путь к исполняемому файлу, который будет анализироваться aDLL.
-t Указывает путь к текстовому файлу со списком путей исполняемых файлов.
-o Указывает путь к каталогу, в котором будет сохранен отчет для каждого сканированного исполняемого файла.
-m Выполняет поиск манифеста исполняемого файла и отображает его на экране. aDLL ищет манифест, встроенный в бинарный файл; он не найдет манифест, если он существует как внешний файл.
-w Определяет количество секунд, в течение которых процесс исполняемого файла будет оставаться открытым при поиске DLL, загружаемых во время выполнения. Время по умолчанию — 20 секунд.
-aDLL автоматически проверит, будет ли выполнена вредоносная DLL путем имитации легитимной DLL в порядке поиска, если был найден подходящий кандидат.
-d Используется вместе с опцией -a; эта опция позволяет выбрать путь к DLL, которая будет использоваться в качестве вредоносной DLL.
-r Каждая DLL, импортируемая исполняемым файлом, может, в свою очередь, импортировать другие DLL в качестве зависимостей. Будет выполнен рекурсивный поиск «n» раз по всем DLL, найденным aDLL, которые не перенаправлены (ApiSetSchema или WinSxS) и не принадлежат к списку Known DLL системы.
Hook DLL основана на идее DLLHSC от ctxis: https://github.com/ctxis/DLLHSC
дополнительную информацию о лицензиях можно найти в файле licenses.txt
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ИСКИ, УБЫТКИ ИЛИ ИНЫЕ ОБЯЗАТЕЛЬСТВА, БУДЬ ТО В РЕЗУЛЬТАТЕ ДЕЙСТВИЯ ДОГОВОРА, ПРАВОНАРУШЕНИЯ ИЛИ ИНОГО, ВОЗНИКШИЕ ИЗ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ В СВЯЗИ С НИМ, ВКЛЮЧАЯ ИСПОЛЬЗОВАНИЕ ИЛИ ИНЫЕ ДЕЙСТВИЯ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. ВСЯКИЙ РАЗ, КОГДА ВЫ ВНОСИТЕ ВКЛАД В РЕПОЗИТОРИЙ, СОДЕРЖАЩИЙ УВЕДОМЛЕНИЕ О ЛИЦЕНЗИИ, ВЫ ЛИЦЕНЗИРУЕТЕ СВОЙ ВКЛАД НА ТЕХ ЖЕ УСЛОВИЯХ И СОГЛАШАЕТЕСЬ, ЧТО ИМЕЕТЕ ПРАВО ЛИЦЕНЗИРОВАТЬ СВОЙ ВКЛАД НА ЭТИХ УСЛОВИЯХ. ЕСЛИ У ВАС ЕСТЬ ОТДЕЛЬНОЕ СОГЛАШЕНИЕ О ЛИЦЕНЗИРОВАНИИ ВАШИХ ВКЛАДОВ НА ДРУГИХ УСЛОВИЯХ, НАПРИМЕР, ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ УЧАСТНИКА, ТО ЭТО СОГЛАШЕНИЕ ИМЕЕТ ПРЕИМУЩЕСТВО.