1 、nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服
务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。
它是网络管理员必用的软件之一,以及用以评估网络系统安全。
2 、nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap
来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设
定,从而计划攻击的方法。
3、Nmap 常被跟评估系统漏洞软件Nessus 混为一谈。Nmap 以隐秘的手法,避开闯入检测
系统的监视,并尽可能不影响目标系统的日常操作。
三次握手工作原理
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答
TCP的三次握手
TCP的三次握手
SYN+ACK[1] ,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止
产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。
TCP三次握手的过程如下:
【1】客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
【2】服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入
SYN_RECV状态。
【3】客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入
Established状态。
nmap -sV 显示详细服务信息
nmap -O IP
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的
标志,也就是操作系统类型
(用wireshark也可以直接看到他的系统)
为什么要把他单独拿出来呢,就是为了让别人扫描的时候,你也可以大致猜到别人的系统
TTL=128,这是WINNT/2K/XP。
TTL=32,这是WIN95/98/ME。
TTL=256,这是UNIX。
TTL=64,这是LINUX。
插入选项,后面有一些常用的实例
【-sT】TCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。 【-sS】TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。 【-sF,-sX,-sN】秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。 这些扫 描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需 忽略有问题的包(参考RFC 793第64页)。 【-sP 】ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo 请 求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机 处于运行状态,才会进行后续的扫描。 【-sU】如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以 使用此选项。 【-sA】ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。 【-sW】滑动窗口扫描,非常类似于ACK的扫描。 【-sR】RPC扫描,和其它不同的端口扫描方法结合使用。 【-b 】 FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理 【-P0】在扫描之前,不ping主机。 【-PT】扫描之前,使用TCP ping确定哪些主机正在运行。 【-PS】对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行 扫描。 【-PI】 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是 否正在运行。 【-PB】 这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行 扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。 【-O 】 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的 标志,也就是操作系统类型。 【-I】 打开nmap的反向标志扫描功能。 【-f 】使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系 统的难度,使其无法知道你的企图。 【-v 】 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。 【-S <IP>】在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种 情况使用这个选项给出你的IP地址。 【-g port】设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为 DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为 20或者53,就可以摧毁防火墙的防护。 【-oN】把扫描结果重定向到一个可读的文件logfilename中。 【-oS】扫描结果输出到标准输出。 【--host_timeout】设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有 超时限制。 【--max_rtt_timeout】设置对每次探测的等待时间,以毫秒为单位。如果超过这个 时间 限制就重传或者超时。默认值是大约9000毫秒。 【--min_rtt_timeout】设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。 【-M count】 进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。 【-iL filename】 从filename文件中读取扫描的目标。 【-iR】 让nmap自己随机挑选主机进行扫描。 【-p】 端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。 【-exclude】排除指定主机。 【-excludefile】排除指定文件中的主机。
例:直接nmap IP 的话也可以扫到开放端口 (后面会讲为什么结果一样,还要加参数)
例:nmap -sS IP
为什么要用-sS选项呢 给大家解释一下:
SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,
在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个 端口。 SYN扫描相对来说不
张扬,不易被注意到,因为它从来不完成TCP连接。 它也不像Fin/Null/Xmas,Maimon和
Idle扫描依赖于特定平台,而可以应对任何兼容的 TCP协议栈。 它还可以明确可靠地区
分open(开放的), closed(关闭的),和filtered(被过滤的) 状态.
例: nmap -sT IP
大家可以看到,本次扫描的全都是以TCP为基础的服务
当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。 当用户没有权限发 送原始报文或者扫描IPv6网络时,就是这种情况。 Nmap通过创建connect() 系统调用
要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。 这
是和Web浏览器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的 高层系统
调用。它是叫做Berkeley Sockets API编程接口的一部分。Nmap用 该API获得每个连接
尝试的状态信息,而不是读取响应的原始报文。
例: nmap -sU IP
查看UDP的服务
Nmap简单扫描方式:
全面扫描:nmap-T4 -A targetip
主机发现:nmap-T4 -sn targetip
端口扫描:nmap-T4 targetip
服务扫描:nmap-T4 -sV targetip
操作系统扫描:nmap-T4 -O targetip