7 сентября 2016

Под капотом киберзащиты: ловим зловредов в оперативной памяти

Новости Спецпроекты

О технологиях защиты от вредоносных программ сложно рассказывать: там полно всяких сложных технических терминов. Но мы все же попробуем. Сегодня я расскажу о технологии детектирования вредоносных программ в оперативной памяти — и постараюсь сделать это максимально доступно.

Под капотом киберзащиты: ловим зловредов в оперативной памяти

Давным-давно

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

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

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

Именно поэтому в независимых тестах защитных систем вы можете найти множество производителей, у которых относительно неплохие результаты «защиты» (первый вариант) и совершенно так себе результаты «лечения» (второй). Лечить гораздо сложнее, чем не допускать заражение, а вариантов атак существует очень много.

Но прежде чем лечить, нужно понять, что компьютер действительно заражен, и выяснить, как именно. А это тоже не всегда просто. Точнее, тут действует правило 80/20 — в смысле 80% вредоносных программ вообще никакой проблемы не представляют для хорошего защитного продукта, а вот на остальные 20% тратится 80% времени и сил.

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

Распространенный метод, например, есть такой: назвать троян так же или почти так же, как называется один из компонентов операционной системы Windows. Даже если пользователь посмотрит список запущенных процессов, он может и не углядеть среди десятков одинаковых названий одно, которое немного отличается.

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

Вот такой вот получается сапер. Что делать?

Ставим оценки за поведение!

Итак, задача: нужно научиться отличать «правильные» действия от «неправильных». Сказать легко, а как сделать? Проблема в том, что в глубине компьютера абсолютно все, что вы делаете, сводится к операциям сложения и умножения разных чисел. И все — больше ничего не происходит.

Но решение есть. Недавно запатентованная технология, разработанная специалистами «Лаборатории Касперского» Михаилом Павлющиком, Алексеем Монастырским и Денисом Назаровым, умеет строить некую «карту взаимодействия» между определенной программой и другими компонентами операционной системы и программами. Кратко говоря, в случае запатентованной технологии взаимодействия подразумевают работу с памятью других процессов, что важно отследить, для того чтобы определить зловредные действия в будущем.

Не обязательно отслеживать абсолютно все действия — на это уходит слишком много ресурсов компьютера. А вот связи могут с высокой степенью достоверности дать понять, что все либо нормально («ребенок с одноклассниками делает уроки дома»), либо не очень («ребенок был замечен с сомнительной компанией в подворотне возле пивного ларька»).

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

Многослойная защита

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

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

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

Вот тут-то и помогают технологии поведенческого анализа. Данная технология встроена в модуль «Мониторинг активности» (System Watcher) и наряду с другими позволяет остановить заразу до того, как произошло непоправимое, и даже может откатить изменения.

В таком решении, как наш Kaspersky Internet Security, откатывать требуется ну очень редко — новые угрозы попадают в наши антивирусные базы очень быстро, поскольку Kaspersky Security Network позволяет очень быстро получить информацию о неизвестной программе из облака. Но в деле разработки антивирусных программ перестраховка — дело никогда не лишнее. Собственно, в этом и заключается отличие хорошей защиты от «так себе»: защищать данные и программы нужно в любых обстоятельствах, даже если вероятность заражения минимальная, но она все равно существует.