Главная » Хабрахабр » [Перевод] Враг внутри: как я попался на инсайдерском редтиминге

[Перевод] Враг внутри: как я попался на инсайдерском редтиминге

Я уже был внутри сети. У меня были все преимущества. Но они обнаружили мой взлом, выкинули из сети… и выследили физически.
Многие тестирования на проникновение начинаются снаружи, чтобы проверить, как можно преодолеть периметр. Я был вне подозрений. Разве они могли бы остановить меня, если я уже был в сети? На этот раз заказчик хотел посмотреть, насколько далеко может зайти атакующий, который уже сумел оказаться внутри организации.

Мне дали рабочий компьютер, бейджик, учётку в системе… чёрт, у меня даже была своя кабинка с вымышленным именем на ней. Итак, они тайком провели меня в офис, замаскировав под нового работника. Все остальные думали, что я Джереми из Маркетинга. Единственным человеком, знавшим, кто я на самом деле, был их директор по информационной безопасности.

Разведка

Бо́льшую часть утра первого дня я был занят процедурами оформления на работу, знакомства с коллегами и выполнением чёрной работы. Но я должен был действовать быстро. На всё про всё у меня была только неделя, и нужно было успеть всё взломать, не вызвав подозрений. Так что я занялся делом.

Самое трудное — пробиться в сеть. Чтобы вы понимали: большинство тестирований на проникновение довольно прямолинейны. Оставшееся время уходит на заметание следов и сбор доказательств возможных последствий атаки. Но оказавшись внутри, получаешь широкий выбор целей: старые компьютеры, пароли по-умолчанию, все сидят под локальными администраторами… Обычно я получаю учётку доменного админа за день-два, а вскоре после этого и администратора организации. Пришло время удивляться. Но на этот раз всё было иначе.

Я собирался использовать свой служебный компьютер для исследования, изучения настроек других рабочих станций, но я бы не стал атаковать непосредственно с него, чтобы не оставлять следов, указывающих на меня. Сев за компьютер, я сделал вид, что работаю. Я подключил его к сети и получил IP-адрес. Вместо этого я принёс отдельное устройство для взлома: личный ноутбук с линуксом и кучей хакерских инструментов. Их NAC не охватывал всю сеть: любое подключение из рабочей кабинки было доверенным.

Перехват и анализ сетевого трафика с Wireshark, смена MAC-адреса и имени моего ноутбука, чтобы он затерялся в их инфраструктуре и выглядел, как обычное оборудование. Я начал, как обычно. Довольно быстро мне удалось насобирать полную горсть хэшей. Затем — использование Responder в своей подсети для вылавливания хэшей и взлома паролей. Я находился в обычной подсети для работников, поэтому вокруг было много залогиненных учёток с открытыми браузерами, разбрасывающими аутентификационные данные.

Первые сюрпризы

Я запустил перебор найденных хэшей на своей ферме из 8 видеокарт, но… что-то пошло не так. Довольно быстро были проверены все 8-символьные комбинации из больших и маленьких букв, цифр и спецсимволов (NetNTLMv2). Большинство обычных паролей (одно слово, первая заглавная буква, заканчивающийся на цифру или символ) я взламываю мгновенно. Но не здесь.

Не хотелось оставлять лишних следов. Я мог бы запустить net accounts на своей рабочей станции, чтобы посмотреть парольную политику непосредственно в AD, но для начала я решил поискать где-нибудь ещё. Оказалось, что минимальная длина пароля, который должен был включать большие и маленькие буквы, спецсимволы и цифры, составляла 12 знаков. Порывшись в сети, мне удалось найти Требования безопасности. Это принесло мне несколько паролей! И они уже начали переход на парольные фразы… Я поменял свой набор правил для брутфорса на использование более длинных слов, заглавных первых букв и окончаний из цифр и специсимволов.

Погнали! Круто! Какого...? Я сразу попытался удалённо зайти на компьютер пользователя под его паролем..., и был заблокирован. Пароль верный. Это всегда срабатывало. Я перепроверил себя. Но доступ закрыт. Делай всё правильно. Начинай с основ. На VoIP-телефонах нашлись конфиги веб-страниц, где был прописан его адрес. Некоторое время ушло на поиски контроллера домена. После долгих раскопок в куче настроек, я понял, что удалённый доступ разрешён лишь небольшой части айтишников, даже не всему IT-отделу. С контроллера я через LDAP вытащил свойства групповых политик, чтобы посмотреть привилегии. Они реализовали модель наименьших привилегий… Кто так делает? И я не взломал ни одного из их паролей.

