Forum

Notifications
Clear all

Learn Nmap NSE

1 Posts
1 Users
0 Reactions
13 Views
 josh
(@josh)
Member Admin
Joined: 2 months ago
Posts: 510
Topic starter  

Here’s a clear explanation of Nmap NSE (Nmap Scripting Engine) and why it’s such a powerful extension of the Nmap tool:


🧠 What Is Nmap NSE?

NSE stands for Nmap Scripting Engine. It allows users to write and execute custom scripts to automate a wide variety of network tasks. These scripts are written in the Lua programming language, which is lightweight and efficient.


🔍 What Can NSE Scripts Do?

NSE scripts extend Nmap’s capabilities far beyond basic port scanning. They can:

  • Detect vulnerabilities in services and software
  • Perform brute-force attacks to test login credentials
  • Gather detailed service information
  • Check for malware or misconfigurations
  • Interact with network protocols like HTTP, FTP, DNS, SNMP, etc.

🧪 How to Use NSE Scripts

You can run NSE scripts using the --script option in your Nmap command. Here are a few examples:

  • Run default scripts:

    nmap -sC 192.168.1.1
    

    This is shorthand for running the default set of safe scripts.

  • Run a specific script:

    nmap --script=http-title 192.168.1.1
    

    This script grabs the title of a webpage hosted on the target.

  • Run all scripts in a category:

    nmap --script "vuln" 192.168.1.1
    

    This runs all scripts in the “vuln” category to check for vulnerabilities.


📂 Where Are Scripts Stored?

On most systems, NSE scripts are located in:

/usr/share/nmap/scripts/

You can also download or create your own scripts and specify their path using --script.


🧭 Script Categories

NSE scripts are grouped into categories like:

  • auth – authentication-related
  • default – safe and useful scripts
  • vuln – vulnerability detection
  • exploit – exploit known vulnerabilities
  • discovery – gather network info
  • brute – brute-force login attempts
  • malware – detect malicious behavior

Writing your own Nmap NSE script is a fantastic way to customize network scans and automate tasks. Here’s a beginner-friendly guide to help you get started:


🧠 Key Parts of an NSE Script

An NSE script typically includes three main sections:

  1. Head – Metadata like name, description, author, license, and categories.
  2. Rule – Defines when the script should run (e.g., if a specific port is open).
  3. Action – The actual logic of the script (what it does when executed).

🧪 Sample NSE Script (Basic)

-- Head
description = "Simple script to print a message"
author = "Your Name"
license = "Same as Nmap"
categories = {"discovery"}

-- Rule
hostrule = function(host)
  return true  -- Run for all hosts
end

-- Action
action = function(host)
  return "Hello from NSE script! Target IP: " .. host.ip
end

Save this as hello.nse in your Nmap scripts directory (e.g., /usr/share/nmap/scripts/), then run:

nmap --script=hello.nse <target>

🛠 Tips for Writing Scripts

  • Use Lua language basics: variables, loops, conditionals.
  • Leverage Nmap’s built-in libraries like shortport, http, dns, etc.
  • Test scripts on safe targets like scanme.nmap.org.

📚 Learn More

Here are some excellent resources to dive deeper:


 


   
Quote
Share: