Как стать автором
Обновить
143.19

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

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

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

Доверенная загрузка Шрёдингера. Intel Boot Guard

Время на прочтение19 мин
Количество просмотров55K

Предлагаем вновь спуститься на низкий уровень и поговорить о безопасности прошивок x86-совместимых компьютерных платформ. В этот раз главным ингредиентом исследования является Intel Boot Guard (не путать с Intel BIOS Guard!) – аппаратно-поддержанная технология доверенной загрузки BIOS, которую вендор компьютерной системы может перманентно включить или выключить на этапе производства. Ну а рецепт исследования нам уже знаком: тонко нарезать реверс-инжинирингом имплементацию данной технологии, описать её архитектуру, наполнив недокументированными деталями, приправить по вкусу векторами атак и перемешать. Подбавим огня рассказом о том, как годами клонируемая ошибка на производстве нескольких вендоров позволяет потенциальному злоумышленнику использовать эту технологию для создания в системе неудаляемого (даже программатором) скрытого руткита.

Кстати, в основе статьи – доклады «На страже руткитов: Intel BootGuard» с конференции ZeroNights 2016 и 29-й встречи DefCon Russia (обе презентации здесь).
Читать дальше →
Всего голосов 57: ↑57 и ↓0+57
Комментарии35

Реверс-инжиниринг радиоуправляемого танка с помощью GNU Radio и HackRF

Время на прочтение10 мин
Количество просмотров31K

Год назад наша CTF-команда на крупном международном соревновании RuCTF в Екатеринбурге в качестве одного из призов получила радиоуправляемый танк.


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


В статье я расскажу, как при помощи GNU Radio и HackRF One можно c нуля разобраться в беспроводном протоколе управления танком, как декодировать его пакеты и генерировать их программно, чтобы управлять танком с компьютера.


image

Читать дальше →
Всего голосов 60: ↑55 и ↓5+50
Комментарии21

Проверяем честность игры в рулетку на смарт-контракте Ethereum

Время на прочтение8 мин
Количество просмотров24K


Мало кто нынче не слышал о криптовалютах и, в частности, Bitcoin. В 2014-м году, на волне интереса к биткоину, появилась новая криптовалюта — Ethereum. Сегодня, в 2017-м, она является второй по капитализации после биткоина. Одним из важнейших её отличий от биткоина является использование тьюринг-полной виртуальной машины — EVM. Подробнее про эфир можно прочитать в его Yellow Paper.

Смарт-контракты Ethereum обычно пишут на языке Solidity. На Хабре уже были статьи про написание и тестирование смарт-контрактов, например 1, 2, 3. А про связь смарт-контракта с сайтом можно почитать, например, статью о создании простейшей голосовалки на смарт-контракте. В этой статье используется встроенный в кошелёк Mist броузер, но то же самое можно делать используя плагин к Chrome, например MetaMask. Именно так, через MetaMask, и работает игра, которую мы будем исследовать.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии46

Архаичные алгоритмы сжатия видео эпохи FMV-игр

Время на прочтение5 мин
Количество просмотров16K
В 90-е сложилась интересная ситуация: вычислительные мощности компьютеров были недостаточны для расчета хоть сколько-нибудь реалистичной графики и в тоже время компакт-диски предоставляли возможность записать огромный для тех времен объем информации. В общем, идея лежала на поверхности: неплохо бы улучшить качество игровой картинки за счёт видео контента и есть куда этот контент записать.

Но была и проблема: типичное игровое разрешение того времени — 320 на 200 точек при палитре из 256 цветов, что даёт нам 64 килобайта на кадр или полтора мегабайта на 25 кадров, при скорости чтения с компакт диска в 150 килобайт в секунду. Т.е. видео надо было жать и жать довольно сильно, а сжав, потом надо суметь декодировать, ведь мы помним, компы были слабенькие и декодирование, например, MPEG им было вообще не по силам. Тем не менее производители видео игр успешно решили проблему недостаточной производительности породив заодно множество видео-кодеков и игровых видео-форматов, некоторые из которых могли проигрываться аж 286-м (прописью: двести восемьдесят шестым) процессором.

