Троян Duqu написан на неизвестном языке программирования
От: rttrtt  
Дата: 08.03.12 08:06
Оценка: 21 (2)
http://www.cnews.ru/news/top/index.shtml?2012/03/07/480558

Небольшой пиар для касперского:

Важный фрагмент кода известного трояна Duqu написан на неизвестном до сих пор языке программирования, рассказал CNews главный антивирусный эксперт «Лаборатории Касперского» Александр Гостев.

Фрагмент кода, написанный на неизвестном языке программирования, получил в «Лаборатории Касперского» название «Фреймворк Duqu». Он предназначен для обмена информацией между модулем, внедряемым в операционную систему заражаемого ПК и командными серверами Duqu.

По словам эксперта, при изучении Duqu аналитиками «Лаборатории Касперского» было проверено около трех десятков языков программирования, «включая Brainfuck и Haskell». «Мы пытаемся распознать его с ноября 2011 г. Мы спросили самых серьезных специалистов-реверсеров в Microsoft, но не нашли языка, который бы создавал подобный код», — говорит Александр Гостев.

Напомним, что о трояне Duqu стало известно 1 сентября 2011 г. По предположению экспертов, этот троян был создан для точечных атак и кражи информации из компьютеров промышленных объектов, а также правительственных и коммерческих структур Ирана.



08.03.12 12:33: Перенесено модератором из 'Компьютерные священные войны' — kochetkov.vladimir
Re: Троян Duqu написан на неизвестном языке программирования
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 08.03.12 08:17
Оценка: :))) :))) :)
Здравствуйте, rttrtt, Вы писали:

R>Важный фрагмент кода известного трояна Duqu написан на неизвестном до сих пор языке программирования, рассказал CNews главный антивирусный эксперт «Лаборатории Касперского» Александр Гостев.


Nemerle уже проверяли? (дежурная шутка)

R>По словам эксперта, при изучении Duqu аналитиками «Лаборатории Касперского» было проверено около трех десятков языков программирования, «включая Brainfuck и Haskell». «Мы пытаемся распознать его с ноября 2011 г. Мы спросили самых серьезных специалистов-реверсеров в Microsoft, но не нашли языка, который бы создавал подобный код», — говорит Александр Гостев.


Интересно, как именно они их проверяли?
The God is real, unless declared integer.
Re: Троян Duqu написан на неизвестном языке программирования
От: Real 3L0 Россия http://prikhodko.blogspot.com
Дата: 08.03.12 08:18
Оценка:
Здравствуйте, rttrtt, Вы писали:

R>Важный фрагмент кода известного трояна Duqu написан на неизвестном до сих пор языке программирования, рассказал CNews главный антивирусный эксперт «Лаборатории Касперского» Александр Гостев.


Ассемблер — это не язык?
Вселенная бесконечна как вширь, так и вглубь.
Re[2]: Троян Duqu написан на неизвестном языке программирова
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 08.03.12 08:50
Оценка: 5 (2)
Здравствуйте, Real 3L0, Вы писали:

R3>Здравствуйте, rttrtt, Вы писали:


R>>Важный фрагмент кода известного трояна Duqu написан на неизвестном до сих пор языке программирования, рассказал CNews главный антивирусный эксперт «Лаборатории Касперского» Александр Гостев.


R3>Ассемблер — это не язык?


Можно считать, что нет, это не язык, это метаязык. Ассемблер без макросов — это автокод (был такой удобный термин в советское время). С набором макросов ассемблер превращается в произвольный язык, хоть и с сильными ограничениями. Вот загляните сюда — пример, что можно сделать из ассемблера.
Если кто-то породит набор таких макросов, он сможет неплохо писать под конкретную задачу и не будет похоже ни на один язык программирования среднего или высокого уровня...
The God is real, unless declared integer.
Re[2]: Троян Duqu написан на неизвестном языке программирова
От: SkyDance Земля  
Дата: 09.03.12 00:00
Оценка: :)
N>Интересно, как именно они их проверяли?

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

Один из самых простых способов определить язык — последовательно скармливать различным дизассемблерам. Простые случаи вроде C/C++ отлавливаются без проблем. Не очень понимаю, как в этом смысле определить Brainfuck (я в целом не специалист в этом вопросе ).

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

Вообще, IMHO, поверх сгенерированного бинарного кода мог пройти бинарный обфускатор. Тогда характерные особенности кодогенераторов вряд ли удастся найти.

