Обновить
128K+

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

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

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

Как устроен современный антивирус: поведенческий анализ, драйверы, архитектура

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

Время, когда антивирусное ПО основывалось лишь на статическом, или сигнатурном, анализе, уже далеко в прошлом. Хотя в 2026 году оба вида анализа по-прежнему используются, они применяются не так активно, как раньше. В далёком прошлом антивирусное ПО могло делать выводы, основываясь лишь на анализе таблицы импорта, что, соответственно, вызывало множество ложных срабатываний. В результате этого появился термин "поведенческий анализ". Его основная идея заключается в том, что антивирусное ПО оценивает не только содержимое конкретного файла, но и действия, которые выполняет запущенный процесс. Система собирает телеметрию: отслеживает создание дочерних процессов, работу с файлами и реестром, загрузку библиотек, сетевую активность, попытки получить доступ к другим процессам и другие события. Каждому наблюдаемому действию или их комбинации может соответствовать определённое правило. Если процесс выполняет операцию, характерную для вредоносного ПО, ему увеличивается условный уровень подозрительности.

Собственно, рассмотрим примитивный пример в контексте поведенческого анализа. В системе появляется новый процесс с именем winloggon.exe - уже здесь внимательный наблюдатель заметит проблему, легитимный процесс называется winlogon.exe, а одна лишняя буква в имени для вируса вполне может оказаться попыткой замаскироваться под системный процесс под невнимательность пользователя. После инициализации наш герой совершает первую ошибку: обращается к реестру и прописывает себя в Run.

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

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

Ошибка третья. После чего в игру вступает антивирусный WFP драйвер - Windows Filtering Platform. Сетевой стек Windows позволяет системе защиты получать информацию о сетевых операциях и принимать решение, разрешать соединение или нет. В результате winloggon.exe, который только что прописал себя в автозагрузку, создал подозрительный файл и теперь пытается установить соединение наружу, оставляет ещё один вполне заметный след.

В результате чего основываясь на сборе телеметрии, начислении баллов, мы получаем не одно определенное событие, а полноценную законченную картину:

Читать далее

Новости

Разбор svchost.pyc: что скрывается за обычным Python-файлом

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

Недавно мне попался файл svchost.pyc. Сначала название не вызвало особого интереса — мало ли файлов с похожими именами встречается в системе. Но при ближайшем рассмотрении стало понятно, что к обычному svchost.exe этот файл отношения не имеет.

Передо мной оказался скомпилированный Python-код, внутри которого было довольно много интересного: работа с реестром, COM Hijacking, изменение настроек Windows Defender, отключение AMSI и ETW, внедрение кода в другие процессы и даже попытка сделать собственный процесс критическим для системы. В общем, обычным Python-скриптом это уже не выглядело.

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

Давайте разберёмся

Métrix 222: французский осциллограф с невероятным дизайном, год 1955

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

Здравствуйте! Сегодня мы рассмотрим древний ламповый осциллограф французской компании Metrologie Annecy — Métrix 222. Не знаю, какие ассоциации вызовет у вас, внешний вид этого аппарата, а мне почудился «Наутилус» капитана Немо. К тому же, эти образы объединяет общее — Франция.

Ориентировочный год производства — 1955. Чем интересен этот аппарат? В нем нет привычной современной цифровой логики. вся обработка сигнала (усиление, развертка) выполняется на электровакуумных приборах. В этой статье мы разберем, покрутим, рассмотрим этот аппарат, проведем детальный осмотр элементной базы. И самое интересное — включим его.

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

Приглашаю к прочтению...

Как дырявый Shareware‑диск позволил спиратить Quake

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

В середине 90-х самым крутым, что можно купить для PC, если не считать невероятно дорогой Intel Pentium, был привод CD-ROM. Благодаря ёмкости дисков в 640 МиБ (в три раза больше, чем жёсткий диск PC на то время), CD позволяли любителям технологий погрузиться в мир мультимедиа, состоящий из фотографий с 256 индексированными цветами и высоким разрешением 640x480[1], саундтреками VOC и плавными видео Video For Windows с частотой 12 кадров в секунду в разрешении 240x179[2][3], длящимися аж десятки секунд.

