Вопрос мыщьху про тулзы для реверса
От: bazis1 Канада  
Дата: 27.07.12 01:14
Оценка:
В соседней ветке ты затронул тему реверсинга и того, что часто приходится самому писать мелкие тулзы для анализа.
У меня самого много раз чесались руки написать эквивалент IDA для внутреннего пользования, но с куда более юзабельной визуализацией и отладкой (хотя бы нормально разделить data flow и control flow, чтобы глаза об add eax,edx не спотыкались), но останавливало соотношение объема работ к профиту (сам реверсингом занимаюсь относительно редко).
Собственно вопорос: а насколько востребованной была бы такая тулза в коммьюнити? Более того, насколько реально выйти на людей из контор, занимающихся реверсингом, понять какие фичи упростили бы им жизнь и получить что-то вроде предзаказа на эти фичи? С технической стороной, думаю, проблем не будет, т.к. сделал в свое время много design tools (начиная от VirtualKD/VisualDDK и заканчивая концептуальным VisualHDL). Вопрос, насколько реально что-то подобное замаркетить?
Re: Вопрос мыщьху про тулзы для реверса
От: мыщъх США http://nezumi-lab.org
Дата: 27.07.12 02:32
Оценка:
Здравствуйте, bazis1, Вы писали:

B> В соседней ветке ты затронул тему реверсинга и того,

B> что часто приходится самому писать мелкие тулзы для анализа.
как мелкие, так и крупные. писать или покупать готовые. например, validEDGE -- хорошая штука.

B> У меня самого много раз чесались руки написать эквивалент IDA

"эквивалент" это сильно. но вот расширять функциональность путем написания скриптов -- это можно.
в частности, ковырнул эту штуку: http://www.honeynet.org/node/829 внезапно обнаружив, что рабочей BSD под рукой у меня нет, плюнул и за несколько минут написал эмулятор нужных сискалом на питоне. а еще через несколько минут скрестил ее с другим скриптом, который выдирает из pcap'а данные (основанный на библиотеке dpkt) и сокет стал имитировать прием данных. фиг бы я это без скриптов расхачил.

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

B> Собственно вопорос: а насколько востребованной была бы такая тулза в коммьюнити?

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

молчу про утилиты для мака. тут народ стонет -- блин, ну хоть кто-нибудь нормальный hex-редактор напишет?! ведь у многих маки (по крайней мере в сша). хочется редактор с дизассемблером и чтобы понимал форматы разные и поддерживал скрипты для описания нужных нам форматов. увы. нету этого, а что есть ужасно примитивное (с hiew'ом не сравнить).

> Более того, насколько реально выйти на людей из контор, занимающихся реверсингом,

так мы же на одних и тех же форумах туссуемся. их всего раз-два и обчелся.

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

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

> Вопрос, насколько реально что-то подобное замаркетить?

зависит от... например, semantic matching плагин для иды -- был бы точно востребован, тем более, что наработки в этой области огромные. институты даже выкладывают готовые либы на питоне. вот только они не для иды. вполне посильная работа. взять библиотеку под MIT/BSD, описать семантику x86, интегрировать в иду, набросать интерфейс и написать документацию с примерами. я набросал макет для себя, но он поддерживает ограниченный набор инструкций и до сих пор нет времени написать систему тестов и выловить всех багов. интерфейса у меня тоже нет. поиск задается посредством модификации скрипта, в котором я уже и сам запутался. по моим оценкам тут работы месяца на три если делать без спешки.

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

скромно молчу про ROP. тут нужно создавать базу всех библиотек/прошивок и искать в ней осмысленные цепочки команд. технически -- ничего сложного, но слишком много усилий по саппорту этого дела.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Вопрос мыщьху про тулзы для реверса
От: goorov  
Дата: 02.08.12 12:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

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


а идой можно дизасемблить джаву? или это у меня пробел в познаниях?
Re[3]: Вопрос мыщьху про тулзы для реверса
От: мыщъх США http://nezumi-lab.org
Дата: 02.08.12 12:38
Оценка:
Здравствуйте, goorov, Вы писали:

G>Здравствуйте, мыщъх, Вы писали:


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


G>а идой можно дизасемблить джаву? или это у меня пробел в познаниях?


ИДА поддерживает JVM хз с какой версии, но это именно дизассемблер, а не декомпилятор. да и на дизасм наложены ограничения. если это jar, то при запуске IDA предлагает выбирать _один_ файл из архиа, с которым она и будет работать, что некошерно.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Вопрос мыщьху про тулзы для реверса
От: goorov  
Дата: 02.08.12 12:44
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>ИДА поддерживает JVM хз с какой версии, но это именно дизассемблер, а не декомпилятор. да и на дизасм наложены ограничения. если это jar, то при запуске IDA предлагает выбирать _один_ файл из архиа, с которым она и будет работать, что некошерно.


я так и понял, что дизасемблит... надо как-нить глянуть
Re[2]: Вопрос мыщьху про тулзы для реверса
От: Sanik Россия http://sergeysthoughts.blogspot.com/
Дата: 02.08.12 18:48
Оценка:
Здравствуйте, мыщъх, Вы писали:


М>молчу про утилиты для мака. тут народ стонет -- блин, ну хоть кто-нибудь нормальный hex-редактор напишет?! ведь у многих маки (по крайней мере в сша). хочется редактор с дизассемблером и чтобы понимал форматы разные и поддерживал скрипты для описания нужных нам форматов. увы. нету этого, а что есть ужасно примитивное (с hiew'ом не сравнить).


IDA for Mac OS X же есть. Не то?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Re[3]: Вопрос мыщьху про тулзы для реверса
От: мыщъх США http://nezumi-lab.org
Дата: 02.08.12 19:26
Оценка:
Здравствуйте, Sanik, Вы писали:

S>Здравствуйте, мыщъх, Вы писали:


S>IDA for Mac OS X же есть. Не то?

IDA как hex-редактор?!
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: Вопрос мыщьху про тулзы для реверса
От: Alexéy Sudachén Чили  
Дата: 03.08.12 15:34
Оценка:
М>сейчас активно ищут нормальные декомпиляторы для флеша из которых есть два достойных и оба нерабочие. хотелось бы эмулирующий отладчик для java. да вообще много чего бы хотелось. но этого нет, увы. декомпиляторов под жабу тоже два и тоже нерабочие. да что там декомпиляторы.
М>молчу про утилиты для мака. тут народ стонет -- блин, ну хоть кто-нибудь нормальный hex-редактор напишет?! ведь у многих маки (по крайней мере в сша). хочется редактор с дизассемблером и чтобы понимал форматы разные и поддерживал скрипты для описания нужных нам форматов. увы. нету этого, а что есть ужасно примитивное (с hiew'ом не сравнить).

Чёт я не пойму, среди ревёрсеров что вообще программистов нет что ли? Не могут себе инструменты заточить, бедненькие. Ну, в конце то концов, могла бы компания нанять несколько фрилансеров и своять нужный ревёрсерам тул, а то прям слёзы и сопли ))) Что вот прямо нужно? Как, говоривал бывало Станиславский — Не верю!

