nmap

1.1介绍

nmap是一个自由且开源的网络探测及安全审计软件。许多系统和网络管理员同样认为它在编制网络目录、管理服务升级计划、监控主机服务正常运行时间方面很有用。nmap用新颖的方式发送未加工的ip数据包来探测网络上可利用的主机、主机都提供什么服务(应用名称和版本)、运行着什么操作系统、使用着什么防火墙/数据包过滤器,和许许多多其他的特征。

它是被设计为快速的扫描大型的网络,在单个主机上同样运行良好。nmap可以运行在所有版本主流操作系统上,有着命令行和图形化的版本。

这章使用虚构的故事来提供一个nmap大概的样子和经典使用方法。这么一个重要的正当的小节帮助使用者避免(至少留心)有争议的用法,可能导致网络服务提供商账户被删除甚至更严重的民事和刑事控诉。

1.2nmap概要和阐释

有些时候理解一个东西最好的方式就是实践。这一小节包括了nmap(最经常)被使用的虚构的经典案例。nmap初学者不应该期望马上理解所有的东西。这只是对于特性的一个综述,将会在接下来的章节里详细被解释。贯通这本书中的”解决方式”包括了许多使用nmap的安全审计者和网络管理员常见的任务。

**1.2.1线上阿凡达Avatar online
**

11月15日,Felix尽职尽责地按时工作,虽然他不期盼许多被安排好的任务。他工作的小型洛杉矶渗透测试公司最近因为即将来临的假日显得格外平静。Felix用工作时间继续他最新的爱好,为了无线侦察和战争驾驶搭建强有力的WI-FI天线。尽管如此,Felix期望更多的业务。

从小时候起Hacking就是是他的爱好和迷恋的事物,他了解了所有他能够了解的知识关于网络、安全、unix操作系统、电话系统。有时候,他的好奇心带他走了太远,在1990年实施的sundevil行动Felix几乎被卷了进去(sundevil行动,英国全国范围内清扫非法黑客行为的行动)。幸运的是Felix安全度过了他的青少年时期,未曾接到过犯罪指控,同时保留了对于安全弱点专家级的知识。作为一个专家,他能够像以前一样实施网络入侵,但是对于实施入侵有着契约的豁免甚至还有钱拿。而不是保守他创造性的利用漏洞秘诀,他可以在提交报告的时候对管理阶级的客户夸耀它们。

所以当Felix的boss打断他焊接天线并宣布销售部与线上阿凡达赌博游戏公司达成了一笔渗透交易。

阿凡达是一个致力于创造新一代多玩家在线角色扮演的游戏公司。他们的产品,受展望于虚拟世界的Neil
Stevenson的《雪崩》(一本小说)的启发,是极其吸引人的同时也是高级机密。在见证了高调泄露的游戏软件代码后,阿凡达公司迅速雇佣了安全专家。Felix的工作是当他的同伴在物理安全、源代码审计、社会工程诸如此类的方面工作时,开始实施一个外部的(防火墙之外)漏洞评估。Felix被允许利用任何被找到的漏洞。

漏洞评估的第一步是网络发现。网络侦察确定目标使用的ip范围、可利用的主机、那些主机提供的什么服务、具体网络拓扑结构以及实施的防火墙/数据包过滤策略。

确定ip范围来扫描通常会是一个牵扯到ARIN(或其他ip注册中心)的探测,DNS(域名服务系统)和尝试区域传送,各种类型的web侦测技术,等等。

但是在这个案例中,阿凡达公司精确说明了需要探测的网络:公司的网络6.209.24.0/24以及属于生产区/DMZ(隔离区)6.207.0.0/22。Felix还是检查了ARIN的ip分配,确定这些ip确实属于阿凡达。Felix潜意识的解码了CIDR标识(计算子网掩码),是1280个ip。没有问题。

秉着严谨的态度,Felix最开始使用了众所周知的nmap列表扫描(-sL)。这个特性简单的列出给出的目标范围内每一个ip地址,并且做一个ip反查/反向域名解析(除非给出了-n选项)。这么做的一个原因是在于秘密行动。主机名会显示潜在的漏洞并且会导致一个对目标网络更深度的探测,所有这些都不会触发警报。Felix这么做还有一个原因,同时检查ip范围是否正确。给出ip范围的系统管理员可能会出错,扫描错误的公司将会是一个灾难。

