Описание отчета Shark режима сканера

Материал из wiki.drweb.com
Перейти к: навигация, поиск
******************************************** SHARK REPORT *********************************************

Shark режим актуален только для x86 систем (на x64 он отсутствует). Активируется запуском сканера с ключом /shark (drweb32w.exe /shark).

Processes IAT/EAT/Splicing

Проверка импортов (IAT)/экспортов (EAT)/перехвата кода (Splicing) в процессах и загруженных в них dll. Для каждой dll, спроецированной в адресное пространство процесса и самого образа (.exe) осуществляется проверка импортируемой, экспортируемой таблиц адресов и секций с кодом. Наличие информации в этой секции говорит о том, что какой-то код (легальный или руткит) внес изменения в выполнение программы. Например,


[IAT CHECKING] Process: 1440 (explorer.exe) FUNCTION explorer.exe->KERNEL32.dll!GetProcAddress HOOKED 5CB77774 (C:\WINDOWS\system32\shimeng.dll)
[IAT CHECKING] Process: 1440 (explorer.exe) FUNCTION netapi32.dll->KERNEL32.dll!GetProcAddress HOOKED 5CB77774 (C:\WINDOWS\system32\shimeng.dll)
[IAT CHECKING] Process: 1440 (explorer.exe) FUNCTION uxtheme.dll->KERNEL32.dll!GetProcAddress HOOKED 5CB77774 (C:\WINDOWS\system32\shimeng.dll)
Библиотека shimeng.dll перехватила элемент IAT (GetProcAddress) в каждом модуле, который импортирует библиотеку kernel32.dll. shimeng.dll - библиотека MS.


[SPLICING CHECKING] Process: 1048 (svchost.exe) MODULE: C:\WINDOWS\system32\mswsock.dll SECTION: .text ADDRESS: 71A54057 COUNT: 5 => JMP 047F000C (unknown)
[SPLICING CHECKING] Process: 1048 (svchost.exe) MODULE: C:\WINDOWS\system32\mswsock.dll SECTION: .text ADDRESS: 71A5433A COUNT: 5 => JMP 0478000C (unknown)
[SPLICING CHECKING] Process: 1048 (svchost.exe) MODULE: C:\WINDOWS\system32\mswsock.dll SECTION: .text ADDRESS: 71A5583F COUNT: 5 => JMP 047E000C (unknown)
[SPLICING CHECKING] Process: 1364 (explorer.exe) MODULE: C:\WINDOWS\system32\mswsock.dll SECTION: .text ADDRESS: 71A54057 COUNT: 5 => JMP 00B7000C (unknown)
[SPLICING CHECKING] Process: 1364 (explorer.exe) MODULE: C:\WINDOWS\system32\mswsock.dll SECTION: .text ADDRESS: 71A5433A COUNT: 5 => JMP 00B5000C (unknown)
Явный признак руткита, сплайсинг в библиотеке mswsock.dll в процессах svchost.exe и explorer.exe (на системе, зараженной TDL3).


Drivers IAT/EAT/Splicing

Проверка импортов (IAT)/экспортов (EAT)/перехвата кода (Splicing) в драйверах, системных модулях.
Например,


[SPLICING CHECKING] Driver: c:\windows\system32\vmx_fb.dll SECTION: .text ADDRESS: BF9B9ED0 COUNT: 5 => JMP F83B59A0 (siwvid.sys)
[SPLICING CHECKING] Driver: c:\windows\system32\vmx_fb.dll SECTION: .text ADDRESS: BF9BA01C COUNT: 5 => JMP F83B59D6 (siwvid.sys)
Драйвер vmx_fb.dll имеет в секции .text сплайсинг из 5 байт. По поведению, похоже на руткит (siwvid.sys - видео-драйвер SoftICE).
В случае с работающим verifier, у драйверов, которые добавлены для проверки будут перехвачены импорты. В таком случае, это так же не следствие действий руткита.


[IAT CHECKING] Driver: C:\WINDOWS\System32\drivers\ntfs.sys FUNCTION ntoskrnl.exe!KeReleaseMutant HOOKED 8063DD2D (\WINDOWS\system32\ntoskrnl.exe)
[IAT CHECKING] Driver: C:\WINDOWS\System32\drivers\ntfs.sys FUNCTION ntoskrnl.exe!KeWaitForSingleObject HOOKED 8063DC6C (\WINDOWS\system32\ntoskrnl.exe)
В данном случае verifier настроен на проверку ntfs.sys. В результате, у него в IAT функции ядра (ntoskrnl) перехвачены, но ведут в то же ядро, только в другие функции.


