LINUX.ORG.RU

Посоветуйте лучший отладчик/дизассеблер для Linux?


2

2

Здравствуйте, уважаемые форумчане. Посоветуйте лучший отладчик/дизассеблер для Linux на данный момент. Чтобы умел работать с файлами, у которых отсутствуют таблицы секций и с зашифрованными файлами? Тот же gdb ранее этого делать не умел.

★★

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

я про блобы в ОС и модулях ядра.

Ты там выше отвечал про безопасность - это даже не будем комментировать, просто пропустим.

Но вот конкретно - человек работает в ИБ-конторе, и ему принесли неизвестный эксплоит, которым порутали сервак. Или руткит принесли. Или вредоносный модуль для апача. Не суть важно.
Что исходников к этому никто не предоставил, наверное догадаешься даже ты. А работать нужно, а именно - узнать, как злоумышленники проникли/закрепились в системе и что сделать, чтобы это предотвратить.

Чем работают одепты открытого кода в данном случае?

Reinar
()
Ответ на: комментарий от hateyoufeel

Из тебя и Эдика получилась бы отличная пара

А вот тут в точку. Еще не исключено, что это одно лицо. Просто диагноз такой. А разговаривать и тем более дискутировать с такими-это равносильно борьбе с ветряными мельницами-бессмысленно и глупо)

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

Но вот конкретно - человек работает в ИБ-конторе, и ему принесли неизвестный эксплоит, которым порутали сервак. Или руткит принесли. Или вредоносный модуль для апача. Не суть важно.
Что исходников к этому никто не предоставил, наверное догадаешься даже ты. А работать нужно, а именно - узнать, как злоумышленники проникли/закрепились в системе и что сделать, чтобы это предотвратить.

Чем работают одепты открытого кода в данном случае?

Клавиатурой - пишут на linux.org.ru, конечно же.

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

Понятно, что желательно софт должен быть свободным, но если нет альтернатив?

Смотря насколько он нужен. Обычно я выбираю вариант "нет — ну и ладно".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от ChAnton

А ты лучше подумай: если нужен, но нет, то на выбор два варианта — 1) сделай сам, 2) не можешь сделать — говори "не нужен".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от hateyoufeel

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

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

узнать, как злоумышленники проникли/закрепились в системе и что сделать, чтобы это предотвратить. Чем работают одепты открытого кода в данном случае?

для начала надо посмотреть на порутанный сервер, чем он отличается от обычного. Т.е. в первую очередь проверить md5sum каждого файла, они очевидно должны совпадать. Если же они не совпадают, то там и лежит тушка зловреда. Далее по обстоятельствам, но я думаю ты понимаешь, что именно дизассемблирование — если и нужно, то не является самым важным. Проблема и так достаточно локализована. Далее можно посмотреть, в каком именно месте внедрён вредоносный код, ну и objdump. При некотором опыте нет никакой нужды долбить бинарник по-командно, если и так известен и файл, и примерный адрес зловреда.

ЗЫЖ кстати, а как отладчик поможет узнать, как враг _проник_ в систему?

emulek
()
Ответ на: комментарий от Eddy_Em

GPU нужны. У меня кое-какие матмодельки без куды считались бы месяцами!

ну вот разве что модельки считать. В Этой Стране.

emulek
()
Ответ на: комментарий от Eddy_Em

я так думаю, что в другой стране модельки считают на специальных компьютерах, а не на PC'шках. Хотя тут я не в курсе.

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

А, ну это понятно. Не все ж такие нищие, как россияне, которые "суперкомпьютеры" на видеокартах делают...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от emulek

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

Я намеренно упростил задачу, уже принесли что-то, что нужно проанализировать.
А в общем случае всё не так просто.

Далее по обстоятельствам, но я думаю ты понимаешь, что именно дизассемблирование — если и нужно, то не является самым важным. Проблема и так достаточно локализована.

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

Далее можно посмотреть, в каком именно месте внедрён вредоносный код, ну и objdump.

