Однажды исследователям из Cheсk Point написал журналист издания Bloomberg Мартин Уильямс (Martyn Williams), которому некто якобы из Японии переслал северокорейский антивирус. Не так часто увидишь программу из Северной Кореи, поэтому эксперты — Марк Лехтик (Mark Lechtik) и Майкл Кажилоти (Michael Kajiloti) — с радостью согласились исследовать, что же представляет собой антивирус чучхе.
О результатах своих исследований они рассказали на хакерском конгрессе 35C3.
Но прежде чем мы перейдем собственно к рассказу о северокорейском антивирусе, стоит сказать несколько слов о том, какие отношения у Северной Кореи с Интернетом, а у Интернета — с Северной Кореей.
Роль Северной Кореи в развитии всемирной сети
Атрибуция, то есть заявление, что такая-то группировка из такой-то страны провела такую-то атаку, дело сложное и ужасно неточное — трудно трактовать улики, легко принять ложные улики за настоящие, ну и так далее. Тем не менее сразу несколько групп исследователей в свое время атрибутировали некоторые атаки именно Северной Корее. Ну и в целом существует своего рода поверье, что в Северной Корее есть отряды государственных хакеров, цель которых — зарабатывать деньги для режима. Официально КНДР это, естественно, отрицает.
При этом как такового Интернета в Северной Корее, в общем-то, и нет: доступ во всемирную сеть есть только у избранных, тогда как основное население страны может выходить только в интранет — внутреннюю сеть под названием Кванмен, куда не попадает информация из загнивающего запада. Ну а загнивающий запад, в свою очередь, не имеет возможности заглянуть во внутреннюю северокорейскую сеть, так что любая возможность краем глаза подглядеть, как оно там, — всегда праздник.
Как корейский антивирус SiliVaccine вообще оказался в руках исследователей
Корейско-японский антивирус
Первый и довольно логичный вопрос: а зачем вообще Северной Корее антивирус, если там нет Интернета? На него есть два ответа. Ответ первый: чтобы защищаться от вирусов, которые попадают в страну на контрабандных флешках с западными статьями, южнокорейскими сериалами и прочей официально недоступной в КНДР информацией. Контрабандные флешки — на удивление распространенное в этих краях явление. Ответ второй, менее очевидный: похоже, что Северная Корея собиралась продавать этот антивирус на международном рынке — на это намекает наличие как минимум у одной из версий англоязычного интерфейса.
Следующий, не менее логичный вопрос: а откуда вообще взялся у КНДР свой антивирус? Ведь это довольно сложный продукт, который с чистого листа в условиях ограниченных ресурсов написать довольно тяжело. Исследователи из Check Point занялись этим вопросом — и пришли к весьма интересным выводам: корейский антивирус образца 2013 года (именно такая версия им досталась) основан на движке известного антивируса Trend Micro, правда, версии 2008 года.
Разработчики северокорейского антивируса явно не хотели, чтобы кто-то копался в коде продукта, поскольку большое количество компонентов было защищено при помощи упаковщика Themida, который сильно затрудняет инженерный анализ файлов. Однако те, кто упаковывал компоненты SiliVaccine, не использовали внушительную часть функций Themida, в результате чего исследователям из Check Point удалось получить доступ к коду программы.
Примерно четверть кода SiliVaccine полностью совпадает с элементами кода антивируса Trend Micro, однако часть функций была немного изменена. Исследователи обратились в Trend Micro с вопросом: откуда бы у Северной Кореи взялся исходный код японского антивируса? На это в Trend Micro ответили, что не знают, как именно в КНДР добыли движок, и считают его использование незаконным, а также упомянули, что этот движок могли в свое время использовать партнеры Trend Micro, распространявшие защитные решения под собственными брендами. Это дает хотя бы намек на то, как исходники могли достаться программистам КНДР.
Официальная реакция Trend Micro на исследование
В Северной Корее же явно хотели скрыть тот факт, что в SiliVaccine используется движок Trend Micro, и провели для этого ряд косметических изменений. Например, на первый взгляд кажется, что у этих антивирусов абсолютно по-разному устроена работа с вирусными сигнатурами: Trend Micro использует единственный файл с сигнатурами, тогда как у SiliVaccine их двадцать. Но при этом оказывается, что при загрузке движка все эти файлы объединяются в один. Ну а сами сигнатуры подозрительно напоминают те, что использует Trend Micro: скажем, если в Trend Micro какой-то зловред имеет сигнатуру TROJ_STEAL-1, то в SiliVaccine у него будет сигнатура Trj.Steal.B. По сути, меняется регистр букв, дефисы и подчеркивания меняются на точки, ну и еще происходит пара мелких изменений.
Также по ходу изучения корейского антивируса исследователи столкнулись с огромным количеством багов и странностей. Например, в антивирусе есть компонент, который должен бы добавлять возможность просканировать файл, если в «Проводнике» нажать на него правой кнопкой и выбрать соответствующий пункт. Пункт в меню действительно есть, но нажатие на него ни к чему не приводит.
Еще странность: вместе с антивирусом поставляется драйвер, который собирает информацию о сетевых подключениях… и ничего с ней не делает. В теории к нему должны бы обращаться какие-то другие файлы, но ни в одном другом файле SiliVaccine обращений к этому драйверу нет.
Какие-то из компонентов оказались зашифрованы при помощи упаковщика BopCrypt, некогда популярного в русскояычной среде — лет эдак 20 назад. Также код некоторых компонентов выглядит очень мусорным. Создается впечатление, что основное занятие части файлов — просто тратить время. Также у исследователей сложилось мнение, что авторы как минимум части компонентов SiliVaccine позаимствовали чужие файлы, попробовали провести реверс-инжиниринг, но не разобрались до конца в том, как же этот код работает.
Наконец, похоже, что люди, которые писали разные части кода, не очень хорошо умеют работать вместе. Скажем, один файл вызывает функцию второго файла с некоторым параметром, тогда как во втором файле специально указано, что, если значение этого параметра именно такое, то функция ничего не делает.
В общем, северокорейский антивирус SiliVaccine оказался изрядно переработанным антивирусом Trend Micro с кучей багов.
А не зловред ли это?
Третий вопрос, который закономерно возникает у людей, знакомых с внешней интернет-политикой КНДР: а не троян ли этот антивирус на самом деле? Не должен ли он подсаживать вам зловредов или делать еще что-нибудь в таком духе? В Check Point попытались ответить и на этот вопрос тоже.
Результаты опять-таки оказались интересными. Начнем с того, что сам по себе антивирус SiliVaccine вроде бы не зловреден. То есть никаких вредоносных возможностей в нем найти не удалось. Но по каким-то причинам в исполняемых файлах упоминается некая одна сигнатура, которую антивирус должен игнорировать. То есть если при проверке файла он оказывается зловредом с такой сигнатурой, то SiliVaccine его просто пропускает.
SiliVaccine игнорирует вредоносный файл с определенной сигнатурой
Естественно, исследователям стало интересно, что это за зловред такой, и они попытались сопоставить эту сигнатуру из базы SiliVaccine с соответствующей сигнатурой Trend Micro. Но выяснилось, что это эвристическая сигнатура, то есть она присваивается всем файлам, ведущим себя определенным образом, так что понять, какой именно зловред северокорейский антивирус должен пропускать, не удалось. Зато исследователи обнаружили, что в одном месте разработчики SiliVaccine опечатались, и в белый список отправилась вообще несуществующая сигнатура.
И хотя сам установщик SiliVaccine оказался незловредным, в архиве, который журналист Bloomberg получил от неизвестного якобы инженера из якобы Японии, был еще один файл. Название которого намекало на то, что это патч для SiliVaccine, а вот метаданные утверждали, что он якобы связан с автоматическим обновлениями Microsoft.
В архиве, который получил журналист Bloomberg, также обнаружился зловред, связанный с APT DarkHotel
Проанализировав этот файл, исследователи из Check Point выяснили, что это зловред под названием Jaku, обнаруженный в 2016 году компаний Forcepoint. Ну а Forcepoint в своем исследовании поясняет, что, во-первых, Jaku использовался против отдельных личностей, так или иначе связанных с Северной Кореей, а во-вторых, говорит о явной связи Jaku с DarkHotel — корейскоязычной группировкой, исследование деятельности которой мы публиковали в 2014 году.
Мартин Уильямс — журналист Bloomberg, получивший письмо с SiliVaccine — много пишет о Северной Корее, поэтому исследователи предположили, что вся эта затея с письмом с антивирусом могла быть целевой атакой против него: вряд ли его труды нравятся вождям КНДР. Ну а антивирус SiliVaccine, похоже, настоящий и, возможно, действительно используется в Северной Корее в качестве антивируса — за неимением лучших альтернатив.