PS: ах да, еще по набору вызываемых инструкций процессора зачастую можно даже опции компилятора узнать, не то что язык.
Re[3]: Троян Duqu написан на неизвестном языке программирова
От: dudkin  
Дата: 09.03.12 00:15
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Один из самых простых способов определить язык — последовательно скармливать различным дизассемблерам.


ужос! понабрали..

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


по каким таким структурам данных и по каким сегментам?
про те которые в PE формате или про что?
Re[4]: Троян Duqu написан на неизвестном языке программирова
От: SkyDance Земля  
Дата: 09.03.12 02:33
Оценка: :))
SD>>Один из самых простых способов определить язык — последовательно скармливать различным дизассемблерам.
D>ужос! понабрали..

Что не нравится-то? Прежде, чем лезть грязными руками в бинарники, проще их скормить IDA.

D>по каким таким структурам данных и по каким сегментам?


По разным, по тем, которые в стандартных либах или SDK/PSDK/DDK.

D>про те которые в PE формате или про что?


По этим тоже можно много чего определить, но в основном только среди детских поделок, где ничего не стрипнуто.
Re: Троян Duqu написан на неизвестном языке программирования
От: Lazytech Ниоткуда  
Дата: 09.03.12 06:37
Оценка:
Здравствуйте, rttrtt, Вы писали:

R>По словам эксперта, при изучении Duqu аналитиками «Лаборатории Касперского» было проверено около трех десятков языков программирования, «включая Brainfuck и Haskell».


Я не программист, поэтому попрошу отнестись к моей безумной догадке снисходительно.
Может быть, Duqu написан на Форте, который также можно рассматривать как метаязык?
Re[2]: Троян Duqu написан на неизвестном языке программирова
От: Lazytech Ниоткуда  
Дата: 09.03.12 06:41
Оценка:
Оказывается, я не первый, кто высказал это предположение.

Лаборатория Касперского просит помощи сообщества

Шитый код же почти. Форт это самопальный.

Re[2]: Троян Duqu написан на неизвестном языке программирова
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.03.12 06:43
Оценка: 4 (1)
Здравствуйте, Lazytech, Вы писали:

L>Здравствуйте, rttrtt, Вы писали:


R>>По словам эксперта, при изучении Duqu аналитиками «Лаборатории Касперского» было проверено около трех десятков языков программирования, «включая Brainfuck и Haskell».


L>Я не программист,


В каком смысле?

L>Может быть, Duqu написан на Форте, который также можно рассматривать как метаязык?


Маловероятно. У скомпилированного фортовского кода очень чёткий вид. Грубо говоря, это небольшой кусок машинного кода с непосредственным выполнением действий, дальше большой блок кусков, в которых преобладают над всем вызовы подпрограмм (напрямую машинными командами или просто списками адресов), небольшое количество втиснутых прямо в код констант и чёткая цепочка определённых программистов "слов" с их именами и ссылками между ними. Конкретная адаптированная реализация может терять или модифицировать какие-то части этого набора (например, список словаря ведётся отдельно и затем дискардится), но не все и не до конца. Или у касперского предельно тупые эксперты (не верю), или это не Форт.
The God is real, unless declared integer.
Re[3]: Троян Duqu написан на неизвестном языке программирова
От: Lazytech Ниоткуда  
Дата: 09.03.12 06:45
Оценка: 71 (4) :)
Нашел кое-что от ЛК: Загадка фреймворка Duqu
Re[3]: Троян Duqu написан на неизвестном языке программирова
От: Lazytech Ниоткуда  
Дата: 09.03.12 06:53
Оценка:
Здравствуйте, netch80, Вы писали:

L>>Я не программист,


N>В каком смысле?


В буквальном. Про Форт знаю потому, что он используется в моем любимом скриптере nnCron.

N>Маловероятно. [skip] Или у касперского предельно тупые эксперты (не верю), или это не Форт.


Понятно.
Re[4]: Троян Duqu написан на неизвестном языке программирова
От: wildwind Россия  
Дата: 09.03.12 08:57
Оценка: :)
Здравствуйте, Lazytech, Вы писали:

L>Нашел кое-что от ЛК: Загадка фреймворка Duqu