Так началась эпоха FMV игр (Full Motion Video Games). Я думаю, многие помнят её ярких представителей: Crime Patrol от American Laser Games, Lost Eden, Cyberia, Novastorm и даже Command & Conquer, в который многие играли только ради видеовставок между миссиями. В те времена выглядело это очень круто. Вау! Вау! Ну а мне было интересно, как же они закодировали это видео, в книжках о мультимедиа приводили то же описание проблемы, что и я выше, но ничего внятного о методах сжатия не писали, видимо, авторы в этом мало понимали и пересказывали какие-то сомнительные слухи.

На самом деле, всё оказалось очень просто, методов было всего три штуки и все очень простые.
Читать дальше →
Всего голосов 62: ↑62 и ↓0+62
Комментарии41

Читаем бинарные файлы iOS-приложений. Часть 2: Swift

Время на прочтение6 мин
Количество просмотров6.3K

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



Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии2

Облегчаем реверсинг Golang бинарников или зачем вообще писать скрипты в IDA

Время на прочтение4 мин
Количество просмотров18K
Golang — отличный язык. Строгая типизация, сборщик мусора, вызов си функций через cgo, reflect, chan — просто сказка! Очевидно что так считаю не только я, т.к. go популярен, а значит его использует много программистов, а значит есть высокая вероятность что когда-то кому-то понадобится реверсить его бинарники — этим мы сейчас и займемся.
Читать дальше →
Всего голосов 39: ↑36 и ↓3+33
Комментарии6

Это не шутки — остались считанные сутки… до дедлайна на GSoC 2017

Время на прочтение1 мин
Количество просмотров7.8K


Внимание! Это вам не шутки, а реальная возможность заработать!

Мы совсем забыли Вам напомнить или даже вообще рассказать, что в этом году случилось знаменательное событие. ReactOS впервые в истории получит слоты на Google Summer of Code второй год подряд. Ранее нам удавалось попасть в эту программу лишь раз в пять лет. Еще одно свидетельство значимости роли проекта в глазах индустрии!

Если вы хотите принять участие в GSoC и покодить этим летом за солидные премиальные и на общественное благо, то немедленно посетите данные странички на нашем сайте:

Основная информация о GSoC 2017 | Идеи для Google Summer of Code 2017

Если после просмотра данных материалов вы решитесь претендовать на участие в рамках наших слотов, то безотлагательно пишите в наш IRC-чат и высылайте свое резюме в текстовом виде в нашу рассылку
Читать дальше →
Всего голосов 28: ↑21 и ↓7+14
Комментарии5

Прогнозы по развитию программ-вымогателей в 2017 году

Время на прочтение8 мин
Количество просмотров13K
Каждому из нас 2016 год запомнился по-своему. Физикам — обнаружением предсказанных Альбертом Эйнштейном гравитационных волн, политикам — конфликтами на Ближнем Востоке, музыкантам — Нобелевской премией Мира Бобу Дилану. Специалистам в области IT-безопасности 2016 запомнился невероятным всплеском активности программ-вымогателей, заставивших не только специалистов, но и простых обывателей выучить ответ на вопрос "Что такое ransomware?".



Сейчас на дворе 2017 год, и нет сомнений, что «ransomware» aka «программы-вымогатели» станут еще опаснее и продолжат свое наступление на данные пользователей. В опасности окажутся все пользователи, и либо вы, либо ваши друзья уже завтра могут столкнуться с этой угрозой.

«Предупрежден, значит вооружен», — подумали мы, провели детальный разбор одной из последних программ-вымогателей, а также подготовили небольшой прогноз на предстоящий год.
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии6

Анализ исходного кода Quake

Время на прочтение17 мин
Количество просмотров44K
image

