Обновить
128K+

Реверс-инжиниринг *

Расковырять и понять как работает

237,29
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Открыл обычный VBS, а внутри оказался PowerShell, AES и MSBuild

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели4K

Мне в руки попался обычный файл с расширением .vbs. Ничего необычного. Открываю посмотреть, что там внутри, и сначала даже немного разочаровался. Какой-то VBScript, временные файлы, cmd.exe, PowerShell. Ну, думаю, очередной скрипт-загрузчик. Но потом заметил одну деталь. Скрипт читал сам себя. И вот тут стало уже интереснее.

Читать далее

Новости

Матрешка из Base64 и ROT13: разбираем вредоносный .sh, который пришел за FreePBX

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5K

Мне в руки попался файл с расширением .sh и, конечно же, его пришлось изучить. Открываю файл — первая половина более-менее читаемая, а дальше начинается классика: Base64, ROT13 и еще немного Base64. Вроде ничего страшного. Декодируем, смотрим результат, радуемся жизни. Но не тут-то было. Автор скрипта решил сделать небольшой квест в стиле: А что если положить один скрипт внутрь другого скрипта, а потом еще один внутрь него?

Читать далее

Восемь аниме-плееров рунета изнутри: шифр Цезаря, пустой параметр и домен, который увели

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели12K

Я взял за основу популярную опенсорсную библиотеку парсеров аниме-плееров, запустил её — и получил от Kodik 500 Internal Server Error. Не «токен протух», не «IP заблокирован», а именно 500 на каждый запрос. Разбор занял вечер, а причина оказалась в одном символе: библиотека отправляла параметр ref пустым, а сервер требует его заполненным и раскодированным.

Дальше выяснилось, что это не единичная поломка, а норма жанра. Один плеер полгода назад переехал на другой формат страницы. Другой отвечает бесконечным редиректом на самого себя. У третьего домен просто увели — сейчас там индонезийский интернет-магазин, а не аниме. Четвёртый прячет ссылки в WebSocket из обфусцированного бандла на 600 КБ, и его я честно не осилил.

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

Читать далее

Пишем нативное приложение на Mi Band 10 Pro

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели17K

Нативное приложение на C в продакшен часов Xiaomi, вы когда нибудь мечтали о таком? Я покажу как - на примере последней модели Xiaomi SmartBand 10 Pro, оно того стоит, работает быстро, возможности практически не ограничены, интеграция не сильно сложная, и то что сломали разработчики поправимо, а главное это довольно интересно.

Читать далее

Внутри Apple Neural Engine, часть 2: запускаем модель

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.5K

Продолжаем человеческий ANE reverse engineering. В этот раз разберёмся, чем таким интересным можно накормить компилятор, чтобы получить желаемый результат - Qwen, запущенный без GPU и CPU.

Читать далее

ИК1303. Трансцендентное

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели15K

Я не вижу себя в качестве писателя. Но так случилось, что я столкнулся с прекрасным.

Занимаясь археологическими изысканиями в микрокоде МК-61, я задался вопросом: а как же деды запихали столько ума в такие ограниченные ресурсы, и даже без умножителей? Сейчас на целочисленном кортексе использование одной плавающей запятой приводит к взрыву прошивки (да, утрирую, но эмоционально оно так).

Если коротко: есть калькулятор МК-61 (1983). Внутри пять микросхем, которые соединены в однобитовую последовательную кольцевую шину: две памяти и три вычислителя со своей специализацией. Фактически они работают параллельно и синхронизируются через этот канал связи. Можно сказать, что это прообраз парадигмы NOC (network on chip) в современном железе применительно к FPGA.

Собственно о красоте. Чип ИК1303 (1980) отвечает за математические расчёты. В нём восемнадцать вычислительных операций: четыре бинарных (+ — * /) и четырнадцать F‑функций (10^x e^x lg ln arcsin arccos arctg sin cos tg sqrt x^2 x^y 1/x). Сверх них — обмен x<→y и служебные, видные только изнутри: нормализация, генератор констант, приведение угла.

