"Hey, NetSky, fuck off you bitch, don't ruine our bussiness, wanna start a war?"
Увидев, что Каспер наглухо перекрыл тему с текстовыми паролями, Bagle придумал новый трюк — добавил в код функцию генерации пароля в виде GIF-картинки с цифрами. Как это выглядело – показано на скриншоте выше.
Можно было бы, конечно, детектировать саму конструкцию — слово «password» плюс img-тег рядом выглядели достаточно характерно:
Zip password: <img src="cid:hswnzbcqzl.gif">
Use password <img src="cid:kyndqtwrve.gif"> to open archive.
Password -- <img src="cid:tjhwzsfmzb.gif">
Но риск ложных срабатываний был слишком высок: мало ли кто и зачем шлёт письма с картинками рядом со словом «пароль». Требовалась новая идея.
Денис предложил её в той же курилке.
— Собираем все гифки из писем червя. Обучаем нейросеть распознавать цифры на картинке.
Что делать с результатом дальше — пока было не вполне ясно. Но тысячи гифок набрали быстро: эпидемия была в разгаре, образцов хватало. Сделали датасет, Денис написал нейронку, погонял — вышло 100% распознавания.
Осталось встроить это в антивирус.
Вот тут и проявилась вся элегантность архитектуры, придуманной Графом и Каспером ещё в 90-е.
У всех антивирусов в мире движок жил внутри самого продукта. Хочешь добавить поддержку нового формата или новую логику — выпускай новую версию продукта, жди пока пользователи установят.
У Касперского движок жил в базах обновлений. Новые форматы файлов, эвристики, распаковщики архивов, снятие протекторов — всё это релизилось моментально, вместе с обычными сигнатурными базами. Без обновления продукта.
Так появилась новая база — ocr.avc. Дата релиза сохранилась точно: 30 марта 2004 года. Внешние специалисты сразу заметили необычное имя и правильно догадались — это OCR для паролей в GIF. Нейросеть в движке, которую можно было обновлять хоть каждый час.
С этого момента и началась история ML в кибербезопасности.
Автор Bagle, разумеется, не сдался.
Он выпускал новые варианты — с зашумлённым фоном, с наклонёнными цифрами, с искажениями. Но каждая новая гифка моментально отправлялась в нейронку, та дообучалась, и в тот же день уходил релиз обновлённой базы.
Гонка длилась ещё пару лет. Потом он плюнул — и переключился на рассылку в письмах ссылок для загрузки трояна. Но это уже совсем другая история.
Наших клиентов мы уберегли. Остальные страдали.
Bagle всё равно успел построить гигантский по тем временам спам-ботнет. В 2009–2010 годах на него приходилось до 10% всего мирового спам-трафика. Более пяти миллиардов писем в день.
Денис Назаров потом уехал в США — руководить американским вирлабом Касперского. Затем был Symantec. Сейчас он Principal Engineering Manager в Microsoft.
Технология развилась в один из основных модулей борьбы с фишингом — например, мы добавили распознавание логотипов банков или сервисов.
Нейронка для распознавания цифр в гифках, придуманная в 2004 году в курилке московского вирлаба, стала первым промышленным применением машинного обучения в кибербезопасности. Мы тогда особо не задумывались о том, что делаем историю. Просто надо было остановить червя до конца рабочего дня 😇
@gostev_future