Я с удовольствием погрузился в изучение исходного кода Quake World и изложил в статье всё, что я понял. Надеюсь, это поможет желающим разобраться. Эта статья разделена на четыре части:

  • Архитектура
  • Сеть
  • Прогнозирование
  • Визуализация
Читать дальше →
Всего голосов 54: ↑54 и ↓0+54
Комментарии11

Устраняем ошибки в Building resources при сборке android-приложения с помощью Apktool

Время на прочтение1 мин
Количество просмотров5.6K
image

Всем привет. Меня зовут Алексей и я занимаюсь реверсом adnroid-приложений. Многие, кто делал реверс android-приложений, сталкивались с тем, что при обратной сборке с помощью apktool приложение не собиралось и писало об ошибках во время Building resources. Как правило эти ошибки можно исправить вручную в местах их возникновения. Но что делать когда их много? На исправления уйдет не один час. Сегодня я расскажу как бороться с эти за пару минут.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии1

Недокументированные возможности Windows: скрываем изменения в реестре от программ, работающих с неактивным реестром

Время на прочтение6 мин
Количество просмотров19K
Можно ли создать такой ключ реестра, который будет виден в Windows в составе активного (подключенного) реестра, но не будет виден программам, работающим с неактивным (отключенным) реестром? Оказывается, если у вас есть возможность изменить лишь одну переменную ядра (например, с помощью драйвера), то да, способ есть.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии10

Анализ исходного кода Another World

Время на прочтение7 мин
Количество просмотров21K
image

Я потратил две недели на чтение и реверс-инжиниринг исходного кода Another World (в Северной Америке игра вышла под названием Out Of This World). Моя работа основана на обратной разработке Грегори Монтуа (Gregory Montoir) оригинального исполняемого файла для DOS из двоичного кода в C++.

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

Всё это умещалось на гибкий диск ёмкостью 1,44 МБ и работало на 600 КБ ОЗУ. Совсем неплохо для 1991 года! Как обычно, я привёл свои заметки в порядок — это поможет кому-нибудь сэкономить несколько часов работы.
Всего голосов 74: ↑74 и ↓0+74
Комментарии20

Немного о приватности реальных Git-репозиториев

Время на прочтение4 мин
Количество просмотров22K
logo

Введение


Здравствуйте, уважаемые читатели. Сегодня на повестке дня у нас небольшое тестирование —
первых ≈100 тысяч по популярности сайтов в интернете (ранжирование на основе статистики посещаемости с Alexa Rank). Стоит отметить, что оное тестирование будет достаточно узконаправленным, а именно — проверим каждый сайт на предмет существования и открытости Git-репозитория без аутентификации прямо из веба по url-адресу искомого. Напомню, что такая брешь в безопасности зачастую позволяет прочитать актуальные исходные коды на сервере, получить чувствительную информацию (файлы конфигов, структуру системы и т.д.) и, в последствии, получить определенного рода права на сервере. Рай для различного рода негодяев, да и только :)
Совершенно аналогичную проверку я делал для себя порядка 100 дней назад, и сегодня мы сделаем это ещё раз, посмотрим что изменилось и что с этим делать.
Разумеется, использовать будем список сайтов, полученный в рамках первого тестирования.
Для заинтересовавшихся милости прошу под кат.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии36

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

Угадай фильтр по импульсной характеристике

Время на прочтение5 мин
Количество просмотров20K


На некотором сайте, в некотором форуме, добрый молодец по прозвищу SciFi озадачил коллектив свой историей.
Нашел он в руководящих технических материалах иноземной фирмы Texas Instruments [FSK Modulation and Demodulation With the MSP430 Microcontroller] требуемый ему цифровой фильтр. Но иноземцы шибко хитры оказались, и в исходном коде привели следующее:
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии36

Читаем бинарные файлы iOS-приложений

Время на прочтение7 мин
Количество просмотров9.8K

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


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




Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

По следу Cobalt: тактика логической атаки на банкоматы в расследовании Group-IB

