LINUX.ORG.RU

REDasm 2 — очередной аналог IDA

 ,


7

4

В новостях о декомпиляторе АНБ США почти затерялся другой интерактивный дизассемблер, действительно полностью открытый — REDasm.

REDasm написан на C++11, интерфейс на Qt5. Архитектура модульная, с прицелом на простое добавление новых форматов и наборов инструкций (описания в JSON). Версия 2.0 вышла 4 марта.

Отличия новой версии:

  • Новый движок дизассемблера.
  • Новый виджет дизассемблера.
  • Новый движок сигнатур.
  • Новый виджет 16-ричного редактора.
  • Анализ в несколько потоков (по числу ядер).
  • Графы строятся на QtWebEngine.
  • Разделение програмы на интерфейс пользователя, библиотеку LibREDasm и базу данных.
  • Упрощение API библиотеки LibREDasm.
  • Переделка всех API эмуляции.
  • Улучшение эвристик выбора ARM/Thumb.
  • Улучшение листингов ARM.
  • Добавлены всплывающие подсказки на символах как в IDA.
  • Добавлена тёмная тема оформления.
  • Добавлены стрелки для переходов на предыдущую-следующую позиции в листинге.
  • Список недавних файлов.
  • Сохранение проектов (RDB).
  • Улучшение клавиатурных команд.
  • Перенос на CMake.
  • Анализ RTTI MSVC.
  • Обратное преобразование имён MSVC (MSVC Demangling).
  • Улучшен декомпилятор VB.
  • Загрузчик GBA (WIP).
  • Загрузчик N64 (WIP).
  • Объединены загрузчики ELF (порядок Little/Big endian и 32/64бита).
  • Объединены загрузчики PE (порядок Little/Big endian).
  • Поддержка Clang для 64 бит.
  • Переработка пользовательского интерфейса.
  • Исправления ошибок.

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

Для запуска выложенных линуксовых бинарников нужны:

  • libQt5WebEngine.so.5
  • libQt5WebEngineWidgets.so.5
  • libQt5WebChannel.so.5
  • libQt5Widgets.so.5
  • libQt5Gui.so.5
  • libQt5Core.so.5
  • libpthread.so.0
  • libstdc++.so.6
  • libgcc_s.so.1
  • libc.so.6

Личное впечатление — интерфейс похож на IDA, но не столь обкатан, проще, но ограниченнее. Нет ещё такой библиотеки форматов и вызываемых функций, как у IDA. Как пример необкатанности — неизвестный формат предлагает импортировать как MIPS32, а не как предыдущий. 32-килобайтный ELF (67K исходников на C) проанализировало за 16 секунд на 1ГГц 2-ядернике полностью автоматически.

Официальный сайт

>>> Версия 2.0 на Гитхабе

★★★★★

Проверено: jollheef ()

Ответ на: комментарий от praseodim

Хм, но ведь еще со времен i80386SL есть такая штука SMM-режим работы процессоры.

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

Iron_Bug ★★★★ ()
Ответ на: комментарий от XVilka

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

Iron_Bug ★★★★ ()
Ответ на: комментарий от praseodim

а зачем его вынимать, если нет сети, например? прошивка ничего не знает о твоём домашнем wifi и его авторизации, например. а GSM - зло, да. ибо проприетарщина. и вот его использовать не нужно.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от crypt

просто добавь бекдор или найди уязвимость

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

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

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

XVilka ★★★★ ()
Ответ на: комментарий от XVilka

обычно это «легко проэксплуатировать» подразумевает что-то типа запуска от рута локально. а в прочих случаях всё сложно или невозможно.

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

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

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

XVilka ★★★★ ()
Ответ на: комментарий от XVilka

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

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

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

Смотря для чего эта прошивка была придумана. Например, если у нее еще и доступ к сетевой карте есть, она может по получении каких-то определенных пакетов начать работать как троян с удаленным доступом. Уж на анализ настроек роутеров и т.п. ее хватит.

