*参考来源:infosecinstitute,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
在侦查过程中,信息收集的初始阶段是扫描。
侦查是什么?
侦查是尽可能多的收集目标网络的信息。从黑客的角度来看,信息收集对攻击非常有帮助,一般来说可以收集到以下信息:
电子邮件、端口号、操作系统、运行的服务、Traceroute或者DNS的信息、防火墙识别和逃逸等等
NMAP的简介
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
NMAP脚本引擎
NMAP脚本引擎是NMAP最强大且灵活的特性。它允许用户编写简单的脚本来自动化执行各种网络任务,基本上这些脚本采用lua语言进行编写。通常NMAP的脚本引擎可以做很多事情,比如:
网络发现
这是NMAP的基本功能,例子包括查找目标域名的whois信息,在查询ARIN,RIPE,或APNIC上查询目标ip的所有权,查找开放端口,SNMP查询和列出可用的NFS/SMB/RPC共享和服务。
漏洞检测
当一个新的漏洞被发现,你想赶在入侵者之前快速扫描网络来识别出有漏洞的系统。虽然NMAP不是一个全面的漏洞扫描器,但NSE是强大到足以应付苛刻的漏洞检查。许多漏洞脚本已经可用,并计划编写更多的脚本。
后门检测
很多攻击者和一些自动化蠕虫会留下后门以便后期可再次进入。其中一些可以被NMAP基于正则表达式检测。
漏洞利用
作为一种脚本语言,NSE甚至可以进行漏洞利用,而不仅仅是找到它们。添加自定义攻击脚本的这个功能可能对某些人(特别是渗透测试人员)有价值,但不打算把NMAP开发成metasploit框架那样的东西。
正如你所看到的,我已经使用(-sc)选项(或-script),这会执行一个默认脚本来扫描网络。你可以看到我们得到ssh、rpcbind netbios-sn,但端口过滤或关闭,所以我们可以说,可能会有一些防火墙阻塞我们的请求。稍后我们将讨论如何识别防火墙和试图逃避它们。
现在我要发现模式的运行ping扫描(-sP –script discovery),这样它会尝试所有可能的方法来扫描,这样我将得到更多有趣的信息。
图像中可以看到,它正在根据脚本的规则尝试所有可能的方法。有关更多信息,请参见下一个图像。
你能看到有趣的端口和协议吗?你可以看到dns-bruteforce发现主机包含一些blog,cms,sql,log,mail等二级域名。这里我们可以执行SQL注入,博客可能是WordPress,Joomla等,所以我们可以利用已公开的CMS漏洞。
接下来我会描述如何编写自己的NMAP脚本,并通过NMAP去调用。
基本扫描技术
在这里我将展示用于扫描网络/主机的基本技巧。但在此之前,你应该知道关于扫描后的NMAP状态的一些基本的东西。
端口状态:扫描后,你可能会看到一些结果,端口状态是过滤,打开,关闭,等等。让我解释这一点。
开放:这表明一个应用程序侦听此端口上的连接。
关闭:这表示收到了探头,但没有应用程序侦听此端口。
已过滤:这表明探针没有收到,无法建立连接。它也表明探针被某些筛选给丢弃。
未过滤:这表明探针接收但无法建立连接。
打开/过滤:这表示该端口进行过滤或打开,但NMAP的无法建立连接。
关闭/过滤:这表示该端口进行过滤或关闭,但NMAP的无法建立连接。
扫描单个网络
执行NMAP 192.168.1.1或者www.baidu.com这样的主机名。
扫描多个网络/目标
执行NMAP 192.168.1.1 192.168.1.2等,NMAP将扫描同个网段内不同的ip地址。
你还可以在相同的命令一次扫描多个网站/域名。见下面的图片。这将域名转换为其对应的IP地址和扫描目标。
扫描连续的IP地址
命令:NMAP 192.168.2.1-192.168.2.100
NMAP也可以用使用CIDR(无类别域间路由)表示法整个子网。
命令:NMAP 192.168.2.1/24
扫描目标列表
如果你有大量的系统进行扫描,就可以在文本文件中输入IP地址(或主机名),并使用该文件作为输入。
命令:NMAP -iL [LIST.TXT]
扫描随机目标
该-IR参数可以用来选择随机Internet主机进行扫描。 NMAP会随机生成目标的指定数量,并试图对其进行扫描。
语法:NMAP -ir [主机数]
该-exclude选项与用于从NMAP的扫描中排除主机。
命令:NMAP 192.168.2.1/24 -exclude 192.168.2.10
侵入性扫描
最常用的NMAP的选项,试图用一个简单字母A的替代长字符串。它也会执行路由跟踪等。
命令:NMAP -A主机
使用NMAP探索
使用NMAP探索是非常有趣且对渗透测试非常有帮助。在发现过程中可以了解服务,端口号,防火墙的存在,协议,操作系统等,我们将一个接一个讨论。
不进行Ping
该-PN选项指示NMAP跳过默认的发现检查并对执行对目标的完整端口扫描。当扫描被阻止ping探针的防火墙保护的主机时,这是非常有用的。
语法:NMAP -PN 目标
仅进行Ping扫描
选项-sP让NMAP仅对主机进行ping。当要探测一批ip地址中哪些是可达的时候非常有用。通过指定特定的目标,你可以得到更多的信息,比如MAC地址。
命令: NMAP -sP 目标
TCP SYN扫描
在我们开始之前,我们必须知道SYN数据包是什么。
基本上是一个syn包被用于启动两个主机之间的连接。
在TCP SYN ping发送一个SYN包到目标系统,并监听响应。这种替代探索方法对被配置为阻止标准ICMP ping消息主机是有用的。
该-PS选项进行TCP SYN Ping。
命令:NMAP -PS主机
TCP Ack Ping扫描
这种类型的扫描将只扫描确认(ACK)数据包。
选项-PA对指定主机进行TCP Ack Ping扫描。
命令:NAMP -PA 目标
UDP Ping 扫描
选项-P对指定主机进行UDP Ack Ping扫描。
SCTP初始化Ping
选项-PY指示的Nmap执行一个SCTP INIT Ping。此选项将包含一个最小的INIT块的SCTP包。这一探索方法试图找到使用流控制传输协议(SCTP)主机。 SCTP通常用于对基于IP的电话系统。
命令:NMAP -PY 目标
ICMP Echo ping
选项-PE将对指定主机执行ICMP(互联网控制消息协议)回显Ping。
命令:NMAP -PE 目标
ICMP 时间戳 ping
选项-PP执行一次ICMP时间戳ping。
命令:NAMP -PP 目标
ICMP 地址掩码 ping
选项-PM 进行ICMP 地址掩码 ping.
命令:nmap –PM target
IP 协议 Ping
选项-PO执行IP协议Ping扫描
命令:NMAP -PO protocol 目标
一个IP协议的ping发送带有指定的协议目标的数据包。如果没有指定的协议,则默认的协议1(ICMP)、2(IGMP)和4(IP中的IP)的使用。
ARP Ping
选项-PR用于执行ARP ping扫描。该-PR选项指示的Nmap对指定目标执行ARP(地址解析协议)ping操作。
命令:NMAP -PR 目标
扫描本地网络时,-PR选项会自动暗中启用。这种类型的发现是比其它Ping的方法快得多。
路由跟踪
选项-traceroute可被用于跟踪的网络路径指定的主机。
语法:NMAP -traceroute 目标
强制反向DNS解析
选项-r指示的Nmap始终执行对目标IP地址的反向DNS解析。
语法:NMAP -R 目标
选项-r在对一个IP段进行侦查时非常有用,Nmap将尝试查询每个ip地址的反向DNS信息 。
禁用反向DNS解析
选项-n用于禁用反向DNS解析
命令:NMAP -n 目标
反向dns解析会很明显的减慢Nmap扫描的过程。使用-n选项大大降低了扫描时间,尤其是扫描大量主机的时候。如果你不关心目标系统的DNS信息,并愿意执行产生更快的结果扫描此选项很有用。
选择DNS查找方法
选项-system-dns指示NMAP使用主机系统自带的DNS解析器,而不是其自身内部的方法。
命令:NMAP -system-dns 目标
手动指定DNS服务器
选项-dns-servers用于扫描时手动指定DNS服务器进行查询。
语法:NMAP -dns-server server1 server2 目标
选项-dns-servers允许您为nmap的查询指定一个或多个备用服务器,这对于没有配置DNS,或者如果你想防止您的扫描查找出现在您的本地配置的DNS服务器的日志文件系统非常有用。
清单扫描
选项-sL将显示一个列表,并执行指定的IP地址反向DNS查找。
语法:NMAP -sL 目标
在接下来的文章中,我将讨论如何使用不同的方法来发现服务,主机和banner,并还将讨论如何和怎样在Nmap使用NSE来找到和逃避防火墙,以及如何编写自己的Nmap脚本。 Nmap的最重要的部分是知道如何查找漏洞,并尝试利用它们。 敬请关注。