[SPLICING CHECKING] Driver: C:\WINDOWS\System32\drivers\atapi.sys SECTION: .text ADDRESS: BAF5D9C8 COUNT: 4
[SPLICING CHECKING] Driver: C:\WINDOWS\System32\drivers\atapi.sys SECTION: .text ADDRESS: BAF5DBD5 COUNT: 4
Очень подозрительная модификация драйвера atapi.sys.


[SPLICING CHECKING] Driver: c:\windows\system32\win32k.sys SECTION: .text ADDRESS: BF8213A9 COUNT: 5 => JMP F93DC69F (\SystemRoot\System32\Drivers\Normandy.SYS)
Безусловный переход в секции .text у user&gdi модуля win32k.sys. Переход ведет в normandy.sys.


У драйверов, как и у процессов возможны множественные сплайсинги, например, если одна из секций, или весь файл упакованы.
Определение перехватов сплайсинга/IAT/EAT как у драйверов так и у процессов может показать, насколько легальными методами пользуется ПО для своей работы.


SSDT

SSDT (System Service Descriptor Table).
Проверка модификации SSDT таблицы.

Формат:
ID: номер_сервиса NAME: имя_сервиса ADDRESS: адрес_обработчика HOOKED: 1-перехвачен, 0-нет PATH: путь_к_модулю_либо_unknown

Пример,

ID: 001 NAME: NtAccessCheck ADDRESS: 805E6DB6 HOOKED: 0 PATH: C:\WINDOWS\system32\ntkrnlpa.exe
индекс в таблице, имя сервиса, адрес обработчика, перехвачен?, путь к модулю
В данном случае перехвата нет, адрес указывает на стандартный обработчик в ntkrnlpa.exe (PAE-версия ntoksrnl).


В случае с перехватом,
ID: 001 NAME: NtAccessCheck ADDRESS: FF60F325 HOOKED: 1 PATH: C:\WINDOWS\system32\sysdrv.sys


Установка перехвата в SSDT один из самых легких способов, которым пользуются руткиты.

Shadow SSDT

Проверка модификации Shadow SSDT таблицы. Формат вывода тот же самый, что и в секции SSDT.


IDT

Проверка таблицы векторов прерываний.

Формат

IDT: номер_вектора CPU NO: номер_cpu ADDRESS: адрес_обработчика SYSINT: зарегистрирован_объект_прерывания HOOKED: 1 - перехвачен, 0 - нет PATH: путь_к_обработчику_или_unknown

Не перехваченый элемент имеет вид:
IDT: 098 CPU NO: 001 ADDRESS: F975267E SYSINT: 1 HOOKED: 0 PATH: C:\WINDOWS\system32\drivers\atapi.sys

Перехваченный:
IDT: 001 CPU NO: 001 ADDRESS: F9C1C676 SYSINT: 0 HOOKED: 1 PATH: C:\WINDOWS\system32\drivers\cpthook.sys

Как и в случае с SSDT, перехват определяется флагом HOOKED.

Kernel callbacks

Список callback-функций, которые NT вызывает для уведомления модулей о различных событиях в ядре, например, уведомление о выполнении операций с реестром, завершение работы.

Например,
CALLBACK: CreateProcess ADDRESS: F9BAD428 PATH: c:\windows\system32\drivers\vmdebug.sys
CALLBACK: BugCheck ADDRESS: 806D77CC PATH: C:\windows\system32\hal.dll
CALLBACK: BugCheckReason ADDRESS: F9E78AB8 PATH: c:\windows\system32\drivers\mssmbios.sys
CALLBACK: CmRegistry ADDRESS: F96F81F6 PATH: C:\Program Files\DrWeb\dwprot.sys
CALLBACK: FsCallback ADDRESS: F970E876 PATH: C:\WINDOWS\system32\drivers\sr.sys
CALLBACK: SeFileSystem ADDRESS: F7FCC3CF PATH: c:\windows\system32\drivers\mrxsmb.sys

Драйвер vmdebug.sys зарегистрирован на уведомление о создании процесса (CALLBACK: CreateProcess), hal.dll на уведомлении о BSOD (CALLBACK: BugCheck), dwprot.sys на операции с реестром.
В случае, если зарегистрирован неизвестный компонент, т. е. код, который не входит ни в один модуль, в элементе PATH: информация не выводится и такая ситуация считается подозрительной.

Loaded drivers

Загруженные драйверы.

Формат вывода:
ADDRESS: адрес_в_памяти EP: точка_входа SIZE: размер OBPATH: путь_у_диспетчера_объектов PATH: путь_к_файлу (проверка_подписи)

Например,

