Requires Free Membership to View
|
||||
Starting with an example
As a hypothetical, suppose you have a custom Web-monitoring application called KillerApp that contains a known vulnerability in a file named "killerapp.asp." This application ran on every Web server in the environment until you discovered that it contains a critical vulnerability allowing an anonymous user to shut down the servers. The application has since been removed, but you suspect that some servers may still have it installed. Fortunately, the Nessus Attack Scripting Language (NASL) can be used to write a custom Nessus "attack," or a check that can find "killerapp.asp."
First, I'll show you the entire NASL script for this type of scenario. Then we'll dissect it to explore the NASL structure. Here's the whole script:
#
# KillerApp check
#
if (description)
{
script_id(50000);
script_name(english:"Check for KillerApp");
script_description(english:"KillerApp is a high-risk application and should be removed.");
script_summary(english:"Checks for KillerApp");
script_copyright(english:"Copyright 2008, Mike Chapple");
script_category(ACT_ATTACK);
script_family(english:"Denial of Service");
script_require_ports("Services/www",80);
}
include("http_func.inc");
include("http_keepalive.inc");
port = get_http_port(default:80);
if (get_port_state(port))
{
if (is_cgi_installed_ka(item:"/killerapp.asp",port:port))
{
security_hole(port);
}
}
NASL script structure
Notice that the NASL script has two distinct sections: a description of the plan, and a layout of the attack contents. The description section begins with the "if (description)" statement and includes all of the statements contained within the curly braces ("{…}") following it. Many of the items in that section are self-descriptive. Some notable ones:
: sets the script identification number, which must be a unique integer between 1 and 99,999. It's a good idea to choose a high number to avoid conflicting with other Nessus checks (both those that are user-created and those that are downloaded from a Nessus feed).
The remaining portion of the script defines the attack itself. Let's take it line-by-line:
- port = get_http_port(default:80)
Using a custom script
There are two ways to execute a custom script: running the nasl.exe standalone tool from the command line, or including it in Nessus scans.
The syntax for running it at the command line is:
For example, if you wanted to run the killerapp.nasl script against a Web server located at 192.168.1.1, you would execute:
nasl.exe -t 192.168.1.1 "C:\Program Files\Tenable\Nessus\plugins\killerapp.nasl"
If the script returns a hole, it outputs a status of "Success," as shown below:
[Wed Jun 11 19:08:58 2008][5832] Only Ethernet is supported for now (type of {07
061642-1076-44D2-9D72-6C7BC3022BCF} = 71)
C:\Program Files\Tenable\Nessus\plugins\killerapp.nasl: Success
Alternatively, the NASL check can be included in a standard Nessus scan by simply including the file in your Nessus folder's 'plug-ins' directory. You'll then find it among the checks available to you when configuring a Nessus scan.
Learning more about NASL
NASL is a fairly simple scripting language, but it does contain a number of built-in functions to help customize your own scripts. For the definitive reference on NASL, view the NASL Reference Guide on the main Nessus site.
NESSUS TUTORIAL
Introduction: What is Nessus?
How to install and configure Nessus
How to run a system scan
Using Nessus Attack Scripting Language (NASL)
Vulnerability scanning in the enterprise
How to simplify security scans
How to use Nessus with the SANS Top 20
About the author:
Mike Chapple, CISA, CISSP, is an IT security professional with the University of Notre Dame. He previously served as an information security researcher with the National Security Agency and the U.S. Air Force. Mike is a frequent contributor to SearchSecurity, a technical editor for Information Security magazine and the author of several information security titles, including the CISSP Prep Guide and Information Security Illuminated. He also answers your questions on network security.
This was first published in July 2008
Security Management Strategies for the CIO
Join the conversationComment
Share
Comments
Results
Contribute to the conversation