С точки зрения разработчиков видеоигр, CD-ROM был странным носителем. Его ёмкость намного превосходила качество ресурсов, которые они могли создать. Некоторые игры, например, 7th Guest (1993 год), Wing Commander III: Heart of the Tiger (1994 год) и Phantasmagoria (1995 год), познакомили игроков с Full Motion Video (в мире, где анимированной могла быть только часть экрана). В других играх появилась высококачественная музыка. Самым запомнившимся мнением по этой теме стало высказывание ведущего разработчика id Software Джона Кармака.

Люди ожидают, что в CD-играх будет куча оцифрованной речи и видео [...] Смешно то, что если мы когда-нибудь выпустили бы CD-версию DOOM, то там была бы только игра и часовой фильм «Как мы делали DOOM» с участием разработчиков.

Джон Кармак в интервью «ATARI EXPLORER ONLINE», январь 1994 года

Хорошо в теории, плохо на CD

К июню 1996 года, спустя три года упорного труда, id Software завершила свой новый проект — Quake. Как и в случае с Doom, компания собиралась выпустить и shareware-версию, и полную версию игры. Так как она занимала всего 22 МиБ, люди из id Software решили попробовать занять оставшееся свободным место на CD-ROM. Почему бы не записать туда зашифрованные версии всего каталога игр id? Это позволит не только избавиться от посредников, но и мгновенно покупать игры, совершив лишь один телефонный звонок и воспользовавшись кредитной картой.

В итоге эту концепцию реализовали. О выпуске CD было объявлено[4] 3 июля 1996 года, а сам он выпущен 30 августа[5]. Всего 39 дней спустя[6] хакерская группа GNOMON выпустила Quakecrk.zip. В архиве содержался инструмент QCRACK.EXE, позволявший расшифровать все игры с CD-ROM.

Читать далее

Как сделать фейковую флешку на терабайт, и при чем тут BadUSB

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

Память снова в цене, причем буквально. За последний год цены подскочили так, что SSD от более-менее именитого производителя стал, скорее, предметом роскоши, чем «базовым минимумом». И в то же время на маркетплейсах можно найти сказочное изобилие: флешки известных брендов с огромным объемом продаются практически за бесценок. Кажется, здесь есть какой-то подвох…

Привет, меня зовут Денис Астафиев, я ведущий специалист аппаратных исследований в Бастионе. Конечно, про фейковые флешки писали уже не раз и на Хабре, и за его пределами, но по большей части рассматривая их со стороны потребителя: как вычислить контрафакт, как определить ее реальный объем и всё в этом же духе. Мне же более интересен другой подход: как недобросовестным производителям удалось достигнуть такого результата, и что они могут сделать, кроме изменения одного поля в конфигурации контроллера. И, как вы понимаете, был только один способ это узнать…

Читать далее

Можно, но зачем: 7 фигур и 19 положений того самого Тетриса

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

Есть старый мем: а что, если сделать троллейбус из буханки хлеба? Можно, но зачем. В исходнике того самого Тетриса, который Алексей Пажитнов написал для Электроники-60 в ВЦ Академии наук, есть процедура ровно такого устройства. Игра тратит 958 байт кода на то, чтобы при каждом запуске заново вычислить 342 байта данных: семь фигур, их девятнадцать положений и правила поворота. Готовую таблицу можно было положить в программу и не вычислять ничего.

Код игры восстановлен: он компилируется байт в байт в тот же файл, что снят с ленты. Все 590 строк можно открыть и читать.

Фигура в Тетрисе это тетромино: четыре клетки, склеенные сторонами. Разных тетромино семь, и называть их принято латинскими буквами, похожими по очертанию: I, O, T, S, Z, J, L. Давайте посмотрим, как игра строит эти семь фигур и их производные положения. Под катом шесть коротких анимаций и немного старого Паскаля

Читать далее

