MimiPenguin 2.0
Инструмент для извлечения пароля для входа текущего пользователя Linux Desktop. Адаптирован на основе идеи популярного инструмента mimikatz для Windows. Этот инструмент получил CVE-2018-20781 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20781). Забавный факт: до сих пор не исправлено после GNOME Keyring 3.27.2 и всё ещё работает с 3.28.0.2-1ubuntu1.18.04.1.

Описание
Использует уязвимость хранения учётных данных в открытом виде в памяти, дампя процесс и извлекая строки с высокой вероятностью содержащие пароли в открытом виде. Пытается вычислить вероятность каждого слова, проверяя хеши в /etc/shadow, хеши в памяти и с помощью регулярных выражений. Версия 2.0 представляет чистый порт на C, направленный на увеличение скорости выполнения и переносимости.
Известные проблемы
- 32-битная версия mimipenguin (сборка C) может дать сбой в 64-битном пользовательском пространстве, так как в настоящее время неадекватно обрабатывает поиск в 64-битном адресном пространстве.
Требования
Поддерживаемые/протестированные системы
- Kali 4.3.0 (rolling) x64 (gdm3)
- Ubuntu Desktop 12.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Ubuntu Desktop 14.04.1 LTS x64 (Gnome Keyring 3.10.1-1ubuntu4.3, LightDM 1.10.6-0ubuntu1)
- Ubuntu Desktop 16.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Ubuntu Desktop 16.04.4 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2, LightDM 1.18.3-0ubuntu1.1)
- Ubuntu 18
- XUbuntu Desktop 16.04 x64 (Gnome Keyring 3.18.3-0ubuntu2)
- Archlinux x64 Gnome 3 (Gnome Keyring 3.20)
- OpenSUSE Leap 42.2 x64 (Gnome Keyring 3.20)
- VSFTPd 3.0.3-8+b1 (Активные подключения FTP-клиентов)
- Apache2 2.4.25-3 (Активные/старые сессии HTTP BASIC AUTH) [Зависимость от Gcore]
- openssh-server 1:7.3p1-1 (Активные SSH-подключения - использование sudo)
Сборка
- Для сборки релизной версии на C просто выполните
make в корневом каталоге проекта
- Для сборки отладочного бинарника с отладочными выводами выполните
make debug
- Для сборки статически скомпонованных бинарников выполните
make static
Примечания
- Пароль перемещается в памяти — продолжаем настраивать для достижения 100% эффективности
- Планируется расширение поддержки и других мест хранения учётных данных
- Работаем над расширением на не-десктопные окружения
- Известная ошибка — иногда gcore зависает скрипт, это проблема gcore
- Открыты для pull request'ов и исследований сообщества
- Планируется исследование LDAP (nscld winbind и т.д.)
План развития
- Реализовать иглы в порту C (ускорение)
- Добавить необязательный аргумент для нацеливания только на конкретных пользователей (ускорение)
MimiPenguin постепенно портируется на несколько языков для поддержки всех возможных сценариев пост-эксплуатации. План развития ниже был предложен KINGSABRI для отслеживания различных версий и функций. "X" обозначает полную поддержку, а "~" обозначает функцию с известными ошибками.
Контакты
Лицензия
Лицензия CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
Особая благодарность
- the-useless-one за удаление зависимости от Gcore, очистку табуляции, добавление опции вывода и полный порт на Python 3
- gentilkiwi за Mimikatz, вдохновение и упоминание в Twitter
- pugilist за очистку извлечения PID и тестирование
- ianmiell за очистку части моего грязного кода
- w0rm за выявление ошибки printf при использовании специальных символов
- benichmt1 за выявление проблемы с несколькими аутентифицированными пользователями
- ChaitanyaHaritash за выявление пограничных случаев со специальными символами
- ImAWizardLizard за очистку сопоставлений с помощью цикла for
- coreb1t за проверки Python 3, поддержку Arch и другие исправления
- n1nj4sec за порт на Python 2 и поддержку
- KINGSABRI за предложение дорожной карты
- bourgouinadrien за ссылку на https://github.com/koalaman/shellcheck
- bcoles за добавление дополнительных игл
- space-r7 и bcoles за работу над портом модуля MimiPenguin для Metasploit