Как ловят создателей вирусов

На модерации Отложенный

Кто-то верит в домовых и полтергейст, кто-то — в снежного человека, кто-то — в то, что разработчик малвари и прочего нелегального софта может гарантировать собственную анонимность, просто накрыв бинарник упаковщиком или обфусцировав код. Отдельные индивидуумы убеждены, будто их деятельностью никогда не заинтересуются компетентные органы, если созданные ими программы не наносят прямого материального ущерба, не распространяются на территории России или пострадавшие не напишут в полицию толстую пачку заявлений. Трудно сказать, на чем именно основывается подобная самоуверенность.

Факты же упрямо демонстрируют нам совершенно иную картину. Деанонимизация авторов вредоносных программ стал уже настолько привычным делом, что подобные инциденты в последнее время никого не удивляют. Ну, спалили еще одного кодера. Кое-кто и вовсе бравирует собственной неуязвимостью и безнаказанностью: дескать, вот он я, пусть попробуют поймать, да только кому я нужен? Нужен, и еще как.

Да кому я нужен?

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

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

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

Существует такое понятие, как тайна следствия, разглашать которую нельзя ни под каким соусом. Если в отношении некоего абстрактного хакера Ване органы правопорядка проводят какие-либо мероприятия, об этом вряд ли расскажут в интернетах до тех пор, пока кодеру Ване не будет предъявлено обвинение или он не предстанет перед судом. Только вот радоваться, обнаружив себя, любимого, в новостях, тоже глупо: это однозначно свидетельствует о том, что вы уже на карандаше, а о вашем творчестве оперативно сообщили куда следует. И в какой-то не очень прекрасный момент равнодушие со стороны людей в погонах может внезапно смениться пристальным интересом. Обстоятельства, знаете ли, иногда складываются совершенно причудливым образом.

Это он, это он, ваш тотальный деанон!

Абсолютно во всех известных широкой общественности случаях деанонимизации причину случившегося следует искать в зеркале. Вирмейкеры порой палятся на таких мелочах, которые со стороны выглядят сущей нелепицей. Ну казалось бы, зачем хранить на серваке, где поднята админка ботнета, личные файлы? Зачем сбрасывать стату по работе другого ботнета эсэмэсками на номер мобильного телефона с левой симкой, если этот номер ранее неоднократно светился в объявлениях по продаже компьютерных потрошков с указанием города и даже, вы не поверите, ближайшей станции метро? Кто надоумил юного гения организовать C&C трояна на публичном хостинге, где крутится сайт папиной фирмы, при этом жестко вбив URL прямо в код?

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

В каждой строчке только точки

Как известно, отлаживание — это мучительный процесс избавления программы от лажи. Для облегчения этого самого процесса некоторые компиляторы добавляют в бинарник специальные отладочные строки. В них порой содержится полный путь к папке, где хранились исходники проекта, причем этот путь иногда включает имя пользователя винды, например: C:\Users\Vasya Pupkin\Desktop\Super_Virus\ProjectVirus1.vbp

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

Даже если вместо имени пользователя в обнаруженной исследователями строчке значится ник, это все равно даст важную зацепку.

Большинство людей, не страдающих паранойей, использует один и тот же псевдоним на различных ресурсах. Это их и подводит. Любой желающий очень быстро отыщет посты интересующего его персонажа на форумах, его страничку на гитхабе и профайл в твиттере. Понять, что все эти «цифровые следы» оставило одно и то же лицо, несложно: одинаковый аватар, схожая подпись, один и тот же текст, размещенный на разных площадках… Дальше потянется ниточка, которая куда-нибудь да приведет.

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

Вот вам мыло душистое и полотенце пушистое

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

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

Не стучите, открыто!

Еще веселее, когда какой-нибудь непризнанный гений прописывает прямо в коде логин и пароль, например от админки бота или от облачного хранилища, куда трой заливает утянутые с компьютера пользователя файлы. Совсем хорошо, если один и тот же пароль используется везде, где только можно — и для авторизации в админке, и на почтовом сервере, и в социальных сетях.

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

Ваш домен выключен или находится вне зоны обслуживания

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

И дело не в том, что DGA повышает живучесть троя (накрылся один управляющий сервак — софтина автоматически подключается к следующему), и даже не в том, что сервер, если его адрес известен, можно сбрутить, засинкхолить или заDDoSить. Вычислить можно и сгенерированный адрес, вдумчиво покурив алгоритм, но тут вступают в действия иные механизмы защиты — верификация подписи сервера, шифрование при передаче данных и прочие.

Даже если сломать админку у исследователя не получилось, очень много полезной информации можно добыть, воспользовавшись службой whois. И скрытие имени держателя домена помогает далеко не всегда. А еще можно поискать другие сайты на том же IP-адресе, посмотреть, что на них находится, и попробовать зайти оттуда. В принципе, многие слышали термин CloudFlare, но вот разбираться, что это такое, всем обычно лень.

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

И смех и грех

Гордыня — это смертный грех. А грешников, как утверждают религиозные деятели, ждет неминуемое наказание. Далеко не все вирмейкеры готовы оставаться в тени и тихонечко стричь бабло, им хочется славы, почета и уважения, внимания публики и бурных оваций. В результате кое-кто начинает записывать видосы о компиляции и обфускации троев и выкладывать скринкасты на ютубе. Позабыв при этом закрыть в браузере вкладочки со своей страничкой «Вконтакте» и окошки проводника, где на HD-разрешении можно разглядеть очень много интересного.

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

Вместо послесловия

Методов идентификации авторов малвари существует великое множество, я упомянул только о самых очевидных из них. Выводы тоже вполне очевидны: в кабинет к следователю вирмейкеров приводит собственная некомпетентность и распнаплевательское отношение к элементарным вопросам безопасности. Впрочем, это, возможно, и неплохо: помнится, один похожий на Льва Толстого дядька что-то писал про естественный отбор. Который, по его мнению, в целом способствует повышению выживаемости вида.