Реализация Mimikatz на чистом Python без нативных зависимостей: работает на Linux, Mac и Windows; извлекает учётные данные из дампов LSASS, реестровых кустов SAM/SECURITY/SYSTEM и файлов DPAPI.
# pip pip install pypykatz # pipx pipx install pypykatz # Пример: разбор LSASS дампа pypykatz lsa minidump lsass.dmp # Пример: offline SAM/SYSTEM pypykatz registry --sam SAM SYSTEM
Если вам нравится этот проект, рассмотрите возможность приобретения лицензий на OctoPwn, наш полный набор средств для пентеста, работающий в вашем браузере!
Для уведомлений о новых сборках/релизах и другой информации перейдите в наш Discord
Реализация Mimikatz на чистом Python. Как минимум, её часть :)
Работает на всех ОС, поддерживающих python>=3.6

Этот проект, как и многие другие инструменты для пентестеров, работает в браузере благодаря OctoPwn!
Ознакомьтесь с community-версией на OctoPwn - Live
Начиная с версии 0.1.1, командная строка немного изменилась. Не переживайте, у меня есть для вас отличная ВИКИ.
Установите его через pip или клонируя репозиторий с github.
Установщик создаст исполняемый файл pypykatz в каталоге Scripts вашего Python. Вы можете запускать его оттуда, и он должен быть в вашем PATH.
Имейте в виду, что версия master на github может не работать, потому что мне лень делать нормальную ветку для новых версий. Я постараюсь создать ветку для стабильной версии.
pip3 install pypykatz
Установите предварительные зависимости
pip3 install minidump minikerberos aiowinreg msldap winacl
Клонируйте этот репозиторий
git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
Установите его
python3 setup.py install
Кроссплатформенность - все команды имеют версии "live" (прямая работа) и обычную, где это применимо. Версия "live" будет использовать текущую систему и работает только на Windows. Обычные команды являются кроссплатформенными.
Может использоваться как библиотека для ваших проектов.
Может разбирать секреты, скрытые в процессе LSASS. Это подобно секции sekurlsa:: в mimikatz, но с другими командами.
Основное отличие здесь в том, что вся логика разбора отделена от источника данных. Поэтому, если вы определите новый объект-ридер, вы по сути сможете выполнять разбор LSASS из любого места.
Поддерживаемые источники данных:
1. live - напрямую читает память процесса LSASS
2. minidump - обрабатывает файл minidump, созданный путем дампа процесса LSASS
3. rekall (форк volatility) - обрабатывает по сути ЛЮБЫЕ дампы памяти Windows, которые умеет разбирать rekall
4. pcileech - больше не поддерживается
5. remote - это другой проект. Будет реализовано :)
6. ваш проект здесь серьезно, интеграция очень проста.
Разбирает кусты реестра для получения сохраненных учетных данных, таких как хэши NT и LM, кэшированные учетные данные домена (DCC/DCC2) и секреты LSA.
Поддерживаемые источники данных:
1. live - имеет две техники для разбора реестра напрямую. Первая работает в памяти и не обращается к диску, вторая делает дампы кустов и разбирает их с помощью офлайн-парсера
2. офлайн (файлы кустов)
3. ваш проект здесь серьезно, интеграция очень проста.
DPAPI является защитником множества локальных секретов. В настоящее время проект поддерживает расшифровку мастер-ключей, блобов dpapi, файлов учетных данных, файлов хранилищ (vault).
Результаты не являются на 100% точными, поскольку по большинству этих вещей недостаточно документации. PR приветствуется!
Поддерживаемые источники данных:
1. live - получает мастер-ключи напрямую из LSASS -ИЛИ- пользовательские/машинные ключи из реестра напрямую и расшифровывает файл мастер-ключа.
2. файлы кустов (офлайн) - пользовательские/машинные ключи из реестра и расшифровывает файл мастер-ключа
3. действительные учетные данные (офлайн) - может расшифровывать файлы мастер-ключей, позволяя вам ввести правильный SID и пароль.
4. пожалуйста, не интегрируйте эту часть в свой проект, это бета
Может порождать новый процесс от имени любого пользователя, у которого есть процесс, работающий на машине.
Может назначить любой доступный маркер (токен) по выбору вашему потоку.
Это на самом деле базовая вещь. Причина в том, что я ненавижу постоянно использовать psexec, чтобы получить системную оболочку из-под администратора...
да... смотрите код. там есть комментарии и так далее...
Причина существования этого параметра: Для выбора правильной структуры для разбора нам нужна информация о временной метке файла dll msv. К сожалению, rekall не всегда имеет эту информацию по какой-то причине, поэтому разбор может завершаться неудачей.
Если разбор завершается неудачей, это может решить проблему.
Параметр: -t
Значения: 0 или 1
Пример:
pypykatz.py rekall <momeory_dump_file> -t 0
Есть два способа использовать разбор памяти на основе rekall.
pypykatz rekallВам нужно будет указать файл памяти для разбора.
ВАЖНЫЕ ЗАМЕЧАНИЯ:
1. Если вы только сейчас решаетесь установить rekall, учтите: ОН ДОЛЖЕН запускаться в виртуальном окружении (virtualenv), и вам нужно будет установить pypykatz в том же виртуальном окружении!
2. командная строка rekall не подходит для отображения всей информации, полученной из памяти, вы должны использовать командные ключи out_file и kerberos_dir!
Вы можете найти файл плагина rekall с именем pypykatz_rekall.py в папке plugins проекта pypykatz.
Вам нужно будет скопировать его в папку plugins/windows rekall и переименовать в pypykatz.py.
После этого измените файл __init__.py``, расположенный в той же папке, и добавьте следующую строку в конец:from rekall.plugins.windows import pypykatzЕсли все в порядке, вы сможете использовать командуpypykatzнепосредственно из командной строкиrekall```.
Если вы хотите помочь мне довести этот проект до стабильного релиза, вы можете отправить минидампы процесса lsass.exe по следующей ссылке: https://nx5494.your-storageshare.de/s/SJteWj3PPbg8jBA
ВАЖНО: пожалуйста, НЕ отправляйте дампы процесса lsass вашего собственного компьютера!!! Я смогу увидеть ваши секреты, включая хэши/пароли! Отправляйте файлы дампов с машин, например, виртуальных тестовых систем, на которых вам не важно, что кто-то увидит учетные данные. (если у вас есть тестовая доменная система, где настроен Kerberos, это было бы идеально)
Также я буду признателен, если вы не будете спамить меня...
Для создания mimikatz на Python пришлось бы создавать определения структур для огромного количества различных структур (см. оригинальный код) без помощи встроенного парсера, который вы получаете естественным образом, используя нативный компилятор. Теперь, проблема в том, что даже рассогласование в один байт приведет к ошибке при разборе этих структур. Проблема в основном касается выравнивания 32/64 бит, поэтому дампы lsass с 33-битных версий Windows тоже приветствуются!
Мне нужны данные, на которых я могу верифицировать код и вносить необходимые изменения в парсеры, пока все не начнет работать нормально.
Создание issues на этой странице github не поможет вообще без реального файла, а github не любит вложения размером 40-300Мб.
Большинство моих крупных python-проектов нацелены на максимальную переносимость, то есть я использую сторонние пакеты только там, где это абсолютно необходимо.
На данный момент используются три дополнительных пакета, и я намерен сохранить так и дальше.
Python>=3.6
minidump
minikerberos
asn1crypto
Benjamin DELPY @gentilkiwi за Mimikatz
Francesco Picasso за плагин mimikatz.py для volatility
Alberto Solino (@agsolino) за impacket
Richard Moore за модуль AES
Todd Whiteman за модуль DES
David Buxton за скрипт конвертации временных меток