automatic tool for static analysis

33
Automa’c Tool for Sta’c Analysis 2014.09.27 C.K.Chen

Upload: -

Post on 28-Nov-2014

177 views

Category:

Engineering


4 download

DESCRIPTION

How to use ClamAV and Yara

TRANSCRIPT

Automa'c  Tool  for  Sta'c  Analysis

2014.09.27  C.K.Chen

Outline

•  ClamAV  •  YARA

Signature-­‐based  Analysis

•  Most  of  current  an'virus  are  based  on  signatures  to  detect  malware

ClamAV

•  ClamAV  is  an  open  source  an'virus  engine    – Fast  and  flexible  framework  for  detec'ng  malicious  code    

– Write    signatures  and  scan  a  broad  range  of  content  without  wri'ng  specific  parsers    

Func'onali'es  of  ClamAV •  detec'on  databases  in  ClamAV    – MD5  hashes  of  known  malicious  binaries  (stored  in  .hdb)    

– MD5  hashes  of  PE  sec'ons  (stored  in  .mdb)    – Hexadecimal  signatures  (stored  in  .ndb)  – Archive  metadata  signatures  (stored  in  .zmd  or  .rmd)    – White  list  database  of  known  good  files  (stored  in  .fp)    – Matching  signatures  (stored  in  .ldb)    –  Icon  signatures  (stored  in  .ldb)  –  PE  metadata  strings  (stored  in  .ldb  or  .ndb)    –  Container  metadata  (stored  in  .cdb)    

Database

•  ClamAV  signatures  exist  in    – /usr/local/share/clamav  – /usr/lib/clamav  

•  Database  – The  main.cld  file  contains  the  primary  base  of  signatures  

– daily.cld  contains  incremental  daily  updates    

Signature •  SigName:Target:Offset:HexadecimalSignature    •  SigName  field  is  a  unique,  descrip've  name  for  your  signature    •  Target    

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

SigTool

•  Sigtool  –  -­‐-­‐hex-­‐dump:  convert  data  from  string  to  hex  –  -­‐-­‐md5:    generate  md5  cheksum  in  signature  format  

–  -­‐-­‐mdb:  generate  .mdb  signature  –  -­‐u:  Unpack  a  CVD/CLD  signature

XF.Sic.E  Signature

•  daily.ndb:XF.Sic.E:2:*:  –  2a2a536574204f75722056616c75657320616e64  2050\    –  617468732a2a??00002a2a416464204e657720576f726b626f  6f6b\  –  2c20496e66642049742c205361766520497420417320426f6f\  –  312e  

•  Detect  a  string  in  a  file  – **Set  Our  Values  and  Paths**???**Add  New  Workbook,  Infd  It,  Save  It  As  Boo1.

Wildcards

•  ??  -­‐  Match  any  byte  •  *  -­‐  Match  any  number  of  bytes.  •  {n}  –  Match  n  bytes.  •  {-­‐n}  –  Match  n  or  less  bytes.  •  {n-­‐}  –  Match  n  or  more  bytes.  •  (a|b)  –  Match  a  and  b  (you  Can  Use  More  Alternate  characters)  

Use  Your  own  database

•  clamscan  –d  <your  database>  target_file

Prace'ce

•  Write  signature  for  file  containing  helloworld  –  If  hello  world  is  in  200~300  byte  ?  

Conficker  Signature

•  Unpack  database  – Sigtool  –u  main.cvd  

•  Grep  for  conficker

Byte  Signature

•  ShellcodeXOR:0:*:33c966b9????80340a??b2??eb

Logical  Signatures

•  Recent  versions  of  ClamAV  is  capable  to  understand  complex  signatures  based  on  logical  expressions  – SigName;Target;Expression;Sig0;Sig1;….;SigN  – The  field  consists  of  a  logical  expression  where  each  signature  is  represented  by  its  index  value    

– Operators  OR  (|)  and  AND  (&).    – =,<  ,>  ,  you  can  control  the  number  of  occurrences  of  each  signature  that  must  be  found  in  a  file  before  producing  an  alert.    

DLL  Injec'on  Signature

Sec'on  Signature

•  Use  sec'on  informa'on  to  construct  signature  – More  robust  than  all  file  checksum  

MD5  Signature

•  sigtool  –md5  test.exe  >  test.hdb  •  Cat  to  see  signature  format  

Type  of  Database

Prac'ce

•  Develop  signature  for  bot.exe  – String    – MD5  – Hash  of  Sec'on  – Else  …..  

 Yara

•  Flexible  iden'fica'on  and  classifica'on  engine    –  rules  that  detect  strings,  instruc'on  sequences,  regular  expressions,  byte  paxerns,  and  so  on    

– scan  files  using  the  command-­‐line  u'lity    – C  or  Python  tools  with  YARA’s  API    

What  yara  signature  looks  like?

•  Clam  AV  signature    

•  Yara  Signature  

The  other  example

•   Any  file  contain  $a  or  $b  or  $is  recognize  as  silent_banker

Reserva'on  Words

Condi'on  Sec'on

•  Condi'on  block  must  be  exists

Prac'ce

•  rule  dummy  {              condi'on:  true  }  

•  yara    my_rule  any_file

String  Sec'on •  The  strings  defini'on  sec'on  can  be  omixed  if  the  rule  doesn’t  rely  on  any  string  

•  The  strings  defini'on  sec'on  is  where  the  strings  that  will  be  part  of  the  rule  are  defined.    

•  Each  string  has  an  iden'fier  consis'ng  in  a  $  

Regular  expressions

•  Regular  expression  is  supported

String  offsets  or  virtual  addresse

•  We  are  willing  to  know  if  the  associated  string  is  anywhere  within  the  file  or  process  memory  

Executable  entry  poin •  If  file  is  a  Portable  Executable  (PE)  or  Executable  and  

Linkable  Format  (ELF),  this  variable  holds  the  raw  offset  of  the  exectutable’s  entry  point    

•  If  we  are  scanning  a  running  process  entrypoint  will  hold  the  virtual  address  of  the  main  executable’s  entry  point.  

•  A  typical  use  of  this  variable  is  to  look  for  some  paxern  at  the  entry  point  to  detect  packers  or  simple  file  infectors  

VM  Detect  Rule

•   

Compa'ble

•  ClamAV  to  yara  •  Peid  to  yara

Prace'ce

•  Write  the  rule  for  bot.exe