SharpViewStateKing: бесфайловая атака на IIS через ASP.NET ViewState
В конце декабря 2025 года сервер IIS с коммерческим приложением ASP.NET был скомпрометирован с помощью SharpViewStateKing. Это модульный fileless-фреймворк, который разворачивает C# ASP.NET-плагины на скомпрометированных серверах IIS и использует параметры ViewState для удаленного выполнения кода.
Как работает SharpViewStateKing
Фреймворк использует контроллер для управления плагинами. Сериализованные объекты .NET встраиваются в исполняемый файл контроллера, а непосредственно перед развертыванием плагины компилируются в системе злоумышленника.
Remote Code Execution достигается за счет злоупотребления параметрами ASP.NET ViewState скомпрометированного приложения. SharpViewStateKing разворачивает новый скомпилированный плагин для каждой команды, поэтому с точки зрения сервера имплант фактически является stateless.
Загруженный код остается в памяти рабочего процесса IIS до перезапуска процесса. Плагины загружаются непосредственно в память, не записываются на диск и не отображаются среди загруженных DLL-модулей процесса IIS.
Для сетевого взаимодействия используются HTTP или HTTPS. Трафик может маскироваться под легитимные запросы ASP.NET. Плагины получают команды через контролируемые атакующим значения __SCROLLPATH и __SCROLLPOSITION, а зашифрованный результат возвращают в формате Base64 внутри поля __VIEWSTATE.
Для имитации легитимных данных ViewState применялся статический префикс /wEPDwUKLTcyODc4.
Масштаб активности и возможности импланта
В течение первых 30 минут было зафиксировано 67 различных хешей модулей. При этом многие образцы оказались дубликатами с измененными метаданными компиляции.
Набор возможностей включал:
- загрузку и выполнение .NET-сборок в памяти;
- разведку системы и сети;
- перечисление каталогов и файлов;
- выполнение команд через скрытый
cmd.exe; - сбор метаданных файлов и иконок.
Инструменты и дальнейшие действия злоумышленника
Для повышения привилегий на локальной машине использовался EfsPotato. SoftEther VPN обеспечивал удаленный доступ и обход брандмауэра и NAT. Для архивирования применялся RAR.
Кража учетных данных выполнялась с помощью Impacket secretsdump и perunner.exe, а также средств для извлечения данных из памяти процесса LSASS. Собственные инструменты злоумышленника использовались для изменения параметров ASP.NET ValidationKey и DecryptionKey.
Кроме того, были развернуты компоненты BadIIS, включая HttpCgiModule.dll и HttpFastCgiModule.dll.
Оператор создал локальную учетную запись администратора и настроил исключения Microsoft Defender с помощью wmic.exe. После этого он получил доступ к хосту через RDP и переместился внутри компании с использованием PsExec и похищенных учетных данных.
Зафиксированные действия соответствуют техникам повышения привилегий, создания учетных записей, обхода защиты, сбора учетных данных, удаленного доступа и перемещения внутри компании.
Почему обнаружение затруднено
Выявление атаки осложняется тем, что модули динамически компилируются, не сохраняются на диске и передаются по зашифрованному протоколу HTTPS. Дополнительную сложность создает отсутствие плагинов среди загруженных DLL-модулей процесса IIS.
Хеш-сканирование также может быть менее эффективным из-за изменения метаданных компиляции и появления новых скомпилированных модулей для отдельных команд.
Рекомендации по обнаружению
Для выявления активности SharpViewStateKing можно использовать следующие направления мониторинга:
- контроль дочерних процессов
w3wp.exe; - анализ памяти процесса IIS на наличие динамически загруженных .NET-сборок;
- поиск статических строк
__VIEWSTATEи других строк, связанных с ViewState; - проверка журналов на аномальные ошибки десериализации
__SCROLLPATH,__SCROLLPOSITIONили ViewState.
Декомпиляция байт-кода .NET и применение правил YARA к логике на уровне исходного кода C# может повысить эффективность обнаружения по сравнению с проверкой хешей.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



