Содержание статьи
Когда ты наводишь мышь на панель задач, ты видишь маленькое изображение окна.

Нас заинтересовало, что превью статично: по сути, это скриншот приложения, который не обновляется до тех пор, пока мы не переключимся в программу.
Мы, как безопасники, часто имеем дело с приложениями, где есть тайм‑аут и защита паролем, например OneNote, KeePass, браузеры, удаленные сессии и прочее в таком духе. Давай посмотрим, как это можно использовать. Заодно пройдемся по другим случаям, в которых получиться применить возможности «графического» наблюдения и не только. Так что начинай готовить свой банановый раф на кокосовом — будет интересно.
Что такое DWM
DWM (Desktop Window Manager, диспетчер окон рабочего стола) — технология, появившаяся еще во времена Windows Vista. Она предназначена для гламурного отображения эскизов приложений. В Windows 11 она тоже есть.
Ты можешь увидеть эти эскизы при нажатии сочетаний клавиш Alt-Tab или Win-Tab.

DWM работает с живым представлением окна, но это представление может оказаться неактуальным, если приложение не перерисовало содержимое или ушло в блокировку особым образом. Тогда превью показывает последнее состояние открытого приложения.
Если не открывать окно (это приведет к обновлению эскиза), можно обратиться напрямую к картинке и подсмотреть, что происходило в приложении. В некоторых версиях Windows, если навести мышь на эскиз, он полностью разворачивается, но не трогает приложение. Другими словами, ты буквально смотришь в прошлое.
Стало жутко интересно — а как его вытащить‑то? На первом этапе вообще искали скриншоты в памяти, но потом сдались и осмелились погуглить...
warning
Статья предназначена для ознакомления и рассчитана на специалистов по безопасности, которые проводят тестирование по контракту. Автор и редакция не несут ответственности за вред, причиненный с использованием приведенной информации. Распространение вредоносных программ, нарушение работы систем и тайны переписки преследуются по закону.
Пишем кастомное приложение
Поскольку речь идет о винде, проще всего добраться до этих превью через .NET. Напишем минималистичное приложение, которое будет использовать функции DWM, подключаться к окнам и буквально стримить эскизы... ради науки, разумеется!
Нарисуем простейшую форму, в которой будет выпадающий список для выбора активных окон, место для превью и ползунок для настройки прозрачности. Также добавим кнопку для обновления списка активных окон. Все‑таки мы тут рисуем PoC, а не полноценный хакерский модуль.

Теперь напишем небольшой код. По сути, нам не нужны никакие дополнительные библиотеки — все уже есть в системе. Нам понадобятся функции всего двух системных библиотек: user32. и dwmapi.. Первая нужна, чтобы получать список открытых окон и их заголовки, а вторая — это интерфейс для работы с DWM.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
