Социальная инженерия с помощью программ Universal Windows Platform (APPX)

    На картинке изображены различные устройства (ПК, смартфоны, 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 Desktop Bridge для вирусных рассылок:
    • Можно использовать «как exe-файл»
    • Не накладывает изоляции и ограничений привилегий
    • Устанавливается и запускается в один клик
    • Не фильтруется почтовыми серверами

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


    Ссылки

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

    Comments 7

      0
      Интересно, сколько времени пройдёт, прежде чем этим начнут активно пользоваться?
      Впрочем, ограничения по работе только на Windows 10 довольно серьёзное. Думаю, что в ближайшее время можно не беспокоиться по этому поводу.
        +2
        Поддержка Windows 7 заканчивается через 7 месяцев, а Windows 8/8.1 не особо популярна. Уже сейчас Windows 10 установлена на большинство ПК с Windows (53-57% в РФ).
        0
        Итак, у нас новый вид вирусов? Или унификация у мелкомягких достигла состояния когда под 32-битами можно с наличием поддельного сертификата взломать всё и всех? Прощайте, антивирусы?
          0
          Вирусы всё те же, это просто способ упаковки exe-файла в контейнер appx.
          UWP и его API как раз сделаны для защиты программ, чтобы одна программа не могла просто так прочитать, например, данные браузера, фотографии, текстовые файлы других программ. Примерно так, как сейчас это реализовано на Android и iOS.
          Есть даже специальная версия Windows: Windows 10 S, которая позволяет запускать только UWP-приложения.
          +1
          У Gmail есть странная особенность: файл должен быть размером больше 4 мегабайт.

          Предположу, это лимит «безусловного» сканирования. Файлы большего размера сканируются согласно настроенным политикам, а в них расширения appx нет.
            0
            Не накладывает изоляции и ограничений привилегий


            Разве не для изоляции там сделали контейнерную виртуализацию? И именно из-за виртуализации нельзя взять и на Windows 8, например, запустить. Нужна поддержка в ядре системы. Я не проверял, но мне кажется, файловая система, доступная через WinAPI, там эмулироваться должна.
              0
              В нормальных UWP, вероятно, так и есть, но если вы делаете UWP с <rescap:Capability Name="runFullTrust"/>, то никакой изоляции нет.

            Only users with full accounts can post comments. Log in, please.