Nmap源码分析(脚本引擎)

Nmap源码分析(脚本引擎)

2012年9月6日

  Nmap提供了强大的脚本引擎(NSE),以支持通过Lua编程来扩展Nmap的功能。目前脚本库已经包含300多个常用的Lua脚本,辅助完成Nmap的主机发现、端口扫描、服务侦测、操作系统侦测四个基本功能,并补充了其他扫描能力:如执行HTTP服务详细的探测、暴力破解简单密码、检查常见的漏洞信息等等。如果用户需要对特定的应用做更深入的探究,可以按照NSE脚本格式编写Lua脚本来增强Nmap的扫描能力。


1     简单引入


1.1  实现原理

  NSE(Nmap Scripting Engine)是Nmap最为强大、最为灵活的功能之一。

  NSE主要分为两大部分:内嵌Lua解释器与NSE library。

  解释器:Nmap采用嵌入的Lua解释器来支持Lua脚本语言。Lua语言小巧简单而且扩展灵活,能够很好地与Nmap自身的C/C++语言融合。

  NSE library:为Lua脚本与Nmap提供了连接,负责完成基本初始化及提供脚本调度、并发执行、IO框架及异常处理,并且提供了默认的实用的脚本程序。


1.2  脚本分类

  NSE中提供的Lua脚本分为不同的类别(Category),目前的类别如下:

  1. auth  负责处理鉴权证书(绕开鉴权)的脚本
  2. broadcast  在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务。
  3. brute  提供暴力破解方式,针对常见的应用如http/snmp等
  4. default  这是使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
  5. discovery  对网络进行更多的信息,如SMB枚举、SNMP查询等
  6. dos  用于进行拒绝服务攻击(denial of service)
  7. exploit  利用已知的漏洞入侵系统
  8. external  利用第三方的数据库或资源,例如进行whois解析
  9. fuzzer  模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
  10. intrusive 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
  11. malware 探测目标机是否感染了病毒、开启了后门等信息
  12. safe 此类与intrusive相反,属于安全性脚本
  13. version 负责增强服务与版本扫描(Version Detection)功能的脚本。
  14. vuln 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067。

 

1.3  命令行选项

  Nmap提供的命令行参数如下:

-sC: 等价于--script=default,使用默认类别的脚本进行扫描。

--script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述

--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数

--script-args-file=filename: 使用文件来为脚本提供参数

--script-trace: 显示脚本执行过程中发送与接收的数据

--script-updatedb: 更新脚本数据库

--script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Lua scripts>部分可以逗号分隔的文件或脚本类别。

2     实现框架


2.1  文件组织


  Nmap脚本引擎所需要的的文件:

  • nse_main.cc/nse_main.h/nse_main.lua,这是核心流程文件,负责脚本的初始化与调度执行。
  • nmap/nse_*文件,nmap源码目录下以nse开头的文件
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值