На картинке изображены различные устройства (ПК, смартфоны, IoT, Xbox, Surface Hub, Hololens), поддерживающие приложения Universal Windows Platform

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-файлов через почту Яндекс, Mail.ru и GMail

Резюме

Преимущества APPX Dekstop Bridge для вирусных рассылок:
  • Можно использовать «как exe-файл»
  • Не накладывает изоляции и ограничений привилегий
  • Устанавливается и запускается в один клик
  • Не фильтруется почтовыми серверами

Недостатки:
  • Требует сертификата для подписи кода
  • Работает только в Windows 10 1609 и новее


Ссылки

Пример файла APPX Desktop Bridge (с самоподписным сертификатом)
Инструкция по упаковке APPX
Инструкция по созданию файла манифеста вручную
Информация о Desktop Bridge

Комментарии (4)


  1. Bashibuzuk
    21.05.2019 17:02

    Интересно, сколько времени пройдёт, прежде чем этим начнут активно пользоваться?
    Впрочем, ограничения по работе только на Windows 10 довольно серьёзное. Думаю, что в ближайшее время можно не беспокоиться по этому поводу.


    1. ValdikSS Автор
      21.05.2019 17:08

      Поддержка Windows 7 заканчивается через 7 месяцев, а Windows 8/8.1 не особо популярна. Уже сейчас Windows 10 установлена на большинство ПК с Windows (53-57% в РФ).


  1. OBIEESupport
    22.05.2019 00:08

    Итак, у нас новый вид вирусов? Или унификация у мелкомягких достигла состояния когда под 32-битами можно с наличием поддельного сертификата взломать всё и всех? Прощайте, антивирусы?


    1. ValdikSS Автор
      22.05.2019 03:27

      Вирусы всё те же, это просто способ упаковки exe-файла в контейнер appx.
      UWP и его API как раз сделаны для защиты программ, чтобы одна программа не могла просто так прочитать, например, данные браузера, фотографии, текстовые файлы других программ. Примерно так, как сейчас это реализовано на Android и iOS.
      Есть даже специальная версия Windows: Windows 10 S, которая позволяет запускать только UWP-приложения.