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

Статья Корпоративные сети. Pentest/Red teaming в эру DPI, EDR, SIEM. #1-7

sii

(L3) cache
Пользователь
Регистрация
23.11.2018
Сообщения
190
Реакции
281
Скрытый контент для зарегистрированных пользователей.

Вступление
Как и все ( надеюсь ) присутствующие тут люди ( ИИ как и представители другой органической и не очень жизни тоже привествуються :-D ) я надеюсь что https://xss.pro/ даст новую жизнь тем старым идеям что царили в начале 2000-х в рунете ( и не только ), даст приют нам тем кто был тогда и уйдя не смог не вернутся, но по приходу нашел совершенно другую “сцену” со своими не совсем понятными правила где читеры=хакеры а масс брутеры=кардеры, это новый для меня мир как думаю и для многих, потому очень хочется обрести “приют” тут и при этом не стать обособленным от общего течения уголком рунета а вливаясь принести свой опыт ( да, да у нас у ветеранов тех временем когда были войны ( шуточные от детской обиды в основном или just for fun ) между группами и сообществами, когда за зловреда в >100кб на тебя смотрели как на чудовище у которого надо отобрать компилятор, есть что Вам рассказать и чем поделится) и знания. С такими мыслями в голове я берусь за данную статью, так сказать тряхну старинной, надеюсь матерьял изложенный ниже будет для кого-то полезным и интересным, за некоторые обороты речи за ранние хочу извинится, русский забываю понемногу.

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


Глосарий
DMZ = Demilitarized Zone
DPI = Deep Packet Inspection
OSINT = Open Source Intelegence
SIEM = Security Information and Event Management



Введение

Обычно мы начинаем имея на руках только название компании ( url корпоративного сайта тоже дают, хотя оно гуглится за 1 секунду :) , вместе с ограничениями при проведении пентеста и.т.д но в данной статье ограничения будут рассматриваться только со стороны здравого смысла ) и описание цели самой операции.
Я не буду сильно вдаваться в теорию постановки целей и составления отчетов ( будет интересно то могу написать статью, там много нюансов и достаточно много автоматизированных утилит под эти задачи есть, но правда не одна из них не сделает все за вас :) ) это моя самая не любимая часть работы.
Цели ( Все пункты описаны утрировано, но статья рассчитана на привлечения внимания новичков а не их отталкивание, потому так )
1. Проникновение в сеть
2. Разведка
3. Доступ к AD
4. Доступ к терминалам работы бизнес логики
5. Скрытие следов
Прикрепить к отчету часть krbtgt ( от каждого домена, как доказательство скомпрометированности доменов ( MS таки выпустила ман как их менять без реинсталла всего домена :) ) ), получить доступы к серверам являющимися частью бизнес логики ( обычно DB серверов достаточно ) и уйти будучи не обнаруженными, а места где следы останутся замаскировать под заражение обычным зловредом, сэмплов которых в сети можно найти много, достаточно дропнуть файл на диск чтобы отработал АВ ( запускать не надо :) как бэ этика).

Следующий пункт который нам стоит обсудить это собственно сам процесс по пунктам, в каком порядке и что делать если по простому:
Код:
1. Пассивный сбор данных.
2. Подготовка инфраструктуры.
3. Подготовка софта.
4. Активный сбор данных.
5. Тестирование инфраструктуры и софта.
6. Правки софта.
7. Операция по получению доступа в сеть.
8. Поверхностная разведка в ОС и сети, закрепление стандартными средствами ( которые предусмотрены в вашем софте).
9. Анализ данных и поиск методов закрепления под конкретную цель.
10. Реализация версии софта под цель с механизмами закрепления ( так же в зависимости от ситуации изменяется канал передачи данных)
11. Разведка внутри сети
12. Получения учетных данных
13. Составление карты сети
14. Идентификация ключевых учетных записей и терминалов
15. Идентификация сегментов сети отвечающих за критические процессы
16. Повышения прав в домене (получение учетных данных с более высокими привилегиями а не изменения привилегий уже имеющихся учетных данных !!!)
17. Идентификация dmz и путей доступа к ним ( в данном случае под dmz имеется введу изолированные сегменты сети внутри интранета)
18. Идентификация решений используемых в работе бизнес логики компании.
19. Подготовка инфраструктуры для эмуляции бизнесс логики компании ( Опять же просто установка тех же решений с версиями которые стоят в целевой сети)
20. Подготовка и тестирования софта предназначенного для взаимодействия с решениями в целевой сети
21. Анализ полученных данных и идентификация критических данных которые нужно будет включить в отчет.
22. Сбор всех нужных данных и проверка на предмет оставшихся следов ( если все сделать правильно их не должно быть но проверка необходима пусть это и генерирует дополнительный трафик)
23. Выгрузка из памяти всех модулей.
24. Очистка закреплений, удаление всех артефактов.
25. Дроп сэмпла малвари одном из терминалов имеющим прямой доступ в интернет ( необязательный шаг )

