Содержание статьи
Тестирование на проникновение (penetration testing) — метод оценки безопасности компьютерных систем или сетей средствами моделирования атаки злоумышленника. Для кого-то это хобби, для кого-то работа, для кого-то это стиль жизни. На страницах нашего журнала мы постараемся познакомить тебя с профессией настоящего этичного хакера, с задачами, которые перед ним ставятся, и их решениями.
Intro
Одна из типичных задач для пентестера — это поиск десктопных машин конкретных пользователей в сети. Уверен, ты понял, что речь идет не о простых пользователях. Как пентестеров нас интересует верхушка корпоративной иерархии: топ-менеджмент, представители отдела ИТ и другие лица, которые обладают правами в корпоративной или технологической плоскости тестируемой компании.
В большинстве случаев доступ к целевым хостам таких пользователей необходим для получения более глубокой информации об инфраструктуре или же для демонстрации достигнутых рубежей доступа к корпоративной тайне. Сегодня я расскажу об основных методах и средствах, которые помогают решить эту, казалось бы, тривиальную задачу в рамках пентеста среднестатистической корпоративной сети на базе Microsoft Active Directory.
Current mode
В большинстве случаев задача решается только по факту расширения привилегий до администратора домена. Когда требуется получить доступ к управлению сетевым оборудованием, самый простой способ — найти администратора, который за него отвечает. Попав на его десктопную машину, с вероятностью 80% ты сразу получаешь все данные, которые необходимы для управления сетевыми устройствами.
Имена компьютеров в сети обычно обезличены в целях безопасности и уникальности каждого из хостнеймов (например, 7F1EKHGTE.corp.domain
). Но иногда «случайный» набор символов в хостнейме далеко не случайный, а вполне осмысленный. Это помогает пентестеру сузить диапазон поиска хоста в рамках департамента.
Куда интереснее способ поиска компьютера пользователя при условии, что имя хоста никак не связано с именем человека. Вот ряд утилит, которые могут помочь в решении этой задачи. Для многих из них необходима учетная запись администратора. Впрочем, без прав администратора домена все равно не подобраться к десктопу топ-менеджера (по крайней мере, так бывает примерно в 90% случаев).
PsLoggedon (SysInternals)
Официальная утилита производства Microsoft, идет в составе SysInternals, что не может не радовать. Ни один антивирус не заподозрит бинарник в чем-то противоестественном. Получает список залогиненых пользователей из реестра через вызов API NetSessionEnum. Требует привилегии администратора на хосте, в отношении которого производятся действия. К сожалению, тулзе нельзя указать подсеть в качестве цели, так что тебе придется прибегнуть к магии консоли.
![PsLoggedon в действии](https://xakep.ru/wp-content/uploads/2015/08/1439451542_9e55_1_psloggedon.png)
![](https://xakep.ru/wp-content/uploads/2015/08/000_Cover_v-210x280.jpg)
Хакер #199. Как взломали SecuROM
NetSess
Проверенная временем (0ld sch00l) утилита. Так же как и PsLoggedon, использует вызов API NetSessionEnum, чтобы получить список пользователей, залогиненных на удаленном хосте. Не требует админских привилегий. К сожалению, не умеет работать с подсетями — придется учить. Некто Scott Sutherland подготовил отличный скрипт-надстройку для netsess.exe c говорящим названием Get Domain Admins.
PVEFindADUser
Небольшая утилита, разработанная @corelanc0d3r, полностью удовлетворяет нашим потребностям. В сущности, вывод этой утилиты один из наиболее информативных. Требует прав администратора на узлах, с которыми работает.
![PVEFindADUser](https://xakep.ru/wp-content/uploads/2015/08/1439451553_5653_2_pvead.png)
netview
Отличная тулза авторства @mubix. Позволяет энумерейтить не только залогиненных в систему пользователей, но и сессии пользователей и общие ресурсы. Может быть использована как с привилегиями администратора, так и без них.
![netview](https://xakep.ru/wp-content/uploads/2015/08/1439451561_90db_3_netview.png)
NMap
Скрипты NMap тоже помогут в поиске залогиненных пользователей — к примеру, скрипт smb-enum-sessions.nse
. Но для их работы понадобится как минимум валидный доменный или локальный аккаунт, заведенный на ряде узлов.
X-Originating-IP
Не совсем юзабельный способ — он подразумевает работу с заголовками электронных писем, к которым имеется доступ. Заголовок X-Originating-IP
поможет понять, с какой именно машины было отправлено письмо. В большинстве случаев это приведет тебя к искомой системе.
Veil-Pillage
Многофункциональный фреймворк постэксплуатационной направленности. Особенно важны его модули user_hunter
и group_hunter
. Они предоставляют информацию на основе вывода tasklist
и qwinsta
. В качестве аналога можно использовать psexec_command
, который входит в состав Metasploit. Для работы необходимы привилегии администратора.
Информация из Active Directory
Свойство homeDirectory
учетной записи может содержать путь до домашней директории, которая автоматически монтируется при логине. Если значение выставлено, это поможет тебе выявить серверы, к которым подключен пользователь. После этого уже не составит труда узнать, с какого именно хоста заходит жертва. Помимо этого, рекомендую обратить внимание на значение profilePath
, в котором тоже могут найтись полезные адреса. Для доступа к информации необходимо обладать доменной учетной записью.
PowerView (PowerTools)
Полезный набор скриптов PowerShell. Они автоматизирует действия, которые помогают в разведке. Наибольший интерес представляют модули Invoke-UserHunter
и Invoke-StealthUserHunter
. Первый вызывает API функций NetSessionEnum
и NetWkstaUserEnum
для каждого сервера. Второй модуль помогает извлечь данные из LDAP, однако NetSessionEnum
срабатывает только для серверов, адреса которых получены из user.HomeDirectories
. Административные привилегии для выполнения большинства функций не требуются.
Outro
Не стоит забывать о нестандартных решениях, которыми пользуются администраторы систем для отслеживания логинов пользователей. Встречаются самопальные SIEM системы и хитрые логон-скрипты, которые при запуске на клиентской машине добавляют строку в текстовый файл и сохраняют информацию о том, что пользователь Х залогинился на сервер Y.
Приведенные в статье утилиты применимы и результативны в 99% случаев. Однако, если перед тобой большая сеть (например, /16) и нет абсолютно никаких идей о том, в какую сторону копать, время выполнения того же PsLoggedOn оставляет желать лучшего.
В общем, желаю тебе удачного поиска. Stay tuned!
![](/wp-content/themes/engine/img/www-icon.jpg)
WWW
Ссылки к материалу
- 5 Ways to Find Systems Running Domain Admin Processes
- Faster Domain Escalation using LDAP
- @harmj0y's "security at the misfortune of others"
Общая теория по пентестам
- Vulnerability Assessment
- Open Source Security Testing Methodology Manual
- The Penetration Testing Execution Standard