From ef9c6b65ec76e6a8c9d0b4a771ebd764aa2bc327 Mon Sep 17 00:00:00 2001 From: Tomasz Kojm Date: Wed, 6 May 2009 13:47:25 +0000 Subject: [PATCH] docs/signatures.pdf: describe logical signatures; other minor improvements (bb#1582) git-svn: trunk@5066 --- ChangeLog | 5 +++ docs/signatures.pdf | Bin 29229 -> 35952 bytes docs/signatures.tex | 98 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 92 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 13d95b0fb..c24d8cb74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed May 6 15:43:27 CEST 2009 (tk) +---------------------------------- + * docs/signatures.pdf: describe logical signatures; + other minor improvements (bb#1582) + Wed May 6 14:30:51 EEST 2009 (edwin) ------------------------------------- * configure, configure.in: add -fno-strict-aliasing, so that diff --git a/docs/signatures.pdf b/docs/signatures.pdf index bbcca6813076fbd2bd69a3b6e27b0aebb7472217..ff44dd717c47d7e23150add47fff8ef3cf97d255 100644 GIT binary patch literal 35952 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 literal 29229 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

5|d1Y%;|tdc^IntOB8cQ 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

vfL1lN@lT4oBy{Fv*1LP|gTN2I@j zLBbr!Fb4{d3F2VxUQ`;1Xh-oNJ37$-m~a>n;s~BjD{!u`u~j%#s1)L#VKTz{f3gq^ z{p>%6xdI78(Mx(9iA763w1YVh_NRgA=n)u5{W+3 z+|g(>6XH#<7V7(X!rY$v_798YOPWm18#mfZZ}gPjSRXrHtJ3+Lt@P?du=M65M;wT> z$e2UT-G=kwlu|aa9O_5^r_kz3 zJH_h}o|F4`?OMN{X&_X8k{(rl-_4qF)m~`?%h&T?vOBD=w=6gW68B4T@&|m~2=>k- z8rY8HNOo0#j2D$cz+|EV#0;Yk*LPDTIgz!1_i>E<4NUC)o$Y0akOPV!`2z%C;Y5P^ z65OB;j4$_if&rUQ5LU(OX$aFB_{#daxVZpn1=!bx;_4~us{mnikp+I!$uJ0*(S+u# z06DC01g24`6lXFGjFgg*LO>Cy{a^z0>p_% zbCZR^e0+SQd{9zU4@Ve6Mn(n(N5YUuD9{4x>E}u#_(EMh_X6WFfRGRW?B?nz#lR$G zPj!Kj55o{raM*sE_4eexasT5s!{E|T!3(=t@aP~|36e2(f%h)H!lwg!^Da9FcO7CN8|}; z4FTXJ+RHjnJzNNYff9a+6b4uqL=kw8PL@WdQAmmm2U4cce*B=2=?)=FA-Fm!KzyM@ zk^{kuLW2ORVYCLe%B72+LRS3ogV7K6i`O5N!yo|;3g`*;)BP1e;Q!Iz|BlhGmtw^&mNbfRY#%M2{^${^(a_poZW8{y{?mmt|ntNB;x6F4LrO^oqjoG&G9-&c*LE z6r7%l|3(82=ryO`X(%K;^Zbp5L}Tbnx8G?PEPZ9ZiiV>v`Bu?T^m~r0Xh9!_052991(_?;gbx5f^TD6GtC zeE|H{$R2?~(ck%5#ZLyl#tzUj^vc)o?NGQi`UUvWQ{dm)A*8YNO73qoBw9vhwLXv- zIK4cwsvUgId;xxIF~f260?zM!F>smHazHN2MIElHp@vaY e{O>KS>Gdg38o`6c2y{qk84Ly_DynX%0s242RPiPN diff --git a/docs/signatures.tex b/docs/signatures.tex index a8a994f9b..2d835ce8e 100644 --- a/docs/signatures.tex +++ b/docs/signatures.tex @@ -102,7 +102,7 @@ How do I look in hex? \item \verb+??+\\ Match any byte. \item \verb+a?+\\ - Match a high nibble (the four high bits). \textbf{IMPORTANT NOTE:} + Match a high nibble (the four high bits).\\ \textbf{IMPORTANT NOTE:} The nibble matching is only available in libclamav with the functionality level 17 and higher therefore please only use it with .ndb signatures followed by ":17" (MinEngineFunctionalityLevel, @@ -112,11 +112,13 @@ How do I look in hex? \item \verb+*+\\ Match any number of bytes. \item \verb+{n}+\\ - Match n bytes. + Match $n$ bytes. \item \verb+{-n}+\\ - Match n or less bytes. + Match $n$ or less bytes. \item \verb+{n-}+\\ - Match n or more bytes. + Match $n$ or more bytes. + \item \verb+{n-m}+\\ + Match between $n$ and $m$ bytes ($m > n$). \item \verb+(aa|bb|cc|..)+\\ Match aa or bb or cc.. \item \verb+HEXSIG[x-y]aa+ or \verb+aa[x-y]HEXSIG+\\ @@ -149,13 +151,21 @@ MalwareName:TargetType:Offset:HexSignature[:MinEngineFunctionalityLevel:[Max]] the type of the target file: \begin{itemize} \item 0 = any file - \item 1 = Portable Executable - \item 2 = OLE2 component (e.g. a VBA script) - \item 3 = HTML (normalised) + \item 1 = Portable Executable, both 32- and 64-bit. + \item 2 = file inside OLE2 container (e.g. image, embedded executable, + VBA script). The OLE2 format is primarily used by MS Office and MSI + installation files. + \item 3 = HTML (normalized: whitespace transformed to spaces, tags/tag + attributes normalized, all lowercase), Javascript is normalized too: + all strings are normalized (hex encoding is decoded), numbers are + parsed and normalized, local variables/function names are normalized + to 'n001' format, argument to eval() is parsed as JS again, + unescape() is handled, some simple JS packers are handled, + output is whitespace normalized. \item 4 = Mail file \item 5 = Graphics \item 6 = ELF - \item 7 = ASCII text file (normalised) + \item 7 = ASCII text file (normalized) \end{itemize} And \verb+Offset+ is an asterisk or a decimal number \verb+n+ possibly combined with a special modifier: @@ -186,6 +196,72 @@ MalwareName:TargetType:Offset:HexSignature[:MinEngineFunctionalityLevel:[Max]] \noindent All signatures in the extended format must be placed inside \verb+*.ndb+ files. + \subsubsection{Logical signatures}\label{ndb} + Logical signatures allow combining of multiple signatures in extended + format using logical operators. They can provide both more detailed and + flexible pattern matching. The logical sigs are stored inside \verb+*.ldb+ + files in the following format: + \begin{verbatim} +SignatureName;TargetDescriptionBlock;LogicalExpression;Subsig0; +Subsig1;Subsig2;... + \end{verbatim} + where: + \begin{itemize} + \item \verb+TargetDescriptionBlock+ provides information about the + engine and target file with comma separated \verb+Arg:Val+ pairs, + currently (as of 0.95.1) only \verb+Target:X+ and \verb+Engine:X-Y+ + are supported. + \item \verb+LogicalExpression+ specifies the logical expression + describing the relationship between \verb+Subsig0...SubsigN+.\\ + \textbf{Basis clause:} 0,1,...,N decimal indexes are SUB-EXPRESSIONS + representing \verb+Subsig0, Subsig1,...,SubsigN+ respectively.\\ + \textbf{Inductive clause:} if \verb+A+ and \verb+B+ are + SUB-EXPRESSIONS and \verb+X, Y+ are decimal numbers then + \verb+(A&B)+, \verb+(A|B)+, \verb+A=X+, \verb+A=X,Y+, \verb+A>X+, + \verb+A>X,Y+, \verb+AX+: If the SUB-EXPRESSION A refers to a single signature + then this signature must get matched more than X times; if it refers to + a (logical) block of signatures then this block must generate more + than X matches (with any of its sigs). + \item \verb+A>X,Y+: If the SUB-EXPRESSION A refers to a single signature + then this signature must get matched more than X times; if it refers to + a (logical) block of signatures then this block must generate more than + X matches and at least Y different signatures must be matched. + \item \verb+A5,2)&(3|1);6b6f74656b;616c61;7a6f6c77;737 +46566616e + +Sig3;Target:0;((0|1|2|3)=2)&(4|1);6b6f74656b;616c61;7a6f6c77;737 +46566616e;deadbeef + +Sig4;Target:1,Engine:18-20;((0|1)&(2|3))&4;EP+123:33c06834f04100 +f2aef7d14951684cf04100e8110a00;S2+78:22??232c2d252229{-15}6e6573 +(63|64)61706528;S+50:68efa311c3b9963cb1ee8e586d32aeb9043e;f9c58d +cf43987e4f519d629b103375;SL+550:6300680065005c0046006900 + \end{verbatim} + \subsection{Signatures based on archive metadata} Signatures based on metadata inside archive files can provide an effective protection against malware that spreads via encrypted zip or rar @@ -260,7 +336,7 @@ db_name:line_number:signature_name HTML exploits. Running \verb+sigtool --html-normalise+ on a HTML file should generate the following files: \begin{itemize} - \item nocomment.html - the file is normalised, lower-case, with all + \item nocomment.html - the file is normalized, lower-case, with all comments and superflous white space removed \item notags.html - as above but with all HTML tags removed \end{itemize} @@ -270,10 +346,10 @@ db_name:line_number:signature_name be set to 3. \subsection{Text files} - Similarly to HTML all ASCII text files get normalised (converted + Similarly to HTML all ASCII text files get normalized (converted to lower-case, all superflous white space and control characters removed, etc.) before scanning. Use \verb+clamscan --leave-temps+ to obtain - a normalised file then create a signature with the target type 7. + a normalized file then create a signature with the target type 7. \subsection{Compressed Portable Executable files} If the file is compressed with UPX, FSG, Petite or other PE packer