ADDRESS: BA4A9000 EP: BA52E904 SIZE: 0008D000 OBPATH: \FileSystem\Ntfs PATH: C:\WINDOWS\system32\drivers\ntfs.sys (STATUS: MS_TRUSTED, DESCR: NT File System Driver, COMPANY: Microsoft Corporation, VER: 5.1.2600.5585 (xpsp_sp3_qfe.080422-1455), MD5: A0857C97770034FD2AF17DC4014B5ABD, SHA1: 9585A4844C39D4E4C61EE8BD490D8D20E70FE7F3, SHA256: 3A325399DD8A384F1EEB2340FB5CA54FCE7360C9A02E8ADB6DE2EF3CFD805A92)

Информация о проверке подписи, хешей, доверенности:

  • STATUS: - статус доверенности. Статусы бывают:
    • MS_TRUSTED - высшая степень. Это значит что файл от Microsoft.
    • TRUSTED - файл с сертификатом из списка доверенных издателей.
    • NOT TRUSTED - файл с недоверенным сертификатом
  • SIGNER: - организация, выдавшая сертификат
  • DESCR: - описание файла
  • COMPANY: - организация, указанная в качестве владельца драйвера
  • VER: - версия драйвера
  • MD5: Хеш MD5. Подробнее, см. MD5
  • SHA1: Хеш SHA-1. Подробнее, см. SHA-1

По хешам MD5, SHA1 и SHA256 можно проверить драйвер на Virustotal по ссылке http://www.virustotal.com/search.html

Drivers dispatches

Расширенная информация о драйверах и системных dll. В том числе, рабочие процедуры драйверов (driver dispatch), имена их сервисов.

Например,

OBPATH: \FileSystem\Cdfs SERVICE: Cdfs PATH: c:\windows\system32\drivers\cdfs.sys
IRP_MJ_CREATE => cdfs.sys+400 (F9BEC400)
IRP_MJ_CREATE_NAMED_PIPE => ntkrnlpa.exe!IoVolumeDeviceToDosName+68E (804F354A)
IRP_MJ_CLOSE => cdfs.sys+400 (F9BEC400)
IRP_MJ_READ => cdfs.sys+400 (F9BEC400)
Информация о драйвере cdfs.sys, путь в пространстве имен диспетчера объектов, имя сервиса, полный путь к файлу и обработчики первых четырех функций.

В случае, если системный модуль загружен в память, но для него отсутствует объект-драйвера (скорее всего это dll, которую используют другие драйверы), информация имеет такой вид:
OBPATH: <:unknown:> SERVICE: <:unknown:> PATH: C:\windows\system32\kdcom.dll
OBPATH: <:unknown:> SERVICE: <:unknown:> PATH: C:\windows\system32\bootvid.dll


Object types

Информация об объектах типов и их функциях, которые NT вызывает в различных ситуациях, например, при создании или высвобождении объекта. Функции часто перехватываются как руткитами, так и антируткитами.
Формат:
ID: номер ADDRESS: адрес NAME: имя_типа, далее различные процедуры.

Например,
ID: #1 ADDRESS: 819C8900 NAME: Desktop
OPENPROC: 0x806037D6 (ntkrnlpa.exe!ExInitializePagedLookasideList+248 (806037D6))
CLOSEPROC: 0x806036B4 (ntkrnlpa.exe!ExInitializePagedLookasideList+126 (806036B4))
DELPROC: 0x8060378C (ntkrnlpa.exe!ExInitializePagedLookasideList+1FE (8060378C))
SECURPROC: 0x805EE42E (ntkrnlpa.exe!SeQuerySecurityDescriptorInfo+2E4 (805EE42E))
OKAYCLOSEPROC: 0x8060371A (ntkrnlpa.exe!ExInitializePagedLookasideList+18C (8060371A))
Функции объекта Desktop (рабочий стол) указывают в ядро, ничего подозрительного. На "чистой" системе все процедуры всех объектов указывают в ядро.


Running processes & modules

Отображение запущенных процессов и модулей

В этом разделе перечислены все запущенные процессы и используемые ими модули. Разберем на примере:
PID: 00001516 EPROCESS: 8851C728 PATH: C:\WINDOWS\system32\services.exe (STATUS: MS_TRUSTED, DESCR: Приложение служб и контроллеров, COMPANY: Корпорация Майкрософт, VER: 5.1.2600.5755 (xpsp_sp3_qfe.090206-1316), MD5: 0AF0D6AF45220ADB9C30B33CFEC41831, SHA1: BCBD377ABD8C4DF039E5048E681FFC91CEBEEA3F, SHA256: 06837569216ACB99CB79F1E3475913AF8760AE7BAFA3F279233D51178D72EF19) IMAGEBASE: 7C800000 SIZE: 00000000000F8000 PATH: c:\windows\system32\kernel32.dll (STATUS: MS_TRUSTED, DESCR: Библиотека клиента Windows NT BASE API, COMPANY: Корпорация Майкрософт, VER: 5.1.2600.5781 (xpsp_sp3_gdr.090321-1317), MD5: 7A163D793AF7208E13B0F33864D36438, SHA1: 78879B9B7DEB5B88A9B492597B1664B34065BFA8, SHA256: 880EDB25D52A608B522B175AB11B8CA4FBE1A174EAF5908F9A360AC6F4131A6B)

