
Реализация Mimikatz на чистом Python
Если вам нравится этот проект, рассмотрите возможность приобретения лицензий OctoPwn, нашего полного набора для пентеста, который работает в вашем браузере!
Для уведомлений о новых сборках/релизах и другой информации присоединяйтесь к нашему Discord
Реализация Mimikatz на чистом Python. По крайней мере, её часть :)
Работает на всех ОС, поддерживающих Python>=3.6

Этот проект, наряду со многими другими инструментами для пентеста, работает в браузере с помощью OctoPwn!
Посмотрите общедоступную версию на 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
Независимо от платформы – все команды имеют «живую» и обычную версию, где это применимо. «Живая» версия использует текущую систему и работает только на Windows. Обычные команды не зависят от платформы.
Может использоваться как библиотека для ваших проектов.
Может анализировать секреты, скрытые в процессе LSASS. Это похоже на sekurlsa:: от mimikatz, но с другими командами.
Главное отличие в том, что вся логика парсинга отделена от источника данных, поэтому если вы определите новый объект чтения, вы сможете выполнять парсинг LSASS откуда угодно.
В настоящее время поддерживаемые источники данных:
Анализирует кусты реестра для получения сохранённых учётных данных, таких как хэши NT и LM, кэшированные учётные данные домена (DCC/DCC2) и секреты LSA.
В настоящее время поддерживаемые источники данных:
DPAPI является защитником локальных секретов многих видов. В настоящее время проект поддерживает расшифровку мастер-ключей, dpapi-блобов, файлов учётных данных, файлов хранилищ.
Результаты не на 100% корректны, так как по большинству этих вещей не так много документации. PR всегда приветствуется!
В настоящее время поддерживаемые источники данных:
пожалуйста, не интегрируйте эту часть в свой проект, она в бета-версииМожет запускать новый процесс от имени любого пользователя, который имеет запущенный процесс на машине.
Может назначить любой доступный токен по вашему выбору вашему потоку
На самом деле это просто базовая вещь. Причина в том, что мне надоело постоянно использовать psexec для получения системной оболочки от администратора...
Да... смотрите код. Там есть комментарии и прочее...
Причина существования этого параметра: чтобы выбрать правильную структуру для парсинга, нам нужна информация о временной метке файла msv dll. К сожалению, Rekall не всегда имеет эту информацию по какой-то причине, поэтому парсинг может быть неудачным.
Если парсинг не удаётся, это может решить проблему.
Параметр: -t
Значения: 0 или 1
Пример:
pypykatz.py rekall <файл_дампа_памяти> -t 0
Есть два способа использования парсинга памяти на основе rekall.
pypykatz rekallВам нужно будет указать файл памяти для парсинга.
ВАЖНЫЕ ЗАМЕЧАНИЯ:
rekall, обратите внимание: его ОБЯЗАТЕЛЬНО нужно запускать в virtualenv, и вам нужно будет установить pypykatz в том же virtualenv!out_file и kerberos_dir!Вы можете найти файл плагина rekall с именем pypykatz_rekall.py в папке plugins pypykatz.
Вам нужно скопировать его в папку rekall plugins/windows и переименовать в 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 32-битной версии Windows также приветствуются!
Мне нужны данные, на которых я могу проверить код и внести необходимые изменения в парсеры, пока всё не заработает нормально.
Отправка проблем на этой странице 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 за скрипт преобразования временных меток