Сложнейшие техники, применяемые буткитами  и полиморфными вирусамиVyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky Lab19 сентября 2011 / Yet Another Conference, Yandex
Обзор выступленияPAGE 2|  Yet Another Conference 2011 |  September 19, 2011Современное вредоносное ПО уже давно перешло из разряда «поделок» в категорию «сложных программ»В чём сложность?Зачем?Как?
Буткиты. Чем страшны, как работают и что делают?
Буткиты. Что это и зачем?PAGE 4|  Yet Another Conference 2011 |  September 19, 2011Буткит – вредоносная программа, модифицирующая MBR жёсткого дискаВ чём сложность?Работа на низком уровне с жёстким диском и оперативной памятью
Перехват и обработка прерываний
Внедрение в стартовый код операционной системыБуткиты. Что это и зачем?Что это даёт?Возможность использовать неразмеченное пространство жёсткого дискаВозможность получить управление достарта кода операционной системыВозможность изменять ход загрузки ОСPAGE 5|  Yet Another Conference 2011 |  September 19, 2011
Структура жёсткого диска и назначение MBRPAGE 6|  Yet Another Conference 2011 |  September 19, 2011Действия, выполняемые MBR:Поиск загрузочного разделаПроверка сигнатуры AA55hПередача управление в найденный разделСтруктуражёсткого диска в общем случаеMBR1 - ый секторТаблица разделов2 - 63 сектораReservedРаздел 164 - … сектораРаздел 2Раздел n
Начальная загрузка компьютераPAGE 7|  Yet Another Conference 2011 |  September 19, 2011В случае успехаПоиск «активного» разделаЗагрузочный разделMBR
БуткитSinowal, модификация жёсткого дискаPAGE 8|  Yet Another Conference 2011 |  September 19, 2011Структуражёсткого диска после зараженияСтруктуражёсткого диска до зараженияMBRMBR1 - ый сектор1 - ый секторТаблица разделовТаблица разделов2 - 63 сектораReserved2 - 63 сектораReservedРаздел 164 - … сектораРаздел 164 - … сектораРаздел 2Оригинальный MBRКод буткитаДрайвер буткитаРаздел 2Раздел nРаздел nНеразмеченное пространство
Полный алгоритм работы буткит компоненты SinowalPAGE 9|  Yet Another Conference 2011 |  September 19, 2011Структура заражённого жёсткого дискаСтруктура физической памятиЗаражённый MBR0x0000IDTТаблица разделов0x0400ReservedBIOS Data0x0600Раздел 1MBR0x08000x7C00Раздел 2Считанный BIOS`омMBRРаздел n0x7E00Оригинальный MBRНеразмеченное пространство, занятое данными буткита0x8000Код буткита0x90000x9F40Код буткита
Основные действия буткитаPAGE 10|  Yet Another Conference 2011 |  September 19, 2011	Дальнейшие действия, выполняемые буткитом:Перехват Int 13h в IDTПерехват управления в ntbootdd.sys после BlLoadBootDriversПоиск базы ntoskrnlи перехват в нём IoInitSystemЗачитывание драйвера буткита из неразмеченной области в выделенную виртуальную памятьЗапуск драйвера с помощью ZwCreateSystemThread
Что в итоге?PAGE 11|  Yet Another Conference 2011 |  September 19, 2011Осуществлён запуск вредоносного кода в ring0Запуск кода буткита осуществляется сразу же после инициализации системыВредоносный код исполняется вне какого-либо процессаКод буткита располагается вне файловой системы
Буткит, подключающий нулевые виртуальные адреса и повышающий уровень привилегий
БуткитTrup - особенностиPAGE 13|  Yet Another Conference 2011 |  September 19, 2011В чём сложность?Работа с низкоуровневыми структурами, отвечающими за организацию виртуальной памяти
Добавление элементов в глобальную таблицу дескрипторовБуткитTrup - особенностиPAGE 14|  Yet Another Conference 2011 |  September 19, 2011Что это даёт?Возможность обращаться к физической памяти по искусственно заблокированным виртуальным адресамВозможность повышать привилегии путём перехода из ring3 в ring0 с помощью шлюза вызова
Виртуальная память в Windows PAGE 15|  Yet Another Conference 2011 |  September 19, 2011Разбиение адресного пространства в системах Windows NT (32-бит)Назначение раздела адресного пространства0x00000000 – 0x0000FFFFДля выявления нулевых указателей0x00010000 – 0x7FFEFFFFДля кода и данных ring 3Для выявления некорректных указателей0x7FFF0000 – 0x7FFFFFFF0x80000000 – 0xFFFFFFFFДля кода и данных ring 0
Физическая память в Windows PAGE 16|  Yet Another Conference 2011 |  September 19, 2011Распределения начальных адресов физической памяти при инициализацииWindows0x0000old IDT0x0400BIOS Data0x0600MBR0x08000x7C00MBR / Boot Sector0x7E00Код буткитаКод буткита недоступен из Windows, как из ring0, так и из ring3
Виртуальный адрес -> логический адресPAGE 17|  Yet Another Conference 2011 |  September 19, 2011СмещениеСелектор (16 – бит)Таблица дескрипторов32 – битный логический адрес+Дескриптор
Логический адрес -> физический адресPAGE 18|  Yet Another Conference 2011 |  September 19, 2011Логический адрес (32 – бит)СмещениеКаталогТаблицаЗапись nЗапись 2Запись 1Запись nЗапись 2Запись 1+32 – битный физический адресМодификация записи буткитомCR3
Ring 3 -> ring 0 из «пользовательского» режимаPAGE 19|  Yet Another Conference 2011 |  September 19, 2011Глобальная таблица дескрипторовRing 3Дескриптор кода, DPL = 0Шлюз вызова,   DPL = 3Дескриптор nRing 0Дескриптор 1Всегда нулевой
Что же в итоге?PAGE 20|  Yet Another Conference 2011 |  September 19, 2011Код буткита использовал неотображённую область физической памятиВредоносное приложение, запущенное под ring3 безболезненно переходит в ring0
Полиморфный EPO-вирус с собственной виртуальной машиной
PAGE 22|  Yet Another Conference 2011 |  September 19, 2011Особенности рассматриваемого файлового вирусаФайловый вирус – вредоносная программа, модифицирующаяисполняемый файл таким образом, что к его оригинальной функциональности добавляется вредоносная составляющаяВ чём сложность рассматриваемого вируса?Применяется техника EPO (entry point obscuring)
Отсутствие статичных сигнатур вируса
Не производится изменений характеристик секций
Часть кода вируса меняется от поколения к поколению
Присутствует виртуальная машина с собственным P-кодомPAGE 23|  Yet Another Conference 2011 |  September 19, 2011Особенности рассматриваемого файлового вирусаЧто это даёт?Возможность выполнять вредоносные действия в контексте доверенной программыПрименение собственной виртуальной машины и EPO-техники значительно затрудняет обнаружение заражённых файлов
Типовой вариант файлового вирусаPAGE 24|  Yet Another Conference 2011 |  September 19, 2011Тот же самый файл после зараженияТиповой PE-файл до зараженияheaderheaderEP.code.code.data.data.rsrc.rsrcEPТело вирусаИзменены PE-заголовок, последняя секция, характеристики последней секции
Схема заражения исполняемого файла исследуемым вирусомPAGE 25|  Yet Another Conference 2011 |  September 19, 2011Тот же самый файл после зараженияТиповой PE-файл до зараженияheaderheaderEP.codeEP.code.data.data.data – данные вируса.rsrcТочка входа и характеристики секции не изменяется.rsrc
Модификация функций оригинального файла вирусомPAGE 26|  Yet Another Conference 2011 |  September 19, 2011Модификация отдельных функций
Модификация переходов в оригинальном файле вирусомPAGE 27|  Yet Another Conference 2011 |  September 19, 2011Модификация отдельных переходов

Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав Закоржевский, Kaspersky Lab

  • 1.
    Сложнейшие техники, применяемыебуткитами и полиморфными вирусамиVyacheslav Zakorzhevsky, Senior Malware Analyst, Kaspersky Lab19 сентября 2011 / Yet Another Conference, Yandex
  • 2.
    Обзор выступленияPAGE 2| Yet Another Conference 2011 | September 19, 2011Современное вредоносное ПО уже давно перешло из разряда «поделок» в категорию «сложных программ»В чём сложность?Зачем?Как?
  • 3.
    Буткиты. Чем страшны,как работают и что делают?
  • 4.
    Буткиты. Что этои зачем?PAGE 4| Yet Another Conference 2011 | September 19, 2011Буткит – вредоносная программа, модифицирующая MBR жёсткого дискаВ чём сложность?Работа на низком уровне с жёстким диском и оперативной памятью
  • 5.
  • 6.
    Внедрение в стартовыйкод операционной системыБуткиты. Что это и зачем?Что это даёт?Возможность использовать неразмеченное пространство жёсткого дискаВозможность получить управление достарта кода операционной системыВозможность изменять ход загрузки ОСPAGE 5| Yet Another Conference 2011 | September 19, 2011
  • 7.
    Структура жёсткого дискаи назначение MBRPAGE 6| Yet Another Conference 2011 | September 19, 2011Действия, выполняемые MBR:Поиск загрузочного разделаПроверка сигнатуры AA55hПередача управление в найденный разделСтруктуражёсткого диска в общем случаеMBR1 - ый секторТаблица разделов2 - 63 сектораReservedРаздел 164 - … сектораРаздел 2Раздел n
  • 8.
    Начальная загрузка компьютераPAGE7| Yet Another Conference 2011 | September 19, 2011В случае успехаПоиск «активного» разделаЗагрузочный разделMBR
  • 9.
    БуткитSinowal, модификация жёсткогодискаPAGE 8| Yet Another Conference 2011 | September 19, 2011Структуражёсткого диска после зараженияСтруктуражёсткого диска до зараженияMBRMBR1 - ый сектор1 - ый секторТаблица разделовТаблица разделов2 - 63 сектораReserved2 - 63 сектораReservedРаздел 164 - … сектораРаздел 164 - … сектораРаздел 2Оригинальный MBRКод буткитаДрайвер буткитаРаздел 2Раздел nРаздел nНеразмеченное пространство
  • 10.
    Полный алгоритм работыбуткит компоненты SinowalPAGE 9| Yet Another Conference 2011 | September 19, 2011Структура заражённого жёсткого дискаСтруктура физической памятиЗаражённый MBR0x0000IDTТаблица разделов0x0400ReservedBIOS Data0x0600Раздел 1MBR0x08000x7C00Раздел 2Считанный BIOS`омMBRРаздел n0x7E00Оригинальный MBRНеразмеченное пространство, занятое данными буткита0x8000Код буткита0x90000x9F40Код буткита
  • 11.
    Основные действия буткитаPAGE10| Yet Another Conference 2011 | September 19, 2011 Дальнейшие действия, выполняемые буткитом:Перехват Int 13h в IDTПерехват управления в ntbootdd.sys после BlLoadBootDriversПоиск базы ntoskrnlи перехват в нём IoInitSystemЗачитывание драйвера буткита из неразмеченной области в выделенную виртуальную памятьЗапуск драйвера с помощью ZwCreateSystemThread
  • 12.
    Что в итоге?PAGE11| Yet Another Conference 2011 | September 19, 2011Осуществлён запуск вредоносного кода в ring0Запуск кода буткита осуществляется сразу же после инициализации системыВредоносный код исполняется вне какого-либо процессаКод буткита располагается вне файловой системы
  • 13.
    Буткит, подключающий нулевыевиртуальные адреса и повышающий уровень привилегий
  • 14.
    БуткитTrup - особенностиPAGE13| Yet Another Conference 2011 | September 19, 2011В чём сложность?Работа с низкоуровневыми структурами, отвечающими за организацию виртуальной памяти
  • 15.
    Добавление элементов вглобальную таблицу дескрипторовБуткитTrup - особенностиPAGE 14| Yet Another Conference 2011 | September 19, 2011Что это даёт?Возможность обращаться к физической памяти по искусственно заблокированным виртуальным адресамВозможность повышать привилегии путём перехода из ring3 в ring0 с помощью шлюза вызова
  • 16.
    Виртуальная память вWindows PAGE 15| Yet Another Conference 2011 | September 19, 2011Разбиение адресного пространства в системах Windows NT (32-бит)Назначение раздела адресного пространства0x00000000 – 0x0000FFFFДля выявления нулевых указателей0x00010000 – 0x7FFEFFFFДля кода и данных ring 3Для выявления некорректных указателей0x7FFF0000 – 0x7FFFFFFF0x80000000 – 0xFFFFFFFFДля кода и данных ring 0
  • 17.
    Физическая память вWindows PAGE 16| Yet Another Conference 2011 | September 19, 2011Распределения начальных адресов физической памяти при инициализацииWindows0x0000old IDT0x0400BIOS Data0x0600MBR0x08000x7C00MBR / Boot Sector0x7E00Код буткитаКод буткита недоступен из Windows, как из ring0, так и из ring3
  • 18.
    Виртуальный адрес ->логический адресPAGE 17| Yet Another Conference 2011 | September 19, 2011СмещениеСелектор (16 – бит)Таблица дескрипторов32 – битный логический адрес+Дескриптор
  • 19.
    Логический адрес ->физический адресPAGE 18| Yet Another Conference 2011 | September 19, 2011Логический адрес (32 – бит)СмещениеКаталогТаблицаЗапись nЗапись 2Запись 1Запись nЗапись 2Запись 1+32 – битный физический адресМодификация записи буткитомCR3
  • 20.
    Ring 3 ->ring 0 из «пользовательского» режимаPAGE 19| Yet Another Conference 2011 | September 19, 2011Глобальная таблица дескрипторовRing 3Дескриптор кода, DPL = 0Шлюз вызова, DPL = 3Дескриптор nRing 0Дескриптор 1Всегда нулевой
  • 21.
    Что же витоге?PAGE 20| Yet Another Conference 2011 | September 19, 2011Код буткита использовал неотображённую область физической памятиВредоносное приложение, запущенное под ring3 безболезненно переходит в ring0
  • 22.
    Полиморфный EPO-вирус ссобственной виртуальной машиной
  • 23.
    PAGE 22| Yet Another Conference 2011 | September 19, 2011Особенности рассматриваемого файлового вирусаФайловый вирус – вредоносная программа, модифицирующаяисполняемый файл таким образом, что к его оригинальной функциональности добавляется вредоносная составляющаяВ чём сложность рассматриваемого вируса?Применяется техника EPO (entry point obscuring)
  • 24.
  • 25.
    Не производится измененийхарактеристик секций
  • 26.
    Часть кода вирусаменяется от поколения к поколению
  • 27.
    Присутствует виртуальная машинас собственным P-кодомPAGE 23| Yet Another Conference 2011 | September 19, 2011Особенности рассматриваемого файлового вирусаЧто это даёт?Возможность выполнять вредоносные действия в контексте доверенной программыПрименение собственной виртуальной машины и EPO-техники значительно затрудняет обнаружение заражённых файлов
  • 28.
    Типовой вариант файловоговирусаPAGE 24| Yet Another Conference 2011 | September 19, 2011Тот же самый файл после зараженияТиповой PE-файл до зараженияheaderheaderEP.code.code.data.data.rsrc.rsrcEPТело вирусаИзменены PE-заголовок, последняя секция, характеристики последней секции
  • 29.
    Схема заражения исполняемогофайла исследуемым вирусомPAGE 25| Yet Another Conference 2011 | September 19, 2011Тот же самый файл после зараженияТиповой PE-файл до зараженияheaderheaderEP.codeEP.code.data.data.data – данные вируса.rsrcТочка входа и характеристики секции не изменяется.rsrc
  • 30.
    Модификация функций оригинальногофайла вирусомPAGE 26| Yet Another Conference 2011 | September 19, 2011Модификация отдельных функций
  • 31.
    Модификация переходов воригинальном файле вирусомPAGE 27| Yet Another Conference 2011 | September 19, 2011Модификация отдельных переходов