Ну и как ты посмотришь, в каком месте он внедрён? А если он пошифрован? Упакован? Objdump снимет мне дамп с живого работающего процесса? Декодирует строки с адресами для бекконекта или админки ботнета?
Нет. То-то и оно.
Не надо лезть в бутылку, серьёзно.

ЗЫЖ кстати, а как отладчик поможет узнать, как враг _проник_ в систему?

Много как, примера ради - у нас в системе есть незакрытая дыра, ведущая к RCE (Remote Code Execution), злоумышленник ей воспользовался, а payload был каким-нибудь образом залоггирован - содержался в умышленно неверно сформированном запросе.
Payload (шеллкод, допустим) надо анализировать на предмет того, что он делает - в самом очевидном случае даёт злоумышленнику шелл. А может и не даёт, и шеллкод был кривой - но система всё-таки скомпроментирована, и это значит, что не всё так очевидно и в систему проникли уже каким-то другим образом.

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

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

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

какая теория? Тут всё просто: один СПВ отвечает на вопрос другого СПВ. Ответ неправильный?

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

Я намеренно упростил задачу, уже принесли что-то, что нужно проанализировать. А в общем случае всё не так просто.

я намеренно упростил решение (:

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

ну во первых, с какого перепуга он «плохой просто так»? А что делать — см. ниже, локализую адрес, потом посмотрю objdump.

Ну и как ты посмотришь, в каком месте он внедрён? А если он пошифрован? Упакован?

с какого перепугу на сервере зашифрованные бинарники? Может ещё GNU-защита от копирования?

Objdump снимет мне дамп с живого работающего процесса?

зачем? Если система порутана, то что-то в файлах изменилось. И это можно найти без запуска.

Не надо лезть в бутылку, серьёзно.

я и не лезу. Просто тех проблем, что есть в Windows, в Linux просто нет. На сервера не ставят непонятно какие бинарники непонятно откуда. На них ставят исключительно подписанное ПО из дистрибутива. Ну либо какие-то свои разработки, код которых тоже известен (тем, кто занимается проверкой и обслуживанием).

emulek
()
Ответ на: комментарий от ChAnton

А вот тут в точку. Еще не исключено, что это одно лицо.

плюсану

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

я так думаю

Так - это задницей?

Хотя тут я не в курсе.

А я в курсе. Комплектуха та же самая. Разница исключительно в количестве.

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

ну во первых, с какого перепуга он «плохой просто так»? А что делать — см. ниже, локализую адрес, потом посмотрю objdump.

Потому что его запуск есть в логах и с помощью него был получен local root, допустим. Эксплоит.

с какого перепугу на сервере зашифрованные бинарники? Может ещё GNU-защита от копирования?

Любой уважающий себя бэкдор пошифрует хотя бы строки.

зачем? Если система порутана, то что-то в файлах изменилось.

Не всегда. Пусть у нас есть запатченный в рантайме sshd. Ну ладно, пусть не sshd - его нонче хрен пропатчишь, на каждую сессию делается форк с execv, что приводит к новым адресам из-за ASLR. Но можно запатчить что-нибудь другое, например ldap-сервер, или http-сервер для отдачи зараженного трафика - не важно.
Важно то, что нам по сути не важно, что сервер будет когда-нибудь выключен/перезагружен, если мы наловили паролей или профреймили какое-то кол-во клиентов. И это НИКАК не скажется на файловой системе.
Сейчас уже всё стало намного сложнее сказок, которые могли краем уха слышать сисадмины в начале нулевых.

И это можно найти без запуска.

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

На сервера не ставят непонятно какие бинарники непонятно откуда. На них ставят исключительно подписанное ПО из дистрибутива.

Залез такой злоумышленник на сервер и apt-get install backdoor?

Reinar
()
Ответ на: комментарий от ChAnton

Есть вещи, которые нужны, но их нет. И их приходится писать самому. Иначе не было бы никакого нового софта!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Reinar

Залез такой злоумышленник на сервер и apt-get install >>backdoor?

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

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

Ты ошибаешься. Если конечно не считаешь специальным компьютером десктоп с 16G памяти и топовым интелом.

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

Ну, хотя бы того нет что у меня в сосфорже выложено.С >>научным софтом вообще жопа.

Причем тут «твой» сорсфорж? Ты пъян, или укурен. Может быть достаточно просто разуть глаза и перечитать тред с самого начала, о чем тут вообще речь.

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

Ты упорот? При чем тут эта тема, если мы про софт «вообще» >>говорим?

Неа. Прочитай тему треда и вопрос. Если ты не в теме то тебе туда -->

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

Тема — говно. Вопрос — тоже. Давай уже говорить на отвлеченные темы, т.к. эта тема себя изжила и не нужна!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Тема нормальная. Вопрос тоже. То что ты не в теме вопроса, мы уже поняли. На отвлеченные темы говори в отвлеченных тредах в толксах. Твое личное идиотское мнение в треде не интересно. Если нечего добавить по-теме, то можешь быть свободен.

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

Да, IDA Pro доступен по цене порядка $1k (все архитектуры), radare2 - бесплатен и открыт (кроме того можно использовать библиотеку libr в своих, в том числе коммерческих, проектах благодаря лицензии LGPL). Обычно мы рекомендуем использовать его из git-а, но в данный момент идёт активный рефакторинг кода в целях масштабирования кода, и пройдёт он, думаю, до самого лета. Поэтому рекомендую использовать последнюю версию 0.9.7. Вот, например, release notes для этой версии. Вот скриншоты для разных архитектур:

Вот примеры использования. А вот пример статьи по реверсингу crackme - http://dustri.org/b/defeating-ioli-with-radare2.html Для мигрирующих с gdb есть простой cheatsheet.

Есть также и web-интерфейс, но он никакой, так как некому пилить. Если знаете JS/HTML - будем рады помощи :)

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

