Часть трояна Duqu написана на неизвестном языке программирования, созданного специально для разработки этого вируса, утверждают в «Лаборатории Касперского». По мнению экспертов, это указывает на многомиллионные инвестиции в разработку Duqu и на государственный заказ по его созданию.
Важный фрагмент кода известного трояна Duqu написан на неизвестном до сих пор языке программирования, рассказал CNews главный антивирусный эксперт «Лаборатории Касперского» Александр Гостев.
Фрагмент кода, написанный на неизвестном языке программирования, получил в «Лаборатории Касперского» название «Фреймворк Duqu». Он предназначен для обмена информацией между модулем, внедряемым в операционную систему заражаемого ПК и командными серверами Duqu.
По словам эксперта, при изучении Duqu аналитиками «Лаборатории Касперского» было проверено около трех десятков языков программирования, «включая Brainfuck и Haskell». «Мы пытаемся распознать его с ноября 2011 г. Мы спросили самых серьезных специалистов-реверсеров в Microsoft, но не нашли языка, который бы создавал подобный код», — говорит Александр Гостев.
> Но это как же надо быть осведомлённым в версиях языков и компиляторов, чтоб такой вот обратный инженеринг делать. Одних фортранофских компиляторов наверное нессколько десятков штук, не говорю уже про более распространённые языки.
Ну на PC популярных три - Microsoft Fortran, Watcom Fortran и Intel Fortran. Фортран вообще должен легко опознаваться по характерной оптимизации кода. Специалисты это все легко различают. А вот в этом Дуку нашли что-то экзотическое.
кстати, вполне
использовали же во время войны индейские диалекты для связи по рации
полнота специалистов как правило - всегда односторонняя,а вот серф по лингвистическим структурам мертвых языков и поиск параллелей - могут дать интересные результаты
даже проще, наложи на катакану языковые структуры какого-нибудь африканского племени, уже понеслось
а ведь можно придать и математические формы
> Опа, вирусы стали писаться на неизвестных процессору командах! Просто монстры!!!
Да нет, как я понял - написали обычную виртуалку-интерпретатор для осложнения жизни реверс-инженерам. А у касперского народ ныть начал: так не честно, это ж нам работать придётся - код на брюхе проползать и подробно раскручивать! Фигня какая-то, а не статья.
> Камрад, да за что с меня то покровы срывать? Машинный код то, он разный у дельфей или у сей? push eax сгенеренный дельфями сильно отличается от такого же, но выполненного на vm Python?
Отличается организация высокоуровневых конструкций языка (if, while, case...), использование стандартных библиотек. Та же ида по этим сигнатурам определяет кучу компиляторов.
> Да компиляторов неизвестных пруд пруди. Минимум два моих знакомых писали свой язык (каждый свой). Оба довели дело до конца.
Писали язык или таки компилятор, это несколько разные вещи. Я сам 20 лет назад писал компилятор фортрана, правда дело до конца не дошло.
Замечу, приносит плоды.
С начала 2012 года доля Linux на общемировом рынке ОС пробила 1% и сейчас составляет целых полтора процента. А по России аж 2,2%!
> Неужели кто-то не поленился написать руками на ассемблере?
Подозреваю, шутники не поленились написать программу в машинных кодах.
Продемонстрировав знание аппаратных средств.
И ищет полиция, ищет милиция - компилятор не могут найти!
:)
Природе известны причудливые создания воображения былинных русских компьютерных исследователей в области языков программирования. Это творения не приемлющие традицию использования латинского и английского как базы на которой строятся подавляющее большинство компьютерных языков, где конструкты как for, if, while итд понятны сразу и аксиоматически. Это языки - результат ясной и цельной мысли, которая не ввязывается в компромиссы с наследием английского языка, а как будто последнего и не существовало, с чистого листа использует кириллицу и русские слова как единственные возможные, как альфу и омегу компьютерного синтаксиса. Я говорю о языках "Глагол", "Рапира", и прочих кибернетических отростках русской семантики, полный список которых доступен на Википедии в графе "Русские языки программирования". Как мы сейчас можем создать впечатление о размерах и скорости Тунгусского метеорита по стволам поваленых взрывной волной деревьев, так же можно судить о силе мысли которая произвела на свет слово семантическое для обозначения слова компьютерного - я говорю об английском слове integer в "Глаголе" названное триграмматоном ЦЕЛ, где слово real стало ВЕЩ, а long real (long float/double) - ШИРВЕЩ. Также там присутствуют заклинания КЛЮЧ, МНОЖ, УЗКЦЕЛ, ЗНАК, НАБОР, ДОСТУП, ЗАДАЧА, - и много других не менее завораживающих.
Я был и остаюсь поражен естественной грубостью и силой этих конструктов. Чистое любование явной, даже нарочитой несуразностью этих вызванных к жизни слов-големов, подвигло меня на дань уважения к неизвестным созидателям, которую я решил выразить в виде собственного языка, основанного на украинской семантике, и который я назвал УКРОП. Я намеренно не даю таблицу соответствий украинских конструктов общепринятым английским, чтобы не отбирать у читателя радость узнавания, а перехожу сразу к примерам. Итак:
дiйство початок()
кажи("привiт!\n");
отож
это просто - не более чем routine main(). Дальше интереснее: читаем все аргументы (с соблюдением стандарта posix):
дiйство початок(аргументи)
нехай у;
доки (у = 0; y < аргументи.длина; у++) то
якщо ( аргументи[у].строка == "--")
геть;
читай( аргументи[у]);
отож
отож
Идея просится наружу, и расширение синтаксиса необходимо. Я очень хочу увидеть в прототипе языка не только "отож" но также более его сильную форму "так отож". Для возврата из функций бесспорно будет использовано слово "взад", а декларация переменных "нехай" будет иметь синоним "хай", исключительно для поэтичности языка. Я верю что УКРОП займет свою, возможно малую, но незаменимую нишу в многообразии существующих языков программирования. Предложения, как обычно, приветствуются.
Мдя... А я-то дурак по молодости печатный НЕХ из журнала для АОНа на Z80, с ручкой, с бумажкой и набором команд проца колол... без компа... и то не ныл :)
Странные нынча работники у каспера :) АСМ он и в африке АСМ :)
> Прямо сейчас в треде состоится люстрация тех, кто клавиатуру на олимпиаде по программированию нашёл!
Была у нас как-то преподовательница по пению, Олимпиада то ли Ивановна, то ли Викторовна. Ну так вот, отвтетственно заявляю вам, клавиатуры на ней не было!!! Клавиатура была на рояле.
> Мдя... А я-то дурак по молодости печатный НЕХ из журнала для АОНа на Z80, с ручкой, с бумажкой и набором команд проца колол... без компа... и то не ныл :)
> Странные нынча работники у каспера :) АСМ он и в африке АСМ :)
Аналогично. В своё время вручную набивал ПЗУ 2К для MIDI-клавиатуры, с дальнейшим разбором "а как оно работает?" Было интересно.
> Видимо, им для каких-то своих нужд желательно знать язык, с которого производится компиляция в машинные коды.
Дык, когда известен компилятор, то можно быстро выделить какие-то типовые подпрограммы и не лазить в них: и так ясно что они делают. А когда компилятор неизвестен, то надо каждую функцию (подпрограмму) проверить. Это требует гораздо больше времени. Ну и знаний, конечно. О чём касперычи и рыдают - так-то они быстренько код подгрузили, FLIRT'ом всё отсеяли и выделили только необходимый участок. А тут [работать] надо. :-)
> Понятные только процессору команды -- это т.н. машинный код
А вот если я тоже могу понять прямо по hex-коду что это за ассемблерная команда - я процессор, получается?! Блин, это ж сколько у меня процессоров в одной башке! :-)
> Если они и смогли его дизассемблировать -- то получили ассемблерные команды.
> Как по ним можно судить о языке высокого уровня, на котором этот код был написан?
Камрад, каждый компилятор имеет характерные особенности при переводе высокоуровнего языка в маш.код. Вот, почитай про FLIRT:
Эгхм!
Брейнфак и Хацкель - языки, созданные специально для троллинга
незамутнённых кодеров на пыхпыхе, и прочих жабах.
Код трояна, за который скулит каспер, и даже ещё ебанутее, можно сотворить
на С99 с GNU-расширениями, а именно - вычисляемое goto, которое позволяет прыгать
на конкретную инструкцию машинного языка.
НО!!! Чтобы запустить это в форточках, нужен такой "обоз татарской орды",
а именно mingw, или какое-то ещё воспроизведение unix-среды исполнения,
что использовать оное вирусно - будет затруднительно.
Вот рупь за сто, что пейсали на экспериментальной ветке clang'a, что из состава llvm
(стабильная ветка clang'a пока не поддерживает gnu-расширения С).
ЗЫ llvm - тоже неплохо подходит для троллинга, поскольку незамутнённые личности
считают, что это система виртуальных машин, и нативного кода генерить не в состоянии.
На самом-то деле все обстоит ровно как наоборот, и по итогам обсуждений звучит
неслабый треск шаблонов.
А зачем, если не секрет?
Чтобы выделить и выдрать из [трояна] именно вредоносный участок,
поскоку всё остальное представляет собой невыносимую ценность, которой
ну никак нельзя лишиться?!!
А что касается трассировки исполнения, чтобы знать всё, чем данный код может нагадить,
эт да - не позавидуешь.
Дык касперу давно уже пора предупреждать своих пользователей,
что его поделие лечит только от вирусов, написанных в его же конторе )
Те кто пишет серьёзные вирусы, точней те кто стоит за написанием, ну например вируса вырубившего оборудование на контроллерах Сименс на АЭС в Бушере (Иран) не испугаются и Лос Зетас.
> А что касается трассировки исполнения, чтобы знать всё, чем данный код может нагадить,
> эт да - не позавидуешь.
Так я про то и говорю - если там виртуальная машина, на которой свой код исполняется, то ясно почему касперычи рыдают. Хотя по тексту статьи вообще сложно понять про что говорят.
> ПЗУ на пережигаемых перемычках.
> С третьей попытки удалось без опечаток.
Хех! Я после первой попытки на 2-Кбайтах пошёл другим путём: сначала прожигал часть со знакогенератором, на нём руку поднабил и уже когда подошёл к кодовой части смог выставлять всё без ошибок. 8-)
всегда стоит помнить про один из главных грехов молодых специалистов в любой области: через короткий промежуток времени они начинают считать, что всё знают и понимают лучше остальных.
> Так я про то и говорю - если там виртуальная машина, на которой свой код исполняется, то ясно почему касперычи рыдают. Хотя по тексту статьи вообще сложно понять про что говорят.
Ну дык!
Странно только, что так долго не всплывала тема виртуализации именно для запуска вирусов.
Тут любая вм с прямым доступом к аппаратуре (xen, kvm, и подобные им) -
замаскарадить один поток, и делай что хочешь где хочешь. И хрен тебя поймают.
Во жуть!!
> лучше не статью выше читать, а тут в блогах кашмаровцев, с комментами
Я не понял там логики поиска решения -
если есть спагетти-код, тем более нативный, что даст знание языка высокого уровня,
на котором он написан? Дизассемблер своё отработал, выдал всё,
а итоги оптимизаций высокого уровня лишают всякой возможности извлечь
обратно исходник на языке высокого уровня.
Так что это скорее не поиск решения, а имитация бурной деятельности.
> switch (x) // начало выбора
> {
> case a: ...
> case b:
> do { ... // начало цикла
> case c: ...
> ...
> } // завершение выбора
> ...
> while (x); // завершение цикла
Пример стырен, емнип, у Страуструпа.
Там речь шла о запрете на частичное наложение структур управления.
И сильно такой код, даже если удастся его сгенерировать,
поможет в понимании логики работы программы?
> Природе известны причудливые создания воображения былинных русских
Какой-нибудь C или Pascal для аборигена США выглядит не менее причудливо. :-) Над нами просто не давлеет английский, поэтому этот бред C-шного кода нами воспринимается без эмоций.
> Вот рупь за сто, что пейсали на экспериментальной ветке clang'a, что из состава llvm
> (стабильная ветка clang'a пока не поддерживает gnu-расширения С).
Не надо рубля. Такие комплексы, говорят, пишут разные команды специалистов из разных областей. Поэтому вполне естественно, что специалист по управлению центрифугами не будет писать свою часть на совершенно непонятном ему C. Тем более, на какой-то экзотической модификации. Просто же не отладить будет.
А по теме - вот потому и говорят, что начинать изучение погроммирования надо с Prolog'a :)
Тогда это будет - программирование.
А не обезьяны в горящих джунглях, которым даже такую малость, как сишечка,
умственное развитие осилить не позволяет.
А ещё говорят, что хороший кодер должен каждый год изучать новый язык.
Чисто для общего развития.
> я говорю об английском слове integer в "Глаголе" названное триграмматоном ЦЕЛ, где слово real стало ВЕЩ, а long real (long float/double) - ШИРВЕЩ.
Тот, кто придумал ключевое слово esac тоже не был обделён чувством прекрасного.
> Для возврата из функций бесспорно будет использовано слово "взад", а декларация переменных "нехай" будет иметь синоним "хай", исключительно для поэтичности языка.
Вместо малопонятного push будет использоваться повелительная форма глагола "ховать".
> Так что это скорее не поиск решения, а имитация бурной деятельности.
Почему имитация? Если предположить, что там действительно есть признаки того, что написано оно на неведомом языке, то аналитикам должно быть очень интересно, на каком. Это их прямая обязанность, изучать матчасть противника.
OK!
Допустим, язык называется ПиздецВсему.
Все его спецификации известны только группе хакеров и ТНБ.
И только они распологают компайлерами для него.
Вполне реальная ситуация, не так ли?
Чем это поможет касперам?
И даже если это инструмент совершенно расхожий и общеизвестный,
ещё раз повторю - уровень осуществляемых компайлером оптимизаций
запросто лишает возможности извлечь обратно исходный код из результатов дизассемблирования.
Знанием того, что это так. Оно само по себе имеет значение.
> И даже если это инструмент совершенно расхожий и общеизвестный, ещё раз повторю - уровень осуществляемых компайлером оптимизаций запросто лишает возможности извлечь обратно исходный код из результатов дизассемблирования.
Камрад!
Получается так:
Кто-то где-то сделал что-то хитровумное. C использованием языка "Ы" и стандартных либ M$ VS.
Ога, и этой информации вполне достаточно, чтобы устроить злодеям маски-шоу!!!
А практически, ведь касперы вроде как антивирус сопровождают,
на основе всего вышеобсуждавшегося ихний продукт что сможет, кроме как выдавать:
Нехер шляться по порносайтам да варезникам, переустанавливайся теперь,
откорректировав mbr, переформатировав всё и вся, и хз что ещё?
Тогда можно вопрос сформулировать так: какой вообще прок в изучении вирусов и прочей дряни?
Зачем тот же самый stuxnet полностью разобрали и изучили?
Ответ простой: для противодействия плохишам (тебя не имею в виду) нужно знать как и чего они делают. Для этого их творения надо изучать. Заранее сказать, что именно, из таким образом узнанного, получит практическое применение - невозможно, но когда они вдруг делают что-то необычное (а написание пакостей на языках, отличных от ассемблера и семейства С - довольно необычно), то мимо проходить никак нельзя.
> Что-то ты две совершенно разных специальности в одну кучу смешал.
Специальность-то одна,
только вот (не сочти за снобизм) есть люди, которым это дано,
а есть те, кто пишет код "в силу стечения ряда трагических обстоятельств".
Последним - не стоит мучить ни себя, ни других. Ан нет - продолжают упорствовать.
Аналоги погроммизма в данном контексте - быдло-код, кладжи.
- слинковать исполняемый файл из смеси функций на С и на Prolog/Haskell/много что ещё -
труда не составляет. FFI, которые присутствуют во множестве фреймворков, даже и без оптимизации
лишают всякого смысла вопрос, на каком-же языке оно написано.
Или вообще какой-нибудь Quasic - помесь Бейсика и ассемблера,
про который нынче никто и слыхом не слыхивал.
На ДВК-2 - был у нас такой, не надо ржать :)
- и чисто рыночный момент - это ж надо быть совсем всадником без головы,
чтобы, занимаясь обеспечением вирусной безопасности, публично и откровенно
расписываться в собственном бессилии.
Маркетинговый ход - просто отличный!!!
> занимаясь обеспечением вирусной безопасности, публично и откровенно
> расписываться в собственном бессилии.
Кстати, вот это смутило во всей истории. Прочитал их блог с описанием задачи - вообще неясно зачем они всё это затеяли: полного материала для стороннего анализа не дали.
Если уже разобрались в коде, что следует из слов, то зачем выяснять что за компилятор этот код делал? Непонятки какие-то.
> лишают всякого смысла вопрос, на каком-же языке оно написано
Вопрос этот в данном контексте никогда не может быть лишён смысла, ибо давно уже сказано: "знай своего врага".
> публично и откровенно расписываться в собственном бессилии.
Я не увидел там расписывания в бессилии. Я увидел там то, что они пока не могут определить, на каком языке оно было сделано, и очень хотят узнать. Ну и, конечно, привлечения к себе внимания, вон, даже на Тупичок волна дошла.
не совсем понятны потуги понять на чем накодили вирусягу.
как ни компилируй, а на выходе получается машинный код.
а дальше или дизассемблером в офлайне или чем-нибудь типа soft-ice в реале.
> Так я про то и говорю - если там виртуальная машина, на которой свой код исполняется, то ясно почему касперычи рыдают. Хотя по тексту статьи вообще сложно понять про что говорят.
Давайте вернемся к конспирологической версии :). Где используется ОС VMS? Кто, собссно, знает про VAX'ы, процы Альфа и тд и тп?
> Что-то ты две совершенно разных специальности в одну кучу смешал.
>
> Специальность-то одна,
Алё, гараж!
Чертёжник чертит чертежи (программист), слесарь точит гайки (кодировщик).
То, что этим может заниматься один и тот же человек, вовсе не значит, что это одна специальность.
> есть люди, которым это дано,
> а есть те, кто пишет код "в силу стечения ряда трагических обстоятельств".
Большинство из них не понимает разницы между программированием и кодированием.
И выучив какой-нибудь язык считают себя программистами.
Хотя в большинстве случаев слесарь неспособен расчитать конструкцию.
> Считаю, в обсуждении совершенно незаслуженно упущен "язык ада" Ada.
Кстати, совершенно замечательный был язык. Мне где-то в 80-х попалась в руки книжица, названия и автора уже не помню - помню только зеленую мягкую обложку, про Аду. Очень был впечатлён. Но другая книжица, о языке С, таки победила. Название русского перевода не помню, но помню оригинальное: "C: an Advacned Introduction", автор Gehani, Narain.
Блин, пойти что ли, на linkedin с ним законнектиться?
> Считаю, в обсуждении совершенно незаслуженно упущен "язык ада" Ada.
> Не зря же бабки в электричке, прочитав надпись на обложке, начинали креститься!!!
Я купил компьютер Гитлер ад пришёл ко мне
Не успел подумать я он Три шестёрки где
Три шестёрки три девятки это мой пароль
Я тебя заставлю вздрогнуть ты узнаешь боль
Мой мозг компьютер
Мой мозг компьютер
Мой мозг компьютер
Мой мозг компьютер
Дьявол путает и грузит
Открываю жуткий файл
Мозг сканирует объекты
На пути в подземный рай
> - и чисто рыночный момент - это ж надо быть совсем всадником без головы,
> чтобы, занимаясь обеспечением вирусной безопасности, публично и откровенно
> расписываться в собственном бессилии.
Они расписались в том, что не знают каким именно инструментом был получен код. Как выяснилось, пока не знает никто. При чём здесь рынок и другие фантазии?
> а дальше или дизассемблером в офлайне или чем-нибудь типа soft-ice в реале.
Вот интересно, люди у Касперского занимаются этим в промышленных масштабах, но тут приходит эксперт с мировым именем и рассказвает, какие все тупые.
В качестве намёка на правильный ответ можешь поразмыслить, какая польза от использования технологии flirt в ida.
Какие у вас там в ЛК проблемы - нас особо не интересует, меня так вообще никак. Стёб начался над статьёй журналиста. Вот журналисту и растолковывайте в следующий раз, что писать.
> Вот интересно, люди у Касперского занимаются этим в промышленных масштабах, но тут приходит эксперт с мировым именем и рассказвает, какие все тупые.
Зря ты так. Такой аргумент может приводить только сторонний человек, никогда не сталкивавшийся с изнанкой этого бизнеса. Я постоянно вижу, как "фирмы с мировым именем" заказывают работу у небольших компаний и даже художников-одиночек. Потому что всё знать нельзя. И переманивать каждого специалиста, однократно столкнувшись с новой темой - невыгодно. Да и не нужно.
А обсуждение dq больше похож на кастинг - поиск специалистов в разных областях, которых потом можно будет нанять на (удалённую) работу. Тут я касперычам аплодирую стоя - хорошо придумано.