Собственно из этого поста и высосана вся остальная шумиха. Умение быстро находить первоисточник в наше время первейший скилл.
А то развели блин балабольства на целую страницу.
Re: Троян Duqu написан на неизвестном языке программирования
От: __kot2  
Дата: 09.03.12 10:04
Оценка:
basic?
Re[5]: Троян Duqu написан на неизвестном языке программирова
От: Lazytech Ниоткуда  
Дата: 09.03.12 10:47
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Умение быстро находить первоисточник в наше время первейший скилл.


Если честно, на первоисточник я набрел чисто случайно: "Форт" "Duqu"
Кстати, результаты гуглопоиска уже изменились: буквально пару часов назад ссылка на ту статью была на 2-м месте.
Re[6]: Троян Duqu написан на неизвестном языке программирова
От: Lazytech Ниоткуда  
Дата: 09.03.12 10:52
Оценка:
Твикнул поисковый запрос: "Форта" "Duqu"
Re[6]: Троян Duqu написан на неизвестном языке программирова
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.03.12 12:04
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>Здравствуйте, wildwind, Вы писали:


W>>Умение быстро находить первоисточник в наше время первейший скилл.


L>Если честно, на первоисточник я набрел чисто случайно: "Форт" "Duqu"

L>Кстати, результаты гуглопоиска уже изменились: буквально пару часов назад ссылка на ту статью была на 2-м месте.

Лучше вместо "Форт" напиши "Forth"
The God is real, unless declared integer.
Re: Троян Duqu написан на неизвестном языке программирования
От: MescalitoPeyot Украина  
Дата: 09.03.12 12:09
Оценка: 4 (1) :)))
Здравствуйте, rttrtt, Вы писали:

R>Троян Duqu написан на неизвестном языке программирования


Стопудова, его в гугле писали. Новые никому не нужные и малоизвестные языки — это их фишка.
Re: Троян Duqu написан на неизвестном языке программирования
От: m e  
Дата: 09.03.12 12:12
Оценка:
http://www.securelist.com/ru/blog/41063/Zagadka_freymvorka_Duqu

> Расположение полей в памяти объекта зависит от конкретного класса. Например, не у всех классов таблица функций находится в начале. При этом у некоторых классов бинарно совместимы таблицы функций, но прямых указаний на наличие у них общего класса-предка, как в других объектно-ориентированных языках, не обнаруживается.


о! у причастного к этому работают мозги

> В большинстве объектно-ориентированных языков методы получают параметр «this», при этом порядок передачи этого параметра обычно фиксирован — в определенном регистре или параметре в стеке. Однако для классов Фреймворка Duqu этот порядок не фиксирован — параметр может передаваться в любом регистре или в стеке.


это конечно хорошо, но уже делались предположения насчет Internal Linkage (в терминах llvm) и последующих оптимизаций
Re[2]: Троян Duqu написан на неизвестном языке программирова
От: b-3 Россия  
Дата: 09.03.12 12:40
Оценка:
Здравствуйте, m e, Вы писали:

ME>http://www.securelist.com/ru/blog/41063/Zagadka_freymvorka_Duqu


>> Расположение полей в памяти объекта зависит от конкретного класса. Например, не у всех классов таблица функций находится в начале. При этом у некоторых классов бинарно совместимы таблицы функций, но прямых указаний на наличие у них общего класса-предка, как в других объектно-ориентированных языках, не обнаруживается.


>> В большинстве объектно-ориентированных языков методы получают параметр «this», при этом порядок передачи этого параметра обычно фиксирован — в определенном регистре или параметре в стеке. Однако для классов Фреймворка Duqu этот порядок не фиксирован — параметр может передаваться в любом регистре или в стеке.


ME>это конечно хорошо, но уже делались предположения насчет Internal Linkage (в терминах llvm) и последующих оптимизаций

Обфускацию забыли как вариант)

Реально это может быть си с кодогенерацией, где кодогенерация реализует некую простую модель сервисов. Тогда и таблица функций будет "где придётся", и прототипное ООП будет чем-то напоминать, и функции для простоты кодогенерации станут массово виртуальными, и обмен сообщениями как основа взаимодействия объектов достаточно органично вписывается. Не такой уж большой по размеру фреймворк вырисовывается, чтобы думать про что-то ещё.

Старые книжки, середины-конца 90-х, часто рекомендовали подобный подход, даже в the pragmatic programmer есть глава на тему.
Забанен с формулировкой "клинический дисидент".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.