Спецслужбы научились вычислять анонимных вирусописателей

Для создателей вирусов и Лаборатории Касперского наступают сложные времена: в военной лаборатории Army Research Laboratory создан и успешно апробирован алгоритм идентификации авторов программ по бинарному коду.

Как найти автора программы

Идея очень простая: программирование — это творческий процесс. Хотя написание программы всегда подчиняется строгим законам логики, творческая составляющая программирования подразумевает, что в некоторых местах автор имеет свободу выбора: использовать тот паттерн программирования или иной, как организовать ветвление, какие определить перехватчики ошибок и т.д. Исследователей очень заинтересовали эти вариативные признаки. Оказалось, что их не менее 462. Затем была написана программа, которая транслирует бинарный код в абстрактный (операция напоминает дизассемблирование). Полученные данные можно использовать для построения синтаксического дерева и поиска этих 462 стилометрических признаков.

Следует отметить, что стилометрия — давно существующая наука, которая занимается установлением авторства литературных текстов. Ученым пришло в голову распространить эту науку и на тексты программ.

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

Как установить автора программ

Специалисты по безопасности уже прокомментировали разработку. Отношение к ней очень неоднозначное. С одной стороны, технология позволит эффективней бороться с вирусописателями. Ведь редкий программист начинает карьеру с вирусов и только ими и занимается. Часто вредитель работает и на официальной работе обычным программистом. Спецслужбы — в случае совпадения стилометрических признаков — могут запросить данные о работнике и вычислить его персональные данные. Вирусописателям придется выбирать: либо официальная работа, либо подполье. Количество желающих распространять заразу это резко сократит. Но есть у разработки и другая сторона, негативная. Дело в том, что многие эксперты уверены, что спецслужбы не станут заниматься мелкими кибермошенниками, а начнут вычислять тех, кто анонимно создает инструменты обхода цензуры и иные программы, позволяющие противостоять властям (защищенные мессенджеры, криптовалюты и т.п.). Не вирусов станет меньше, а качественных программ для защиты от слежки.

field_vote: 
Ваша оценка: Нет Средняя: 4.4 (5 оценки)
Программное обеспечение: 

Комментарии

как интересно. А если мой стиль программирования похож на еще кого-нибудь? Может я даже ни одного вируса не писал, а выцепят где-нибудь мой исходник, да не где-нибудь, а винда например сольет. Поймают — обвинят в краже стотыщьмиллионов, докажи что ты не верблюд. Вот и возвращаемся к сливу данных и аргументу "НАМ ВЕДЬ НЕЧЕГО СКРЫВАТЬ"

Оценка: 
Средняя: 5 (2 оценки)

А если мой стиль программирования похож на еще кого-нибудь?

Ничего страшного: приедут, е...бнут сапогом в рыло, убедятся, что это не ты и уедут.

Оценка: 
Средняя: 5 (2 оценки)

Ничего страшного: приедут, е...бнут сапогом в рыло

не, страшного ничего, даже скорее приятно...

Оценка: 
Средняя: 5 (1 оценка)

>Для создателей вирусов и Лаборатории Касперского наступают сложные времена
это намек на то что в лаборатории Касперского сами пишут вирусы чтобы их антивирус потом покупали? )))

Оценка: 
Средняя: 5 (2 оценки)

"Для создателей вирусов и Лаборатории Касперского" — здесь имеется ввиду одно и тоже!

Оценка: 
Средняя: 5 (1 оценка)

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

Это намек на то, что если вирусописателей переловят, то новых вирусов станет меньше. А старые ловит старый Касперский. Как убедить людей покупать новые версии и продлевать подписки? Никак.

Оценка: 
Средняя: 5 (1 оценка)

Идея конечно дельная, но допустим, "хакер" сам не кодит, а использует скрипт-киди (т.е. совокупность чужих скриптов в конечном продукте) и как такого ловить у него нет "собственного почерка"?

Оценка: 
Средняя: 5 (2 оценки)

Вот именно, отдуваться будет козел отпущения. Показательный процесс.

Оценка: 
Средняя: 5 (2 оценки)

На всякое ... , всегда найдется элегантное решение для обхода.

Оценка: 
Средняя: 5 (2 оценки)