Где для процесса:

  • PID - PID процесса.
  • PATH - путь к файлу
  • STATUS - см. выше
  • DESCR - описание
  • VER - версия файла

Далее перечислены все модули, используемые процессом. При этом каждому из них соответствует такой же набор описаний.

Running threads and stack

Информация о запущенных потоках и их стеки.
Формат:
ID: порядковый_номер ETHREAD: адрес_объекта_ядра CID(id_процесса.id_потока) STARTADDRESS: стартовый_адрес SYSTHREAD: 1 - системный_поток SDT: адрес_SDT_потока (1 - если перехвачена) PRIORITY: приоритет ISWORKER: 1 - системный_рабочий_поток

ID: #1 ETHREAD: 8179F590 CID(984.1000) STARTADDRESS: kernel32.dll!CreateThread+22 (7C8106E9) SYSTHREAD: 0 SDT: 80552FA0 (HOOKED: 0) PRIORITY: 8 ISWORKER: 0
ntkrnlpa.exe!IoSetIoCompletion+2C9 (8056E1B1)
ntkrnlpa.exe!KeReleaseInStackQueuedSpinLockFromDpcLevel+B14 (8053D638)
ntdll.dll!NtRemoveIoCompletion+C (7C90DA2C)
ntdll.dll!RtlAllocateHeap+1C9 (7C91026D)
kernel32.dll!GetModuleFileNameA+1B4 (7C80B713)

В данном случае аномальностью считается перехваченая SDT, т. е. HOOKED: 1 и присутствие на стеке строки unknown вместо имени модуля.


Hidden process modules

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

Hidden code in kernel memory

Анализатор скрытого кода в памяти ядра. В нормальном режиме здесь ничего не должно отображаться.

Network connections

Информация о сетевых соединениях

LOCAL ADDR: 0.0.0.0 LOCAL PORT: 135 REMOTE ADDR: 0.0.0.0 REMOTE PORT: 4117 STATE: LISTEN PID: 796 PATH: c:\windows\system32\svchost.exe (STATUS: MS_TRUSTED, DESCR: Generic Host Process for Win32 Services, COMPANY: Microsoft Corporation, VER: 5.2.3790.3959 (srv03_sp2_rtm.070216-1710), MD5: C09CCFE81DEC9B162533D7184D705682, SHA1: 086FC8C82BA9E1F3F764E15FFBE402A6529EF323, SHA256: 7FFA8F0DB61522E7BE3FF5A380F16644E72ADD873A8A9E4AC01A5FF376910525)

Где:

  • LOCAL ADDR - локальный адрес
  • LOCAL PORT - локальный порт
  • REMOTE ADDR - удаленный адрес
  • REMOTE PORT - удаленный порт
  • STATE - состояние соединения
  • PID - PID процесса

Остальное см. выше.

Autoruns

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

Пример:
PATH: c:\windows\system32\drivers\fs_rec.sys (STATUS: MS_TRUSTED, DESCR: File System Recognizer Driver, COMPANY: Microsoft Corporation, VER: 5.2.3790.0 (srv03_rtm.030324-2048), MD5: AEBFF3D810B74971B91B2B77B289A98B, SHA1: 829C2DEB5BCD4BACC004B03703BA93923E61F176, SHA256: E2A63B0BEF3E09000A3AD2564D211D8A9EDACD74BDC949AE2F3BD79C0210AA9B)
REGS:
HKLM\System\CurrentControlSet\Services\Fs_Rec, Start
В начале указывается полный путь к модулю (PATH:), далее информация о подписи и в конце, в параметре REGS: разделы реестра, в которых прописан этот модуль, веток может быть несколько.


Disks MBRs

Проверка MBR у дисков.

Пример:
Disk: \\.\PhysicalDrive0 - MBR OK
Disk: \\.\PhysicalDrive1 - MBR OK

Anomalies analyzer

"Анализатор ненормальностей"

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

Лог Shark режима заканчивается строкой

*******************************************************************************************************