TRON, Aptos и BSC в одной цепочке заражения: расследование JavaScript-загрузчика, связанного с ChainVeil

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

Что произойдет, если AI-агент порекомендует пользователю заражённый репозиторий? Именно так началось это расследование: от одного срабатывания Kaspersky до многоступенчатого JavaScript-загрузчика, использующего TRON, Aptos и BSC для доставки RAT.

Погрузиться в расследование

Помните «Шарарам»? Я перенёс его с Flash на Ruffle, и он перестал лагать

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

«Шарарам» – это старая, но до сих пор живая MMORPG по «Смешарикам». Огромный срез моего поколения, родившегося в нулевых, нашёл там первых друзей и приобрёл первые социальные навыки. Я до сих пор, в свои 23 года, возвращаюсь туда раз в один-два месяца: пообщаться с ровесниками и повспоминать золотые годы игры.

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

Это желание вылилось в эксперимент, после которого Шарарам почти перестал лагать. Честно замерить FPS сложно – разброс между локациями огромный, – но разница видна невооружённым глазом: играть комфортно даже там, где раньше было слайд-шоу. А заодно игра снова заработала в современных браузерах!

Поиграть можно через альтернативный клиент shararam.sadfun.dev (или его десктопную версию). Надеюсь, когда-нибудь это попадёт в апстрим, и игра станет приятнее для всех. А ниже будет технический разбор, как я это сделал.

И как же?

ИИ-поиск бэкдоров и уязвимостей, часть 3: бэкдор и уязвимость в OLT C-Data

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

В прошлых двух частях (1, 2) было рассказано про найденные с помощью ИИ уязвимости, бэкдоры и недокументированные возможности для свитчей SNR и Huawei. В этой части пойдёт речь о бэкдоре в оборудовании OLT C-Data - операторском оборудовании для подключения абонентов по технологии EPON/GPON. В начале статьи будет описан сам бэкдор, а затем рассказано об особенностях использования ИИ для его поиска.

Читать далее

Анатомия VDD: Как я нашел RCE в форке Telegram, а Google Security не увидел «ничего вредоносного»

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

TL;DR Внутри альтернативного клиента ExteraGram работает внутренняя система динамического обновления компонентов. Через неё авторы могут в любой момент загрузить на ваш телефон код прямо из Telegram-канала, обойти окно установки (can_not_skip) и выполнить его в едином адресном пространстве приложения (с его UID и полными правами). В исследованной цепочке загрузки я не обнаружил проверки цифровой подписи. При компрометации канала или инфраструктуры обновлений это создаёт возможность массовой доставки вредоносного кода пользователям.

Как всё началось Был обычный вечер, делать было откровенно нечего. Я сам сидел на ExteraGram, и вдруг стало интересно - а как оно вообще внутри устроено? (Спойлер: после того, что я там увидел, я его снес).

Читать далее

Внутри Apple Neural Engine в M4. Часть 1: реверс-инжиниринг

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

Можно ли заставить Apple Neural Engine делать больше, чем позволяет Core ML? Авторы разобрали стек ANE в M4 до закрытых API, научились компилировать и запускать модели напрямую и заодно выяснили, что часть привычных представлений о возможностях ускорителя требует пересмотра.

Читать разбор

Железный ключ к Secure Boot RK35xx

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

Уже несколько лет в Positive Labs мы исследуем механизмы безопасности в SoC RK35xx от Rockchip. За это время нам и другим исследователям безопасности удалось весьма неплохо проанализировать их. В результате было обнаружено несколько уязвимостей, две из которых были интересны нам, как людям, причастным к «железу».

В первом случае нам пришлось разработать эмулятор eMMC памяти, чтобы эксплуатировать TOC‑TOU уязвимость в момент загрузки прошивки.

Во втором — мы атаковали SoC с помощью Power Glitch, воздействуя на процесс проверки прошивки.

В обоих случаях нам удалось обойти механизм Secure Boot, а платформа RK35xx стала поистине хрестоматийным примером с точки зрения аппаратного хакинга, поэтому мы решили поделиться техническими деталями. 

