TL;DR: В APPX-файл Universal Windows Platform можно упаковать обычный exe-файл, который будет запускаться в Windows 10 (сборка 1607 и новее) примерно так же, как обычные exe-файлы. Это можно использовать для атак социальной инженерии, с помощью рассылки через email — почтовые провайдеры не блокируют файлы APPX. Файл должен быть подписан действующей цифровой подписью.
Universal Windows Platform
Universal Windows Platform — (сравнительно) новый стандарт для создания универсальных приложений под Windows 10, Windows 10 Mobile, Xbox One и Hololens. Стандарт появился с выходом Windows 10, и предоставляет API с ограничением привилегий и изоляцией, формат контейнера и метаданных внутри него.UWP-приложения широко представлены в Microsoft Store. Они самодостаточны, безопасны, не требуют прав администратора для установки, хранят настройки в строго отведённых местах, и могут быть удалены начисто, прямо из «пуска».
UWP — попытка Microsoft избавиться от старых архитектурных подходов к разработке программ: внедрить разделение привилегий так, как это сделано на мобильных платформах, уйти от WinAPI GUI с пиксельной сеткой (для полноценной поддержки экранов любой плотности пикселей).
Программы UWP можно писать на C#, C++, VB и JS, а в качестве GUI-фреймфорка предлагается к использованию XAML, DirectX и HTML.
До недавнего времени, UWP-программы могли быть только изолированными, но в сборке Windows 10 1607 Microsoft реализовала Desktop Bridge — возможность упаковки любых Win32-программ в виде UWP, без использования UWP API, ограничений привилегий и изоляции.
Эта функция открывает простор для атак социальной инженерии.
Формат APPX
UWP стандартизирует файловый формат APPX — обычный ZIP-архив, с определённой структурой. В APPX-файле должен быть AppxManifest.xml — файл с описанием содержимого пакета, который можно сгенерировать или создать самостоятельно.В AppxManifest.xml указано название программы, описание, иконка, требуемые привилегии, имя файла для запуска и точка входа внутри него.
Чтобы APPX-файл можно было установить, он должен быть подписан действующей цифровой подписью с возможностью подписи кода, доверенного удостовещяющего центра.
Пример файла AppxManifest.xml с отключенной изоляцией
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
<Identity Name="MyCompany.MySuite.MyApp" Version="1.0.0.0"
Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"
ProcessorArchitecture="x64" />
<Properties>
<DisplayName>test</DisplayName>
<PublisherDisplayName>test</PublisherDisplayName>
<Description>test</Description>
<Logo>logo.png</Logo>
</Properties>
<Resources>
<Resource Language="en-us" />
</Resources>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14316.0" MaxVersionTested="10.0.15063.0" />
</Dependencies>
<Capabilities>
<rescap:Capability Name="runFullTrust"/>
</Capabilities>
<Applications>
<Application Id="MyApp" Executable="MyApp.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName="MyApp" Description="MyApp" Square150x150Logo="logo.png"
Square44x44Logo="logo.png" BackgroundColor="#666666" />
</Application>
</Applications>
</Package>
Самый простой вариант упаковки существующего Win32 exe-файла в appx с помощью Desktop Bridge — написать файл манифеста вручную, и создать appx-контейнер с помощью утилиты makeappx.exe, входящей в состав Windows SDK.
makeappx.exe pack /d input_directory /p output.appx
Затем подписать с помощью signtool.exe:
signtool.exe sign /f "mycert.pfx" /p "123456" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 output.appx
Преимущества APPX для социальной инженерии
APPX-файлы можно использовать в почтовых рассылках, в качестве замены exe-файлам, в случах, когда почтовый сервер фильтрует письма с exe-вложениями.Установка APPX происходит в один клик, не требует прав администратора. В установщике галочка запуска программы после установки отмечена по умолчанию, и программа сразу запустится, если пользователь её не уберет.
Все популярные почтовые сервисы не блокируют APPX-файлы в приложениях к письму.
У Gmail есть странная особенность: файл должен быть размером больше 4 мегабайт.
Резюме
Преимущества APPX Dekstop Bridge для вирусных рассылок:- Можно использовать «как exe-файл»
- Не накладывает изоляции и ограничений привилегий
- Устанавливается и запускается в один клик
- Не фильтруется почтовыми серверами
Недостатки:
- Требует сертификата для подписи кода
- Работает только в Windows 10 1609 и новее
Ссылки
Пример файла APPX Desktop Bridge (с самоподписным сертификатом)Инструкция по упаковке APPX
Инструкция по созданию файла манифеста вручную
Информация о Desktop Bridge
Комментарии (4)
OBIEESupport
22.05.2019 00:08Итак, у нас новый вид вирусов? Или унификация у мелкомягких достигла состояния когда под 32-битами можно с наличием поддельного сертификата взломать всё и всех? Прощайте, антивирусы?
ValdikSS Автор
22.05.2019 03:27Вирусы всё те же, это просто способ упаковки exe-файла в контейнер appx.
UWP и его API как раз сделаны для защиты программ, чтобы одна программа не могла просто так прочитать, например, данные браузера, фотографии, текстовые файлы других программ. Примерно так, как сейчас это реализовано на Android и iOS.
Есть даже специальная версия Windows: Windows 10 S, которая позволяет запускать только UWP-приложения.
Bashibuzuk
Интересно, сколько времени пройдёт, прежде чем этим начнут активно пользоваться?
Впрочем, ограничения по работе только на Windows 10 довольно серьёзное. Думаю, что в ближайшее время можно не беспокоиться по этому поводу.
ValdikSS Автор
Поддержка Windows 7 заканчивается через 7 месяцев, а Windows 8/8.1 не особо популярна. Уже сейчас Windows 10 установлена на большинство ПК с Windows (53-57% в РФ).