如何使用Nmap网络扫描创建库存?

日期: 2010-11-23 作者:Ronald McCarty翻译:Mark 来源:TechTarget中国 英文

对于系统管理员和网络管理员来说,工作中有时需要创建系统库存。信息安全专家也常常需要库存。即使在有库存工具的企业中也需要好的方法来认可库存,并识别一些工具不能识别的系统。   开放源码的安全审计工具Nmap有运行ad-hoc所需的必要功能或库存的自动化处理。

然而,对于那些不明显的参数和输出格式,在你的环境中通过使用可用的格式来快速创建一个库存是可以实现的。   生成有用Nmap结果   为了创建一个有用的库存,生成数据的格式十分严格。如果要共享一个报告,那么可能需要便携式的格式。逗号分隔值(CSV)是理想的选择,因为这个格式能很容易地加载到电子表格和数据库程序中。

如果不共享报告,那么独立的格式就……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

对于系统管理员和网络管理员来说,工作中有时需要创建系统库存。信息安全专家也常常需要库存。即使在有库存工具的企业中也需要好的方法来认可库存,并识别一些工具不能识别的系统。

  开放源码的安全审计工具Nmap有运行ad-hoc所需的必要功能或库存的自动化处理。然而,对于那些不明显的参数和输出格式,在你的环境中通过使用可用的格式来快速创建一个库存是可以实现的。

  生成有用Nmap结果

  为了创建一个有用的库存,生成数据的格式十分严格。如果要共享一个报告,那么可能需要便携式的格式。逗号分隔值(CSV)是理想的选择,因为这个格式能很容易地加载到电子表格和数据库程序中。如果不共享报告,那么独立的格式就包含在输出中,这篇文章将提供CSV生成的例子。

  Nmap创建的库存和其它网络投票工具是一个基于网络的库存。创建的库存为系统、应用程序或协议管理提供重要的信息,例如:操作系统和应用程序在这个网络端口上的系统IP地址运行。库存不会包括系统有多少内存,有多少处理器等信息。这类型的硬件库存需要系统的SNMP代理,又需要一些运行在系统上的程序或脚本来决定系统的硬件。

  创建系统报告

  使用Nmap可以很快的生成一份系统报告。通过对网络进行简单的扫描,使用标识符 (-O)操作系统就会很快发现一份系统和协议列表,并依靠(-V)尽可能多的输出全部的网络(/24):

nmap -O -v 192.168.1.0/24

  然而,因为网页和输出网页都是生成的,格式是很难控制,。这所需要的就是非常清晰的输出,它能很容易就能载入到电子表格中。

  Nmap支持输出参数(-o)来影响如何写数据到标准的输出。通过关联使用G(-oG),Nmap将与grep一起使用来创建输出,这将使我们更加容易的创建详细目录。

  运用操作系统识别和“可搜索的”输出格式,下面的命令能用来运行原始报告并向report.txt输出报告:

nmap -O -oG report.txt 192.168.1.0/24

  但是这个报告仍然很难读取,也不容易被电子表格程序或数据库读取,因为它浏览整个网络,所以它包括没有分配到系统的IP地址:

cat report.txt
# nmap 5.21 scan initiated Thu Sep 30 08:28:31 2010 as: nmap -O -oG report.txt 192.168.1.0/24
Host: 192.168.1.0 ()    Status: Down
Host: 192.168.1.3 ()    Status: Down
Host: 192.168.1.4 ()    Status: Down
Host: 192.168.1.5 ()    Status: Down
Host: 192.168.1.1 (router.domain.com)          Status: Up
Host: 192.168.1.1 (router.domain.com)          Ports: 80/open/tcp//http///, 443/open/tcp//https///, 4567/open/tcp//unknown///, 8080/open/tcp//http-proxy///, 8443/open/tcp//https-alt///      Ignored State:closed (995)    OS: Linux 2.4.18 - 2.4.35 (likely embedded) Seq Index: 205            IP ID Seq: All zeros

  为了创建一个包括IP地址、主机名和操作系统的系统报告,我们需要注意包含信息的行。识别这些行的最简易方法是搜索操作系统:

grep "OS:" report.txt
Host: 192.168.1.1 (router.domain.com)          Ports: 80/open/tcp//http///, 443/open/tcp//https///, 4567/open/tcp//unknown///, 8080/open/tcp//http-proxy///, 8443/open/tcp//https-alt///            Ignored State: closed (995)    OS: Linux 2.4.18 - 2.4.35 (likely embedded) Seq Index: 205            IP ID Seq: All zeros

  我们现在有必要的信息来创建报告。但是,很多信息存在于不被需要且应该在报表生成终止的报告入口(如开放端口、序列等)。让我们移除Host:和Ports:,还有所有包括在内的端口和OS:,所有以Seq开始的事情直到行的终点,最后,第一个括号围住主机名:

grep "OS:" report.txt | sed 's/Host: //' | sed 's/Ports.*OS://' | sed 's/Seq.*$//' | sed 's/(//' | sed 's/)//'

  这个命令的输出通过以下形式:

192.168.1.1 router.domain.com          Linux 2.4.18 - 2.4.35 (likely embedded)

  现在,IP地址、主机名和操作系统都容易识别了,它是输出到awk来为CSV添加引号和逗号的管道问题了。基本上,引号都加在IP地址、主机和所有组成操作系统识别标签的词周围:

grep "OS:" report.txt | sed 's/Host: //' | sed 's/Ports.*OS://' | sed 's/Seq.*$//' | sed 's/(//' | sed 's/)//' | awk '{print """ $1 "",""$2""," $3 " " $4 " "  $5 " "  $6 " "  $7 " "  $8 " "  $9 " " $10 " "  $11 " "  $12 " " $13 " " $14 """}' >report.csv

  看看新创建的report.csv文件,输出现在在CSV格式中,且很容易就能下载到电子表格中:

cat report.csv
"192.168.1.1","router.domain.com","Linux 2.4.18 - 2.4.35 (likely embedded) "
"192.168.1.2","freddy","Linux 2.4.35"
"192.168.1.6","computer.home","Linux 2.4.21 (embedded)|MontaVista embedded Linux 2.4.17 "
"192.168.1.7","IMAC.home","Apple Mac OS X 10.5 - 10.6.1 (Leopard - Snow Leopard) (Darwin"
"192.168.1.8","new-host-3.home","Apple iPhone mobile phone (iPhone OS 3.0 - 3.2, Darwin 10.0.0d3) "
"192.168.1.11","new-host-5.home","Apple Mac OS X 10.5 - 10.6 (Leopard - Snow Leopard)"
"192.168.1.15","AppleTV.home","Apple Mac OS X 10.4.8 - 10.4.11 (Tiger) (Darwin 8.8.0 – 8.11.1)"

  它是一个连接

  运用nmap输出,结合grep、sed和awk的力量,一个完整的网络库存可以花几秒内中就在小环境中产生,甚至在几分钟内在很大的环境中产生。

  寻求信息安全的专家可以运用这些相同的工具来识别变化,如环境中的系统的附加和移除。

相关推荐