P.S. Забыл, можно еще скриптовать как «снаружи» так и «изнутри» на языках python, vala и js (основные поддерживаемые), perl, guile, php, ocaml. В будущем планируется ocaml сделать одним из основных поддерживаемых.

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

Потому что его запуск есть в логах и с помощью него был получен local root, допустим. Эксплоит.

не. Это _получение_ доступа. А что-бы закрепится в системе, врагу надо _изменить_ файл(ы).

Любой уважающий себя бэкдор пошифрует хотя бы строки.

а мне не важно ЧТО там, мне важно, что там что-то НЕ ТО. Бэкдор не может ничего пошифровать, просто потому, что ни один уважающий себя разработчик такой патч не примет. Бэкдор должен быть открытым и иметь вид «понятного». Ошибка должна быть замаскирована например под утечку памяти, т.е. кодер «забыл» сделать free(3). Или использовал память в стеке после её освобождения(в тривиальном варианте это давно не работает, компилятор следит. Но можно ведь и запутать). Ну а потом этот кодер может написать эксплоит к своему же ПО, если его патч примут. Однако ни о каком «шифровании» речи быть не может в OpenSource. Шифрование может быть в закрытом ПО, типа «для защиты от копирования и нарушения EULA». Вот здесь — да, может быть всё, что угодно.

Не всегда. Пусть у нас есть запатченный в рантайме sshd

что-бы патчить в рантайме нужны УЖЕ права рута. Откуда они возьмутся?

Важно то, что нам по сути не важно, что сервер будет когда-нибудь выключен/перезагружен, если мы наловили паролей или профреймили какое-то кол-во клиентов. И это НИКАК не скажется на файловой системе.

выключение/перезагрузка случится очень скоро, сразу после того, как мы начнём использовать этот сервак. И если мы не закрепимся в системе, придётся нам опять получать права рута, что далеко не тривиально(т.к. админ уже настороже, сидит и наблюдает за системой).

Тебя же вопрос как по большому счёту не интересует

в принцип да. Достаточно обнаружить вектор атаки и устранить дыру. Как именно детально эта атака проведена — мне пофиг.

На сервера не ставят непонятно какие бинарники непонятно откуда. На них ставят исключительно подписанное ПО из дистрибутива.

Залез такой злоумышленник на сервер и apt-get install backdoor?

вот именно для этого я и предлагал проверять md5 каждого файла.

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