Обойдусь без доступа к компьютерам. Ладно, идите к чёрту. Так я и поступил. Залезу в их переписку! Мне попалась куча личных паролей от чего угодно… Но ни одного от служебной учётки. Я искал пароли в почте, Skype-чатах, проверил заметки и черновики в Outlook. Похоже, мне ещё повезло. Зато я нашёл письмо от отдела информационной безопасности, где говорилось, что они в течение недели планируют внедрить двухфакторную аутентификацию для почты.

Самое слабое место любой системы

Затем я отправился на SSO-портал. Все внутренние приложения в одном месте. Мечта хакера! Я кликнул на одно из приложений. Оно требовало двухфакторной аутентификации. Следующее тоже. И следующее. Да что ж за Алькатрас-то такой?! Ночной кошмар хакера!

Он за двухфакторной аутентификацией, ну, и пофиг. Я видел, что они используют Citrix. Citrix даст мне доступ к внутреннему серверу. Я с этим разберусь. Я запустил Citrix, получив в ответ запрос 6-значного пина. Мне нужно было попасть на внутренний хост, чтобы убрать мой хакерский ноутбук и начать уже продвигаться в сеть. Поискав в почте «5309», я нашёл подпись пользователя, в которой этот номер телефона был указан полностью. Тут есть кнопка с надписью «Нажмите для получения токена» и немного подредактированным номером телефона: (xxx)xxx-5309. Я позвонил по нему.

«Добрый день, Пэм. Ответила женщина. Мы переносим Ваш профиль Citrix на новый сервер. Я Джош из айти. Мне нужно, чтобы Вы прочитали мне его. Я сейчас отправлю Вам 6-значное число. У меня уже был её пароль. На всякий случай напоминаю, мы никогда не спрашиваем Ваш пароль». Я отправил Вам число, прочитайте его мне, пожалуйста, когда получите». Она колебалась: «Хорошооо...» Я нажал кнопку для отправки токена аутентификации и сказал: «Готово. 9-0-5-2-1-2». Она ответила: «Эммм… Да, получила. Пожалуйста, не запускайте Citrix пару часов!» На экране тикал таймер на 60 секунд. «Благодарю! Залогинен. Я набрал цифры в окне двухфакторной аутентификации и нажал «Ok». Оказавшись внутри, я увидел… ничего. Иди в пень, двухфакторная аутентификация! Этому пользователю не нужен был Citrix, поэтому к нему не было привязано НИЧЕГО. НИЧЕГО! Я взломал подсобку.

Это безумие. Так. Даже со взломанным паролем кого-то из небольшой группы людей мне придётся обходить двухфакторную аутентификацию. Я возможно подберу длинный пароль, но только если мне повезёт поймать нужный хэш. Проклятье… Каждая попытка, особенно с кем-то из этой защищённой группы, повышает риск обнаружения.

Я запускал всё более и более агрессивные сканы, стараясь всё же оставаться ниже радаров. Я перепробовал всё. И хотя то тут, то там я находил какие-то мелочи, этого не хватало, чтобы где-нибудь закрепиться. Я прощупал всю сеть и все службы, которые сумел найти, со всеми атаками, которые знал. Уже конец второго дня. Я начал впадать в отчаяние. Чёрт возьми. Обычно в это время я уже потрошу базы данных, читаю почту генерального директора и снимаю людей на их веб-камеры. Я собираюсь урасть ноутбуки. Пора вломиться в логово айтишников.

Ночной рейд

Я задержался после работы. Коллегам сказал, что нужно закончить курс по безопасности при трудоустройстве. Они покивали и свалили. Потом пришли уборщики. Когда они закончили, я остался один. Я направился к кабинету айтишников. Нашёл дверь. Оглядевшись по сторонам, я взялся за ручку…

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

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

И лишь около 1% связаны с математикой… Понятия не имею, почему дверь была открыта, но 80% моей работы — это пользовательские ошибки, 56% — навыки, 63% — приспособляемость, 90% — использование особенностей и жирные 80% — удача.

