home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / virus / 4259 < prev    next >
Encoding:
Internet Message Format  |  1992-11-12  |  3.3 KB

  1. Path: sparky!uunet!ukma!usenet.ins.cwru.edu!cert!netnews.upenn.edu!netnews.cc.lehigh.edu!news
  2. From: RZOTTO@NYX.UNI-KONSTANZ.DE (Otto Stolz)
  3. Newsgroups: comp.virus
  4. Subject: Re: SCAN 95b doesn't find MtE in EXE files (PC)
  5. Message-ID: <0005.9211121950.AA09997@barnabas.cert.org>
  6. Date: 11 Nov 92 10:53:29 GMT
  7. Sender: virus-l@lehigh.edu
  8. Lines: 61
  9. Approved: news@netnews.cc.lehigh.edu
  10.  
  11. Stefano_Turci@f0.n462.z9.virnet.bad.se (Stefano Turci) writes:
  12. >  I run it on a high number of files infected with two Mte-based viruses
  13. >  ( Dedicated and Pogue) and it is able to detect all of the infected
  14. >  files, but how could I say if it will work for *EVERY* mutation and
  15. >  for *EVERY* Mte-based virus ?
  16. >  I think it's impossible.
  17.  
  18. On 04 Nov 92 11:27:52 +0000 Vesselin Bontchev
  19. <bontchev@fbihh.informatik.uni-hamburg.de> said:
  20. > You are right, it's impossible. That's why, our tests can only prove
  21. > that a scanner is NOT able to detect the MtE-based viruses reliably.
  22. > Otherwise we can only say that we have been unable to find an MtE
  23. > replicant that the scanner does not detect.
  24.  
  25. Just to prevent a possible misunderstanding of Stefano's and
  26. Vesselin's claim:
  27.  
  28. It is indeed impossible to tell it from tests alone, without
  29. considering the program's internal algorithms.
  30.  
  31. However, it is probably possible (however difficult it may be) to
  32. prove that an Mte detector is reliable: The proof would be based on
  33. the following steps: 
  34. 1. Infer, from a sample of the MtE, the algorithm used to produce the
  35.    various decryptors, and prove that the algorithm found and the MtE
  36.    sample are indeed equivalent;
  37. 2. infer from that algorithm the set of all decryptors that can possibly
  38.    be produced from the MtE (of course not as a huge list of detailed
  39.    code sections, but rather as a comparably moderate list of possible
  40.    features, or patterns), and prove that the set is indeed produced by
  41.    the algorithm,
  42. 3. design an algorithm to detect all of these decryptors, reliably, and
  43.    prove that it indeed does so.
  44.  
  45. Step 1, called reverse engineering, is routinely performed by many
  46. virus researchers (though, maybe, without formal correctness proofs).
  47.  
  48. On step 3, read "A Discipline of Programming" by Edsger W. Dijkstra.
  49. The basic idea of this book is to design a suitable proof first, then
  50. write the program in accordance with that proof. This is recommended
  51. reading for all would-be programmers!
  52.  
  53. Step 2 is probably the most difficult one, as it cannot rely on
  54. established formal methods. Yet, it can probably be done -- as Rubik's
  55. Cube, and many more seemingly intractable problems, have been solved,
  56. eventually.
  57.  
  58. In principle (but not practically) it could even been done by an exhaust-
  59. ive enumeration, as the set of all possibly produced code sections is
  60. finite (There are two easy proofs for this finiteness. Outline proof 1:
  61. The set of all starting states for the algorithm is finite, and the
  62. algorithm is deterministic, hence it cannot produce more different
  63. results than it has starting states. Outline proof 2: The length of the
  64. produced code sections is limited by the size of the largest disk avail-
  65. able, hence finite, hence the set of all possible code sections is the
  66. power set of a finite set, which is still finite -- and the MtE will only
  67. produce a small :-) subset of that power set.)
  68.  
  69. Best wishes,
  70.                     Otto Stolz <RZOTTO@DKNKURZ1.Bitnet>
  71.                                <RZOTTO@nyx.uni-konstanz.de>
  72.