1. Пассивный сбор данных.
Как и любая другая операция тестирование корпоративных сетей на проникновение требует предварительной подготовки, первое и часто самое главное это предварительный сбор данных и разведка. ( собираем данные чтобы потом получить доступ к еще большему количеству данных, данные генерируют данные… программы пишут программы…. ох и понесло меня, можно поразмышлять но это не тема данной статьи)
Не большое отступление: весь сбор информации на данном этапе происходит СТРОГО за пределами внешнего периметра сети не касаясь его и потому пока еще нам можно использовать утилиты не нашего авторства, ниже будут подробности но держите в голове как пример: “Сканирование портов на ip принадлежащих цели это не сбор за пределами сети, парсинг bing и Google это сбор информации из открытых источников”
Тут упомяну только несколько тулзов ну и пару способов как получить нужные нам данные, не чего сверхъестественного но данная статья и рассчитана на тех кто только начинает задумываться перейти ли на светлую сторону силы в .
Софт (список не полный и не претендует на такой, только удобный мне софт не более)
1. theHarvester
Пример: python theHarvester.py -d xss.pro -l 1000 -b bing,crtsh,pgp,threatcrowd,linkedin,vhost,yahoo,twitter

2. xray (Недавно использую но довольно не плохо)
xray --shodan-key apikeyshodan --viewdns-key apikeyviewdns --domain xss.pro

3 Raven (Предпочитаю LinkedIn руками смотреть и потом выкачивать только нужное по фильтрам, ссылка на Raven тут только для примера и удобства )
Учитывая что мы говорим о корпоративных сетях то Linkedin для нас просто кладезь информации (утекшая база тоже поможет, это не очень этично так ка ямы говорим о blackbox тесте но она давно достояние общественности так что можно)
После получения данных о самой компании и ее работниках Вам стоит пройтись по техническому персоналу, Вы возможно удивитесь но твиты, блоги, домашние странички ( они до сих пор бывают :) , а если и удаленны web.archive.org Вам в помощь) и гитхаб репозитории иногда содержат настолько неожиданные интересные куски информации :)

Тут можно написать еще очень много но думаю что и так "много буках" да и по данной теме единственное что реально нужно это изучить язык поисковых запросов Google :)


2. Подготовка инфраструктуры.
Инфраструктура обычно готовится индивидуально, в зависимости от софта и операции, полного универсального рецепта нет но пару советов +личные предпочтения я опишу, возможно Вы найдете для себя что-то новое или интересное.
1. Не передавайте данные в открытом виде (ssl не достаточно)
2. Мимикрируйте (трафик должен быть похож на обычный)
3. Используйте доверенные домены (каталогизированные)
4. Меньше трафика, меньше следов
5. Домены как вино, чем старше тем лучше.
6. Старайтесь пропускать трафик через доверенные узлы и подсети (Akamai,Ms,Google,Amazon...lvl3)
7. Используйте фронт сервера (даже если не хотите, даже если не позволяют в полной мере условия или обстоятельства, как минимум можно использовать аккаунт от office 365 или ... что угодно ( например api jira ) )
8. Под каждый этап операции нужны отдельные не пересекающийся инфраструктуры
9. Не экономьте на сертификатах и доменах.
10. На каждой http,https должен быть сайт, желательно реальный но как минимум клон.
11. Рэндом отстуки (jitter)


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

infra.png

На схеме изображена инфраструктура с использованием как Cloud хостеров, DNS так и сторонних сервисов(jira).


Начиная с мая 2018 года Google и Amazon начали бороться с domain fronting, причины да и вообще подробности можете прочитать тут https://www.theregister.co.uk/2018/04/19/google_domain_fronting/
На схеме Fig.1 предполагается использование всего нескольких протоколов из возможных, (http, https, dns) можно использовать и другие, в зависимости от исходящего трафика целевой сети, но это нам будет ясно в полной мере только после проникновения в саму сеть, но мы точно знаем что по умолчанию у нас есть несколько вариантов: http, https, dns (да я знаю про сети в которых нет по сути доступа в "мир"( там без железок не как) или только в dmz есть сервера которым доступен обычно smtp трафик на выход но это исключения, обычно прокси или как минимум WSUS ходит в мир).

Думаю что тут мало что можно нового сказать, но пару советов есть.
1.TXT старайтесь не использовать
2.Не надо длинных поддоменов
3.Этот канал при возможности используйте как запасной который просто запустит для вас нужный канал
4.base32 хорошо но выглядет очень подозрительно
5.Почему бы просто не использовать A запись IP?
dig xss.pro A
dig1.png

sleep(n);
dig xss.pro A
dig2.png

startHTTPSImplant(config.ip); //startHTTPSImplant(respone.ip); :)
Он не так плох как многие думают, да трафик на виду и приходится думать как бы и где спрятаться но, от этого типа трафика мало чего ожидают, если продумать протокол общения и сделать хороший сайт с контентом и рейтингом то почему бы и нет.
Собственно пару мыслей и идей.
1. GET наше все
2. Cookie наше все
3. Модули пересылаем в img ( стеганография )
4. Не ходим на один и тот-же url постоянно.
5. URL должны выглядеть нормально
6. Не стесняемся используем rand() % hrefarray
7. Шифруем все, в куках и в картинках.
Ну это самый часто используемый в таргетированных атаках протокол для связи потому информации много. Но все-же думаю кое что можно обсудить и тут.
Валидные сертификаты ( покупаем, старайтесь не использовать let's encrypt, конечно лучше чем не валидный сертификат но все-же потратьте пару $ на покупку COMODO а в идеале что-то от thawte но это сложнее )ю Протокол работы бота внутри https стоит воспринимать как http, SSL просто верхний слой шифрования внутри все должно выглядеть как легальный трафик. DPI сейчас используются повсеместно потому так или иначе использование SSL это просто способ придать больше "баллов нормальности" нашему трафику.
Atlassian продает на данный момент облачное решение на базе jira, это весьма популярный в корпоративной среде софт, использовать их api по принципу front сервера для имплантов хорошая идея, так как вы получите в комплекте сразу ssl,domain,ip и все в доверенной зоне
В начале статьи у меня была мысль сделать шаблон для работы с jira, но на данный момент 10 декабря, а готово очень не много потому потому оставлю на Вас, сложного там не чего нет, jira имеет rest api :)
В общем теперь переходим к самому интересному и при этом самому простому и понятному, domain frontig. Возможность подставлять в header Host: другой домен не является чем-то необычным или какой-либо уязвимостью, это то как работают веб сервера по сути точнее как он выбирает какой контент выдавать если обслуживает несколько хостов/доменов, а с приходом CDN в www это уже приняла более громадный масштаб.
То есть что у нас есть по факту:
1. Облачные решения обслуживающие кучу клиентов, предоставляющие услугу cdn
2. Огромное количество очень популярных сайтов хостяшихся в облаках чьи домены и сертификат мы можем использовать.
3. Доступность к свободной регистрации и тестовых периодов у многих облачных хостеров.
Лока дегтя с сахарком: Amazon и Google начали блокировать но если вы найдете сервис самих компаний который позволяет записать или передать данные то вы в игре снова.
Бочка меда: Azure работает и поддерживает
curl https://ajax.microsoft.com/ --header "Host: ww1.iris.net"

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

