home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 16 / hacker16 / 16_HACKER16.ISO / linux / tpm-security-server-1.2.1.iso / readme / nessus-core.WARNING.En < prev   
Encoding:
Text File  |  2004-01-27  |  13.9 KB  |  355 lines

  1. -*- Indented-Text -*-
  2.  
  3. ------------------------------------------------------------------------
  4.                      NESSUS RISKS
  5. ------------------------------------------------------------------------
  6.  
  7.  
  8. 0. Copyright
  9.  
  10. This document was written by Michel Arboi <arboi@alussinan.org>
  11. Anybody may reproduce it, send it, print it, engrave in marble,
  12. transfer on a T-shirt, etc., provided it is not modified -- and this
  13. means, of course, that this copyright should stay here.
  14. Devin Harris <devin.harris@abraxis.com> read and fixed my quick &
  15. dirty French to English translation. 
  16.  
  17.  
  18. 1. Why this document?
  19.  
  20. One can have a very bad experience by launching a Nessus test against a
  21. fragile machine or by giving anybody access to such a tool.
  22. Some do not really understand how Nessus works, or even the risks of
  23. any "security test".
  24.  
  25.  
  26. 2. Legal matter
  27.  
  28. I am not a lawyer, so I will not be long.
  29. Nessus is distributed according to the GPL.  This may be incompatible
  30. in part with your local law.
  31. Nessus is distributed WITHOUT ANY WARRANTY, as any software. Do not
  32. complain if you break a production machine; besides, you have no
  33. warranty with a commercial scanner.
  34. At least we warned you!
  35.  
  36.  
  37. 3. How Nessus works
  38.  
  39.  3.1. Timing of operations
  40.  
  41. a) Nessus looks for open ports
  42.    - by calling the external scanner nmap,
  43.    - by calling snmpwalk (against a badly configured machine),
  44.    - by using an internal plugin, based upon one of nmap's modes,
  45.    - or by reading an external file, in nmap format, written by any
  46.      tool, e.g. by connecting the output of the netstat command.
  47. b) Then, the "find_service" plugin tries to identify what runs behind
  48.    each port
  49.    - first by trying SSL connections (TLSv1, SSLv3, SSLv2), then plain
  50.      connections,
  51.    - then by sending miscellaneous sequences to the service and
  52.      looking at the answers.
  53.    find_service stores its finding as "keys" in the "knowledge base" (KB).
  54. c) Nessus then tries miscellaneous attacks on every open port.
  55.    For example, if a scripts targets web servers, it will be launched
  56.    against every port where a HTTP or HTTPS server has been found.
  57.  
  58.  3.2. Plugin types
  59.  
  60. Nessus plugins are organised into "families".  They can be grouped in
  61. the graphical interface, but this does not change the scanner
  62. work.  There is a "denial of service" family, but all dangerous scripts
  63. are not there; only those which goal is to kill the system.
  64.  
  65. Each plugin has a "category":
  66. - ACT_INIT
  67.   The scripts only set options and does not run any test.
  68. - ACT_SCANNER
  69.   The script is a port scanner or something like it (e.g. ping).
  70. - ACT_SETTINGS
  71.   Just like ACT_INIT, but runs after the scanners, when we are sure
  72.   that the machine is alive.
  73. - ACT_GATHER_INFO
  74.   The script gathers information on the system, e.g. identifies
  75.   services or look for a specific software.
  76. - ACT_ATTACK
  77.   The script tries to circumvent some defences, without any bad effect
  78.   on the system availability, in theory.
  79. - ACT_MIXED_ATTACK
  80.   Although this is not its main goal, the script may have disastrous
  81.   side effects.
  82. - ACT_DESTRUCTIVE_ATTACK
  83.   The script tries to disturb a specific software or delete data.
  84. - ACT_DENIAL
  85.   The script tries to kill a service
  86. - ACT_KILL_HOST
  87.   The script tries to kill the operating system.
  88. - ACT_END
  89.   The script just compile information after everything else run.
  90.  
  91. The border between those categories is fuzzy, and it is impossible to
  92. say in advance if a script that targets a specific software will not
  93. have dangerous effects on another one.
  94. Nessus first launches the ACT_INIT scripts, then the ACT_SCANNER
  95. plugins, then ACT_SETTINGS, ACT_GATHER_INFO, etc. 
  96.  
  97. Notes: 
  98. - ACT_INIT, ACT_END and ACT_KILL_HOST were introduced in 1.3.0
  99.   Before that (1.2.6), ACT_INIT scripts (if any) were handled in
  100.   ACT_SETTINGS and ACT_KILL_HOST was merged with ACT_DENIAL.
  101. - before version 1.2.6, ACT_SETTINGS was run first, but we lost 
  102.   time when we scanned an address range with few "up" machines. By 
  103.   putting ACT_SCANNER first, we filter with ping.nasl
  104.  
  105. Last, each script may declare "dependencies"
  106. - scripts that should run before.
  107.   e.g., most scripts depend upon "find_service".
  108. - open ports / services
  109.   e.g., scripts that test HTTP weaknesses will depend upon port 80 and
  110.   the "Services/www" key.
  111.  
  112. A basic principle is that Nessus does not consider any piece of
  113. information as reliable.  Some security scanners rely on the banners;
  114. Nessus really attacks the services but in rare cases that are
  115. mentioned in the report, or if the "safe checks" option is enabled
  116. (read below).
  117. So:
  118. - Nessus is able to verify if a flaw that is _supposed_ to be fixed in
  119.   version N+1 of some software is still present.
  120. - Nessus may discover that an attack against software "X" also works
  121.   against software "Y".
  122. - Nessus demolishes *BAD* (broken as designed) services without mercy.
  123.  
  124.  
  125.  3.3. Scripts selection
  126.  
  127. With the GUI, one can
  128. - select everything in one click,
  129. - select "Everything but dangerous plugins".
  130.   This choice eliminates the categories ACT_DENIAL, ACT_KILL_HOST or
  131.   ACT_DESTRUCTIVE_ATTACK. This is redundant with the "safe checks"
  132.   option and will probably disappear one day.
  133. - select or remove each plugin individually.
  134. - select a whole family.
  135.   Keep in mind that all dangerous scripts are not in the "denial of
  136.   service" family!
  137.  
  138.  3.4. Important options
  139.  
  140. Three options change the way dependencies are solved:
  141. - Enable dependencies at run time
  142. - Optimize the test
  143. - Consider unscanned ports as closed
  144. And a fourth one changes the behaviour of aggressive scripts:
  145. - Safe checks
  146.  
  147.    3.4.1. Enable dependencies at run time
  148.  
  149. By default, Nessus does not launch a script if those upon which it
  150. depends on were not enabled.  This option automatically enables the needed
  151. dependencies.
  152.  
  153.    3.4.2. Optimize the test
  154.  
  155. By default, Nessus launches a test even if it has no chance of
  156. success, because the service was not identified (the default port will
  157. be attacked).  This option speeds the test up, but you may miss a few
  158. weaknesses.
  159.  
  160.    3.4.3. Consider unscanned ports as closed
  161.  
  162. By default, Nessus considers that unscanned ports are "open". This
  163. option inverts the behaviour and speeds the test up.
  164. It is useful only with "optimize the test".
  165.  
  166.    3.4.4. Safe checks
  167.  
  168. This option disables the dangerous script that may kill the system or
  169. some service.  Nessus then relies upon the version numbers in banners,
  170. for example.  If no clue is available, the test is simply dropped.
  171.  
  172. This option is more dangerous that it looks:
  173. - You can get a false feeling of security. Not seeing a weakness in
  174.   the report does not mean it is not there.
  175. - If the script was badly written and does not check the option with
  176.   the safe_checks() function, the attack will be launched.
  177.   Scripts delivered with Nessus are supposed to be safe, but a
  178.   "unofficial" or experimental script might be dangerous.
  179.  
  180. Note that ACT_DENIAL, ACT_KILL_HOST and ACT_DESTRUCTIVE_ATTACK scripts
  181. are never run when this option is on.
  182.  
  183.  
  184. 4. How a security test may kill your system
  185.  
  186.  4.1. Politics
  187.  
  188. Before you start giving bad names to Nessus, please know that touching
  189. a sensitive production machine is suicidal.  Security consultants are
  190. rarely loved: they are seen either as hackers, or cybercops.
  191. If a machine runs mad for any reason at the very moment when you start
  192. testing it, someone will be too happy to declare you responsible for the
  193. damages.
  194. Perhaps you will be convinced that you did nothing wrong; but I would
  195. not bet that this would be enough to convince a judge that will evaluate
  196. the responsibilities and the amount of the prejudice. 
  197. Simplistic clauses in contracts do not hold, in France at least.  Do
  198. not forget that law is not an exact science (and in fact, no science
  199. at all :-)
  200.  
  201.  4.2. Dangers of port scanning
  202.  
  203. - For TCP, the scanner opens a connection and closes it immediately
  204.   without sending any data.
  205.   Some software will die or loop forever if they cannot read
  206.   data.  Although many believe the contrary, the stealth scans ("null
  207.   scan" or "Christmas tree") are less dangerous because the packets
  208.   stay in kernel land and do not reach the buggy application software
  209.   in userland.  Unfortunately, those scans do not work against every
  210.   operating systems. 
  211. - For UDP, it sends a dataless packet.
  212.   This may be enough to kill some defective IP stacks or broken
  213.   software.
  214. - In a few cases, stealth scans or OS fingerprinting may kill the IP
  215.   stack.  Some embedded software is still vulnerable to this kind of
  216.   denial of service.
  217. - snmpwalk can also be dangerous!
  218.  
  219. You can get the list of open ports with the netstat command and
  220. convert it with netstat2nmap.pl into a fake nmap file that can be read
  221. by Nessus.  So you do not need to run a scanner. However, the main
  222. point in this is to speed the test up, rather than limit the risk.
  223.  
  224.  4.3. Nessus demolition company
  225.  
  226. Some generic scripts are really nasty:
  227. - Buffer overflows against miscellaneous fields or requests in HTTP,
  228.   FTP, POP3... protocols.
  229. - Bad requests (HTTP, FTP...)
  230. - Flood, sending tons of bytes to an unknown service.
  231. - Format strings attacks
  232.  
  233. Also, some services do not like the side effects of the port scanner,
  234. and others the "interrogation" by find_service, especially the
  235. multiple SSL connections.
  236.  
  237. The check_port plugin looks for potential denial of service from a
  238. port scanner or find_service. It runs the equivalent of "nmap -sT" on
  239. the open ports, with the same (low) risks.
  240.  
  241. Even a simple ACT_GATHER_INFO plugin may kill a broken service. There
  242. is no such thing as zero risk!
  243.  
  244. Note that there is one test that might actually try to delete data:
  245. http_method.nasl. However, the dangerous part is disabled if "safe
  246. checks" is set.
  247.  
  248.  
  249. 5. Limiting the risks
  250.  
  251. You do want to test your sensitive application.  If there is a problem,
  252. you will be responsible for it, alone.  So, you want to claim your
  253. condition of free man by shooting yourself in the foot. But you ask that it
  254. does not hurt too much...
  255.  
  256. [In the rest of this chapter, the target machine is named "guinea-pig"]
  257.  
  258.  5.1. Do not port scan
  259.  
  260. - Log onto guinea-pig, run "netstat -a -n --inet" or any other command
  261.   that gives you the list of open IP ports (--inet) in a numeric
  262.   output (-n).
  263. - Write the result into the "guinea-pig" file (this is important: the
  264.   filename must be the same as the scanned host name)
  265. - Convert it into a nmap file with:
  266.   netstat2nmap guinea-pig > gp.nmap  
  267. - _Only_ select the "nmap" scanner and feed it with gp.nmap. The
  268.   "scanned" port range should be 1-65535
  269.  
  270.  5.2. Remove Nessus' teeth
  271.  
  272. - Enable the "safe checks" option.
  273. - Enable "optimize the test".
  274. - Disable "enable dependencies at run time".
  275. - Remove the useless or dangerous plugins.
  276. - if no service runs on top of SSL, disable "test SSL services" (one of
  277.   the "Prefs" of find_service)
  278.  
  279.  5.3. Remaining risks
  280.  
  281. - find_service may cause more problems than the port scanner, even
  282.   without the SSL connection attempts.
  283. - some ACT_GATHER_INFO plugins may cause the same effects, but
  284.   "optimize the test" reduces the risks.
  285.  
  286.  
  287. 9. Nessus between the wrong hands
  288.  
  289. Nessus is a terrible test tool, able to point patches to "white hats"
  290. as well as "exploits" to "black hats".
  291.  
  292.  9.1. A weapon for sale?
  293.  
  294. I do not want to launch the troll^W debate again "for / against full
  295. disclosure".
  296. Like many tools, Nessus itself is not good or bad; it's in the way you use it.
  297.  
  298. Nessus was made for "white hats".  Its design choices are not great
  299. for crackers: it is very noisy.  Crackers do not want to be seen, in
  300. general...
  301.  
  302. You can torture Nessus so that it uses one of the many open proxies on
  303. Internet.  For reasons that you will easily understand, I hope, I will
  304. not document this trick :-]
  305.  
  306. Some logs (small extract) :
  307. Dec 15 16:43:32 casserole login(pam_unix)[5888]: authentication failure; logname= uid=0 euid=0 tty=pts/17 ruser= rhost=localhost  user=root
  308. Dec 15 16:43:32 casserole login(pam_unix)[5886]: check pass; user unknown
  309. Dec 15 16:43:32 casserole login(pam_unix)[5886]: authentication failure; logname= uid=0 euid=0 tty=pts/16 ruser= rhost=localhost 
  310. Dec 15 16:43:34 casserole login[5880]: FAILED LOGIN 1 FROM localhost FOR backdoor, Authentication failure
  311. Dec 15 16:43:56 casserole fam[1354]: fd 109 message length 1312236900 bytes exceeds max of 4135.
  312. Dec 15 16:44:11 casserole SERVER[5930]: Dispatch_input: bad request line '< NTP/1.0 >^M'
  313. 127.0.0.1 - - [15/Dec/2001:16:44:39 +0100] "GET http://www.nessus.org HTTP/1.0" 200 2890 "-" "-"
  314. 127.0.0.1 - - [15/Dec/2001:17:25:44 +0100] ".`" 501 - "-" "-"
  315. 127.0.0.1 - - [15/Dec/2001:17:25:45 +0100] "GET /cgi-bin/nessus_is_probing_this_host_2033195663 HTTP/1.1" 404 335 "-" "Mozilla/4.75 [en] (X11, U; Nessus)"
  316. 127.0.0.1 - - [15/Dec/2001:17:29:58 +0100] "are you dead ?" 400 339 "-" "-"
  317.  
  318.  9.2. Anti NIDS functions
  319.  
  320. Version 1.1.13 introduced TCP and HTTP "evasion" functions that are
  321. based upon public works:
  322. http://www.wiretrip.net/rfp/pages/whitepapers/whiskerids.html
  323. http://www.securityfocus.com/data/library/ids.ps
  324. http://rr.sans.org/intrusion/anti-ids.php
  325.  
  326. The goal of those functions is not to allow "black hats" to attack
  327. systems on Internet more easily, but to allow "white hats" to tests
  328. the protection devices.
  329.  
  330. The Snort freeware tool is not deceived by any option, and in fact
  331. Nessus is even more noisy when they are enabled.
  332.  
  333.  9.3. Access control to Nessus
  334.  
  335. A cracker may take control of a Nessus server pointed to your
  336. machines, or the machines of one of your customers. Although we cannot
  337. guarantee there is no bug, a couple of precautions should reduce the
  338. risk to an reasonable level:
  339.  
  340. - If the client and the server run on the same machine, configure
  341.   Nessus to use Unix sockets. Verify that port 1241 is closed.
  342. - Configure Nessus with the TCP wrappers and limit the access to a few
  343.   workstations, e.g. localhost.
  344. - Enable the strong authentication (X.509 client
  345.   certificates). Generate your own certificates, do not use those from
  346.   the "Nessus kabale"!
  347.   You should also protect your server & client private keys with a
  348.   solid password. The nessus-mkcert script does not do this. You will
  349.   have to set up your own "certificate factory".
  350. - Switch off the machine that runs the Nessus server when you are not
  351.   using it.
  352.  
  353. Note: currently, certificate based authentication is incompatible with
  354. Unix sockets.
  355.