📄 ntp_white_paper_11.txt
字号:
Nessus Transfer Protocol White Paper version 1.1 and 1.2 # Author : Renaud Deraison <deraison@cvs.nessus.org>## Revisions :# 07/10/98 : 10am : first release# 07/10/98 : 4pm : first revision (thanks to Noam Rathaus :)# 07/11/98 : 11am : added preferences and changed the 'NEW_ATTACK' message# 07/11/98 : 2pm : added 'PLUGINS_ORDER' (thanks to Alexis de Bernis :) updated the 'STATUS' message format# 07/11/98 : 10pm : added a new option : the scan_level # 07/12/98 : 1pm : corrected some minor errors# 07/29/98 : 3pm : added the 'STOP_WHOLE_TEST' message# 08/24/98 : 1pm : corrected a mistake in the messages order changed some stuff in the text to make it look like a white paper instead of a draft# 09/03/98 : 2pm : corrected several spelling mistakes # 09/22/98 : 5pm : added several options# 01/29/99 : 3am : Added Scan ID to HOLE and INFO messages. (Jochen Wiedmann)# 01/31/02 : 6pm : removed scan_level and high_scan_time which are deprecated# 03/08/02 : : documented the NOTE messagesThis paper has been written as a complement to the NTP/1.0 white paper. If you have never read the NTP/1.0 white paper,you should, or else you may not understand everything...1. Purpose of the NTP/1.1 and NTP/1.2 The purpose of the NTP 1.1 is to help to make the Nessus daemon moreflexible than it used to be, as well as to be more specific on the holes/reports found on a remote host. + More flexible : Nowadays, using nessusd is a pain : before you make a test, you have to telnet to the nessusd machine, edit nessusd.rules to be sure it matches your needs, restart the daemon, and actually start the attack... Also, all the preferences should be defined by the client, not only in nessusd.conf. Because if you want to reduce the max number of threads of nessusd, it's a real pain. + More specific : The NTP/1.0 is TCP oriented, but a flaw can be found on a UDP port, so the NTP/1.1 needs to be more specific in the reports messages. So the NTP/1.1 will modify the INFO and HOLE messages to make them more specifics and more accurate. NTP/1.2 extends the INFO and HOLE messages again by adding the scan's ID, so that one can identify the plugin that reports the message. + More open : The NTP/1.1 allow the server to send to the client an infinite* amount of data, and the client can send back to the server another infinite amount of data *: we all know that in the computers world, nothing is really infinite so maybe I should have put 'unlimited as long as there is memory on the server side', but please don't mess up with that :) + More fined-grained : NTP/1.1 defines the 'NOTE' message (which works the same as INFO and HOLE) 2. New messages21. The "PREFERENCES" message The NTP/1.1 provides a new message format, which is nearly the same as the PLUGIN_LIST message : the PREFERENCES message. This message will be sent by the server and by the client before the start of a new attack. Syntax : entity <|> PREFERENCES <|> name <|> value name <|> value ... <|> entity where 'entity' is either SERVER or CLIENT. The current preferences are : max_threads : max number of threads. Can't be greater than the one defined in nessusd.conf test_file : the file that some plugins will attempt to obtain from the remote server (ie : /etc/passwd) email : the email of the user ping_hosts : ping hosts before starting to scan them. Must be 'yes' or 'no' reverse_lookup : the IP must be reversely looked up before it's attacked outside_firewall: if nessusd is testing a host which is behind a firewall host_expansion : this is how Nessus will seek for victims. Several options are possible : + "none" : means that only the primary host will be tested + "dns" : means that a AXFR request will be made to the DNS which is in charge of the domain name of the victim. + "nfs" : means that Nessus will do a 'showmount' on every host tested, and will test the hosts that can mount the filesystems exported. + "ip" : means that Nessus will test the entire subnet of a host. It's possible to combine the last three options by putting a ';' between the options : 'dns;ip' is a valid option, as well as 'dns;nfs;ip'. 'none;dns;nfs;ip' is a NONSENSE. The server will send a PREFERENCES_ERRORS message with this one, and a good client should first test such nonsense before sending them to the server. port_range : the range of ports to scan (ie : 1-1024) max_hosts : maximal number of hosts to test This one will NEVER be sent to the client, but the client will have to send it the the server : plugin_set : the list of plugins to use (same format as it used to be (1;4;6;9) If the client doesn't send 'plugin_set', then the server will launch all the plugins. Note : In fact, the server will send to the client the content of the file nessusd.conf. If the nessusd owner decides to remove this file, the server will send you the message : SERVER <|> PREFERENCES <|> <|> PREFERENCES Even if there is NO default preferences, the client has to upload the list of 'known prefs' which is defined above. Also, the server might send to the client bogus preferences. If this is the case, the client can silently ignore them (even though it would be better to show them somewhere). Last but not least, the server can send plugins preferences. Please read the 'plugin_prefs' paper which is distributed with Nessus-980903 and the newest versions. 22. The "NEW_ATTACK" message Since the client can now send more informations for a test to the server, the "NEW_ATTACK" message is now much simpler : It used to be : entity <|> NEW_ATTACK <|> pluginlist <|> maxhosts <|> recursive \ <|> portrange <|> hostname <|> entity It's now : entity <|> NEW_ATTACK <|> hostname <|> entity where 'hostname' can be an IP, a FQDN or a list of them (ie: "www.a.com,www.b.com,www.c.com" or "host1,host2,192.68.2.1" or whatever)23. The "RULES" message I call "rules" the set of commands that restrict the test to a set of hosts. The "RULES" message is sent by the server and the client. Its syntax is : entity <|> RULES <|> expr1; expr2; expr3; <|> entity where 'entity' is either SERVER or CLIENT. 'expr' is the standard rules format (ie : 'n:*')24. The NOTE, INFO, HOLE messages It used to be : entity <|> HOLE <|> hostname <|> port:hole description <|> entity It will now be : entity <|> HOLE <|> hostname <|> servicename (port/protocol) <|> \ description <|> entity (NTP 1.1) entity <|> HOLE <|> hostname <|> servicename (port/protocol) <|> \ description <|> scan_id <|> entity (NTP 1.2) or entity <|> HOLE <|> hostname <|> general <|> \ description <|> entity (NTP 1.1) entity <|> HOLE <|> hostname <|> general <|> \ description <|> scan_id <|> entity (NTP 1.2) Where service will be a string which indicates to the user the kind of service which is affected by the problem (ie :"ftp") and where protocol will be "udp" or "tcp", or maybe something else. If no servicename could be found by the server 'servicename' will be "unknown" the second format will be used to report an info which is not port specific. The scan_id is the same id previously sent as part of the plugin list. This allows to identify the plugin that generated a report. The 'NOTE' message has been added and defines informative information about the remote host25. The 'PREFERENCES_ERRORS' message After the client has sent to the server a 'PREFERENCES' message, the server will reply to report which preferences have invalid values. The syntax of this message is very similar to 'PREFERENCES': SERVER <|> PREFERENCES_ERRORS name <|> value name <|> value ... <|> SERVER where 'name' is the name of the pref. item, and value is the value which will be used by the server if no correction is made. ie : a user asks a 'max_threads' value of 99999 the owner of the server has set in nessus.conf 'max_threads' to 15 Since 99999 > 15, the server will reply (after the PREFERENCES message of the client) SERVER <|> PREFERENCES_ERRORS max_threads <|> 15 <|> SERVER Nota : The message : SERVER <|> PREFERENCES_ERRORS <|> SERVER means that there is no error.26. The 'PLUGINS_ORDER' message This message is sent by the server to the client to tell it in which order the plugins will be launched. Syntax : SERVER <|> PLUGINS_ORDER <|> plugins <|> SERVER Where 'plugins' is a string showing the ids of the plugins, ie : '4;8;1;5'27. The 'STATUS' message This message now shows if the current is the state of the portscan of the state of the plugins attacks. It used to be the 'STAT' message, note that it was renamed. Syntax : SERVER <|> STATUS <|> hostname <|> action <|> status <|> SERVER Where : 'hostname' is the name of the host 'action' is either 'portscan' or 'attack' 'status' is a string under the form "min/max" (ie : 12/80) 28. The 'STOP_WHOLE_TEST' message This message stops a whole test in a clean way : all the threads are killed and the server silently dies. It's better to use this message rather than just closing the socket between the client and the server (describing why is a little off topic) Syntax : CLIENT <|> STOP_WHOLE_TEST <|> CLIENT 29. Notes The behavior of the command RULES is not the same as PREFERENCES. With the PREFERENCES message, the client can modify the prefs. of the server. With the rules message, it can only add new rules. ie : the client receives : SERVER <|> RULES n:*; y:*.nessus.org; <|> SERVERthen it sends to the server : CLIENT <|> RULES N:grincheux.nessus.org; <|> CLIENT This means that during the test, the following set of rules will be applied : n*;y:*.nessus.org;n:grincheux.nessus.org3. Using the NTP/1.1 31. Activating the NTP/1.1 or NTP/1.2 While the client attempts to establish the communication with a server, it should send the string '< NTP/1.1 >' or '< NTP/1.2 >' instead of the previously used '< NTP/1.0 >' and the server will answer with the name of the protocol it will use. Beware : older servers will close the connection if they receive NTP/1.1, but I think the servers will be updated more often than the clients...32. When do the messages take place. The 'PREFERENCES' and 'RULES' message are sent by the server after the 'PLUGIN_LIST' message. The client sends the 'PREFERENCES' and 'RULES' message before the 'NEW_ATTACK' messages. As soon as the client sends a 'PREFERENCES' message, the server will answer with a 'PREFERENCES_ERROR' message (even if there is no error) The 'PLUGIN_ORDER' message will be sent just after the client sends the 'NEW_ATTACK' message. The 'STATUS', 'PORT', 'HOLE', 'INFO' messages come during an attack.Comments and questions go to deraison@cvs.nessus.org
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -