1、常见的扫描结果

在开启了防火墙的win7 sp1个人系统上用-A 参数扫描几乎无法扫描出任何信息。

端口状态全是:Filtered。关闭防火墙后可以扫描出开放端口及服务版本信息。由此可见对于个来电脑来说开启防护墙是非常重要的。

   端口状态:filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。

扫描一个常见的服务器一般情况下结果类似这样:

xx.xx.com的扫描结果

root@kali:~# nmap xx.xx.xx.85

Starting Nmap 7.70 ( https://nmap.org ) at 2019-0x-31 21:30 EST

Nmap scan report for xx.xx.xx.85

Host is up (0.0099s latency).

Not shown: 996 filtered ports

PORT     STATE  SERVICE

80/tcp   open   http

113/tcp  closed ident

443/tcp  open   https

9999/tcp open   abyss

 

2、扫描参数与绕过防火墙

默认情况下,Nmap执行一个TCP的 SYN扫描,它还支持其他可能发现更多开放端口的选项扫描方式。没有经验的用户和刚入门者总是用默认的SYN扫描解决每个问题。 既然Nmap是免费的,掌握端口扫描的唯一障碍就是知识。

关于如何使用nmap 绕过防火墙,还是得多观察流量包的情况,及时调整绕过策略,组合多种策略。

调整扫描参数的意义在于:1、绕过安全措施发现更多开发端口信息

  1. 更快的得到需要的主机或端口信息。

  除使用防火墙限止网络的行为外,使用入侵检测系统(IDS)的公司也不断增加。由于Nmap 常用于攻击前期的扫描,因此所有主流的IDS都包含了检测Nmap扫描的规则。 现在,这些产品变形为入侵预防系统(IPS),可以主 动地阻止可疑的恶意行为。不幸的是,网络管理员和IDS厂商通过分析报文 来检测恶意行为是一个艰苦的工作,有耐心和技术的攻击者,在特定Nmap选项 的帮助下,常常可以不被IDS检测到。同时,管理员必须应付大量的误报结果, 正常的行为被误判而被改变或阻止。

Nmap 官方手册中提到Nmap不提供检测和破坏防火墙及IDS系统的魔弹(或Nmap选项),它使用的是技术和经验,这超出了本参考手册的范围,但手册中描述了相关的选项和完成的工作。

 

 

3、脚本引擎NSE

NSE  NMAP脚本引擎是最重要的功能之一它不仅可以漏洞检测还可以漏洞利用。

  • -sc 选型是采用一个默认脚本来扫描网络
  • nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击
  • -sP --script discovery 会尝试所有所有可能的方法来扫描,这样我将得到更多有趣的信息。
  • --script-trace: 查看脚本执行过程
  • -A: 同时进行版本探测和脚本扫描
  • 为了不进行主机发现也不进行端口扫描,直接使用自定义的脚本探测。可以使用下面的选项:-Pn -sn --script
  • 可根据需要设置--script=类别这种方式进行比较笼统的扫描

类别如下:https://nmap.org/book/nse-usage.html#nse-categories

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

每个脚本的实现中会有categories = {"vuln", "safe", "external"} 类似的一行代码表明脚本属于哪个类别。

脚本位置/usr/share/nmap/script/     脚本信息查看:可以通过查看script.db

  • nmap --script=mysql-* 192.168.137.4 对某应用/服务的所有脚本扫描
  • --script-args=x=x,y=y: 为脚本提供参数
  • --script-args-file=filename: 使用文件来为脚本提供参数
  • --script-trace: 显示脚本执行过程中发送与接收的数据
  • --script-updatedb: 更新脚本数据库
  • --script-help=<Lua scripts>: 显示脚本的帮助信息

您也可以使用布尔表达式来选择脚本,这些表达式可以使用和 , 或者和非运算符来构建。 布尔表达式中的名称可以是一个类别,一个来自script.db的文件名,或者全部。

例如:要加载所有脚本,并忽略vuln类别中的脚本,请在终端上运行此命令。

$ nmap --script "not vuln" 192.168.56.10

 

 

找到所有的NSE脚本的最简单方法是使用find命令如下所示。

find / -name ‘*.nse’   或者locate *.nse

 

下载一个新脚本如http-google-email.nse之后,我们需要手动更新脚本数据库,执行如下的命令:

Nmap -script-updatedb

更新完成后,就可以运行脚本了。Nmap -p80 –script http-google-email <目标>

Nmap提供5种不同的输出格式包括方便程序利用的xml和html格式

Github上的一些较有针对性Nmap脚本,可自行搜索、下载。

写自己的NSE脚本,请查看本指南: https : //nmap.org/book/nse-tutorial.html

 

4、利用nmap-vulners.nsevulscan.nse两个脚本发现CVE漏洞

python nmap 检测端口 nmap扫描端口结果分析_数据库

nmap-vulners NSE 脚本(以红色突出显示)报告了过去几年中披露的十几个 CVE。显示时按严重性排序,"9.3" 开始最严重,位于列表顶部,因此值得深入研究。vulscan NSE 脚本(以蓝色突出显示)还报告了十多个与 OpenSSH v4.3 相关的有趣漏洞。

这两个 NSE 脚本在显示与易受攻击的服务相关的有用信息方面做得非常出色。每次我们使用 NSE 脚本时,Nmap-vulners 都会查询Vulners exploit 数据库。另一方面,Vulscan 会在我们的计算机上查询当我们第一次下载 vulscan 时预先配置的本地数据库。

安装这些脚本:

 1 安装 Nmap-Vulners 

要安装 nmap-vulners 脚本,我们首先使用cd切换到 Nmap 脚本目录

cd /usr/share/nmap/scripts/

然后,通过在终端中输入以下命令来克隆 nmap-vulners GitHub 存储库。

git clone https://github.com/vulnersCom/nmap-vulners.git

nmap-vulners 安装后不需要配置

2 安装 Vulscan

要安装 vulscan,我们还需要将 GitHub 存储库克隆到 Nmap 脚本目录中。键入下面的命令来执行此操作。

git clone https://github.com/scipag/vulscan.git

如前所述,vulscan 利用本地存储在我们计算机上的预配置数据库。我们可以在 vulscan 目录的根目录中查看这些数据库。运行以下命令列出可用的数据库。

ls vulscan/*.csv

Vulscan 支持许多优秀的漏洞数据库。这是一个完整的列表:

· scipvuldb.csv

· cve.csv

· osvdb.csv

· securityfocus.csv

· securitytracker.csv

· xforce.csv

· expliotdb.csv

· openvas.csv

为确保数据库完全保持最新,我们可以使用 vulscan /utilities/updater/ 目录中的 updateFiles.sh 脚本。通过在终端中输入以下命令更改到更新程序目录。

cd vulscan/utilities/updater/

然后,使用下面的命令确保该文件具有在计算机上执行的适当权限。

chmod+x updateFiles.sh

然后,我们可以通过在我们的终端中输入以下命令来执行和运行脚本。

./updateFiles.sh

 

 3 使用 Nmap-Vulners 进行扫描

使用 NSE 脚本很简单。我们所要做的就是将– script 参数添加到我们的 Nmap 命令中,并告诉 Nmap 使用哪个 NSE 脚本。要使用 nmap-vulners 脚本,我们将使用下面的命令。

nmap --script nmap-vulners -sV

该 -sV 是绝对必要的。使用 -sV,我们告诉 Nmap 探测版本信息的目标地址。如果 Nmap 不生成版本信息,nmap-vulners 将不会有任何数据来查询 Vulners 数据库。使用这些 NSE 脚本时始终使用 -sV。

4、使用 Vulscan 进行扫描

我们可以像 nmap-vulners 一样使用 vulscan NSE 脚本:

nmap --script vulscan -sV

 

默认情况下,vulscan 会一次查询所有前面提到的数据库!正如我们在上面的图片中看到的那样,消化的信息量非常大。这比我们需要的信息要多得多。我强烈建议一次只查询一个数据库。我们可以通过将 vulscandb 参数添加到我们的 Nmap 命令并指定数据库来实现此目的,如下面的示例所示。

nmap --script vulscan --script-args vulscandb = exploitdb.csv -sV

 

5、合并为一个命令

nmap --script nmap-vulners,vulscan --script-args vulscandb = scipvuldb.csv -sV -p22 192.XX.XX.XX