Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Еще про Petya.A и просьба к дотнетчикам

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Вот на сегодня последний и наиболее полный анализ распространения и принципа работы зловреда:
blog.talosintelligence.com/...​medoc-connection.html?m=1

Единственная вещь, которая у меня вызывает некоторые сомнения, это метод вставки порядочного куска кода в ZvitPublishedObjects.dll
А именно — реально ли это сделать, не имея исходников (декомпилировав и потом собрав снова)?

Кто-то может попробовать? Например — просто убрав из нее этот MeCom с потрохами?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Да, спасибо.
Оно не было обфусцировано и вообще хоть как-то защищено...

Что, как ни смешно, может спасти в существующих обстоятельствах Интеллект-сервис.

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

В мире .NET это делается без проблем, особенно если при сборке никаких средств обфускации не применялось.

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

Есть ссылка на оригинальную + инфицированную dll?

Вот инфицированная (точнее модифицированная):
www.dropbox.com/...​DriSJhnpHhXn_rVFXgpa?dl=0

Ну определенные проблемы бы были, если бы кто-то потрудился хотя бы подписывать сами ассембли. Но с учетом того что ассембли медка не strong named (ZvitPublishedObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ), то таки да, это делается без особых проблем.

обычно все на таких вещах экономят, надеясь что беда обойдет их стороной

Не надо обобщать.Не все так плохо в датском королевстве. Если жалко денег на норм сертификат, то средствами мелкософта можно сгенерить ключи и самоподписанный сертификат на 40 лет. Да, не ахти, но все же лучше.

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

Подписывать надо апдейты. А подписи проверять

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

и причем тут качество специалистов? может они и знали что можно подписать и знали зачем это делать, просто оно им не надо было

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

и причем тут качество специалистов

При том, что лид\архитектор, на котором не экономят, не допустил бы такого.

Да, спасибо. Уже сам добыл его и покрутил. Судя по простоте, с которой его разобрал ILSpy и отсутствия не только подписи, но даже и какого-либо версионинга, труда у хакеров оно заняло ровно на кодирование самого командного клиента, а проблем с подменой на апдейт сервере не возникло в принципе.
Клиент, кстати, сделан весьма аккуратно. Видно, что не индусами. )

Кстати, что интересно, путь к PDB файлам в заголовке у «неинфицированного» и «инфицированного» ZvitPublishedObjects.dll один и тот же.

Так это как раз повод нести предусмотренную ответственность. Неподписанные бинарники?! Это, наверное, из области «админ за $150/mo»

Как бы в этом случае подпись бинариков помогла?

Персонажи с Mono.Cecil и/или dotPeek не смогли бы проинжектить свой IL код или пересобрать dll из декомпилированных сорцов так, чтобы исполняемый модуль медка смог загрузить эту сборку.

Вот прям не скажу, что без проблем. Те тулзы, которые я щупал, генерят не лучший вариант солюшна по имеющейся DLLке. Может проще подправить IL код, модифицировав пару IFов.

Підписатись на коментарі