Я не знал, не вернётся ли кто-нибудь сюда с минуты на минуту, поэтому принялся за работу. Как бы то ни было. Взвесив риски попасться в кабинете айтишников или с кучей ноутов на моём столе, я выбрал свой стол. В углу лежали стопками ноутбуки разного возраста, производителей и моделей. Затем я начал методично пытаться загрузить каждый ноутбук с флешки в поисках незашифрованного Святого Грааля. И вот я уже перетаскиваю охапки старых ноутбуков из айтишной норы в свою кабинку, складывая из них Пизанскую башню под своим столом.

Я подключаю её к одному из ноутбуков, загружаю его и пытаюсь смонтировать жёсткий диск. У меня есть загрузочная флешка с Kali и утилитой samdump2. Наконец, после 30 проверенных ноутбуков я нахожу три полуживых с незашифрованными дисками. С каждым разом натыкаясь на шифрование, я всё сильнее расстраиваюсь. Таким образом удаётся найти нестандартную учётку локального админа «ladm» на всех трёх машинах. С помощью samdump2 я вытаскиваю локальные NTLM-хэши из SAM и сравниваю их. Слава Эриде, они не используют LAPS. Хэши совпадают. Я взломал этот хэш довольно легко. Учётка локального админа одинаковая на всех компьютерах. Ошибка в управлении активами. Пароль оказался <Название компании><Год>, и этот год прошёл пару лет назад. Обожаю.

Даже локальному админу был запрещён удалённый вход… Я попытался зайти локально на собственный служебный ноутбук, и у меня получилось! Я попытался зайти под новой учёткой удалённо и получил ту же ошибку, что и до этого. Мастер-ключ! Эта учётка обходила полное шифрование! Этим можно воспользоваться! Так… тааак! Что? Но потом я заметил одну странность… У меня не было прав доступа к пользовательским данным. Чёрт. Они ограничили доступ ДАЖЕ ДЛЯ ЛОКАЛЬНЫХ АДМИНОВ?! Нужно было повышать привилегии до системных.

В конце концов я поискал уязвимости Unquoted Service Path и нашёл парочку! Я перепробовал все трюки, которые приходили в голову. Да бросьте! Но вывод говорил о том, что мой локальный администратор не имеет права записи в нужные папки. Заканчивалась моя 17-часовая смена. К тому времени я уже был измотан и сломлен. Это был ещё один тупик. Мозг уже не работал. Нужно было пойти домой и немного поспать, чтобы начать заново на следующий день. Ещё одна серия тяжёлой борьбы и успешных взломов ради очередного фейла.

Звонок другу

На следующий день я снова всё перепроверил, чтобы убедиться, что ничего не упустил. Я проверил всё, что мог проверить, просканировал всё, что мог просканировать, сделал всё, что приходило в голову. Всюду небольшие зацепки, но ничего стоящего. Я позвонил коллеге из Dallas Hackers. Рассказав ему о своих мытарствах, я закончил рухнувшими надеждами на уязвимость Unquoted Service Path, когда вывод показал мне отсутствие необходимых привилегий. Он спросил: «А ты все-таки попробовал проэксплуатировать её, несмотря на это?». Я замер. Я не попробовал. В том состоянии я поверил выводу и не проверил сам. Хорошо. Я попробовал записать данные в директорию. Ту же самую, для записи в которую по словам Windows у меня не было доступа. И мне это удалось. Чёртова винда. Снова меня обманула. Но ладно. Это ж офигительно. Новая зацепка.

Я рискнул проверить связку на собственном компьютере, и похоже всё работало отлично. Коллега быстро накидал мне на C загрузчик, который запускал нагрузку на Powershell. Но это всё, что у меня было. Это была извращённая атака. Я собирался:

  1. Запустить listener на моём хакерском ноутбуке
  2. Получить физический доступ к ноутбуку в офисе
  3. Зайти под учёткой локального администратора
  4. Загрузить свою связку малвари по адресу Unquoted Service Path
  5. Выйти
  6. Дождаться входа пользователя и запуска нагрузки

Приближался перерыв на обед. Я ответил улыбкой на приглашения коллег пойти перекусить и немного задержался. Сначала я планировал наведаться к айтишникам и добраться до одного из их компьютеров, пока они обедают. Но когда я подошёл к их кабинету, то увидел, что они все на месте! Едят свой обед перед компьютерами! Они что, не в курсе, как это вредно?! Как отсутствие разделения работы и отдыха и нехватка перерывов ведут к стрессу?! Почему они не обедают, как нормальные люди?!

