Ковыряем формат баз ClamAV

ClamAV – антивирусный пакет с открытым исходным кодом, зачастую использовался как кодовая база во времена расцвета fake-av темы.

Разумеется, рассматривать clamav как угрозу довольно абсурдно, антивирус имеет отрытый формат хранения сигнатур – его чистку может производить даже скрипт на питоне.

Скачать clamav вместе с GUI можно тут http://ru.clamwin.com

Распаковка базы

Базы можно скачать на сайте clamav или через вышеназванный GUI.

Из ClamWin нам понадобиться утилита sigtool.exe

Запускаем sigtool.exe -u daily.cvd

И получаем распакованную базу, также старые распакованные базы можно посмотреть здесь.

Формат сигнатур

Старые форматы
  1. MD5:Size:MalwareName
  2. PESectionSize:MD5:MalwareName
  3. MalwareName:TargetType:Offset:HexSignature

Где TargetType  один из

0 = Any file type
1 = Windows PE
2 = OLE (e.g. Office, VBA)
3 = Normalized HTML
4 = E-mail file (e.g. RFC822 message, TNE
5 = Image files (e.g. jpeg, png)
6 = ELF
7 = Normalized ASCII file
8 = Unused
9 = Mach-O binaries (new in v0.96)

Например

TestHelloWorld:0:*:68656c6c6f20776f726c64
Рассмотрим реальные сигнатуры
PUA.PDF.LaunchActionObject-1:0:0:255044462d*6f626a{-2}3c3c(0d|0a|2f|20|28|3c)
MalwareNamePUA.PDF.LaunchActionObject-1
TargetType0 (любой файл)
Offset0

Теперь рассмотрим сигнатуру по частям:

255044462d*6f626a255044462d затем любое количество байт и 6f626a
6f626a{-2}3c3c6f626a от нуля до 2 байт пропуск и 3c3c
2f416374696f6e(0d|0a|2f|20|28|3c)2f416374696f6e и либо байт 0d либо 0a любо 2f и т.д.

Рассмотрим ещё одну особенность:

PUA.Packed.NPack-2:1:EP+0:9c60e8000000005d83ed078d??????????8039010f??????0000
TargetType1 (Windows PE)
OffsetEP+0, что значит EntryPoint + 0 байт.
78d??????????80?? обозначает любой байт, 0? пол байта

B ещё одну:

PUA.HTML.Crypt-5:3:*:6e3030322e6c656e6774683b77
TargetType3 (Normalized HTML)
Offset*  – любое место в файле

Новые форматы

Появились начиная с версии  0.94

  • SignatureName;TargetDescriptionBlock;LogicalExpression;Subsig0;Subsig1;Subsig2;…

Логические сигнатуры – новый тип, учитывает расположение (и существование) бинарных строк в файле

Например сигнатура

(“iexplore” | “explorer.exe”) & (“WriteProcessMemory” & “CreateRemoteThread” & “SeDebugPrivilege”)

будет выглядеть так:

ProcessInjector;Target:1;(0|1)&(2&3&4);696578706c6f72652e6578\
65;6578706c6f7265722e657865;53654465627567507\
26976696c656765;43726561746552656d6f746554687\
2656164;577269746550726f636573734d656d6f7279
  • Whitelisting
MD5:FileSize:Comment

Начиная с 3 января ClamAv меняет формат базы на YARA

Добавить комментарий