Экстракт хэшей паролей AD и их вскрытие при помощи John the Ripper

Необходимо

Экспорт таблиц из ntds.dit + SYSTEM

Используем libesedb (команда esedbexport)

/usr/local/bin/esedbexport -m tables /home/itsec/ntds.dit

Извлечение таблиц занимает сравнительно долгое время (~60 минут), это зависит от объема базы ntds.dit

esedbexport 20160622
Opening file.
Exporting table 1 (MSysObjects) out of 14.
Exporting table 2 (MSysObjectsShadow) out of 14.
Exporting table 3 (MSysObjids) out of 14.
Exporting table 4 (MSysLocales) out of 14.
Exporting table 5 (datatable) out of 14.
Exporting table 6 (hiddentable) out of 14.
Exporting table 7 (link_history_table) out of 14.
Exporting table 8 (link_table) out of 14.
Exporting table 9 (sdpropcounttable) out of 14.
Exporting table 10 (sdproptable) out of 14.
Exporting table 11 (sd_table) out of 14.
Exporting table 12 (MSysDefrag2) out of 14.
Exporting table 13 (quota_table) out of 14.
Exporting table 14 (quota_rebuild_progress_table) out of 14.
Export completed.
itsec@localhost:/tmp$

После окончания экпорта, таблицы будут находиться в директории ndts.dit.export.

Экспорт хэшей из таблиц

Используем ntdsxtract (скрипт dsusers.py) Данный скрипт может выгружать хэши в удобном формате для таких инструментов как John The Ripper, hashcat и ophCrack. Для этого необходимо указать параметр –pwdformat соответсвенно john, ocl или ophc

Выгрузка для John The Ripper

python dsusers.py /home/itsec/ntds.dit.export/datatable.4 /home/itsec/ntds.dit.export/link_table.7 dump_john --syshive /home/itsec/SYSTEM --passwordhashes --lmoutfile lm.john.out --ntoutfile nt.john.out --pwdformat john

Вормат хэша в выгруженном файле:

Guest:$NT$afe58069dad3c0d3fa42149193568d64:S-1-5-21-763579524-529803068-617630493-501::

Выгрузка для Hashcat

python dsusers.py /home/itsec/ntds.dit.export/datatable.4 /home/itsec/ntds.dit.export/link_table.7 dump_hashcat --syshive /home/itsec/SYSTEM --passwordhashes --lmoutfile lm. ocl.out --ntoutfile nt. ocl.out --pwdformat ocl

Вормат хэша в выгруженном файле:

Guest:afe58069dad3c0d3fa42149193568d64

Выгрузка для ophCrack

python dsusers.py /home/itsec/ntds.dit.export/datatable.4 /home/itsec/ntds.dit.export/link_table.7 dump_hashcat --syshive /home/itsec/SYSTEM --passwordhashes --lmoutfile lm. ophc.out --ntoutfile nt. ophc.out --pwdformat ophc

Вормат хэша в выгруженном файле:

Guest::999d3225ccce619eaad3b435b51404ee:afe58069dad3c0d3fa42149193568d64:S-1-5-21-763579524-529803068-617630493-501::

John The Ripper

Инструмент John The Ripper может работать в режиме брутфорса и перебора по словарю. При этом в случае перебора по словарю можно использовать разнообразные правила, изменяющие каждое из слов в словаре. Например, менять регистр, инверсировать или добавлять цифры(спецсимволы).

Словари

Популярные пароли

В файле /usr/share/john/password.lst собраны наиболее популярные пароли.

Расширенный англо-русский словарь

В файле /usr/share/john/all.lst собраны потенциальные парольные значения на английском и русском языках.

Правила

В инструменте John The Ripper по умолчанию есть 80 правил, а так же можно запускать с значением none, т.е. без правил, и all – все правила. All korelogic replaceletters replacespecial2special l33t appendyears_addspecialeverywhere appendnumnumnum_addspecialeverywhere appendnumnum_addspecialeverywhere appendnum_addspecialeverywhere prependnumnum_appendnumspecial append1_addspecialeverywhere prependjustspecials appendjustspecials3times appendspeciallowerlower appendcap-num_or_special-twice adddotcom replaceletterscaps replacenumbers replacenumbers2special appendmonthcurrentyear appendmonthday add1234_everywhere prependdaysweek add2010everywhere prepend4lettermonths addshortmonthseverywhere monthsfullpreface appendjustspecials appendnumbers_and_specials_simple appendjustnumbers prependandappendspecial devprodtestuat addjustnumbers append2numspecial append3numspecial append4numspecial prepend4numappendspecial append2letters prependspecialspecialappendnumbersnumbernumber prependspecialspecialappendnumbersnumber prependspecialspecialappendnumber appendspecialnumbernumbernumber appendspecialnumbernumber prependspecialspecial prepend2numbersappend2numbers prependnumnumspecial prependnumnumnumnum prependnumnumnum prependnumnum prependnumnumappendspecial prependcapcapappendspecial appendspecial4num appendspecial3num append6num append5num append4num appendcurrentyearspecial appendyears prependyears prependhello appendseason prependseason jumbo single-extra loopback oi I i3 i2 i1 o o3 o2 o1 oldoffice split nt wordlist extra single drop none

Эмпирическим путем выявлен наиболее эффективное правило – korelogic.

Korelogic

Данное правило создано компанией Korelogic Security специально для своей форензик лаборатории. Это комплексное правило, включающее в себя 58 правил. Его детали можно посмотреть и изменить /usr/share/john/korelogic.conf Команды

Популярные пароли

john --format=NT --wordlist=/usr/share/john/password.lst --rules=korelogic /home/itsec/dump_john/nt.john.out

Пароли, которые удалось взломать john собирает в файл /root/.john/john.pot . Это результирующий файл, в котром собираются результаты разных прогонов, поэтому если нужен результат конкретного словаря или правила, перед запуском нужно стереть этот файл

cd /root/.john/
rm john.pot

Так же результат можно посмотреть командой:

john --show /home/itsec/dump_john/nt.john.out 

Расширенный словарь

john --format=NT --wordlist=/usr/share/john/all.lst --rules=korelogic /home/itsec/dump_john/nt.john.out

Работа с результатами

John

Для просмотра результатов работы утилиты John The Ripper нужно использовать команду:

john --show /home/itsec/dump_john/nt.john.out

Эта команда выведет на экран все расшифрованные пароли с именем учетной записи и SID. Нужно скопировать и вставить вставить в файл Excel.

В Excel

В результах расшифровки будут присутствовать заблокированные УЗ. Поэтому для начала нужно определить какие из них заблокированы. Для этого нужно сделать выгрузку УЗ с полем Enable из AD через PowerShell:

Get-ADUser -filter * | select SamAccountName, Enabled | Export-Csv

Далее проверить статус УЗ при помощи функции VLOOKUP После того, как мы дополнили таблицу результата статусом УЗ, можно добавить таблицу подсчитывающую количество паролей и работать в различных разрезах.