标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-41] 作者: 凡诺 发表于: [2017-07-11] [2017-07-14]被用户:凡诺 修改过
本文共 [816] 位读者顶过
nmap不管在渗透还是网络管理中都是必不可少的工具, 有的人会说,不就是是扫描器吗?单个IP扫,整个网段扫,个别端口扫,我都会啊,大不了需要的时候再来查参数了。好吧,不过类似书到用时方知少一样,常用的工具熟练掌握是会对工作效率有很大提升的。 废话不多说,本来我是打算自己详细写写各个参数用法的,发现网上已经有非常详细的教程了,我就在基础上增加一些自己的经验吧。 Nmap是一款网络扫描和主机检测的非常有用的工具。 Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。 Nmap是一款非常强大的实用工具,可用于: 检测活在网络上的主机(主机发现) 检测主机上开放的端口(端口发现或枚举) 检测到相应的端口(服务发现)的软件和版本 检测操作系统,硬件地址,以及软件版本 检测脆弱性的漏洞(Nmap的脚本) Nmap是一个非常普遍的工具,它有命令行界面和图形用户界面。本人包括以下方面的内容: 介绍Nmap 扫描中的重要参数 操作系统检测 Nmap使用教程 Nmap使用不同的技术来执行扫描,包括:TCP的connect()扫描,TCP反向的ident扫描,FTP反弹扫描等。所有这些扫描的类型有自己的优点和缺点,我们接下来将讨论这些问题。 Nmap的使用取决于目标主机,因为有一个简单的(基本)扫描和预先扫描之间的差异。我们需要使用一些先进的技术来绕过防火墙和入侵检测/防御系统,以获得正确的结果。下面是一些基本的命令和它们的用法的例子: 扫描单一的一个主机,命令如下: #nmap nxadmin.com #nmap 192.168.1.2 扫描整个子网,命令如下: #nmap 192.168.1.1/24 扫描多个目标,命令如下: #nmap 192.168.1.2 192.168.1.5 扫描一个范围内的目标,如下: #nmap 192.168.1.1-100 (扫描IP地址为192.168.1.1-192.168.1.100内的所有主机) 如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下: #nmap -iL ip.txt (该文件里面,一行保存一个ip)
#nmap -sL 192.168.1.1/24 (适用于快速列出该网段的存活主机,我一般这样用 nmap -sL 192.168.1.1/24 |grep "(*)" 目的是仅列出存活的)
[出自:jiwo.org] 扫描除过某一个ip外的所有子网主机,命令: #nmap 192.168.1.1/24 -exclude 192.168.1.1
扫描除过某一个文件中的ip外的子网主机命令 #nmap 192.168.1.1/24 -exclude file xxx.txt (xxx.txt中的文件将会从扫描的主机中排除)
扫描特定主机上的80,21,23端口,命令如下 #nmap -p80,21,23 192.168.1.1 在每次命令都加上 -v 或者-vv 参数,会详细显示扫描的过程,不然你就等待一段时间,直接看结果。 ----------------------------------------------------------------------------------------------------------- 从上面我们已经了解了Nmap的基础知识,下面我们深入的探讨一下Nmap的扫描技术.
Tcp SYN Scan (sS)
这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势. 如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限. (这里我简单讲一下TCP 和SYN的区别,TCP有完整的三次握手过程,就是扫描器发包到探测目标上,然后目标会再返回确认包,然后双方确认后再传送数据,TCP过程繁琐当然扫描效率不高,并且有交互过程所以会在目标上留下日志。而SYN只是TCP三次握手中第一次握手的请求包,扫描过程速度快并且不会在目标上留下日志,我这里只是通俗的讲一下,不了解TCP的,参考这里链接:简析TCP的三次握手与四次分手 | 果冻想
#nmap -sS 192.168.1.1
Tcp connect() scan(sT)
如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口.
#nmap -sT 192.168.1.1
Udp scan(sU)
顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的. #nmap -sU 192.168.1.1
FIN scan (sF) 有时候Tcp SYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手. root@bt:~# nmap -sF 192.168.1.8 Starting Nmap 5.51 at 2012-07-08 19:21 PKT Nmap scan report for 192.168.1.8 Host is up (0.000026s latency). Not shown: 999 closed ports PORT STATE SERVICE 111/tcp open|filtered rpcbind FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.(如果你懂tcp协议,就知道FIN是TCP中一个请求断开的标志)
PING Scan (sP) PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用. #nmap -sP 192.168.1.1
版本检测(sV) 版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCP SYN扫描开放了哪些端口. #nmap -sV 192.168.1.1
Idle scan (sI)(s后面是大写I) Idle scan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包. #nmap -sI 192.168.1.6 192.168.1.1
dle scan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口 (这个idle scan,是不能随便想利用哪个ip做为掩饰的,必须找到idle也就是空闲的主机,这个可以到后面我介绍msf知识的时候,有方法可以探测哪个主机目前是idle状态可以拿来掩盖自己ip) 另外还有其它的扫描方式,如 FTP bounce(FTP反弹), fragmentation scan(碎片扫描), IP protocol scan(IP协议扫描),以上讨论的是几种最主要的扫描方式.
Nmap的OS检测(O) Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。 Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。 Initiating SYN Stealth Scan at 10:21 Scanning localhost (xxx.xxx.com) [1000 ports] Discovered open port 111/tcp on xxx.xxx.com Completed SYN Stealth Scan at 10:21, 0.08s elapsed (1000 total ports) Initiating OS detection (try #1) against localhost (xxx.xxx.com) Retrying OS detection (try #2) against localhost (xxx.xxx.com) 上面的例子清楚地表明,Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O) Nmap的操作系统指纹识别技术: 设备类型(路由器,工作组等) 运行(运行的操作系统) 操作系统的详细信息(操作系统的名称和版本) 网络距离(目标和攻击者之间的距离跳) 如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求. -PN命令告诉Nmap不用ping远程主机。
# nmap -O -PN 192.168.1.1/24
以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现. Nmap的操作系统检测的基础是有开放和关闭的端口,如果OS scan无法检测到至少一个开放或者关闭的端口,会返回以下错误: Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port #nmap -A 192.168.1.1 这个-A 是直接包含了很多功能,免去了敲多个参数的操作,所探测的信息,留给你去动手试一下吧。 ----------------------------------------------------------------------------------------------------------- 在msf里面是可以调用nmap的,输入db_nmap 直接调用,扫描结果保存到msf数据库中。 一下子就长篇大论了,大多数人肯定都不会看完,这种必会的工具,还是建议每个参数都去敲着看看效果吧! 另外附上 新手小伙伴容易上手的视频: 链接:https://www.ichunqiu.com/course/1219 当然还有更全面从入门到精通的资料: 链接:Nmap中文手册 - Nmap中文网 里面包含所有参数的详细讲解,其中的躲避IDS侦测值得好好掌握。 |