Отступление: Если нет желания покупать домены и хочется сделать самому тогда вам могут быть полезны эти утилиты
1. Chameleon Поможет вам каталогизировать ваши домены ( При добавлении в BlueCoat запускайте с ip к которому домен привязан... )
2. CatMyPhish Поможет найти просроченные домены которые уже были каталогизированы.
На этом закроем главу, будут вопросы рад буду ответить, в общем двигаемся далее.

3. Подготовка софта.
Если вы ожидаете тут увидеть руководство по использованию empire, Metasploit, cs, ds итд то этого не будет, я все понимаю но будучи человеком с неудачным опытом я пришел к определенным выводам которые создали для меня определенный свод правил, их можно нарушать но если это делать не зная что внутри сети весь пентест может пойти по накатанной дорожке то есть в "некуда". Ниже речь пойдет только о софте под Windows.

Субъективный свод правил сказал(а):
1. Свой код ( вариант написания софта под заказ это не плохо но не стоит того, тем более что обучение программированию встанет вам намного дешевле чем хороший софт под заказ с исходниками, я не жадный я просто люблю понимать что и как работает :) )
2. Мимикрия (Софт должен быть похож на легальный, следим за импортами, не берем лишнего, но и не оставляем пустой таблицу, если это com то и экспорты должны быть соотвествующие...)
3. Инпланты только pe ( ps, python,IL это хорошо но спасибо нет желание упрощать реверсерам с аналитиками жизнь, да и amsi с AV идут в том же направлении пешей прогулкой)
4. Размер <100кб ( что хотите то и говорите, но софт без сжатия <100кб, софт с базовыми модулями <200, внц и рдп не беру в учет так как не пользуюсь)
5. Софт должен уметь работать с прокси прописанным в системе, из под system тоже
6. Модульный ( модули в виде pe dll, shellcode и .net )
7. Вырезать CreateRemoteThread ( жаль но он очень возбуждает защиту)
8. ReflectiveDll от Didier Stуvens тоже вырезать ( Я не буду спорить он проделал хорошую работу но оно уже устарело, может и можно использовать если хорошенько все переписать но это будет не благодарный труд, так как нет смысла если все ровно использовать CreateRemoteThread(), а если вы реализуете APC инжекты то смысла в рефлеткив длл нету)
9. Версии exe, dll ( Общий солюшн в VS и общие инклуды, сэкономит время в будущем )
10. Нужны инжекты пользуйте: Com hijacking ( пока не особо АВ злятся на них )
11. Реализация сразу нескольких протоколов работы в коде ( во время билда исключать не нужные или уже иметь билды на каждый случай )
12. Ведем себя аккуратно (Чистим за собой память и не пишем не чего на диск без надобности)
13. Ключевые данные в стринг не храним, только для мимикрии
14. Подписываем софт валидным сертом ( если не мимикрируем под что-то что не имеет подписи )
15. Для каждой операции свои билды

Все пункты относятся только к ОС семейства Windows, что касается *nix в данной статье информации не будет , если будет время и интерес у сообщества сделаю статью по софту для linux (с bsd свои моменты есть с которыми пока не разобрался сам), инжекты и авторан
Это далеко не все и весьма субъективно, можно упомянуть еще то что делаю билды одновременно с регистрацией доменов для их "отлежки" что билдов что доменов, так же от операции к операции код внутри отличается так как постоянно ведется работа по улучшением или добавлению функционала, фиксу багов, это не дает АВ связать все в одно и убивать софт везде.
Так же вам понадобится решение которое позволит свои "роуты" прокладывать, какой вы выберите путь решать вам, но будь то port forwarding или smb implant так или иначе этот функционал должен быть реализован отдельным модулем ему не нужно столько функционала как основному инпланту но при этом вы должны найти способ заставить его жить в процессе который не вызывает подозрений скажем при создании smbpipe. Тут каждый найдет свой подход, я не вижу смысла тут выкладывать конкретные примеры процессов и названий и листа реальных имен pipe в которых можно жить, они меняются от версии к версии и от сети к сети..., но и найти не составит много труда, реверсить win для этого не надо, вполне себе хватит Sysinternals тулзов :)
P.S Авторан как бы это было смешно но реализуется просто и АВ плохо работают с простыми способами которые использует легальное ПО, в прочем я предпочитаю COM hijack для dll под юзером, .url для exe ну а под системой думаю даже и не стоит упоминать сколько всего там есть для авторана.

