1. 输出格式
安全工具只有在输出结果时才是有价值,如果没有通过组织和易于理解的方式来表达,复杂的测试和算法几乎没有意义。因此 nmap 提供了一些格式,包含了方便直接查看的交互方式和方便软件处理的 XML 格式。
除了提供输出格式外,nmap 还提供了选项来控制输出的细节以及调试信息。输出内容可发送给标准输出或命名文件,可以追加或覆盖。输出文件还可被用于继续中断的扫描。
2. 五种输出格式
nmap 支持的 5 种输出格式:
interactive output
(交互输出)
normal output
(正常输出)
XML
(XML输出)
grepable output
(查询输出)
sCRiPt KiDDi3 output
(脚本输出)
默认的方式是
interactive output
,发送给标准输出(stdout)。
normal output
类似于interactive output
,但显示较少的运行时间信息和告警信息,这是由于这些信息是在扫描完全结束后用于分析,而不是交互式的。
XML
输出是最重要的输出类型,可被转换成 HTML,对于程序处理非常方便,如用于 Nmap 图形用
户接口或导入数据库。
grepable output
格式,在一行中包含目标主机最多的信息。
sCRiPt KiDDi3 0utPUt
格式,用于考虑自己的用户|<-r4d
。
交互式输出是默认方式,没有相应的命令行选项,其它四种格式选项使用相同的语法,采用一个参数,即存放结果的文件名。多种格式可同时使用,但一种格式只能使用一次(例如,在标准输出用于查看的同时,可将结果保存到 XML 文件)。
3. 输出格式使用
3.1. 标准输出
-oN <filespec>
(标准输出) 该选项要求将标准输出直接写入filespec
指定的文件。
3.2. XML 输出
-oX <filespec>
(XML 输出) 将输出直接写入filespec
指定的 xml 文件,得到的 xml 文件可以由浏览器,或其他的编程语言,Java,python 进行解析。XML 输出引用了一个 XSL 样式表,用于格式化输出结果这类似于 HTML 可以使用浏览器进行预览。
3.3. 脚本输出
-oS <filespec>
(ScRipT KIdd|3 oUTpuT) 类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ, 因为原来 nmap 都是大写的输出。
3.4. Grep 输出
-oG <filespec>
(Grep 输出) 前面说过 XML 输格式很强大,便于有经验的用户使用。XML 是一种标准,由许多解析器构成,而 Grep 输届更简化。XML 是可扩展的,以支持新发布的 Nmap 特点。使用 Grep 输出的目的是忽略这些特点,在没有足够空间的情况下可以节约空间。
这是一种简单格式,每行一个主机,可以通过 UNIX 工具(如 grep、awk、cut、sed、diff)和 Perl 方便地查找和分解。常可用于在命令行上进行一次性测式。查找 ssh 端口打开或运行 Sloaris 的主机,只需要一个简单的 grep 主机说明,使用通道并通过 awk 或 cut 命令打印所需的域。
Grep 输出可以包含注释(每行由
#
号开始)。每行由 6 个标记的域组成,由制表符及冒号分隔。这些域有主机,端口, 协议,忽略状态, 操作系统,序列号, IPID 和状态。这些域中最重要的是 Ports,它提供了所关注的端口的细节,端口项由逗号分隔。每个端口项代表一个所关注的端口,每个子域由/分隔。这些子域有:端口号, 状态,协议,拥有者,服务,SunRPCinfo 和版本信息。
3.5. 输出至所有格式
-oA <basename>
(输出至所有格式) 此选项可将扫描结果以标准格式
,XML格式
和Grep 格式
一次性输出,就是同一份结果使用不同格式输出(比如一份学生信息以 docx 格式和 PDF 格式输出)。分别存放在basename.nmap
,basename.xml
和basename.gnmap
文件中。
4. 细节和调试选项
4.1. 提高输出信息的详细度
-v
(提高输出信息的详细度) 提高详细度可以输出扫描过程的更多信息。比如打开的端口,估计扫描结束时间。
这个选项可以使用两次(使用两次即
nmap -vv
)来输出更详细的信息,但是使用两次以上是没有作的。
图中的信息就很详细
4.2. 提高或设置调试级别
-d <level>
(提高或设置调试级别) 如果使用详细信息模式 (前面的-vv
选项)也没有办法提供更详细信息的时候就可以使用 提高或设置调试级别 选项,这个选项 d 是 debug 的首字母,设置这个调试级别又可以得到更多的详细信息。
level
参数表明需要设置到的级别,级别最高可以设置到第 9 级,例如-d9
表示设置级别为 9,这时就会得到庞大的的输出内容。
调试级别的本意是给开发人员使用的,作为黑客或网络安全工程师有一些调试信息无法看懂也没关系,从这些信息中寻找自己需要的信息即可。
4.3. 跟踪发送和接收的报文
--packet-trace
(跟踪发送和接收的报文) 这个选项让 nmap 打印每个发送报文和接收报文的摘要,这个一般也用在调试方面,可以用来研究 nmap 是怎么工作的。
避免输出过多无用内容,可以限制扫描的端口数如只扫描
-p20-30
这 10 个端口。 如果只要进行版本检测可以只使用--version-trace
。
4.4. 列举接口和路由
--iflist
(列举接口和路由) 输出检测到的接口列表和系统路由,用于调试路由问题或设备描述失误,比如失误有把 PPP 连接当作以太网。
5. 关于输出的其他选项
5.1. 输出文件追加内容
--append-output
(在输出文件中添加) 输出格式可以输出到指定格式的文件中,上次的输出创建了一个指定格式的文件,这次再向这个文件进行输出,那么上次输出的内容将被这次的输出内容覆盖,也就是说只保存最后一次输出的内容。
为了不不覆盖上次的输出内容我们可以使用这个选项来让 nmap 在上次的输出内容后追加这次的输出内容。
这里注意点:对于 xml 格式文件,由于 xml 只能以一个特定的格式开头和一个特定的格式结尾,那么在 xml 文件后追加内容那么可以知道可能会出现多个开头和多个结尾,那么追加就会导致 xml 的格式错误无法解析。所以对于 xml 文件追加内容后需要手工修改追加后的文件。
xml 格式,如下
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<MSBuildProjectExtensionsPath>$(SolutionDir)Output\Objects\$(Configuration)\$(MSBuildProjectName)\obj\</MSBuildProjectExtensionsPath>
</PropertyGroup>
</Project>
追加导致 xml 出现多个头多个尾无法解析,如下
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<MSBuildProjectExtensionsPath>$(SolutionDir)Output\Objects\$(Configuration)\$(MSBuildProjectName)\obj\</MSBuildProjectExtensionsPath>
</PropertyGroup>
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<MSBuildProjectExtensionsPath>$(SolutionDir)Output\Objects\$(Configuration)\$(MSBuildProjectName)\obj\</MSBuildProjectExtensionsPath>
</PropertyGroup>
</Project>
5.2. 继续中断的扫描
--resume <filename>
(继续中断的扫描) 使用 nmap 探测网络有时会持续较长的时间,比如持续一天,一周。但是电脑需要用于其他的用途,这时候就需要中断(中断扫描按下Ctrl-C
快捷键即可)网络扫描。
我们有空了就可以恢复上次中断的扫描,如果标准扫描 (
-oN
)或 Grep 扫描(-oG
)日志还保留,只需要简单地使用选项--resume
让 nmap 恢复上次的扫描。
选项使用方式
nmap --resume logfilename
。 nmap 把新的结果添加到文件中,这种方式不支持 XML 输出格式,因为将两次运行结果合并至一个 XML 文件比较困难,这个前面也说过会导致 xml 格式错误。
5.3. 设置 XSL 样式表,转换 XML 输出
--stylesheet <path or URL>
(设置 XSL 样式表,转换 XML 输出) XSL 样式表nmap.xsl
,用于查看 或转换XML
输出至HTML
文件。XML
输出包含了xml-stylesheet
选项, 直接指向nmap.xml
文件, 该文件由 nmap 安装 (或位于 Windows当前工作目录)。
在 Web 浏览器 中打开 Nmap 的 XML 输出时,将会在文件系统中寻找
nmap.xsl
文件, 并使用它来输出结果。如果想使用其他的样式表,将你要使用的样式表作为--stylesheet
的参数,必须指定完整的路径或 URL,常见的调用方式是--stylesheethttp://www.insecure.org/nmap/data/nmap.xsl
。 这告诉浏览器从 Insecire.Org 中加载最新的样式表。这使得没安装 nmap(和 nmap.xsl) 的机器中可以方便地查看结果。因此 URL 更方便使用,本地文件系统的 nmap.xsl 用于默认方式。
5.4. 忽略 XML 声明的 XSL 样式表
--no_stylesheet
(忽略 XML 声明的 XSL 样式表) 禁止 nmap 的 XML 输出关联到任何 XSL 样式表。 使用了该选项后,用于关联 XSL 样式表的xml-stylesheet
选项指示被忽略。