Вообще, если прошивка ничего не может такого плохого, то зачем ее было делать не просто проприетарной (как bios), а еще и дополнительно шифровать, а в некоторых компах еще и ребут через сколько-то минут, если эта часть отключена.

praseodim ★★★ ()
Ответ на: комментарий от Iron_Bug

ну давай перейдем к конкретным=)

https://blog.rapid7.com/2013/11/06/supermicro-ipmi-firmware-vulnerabilities/

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

crypt ★★★★★ ()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от crypt

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

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

ты думаешь, что туда можно встроить ИИ для анализа дампа памяти неизвестной оси на неизвестном железе в произвольный момент? ню-ню...

До такого не дошло. Надеюсь =)

Но прописать нужное взаимодействие с виндой и убунту, например, могли. Вообще были же статьи, вроде https://xakep.ru/2011/12/26/58104/ - там показывается, чего может достичь прошивка, незаметно виртуализирующая железо.

В той статье автор, обнаруживший чужую виртуализацию (потому что еще неотлажена была и немного накосячили, сейчас давно не косячат) для демонстрации серьезности проблемы сам сделал скрытый гипервизор, который сканирует информационный поток (I/O) и если обнаружит кодовое слово через 5 минут выключает комп. То есть, для демонстрации скопировали текстовый файл со словом «стоп» и все, комп выключился. А могли бы и что похуже сделать.

То есть, как минимум может сработать как средство выведения из строя в «Час Икс» (избирательность такого средства - это другая задача).

praseodim ★★★ ()
Ответ на: комментарий от praseodim

ну, выключение компа или падение системы - это максимум вреда от такой малвари. но на большее она неспособна: не хватит «интеллекта». а если комп вдруг начинает падать - юзер начинает искать причину. и он её найдёт.

а если юзер продуманный и он заметит тормоза в системе (сканирование всего IO на предмет какого-то слова - это дорогое удовольствие), то он начнёт копать ещё раньше, до падения системы.

вывод один: пользуйтесь не-мейнстримовыми осями и распределёнными сетями. чтобы в «час икс» не остаться без связи с внешним миром :) они ведь сами загоняют людей в андерграунд.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от anonymous

Я не говорю, что она многого не умела, но в то же время много нового появилось в последние 5 лет, те же обновления мобильных процов и ОС, улучшена отладка и парсинг С++, ну и т.д. В таких нишевых программах 5 лет - это большой срок, и сравнивать текущее состояние одной программы с другой, но 5 лет назад попросту глупо, особенно используя это как аргумент в споре какая программа лучше.

XVilka ★★★★ ()
Ответ на: комментарий от Iron_Bug

ну, выключение компа или падение системы - это максимум вреда от такой малвари. но на большее она неспособна: не хватит «интеллекта».

Этого тоже немало, но я удивляюсь словам про «не хватит интеллекта». Как минимум, если система допустим хорошо известная (винда, макос, популярные линуксы) можно из нее взять настройки доступа в интернет и начать работать параллельно как обычный троян. Не все время, а только после поступления кодовых входящих пакетов, как в том примере. Избирательность может быть обеспечена различными способами.

а если комп вдруг начинает падать - юзер начинает искать причину. и он её найдёт.

Да щас, в том-то и дело (читай тут статью на xakep), что квалификации и инструментов не хватит обнаружить, что комп на самом деле виртуализирован. Даже автор статьи смог предложить только тайминги мерить обращений к некоторым регистрам и так выявлять по слишком большим таймингам. И то это было 10-12 лет назад, сейчас могли здорово усовершенствовать все.

Падение спишут на плохой блок питания, вздутые кондеры, некачественную термопасту, кривые драйвера, просто бракованную материнку/проц/память и т.п. вплоть до барабашек. В крайнем случае выкинут глючный комп. И это если часто падать будет, а если только пару раз упадет пока подключаются и «осваиваются», то и вообще никто не пошевелится.

вывод один: пользуйтесь не-мейнстримовыми осями и распределёнными сетями. чтобы в «час икс» не остаться без связи с внешним миром :) они ведь сами загоняют людей в андерграунд.