Работает это просто, все com библиотеки (обьекты) имеют свои записи в реестре для обращения к ним (clsid/guid) при установке программного обеспечения которое использует com она регистрирует их в системе, обычно это происходит под админом ( да японимаю что можно и под юзером но в конкретном случае который описывается это скорее помеха) запись делается в
(clsid я называю guid "A CLSID is a globally unique identifier that identifies a COM class object. It is also an unique id and alias of GUID. COM class object component should create a registry in CLSID.")
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\(guid)
но система при запуске софта и обращения к COM обьекту ищет не в HKLM а в HKCR (HKEY_CLASSES_ROOT) так уж завелось что MS должна иметь обратную совместимость и возможность давать настройки каждому юзеру под его профилем и.т.д и.т.п в общем что мы имеем на выходе:
1. Регистрация COM в HKLM
2. Поиск COM в HKCR
3. HKCR это подгрузка HKLM на которую если утрировать накатывается HKCU (HKEY_CURRENT_USER)
4. HKCU идет последним слоем так как HKLM это дефолт настройки так сказать а HKCU для конкретного юезра
5. Если запись о регистрации COM есть в HKLM она будет в HKCR
6. Если запись есть в HKCU она будет в HKCR
7. Если запись есть HKLM и HKCU она будет HKCR но так как настройки юзера в данном случае "поверх" настроек системы то мы получаем возможность переписать в HKCR clsid сделав запись в HKCU без админских прав.
8. Профит

В итоге мы получаем: возможность сделать в HKCU тем самым переписав HKLM (при подгрузки из HKCR) а следовательно если софт подгружает COM обьект при загрузке системы мы получаем авторан, не такой часто используемый но все-же требующий dll на диске ( я знаю что можно скрипт подставить в значение и сделать якобы (запись в реестр это запись в фс просто внутри файлов реестра, неожиданно :) файллес малварь, но если на обычную запись не матерятся АВ то попробуйте rundll32 засунуть туда с javascript: и настанет конец всему пентесту) вот почему я и писал что вам надо иметь реализацию софта в виде dll, ком обьект эта обычная dll с доп интерфейсами но для нормальной работы вам достаточно будет экспортировать 4 функции всего, хвала msdn и доброго здоровья Miсrosoft.
Читаем внимательно про скрипты... и да про TreatAs, это если вы хотите "проксифицировать" обращение к уже существующей записи к примеру, в общем RTFM.
Изучаем пока глаза не вылезут
Информацию по com hijack упростил до невозможности, где-то могут быть неточности или опечатки, будет время сделаю пример реализации, не успеваю статью дописать потому почти не проверяю что печатаю :) Мне срочно нужна секретарша и корректор(ша) и ... ох опять меня понесло. Двигаемся далее.
P.P.S netsh helper тоже интересный момент так как некоторый софт из корпоративного чемоданчика его запускает.

P.P.P.S PowerShell забыли.


4. Активный сбор данных.​
Теперь будем щупать Наташку за ляшку сеть за домен, в общем тут бы стоило добавить что на этом этапе мы ищем дополнительные данные и уязвимости в сервисах которые выставлены голыми открытыми в опасный мир интернет.
11 декабря, я немного устал писать уже это все а впереди еще очень много надо обсудить потому далее текст будет более сухой и если получится с небольшим количеством отступлений.
Надо узнать имя домена, это не всегда возможно но часто, тут я опишу два способа это email переписка и s4b но сразу скажу что если корп старый покопайтесь внутри mail рассылок на sourceforge у Apache и вообще в opensource сообществе ..., там мыла с заголовками есть и часто можно домен найти :)