Вобщем — это [цензура], товарищи. Большой брат всё ближе. То что данная технология будет использоваться спецслужбами, и использоваться далеко не для ловли вирусописателей — это настолько очевидно, что тут даже обсуждать нечего. А ещё, она обязательно будет использоваться крупными корпорациями — патентными троллями. Тяжелые времена также наступят для всех кто вкладывается в Open Source, пишет всякие свободные библиотеки, фреймворки, и.т.д. Всё то на чём сейчас базируется ПРАКТИЧЕСКИ ВСЕ крупные продукты. Дай бог, чтобы хоть какая-то реализация этой технологии анализа появилась в виде Open Source решения — чтобы была возможность придумать обфускатор. Хотя сдаётся мне, обычного обфускатора тут будет мало — применяемые программистом паттерны разработки, и многие персональные особенности организации программы он никак не изменит.

Оценка: 
Средняя: 4 (5 оценки)

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

Оценка: 
Пока без оценки

С такими темпами, скоро в дополнение к различным рекомендациям по программированию, появятся рекомендации по написанию максимально обезличенного кода.

Оценка: 
Средняя: 5 (1 оценка)

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

Оценка: 
Средняя: 5 (1 оценка)

Естественно, на 100% не получится.
Моя мысль немного в другом: на крупных проектах существуют требования по стилю оформления кода, разделению классов, применению различных паттернов. Общую архитектуру и даже структуру классов могут вообще разрабатывать согласовано и не исполнители. Я за свою 15 летнюю практику программиста несколько раз встречался с такими проектами, в которых невозможно даже по исходникам понять где кто и что писал — всё было очень чётко регламентировано и проверялось на соответствие. Насколько хорошо ТАКОЙ код проанализирует данная система (а особенно если ей на вход даётся только готовый бинарник) ? Сможет-ли она, например, гарантированно различить авторство друх разных проектов из разных компаний, сделанных по одинаковой схеме ? Как бы это проверить...
Если не сможет — значит обезличивать код всё-таки МОЖНО. В любом случае — такая система оперирует не абсолютными значениями "соответствует\не соответствует", а выдаёт процент соответствия. Снижение этого процента соответствия используя какие-то общие методики — уже может быть достаточно.

Оценка: 
Средняя: 5 (2 оценки)

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

Сможет-ли она, например, гарантированно различить авторство друх разных проектов из разных компаний, сделанных по одинаковой схеме?

Можно ли различить авторов двух картин, если прежде художники учились в одной художественной школе?

Оценка: 
Средняя: 2 (1 оценка)

... то программы бы писались другими программами.

О чём-то подобном уже писали вроде-бы на других технических ресурсах недавно. Сейчас уже не вспомню дословно, но основная идея была как раз в том, чтобы использовать программу для написания программ...

Но пока есть человеческий фактор, анализ стилометрических признаков будет работать.

Можно ли различить авторов двух картин, если прежде художники учились в одной художественной школе?

А что если 2 художника учившихся в одной школе и творящие в одном и том-же стиле (2 программиста, связанные условностями и требованиями проекта), напишут 2 разных части одной картины — один левую часть, а второй правую часть. Можно-ли будет как-то по признакам определить кто именно из них написал какую именно часть картины ? Особенно если они специально стремились получить максимально гармоничную картину, на которой бы не был виден "разрыв" между стилями ?

Оценка: 
Средняя: 4 (2 оценки)

Можно-ли будет как-то по признакам определить кто именно из них написал какую именно часть картины?

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

Кстати, 462 признака для бинарников — это тоже очень много. 2462 возможных вариантов. Понятно, что распределение признаков будет не равномерным, а гауссовым, что снижает количество комбинаций. Но это количество все равно огромно и сильно больше количества активных вирусописателей. Следовательно, вероятно коллизии низка, даже если юзер постарается искусственно повлиять на часть признаков.

Оценка: 
Средняя: 4 (1 оценка)

Чет я думаю что не все кто пишут вирусы простофили. Вот соберутся энти "писатели" на своих грязных, подпольных сайтах и начнут дискутировать: мол, так и так, пришла беда отворяй ворота.
А потом после долгих-долгих дебатов, кто-нибудь предложит шаблон типа свод правил от которых не желательно отклоняться. Разработают некий стандарт (устав) и, усё.

Оценка: 
Средняя: 3 (2 оценки)

И насколько будет легко следовать своду минимум из 462 правил? И каждую строчку кода сверять? Проще сразу застрелиться.

Оценка: 
Средняя: 2 (1 оценка)

Волшебное слово — шаблон.

Оценка: 
Средняя: 3 (1 оценка)

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.