воскресенье, 11 марта 2012 г.

Обзор книги: Practical Malware Analysis

В феврале вышла любопытная книга Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software, авторы которой Michael Sikorski и Andrew Honig, являются известными практиками в области анализа вредоносных программ. 


И уже традиционно обозреваемые мной книги выходят в издательстве No Starch Press, именно это издательство выпускает сейчас больше всего книг для исследователей в области информационной безопасности и любезно предоставило специальный скидочный код «MATROSOVBLOGS», который дает вам 30% скидку на покупку любых книг (в том числе и электронных) на сайте издательства до первого мая текущего года.



Вообще хорошие книги по анализу вредоносных программ большая редкость, как правило все  что появляется очень поверхностно и примитивно (исключением здесь разве что является Malware Analyst's Cookbook). Тема анализа вредоносных программ не простая и изложить ее системно и актуально не так то просто, если Malware Analyst's Cookbook больше походила на сборник рецептов и рекомендаций, то у авторов Practical Malware Analysis стояла задача сделать систематизированное учебное пособие для подготовки вирусных аналитиков. Причем авторы подготовили к каждой главе практические задания в виде лабораторных работ, которые направлены на закрепление материала и доступны на официальном сайте книги practicalmalwareanalysis.com.

Основной проблемой большинства книг по анализу вредоносных программ, является оторванность от действительности и устаревшая информация (чаще всего уже на момент публикации). Авторам Practical Malware Analysis удалось соблюсти здоровую академичность излагаемого материала и в тоже время помимо “классических” тем, так же затронуть достаточно актуальные сейчас темы “C++ Analysis” и “64-Bit Malware”. Ну давайте обо всем по порядку.

Part 1: Basic Analysis
Эта глава является своеобразным введением, которая готовит читателя к дальнейшему повествованию книги. В ней рассказывается об основных вещах, связанных с устройством PE-формата и работе простейших упаковщиков для исполняемых файлов. Так же затронута тема подготовки стенда с использованием виртуальных машин для дальнейшего выполнения лабораторных работ и анализа вредоносных программ. Сразу же после этого дается ликбез по работе “песочниц” и использования публичных инструментов для мониторинга активности запущенного исполняемого файла. Относительно мониторинга сетевой активности авторы книги предлагают использовать инструмент FakeNet, который был разработан ими и публично доступен. FakeNet – это исмулятор сетевой среды, который имитирует взаимодействие с командным центром и его доступность. На данный момент реализована поддержка следующих протоколов:  DNS, HTTP, и SSL. Но есть возможность добавления любых расширений и протоколов при помощи специальных плагинов на Python, в качестве примера приводится реализация протокола SMTP.

Part 2: Advanced Static Analysis
Здесь авторы рассматривают основы статического анализа и начинается все конечно с азов и базовых понятий x86 процессоров и ассемблера для них. Базовые вещи относительно архитектуры x86 процессоров рассматриваются достаточно системно и в достаточном объеме для того, чтобы не использовать дополнительной литературы по этой теме, кроме официальной документации от Intel. После чего происходит обзор возможностей дизассемблера IDA Pro и базовым методик его использования к контексте статического анализа. Далее проводится параллель с  началом главы и выявлениям базовых конструкций языков высокого уровня в ассемблерных листингах сгенированных IDA Pro. В заключении рассматривается использование WinAPI с точки зрения наиболее часто встречаемого функционала в современных вредоносных программах и базовые понятия системы.
Part 3: Advanced Dynamic Analysis
После статического анализа происходит плавный переход к динамическому, конечно же все начинается с введения в тему отладки и типов отладчиков. Потом происходит переход к отладчику OllyDbg и методикам его использования для исследования вредоносных программ. После этого происходит погружение в отладку на уровне ядра при помощи WinDbg. Рассматривается типичные примеры анализа руткит функционала при помощи WinDbg. 

Part 4: Malware Functionality
В данной главе авторы решили привести классификацию вредоносных программ по типу их активности и рассмотрели наиболее распространённые классы вредоносных программ. А так же в главе рассмотрены методы сокрытия в системе, различные типы перехватав системных функций и варианты повышения привилегий без эксплуатации уязвимостей. Следующей частью этой главы является рассмотрение распространенных методов шифрования и часто встречающихся алгоритмов во вредоносных программах. Так же затрагивается вопрос, как им противодействовать и идентифицировать. А в заключении приводится экскурс в анализ сетевой активности и анализ кода взаимодействующего с командным центром.

Part 5: Anti-Reverse-Engineering
В этой главе приводится достаточно подробный экскурс в методы противодействия анализу вредоносных программ и не только. Начинается все с простейших трюков обмана дизассемблерного движка и запутывания графа выполнения. Далее приводится перечень всех распространённых способов обнаружения отладчика, после чего рассматриваются способы идентификации виртуальных машин. Ну и в заключении главы идет погружение в работу упаковщиков/протекторов, а так же в практические методы распаковки.

Part 6: Special Topics
На десерт в виде заключительной главы авторы оставили такие темы, как анализ эксплойтов и отладка шелл-кода, анализ объектно-ориентированных программ. Ну ив заключении рассматривается специфика анализа 64-битных приложений.

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

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

2 комментария:

  1. Нашел книгу. Спасибо за обзор. Согласен - книга very good.
    Правда пока нашел один огрех - в начале описывают 3 способа линковки ДЛЛ. А я думал что их только 2 (и msdn со мной согласна)...Или они что-то другое понимают под static и разное - под dynamic и runtime linking?

    ОтветитьУдалить
  2. Однако Andrew Honig быстро ответил. Static linking это использование не dll а lib файлов. Трудности перевода...

    ОтветитьУдалить