Изменились и угрозы. Если во времена MS-DOS вирусы были «проблемой грязных рук» и не затрагивали тех, кто пользовался лицензионным программным обеспечением, то сейчас основная масса вредоносных программ распространяется через документы, эксплуатируя ошибки проектирования. Дороже всего приходится расплачиваться за ошибки в сетевом стеке – чтобы подхватить заразу, достаточно всего лишь интернет-подключения, даже браузер запускать не обязательно, хотя ошибки в сетевом стеке – большая редкость и гораздо чаще хакеры проникают через святую троицу – pdf, jar, swf. По умолчанию браузер загружает их автоматически, и если не установлены обновления – ждите проблем.
Вообще, полиморфическим технологиям сейчас переломили хребет?
Отнюдь. Во времена MS-DOS вирусы включали в себя генератор кода, доступный для анализа. Сейчас же код генерируется удаленно на хакерском сервере и отдается по http-запросу. Или… не отдается. Сервер проверяет IP-источник запроса, и в случае каких-либо подозрений последующие ответы возвращают 404 или чистую страницу. К тому же, хакеры обязательно проверяют IP на принадлежность к антивирусным компаниям и разным правительственным лабораториям. Да и сам генератор в любом случае остается недоступен. В самом лучшем случае вы можете его купить на черном рынке за наличные деньги, но чаще всего такая возможность недоступна, а потому в распоряжении аналитиков есть лишь отдельные экземпляры работы генератора, в которых необходимо выделить неизменную часть, что существенно затрудняет разработку детектора.
К тому же централизованный генератор хакеры могут обновлять так часто, как им вздумается. Прошли времена, когда вирусы работали только под MS-DOS и только под Intel x86. Сейчас необходимо распознавать не только машинный код x86, ARM, PowerPC, не только байт-код (Java, Flash), но и бесчисленное множество скриптовых языков (JavaScript, VBScript, Python).
Например, на Маках Python идет предустановленным, что открывает для хакеров новые перспективы. Кстати, Python замечательно распространяется не только в виде скриптов, но и байт-кода.
На фоне всего сказанного, что можно сказать про перспективы традиционного автоматического лечения вирусов?
Автоматическое лечение (удаление троянцев) неуклонно сдает свои позиции, и зачастую лечение сводится к переустановке системы. Кроме того, лечение возможно только на end-points. Типичный IPS в лучшем случае предотвращает атаку, но не в состоянии обезвредить уже атакованные системы, поскольку IPS находится между атакуемым и атакующим.
Вообще сейчас перед хакером стоит другой приоритет – любой ценой передать управление на свой код, например, расположенный в файле документа и не рассчитанный на исполнение. Эта новая доминанта содействовала развитию веера новых технологий от NOP Slides до Heap-Spay и Return oriented programming (оно же ROP).
Крис, как человек изнутри этой темы, поясни, как антивирусная индустрия вообще справляется с таким огромным потоком новых зловредов? Сколько «дохлых тушек», положенных реверсеру на стол, он способен физически обработать в сутки?
Этим занимаются специально обученные люди и машины, причем машины все более активно вытесняют людей. Все, что можно автоматизировать, – давно автоматизировано. Сейчас этих тушек столько, что никаких человеческих ресурсов на них не хватит. В качестве примера устройства этого процесса могу посоветовать интересную презентацию, ищите ее по ключевым словам: Adobe Malware Classifier.
Вообще, дизассемблировать каждую тушку зловреда – это все равно, что хватать вражеских солдат по одному и допрашивать. Оно, конечно, полезно. Добыть языка. Одного. А лучше двух. Но что они могут рассказать? Стратегические планы верховного командования им все равно не известны.