对阿凡达公司的行动渗透他们的网络,合同是避免进监狱的免罪金牌,但对于Felix意外获取另一个公司服务器的root权限没有什么帮助。他显示的命令和结果的摘要显示在例子1.1中。

例子1.1

nmap -sL ip段

。。。

阅读了这些扫描结果,Felix发现所有进行了ip反查域名的机器都是阿凡达公司的。没有其他的公司使用了空闲ip。甚至,这些结果给了他有关于使用了多少机器,机器分别用来干什么一个粗略的想法。他现在准备好了更深层的入侵和端口扫描。

他使用nmap尝试确定每个服务在网络上监听的服务和版本号。他同样需要nmap通过发送一系列的TCP/IP探针根据操作系统指纹信息来远程猜测操作系统(OS)。

这些扫描不完全是静悄悄进行的,但Felix不担心这些。他感兴趣阿凡达的系统管理员能否注意到这些公然的扫描。思考了一会儿,他设置了如下的命令。

nmap -sS  -p-  -PS22,80,113,33334  -PA80,113,21000 -PU19000  -PE -A -T4 
-oA   avatartcpscan-121503    ip段

。。。

这些选项会在后来的章节详述,这是一个快速的总结。

-sS能够进行有效的TCP端口扫描以SYN的方式。Felix会在最后加上一个U,如果他想要扫描UDP端口,但他打算后面再做。SYN扫描是默认的扫描设置,但精确的设置它也无妨。

-p- 要求nmap扫描65535个端口(全部端口),默认的扫描1到1024,以及其他600个在nmap服务数据库里提到的端口。这个选项的形式是-p1-65535。他也可以设置-p0-65535如果他想要同样扫描比较不合理的端口0。选项-p有一个灵活的语法,甚至允许设置具体的TCP和UDP的端口集合。

-PS22,80,113,33334  -PA80,113,21000 -PU19000  -PE -A -T4  -oA  
avatartcpscan-121503 

这些是ping类型的联合用法,来确定是否有主机可利用并且避免浪费时间扫描未使用的ip。这是特别的咒语,往端口22、80、113、33334发送TCP
SYN数据包,往端口80、113、21000端口发送TCP
ACK数据包,往端口19000发送UDP数据包,和得到一个正常的ICMP回应数据包。如果Nmap从那些探针得到了目标主机的回应,它会认为那些主机是开机的并且对于扫描来说是可利用的。

这比nmap默认设置


简单的往端口80发送ACK数据包,要更加复杂。

在渗透测试的情景下,你经常想要扫描每一个主机即使它们看起来没有运行。毕竟,它们可能被某种方式过滤了,你选择探测的探针就被忽略了,但是其他的端口发现是可利用的。扫描每一个IP不管它是不是可利用的主机,使用-PN选项而不是上述全部命令。Felix在后台开始这样的一个扫描,虽然它可能会花费一天的时间来完成。

-A这个简短的选项开启了高级的富有攻击性的功能,比如OS和服务探测。截止写作的时间为止,它等于-sV
-sC
-O--traceroute(版本探测、nmap脚本引擎、远程操作系统探测、路由跟踪),许多特征被添加到-A选项里。

-T4用于攻击等级(#4 of 5共有5个等级)的时间调整,它等于-T
aggressive选项,但是更好打字和拼写。通常情况下,-T4选项被推荐除非你和目标之间的网络比拨号模式要快。(译者注:局域网环境)

-oA avatartcpscan-121503

每种形式的输出结果(正常的、XML、grepable)发送到文件avatartcpscan-121503。所有的输出形式都包括日期和时间,但Felix喜欢在文件名上标明。正常的输出和错误同样会发送到stdout。

6.209.24.0/24 6.207.0.0/22

这些是上面讨论过的阿凡达公司的网段。它们以子网掩码形式给出了,但nmap允许它们以其他形式呈现,例如
6.207.24.0/24可以代替为6.209.24.0-255。

因为对超过1000个ip地址的综合扫描会花费一点时间,Felix让它自己工作并继续玩自己的Yagi天线。几个小时后,他发现扫描已经完成了并瞄了一眼结果。案例1.2说明了机器发现的东西之一。

。。。
:::
:::
:::