Skip to content

cgnuses/hashlist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hash unload tool

ПО выгружающая хеши пользователей домена Windows Server 2003/08

Описание предметной области

Данное ПО получает доступ при помощи легальных API Microsoft к структуре данных Active Directory.

Контроллер домена 2003/08 для хранения учётных данных пользователей использует встрроенные механизмы, имеющее внутреннее название Jet Blue. До 2005 года данная технология была закрытой и использовалась для хранения состояний различного встроенного ПО Microsoft. Данное решение использовалось Microsoft начиная с версий Windows XP 64bit/Win2K, и продолжает использоваться на данный момент в текущих продуктах Microsoft, таких как Active Directory и Exchange 2000. В конце 2005 года Microsoft приняло решение опубликовать Jet Blue, посчитав что данное решение достаточно полезно для сторонних разработчиков и опубликовала данный продукт под новым брэндом "Extensible Storage Engine". Необходимые, для работы с данным решением(ESE), заголовочные файлы и библиотеки располагаются в Windows Server 2003 SP1 Platform SDK. Весь функционал собран в едином бинарном файле esent.dll и доступен данный интерфейс начиная с Win2K.

ESE – это технология индексированного и последовательного доступа: "indexed and sequential access method" (ISAM). Её основное назначение заключается работа с таблицами при использовании индексной и курсорной навигации (indexed or sequential cursor navigation). Предоставлении механизма хранения в режиме пользователя(UserMode), для управления данными, размещёнными в плоском бинарном файле, доступ к которому осуществляется через Win32 API файловой системы.

Как ранее упоминалось весь функционал сосредоточен в одной DLL (esent.dll), которая загружается в адресное пространство клиентского приложения. Прототипы всех функций/сообщеня о ошибках и т.д. расположены в заголовочном файле (esent.h)

Данные учётных записей храняться в базе NTDS.dit пароли учётных записий захешированны по алгоритму LM/NTLM. Для получения более детальной информации нужно искать более надёжные источники. А требуемая информация DN и т.д. располагается в таблице datatable. В столбце

В с вязи с малыми сроками на реализацию проекта, выбор средств разработки и формирование тестового стенда, производилась по линии наименьшего затрата ресурса (ЧЧ - Человеко Часы).

Описание песочницы.

  • В качестве тестовой платформы мы возьмём Windows Server 2008 R2.
  • В качестве компилятора будем использовать Mingw-w64. Данный компилятор предполагает использование gcc в среде windows. В отличии от стандартного Mingw, данная ветка предлагает полный доступ к функционалу Win32 API включая поддержку ESE(JetBlue).

Сборка проекта

Для сборки проекта необходимо запустить консоль MinGW - Ярлык "Run terminal". Данный коммандный файлустановит необходимые переменные окружения для сборки. Далее необходимо пройти в корень проекта и запустить make.bat

Реализация

Перед началом работы с ESE необходимо произвести её инициализацию, которая происходит в несколько этапов:

  1. Первичная настройка параметров.
  2. Создание экземпляра движка.
  3. Настройка параметров сессии.
  4. Инициализация созданного экземпляра.

Первичная настройка параметров.

На данном этапе мы производим настройку размера страницы для NTDS.dit это будет 8192(0x2000) байт. Для установки параметров воспользуемся JetSetSystemParametr с параметром JET_paramDatabasePageSize и его значением 0x2000

Создание экземпляра движка:

JetCreateInstance создаёт экземпляр Jet движка

Настройка параметров сессии

Настроим минимально необходимый набор параметров:

  • recovery off
  • online defragmentation off
  • max temporary table is 7
  • setup temporary path Для установки параметров соеденения используем JetSetSystemParameter

И для инициализации движка воспользуемся JetInit. После успешного создания сессии Необходимо подключиться к интересующим нас данным которые храняться в файле NTDS.dit Для этого мы будем использовать функции JetAttachDatabase и JetOpenDatabase.

Подключение NTDS.dit и работа с ним

Для работы с БД NTDS.dit необходимо произвести его подключение и в последствии его открытие. JetAttachDatabase и JetOpenDatabase

Интересующая нас информация храниться в таблице datatable Хеши паролей находятся в колонках "ATTk589914" для NT-Хеша и "ATTk589879" для LM. Имя пользователя в колонке "ATTm590045"

Используемые документы:

About

Дамп AD

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published