Никаких CORDIC, никакой двоичной плавающей запятой! Но как?! Просто и изящно. Одна функция для большей части операций! ОДНА!

Читать о функции

Самый первый «Цифрал». Изучаем раритетный оптический считыватель ключей

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

Приветствую всех!

Уверен, многим из вас знакомы домофоны этой фирмы. У кого-то из вас, возможно, прямо сейчас стоит на подъезде именно такой.

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

Press F1 to continue

Восстановление данных с ZFS: задача со звёздочкой об удалённом Zvol

Время на прочтение11 мин
Охват и читатели8.9K

В один из дней в лаборатории раздался звонок. Звонил представитель организации, оказывающей услуги системного администрирования. Его первым вопросом было: «А вы умеете работать с ZFS?». Разумеется, мы пояснили, что у нас есть некоторые наработки в рамках собственных исследований, а также стандартные средства DR‑лаборатории, такие как PC-3000, где поддержка ZFS предусмотрена как минимум на базовом уровне.

Ответив на парочку каверзных вопросов клиента об устройстве ZFS, мы через некоторое время получили два SSD Samsung 870 EVO ёмкостью 2 ТБ, которые были объединены в зеркальный RAID‑массив (Mirror). Изначально комментарии сводились к тому, что оба диска рабочие, но один выпал из массива. Основная проблема заключалась в том, что был случайно удалён один из важных Zvol (блочный объект ZFS, используемый для виртуальных дисков). Клиент пояснил, что хотел откатиться к прошлой версии uberblock’а и получить снимок, когда этот Zvol ещё не был удалён, но у него это не получилось. Резервная копия сохранилась, но она была сделана ещё в апреле этого года.

Читать далее

Три года эксплуатации уязвимостей в эхолотах/судовых MFD. Почему нельзя доверять конечному пользователю embedded‑системы

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели11K

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

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

Читать далее

Биометрия против скрепки: разбираем замки с отпечатком пальца и проводим базовый аудит их защиты

Время на прочтение13 мин
Охват и читатели95K

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

Меня зовут Астафиев Денис, я ведущий специалист по аппаратным исследованиям в Бастионе. По работе я регулярно разбираю самые разные устройства, чтобы проверить, насколько можно доверять тому, что производитель обещает на коробке. Сегодня будем смотреть сразу на три замка с биометрией и искать слабые места в их защите.

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

Читать далее

От закрытого.NET‑шлюза до Java/Kubernetes за 11 часов: production‑кейс агентной разработки

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.4K

Я довольно активно использую ИИ в разработке примерно с конца 2024 года.

Наверное, многие слышали оценки в духе: «ИИ ускоряет разработчика на 20–30%». Возможно, для каких‑то привычных задач это и неплохая метрика.

Но недавно у меня случился кейс, который вообще плохо укладывается в эту систему координат.

За один очень плотный рабочий день — примерно 11 часов от идеи до боевого переключения — удалось исследовать закрытый Windows‑компонент, восстановить недокументированный бинарный протокол, разобраться с особенностями криптографии, написать совместимую реализацию на Java, сформировать регрессионный корпус из реального трафика, завернуть всё в контейнер, развернуть в Kubernetes, провести независимое ревью и переключить production.

И вот после такого слова про «+30% производительности» начинают казаться немного смешными.

Честно говоря, это пока самый впечатляющий кейс разработки с AI, который у меня был. Восторг скрывать не буду:)

Читать далее

TerminalFix и фейковая Cloudflare CAPTCHA: разбираю PowerShell, который прячет EXE и DLL в PNG

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.5K

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

Схема далеко не новая. Более того, я вообще не удивлюсь, если кто-то скажет: «Да мы это уже видели». И будет прав. Но, как обычно, старые идеи периодически достают из шкафа, немного перекрашивают и снова пускают в ход.

Вся эта история опять упирается в одну простую вещь — внимательность пользователя. Если человек сам выполнит то, что ему подсунули, дальше защита компьютера уже может не сильно помочь.

Читать далее

Callfuscated — Виртуализация, MBA, opaque predicates и мусорные инструкции в одном задании

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели8.7K

Подробное решение задания, в котором есть многие техники обфускации. Каждую технику я снял и рассказал как.

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

