• nmap | 简单介绍


    这篇文章在微信公众号上发过,这里的版本比微信上的新。

    nmap工具介绍

    nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具。

    官方文档位置,https://nmap.org/book/toc.html

    nmap套件包含以下几个部分,我只用过nmap命令:

    • nmap:命令行组件
    • Zenmap:图形界面,Python语言编写,适用linux以及windows平台
    • Ncat:a flexible data transfer, redirection, and debugging tool
    • Ndiff:a utility for comparing scan results
    • Nping:a packet generation and response analysis tool

    我理解nmap主要由抓包工具 + NSE组成。抓包工具只需要了解,Windows平台是npcap抓包而Linux平台使用libpcap。NSE为脚本引擎,用于扩展nmap的能力。

    NSE以及脚本介绍

    NSE全称Nmap Script Engine,支持用Lua语言编写的脚本对nmap进行功能扩展。nmap安装时已经提供了大量脚本,Linux环境下这些脚本在/usr/share/nmap/scripts/或者/usr/local/share/nmap/scripts,视nmap安装位置。除了使用这些默认脚本,用户也可以编写自己的脚本来扩展nmap的功能。

    脚本分类

    nmap脚本共14大类,每大类下有很多具体的脚本。可以直接使用整个分类,也可以具体使用某个脚本。

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

    使用方法

    首先搜索相关脚本,这里示例搜索和pgsql相关的脚本。

    kali@PT:~$ nmap --script-help *pgsql*
    
    Starting nmap 7.60 ( https://nmap.org ) at 2020-07-02 15:31 CST
    
    pgsql-brute
    Categories: intrusive brute
    https://nmap.org/nsedoc/scripts/pgsql-brute.html
      Performs password guessing against PostgreSQL.
    

    可以看到结果中有一个相关脚本,pgsql-brute,提供对PostgreSQL的密码猜解功能。运行这个脚本。

    kali@PT:~$ nmap -p 22 -sV --script pgsql-brute <ip> 
    
    PORT     STATE SERVICE    VERSION
    5432/tcp open  postgresql PostgreSQL DB 9.5.0 - 9.5.3
    | pgsql-brute:
    |   root => Trusted authentication
    |   admin => Trusted authentication
    |   administrator => Trusted authentication
    |   webadmin => Trusted authentication
    |   sysadmin => Trusted authentication
    |   netadmin => Trusted authentication
    |   guest => Trusted authentication
    |   user => Trusted authentication
    |   web => Trusted authentication
    |_  test => Trusted authentication
    

    pgsql-brute.nse源码

    nmap完全开源,所以它的源码也是非常好的学习资料。

    简单看看pgsql-brute.nse的源码,主要是想找到字典位置。源码位于 /usr/share/nmap/scripts/pgsql-brute.nse

    # 可以看到爆破字典来源于unpwdb,unpwdb源码位于/usr/share/nmap/nselib/unpwdb.lua,查看其源码得知字典在以下位置:
    # /usr/share/nmap/nselib/data/passwords.lst
    # /usr/share/nmap/nselib/data/usernames.lst
    # 查看两个字典文件的内容,发现并没有针对PostgreSQL的弱口令,并且字典数据也不是很多。
    # 所以完全可以自己写一个针对PostgreSQL弱口令爆破的NSE脚本。
    
      local usernames, passwords
      status, usernames = unpwdb.usernames()
      if ( not(status) ) then  return end
    
      status, passwords = unpwdb.passwords()
      if ( not(status) ) then  return end
    

    漏洞扫描

    可以直接使用 nmap --script vuln,调用nmap默认扫描大类的所有脚本对目的IP进行漏洞扫描。

    可以对脚本进行更新,nmap --script-updatedb

    nmap自带的漏扫功能以前比较弱,现在已经集成了默认添加了nmap-vulners的vulners.nse。

    nmap-vulners 默认查询VulDB,MITRE CVE,SecurityFocus等多个漏洞数据库,功能还是很强大的。

    # 安装vulners,实际默认已包含
    git clone --depth=1 https://github.com/vulnersCom/nmap-vulners.git
    cp nmap-vulners/vulners.nse /usr/share/nmap/scripts/
    nmap --script-updatedb
    
    # 安装http-vulners-regex
    cp nmap-vulners/http-vulners-regex.nse /usr/share/nmap/scripts/
    cp nmap-vulners/http-vulners-regex.json /usr/share/nmap/nselib/data/
    cp nmap-vulners/http-vulners-paths.txt /usr/share/nmap/nselib/data/
    nmap --script-updatedb
    
    # 使用vulners,必须带-sV参数以提供版本信息
    nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>
    
    #使用http-vulners-regex
    nmap --script http-vulners-regex.nse [--script-args paths={"/"}] <target>
    

    同时,我们还可以安装第三方的vulscan。

    vulscan查询的数据库和nmap-vulners基本重合,只是它具备离线扫描功能,并且有更灵活的参数控制。

    默认安装的数据库:

    # 安装
    cd /usr/share/nmap/scripts
    git clone --depth=1 https://github.com/scipag/vulscan.git
    
    # 保持数据库最新(非必须)
    chmod +x vulscan/utilities/updater/updateFiles.sh
    bash vulscan/utilities/updater/updateFiles.sh
    
    # 使用vulscan
    # 一次只查一个数据库
    nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=exploitdb.csv <target>
    # 一次性查询所有数据库
    nmap --script vulscan -sV <target>
    

    其他

    • 可以使用 xsltproc 转化 xml 格式的报告为html,便于阅读。

      xsltproc -o results/report_vuln.html results/report_vuln.xml

    • 偶尔遇到扫描过程中报段错误

      可以先使用 -vv 参数获取目的ip的基本信息,然后再进行进一步扫描。
      或者不要使用-iL命令,每个IP分开扫描。

    • 常用公开漏洞库

    资料都是自己之前在浏览一些安全资讯网站(solidot、Freebuf等)收集到的,来自广大网友的分享&提醒建议。
    还有就是如果想得到一些最新的漏洞信息,订阅一些大牛的blog作为信息源是很有必要的,这也算是第1/2手信息了吧~~

    作者:耀祖
    链接:https://www.zhihu.com/question/24793210/answer/28993361
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Autofac(01)
    深入理解ADO.NET Entity Framework(02)
    使用excel 数据透视表画图
    C# 控制CH341进行SPI,I2C读写
    C# winform使用combobox遍历文件夹内所有文件
    通用分页存储过程
    如何让你的SQL运行得更快
    sql优化之使用索引
    SQL优化
    SQL 循环语句几种写法
  • 原文地址:https://www.cnblogs.com/jamesnpu/p/13597977.html
Copyright © 2020-2023  润新知