Согласен, чем более необычная конфигурация железо+софта, тем менее вероятно, что на нее кто-то рассчитывал и сделал все правильно.

praseodim ★★★ ()
Последнее исправление: praseodim (всего исправлений: 2)
Ответ на: комментарий от crypt

я не берусь сказать, что дороже:)

Autodesk AutoCad LT (чисто 2D) на Яндекс-Маркете можно найти около 11 тысяч рублей в год. IDA Starter годовая лицензия с привязкой к компьютеру для 1 рабочей платформы — $979 ~ 65 тысяч рублей. Полный AutoCad на официальном сайте 65 тысяч за первый год. IDA Pro для 1 рабочей платформы с полным комплектом декомпиляторов — 560 тысяч, если правильно понял про 50% скидки.

question4 ★★★★★ ()
Ответ на: комментарий от Iron_Bug

ты вот так разом связал несвязуемое. уровень харда и уровень веба.

В прошивке смартфона малварь с правами рута, которая восстанавливается при удалении (с этим сталкивался). Она качает программы, которые показывают рекламу (с этим тоже). Либо она опознаёт приложения известных банков и подменяет их на свои с тем же интерфейсом (про это только читал). Кроме того, описаны зловреды под Windows, отслеживавшие вход браузером на сайт какого-то испанского банка, и воровавшие оттуда деньги.

question4 ★★★★★ ()
Ответ на: комментарий от question4

IDA Starter годовая лицензия с привязкой к компьютеру для 1 рабочей платформы — $979 ~ 65 тысяч рублей.

Да, давненько я на их цены не смотрел. Было же $400 с чем-то и не на год, а на постоянно.

praseodim ★★★ ()
Ответ на: комментарий от Iron_Bug

прошивка ничего не знает о твоём домашнем wifi и его авторизации,

эт ты зря, парни которые отучают приставки от жадности много интересного на тему вайфаев рассказали

anonymous ()
Ответ на: комментарий от praseodim

Да, давненько я на их цены не смотрел. Было же $400 с чем-то

Очень давно :) Когда я про него узнал в 2010-м или раньше, уже была годовая подписка ~1-2 тысячи.

и не на год, а на постоянно.

Если я правильно понимаю, подписка даёт право обновляться в течение этого года. Или раньше так тоже было?

question4 ★★★★★ ()
Ответ на: комментарий от question4

Или показывать рекламные баннеры, съедая весь мобильный трафик. Со вторым сталкивался на китайских смартфонах

Там оно вполне легальное приложение на основной системе, а не обрубок в каком-то чипе. И оно вполне без проблем выпиливается.

turtle_bazon ★★ ()
Ответ на: комментарий от turtle_bazon

Там оно вполне легальное приложение на основной системе, а не обрубок в каком-то чипе. И оно вполне без проблем выпиливается.

Нет, я про случай, когда аутсорсят производство в Китай, а там без ведома заказчика в прошивку вставляют что-то рекламно-вирусное, что лечится только сменой прошивки. https://www.dgl.ru/articles/bolee-40-modeley-budjetnyh-smartfonov-okazalis-za... В 2017 ни Касперский, ни DrWeb этот вирус не ловили, но иногда ловили скачиваемое им адваре.

question4 ★★★★★ ()
Ответ на: комментарий от turtle_bazon

Не выяснял подробности, но когда эта дрянь пришла на Prestigio с очередным обновлением, штатный прошивальщик перестал работать, требовалась разборка устройства в сервисном центре.

question4 ★★★★★ ()
Ответ на: комментарий от praseodim

а у тебя вафля цепляется куда попало или всё же прописаны правила? если куда попало - тогда это большая проблема. даже без фургончика. достаточно соседа-школотрона.

Iron_Bug ★★★★ ()
Ответ на: комментарий от praseodim

можно из нее взять настройки доступа в интернет

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

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

Iron_Bug ★★★★ ()