Я собираюсь взломать компьютер. Да пошли вы. Я прошёлся по офису и нашёл кабинет, где никого не было. Любой компьютер. Хорошо, взломаем финансы. Финансисты. Дал ей понять, что я айтишник, обновляющий компьютеры. Я ответил что-то милой маленькой старушке, вернувшейся за своим кошельком. Раздражённый, с лицом, наполненным ненавистью и злорадством, я повернулся к одному из компьютеров её коллег и взломал его. Она кивнула и, мило улыбнувшись, ушла.

Я вернул кресло и мышку в то состояние, в котором они были до моего прихода. На всё ушло менее 30 секунд. И вернулся на своё рабочее место. Ещё раз бегло осмотрелся, убедившись, что всё выглядит нормально. В какой-то момент обед закончился. Сидеть, уставившись на свой listener. Уже начав терять надежду, я увидел:
> Meterpreter session 1 opened
А затем…
> Meterpreter session 2 opened
> Meterpreter session 3 opened
...
> Meterpreter session 7 opened

Твою ж налево! Мне не хотелось даже разговаривать. Иии-ха! Я запустил GETUID и увидел NT AUTHORITY\SYSTEM.

Отлично! Хорошо! Эмм… Поехали! Так! Закрепившись в системе, я сделал дамп памяти и начал копаться в файловой системе. Да! Какие-то пароли в открытом виде. Какая-то финансовая информация. Но да ладно. Чувствительная информация, но ничего серьёзного. Плацдарм. Это только начало. А затем…
> Meterpreter session 1 closed

Я пингую систему, не отвечает. Я пытаюсь цепляться к сессиям, но они все закрыты. Ничего. Сканирую 445 порт. Это. Система недоступна. Слишком. Уж. Что стряслось с моими шеллами?! Я встаю и направляюсь прямиком в финансовый отдел.

Я быстро делаю «Ох, ё...» и разворачиваюсь, когда старушка смотрит в мою сторону, показывает пальцем прямо на меня и кричит: «Это он! Повернув за угол, я вижу, что милая старушка разговаривает с самым здоровенным и свирепым айтишником. Развернувшись спиной к свирепому айтишнику, я бегу в противоположном направлении и натыкаюсь на двух безопасников. Он возился с нашими компьютерами!» Я издаю истошный крик и кидаюсь наутёк. Я очнулся в крови, пристёгнутый к эргономичному офисному креслу стяжками, которыми они стягивают кабели в серверной. Они выглядят очень недружелюбно и ясно дают понять, что я забрёл не в тот район. За её спиной ухмыляется небольшая команда аналитиков из группы обнаружения вторжений. Начальник DFIR стоит передо мной, её костяшки сбиты. Я выдавливаю из себя одно слово… Мне нужно знать… «Как...?» Она склоняется над моим ухом и шепчет: «Никто в финотделе никогда не запускает Powershell...»

Но история с тем, как я наткнулся на старушку, которая сдала меня айтишникам, настоящая. Ладно… Я немного добавил драматизма в конце. Отобрали мой ноутбук и доложили обо мне руководству. Они задержали меня прямо там. И способ, которым они меня вычислили, тоже настоящий. Пришёл директор по информационной безопасности и подтвердил моё присутствие. Простой и надёжный метод выявления аномалий. Они получили уведомление о том, что Powershell был запущен на системе, которая не относилась к небольшой группе айтишников и разработчиков, запускавших Powershell в обычных условиях.

Выводы

Blue Team

  • Модель наименьших привилегий
  • Мультифакторная аутентификация
  • Простые правила выявления аномалий
  • Глубокая защита

Red Team

  • Продолжать пытаться
  • Не предполагать
  • Обращаться за помощью
  • Везёт подготовленным
  • Адаптация и преодоление

Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Вышел Rust 2018… но что это такое?

Статья написана Лин Кларк в сотрудничестве с командой разработчиков Rust («мы» в тексте). Можете прочитать также сообщение в официальном блоге Rust. В этом релизе мы сосредоточились на производительности, чтобы разработчики Rust стали работать максимально эффективно. 6 декабря 2018 года вышла ...

50 лет спустя. The Mother of All Demos

«Компьютерная революция еще не случилась.(The computer revolution hasnt happened yet)»— Алан Кей Всем привет. И я стартую проект «Энгельбарт» (чтобы это ни было и что бы это ни значило). Сегодня 50 лет с исторического события, известного как "Мать всех демонстраций" ...