参考:
Nmap中文手册 http://www.nmap.com.cn/doc/manual.shtm
《Nmap渗透测试指南》商广明
基础
关于namp
nmap是一款用于网络探测和安全审核的工具。nmap使用原始IP报文来发现网络上有哪些主机,提供什么服务。
nmap的命令格式:nmap <选项> <目标>
~
目标格式
对于目标,namp提供了一种“八位字节”的方法进行设置。格式如下:
192.168.123.0-255
其等效于下面的CIDR表示法:
192.168.123.0/8
主机发现
nmap提供了很多主机发现的选项。用户可以通过使用列表扫描(-sL)或者 通过关闭ping (-P0)跳过ping的步骤,也可以使用多个端口把TCP的SYN/ACK、UDP、ICMP 任意组合起来。
-sL
只列出网络上的主机而不对它们发送报文。但是仍然可以获取它们的名字。例如:
-sP
仅仅使用ping扫描,然后打印对扫描做出了相应的机器。
可以用来检测网络中有多少台主机正在运行。
但是无法探测出使用了防火墙的主机。
-P0
完全跳过namp发现阶段,这样做的好处是穿透禁止ping的防火墙,也可以避免被防火墙发现。
端口扫描
端口的状态
namp可以扫描超过1660个TCP端口,每个端口可以被分为6种状态:open(开放的), closed(关闭的),filtered(被过滤的), unfiltered(未被过滤的), open|filtered(开放或者被过滤的),或者 closed|filtered(关闭或者被过滤的)。
常见的几种状态如下图。
注意能否访问和端口是否开放没有联系。
扫描方法
可以使用-T0 ~ -T5来设置扫描速度,较慢的速度可以逃避IDS,较快的速度对网络要求较高,并且可能牺牲准确性。
使用-p指定要扫描的端口。
例如下图指定扫描80端口,对于192.168.199.1,速度为T5的快速扫描没能得出正确结论(open),只能说是filtered。
nmap支持十几种扫描技术,常见的如下。
-sS
TCP SYN扫描,最受欢迎,速度很快,可以一秒钟扫描几千个端口。
SYN又被称为半开放扫描,因为它不打开一个完全的TCP连接。它发送一个SYN报文,然后等待响应。 SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。
SYN扫描相对来说不易被注意到,因为它从来不完成TCP连接。
-sU
UDP扫描,常见的UDP服务包括DNS,SNMP,和DHCP。
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。
-sA
TCP ACK扫描,不能确定是open的还是open|filtered。
-sA用于发现防火墙规则。确定它们是有状态的还是无状态的,哪些端口是被过滤的。
探测
版本探测
除了探测到端口状态之外,还可以对其上面运行的服务和版本号进行探测。
如果管理员对其进行了别有用心的设置,探测结果可能出错。不过一般都是对的。
系统探测
还可以探测主机使用的操作系统。可能只能通过TTL来判断吧。
逃避防火墙/IDS的检测
-f
对报文分段,更容易逃避检测。
-D
使用虚假的诱饵地址发包,让对方的管理员以为是诱饵而忽略掉你真正的请求。
可以使用-D 加 数个地址
也可以使用-D 加 RND:10 这种格式,意味着生成10个随机的地址。
-sI
源地址欺骗
--source-port
源端口欺骗。
-g参数等效。
--spoof-mac
MAC地址欺骗
--data-length
附加随机数据让自己长得不像TCP或ICMP包。
输出
默认的输出是直接输出到命令行界面,不过还有其它的输出方式。
包括XML输出,XML输出是最重要的输出形式。
-oN
将命令行输出的内容保存到txt文件中,最简单的输出形式。
-oX
保存为.xml格式。
信息搜集
使用namp的NES脚本,可以对目标进行尽可能全面的信息收集。
--ip-geolocation-*
显示IP的地理位置。
--script whois
显示域名注册运营商等信息。
--script ip2hosts
ip反查,可以查出一个网站上绑定的所有域名。
--script http-stored-xss.nse
探测xss漏洞。
--script dns-brute --script-args dms-brutr.domain=
探测子域名和DNS服务主机名