nmap
nmap的使用
参考
图形化界面
- zenmap
分布式框架
- Dnamp
作用
- 主机探测
- 端口扫描
- 版本检测
- 系统检测
- 支持探测脚本的编写
Nmap在实际中应用场合如下:
- 通过对设备或者防火墙的探测来审计它的安全性
- 探测目标主机所开放的端口
- 通过识别新的服务器审计网络的安全性
- 探测网络上的主机
原理
- 端口扫描工具,即借助工具,试图了解所扫描IP提供的计算机网络服务类型(网络服务均与端口号相关),从而发现攻击弱点,常见服务对应端口号
- 首先判断nmap输入的命令行中是否包含域名,如果包含则需要用DNS服务器进行域名解析,然后发送ICMP Echo Request来探测主机的存活性
- 根据返回的数据包来得到机器信息
Nmap进行完整全面的扫描
nmap –T4 –A –v
参数
- 其中-A选项用于使用进攻性(Aggressive)方式扫描;
- -T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;
- -v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
最重要的是-T
- 扫描速度过快,容易被系统拦截,导致访问一堆200,结果打开全是503,所以应避免扫描过快
主机扫描
端口扫描
扫描方式选项
端口参数和扫描顺序
版本侦测的用法
端口状态
- Open 端口处于开放状态:进行TCP链接时,目标主机返回SYN+ACK的报文,就认为端口开放且使用了TCP服务
- Closed 端口处于关闭状态:返回RST类型的报文(关闭的端口也是可以访问的,只是没有上层的服务在监听此端口,而且只是我们在扫描的这个时刻为关闭,当我们在另一个时间段进行扫描时,这些关闭的端口可能会处于open状态)
- Filterd 端口处于过滤,无法收到返回的probe状态:报文无法到达指定端口,nmap不能决定端口的开放状态,主要是由于网络或者主机安装了一些防火墙导致,收到icmp报文主机不可达报文,或者目标主机无应答
- UnFilterd 端口收到返回的Probe,但是无法确认
- Opend/UnFilterd 表示端口处于开放或者被过滤状态
- Closed/UnFilterd 表示端口处于关闭或者未过滤状态
具体操作
用nmap扫描特定IP地址
用-vv对结果进行详细输出
自行设置端口范围进行扫描
指定端口号进行扫描
对端口进行ping扫描
路由跟踪
扫描一个段的主机在线情况
操作系统探测
万能开关扫描
SYN,FIN,ACK等其它扫描方式
使用具体dns服务器进行扫描
nmap --dns-servers 8.8.8.8 scanme.nmap.org
扫描远程机器开放的端口
对于已经知道主机存活或者防火墙开启的机器,可以使用 -Pn 参数来停止探测之前的ICMP请求,来达到不处罚防火墙的安全机制
```
nmap -Pn scanme.nmap.org### 列举远程机器开放的端口 1. 对于所有默认的端口范围,并不能满足日常工作的需要,可以使用-p m-n来指定探测端口范围为m-n之间的所有端口 2. ``` nmap -p 1-10000 scanme.nmap.org
Nmap识别目标机器上的服务指纹
什么是服务指纹
- 为了确保有一个成功的渗透测试和网络设备监控,必须需要知道目标系统中服务的指纹信息。服务指纹信息包括服务端口、服务名和版本等
- 通过分析目标往Nmap发送的数据包中某些协议标记、选项和数据,我们可以推断发送这些数据包的操作系统等
识别服务指纹
- 使用命令 nmap -sV IP 地址来识别目标机器的服务信息
- 按回车可以看发送进度
Nmap的侵略性探测
```
nmap -A -v -T4 IP地址2. 探测目标主机的操作系统、服务等信息 3. ![](https://strongwillpro.oss-cn-beijing.aliyuncs.com/img/20230707115955.png) 4. ``` nmap -sC -sV -O IP地址
探测目标主机的操作系统、服务等信息,其中-sC参数表示使用Nmap脚本进行探测,sV表示探测目标主机上的服务信息,O表示探测目标机器的操作系统信息
```
nmap -sC -sV -O7. ``` nmap --script=default 和上面相等
探测局域网中存活主机
一个局域网中有很多台设备,如何获取哪些设备正在开机状态
使用ping来进行探测,但是网络很大的情况下,手工探测很费力
```
ping IP地址#### 使用不同工具来进行批量探测 1. CIDR五类别域间路由、网络前缀来快速表示一个网络 2. 172.16.1.1/24 表示前24位不能动,只有最后8位可动,可以表示172.168.1.1-172.168.1.255之间的所有主机IP地址 #### 使用nmap对该网络中的所有主机进行ping扫描,以探测主机存活性。扫描过程中使用了TCP SYN扫描、ICMP echo Request来探测主机存活 1. ``` nmap -sP CIDR地址
```
nmap -sn CIDR地址3. 上面两种用法结果类似 ## nmap主机发现的结果输出 1. ```bash nmap -sn CIDR地址 -oX test.xml
对该网络中的所有主机进行ping扫描,以探测主机存活性
同时将结果输出到test.xml文件中,以便后续使用
实际场景下的Nmap端口探测技巧
- 渗透测试时,一般是对某个或某个范围内的服务进行探测,而不是全扫,否则费力不讨好,全端口探测会对服务器造成较大压力
对某个端口或某个范围内的端口探测
```bash
nmap -p80 scanme.nmap.org
nmap -p80,135 scanme.nmap.org
nmap -p1-100 scanme.nmap.org
nmap -p- scanme.nmap.org2. 使用逗号去分隔不同的端口 3. 使用短横线 - 去链接端口范围 4. -p- 端口参数后面不加具体数字,表示对所有端口进行探测 ### 指定协议探测端口 1. ``` nmap -p T:25,U:53 scanme.nmap.org
T:25 指定TCP25号端口
U:53 指定UDP53号端口
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 h3110w0r1d's Blog!