1.В общем S4B:
curl -A "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" -sSL -D - https://lyncdiscover.domain.com | grep -i "AutodiscoverService.svc/root"
Ответ:
JSON:
{"_links":{"self":{"href":"https://skype.domain.net/Autodiscover/AutodiscoverService.svc/root?originalDomain=domain.com"},"user":{"href":"https://skype.domain.net/Autodiscover/AutodiscoverService.svc/root/oauth/user?originalDomain=domain.com"},"xframe":{"href":"https://skype.domain.net/Autodiscover/XFrame/XFrame.html"}}}
Берем ссылку, делаем запрос:
curl -A "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" -sSL -D - "https://skype.domain.net/Autodiscover/AutodiscoverService.svc/root?originalDomain=domain.com" | grep -i "fqdn"
Код:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json
Expires: -1
X-MS-Server-Fqdn: CWSN-FBSSR1-VM.domain-hq.local
X-MS-Correlation-Id: 2147524923
client-request-id: a2245677-1c6c-4ab1-8837-f7894b213b4e
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Date: Tue, 11 Dec 2018 17:40:20 GMT
Content-Length: 316
Вот собственно header с именем терминала и доменом.
Код:
X-MS-Server-Fqdn: CWSN-FBSSR1-VM.domain-hq.local
Собственно домен: domain-hq.local
Имея имя домена мы можем далее использовать в софте, у нас целевая операция потому мы можем исключить запуск нашего софта вне домена ( не всегда хорошая идея, часто pc бывают вне доменов, но это оправданный риск. Добавлю еще что имя домена лучше в софт не вшивать в чистом виде, можно использовать хэш а точнее его части для распознания и при этом не дать аналитикам дополнительную информацию о том что атака целевая и какая у нас цель.

2.Email
Тут особо писать не чего, частенько Relay хидеры добавляются с локальными именами, это то как работает smtp, каждый сервер который передавал письмо должен добавить relay header, конечно это можно поправить в настройках и иногда используются внешние сервисы для переписки вне сети но тем не менее это рабочий способ, в общем все что вам надо это вступить в переписку с работниками компании, отдаю предпочтение HR так как это повод отправить не одно письмо и при этом не вызвать подозрений, но будьте готовы создать личность почти соответствующую требованиям компании на вакансию, с акками в linkedin итд, многие скажут что можно просто скопировать кого-то, но это грубое нарушение как законов та ки этических норм.
В общем вступаем в переписку и смотрим ответы ( если используете веб сервис для переписки во всех что я встречал есть возможность посмотреть исходный текст или экспортировать его)
Received: from [10.1.3.23] ([10.1.3.23:21771] helo=exim22.domain-hq.local) by exm1.domain-hq.local


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

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

Да на этом этапе можете и поддомены трогать, много полезного найдете.
aiodnsbrute

5. Тестирование инфраструктуры и софта.
Первое правило всегда тестировать все, без исключений, не выполняйте не одной команды или модуля на цели пока не проверите это локально, тестировать весь софт надо на всех ОС x86 и amd64 ( пока не известна точная конфигурация целевого терминала ), так же вам понадобится лаборатория с чистыми образами с ОС и антивирусами (отдельная лаборатории только под АВ), онлайн сервисы проверки с поддержкой рантайм это игра в рулетку и для работы подобного рода не подходят.
Ставим сеть (пару терминалов в домене и сервер ad) c именем домена который мы добыли ранние.


6.Правки софта.
Включаем смекалку и фантазию, имея на руках имя домена мы можем сделать loader который протестируем в лаборатории, тут не много повторюсь но все-же:
Код:
1. Проверяем имя домена, но не держим внутри софта все имя оно нам не нужно, просто 3-5 символов из хэша и их "номера" в строке.
2. Делаем sleep() серверными, получаем первый запрос от клиента, записываем время, ждем второго запроса, если пошло больше времени чем в конфиге отдаем ключь на расшифровку полезной нагрузки, если нет тогда отдаем команду на ... дроп известной малвари :-D или отдаем безобидную версию, включаем фантазию, ip в запись и шлем себе сообщение, надо переписывать лоадер.
3. Для шифрования нагрузки в лоадере использует асимметрию
4. Хватит пихать макросы куда попало :-)
5. Подписываем валидным сертификатом, лоадер придет из зоны интернета так что валидная подпись будет не лишней.

Это поможет отчасти избежать эмуляций и всяких любителей своими потными ручками в чужом коде лазить :-D .
P.S не перегибайте с временем sleep() если лоадер выполняется в том же процессе в котором был запущен, пользователь закроет процесс и вы потеряете возможность закрепится, инжетится через createremotethread нельзя (запускать другой процесс можно, но лучше бы это был подписанный мс бинарник и не rundll32) :) так что тут каждому придется искать свой способ.

Повторюсь: PowerShell забыли. Не трогайте труп, он воняет. ( Приготовился к гнилым помидорам )


7. Операция по получению доступа в сеть.

Если на этапе активного сбора информации вы не смогли найти уязвимость которая позволит вам попасть в сеть у вас остается не много вариантов, но они весьма действенны, хотелось бы тут написать многое но это будет не правильно, раскидываться терминами типа СИ тоже не буду, все разжевано многими по много раз, от себя добавлю опять же небольшой свод правил.
Код:
1. Не начинайте переписку сразу с ссылки или файла.
2. Если человек перешел по ссылки покажите ему там то что он ожидает увидеть а не пустую страницу.
3. Прорабатываете и продумываете все до мелочей, к примеру если человек решит загуглить ваше имя он должен найти информацию, с вашим емэйлом а не похожим. Это важно.
4. Ведите долгие переписки.
5. Даже после выполнения вашего тихого файла на целевой системе не забрасывайте переписку, доводите до конца.
6. У вас может не быть второго шанса потому перед отправкой любого письма сначала присылайте его себе, читайте вдумывайтесь и старайтесь "погрузится" в голову вашего "визави"
7. Одна переписка за раз, не каких масс рассылок по всем найденным адресам.
8. Емэйл сервера если доступны из вне всегда можно проверить на часто встречающиеся учетные записи :-)
9. Не спуфайте домен.
10. Если речь об HR адрес публичный вам подойдет
11. Если вступаете в переписку от имени будущего клиента тогда вам нужен домен+сертификат+ все правильно настроенное и с выдержкой.
12. Проверяйте какие фильтры используются ( образно фильтры а по факты mail firewall ), не всегда есть возможность получить для тестов в частные руки такое решение, но частенько есть демо или триал на стороне производителя, если это так то потратьте время на изучение данного решения.
13. Если целевая сеть живет в другом часовом поясе переходите на их время.



На данном пункте я заканчиваю так как времени осталось не много, не уверен что смогу дописать до 25 (надо год закрывать срочно) выход был найден один, просто сделать серию статей которая надеюсь найдет своего читателя.

Продолжение следует... на самом интересном месте
Многие подумает что порог вхождения очень высок, нужно код писать уметь, внутренности разных ОС знать, всегда быть курсе где что нового по теме, но поверьте мне на слово: изучение и потраченное время стоит того, скажите мне какое вы знаете направление в ИТ где надо настолько разносторонни развитым быть? :).
Статья для xss.pro не копипастить, если есть желание поделится дайте ссылку сюда.

