D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Скрытый контент для зарегистрированных пользователей.
Вступление
Как и все ( надеюсь ) присутствующие тут люди ( ИИ как и представители другой органической и не очень жизни тоже привествуються :-D ) я надеюсь что https://xss.is/ даст новую жизнь тем старым идеям что царили в начале 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 секунду
, вместе с ограничениями при проведении пентеста и.т.д но в данной статье ограничения будут рассматриваться только со стороны здравого смысла ) и описание цели самой операции.
Я не буду сильно вдаваться в теорию постановки целей и составления отчетов ( будет интересно то могу написать статью, там много нюансов и достаточно много автоматизированных утилит под эти задачи есть, но правда не одна из них не сделает все за вас
) это моя самая не любимая часть работы.
Цели ( Все пункты описаны утрировано, но статья рассчитана на привлечения внимания новичков а не их отталкивание, потому так )
Прикрепить к отчету часть krbtgt ( от каждого домена, как доказательство скомпрометированности доменов ( MS таки выпустила ман как их менять без реинсталла всего домена
) ), получить доступы к серверам являющимися частью бизнес логики ( обычно DB серверов достаточно ) и уйти будучи не обнаруженными, а места где следы останутся замаскировать под заражение обычным зловредом, сэмплов которых в сети можно найти много, достаточно дропнуть файл на диск чтобы отработал АВ ( запускать не надо
как бэ этика).
Следующий пункт который нам стоит обсудить это собственно сам процесс по пунктам, в каком порядке и что делать если по простому:
Код: Скопировать в буфер обмена
Спойлер: Отступление
Не большое отступление: весь сбор информации на данном этапе происходит СТРОГО за пределами внешнего периметра сети не касаясь его и потому пока еще нам можно использовать утилиты не нашего авторства, ниже будут подробности но держите в голове как пример: “Сканирование портов на ip принадлежащих цели это не сбор за пределами сети, парсинг bing и Google это сбор информации из открытых источников”
Тут упомяну только несколько тулзов ну и пару способов как получить нужные нам данные, не чего сверхъестественного но данная статья и рассчитана на тех кто только начинает задумываться перейти ли на светлую сторону силы в .
Софт (список не полный и не претендует на такой, только удобный мне софт не более)
1. theHarvester
Пример:
2. xray (Недавно использую но довольно не плохо)
3 Raven (Предпочитаю LinkedIn руками смотреть и потом выкачивать только нужное по фильтрам, ссылка на Raven тут только для примера и удобства )
Спойлер: Мысли к пункту 3
Учитывая что мы говорим о корпоративных сетях то Linkedin для нас просто кладезь информации (утекшая база тоже поможет, это не очень этично так ка ямы говорим о blackbox тесте но она давно достояние общественности так что можно)
После получения данных о самой компании и ее работниках Вам стоит пройтись по техническому персоналу, Вы возможно удивитесь но твиты, блоги, домашние странички ( они до сих пор бывают
, а если и удаленны web.archive.org Вам в помощь) и гитхаб репозитории иногда содержат настолько неожиданные интересные куски информации 
Тут можно написать еще очень много но думаю что и так "много буках" да и по данной теме единственное что реально нужно это изучить язык поисковых запросов Google
1. Не передавайте данные в открытом виде (ssl не достаточно)
2. Мимикрируйте (трафик должен быть похож на обычный)
3. Используйте доверенные домены (каталогизированные)
4. Меньше трафика, меньше следов
5. Домены как вино, чем старше тем лучше.
6. Старайтесь пропускать трафик через доверенные узлы и подсети (Akamai,Ms,Google,Amazon...lvl3)
7. Используйте фронт сервера (даже если не хотите, даже если не позволяют в полной мере условия или обстоятельства, как минимум можно использовать аккаунт от office 365 или ... что угодно ( например api jira ) )
8. Под каждый этап операции нужны отдельные не пересекающийся инфраструктуры
9. Не экономьте на сертификатах и доменах.
10. На каждой http,https должен быть сайт, желательно реальный но как минимум клон.
11. Рэндом отстуки (jitter)
Думаю слов и так написано много, далее будет графика так наглядней.
Спойлер: Fig.1 Пример инфраструктуры. Увеличить
На схеме изображена инфраструктура с использованием как Cloud хостеров, DNS так и сторонних сервисов(jira).
Спойлер: Отступление (Domain fronting)
Начиная с мая 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 ходит в мир).
Спойлер: DNS
Думаю что тут мало что можно нового сказать, но пару советов есть.
1.TXT старайтесь не использовать
2.Не надо длинных поддоменов
3.Этот канал при возможности используйте как запасной который просто запустит для вас нужный канал
4.base32 хорошо но выглядет очень подозрительно
5.Почему бы просто не использовать A запись IP?
sleep
;
startHTTPSImplant(config.ip); //startHTTPSImplant(respone.ip);
Спойлер: http
Он не так плох как многие думают, да трафик на виду и приходится думать как бы и где спрятаться но, от этого типа трафика мало чего ожидают, если продумать протокол общения и сделать хороший сайт с контентом и рейтингом то почему бы и нет.
Собственно пару мыслей и идей.
1. GET наше все
2. Cookie наше все
3. Модули пересылаем в img ( стеганография )
4. Не ходим на один и тот-же url постоянно.
5. URL должны выглядеть нормально
6. Не стесняемся используем rand() % hrefarray
7. Шифруем все, в куках и в картинках.
Спойлер: https
Ну это самый часто используемый в таргетированных атаках протокол для связи потому информации много. Но все-же думаю кое что можно обсудить и тут.
Валидные сертификаты ( покупаем, старайтесь не использовать let's encrypt, конечно лучше чем не валидный сертификат но все-же потратьте пару $ на покупку COMODO а в идеале что-то от thawte но это сложнее )ю Протокол работы бота внутри https стоит воспринимать как http, SSL просто верхний слой шифрования внутри все должно выглядеть как легальный трафик. DPI сейчас используются повсеместно потому так или иначе использование SSL это просто способ придать больше "баллов нормальности" нашему трафику.
Спойлер: jira
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 работает и поддерживает
Думаю нет нужды в подробностях, но если будут вопросы могу отдельной статьей расписать все в коде, но по сути вам надо только сменить значение Host хидера в вашем софте чтобы работать через фронт.
Отступление: Если нет желания покупать домены и хочется сделать самому тогда вам могут быть полезны эти утилиты
1. Chameleon Поможет вам каталогизировать ваши домены ( При добавлении в BlueCoat запускайте с ip к которому домен привязан... )
2. CatMyPhish Поможет найти просроченные домены которые уже были каталогизированы.
На этом закроем главу, будут вопросы рад буду ответить, в общем двигаемся далее.
Так же вам понадобится решение которое позволит свои "роуты" прокладывать, какой вы выберите путь решать вам, но будь то port forwarding или smb implant так или иначе этот функционал должен быть реализован отдельным модулем ему не нужно столько функционала как основному инпланту но при этом вы должны найти способ заставить его жить в процессе который не вызывает подозрений скажем при создании smbpipe. Тут каждый найдет свой подход, я не вижу смысла тут выкладывать конкретные примеры процессов и названий и листа реальных имен pipe в которых можно жить, они меняются от версии к версии и от сети к сети..., но и найти не составит много труда, реверсить win для этого не надо, вполне себе хватит Sysinternals тулзов
P.S Авторан как бы это было смешно но реализуется просто и АВ плохо работают с простыми способами которые использует легальное ПО, в прочем я предпочитаю COM hijack для dll под юзером, .url для exe ну а под системой думаю даже и не стоит упоминать сколько всего там есть для авторана.
Спойлер: Немного о COM hijacking
Работает это просто, все 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.")
но система при запуске софта и обращения к 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 забыли.
Наташку за ляшку сеть за домен, в общем тут бы стоило добавить что на этом этапе мы ищем дополнительные данные и уязвимости в сервисах которые выставлены голыми открытыми в опасный мир интернет.
11 декабря, я немного устал писать уже это все а впереди еще очень много надо обсудить потому далее текст будет более сухой и если получится с небольшим количеством отступлений.
Надо узнать имя домена, это не всегда возможно но часто, тут я опишу два способа это email переписка и s4b но сразу скажу что если корп старый покопайтесь внутри mail рассылок на sourceforge у Apache и вообще в opensource сообществе ..., там мыла с заголовками есть и часто можно домен найти
1.В общем S4B:
Ответ:
JSON: Скопировать в буфер обмена
Берем ссылку, делаем запрос:
Код: Скопировать в буфер обмена
Вот собственно header с именем терминала и доменом.
Код: Скопировать в буфер обмена
Собственно домен: domain-hq.local
Имея имя домена мы можем далее использовать в софте, у нас целевая операция потому мы можем исключить запуск нашего софта вне домена ( не всегда хорошая идея, часто pc бывают вне доменов, но это оправданный риск. Добавлю еще что имя домена лучше в софт не вшивать в чистом виде, можно использовать хэш а точнее его части для распознания и при этом не дать аналитикам дополнительную информацию о том что атака целевая и какая у нас цель.
2.Email
Тут особо писать не чего, частенько Relay хидеры добавляются с локальными именами, это то как работает smtp, каждый сервер который передавал письмо должен добавить relay header, конечно это можно поправить в настройках и иногда используются внешние сервисы для переписки вне сети но тем не менее это рабочий способ, в общем все что вам надо это вступить в переписку с работниками компании, отдаю предпочтение HR так как это повод отправить не одно письмо и при этом не вызвать подозрений, но будьте готовы создать личность почти соответствующую требованиям компании на вакансию, с акками в linkedin итд, многие скажут что можно просто скопировать кого-то, но это грубое нарушение как законов та ки этических норм.
В общем вступаем в переписку и смотрим ответы ( если используете веб сервис для переписки во всех что я встречал есть возможность посмотреть исходный текст или экспортировать его)
С именем домена на этом закончим, варианты по типу доков со снифером, картинок в шаре итд не хочу обсуждать так как они оставят следы внутри, да и в этом направлении полно информации в сети, с надеждой что у в вас проснется любопытство и вы начнете свои изучения данного вопроса.
На этом этапе происходит поиск уязвимостей в сервисах смотрящих в мир описывать как искать уязвимости в тех же веб приложениях я не буду это не является целью данной статьи. Просто забудьте об автоматизации что касается проверки на уязвимости, так как почти все автоматические утилиты мусорят в логи. Вы можете после идентификации уязвимости что-то использовать но я бы рекомендовал накидывать скрипты самому, со временем соберете базу библиотек которая будет требовать не много изменений под конкретные цели
Да на этом этапе можете и поддомены трогать, много полезного найдете.
aiodnsbrute
Ставим сеть (пару терминалов в домене и сервер ad) c именем домена который мы добыли ранние.
Код: Скопировать в буфер обмена
Это поможет отчасти избежать эмуляций и всяких любителей своими потными ручками в чужом коде лазить :-D .
P.S не перегибайте с временем sleep() если лоадер выполняется в том же процессе в котором был запущен, пользователь закроет процесс и вы потеряете возможность закрепится, инжетится через createremotethread нельзя (запускать другой процесс можно, но лучше бы это был подписанный мс бинарник и не rundll32)
так что тут каждому придется искать свой способ.
Повторюсь: PowerShell забыли. Не трогайте труп, он воняет. ( Приготовился к гнилым помидорам )
Если на этапе активного сбора информации вы не смогли найти уязвимость которая позволит вам попасть в сеть у вас остается не много вариантов, но они весьма действенны, хотелось бы тут написать многое но это будет не правильно, раскидываться терминами типа СИ тоже не буду, все разжевано многими по много раз, от себя добавлю опять же небольшой свод правил.
Код: Скопировать в буфер обмена
На данном пункте я заканчиваю так как времени осталось не много, не уверен что смогу дописать до 25 (надо год закрывать срочно) выход был найден один, просто сделать серию статей которая надеюсь найдет своего читателя.
Продолжение следует... на самом интересном месте
Спойлер: Дополнительное слово автора сомневающимся
Многие подумает что порог вхождения очень высок, нужно код писать уметь, внутренности разных ОС знать, всегда быть курсе где что нового по теме, но поверьте мне на слово: изучение и потраченное время стоит того, скажите мне какое вы знаете направление в ИТ где надо настолько разносторонни развитым быть?
.
Статья для XSS.IS не копипастить, если есть желание поделится дайте ссылку сюда.
P..S Данная статья носит ознакомительный характер, задача данной статьи возбудить у читателя любопытство и вызвать желание изучать. Все персонажи вымышленные совпадения с реальностью... ;-)
Вступление
Как и все ( надеюсь ) присутствующие тут люди ( ИИ как и представители другой органической и не очень жизни тоже привествуються :-D ) я надеюсь что https://xss.is/ даст новую жизнь тем старым идеям что царили в начале 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 таки выпустила ман как их менять без реинсталла всего домена
Следующий пункт который нам стоит обсудить это собственно сам процесс по пунктам, в каком порядке и что делать если по простому:
Код: Скопировать в буфер обмена
Код:
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.is -l 1000 -b bing,crtsh,pgp,threatcrowd,linkedin,vhost,yahoo,twitter
2. xray (Недавно использую но довольно не плохо)
xray --shodan-key apikeyshodan --viewdns-key apikeyviewdns --domain xss.is
3 Raven (Предпочитаю LinkedIn руками смотреть и потом выкачивать только нужное по фильтрам, ссылка на Raven тут только для примера и удобства )
Спойлер: Мысли к пункту 3
Учитывая что мы говорим о корпоративных сетях то Linkedin для нас просто кладезь информации (утекшая база тоже поможет, это не очень этично так ка ямы говорим о blackbox тесте но она давно достояние общественности так что можно)
После получения данных о самой компании и ее работниках Вам стоит пройтись по техническому персоналу, Вы возможно удивитесь но твиты, блоги, домашние странички ( они до сих пор бывают
Тут можно написать еще очень много но думаю что и так "много буках" да и по данной теме единственное что реально нужно это изучить язык поисковых запросов 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)
Думаю слов и так написано много, далее будет графика так наглядней.
Спойлер: Fig.1 Пример инфраструктуры. Увеличить
На схеме изображена инфраструктура с использованием как Cloud хостеров, DNS так и сторонних сервисов(jira).
Спойлер: Отступление (Domain fronting)
Начиная с мая 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 ходит в мир).
Спойлер: DNS
Думаю что тут мало что можно нового сказать, но пару советов есть.
1.TXT старайтесь не использовать
2.Не надо длинных поддоменов
3.Этот канал при возможности используйте как запасной который просто запустит для вас нужный канал
4.base32 хорошо но выглядет очень подозрительно
5.Почему бы просто не использовать A запись IP?
dig xss.is A
sleep
dig xss.is A
startHTTPSImplant(config.ip); //startHTTPSImplant(respone.ip);
Спойлер: http
Он не так плох как многие думают, да трафик на виду и приходится думать как бы и где спрятаться но, от этого типа трафика мало чего ожидают, если продумать протокол общения и сделать хороший сайт с контентом и рейтингом то почему бы и нет.
Собственно пару мыслей и идей.
1. GET наше все
2. Cookie наше все
3. Модули пересылаем в img ( стеганография )
4. Не ходим на один и тот-же url постоянно.
5. URL должны выглядеть нормально
6. Не стесняемся используем rand() % hrefarray
7. Шифруем все, в куках и в картинках.
Спойлер: https
Ну это самый часто используемый в таргетированных атаках протокол для связи потому информации много. Но все-же думаю кое что можно обсудить и тут.
Валидные сертификаты ( покупаем, старайтесь не использовать let's encrypt, конечно лучше чем не валидный сертификат но все-же потратьте пару $ на покупку COMODO а в идеале что-то от thawte но это сложнее )ю Протокол работы бота внутри https стоит воспринимать как http, SSL просто верхний слой шифрования внутри все должно выглядеть как легальный трафик. DPI сейчас используются повсеместно потому так или иначе использование SSL это просто способ придать больше "баллов нормальности" нашему трафику.
Спойлер: jira
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. Для каждой операции свои билды
Спойлер: *nix
Все пункты относятся только к ОС семейства Windows, что касается *nix в данной статье информации не будет , если будет время и интерес у сообщества сделаю статью по софту для linux (с bsd свои моменты есть с которыми пока не разобрался сам), инжекты и авторан
Нажмите, чтобы раскрыть...
Так же вам понадобится решение которое позволит свои "роуты" прокладывать, какой вы выберите путь решать вам, но будь то port forwarding или smb implant так или иначе этот функционал должен быть реализован отдельным модулем ему не нужно столько функционала как основному инпланту но при этом вы должны найти способ заставить его жить в процессе который не вызывает подозрений скажем при создании smbpipe. Тут каждый найдет свой подход, я не вижу смысла тут выкладывать конкретные примеры процессов и названий и листа реальных имен pipe в которых можно жить, они меняются от версии к версии и от сети к сети..., но и найти не составит много труда, реверсить win для этого не надо, вполне себе хватит Sysinternals тулзов
P.S Авторан как бы это было смешно но реализуется просто и АВ плохо работают с простыми способами которые использует легальное ПО, в прочем я предпочитаю COM hijack для dll под юзером, .url для exe ну а под системой думаю даже и не стоит упоминать сколько всего там есть для авторана.
Спойлер: Немного о COM hijacking
Работает это просто, все 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 на диске ( я знаю что можно скрипт подставить в значение и сделать якобы (запись в реестр это запись в фс просто внутри файлов реестра, неожиданно
Читаем внимательно про скрипты... и да про 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
Код: Скопировать в буфер обмена
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.IS не копипастить, если есть желание поделится дайте ссылку сюда.
P..S Данная статья носит ознакомительный характер, задача данной статьи возбудить у читателя любопытство и вызвать желание изучать. Все персонажи вымышленные совпадения с реальностью... ;-)