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

Реверс алгоритма поиска устройств в сети

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров1.9K

При создании оконного клиента под MS-Windows для удалённого взаимодействия с LED-матрицами стояла задача сделать автоматический поиск всех табло в сети. Моей первой идеей было перебирать все существующие IP-адреса конкретной подсети, по очереди посылая на них запросы и ожидая что одно или несколько устройств отправят соответствующий ответ. Я быстро отказался от этой задумки, ведь подобный брутфорс будет сильно нагружать сеть, да и сам алгоритм не самый быстрый. Других идей по реализации на тот момент у меня не было. Мне предоставили копию другого клиента, где поиск осуществляется моментально по нажатию одноимённой кнопки, а приложение в табличном виде выводит IP и MAC-адреса с рядом другой информации об обнаруженных матрицах, если таковые нашлись. Эти данные затем могут быть использованы для подключения, конфигурации и отправки команд на найденные устройства. Не имея исходного кода, я подготовил дизассемблеры, отладчики и hex-редакторы, готовясь к глубокому анализу и разбору проприетарного алгоритма поиска, чтобы реализовать что-то подобное уже в своей программе.

Читать далее
Всего голосов 14: ↑14 и ↓0+19
Комментарии4

IDA Pro: работа с библиотечным кодом (не WinAPI)

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

Всем привет,



При работе в IDA мне, да и, наверняка, вам тоже, часто приходится иметь дело с приложениями, которые имеют достаточно большой объём кода, не имеют символьной информации и, к тому же, содержат много библиотечного кода. Зачастую такой код нужно уметь отличать от написанного пользователем. И, если на вход библиотечного кода подаются только int, void * да const char *, можно отделаться одними лишь сигнатурами (созданные с помощью FLAIR-утилит sig-файлы). Но, если нужны структуры, аргументы, их количество, тут без дополнительной магии не обойдёшься… В качестве примера я буду работать с игрой для Sony Playstation 1, написанной с использованием PSYQ v4.7.

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

IDA Pro: каким не должен быть SDK

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

Приветствую,



Эта статья будет о том, как не нужно делать, когда разрабатываешь SDK для своего продукта. А примером, можно даже сказать, самым ярким, будет IDA Pro. Те, кто хоть раз что-то разрабатывал под неё и старался поддерживать, при чтении этих строк, наверняка, сейчас вздрогнули и покрылись холодным потом. Здесь я собрал опыт сопровождения проектов, начиная с IDA v6.5, и заканчивая последней на момент написания статьи версии — v7.5. В общем, погнали.

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

Руткиты на основе BIOS. Часть 1

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


Привет, Хабровчане!
В конце августа в OTUS запускается 2 мощных курса по обратной разработке кода (реверс-инжиниринг). В связи с этим приглашаем вас на День Открытых дверей, где Артур Пакулов (Ex-вирусный аналитик в Kaspersky Lab.) расскажет подробнее о программах, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. А также приглашаем вас принять участие в бесплатных открытых уроках: «Анализ буткита» и «Анализ банковского трояна».



Предпосылки


Все описанное здесь основано на проекте, который я завершил в начале 2011 года, спустя аж несколько лет после его начала. Принимая участие в CanSecWest в 2009 году, Анибал Сакко и Альфредо Ортега из Core Security провели презентацию «Persistent BIOS Infection», где продемонстрировали, как можно пропатчить BIOS, чтобы совершить некоторые неприятные/удивительные вещи. Можете ознакомится с их докладом здесь. На то время это действительно впечатляло, но мне так и не выпал шанс попробовать это на практике. Год спустя мне нужно было подготовить групповой проект для учебы, поэтому я решил вернуться к взлому BIOS и самостоятельно реализовать что-нибудь из этого.

Читать дальше →
Всего голосов 13: ↑12 и ↓1+16
Комментарии3

Реверс-инжиниринг прошивки устройства на примере мигающего «носорога». Часть 1

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

26 апреля 2018 года компания ИНФОРИОН провела конференцию для студентов МГТУ им. Баумана SMARTRHINO-2018. Специально для конференции было подготовлено небольшое устройство на базе микроконтроллера STM32F042.

Этот носорожек стал подопытным главным героем мастер-класса по реверсу прошивки. К сожалению, за время, отведенное на мастер-класс, не представлялось возможным провести полное исследование прошивки, поэтому мы решили восполнить это подробным разбором в формате статьи. Надеемся, информация будет полезна не только участникам конференции, но также всем начинающим кодокопателям.

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

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

Осторожно, под катом мигающий носорог и его прошивка!
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии26

Получение исходного кода PowerPacker Cruncher от AmigaOS

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


Всем привет,


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


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

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

Руткиты на основе BIOS. Часть 2

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