P..S Данная статья носит ознакомительный характер, задача данной статьи возбудить у читателя любопытство и вызвать желание изучать. Все персонажи вымышленные совпадения с реальностью... ;-)
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
sii ты очень хорош написал и расписал. Мне трудно понять деталь но если я перечитываю и перевожу английским мне понятно но техническую деталь не совсем но мне надо перечитать и понятно. очень надо продолжить мало технической деталь как какой код как обходить огненых стены очень интересно и важно. Тут никакой алярм не должно быть тут наверное надо много msf и армитаж и хорошо надо хиджакинг и биф подойдет. Хорошо будет censys & shodan, они хорошо собирают и дают cve которые можно углубить под систему. Очень хорошо почту слать изучать заголовки и если домен родитель есть то регистрацию делать и почту смотреть потому что все сети сейчас смотрят наружу из под инкапсул и клоуд и такое все запрет. Из под www трудно все надо внутрь а то в логах все. Я не понимаю иногда почему GET ты хвалишь тут, гет плох. Он прослеживает нас. Может ты хочешь легитимным быть серверу? Но тогда лучше скрыть себя под программу но не гет он плохой для нас. vulners.ком очень хорошо помогает все свежее. Брутить надо домены под но брутить плохо. Напрямую. Но словарь вот такой хороший мне https://github.com/allyshka/vhostbrute/blob/master/vhosts_full.list
Мне лучше из шар источника получать информацию, днс смотреть во тут хорошо
http://viewdns.info/iphistory/
вот еще хорошо
http://ptrarchive.com/
а иногда лицо врет, надо лицу не верить там один ip а лицо другое, надо
делать curl -H "Host: цель лицо" -k https://ip.лица.что.врет -I
тогда скажет правду я много видел этого.
Это все надо сначала. Очень мне нравится это тема мне надо больше и больше детали. Мне пример хорошо на примере каком то. Трудно понимать язык не всегда но трудно.
Продолжи мне нам всем это. Технику больше техника важна очень не теория много такой теории все есть и не закрыто.
 
Metasploit, armitage = выбросить ( Metasploit годится только как база exploit ), использования Metasploit убивает пентест до его начала. Софт должен быть свой.
GET = потому как другие варианты более подозрительны, так как когда шлем запрос у нас вариантов для общения софта с сервером не много если это http/https (когда речь идет о https у нас есть еще и возможность в слое ssl передавать данные но это за рамками обсуждения этого.) (GET/POST (PUT,DELETE,PATCH) ) POST запрос выглядит намного более подозрительно, GET же задуман как запрос на получение информации и не более но учитывая что у нас есть headers то мы можем не только получать но и передавать информации внутри GET при том оставаясь на вид менее подозрительными.

If you work on hardened network with modern security solutions you can't use Metasploit or other public available software for apt simulation.
I recommend GET because when you work with http/https protocols you don't have many variants, GET or POST (PUT,PATCH,DELETE), GET is designed for information receiving but we have headers, I prefer to use Cookie and CSRF tokens for transfer. And get is more "legal" from security point of view.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Нет, не метасплоит а такой как метасплоит. Пусть свой. Но чтоб перебрал. Мне нужно например уязвимость, но у меня нет уязвимости без дня. День ноль нет уязвимости. Как мне свой код писать не зная уязвимости. если пример Я знать что у меня точно есть apache но я не знать 4.4.2 или другой или Openssh или другой. Как мне перебрать вариант? Рукой устанет рука :D Гет я испорчу пост я могу не испортить это.
Если у нас PUT метод он же уже значит уязвим. Если мы делает обман заголовок в GET это значит не легитимный будет, если междоменное или между сайтами подделка запроса это уже обман всплывает, в гет сразу всплывает в пост еще может не всплыть. Как вы можете использовать csrf в гет и не быть обнаруженным? Ваш трафик будет пищать и красным гореть. Если вы подделываете просто хост заголовок для отравления кэша днс возможно или если это подмена то вы сразу будете обнаруженным. Или я сейчас не понять.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Почему метасплоит как база эксплоитов хорошо а как автоматизирование не хорошо? Он от себя добавил какие то заголовки специфика или какие то запросы которые обнаружат его? Я могу написать свой перебор если да, и если нет который будет делать Grep ответа мне. Но ведь база уязвимых выполнителей от метасплоит. Если он ничего не шлет, то какой смысл писать то что есть и написано. А если шлет то что надо и важно знать.
 
Я писал о пентесте то есть о таргетированной атаке. Если вы не понимаете почему нельзя использовать Metasploit и вообще сканировать автоматизированными утилитами подобными, тогда мы говорим на разные темы.
Насчет GET, вы меня наверное не поняли я говорю об протоколе общения бота из сети с C2 сервером.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
таргетированное это одиночное или это от target что цель? Если одно цель то понимаю нельзя. Много запросов и вы обнаружены. Тогда понимаю, что Get у вас показать что вы хороший им. Все возможные места где слабое защита их будут вами и показаны им, если автоматизирование и слабое тогда будет закрыто а вы попртили.
Но тут и сommand и control сервер вы говорите. А какой бот если рано еще бот не проникнуто еще в инфраструктуре наше присутствие. Вы запрыгнуто в конец или середину статьи. Очень интересна статья но непоследовательно мне наверное пиздец в уме. До бота надо технику что где как проникнуть и закрепить тогда не теория тогда хорошо. Тогда название пентест правдивое название. А потом уже как запускать бот. А как они общаться с сервер это не пентест это сокрытие присутствие. далеко это еще и мне много в одном. Надо шаг. Потом еще шаг. Вот мы ищем тут и тут и там и вот таким инструментом. Вот пример: мы нашли. Вот пример как выбрать PoC и где. Вот пример запускаем поц и проникли. Вот дальше такое пример защита. Вот пример как я нашел как обойти защита.Вот делаем бот запускаем и обходим и прячем нас. Вот цель достиг. Тогда хорошо. Тогда не теория. Сжать теорию на много статьи без техники не есть хорошо. Есть развернутая теория, много теории. Но она есть везде, можно все общее собрать и так и не ждать частей. Техника и пример хорошо. Много слов которые есть в поиске нехорошо
 