а мне не важно ЧТО там, мне важно, что там что-то НЕ ТО. Бэкдор не может ничего пошифровать, просто потому, что ни один уважающий себя разработчик такой патч не примет.

http://en.wikipedia.org/wiki/Backdoor_(computing)
Засим окончим.

Reinar
()
Ответ на: комментарий от emulek

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

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

В том, что термин пошире будет. Бэкдор - это не только плохой коммит в код

термин-то пошире конечно, вот только обычные для закрытого ПО пути не подходят для СПО.

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

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

Если враг уже порутал сервер, то он ставит руткит, т.е. программу, которая подменяет какую-то системную утилиту на свою копию с бэкдором. Этот руткит — следствие, и его можно вычистить без анализа.

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

Ну а то, что в русской вике называют «бэкдором» обычно называют руткитом(хотя конечно руткит тоже является бэкдором).

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

ну сейчас объясню: по моей терминологии бекдор — это как плохо закрытая дверь. Может враг специально продал хозяину дефектный замок, а может сам хозяин забыл закрыть дверь. А когда враг входит внутрь, он уже изнутри портит замки к другим дверям. Это уже руткит. Но бэкдор отличается от руткита тем, что когда хозяин покупает замок, он покупает его у известного производителя, который отвечает за качество. Ну и его соответственно контролирует. Дефект возможен, но это должно быть вредительство, что-бы оно прошло ОТК. Потому как у производителя есть клеймо(и у контролёра ОТК тоже), и если что, то виновник сразу будет найден.

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

по моей терминологии

Вся суть ослика в трех словах.

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

Ты первый начал

Я ничего не начинал. Я задал конкретный вопрос, укладывающийся в тематику сайта. Вы о чем?

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

термин-то пошире конечно, вот только обычные для закрытого >>ПО пути не подходят для СПО.

Почему не укладывается? Вам привели множество примеров, где все прекрасно укладывается. Linux-СПО, на нем можно производить исследования/написание/внедрение/защиту в том числе от бекдоров, расследовать программы без исходников, написанные, но утерянные, защищаться от вражеских намерений и компроментации продуктов СПО и многое-многое другое. В том числе производить реверс-инжениринг для самых различных целей и задач. Это у вас не укладывается.

это как-то противоречит тому, о чём я говорил? В каком месте?

Вашему идиотизму это противоречит целиком и полностью) Ознакомтесь с текстом внимательнее, особенно касаемо в части шифрования.

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

ну сейчас объясню: по моей терминологии

Все понятно. У тебя каша в голове, которая не соответствует знаниям в области информационных технологий, в частности информационной безопасности и вообще реальному положению дел. Иди расскажи все это в лабораторию Касперского, или другим спецам по ИБ, или разработчикам, которые изучают работу откомпилированных программ в реальных условиях в отсутствии исходников(кстати, наличие исходников не отменяет исследование поведения программ именно таким образом, надеюсь объяснять почему, вам не надо, хотя некоторые примеры вам уже неоднократно приводили), которые занимаются подобными вещами, пусть они посмеются. А ТВОЯ терминология не имеет ничего общего с истиной. Так что поумерте свой пыл, он не к месту.

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

Но стоит это все некисло.

~15000 рублей, но его купить очень сложно. А 64-разрядный декомпилятор частным лицам не продаётся.

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

А что, действительно где-то можно найти IDA 6.4 со всеми пирогами по такой цене? Мне казалось, что только достаточно старые версии.

Ищи, авось повезёт. Qbittorrent легко находит 6.3 под линукс без Hex-Rays.

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

radare2 - бесплатен и открыт (кроме того можно использовать >>библиотеку libr в своих, в том числе коммерческих, проектах >>благодаря лицензии LGPL). Обычно мы рекомендуем использовать >>его из git-а, но в данный момент идёт активный рефакторинг >>кода в целях масштабирования кода, и пройдёт он, думаю, до >>самого лета. Поэтому рекомендую использовать последнюю >>версию 0.9.7. Вот, например, release notes для этой версии.

Большое спасибо. Видимо это то что надо, по большей части.

ChAnton ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.