Привет, Хабровчане!
В конце августа в OTUS запускается 2 мощных курса по обратной разработке кода (реверс-инжиниринг). Смотрите запись трансляции Дня Открытых дверей, где Артур Пакулов (Ex-вирусный аналитик в Kaspersky Lab.) рассказывает подробнее о программах, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. А также приглашаем вас принять участие в бесплатных открытых уроках: «Анализ буткита» и «Анализ банковского трояна».

Внедрение кода в BIOS


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

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

Руткиты на основе BIOS. Часть 3

Время на прочтение9 мин
Количество просмотров5.2K
Публикуем заключительную часть перевода, который был подготовлен в преддверии старта базового и продвинутого курсов «Реверс-инжиниринг».







Распаковка и патчинг BIOS


Теперь, когда мы знаем как мы хотим внедрить руткит в BIOS, следующим шагом будет собственно патчинг BIOS кодом нашего руткита. Для этого нам нужно извлечь все модули BIOS, пропатчить модуль распаковки и собрать все заново. Модули можно извлечь с помощью консольной утилиты phxdeco или Phoenix BIOS Editor. После того как модуль распаковки извлечен, следующий код пропатчит его нашим руткитом:
Всего голосов 6: ↑5 и ↓1+4
Комментарии1

IDA Pro и техники реверс-инжиниринга

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

0x00 start


; {EN} entry point, do nothing, just run _main {EN}


Статья для начинающих “воинов тьмы”, тех, кто хочет погрузиться в темную сторону силы: реверс-инжиниринг. На нашем “операционном столе” будет небольшой кустарный сервер, который работает по протоколу TCP/IP. Для анализа протокола обмена данными нам поможет стандарт де-факто в области реверса — IDA Pro.


Статей по реверс-инжинирингу и по IDA Pro уже написано немало (хотя и не столько, как по PHP), но поскольку процесс реверса — исследовательский, то мысли, как с "другого боку" подойти к задаче обратной разработки, полезны новичкам. По крайней мере, как автор, я руководствовался тем, чтобы изложить основные практики и техники, о которых говорю в первые дни всем стажерам и на первых парах курса по реверс-инжинирингу в университете.


Чего не будет в статье?

Поиска уязвимостей и разработки эксплоитов для Google Chrome или Apple iPhone… Поэтому если вы исследователь со стажем и с большим количеством CVE на счету, маловероятно, что вы найдете для себя что-то новое.



"Once you start down the dark path, forever will it dominate your destiny".

Читать дальше →
Всего голосов 19: ↑18 и ↓1+26
Комментарии32

Вскрытие покажет: Решаем лёгкий crackme и пишем генератор ключа

Время на прочтение3 мин
Количество просмотров17K
Доброго времени суток читающий. Мне хочется рассказать тебе про алгоритм решения одного лёгкого crackme и поделиться кодом генератора. Это был один из первых crackme, который я решил.

На просторах сети найден был наш подопытный. Это сrackme. Естественно, что необходимо изучить его. Для вскрытия нам понадобиться:

  • Немного языка Assembler
  • Логика вместе с отладчиком (IDA PRO)

Лекарство изготовим из яда австралийской змеи с помощью Python. Не будем терять времени.

image

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

Введение в эксплоитинг и реверсинг с использованием IDA FREE и других бесплатных инструментов. Глава 2

Время на прочтение15 мин
Количество просмотров9K
В первой части мы установили несколько инструментов, которые будут полезны для нас для прохождения этого курса. Их особенность в том, что они все бесплатны. Мы не будем использовать какой-либо платный инструмент, а из тех, у которых есть платная версия, таких как IDA или PYCHARM, мы будем использовать версию FREE или COMMUNITY.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

Введение в IDAPython

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


На русском языке (и на Хабре, в частности) не так много статей по работе с IDAPython, попытаемся восполнить этот пробел.


Для кого. Для тех, кто уже умеет работать в IDA Pro, но ни разу не писал скрипты на IDAPython. Если вы уже имеете опыт написания скриптов под IDAPython, то вряд ли найдёте здесь что-то новое.


Чего здесь не будет. Мы не будем учить программированию на Python и базовой работе в IDA Pro.

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

Введение в эксплоитинг и реверсинг (уже не с нуля) с использованием IDA FREE и других бесплатных инструментов

Время на прочтение5 мин
Количество просмотров19K
Привет, Хабравчане.

Для тех кто не знает, совсем недавно Рикардо начал новый курс, который посвящен реверсингу и эксплоитингу. Это продолжение предыдущего оригинального авторского курса, который закончился на 67 главе. Я узнал про курс сразу, так как Рикардо подписал меня на свою рассылку КрэкЛатинос. После появления этой новости я сразу побежал искать папочку с английским переводом и очень обрадовался когда нашел его там. Над английским переводом постарался человек под ником Fare9, за что ему честь и хвала. Также я хочу передать привет и сказать спасибо Ильфаку Гильфанову за его прекрасный инструмент, которым пользуются в каждой стране. Перед ним я снимаю шляпу и делаю низкий поклон.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии30

