nmap
-
2023年4月27日发(作者:i酷下载)nmap 使用介绍
nmap是目前为止最广为使用的国外端口扫描工具之一。我们可以从
/进行下载,可以很容易的安装到Windows和unix操作系统中,包括
mac os x(通过configure、make 、make install等命令)也可以直接从http:///
下载windows二进制(包括所需要的winpcap)也可以从http:///获得nmap
的图形windows。
扫描主机
$ nmap -sT 192.168.1.18
Starting nmap 3.48(/nmap/)at
2007-10-10 18:13 EDT
Interesting ports on gamebase(192.168.1.18)
port state serverice
22/tcp open ssh
111/tcp open sunrpc
..........
$ nmap -sR 192.168.1.18
Startingnmap 3.48(/nmap/)at
2007-10-10 18:13 EDT
Interesting ports on gamebase(192.168.1.18)
port state serverice
22/tcp open ssh
111/tcp open sunrpc
..........
我们可以使用ping扫描的方法(-sP),与fping的工作方式比较相似,它发送icmp回
送请求到指定范围的ip地址并等待响应。现在很多主机在扫描的时候都做了处理,阻塞icmp
请求,这种情况下。nmap将尝试与主机的端口80进行连接,如果可以接收到响应(可以是
syn/ack,也可以是rst),那么证明主机正在运行,反之,则无法判断主机是否开机或者是
否在网络上互连。
扫描tcp端口
这里-sR是怎样在打开的端口上利用RPC命令来判断它们是否运行了RPC服务。
nmap可以在进行端口扫描的tcp报文来做一些秘密的事情。首先,要有一个SYN扫描
(-sS),它只做建立TCP连接的前面一些工作,只发送一个设置SYN标志的TCP报文,一个
RESET报文,那么nmap假设这个端口是关闭的,那么就不做任何事情了。如果接收到一个
响应,它并不象正常的连接一样对这个报文进行确认,而是发送一个RET报文,TCP的三
次握手还没有完成,许多服务将不会记录这次连接。
有的时候,nmap会告诉我们端口被过滤,这意味着有防火墙或端口过滤器干扰了nmap,
使其不能准确的判断端口是打开还是关闭的,有的防火墙只能过滤掉进入的连接。
扫描协议
如果试图访问另一端无程序使用的UDP端口,主机将发回一个icmp“端口不可达”的提
示消息,IP协议也是一样。每个传输层的IP协议都有一个相关联的编号,使用最多的是
ICMP(1)、TCP(6)和UDP(17)。所有的IP报文都有一个“协议”域用于指出其中的传输层报文
头所使用的协议。如果我们发送一个没有传输层报文头的原始IP报文并把其协议域编号为
130[该编号是指类似IPSEC协议的被称为安全报文外壳或SPS协议],就可以判断这个协议
是否在主机上实现了。如果我们得到的是ICMP协议不可达的消息,意味着该协议没有被实
现,否则就是已经实现了,用法为-sO.
隐蔽扫描行为
nmap给出了几个不同的扫描选项,其中一些可以配套着隐藏扫描行为,使得不被系统
日志、防火墙和IDS检测到。提供了一些随机的和欺骗的特性。具体例子如下:
FTP反弹,在设计上,FTP自身存在一个很大的漏洞,当使用FTP客户机连接到FTP
服务器时,你的客户机在TCP端口21上与FTP服务器对话,这个TCP连接称为控制连接。
FTP服务器现在需要另一条与客户机连接,该连接称为数据连接,在这条连接上将传送实际
的文件数据,客户机将开始监听另一个TCP端口上从服务器发挥的数据连接,接下来执行
一个PORT命令到服务器,告诉它建立一条数据连接到客户机的IP地址和一个新打开的端
口,这种操作方法称为主动传输。许多客户机使用网络地址转换或通过防火墙与外界连接,
所以主动传输FTP就不能正常工作,因为由服务器建立的客户机的连接通常不允许通过。
被动传输是大多数FTP客户机和服务器所使用的方法,因为客户机既建立控制连接又
建立数据连接,这样可以通过防火墙或NAT了。
FTP的PORT命令,用来告诉FTP连接的服务器,使得与刚刚打开的用于数据连接的
端口之间建立一个连接。由于我们不仅指定端口而且指定连接所用的IP地址,所以客户端
也可以通过PORT命令让服务器连接到任何地方。所以我们一样可以让nmap用这个方法进
行防火墙穿透。nmap做的所有工作是与一台服务器建立一个主动模式的FTP连接,并发送
一个包含它试图扫描的主机IP地址和端口号的PORT命令。
nmap -b aaa@ -p 6000 192.168.1.226
nmap 与ftp服务器的对话的例子:
server:220 target ftp server version 4 ready
client:user anonymous
server: 331 Guest login ok ,send e-mail as password
client:pass
server :230 login successful
client:PORT 192,168,1.226,23,112
server:200 PORT command successful
client:LIST
server:150 Opening ASCII connection for '/bin/ls'
server:226 Transfer complete
PORT命令起作用,可以制造是别人进行端口扫描,扫描任何FTP服务器所能访问的主
机,绕过防火墙和端口过滤器,但还是存在一些危险的,如果对方登陆到了你的这个匿名
FTP服务器上,从日志查找到相应的匿名FTP连接,从而知道你的IP地址,这样就直接暴
露了。
nmap -sI 空闲扫描,主要是欺骗端口扫描的源地址。
nmap -f 可以把TCP头分片的IP报文进行一些隐蔽的扫描。不完整的TCP报文不被防
火墙阻塞也不被IDS检测到。
nmap-D
选择几台肉鸡,并使用-D标志在命令行中指定它们。namp通过诱骗的IP地址来进行欺骗
式端口扫描,而系统管理员可以同时看到不同的端口扫描,而只有一个是真实的,很好的保
护了自己。
os指纹识别
这个是nmap最有用的功能之一,就是可以鉴别远程主机。通过简单的执行网络扫描,nmap
通常可以告诉你远程主机所运行的OS,甚至详细到版本号。当你指定-Q标志时,nmap将
用几种不同的技术从主机返回IP报文中寻找这些鉴别信息。通过发送特别设计的TCP和
UDP头,nmap可以得到远程主机对TCP/IP协议栈的处理方法。它将分析结果与保存在文
件中的已知特征信息进行比较。
OS鉴别选项也可以让nmap对TCP报文进行分析以决定另外一些信息,如系统的启动
时间,TCP序列号,预测的序列号使我们更容易截获报文并猜测序列号从而伪造TCP连接。
nmap命令使用详细解释
-P0 -PT -PS -PU -PE -PP -PM -PB 当nmap进行某种类型的端口或协议扫描时,通常都
会尝试先ping 主机,这种尝试可使nmap不会浪费时间在那些未开机的主机上,但是许多
主机与防火墙会阻塞ICMP报文,我们希望能通过控制使用。
-P0 告诉nmap不ping 主机,只进行扫描
-PT 告诉nmap使用TCP的ping
-PS 发送SYN报文。
-PU 发送一个udp ping
-PE 强制执行直接的ICMP ping
-PB 这是默认类型,可以使用ICMP ping 也可以使用TCP ping .
-6 该标志允许IPv6支持
-v -d 使用-v选项可得到更详细的输出,而-d选项则增加调试输出。
-oN 按照人们阅读的格式记录屏幕上的输出,如果是在扫描多台机器,则该选项很有
用。
-oX 以xml格式向指定的文件记录信息
-oG 以一种易于检索的格式记录信息,即每台主机都以单独的行来记录所有的端口和
0s信息。
-oA 使用为基本文件名,以普通格式(-oN)、XML格式(-oX)和易于检索的格式(-oG)
jilu xinxi
-oM 把输出格式化为机器可阅读的文件
-oS 把输出进行傻瓜型排版
--resume如果你取消了扫描,但生成了供人或者供机器阅读的文件,那么可以把该文件
提供给nmap继续让它扫描。
-iR-iL可以不在命令行中指定目标主机,而是使用-iR选项随即产生待扫描的主机,或
者使用-iL选项从一个包含主机名或IP地址列表的文件中读取目标主机,这些主机名或IP
地址使用空格、制表符或换行隔开。
-F nmap只扫描在nmap内建的服务文件中已知的端口,如果不指定该选项,nmap将
扫描端口1-1024及包含在nmap-services文件中的所有其他端口。如果用-sO选项扫描协议,
nmap将用它内建的协议文件(nmap-protocols文件)而不是默认地扫描所有256个协议。
-A nmap使用所有的高级扫描选项
-p 参数可以是一个单独的端口、一个用逗号隔开的端口列表、一个使用“-”表示的端口
范围或者上述格式的任意组合。如果没有指定该选项,nmap将对包含前1024个端口的所有
端口进行一次快速扫描。
-e在多穴主机中,可以指定你用来进行网络通信的网络接口。
-g可以选择一个源端口,从该端口执行所有的扫描。
--ttlnmap其发送的任何报文在到中间路由器的跳后会失效。
--packet-trace 可以显示扫描期间nmap发送和接收的各个报文的详细列表,这对调试
非常有用。要与-o选项之一联合使用,需要根权限,以将所有的数据记录到文件。
--scanflags可以使用这个选项手工的指定欲在扫描报文中设置的TCP标志。也可以指
定TCP标志的OOred值的整数形式,或者标志的字符串表示形式。
以上介绍的就是nmap在windows下和unix中的命令介绍。
hping
Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像U
nix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UD
P、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之
间传送文件。Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统
下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Window
s。
Hping的主要功能有:
1、防火墙测试
2、实用的端口扫描
3、网络检测,可以用不同的协议、服务类型(TOS)、IP分片
4、手工探测MTU(最大传输单元)路径
5、先进的路由跟踪,支持所有的协议
6、远程操作系统探测
7、远程的运行时间探测
8、TCP/IP堆栈审计
Hping的当前版本为hping2.0.0,其官方网站是:,可到此
下载Hping的最新版本。
nmap
Nmap ("Network Mapper")
[编辑本段]
Overview
是Linux,FreeBSD,UNIX,Windows下的网络扫描和嗅探工 具包,其基本功能有
三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;
还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至50
0个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICM
P协议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至
主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一
步分析操作。
官方下载及文档地址:/nmap/
[编辑本段]
使用
进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者
操作系统探测):
nmap -sP 192.168.1.0/24
仅列出指定网络上的每台主机,不发送任何报文到目标主机:
nmap -sL 192.168.1.0/24
探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,
25,80):
nmap -PS 192.168.1.234
不判断该主机是否存活,进行强制性扫描:
nmap -PN 192.168.1.234
使用UDP ping探测主机:
nmap -PU 192.168.1.0/24
使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的
TCP连接,执行得很快:
nmap -sS 192.168.1.0/24
当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT 192.168.1.0/24
UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU 192.168.1.0/24
确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
探测目标主机的操作系统:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
另外,nmap官方文档中的例子:
nmap -v
这个选项扫描主机中 所有的保留TCP端口。选项-v启用细
节模式。
nmap -sS -O /24
进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同
时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这
个扫描需要有根权限。
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这
个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口
打开,将使用版本检测来确定哪种应用在运行。
nmap -v -iR 100000 -P0 -p 80
随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送
探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此
使用-P0禁止对主机列表。
nmap -P0 -p80 -oX logs/ -oG logs/
216.163.128.20/20
扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式
保存。
host -l | cut -d -f 4 | nmap -v -iL -
进行DNS区域传输,以发现中的主机,然后将IP地址提供给 N
map。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。
其他选项:
-p <port ranges> (只扫描指定的端口)
单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口
又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一
直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,80
80 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。
-F (快速 (有限的端口) 扫描)
扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可一不留痕迹的发现远程服
务器的各种TCP端口的分配及提供的服务和它们的软件版本。这就能让我们间接的或直观的了解到远程主
机所存在的安全问题。但是您知道么,一个扫描器可以使用多种扫描方式来实现对远程或本地主机的检测,
使用不同的方式扫描有时得到的结果也会有差异。以我们常用的Nmap(本文Nmap的版本为3.10 for
win)扫描器为例,它提供了6种可选的扫描方式(如图1),
分别是TCP SYN stealth port scan;TCP connect() port scan; UDP port scan;ping scan;
Stealth FIN, Xmas, or Null scan;RPC/Identd scan。这些看起来颇有些似曾相识的名称究竟代表
着什么意思呢?下面我们一起来学习一下这些扫描类型吧:)。
一,TCP SYN stealth port scan。
这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的
是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP
连接的过程,以前的《黑客X档案》有详细介绍)。一个SYN|ACK的返回信息表示端口处于侦听状态。
一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST
信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但在UNIX系
统中这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。
二,TCP connect() port scan。
这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口
进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供
服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另
一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当
长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用
尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文
件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。
三,UDP port scan。
UDP port scan又可以分为:UDP ICMP端口不能到达扫描,UDP recvfrom()和write() 扫描
UDP ICMP端口不能到达扫描:
这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对比
较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。
幸运的是,许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNRE
ACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描器必
须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息
的产生速率做了规定。同样,这种扫描方法需要具有root权限。
UDP recvfrom()和write() 扫描:
当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。比如,对一个
关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出
错还没有到达时回返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就
是用来查看端口是否打开的技术。
四,ping scan。
就是ICMP echo扫描,这并不是真正意义上的扫描。但有时通过ping,在判断在一个网络上主机是否开
机时非常有用。时下流行的扫描器一般会开辟一个线程,在scan前先Ping一下主机,在扫描时就可以跳
过Ping不通的主机,以节省时间。
五,Stealth FIN, Xmas, or Null scan。
Stealth FIN,Xmas Tree 或者Null扫描模式:有时甚至SYN扫描都不够隐蔽——一些防火墙及信息包
过滤装置会在重要端口守护,SYN包在此时会被截获,一些应用软件如Synlogger以及Courtney对侦
测这类型的扫描都是行家。所以呢,在另一方面要有
更进一步的扫描能在不遇到麻烦的情况下通过它们……这个主意是关闭的端口会对你发送的探测信息包返
回一个RST,而打开的端口则对其忽略不理(你可以参阅RFC 973 PP64)。所以FIN扫描使用空的FI
N信息包作为探针、Xmas tree使用FIN,URG,PUSH标记、Null扫描则不用任何标记。但是不幸的
是微软以他们一贯的风格不理睬这一标准……所以这一扫描在WINDOWS9X以及NT下不能工
作。从积极方面来讲,这其实也是一个很好的区分两种平台的办法——如果这次扫描发现了打开的端口,
那你就能明白这台机器不是运行WINDOWS。如果-sF,-sX,-sN的扫描显示所有端口都是关闭的但一个S
YN(-sS)扫描却显示有打开端口,那你就能大致推断它
是WINDOWS平台。这只是一个简单应用,因为现在nmap已经有了更彻底的操作系统判别方法——当
然它的原理类似上面所提到的.
这些平台包括Cisco, BSDI, HP/UX, MVS, 和IRIX。当然这需要你对TCP /IP有着详细的了解,这样
你才能一眼就看动扫描的结果。所以Nmap推荐专家使用这种扫描方式。
六,RPC/Identd scan。
RPC扫描:这一方法是结合nmap多种扫描的一种模式,它取得所有的TCP/UDP开放端口并且用SunR
PC程序NULL命令来试图确定是否是RPC端口并且——如果是的话,其上运行什么程序,何种版本。这
样你可以在目标主机躲在防火墙后或者由TCP
wrappers防护着,它都能取得效果近似于„rpcinfo -p„的信息。但Decoys现在还不能正常工作在RPC
扫描下,在以后我会在UDP RPC扫描中加入Decoy支持的。
ident扫描:TCP协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是
由这个进程开始的。因此你能,举个例子,连接到http端口,然后用identd来发现服务器是否正在以r
oot权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。
好了,想必大家对这些扫描技术有了一定的了解了吧,现在拿起你的Nmap去实战一下吧。Good Luck!
-
nmap扫描端口命令