P.S.
Что есть такое эмулирующий отладчик для явы? Она сама по себе эмулирующий отладчик. Разве что историю записывать что бы откатить затем, дык это с режиме интертрепации с полпинка делается. Собственно не понимаю я здесь масштабов проблемы... не нужно просто это никому.
Re[3]: Вопрос мыщьху про тулзы для реверса
От: pva  
Дата: 03.08.12 15:56
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>Чёт я не пойму, среди ревёрсеров что вообще программистов нет что ли?

Есть, но все ленивые до безобразия. В "конторах" все пишут под себя долгие годы. А школота вообще только кнопки нажимать умеет — подавай все готовое.
Из инструментов выделяется только ида. Да и та требует существенной доработки напильником.
имхо, очень узкая ниша. Коммерческие перспективы — туманные.
newbie
Re[4]: Вопрос мыщьху про тулзы для реверса
От: Alexéy Sudachén Чили  
Дата: 03.08.12 16:15
Оценка:
pva>имхо, очень узкая ниша. Коммерческие перспективы — туманные.

Вот и я о том же. Единственное для чего можно писать такой софт — засветиться на старте как автор фривары, шоб работку приличную подыскать. И что самое приятное при таком подходе полировать продукт не надо, на что уходит 80% времени. )))
Re[3]: Вопрос мыщьху про тулзы для реверса
От: мыщъх США http://nezumi-lab.org
Дата: 03.08.12 21:22
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS> Чёт я не пойму, среди ревёрсеров что вообще программистов нет что ли?

AS> Не могут себе инструменты заточить, бедненькие. Ну, в конце то концов,
AS> могла бы компания нанять несколько фрилансеров и своять нужный ревёрсерам
у нас есть свой собственный hex-редактор, заточенный под свои же цели и в урезанной версии бесплатно доступный всем желающим. но не под мак. тем более, что hex-редактор со всеми фичами это довольно серьезный проект, требующий знания не только интеловских мануалов, но и реальный опыт реверса, иначе удобную штуку сделать не получится. кстати, обращаю ваше внимание на уникальность HIEW'а. был ему конкурент QVIEW, но сдох. вещи типа HTE работают и на маке, но это не то, что нужно. да и у самого HIEW'а не хватает скриптинга и парсинга. сравните с 010 и FileInsight -- у двух последних можно ткнуть курсором в середину файла и оно выделит границы данной структуры и скажет что это.

> Что вот прямо нужно? Как, говоривал бывало Станиславский — Не верю!

010 есть и под мак. но это все же не то... намучался я с ним, хотя редактор хороший и даже идейный.

AS> Что есть такое эмулирующий отладчик для явы?

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

> Она сама по себе эмулирующий отладчик.

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

> Собственно не понимаю я здесь масштабов проблемы... не нужно просто это никому.

вы просто не в теме. читать матчасть для просветления.
http://www.tml.tkk.fi/Opinnot/T-110.6220/2008/T-110.6220-Antivirus_engine_design.pdf