таргетированно = целевая атака ( 1 target )
Вы начали про GET запросы, в статье как раз говорится о GET в рамках сокрытия общения софта с С2. Наверное мы не поняли друг друга.
Я не видел смысла писать о том как искать exploit и использовать их ( этого полно везде) , смысла нет так как актуальность любого exploit не долгая ( "уязвимости" по типу pass the hash не в счет), а писать мануал о том как идентифицировать сервисы и искать CVE я думаю мало кому будет интересно читать такое ( да и опять же полно такого )
Я делал статью с советами для работы в защищенных сетях (с советами и описанием методов которые сам использую в работе) которая будет актуальна не только неделю а дольше, я не ставил задачу написать мануал для самых маленьких кто побежит по нему заниматься черными делами.
По поводу запросов в поисковик, Google знает все ну или почти все ( утрирую ), но по тематики ИБ очень много теории не основанной на личном опыте и проверенной только в лаборатории в лучшем случае а не в бою так сказать. Есть конечно доклады с конференций и публикации от ведущих мировых компаний в секторе безопасности, там обычно идет речь о конкретных случаях и уязвимостях, я писал статью в том числе с целью вызвать у читателя искать дополнительную информацию а статья поможет им понять что актуально а что нет, какие методы стоит применять а какие изжили себя. Возможно мне не удалось добиться ожидаемого результата, посмотрим.
P.S Я не могу охватить все темы в ИБ даже в цикле статей, но при этом и писать инструкцию для конкретного экcлоита или софта не вижу смысла тоже.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Привет, sii, спасибо за статью.

Почему ты считаешь что powershell не пригоден для pentest?

Если это целевая атака, то я подозреваю, потому что powershell логгируется, я прав?
 
Привет, sii, спасибо за статью.

Почему ты считаешь что powershell не пригоден для pentest?

Если это целевая атака, то я подозреваю, потому что powershell логгируется, я прав?
Привет. Причин несколько:
1. Логирование
2. Возможности отреверсить код довольно большие ( +- но все-же нативные приложения (pe) дают больше места для маневров и добавления проблем реверсерам, хотя если Ваш файл начали реверсить это уже по сути начало конца )
3. Довольно высокий уровень наблюдения со стороны разных инструментов нацеленных на борьбу с подобными атаками
Есть еще мысли но там скорее личные предпочтения основанные на опыте.
Многие могут возразить что Powershell можно использовать как лоадер для основного нативного кода но тогда будет запущен Powershell.exe что лично у меня вызовет много вопросов если бы я был из команды ИБ.
Ну и опять же стоит упомянуть что условия операции могут быть разными, учитывая что я описывал все ориентируясь на ситуацию когда по ту сторону команда со всеми нужными инструментами и знаниями то и ошибок допускать нельзя.

P.S. AMSI который рано или поздно станет сложнее обходить, мало того что АВ сами по себе бороться научились с вредоносным ps кодом и достигли в этом хоть каких-то успехов так еще и MS выкатил решение чтобы все было более прозрачно, вопрос зачем пользовать инструмент который добавляет столько проблем новых когда есть другие решения с чуть меньшим количеством "узких" мест
 
Последнее редактирование:
Отличная статья. Спасибо за проделанный труд.

Привет. Причин несколько:
1. Логирование
2. Возможности отреверсить код довольно большие ( +- но все-же нативные приложения (pe) дают больше места для маневров и добавления проблем реверсерам, хотя если Ваш файл начали реверсить это уже по сути начало конца )
3. Довольно высокий уровень наблюдения со стороны разных инструментов нацеленных на борьбу с подобными атаками
Есть еще мысли но там скорее личные предпочтения основанные на опыте.
Многие могут возразить что Powershell можно использовать как лоадер для основного нативного кода но тогда будет запущен Powershell.exe что лично у меня вызовет много вопросов если бы я был из команды ИБ.
Ну и опять же стоит упомянуть что условия операции могут быть разными, учитывая что я описывал все ориентируясь на ситуацию когда по ту сторону команда со всеми нужными инструментами и знаниями то и ошибок допускать нельзя.

P.S. AMSI который рано или поздно станет сложнее обходить, мало того что АВ сами по себе бороться научились с вредоносным ps кодом и достигли в этом хоть каких-то успехов так еще и MS выкатил решение чтобы все было более прозрачно, вопрос зачем пользовать инструмент который добавляет столько проблем новых когда есть другие решения с чуть меньшим количеством "узких" мест

Дополню.
Несмотря на пристальное внимание корпоративной команды ИБ к Powershell, атаки имеют место быть и бывают успешными. Стоит упомянуть такие инструменты как PowerSploit, Empire (помимо PS умеет Python), Nishang и PSAttack (портативная консоль, сочетающая перечисленные проекты; есть свой билдер). Логирование и высокий уровень внимания к подобным атакам следует обходить используя комплексный подход.

