Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
После того как ты проник за внешний периметр и попал во внутреннюю сеть компании, необходимо расширить в ней собственное присутствие, если хочешь найти там что-то интересное. Как ни странно, чем больше размер внутренней сети компании, тем проще ее взломать. И напротив, если компания совсем небольшая, сеть взломать порою крайне сложно. Почему так? Чем больше сеть, тем больше в ней может встретиться уязвимых или небезопасно настроенных компонентов. При этом часто компрометация одного узла влечет за собой компрометацию сразу множества смежных с ним узлов.
Во внутренних сетях обычно преобладают серверы и рабочие станции под управлением Windows. В то же время эта ОС наиболее интересна с точки зрения способов компрометации, так как по умолчанию имеет множество интерфейсов для удаленного выполнения кода. Кроме того, атакующему доступно большое количество способов извлечения учетных данных. Я не буду касаться бокового перемещения по серверам Linux: они редко включены в домен и не имеют такого разнообразия дефолтных интерфейсов для удаленного администрирования. При боковом перемещении Linux интересен главным образом как удобная точка опоры.
Боковое перемещение подразумевает легитимное удаленное исполнение кода. То есть все представленные в статье способы подразумевают наличие действующей учетной записи для того или иного ПК. При этом почти всегда будет требоваться административная учетная запись.
Основная задача при боковом перемещении — привлекать как можно меньше внимания пользователей и службы безопасности, а также постараться не вызвать тревогу у средств антивирусной защиты. Наиболее эффективно использовать штатные средства операционной системы, то есть абсолютно легитимные и неотличимые от действий обычных администраторов сети.
Мы не будем обсуждать основные уязвимости Windows, атаки в локальных сетях и способы поднять привилегии в среде Active Directory. Вместо этого поговорим исключительно о легальных вещах: в каких потаенных уголках Windows можно найти учетные записи и что с ними потом делать. Все представленные дальше способы не считаются уязвимостями, а представляют из себя трюки by design, следовательно, при грамотном исполнении это полностью легальные процедуры.
Все примеры основаны на реальных ситуациях, с которыми можно столкнуться при перемещении по самым настоящим внутренним сетям. Поэтому, как обычно, коснемся проблемы максимально тихого перемещения с возможностью байпаса антивирусов, а также сделаем акцент на то, какие сетевые порты нам для этого потребуются.
Итак, боковое перемещение — это одновременное сочетание двух техник:
Цикличное, последовательное повторение этих шагов порою позволяет от одного-единственного взломанного ПК дойти до полной компрометации всей сетевой инфраструктуры. Обычно боковое перемещение, как всякое иное перемещение, преследует одну из следующих целей:
Однако для достижения любой из перечисленных целей требуются все новые учетные данные, чтобы у атакующего была возможность перемещаться по сети и получать доступ ко все большему количеству ПК. Продвижение по внутренней сети редко обходится без взятия контроллера домена, поскольку взятие домена означает автоматическое получение доступа практически к каждому узлу сети. Что касается admins hunting, при достижении контроллера домена может показаться, что поиск привилегированных учетных записей — это слепое угадывание. Но на самом деле инфраструктура Active Directory и сама Windows раскрывают достаточно информации простому доменному пользователю, зачастую позволяя рассчитать нужное направление продвижения и спланировать точную многоступенчатую цепочку взломов еще в самом начале бокового перемещения.
После взятия контроллеров домена иногда бывает необходимо двигаться дальше — в некий особо охраняемый сегмент, представляющий собой объекты «бизнес-риска». Это может быть сегмент АСУ ТП, вмешательство в технологический процесс, доступ в сегмент SWIFT, если мы имеем дело с банками, либо же просто доступ на ПК генерального директора. В каждом случае мы можем столкнуться с разными сложностями бокового перемещения, о которых пойдет речь дальше.
Рассмотрим несколько способов удаленного исполнения кода в Windows с помощью учетной записи. Некоторые средства предоставляют удобный интерактивный режим, а некоторые — только слепой запуск команд без получения результата. Начнем обзор с самых удобных и широко распространенных инструментов и постепенно перейдем к менее популярным, но все же способным исполнить код.
Часть инструментов загружает на target исполняемый файл службы, пытаясь обеспечить нам удобный интерактивный режим. Но тут кроется опасность: такие сервисы зачастую будут заблокированы антивирусом. Плюс к этому IP атакующего может быть заблокирован, что затормозит перемещение. И SOC узнает о том, что в сеть кто-то проник.
Большую часть бокового перемещения мы будем выполнять с помощью замечательного Python-пакета impacket. Для его установки требуется выполнить команду pip
. После установки необходимые исполняемые файлы будут находиться в папке impacket/
, расположение которой подскажет команда pip
.
Это реализация DCERPC от Microsoft. По сути, расширяет открытый DCERPC при помощи доступа через именованные пайпы с использованием протокола SMB. Главным образом использует 445-й TCP-порт. Перечислить доступные пайпы по словарю на SMB поможет модуль auxiliary/scanner/smb/pipe_auditor.
Начиная говорить об удаленном исполнении кода в Windows, нельзя не упомянуть небезызвестный psexec
от Марка Руссиновича. Данная программа пользуется одинаковой популярностью и у администраторов, и у пентестеров. Принцип ее работы заключается в копировании исполняемого файла через сетевой ресурс «ADMIN$» (445/TCP)
с последующим удаленным созданием и запуском службы для этого исполняемого файла через DCERPC (
. После запуска службы происходит обычное сетевое взаимодействие с удаленной командной строкой:
Главный плюс для нас в том, что серверный компонент psexecsvc.
подписан сертификатом Sysinternals (который принадлежит Microsoft) и, следовательно, стопроцентно легитимная программа. Также к явным достоинствам классического psexec.
относится способность выполнять код в указанных пользовательских сеансах:
Отличная альтернатива для пользователей Linux. Однако этот инструмент почти наверняка поднимет антивирусную тревогу. Как было сказано, все дело в службе, которая копируется на удаленный хост. Это можно исправить, указав в реализации метода createService(
в /
произвольную команду, которая будет выполнена вместо запускаемой службы удаленного администрирования.
Чтобы psexec.
не скопировал палевный компонент, указываем принудительно, какой файл использовать в качестве службы. И, поскольку мы уже вручную прописали команду, этим файлом может быть что угодно:
psexec.py-filesomefile.txtadmin@target
Таким образом, мы напрямую выполнили команду mkdir c:pwn
, что, конечно же, не вызовет реакции со стороны антивирусов. Однако подобная модификация psexec
лишает нас того удобства использования, которое было изначально.
Более старый нативный аналог psexec
под Linux. Как и psexec
, открывает удаленную интерактивную командную строку:
winexe-Uadmin//targetcmd
В целом он полностью идентичен другим подобным инструментам, однако реже обнаруживается антивирусами. Но все же нельзя сказать, что winexe на сто процентов безопасен. Тем не менее его можно использовать для подстраховки на случай, если psexec.
вдруг не сработает.
Упрощенный вариант psexec
, также создающий службу, только используется при этом исключительно MSRPC, а доступ к управлению службами устроен через SMB-пайп svcctl
:
smbexec.py-modeSHAREadmin@target
В результате будет открыт доступ к интерактивной командной строке.
Еще более упрощенный вариант psexec
. Тут предполагается, что мы сами ручками делаем то, что делает за нас psexec
. С помощью services.
мы можем посмотреть список служб:
services.pyadmin@targetlist
Создать новую службу, указав произвольную команду:
services.pyadmin@targetcreate-name1-display1-path'cmd arg1 arg2'
Запустить только что созданную службу:
services.pyadmin@targetstart-name1
Замести следы и удалить ее:
services.pyadmin@targetdelete-name1
Все это дает нам еще один способ слепого неинтерактивного исполнения команд, то есть без результата. Зато это на сто процентов безопасный способ, и он не раз выручал меня, когда антивирусы на удаленном хосте убивали весь левый софт.
Служба планировщика заданий Windows, доступная через smb-пайп atsvc
. Позволяет удаленно поместить в планировщик задачу, которая выполнится в указанный момент.
В обоих случаях это не интерактивное средство удаленного исполнения кода. При использовании at.
происходит слепое исполнение команд:
А вот для atexec.
команда выполнится с результатом:
atexec.pyadmin@targetipconfig
Вся разница в том, что результат выполнения команды будет направлен в файл и прочитан через сетевой ресурс ADMIN$
. Для своей работы инструмент требует, чтобы часы у attacker и target были настроены на одно время с точностью до минуты.
Удаленный доступ к реестру с правами на запись на самом деле нам дает RCE. Для своей работы инструмент требует SMB-пайп winreg
. По умолчанию служба удаленного реестра запущена только на серверных ОС Windows 2003–2019. А вот известный трюк с автозагрузкой (отложенное RCE):
Здесь используется обработчик запуска программы. Если программа запускается на ПК часто, то получим почти мгновенное RCE:
Мой любимый трюк с бэкдором в RDP:
Использует порты 135/TCP и 4915x/TCP, где 4915x — динамически назначаемые порты. Иногда могут использоваться порты из другого диапазона.
Очень часто сетевые администраторы и безопасники, которые в курсе наиболее распространенных векторов атак, в качестве mitigation просто блокируют порт 445/TCP. Тем самым они делают непригодным использование psexec
и многих других способов, описанных выше. Однако, как было сказано ранее, Windows имеет множество способов удаленного исполнения кода, и DCERPC предоставляет нам такую альтернативную возможность, в некоторых случаях открывая доступ к тем же RPC-интерфейсам. По сути, мы будем использовать не сам DCERPC, а то, что работает по его технологии, например WMI.
Скрипт wmiexec.
дает возможность выполнить код в интерактивном режиме:
wmiexec.pyadmin@target
Однако было замечено, что хоть wmiexec.
и не запускает на удаленной стороне никаких сторонних исполняемых файлов, антивирусы его иногда ловят. Кроме того, wmiexec.
полезет за результатом на шару ADMIN$
, чем задействует порт 445/TCP. Более безопасным вариантом будет слепое RCE:
|
|