Время на прочтение13 мин
Количество просмотров42K
image

В июле 2016 года работа First Bank, одного из крупнейших банков Тайваня, была парализована. Банк столкнулся с масштабной атакой: люди в масках одновременно опустошили три десятка банкоматов на $2 млн. Полиция терялась в догадках: на корпусах банкоматов не было ни следов взлома, ни накладных устройств — скиммеров. Злоумышленники даже не использовали банковские карты.

Как все происходило, зафиксировали видеокамеры: люди в масках подходили к банкоматам, звонили по мобильному — банкомат выдавал деньги, преступники складывали их в рюкзаки и убегали. После такого масштабного налета восемь крупнейших банков страны приостановили выдачу наличных в 900 банкоматах.

То, с чем столкнулся First Bank, называется логической атакой. Ее суть в том, что киберпреступники получают доступ к локальной сети банка и из нее устанавливают полный контроль над банкоматами. Удаленно они получают команду на выдачу денег. Сообщники взломщиков — “мулы” — забирают деньги и передают их организаторам атаки. Таким образом Cobalt — самая активная и опасная преступная группа — меньше чем за год атаковала банки в двух десятках стран мира.
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии17

NeoQuest 2017: Выбираемся из додекаэдра, не запуская ничего в qemu

Время на прочтение7 мин
Количество просмотров5K

«Затерянные в додекаэдре»


На Земле – египетские пирамиды, а на этой планете – один (зато какой!) гигантский додекаэдр, левитирующий в воздухе на высоте порядка десяти метров. Должно быть, именно в нём и кроется вся загадка этой планеты. Сама фигура как бы приглашает исследовать ее – одна из граней отсутствует, обозначая вход, и оттуда до земли свивает веревочная лестница. Разумеется, мы туда полезли.

«Вот так и пропадают неизвестно куда космические экспедиции…» – уныло говорили мы, уже третий час безуспешно пытаясь выбраться из дурацкого додекаэдра, дверь которого моментально заблокировалась, как только последний из нас забрался внутрь. Выломать дверь не удавалось, единственным выходом было блуждание по лабиринту объемной фигуры. Трудно сказать, сколько прошло времени, но наши поиски увенчались успехом: в одном из закоулков мы обнаружили вполне себе земной древний компьютер! Недовольно урча и подтормаживая, он все-таки загрузился. Всё, что удалось обнаружить – один файлик. Хорошо, что у меня с собой был ноутбук и флешка, я перекинул файл на ноут и стал внимательно его изучать.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии3

NeoQuest 2017: Реверс андроид приложения в задании «Почини вождя!»

Время на прочтение9 мин
Количество просмотров9.5K


Всем доброго времени суток, сегодня, 10 марта закончился онлайн этап NeoQuest 2017. Пока жюри подводят итоги и рассылают пригласительные на финал, предлагаю ознакомиться с райтапом одного из заданий: Greenoid за который судя по таблице рейтинга, можно было получить до 85 очков.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии9

Exploit Exercises: Введение в эксплуатацию бинарных уязвимостей на примере Protostar

Время на прочтение20 мин
Количество просмотров21K


Всем доброго времени суток. Продолжаем разбор заданий с сайта Exploit Exercises, и сегодня будут рассмотрены основные типы бинарных уязвимостей. Сами задания доступны по ссылке. На этот раз нам доступны 24 уровня, по следующим направлениям:

  • Network programming
  • Byte order
  • Handling sockets
  • Stack overflows
  • Format strings
  • Heap overflows
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии0

Исследование защиты PVS-Studio

Время на прочтение1 мин
Количество просмотров12K
Привет читатель! Я пишу первый раз статью, я один из членов команды PC-RET, я изучил статью и решил подойти с другой стороны

Этапы работы

1. Анализ программы
2. Подбор программы для Реверса
3. Анализ кода
4. Патч
Читать дальше →
Всего голосов 80: ↑40 и ↓400
Комментарии37

Вклад авторов