чем приниципиально в данном контексте отличается x86 от JVM ? да ничем. помните Dr.Web появился и начал детектить полиморфов? вот так и тут. чтобы детектить java-сплоиты нужен специализированный эмулятор JVM.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: Вопрос мыщьху про тулзы для реверса
От: Alexéy Sudachén Чили  
Дата: 03.08.12 23:24
Оценка:
>> Что вот прямо нужно? Как, говоривал бывало Станиславский — Не верю!
М>010 есть и под мак. но это все же не то... намучался я с ним, хотя редактор хороший и даже идейный.

Ну я и говорю не нужно это никому. Было б нужно — давно бы написали.

AS>> Что есть такое эмулирующий отладчик для явы?

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

Стоп-стоп. Я вообще-то даже свою реализацию JVM писал, было дело. Дурости было много, а заняться не чем было. Дык я действительно не понимаю в чём собственно проблема. Нафига для анализа логики кода гонять его на хотспоте? В интертрепаторе с ограничением нативной части нет ничего страшного, группы комманд гонять тоже никакой проблемы нет. ИМХО конечно, однако тебе ничего не мешает убедить меня в обратном, просто продемонстрировав реально страшную-страшную проблему. Однако что-то вот так вот сходу в голову ничего не приходит.

На тему эмуляции багов... ну дык сделайте свою интертипирующую JVM с повторением багов. Студент свою JVM сделать может, блин, а крутая компания с толпой мозговитых пацанов нет. Чо за цирк то? Это просто программный продукт ничем не отличающийся от любого проекта. Вопрос только кто за разработку заплатит. Там ведь реально поработать придётся а не пару строк написать и десяток с гула скопипастить.

>> Собственно не понимаю я здесь масштабов проблемы... не нужно просто это никому.

М>вы просто не в теме. читать матчасть для просветления.
М>http://www.tml.tkk.fi/Opinnot/T-110.6220/2008/T-110.6220-Antivirus_engine_design.pdf

Как же это относится к обсуждаемой проблеме отсутствия софта? Если софта нет, а деньги есть, то и софт появиться. Сдаётся мне проблема с роду нытью лентяя, который хочет чтобы кто-то за него сделал часть работы, но не хочет за неё платить.
Re[4]: Вопрос мыщьху про тулзы для реверса
От: Alexéy Sudachén Чили  
Дата: 04.08.12 00:28
Оценка:
М>вы в курсе какие в java есть дыры? вы в своем уме? реальный отладчик можно использовать только под виртуалкой и java сильно ограничена в возможности выполнения отдельных групп инструкций по кускам. тем более, что если код эксплуатирует баг, который уже пофиксен, то эмулирующий отладчик может эмулировать багистное поведение.

http://www.itspecial.ru/theme/Novoe---horosho-zabytoe-staroe_-_ujazvimost-Java-prilozhenij/10099/default.asp

я так понимаю это? Обожаю такие стати, нагнано страху, упомянуты какие-то инструкции и сделан вывод что — 'а-а-а-а, шеф, всё пропало!'

Можно поинтересоваться как инструкции преобразования объектов интегральных типов могут воздействовать на секурность кода? Я так понимаю был некий реальный эксполйт который это использовал. Можно кусочек jasm кода в студию? Ещё интересно каким образом checkcast и instanceof могут аффектить валидность кода? Ну кроме глупых ошибок в реализации JVM.

Можно пример реализации "действительности ее легко обойти путем создания подложного класса (назовем его spoofed), полностью идентичного данному, но только с public-атрибутами вместо private". Что вообще такое 'полностью идентичный' и как его загрузить при условии что класс-лоадер заменить никто не даст? Ну то есть загруженный через другой класс-лоадер он уже вроде как не будет полностью идентичный. Но более всего интересно посмотреть на код который сможет привести один к другому. Это такая концептуальная дырища, что я даже сомневаюсь в её в возможности в силу специфики реализации.

Я конечно очень давно ковырял JVM, но вот команды getlong/putlong хоть убей не припомню. Можно ссылочку на спеку где они описаны? На мой взгляд это из серии какого-то совсем запредельного зла.

"Однако это легко сделать умышленно — достаточно воспользоваться преобразованием типов, искусственно раздвинув границы массива" круто, да. Можно на примерчик глянуть? Чёй-то я реально как-то слабо могу представить себе произвольные преобразования типов. Так что давай код, хочу посмотреть как это работает.

"Хорошая идея — взять доверенный класс и создать экземпляр производного класса (sub-класса) и проинициализировать его вызовом super(). Тогда злоумышленник сможет вырваться за пределы «песочницы»." Наверное, это идея. Не спорю, потому как мне в голову так вот сразу не приходит как это поможет выбраться за пределы песочницы. Хотелось бы однако посмотреть как это сделать.

"Netscape версий 4.0—4.79 вообще можно " я может конечно что-то путаю, но ИМХО в нетшкафе жаба версии 1.2 была только в виде плугина. =)

Ну то есть я конечно очень давно жаб через трубочку надувал, но с позиции моего ИМХО статья как-то сильно желтизной отдаёт. Где примеры, где разбор причин уязвимости. Собственно не понятно, автор реально это в жизни видел, или где-то что-то услышал и своими словами пересказал? )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.