Пишем плагин отладки для SNES игр в IDA v7

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


Приветствую,


Моя очень старая мечта сбылась — я написал модуль-отладчик, с помощью которого можно отлаживать SNES (Super Nintendo) игры прямо в IDA! Если интересно узнать, как я это сделал, "прошу под кат" (как тут принято говорить).

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

GHIDRA vs. IDA Pro

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


Приветствую,


Думаю, пришла пора. Наболело/накипело/есть мнение. С выходом Гидры ситуация с инструментарием для реверс-инженеров достаточно сильно изменилась. Если раньше выбора чем пользоваться особо не было (здесь не будут упоминаться Binary Ninja, Hopper, JEB или Radare2, потому как в известных мне ИБ-компаниях и комьюнити ими пользуется очень малое количество человек, либо же порог вхождения в некоторые (привет, Радар) очень высок, либо же покрытие архитектур ограничено лишь x86/x64/ARM/ARM64/MIPS), то теперь мы имеем очень мощного конкурента Hex-Rays в лице АНБ с их GHIDRA.

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

Еще одна стажировка, или сказ про реверс IP-камеры

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

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

Можно выбрать какое-нибудь устройство и самостоятельно ковырять его до победного конца (или полного разочарования в своих навыках). А можно делать подобное в рамках стажировки, где опытные наставники проведут по этому тернистому пути, поддерживая и направляя, если это необходимо.

Далее вас ждет история о том, что я делал на стажировке в НТЦ "Вулкан".

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

Пишем дизассемблер виртуальной машины из игры Clock Tower (PS1/PC) для IDA Pro

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

Всем привет. Тут такое дело: ещё одна моя реверсерская мечта сбылась - я написал процессорный модуль для IDA Pro с нуля, за два дня! Если вы когда-то тоже хотели написать свой модуль, но боялись начать - думаю, моя статья сможет помочь.

В качестве кода, который требуется дизасемблировать, будет выступать код виртуальной машины из очень крутого хоррора, который выходил сначала на SNES, потом на PS1, PC и Wonderswan - "Clock Tower - The First Fear". В игре имеется 9 концовок (sic!), атмосфера гнетущая, а в качестве главного злодея выступает "Scissorman" (человек с руками-ножницами). Заинтересовал? Тогда добро пожаловать...

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

Rust'ерзание краба. Пробуем реверсить Rust удобно

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

Rust как язык программирования только набирает обороты и находит своих почитателей. Он не только предлагает множество надстроек для безопасности кода, но с недавнего времени еще и появился в ядре Linux.

В этой статье мы посмотрим на него с "обратной" стороны, а именно попробуем пореверсить программу, написанную на Rust, и выяснить, что можно сделать, чтобы сделать ее анализ проще. Рассмотрим утилиты, приложения и плагины, а также напишем свой плагин для IDA Pro, Cutter и rizin, чтобы автоматически создать сигнатуры для исполняемого файла без отладочных символов. Поговорим о FLIRT-сигнатурах, их преимуществах и недостатках и о том, можно ли автоматизировать их создание.

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии2

«Не только реверс, но и воплощение знаний в коде, инструментах и плагинах»: как работается вирусным аналитиком в PT ESC

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

И снова привет, Хабр! Это Алексей Вишняков, руководитель отдела обнаружения вредоносного ПО экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC). Сегодня вас ждет нетипичный контент от нашего подразделения: без технических деталей о вредоносах и скриншотов из дизассемблера, не о перехватах на уровне гипервизора и даже не о том, чем отличается Process Doppelgänging от Process Herpaderping. В этом посте мы с коллегами раскроем то, что обычно остается за кадром публичного представления результатов нашей работы, и ответим на вопросы:

· чем занимаются вирусные аналитики, помимо реверс-инжиниринга;

· какие цели мы преследуем — и достигаем (что, кстати, гораздо важнее);

· почему наша работа — это работа мечты (без холивара у этой статьи нет будущего?).

Ранее мы уже приоткрывали дверь в наш мир и рассказывали, как и чем мы живем. Если интересно узнать о [не]технической стороне одного из отделов PT ESC, услышать больше про людей, а не про технологии — оставайтесь. Будем разбираться!

Под кат
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Интервью с Чуонгом — разрушителем рансомов

Время на прочтение5 мин
Количество просмотров3.2K
Интервью с Чуонгом — разрушителем рансомов.

image

Я. — Самый первый вопрос, который меня волнует — скажи пжста — кто ты по национальности?
Ч. — Я родился и вырос во Вьетнаме.
Читать дальше →
Всего голосов 6: ↑2 и ↓4-2
Комментарии34