Читать далее

Ближайшие события

Вставай, Василий: как мы отобрали у пульта право поднимать гуманоида

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7.5K

Может ли робот встать по голосовой команде, если производитель это запретил?

Гуманоид Walker Tienkung поднимается на ноги только с физического пульта: короткое нажатие кнопки будит моторы и проводит самодиагностику, а длинное — ровно секунда удержания — поднимает из нулевой позы в стойку. Мы решили отдать весь этот путь голосу и быстро упёрлись в проблему: наши программные «нажатия» система молча игнорировала, а переход «встать» оказался заблокирован намеренно — команда принималась без ошибки, но робот не реагировал.

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

Читать далее

Что внутри ANE на самом деле, или почему ЫЫ нельзя поручать reverse engineering

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7.5K

Нейронке сказали — «разберись как оно работает». Пошевелив гигабайтами матриц, она полезла ковырять список классов в AppleNeuralEngine.framework— и нашла там то, что искала — «40+ private classes, including _ANEInMemoryModel». Код работал. Делал то что от него требовалось — запускал математику на ANE. Но было в этом что‑то… не то.

Читать далее

Автономное ПО для велокомпьютера

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели10K

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

Читать далее

11 минут у Backblaze, и неделя бездействия у reg.ru: как компании обрубают инфраструктуру трояна в России и за рубежом

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели77K

Привет, хабр. Если вы состоите в более‑менее крупных ТГ сообществах, то наверняка замечали, как время от времени в чатах мелькают боты с предложением установить сомнительный APK. Обычно их мгновенно банит антиспам или админ, и на этом всё заканчивается. Правда, пока сообщение ещё висит, взгляд успевает за него зацепиться, и в голове проскакивает «это очевидно скам, но как оно работает?». У меня эта мысль проскочила в дождливый вечер прошлой пятницы, и вот, неделю спустя, я всё ещё смотрю на четыре домена, куда уходят перехваченные банковские коды, и ожидаю хоть каких‑до действий от уполномоченных компаний, которые были уведомлены об атаке почти неделю назад.

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

Читать далее

«Великое ограбление»: сейф, палочка для суши и девять вольт

Время на прочтение9 мин
Охват и читатели21K

Привет, Хабр! На связи Иван Глинкин, руководитель отдела аппаратных исследований из команды Бастиона. 

Иногда для вскрытия сейфа не нужны никакие отмычки, болгарки и заклинания вроде «Алохомора» — достаточно деревянной палочки из набора для суши. И это еще не самая опасная уязвимость, найденная нами при тестировании российского «ящика с электронным замком для хранения ценностей». Мы заказали его на синем маркетплейсе почти за шесть тысяч рублей, а потом вскрыли за пару минут. О том, как нам это удалось, читайте под катом.

Читать далее

Нашёл «VPN», который оказался обычным SOCKS5-прокси

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели12K

Недавно я наткнулся на довольно интересный случай. На первый взгляд — обычное VPN-расширение для браузера: список стран, кнопка подключения, бесплатный сервер, платные серверы и подписка. Но мне стало интересно, что именно происходит после нажатия кнопки Connect. Я решил не ограничиваться интерфейсом и полез непосредственно в код расширения. И вот там уже стало интереснее.

Идём дальше

Таймер на 5 минут вместо 10 секунд: как сверка с руководством по эксплуатации нашла отказавшую защиту в чужом коде

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели10K

Стенд работает, а исходников программы ПЛК нет — ни архива, ни резервной копии, ни у эксплуатанта. Есть 4 900 страниц бумаги: распечатка проекта, экспорт экранов, руководство по эксплуатации, сканы схем. Задача — восстановить поведение один в один. Эталоном я сделал руководство, а не распечатку кода, и на этом нашёлся таймер, который держал максимальный ток 5 минут вместо разрешённых 10 секунд. Ниже — как читаются пять тысяч страниц, как выглядит data-driven программа ПЛК (с кусками настоящих файлов) и все 7 расхождений с честной пометкой, чем каждое найдено.

Читать далее
1
23 ...