По опыту ,сталкивался с полным запретом на запуск Powershell-скриптов, использованием сертификатов для подписывания скриптов, а также внедрением механизмов Constrained Language и Just Enough Administration. Инструменты, нацеленные на борьбу (такие как Sysmon в комплекте с SIEM), если кратко, отслеживают создание процесса с определенным именем или запуск файла с пределенным хешем.

Со своей стороны использовал инструменты Invoke-Obfuscation, Invoke-PSImage и PowerShdll.
Например, rundll32 Powershdll.dll,main [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Привет. Причин несколько:
1. Логирование
2. Возможности отреверсить код довольно большие ( +- но все-же нативные приложения (pe) дают больше места для маневров и добавления проблем реверсерам, хотя если Ваш файл начали реверсить это уже по сути начало конца )
3. Довольно высокий уровень наблюдения со стороны разных инструментов нацеленных на борьбу с подобными атаками
Есть еще мысли но там скорее личные предпочтения основанные на опыте.
Многие могут возразить что Powershell можно использовать как лоадер для основного нативного кода но тогда будет запущен Powershell.exe что лично у меня вызовет много вопросов если бы я был из команды ИБ.
Ну и опять же стоит упомянуть что условия операции могут быть разными, учитывая что я описывал все ориентируясь на ситуацию когда по ту сторону команда со всеми нужными инструментами и знаниями то и ошибок допускать нельзя.

P.S. AMSI который рано или поздно станет сложнее обходить, мало того что АВ сами по себе бороться научились с вредоносным ps кодом и достигли в этом хоть каких-то успехов так еще и MS выкатил решение чтобы все было более прозрачно, вопрос зачем пользовать инструмент который добавляет столько проблем новых когда есть другие решения с чуть меньшим количеством "узких" мест
Логируется всё, значит нельзя ничего использовать. Нет,я думаю вот что. ПС- это как баш инструмент, вопрос, как его использовать, у баша есть свои фишки, у ПС свои. Есть то что детект идёт по событию
Тут можно бороться с этим. И как уже говорил, чудес не бывает.
 
Отличная статья. Спасибо за проделанный труд.



Дополню.
Несмотря на пристальное внимание корпоративной команды ИБ к Powershell, атаки имеют место быть и бывают успешными. Стоит упомянуть такие инструменты как PowerSploit, Empire (помимо PS умеет Python), Nishang и PSAttack (портативная консоль, сочетающая перечисленные проекты; есть свой билдер). Логирование и высокий уровень внимания к подобным атакам следует обходить используя комплексный подход.

По опыту ,сталкивался с полным запретом на запуск Powershell-скриптов, использованием сертификатов для подписывания скриптов, а также внедрением механизмов Constrained Language и Just Enough Administration. Инструменты, нацеленные на борьбу (такие как Sysmon в комплекте с SIEM), если кратко, отслеживают создание процесса с определенным именем или запуск файла с пределенным хешем.

Со своей стороны использовал инструменты Invoke-Obfuscation, Invoke-PSImage и PowerShdll.
Например, rundll32 Powershdll.dll,main [System.Text.Encoding]::Default.GetString([System.Convert]::FromBase64String("BASE64")) ^| iex
Спасибо за отзыв и дополнение.
Я не утверждаю что подобные атаки не имеют место быть и не могут быть успешными, в данной статье я взял как пример ситуацию где все в сети сделано по высоким стандартам, я сам сталкивался не раз с ситуациями когда все есть и edr и siem и работает как надо но при этом пароль локал админа для каждой подсети свой но одинаковый на подсеть при этом разврешены удаленные конекты и являются чем-то нормальным для сети :), этот пример привел как показатель человеческой лени и жертвам на которые идут в иб ради удобства. Но так-же я встречал места где запуск ps заканчивался очень плохо ( обычно не сразу ), то есть суть в том что мы играем в кошки мышки и их ошибки наша победа но и обратное верно, а учитывая тенденции АВ вендоров и самой МС по противостоянию атакам использующим powershell я считаю что не надо тут с ними воевать когда есть способ проще и "выгодней" по затратам времени и ресурсов, используем встроеный функционал ОС из pe а не из псевдо компилируемых или скриптовых языков тем самым получаем сразу много + для себя и не так много минусов.
Когда я писал об отказе от powershell в статье я понимал что будет много несогласных со мной, но я отказался от powershell не от того что мне так хотелось, я использовал его, более того достаточно долгое время разведку внутри сети проводил в полуавтомате благодоря powershell ( да я знаю что это была ошибка и что много следил но мы все учимся на своих ошибках, на чужих сложно, по крайней мере мне ).
Это субьективное мнение , но мне действительно удобней (привыкаешь со временем) работать с pe чем со скриптами, да есть трудности так как нужно компилировать и сам процесс разработки с тестами занимает больше времени но согласитесь это не такая проблема учитывая то разнообразия инструментов разработки и средств для сборки, да и спасибо vmware/oracle/итд вся лаба всегда с собой.

P.S rundll32.exe после того как mudge его сделал по умолчанию в cs это тоже красная тряпка ( возможно и раньше но я не замечал ), я стараюсь стороной обходить его.
 
Обеими руками "за!" про пример высоких стандартов ИБ (сегментирование сети и пароль локального админа из LAPS, который вскрывается тем же powershell) и жертвы ради удобства (удаленные коннекты, например, PS-Remoting).
 
Отличная статья которую можно было бы и запинить!

от себя добавлю
для ваших личных стф игрищ и бумажных домиков))
 


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