Hardware Hacking

Реверс-инжиниринг версии файла формата КОМПАС-3D

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

Некоторое время назад понадобилось массово определять, в какой версии КОМПАС был создан файл без установки самой программы. Задача возникла при обработке большой базы чертежей и моделей (.cdw, .spw, .frw, .m3d, .a3d), так как для каталога неплохо было бы понимать минимальную версию программы, в которой файл ещё открывается.

В процессе выяснилось, что у КОМПАС-файлов два принципиально разных контейнера, один из них бинарный и для него нет никакого официального описания формата.

Читать далее

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

Auro-3D: как в обычном PCM прячут высотные каналы

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

Я давно интересуюсь звуком, писал обзоры по железу, писал про Dolby Atmos. Меня не оставлял в покое формат Auro 3D, который нам обещает многоканальный звук, а чтобы послушать и услышать, нужно покупать дорогой AVR, который из 5.1\7.1 мог извлечь верха.

Читать далее

«Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

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

Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее.

Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string, спрятавшийся в трех переменных, которые на первый взгляд никак не связаны.

Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python.

Читать первую часть

Портирование моделей 20-летней давности в современный космосим. Из X²: The Threat в X4: Foundations

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

В этой статье я хотел бы рассказать как я портировал корабли из старой игры X²: The Threat в новую игру X4: Foundations. Могут ли игровые ассеты из 2003 года быть актуальны в 2026?

Читать далее

Реверс алгоритма из прошивки устройства на базе ARM-процессора, часть 2

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

Продолжаю тему реверса алгоритма, ссылка на первую статью: https://habr.com/ru/articles/1064990/. В этой части доведу реверс до конца, постараюсь показать как делать не надо, почему декомпиляция хорошо, а эмуляция лучше )

p.s. Тут нет 50 минут, листинги в спойлерах повлияли, их можно не читать.

Читать далее

Проект eMMC-emu

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

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

В процессе разработки пришлось разбираться с FPGA, DDR4, AXI, Clock Domain Crossing и особенностями реальных хост-контроллеров. Оказалось, что они не всегда следуют спецификации (которой нет в открытом доступе) и порой предъявляют к eMMC собственные требования.

Нам приходилось отлаживать эмулятор с кардридером, программатором и даже одноплатником Orange Pi 3B. В итоге он смог загрузить Linux и перейти к режиму HS200.

Как превратить FPGA в eMMC и почему отладка хост-контроллера иногда сложнее самой эмуляции - читайте в статье.

Send CMD18 (READ_FULL_ARTICLE)

Получение shell и root shell на свитче Huawei S6330 с прошивкой V200R021

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

В прошлой статье было рассказано как “в три промпта” был получен shell для свитча SNR-2990X-24FQ (OEM DCN), в этой статье будет рассказано о более сложном реверс-инжиниринге свитча одного из топ-вендоров в мире сетевого оборудования.

Читать далее

Свет, камера, IDKFA!: как мы снимали первый российский фильм о реверс-инжиниринге

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

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

В 2001 году российского программиста Дмитрия Склярова арестовали в США по обвинению в нарушении DMCA — американского закона об авторском праве в цифровую эпоху. Скляров участвовал в создании программы Advanced eBook Processor: она позволяла сделать копию легально купленной электронной книги в формате PDF. На конференции DEF CON в Лас-Вегасе он рассказал о недостатках защиты Adobe, после чего был арестован. Скляров стал первым физическим лицом, которому предъявили уголовное обвинение по DMCA — хотя красть он ничего не собирался.

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

Кстати, кинопремьеру мы также сделали в духе реверса. Из забавного у нас был пивной кран, который не нальет ни капли, пока ты не крякнешь простенькую сrack-me-программу. Она просила пароль и молча проверяла, верный он или нет. Правильного пароля никто не давал, зато сам файл был открыт, его можно было разобрать и понять, по какому правилу программа отличает верный ответ от неверного. Вычислили правило, получили пароль — и вот ты уже в некотором роде реверс-инженер, наслаждающийся вкусом пенного.

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