Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
1|00x00 简介
nmap还用介绍吗?搞安全的人还有不知道或者不会用nmap的吗?据我观察,能够全面灵活运用nmap的人其实并不多见。其实nmap早已经不再是你眼中那个网络层的扫描器软件了,早在十年前它就已经进化成为一个全功能的安全评估框架。今天,利用nmap强大的脚本功能,你可以轻松开发出任何漏洞检测和利用的功能,甚至完全不需要掌握那些常见的编程语言。本课我向你介绍了nmap几乎全部参数功能,同时演示了如何自己开发一个脚本的过程。
本文使用的nmap
版本是7.92
![image-20220325162247098](https://i-blog.csdnimg.cn/blog_migrate/bebfa314b20963ef69d89ad559960be5.png)
2|00x01 历史进程
- 诞生于1997年
- 最早的版本只有2000行代码,没有版本号
- 只作为端口扫描工具
- 6个月后成为黑客社区中网路扫描的事实标准
- 2003年发布3.45版本
- Fyodor开始全职维护nmap
- 增加了服务检测、OS检测、时间控制等功能
- 进入成熟期
- 2006年集成NSE
- 从单一的网络扫描工具,转变为可扩展的全功能漏洞评估引擎
3|00x02 默认扫描参数
- 默认
TCP
syn
扫描,利用TCP
的三次握手机制,当发送syn
包后,如果目标主机的那个端口是开着的,就会返回syn
+ack
数据包,同时nmap
接收到之后不再返回ack
的确认包,不会建立完成的TCP
连接,节约扫描发起者机器的资源
- 默认扫描
1000个
常用端口,包括http
、https
、ftp
、smtp
、ssh
等等
4|00x03 指定扫描IP
4|10x03-1 指定多个扫描IP
例子 |
含义 |
sudo nmap 10.0.2.1,2,25 |
扫描10.0.2.1 、10.0.2.2 、10.0.2.25 这3个IP |
sudo nmap 10.0.1,2.23,25 |
扫描10.0.1.23 、10.0.1.25 、10.0.2.23 、10.0.2.25 这4个IP |
sudo nmap 10.0,1.2,3.23,25 |
扫描10.0.2.23 、10.0.2.25 、10.0.3.23 、10.0.3.25 、10.1.2.23 、10.1.2.25 、10.1.3.23 、10.1.3.25 这8个IP |
![image-20220325004733347](https://i-blog.csdnimg.cn/blog_migrate/350ca3047806e8fc6b7a8f7f995b7019.png)
例子 |
含义 |
sudo nmap 10.0.2.20-25 |
扫描10.0.2.20-25 这一段的IP |
sudo nmap 10.0.2-10,25 |
扫描10.0.2-10,25 这几段的IP |
sudo nmap 10.0.2-10.20-25 |
扫描10.0.2-10.20-25 这几段的IP |
![image-20220325005544670](https://i-blog.csdnimg.cn/blog_migrate/2b00b9a797337ae4f7aff957715f647b.png)
例子 |
含义 |
sudo nmap 10.0.2.25/24 |
扫描10.0.2.1/24 这个网段中的所有IP |
sudo nmap 10.0.2.1/16 |
扫描10.0.2.1/16 这个网段中的所有IP |
![image-20220325005758883](https://i-blog.csdnimg.cn/blog_migrate/5e8b3a9cdc476c1a29f4009d5d3d8239.png)
例子 |
含义 |
sudo nmap -iL ip.txt |
扫描ip.txt 这个文件内容中所有的IP ,注意IP 得是一个一行的形式写入文件中 |
![image-20220325010055774](https://i-blog.csdnimg.cn/blog_migrate/50f082a66b4985fdef3aff55312907ce.png)
4|20x03-2 指定扫描域名
例子 |
含义 |
sudo nmap www.baidu.com |
扫描www.baidu,com 这个域名对应的IP |
![image-20220324233643718](https://i-blog.csdnimg.cn/blog_migrate/f319e2e3dc02a88ac0cb41486c6b5821.png)
4|30x03-3 排除要扫描的IP
例子 |
含义 |
sudo nmap 10.0.2.25/24 --exclude 10.0.2.2,3,4 |
扫描10.0.2.1/24 这个网段中除10.0.2.2 、10.0.2.3 、10.0.2.4 外的所有IP |
sudo nmap 10.0.2.25/24 --exclude 10.0.2.2-10 |
扫描10.0.2.1/24 这个网段中除10.0.2.2-10 这一段外的所有IP |
sudo nmap 10.0.2.25/16 --exclude 10.0.2.0/24 |
扫描10.0.2.1/16 这一大段中除10.0.2.0/24 这一小段外的所有IP |
![image-20220325010237185](https://i-blog.csdnimg.cn/blog_migrate/3ceacf284c490a7ac741263bf50c3ab1.png)
例子 |
含义 |
sudo nmap 10.0.2.25/24 --excludefile exip.txt |
扫描10.0.2.25/24 这个网段中除exip.txt 文件内容中包含的IP 外的所有IP |
![image-20220325010426850](https://i-blog.csdnimg.cn/blog_migrate/6a5e5a2160a29ca0b2dcdbbcf9d91b4f.png)
5|00x04 反向域名查询
5|10x04-1 -R 一定要做DNS反向域名查询
例子 |
含义 |
sudo nmap 220.181.38.251 -R -sn |
在扫描时一定要做DNS 反向域名查询,也就是查询IP 地址对应的域名,并且只做主机发现 |
![image-20220325175418772](https://i-blog.csdnimg.cn/blog_migrate/a5705db3c3b83875007d11b5cccee60c.png)
![image-20220325175533234](https://i-blog.csdnimg.cn/blog_migrate/83347f15e802eb3ddb40d2b3c5729464.png)
5|20x04-2 -n 不做DNS反向域名查询
例子 |
含义 |
sudo nmap 220.181.38.251 -n -sn |
在扫描时不做DNS 反向域名查询,也就是不查询IP 地址对应的域名,并且只做主机发现 |
![image-20220325175746724](https://i-blog.csdnimg.cn/blog_migrate/556d2bb4ea9c7bfa2c718f221e2de9a8.png)
![image-20220325175858216](https://i-blog.csdnimg.cn/blog_migrate/5b7108274e2519bc063dded8eaf81628.png)
5|30x04-3 --dns-servers 指定 DNS 服务器做反向域名查询
例子 |
含义 |
sudo nmap 220.181.38.251 -R --dns-servers 114.114.114.114 -sn |
在扫描时做DNS 反向域名查询,指定DNS 服务器为114.114.114.114 ,并且只做主机发现 |
![image-20220325180430896](https://i-blog.csdnimg.cn/blog_migrate/2dcd289429e0430c5d23c26584a628c7.png)
![image-20220325180523385](https://i-blog.csdnimg.cn/blog_migrate/672860def37a6bd0319df450bf2d318c.png)
6|00x05 -e 指定发包网卡
例子 |
含义 |
sudo nmap 10.0.2.25 -e eth0 |
指定发扫描数据包的网卡为eth0 |
![image-20220325004329043](https://i-blog.csdnimg.cn/blog_migrate/2e1f3c794e65c976315306d22433d90e.png)
如果没有指定发包网卡,nmap
就会使用本机序号为第一个的网卡发扫描包
7|00x06 主机发现
做扫描的时候,先做主机发现,别一上来就对所有的IP
发送大量数据包进行端口扫描,不要做这种莽撞的行为,因为在扫描的时候经常会触发安全机制的报警,所以做扫描的时候要越隐蔽越好,先做主机发现再做端口扫描,不仅节省自己的时间,还能避免被发现,何乐而不为呢?
7|10x06-1 -sn 使用ICMP,TCP ping扫描,只做主机发现
向目标系统的80
或443
端口发送ICMP
和TCP
ping
扫描,如果目标系统返回了ICMP
响应包、SYN+ACK
包、RST+ACK
包,就认为这个IP
是活着的
并且判断完IP
是否是活着的之后,就会结束,不会再发送端口扫描数据包
例子 |
含义 |
sudo nmap -sn 192.168.123.2 |
扫描192.168.123.2 是否是活着的 |
![image-20220326231805062](https://i-blog.csdnimg.cn/blog_migrate/cf64db1ec6d6ecb6cdf34192b0e47914.png)
![image-20220325160918236](https://i-blog.csdnimg.cn/blog_migrate/d1e78112ed0c61566783d4f1f30991bd.png)
7|20x06-2 -Pn 跳过主机发现环节
跳过主机发现环节,直接将IP
视为在线状态,直接发送大量的端口扫描数据包;不加此参数的情况是:若发现此IP
不在线,则不进行端口扫描
因为会发出大量的扫描数据包,一点也不隐蔽,所以用此参数来进行主机发现是不可取的
例子 |
含义 |
sudo nmap -Pn 192.168.123.2 |
扫描192.168.123.2 ,不管此IP 是否是活着的状态 |
![image-20220325161634733](https://i-blog.csdnimg.cn/blog_migrate/f717de92f477ecd792cc61489d81a7e2.png)
7|30x06-3 --traceroute 显示经过的路由
例子 |
含义 |
sudo nmap www.baidu.com --traceroute -sn |
在扫描结果种显示每一跳经过的路由IP ,而且只做主机发现这一步 |
7|40x06-4 -PS 发送 TCP SYN 包
加入这个参数之后只会发送TCP
SYN
数据包包
例子 |
含义 |
sudo nmap 192.168.123.1 -PS -sn |
只发送TCP SYN 包进行主机发现 |
![image-20220325163818274](https://i-blog.csdnimg.cn/blog_migrate/638215e26ea8b676c28e1ec4db43ec39.png)
![image-20220325164116669](https://i-blog.csdnimg.cn/blog_migrate/2ca14948f9fdd62be778387d907ba654.png)
7|50x06-5 -PA 发送 TCP SYN 包
加入这个参数之后只会发送TCP
ACK
数据包
例子 |
含义 |
sudo nmap 192.168.123.1 -PA -sn -n |
只发送TCP ACK 包进行主机发现,并且跳过DNS 反向域名解析环节 |
![image-20220325164456252](https://i-blog.csdnimg.cn/blog_migrate/bda2a103887f417ad429acc448cfedb6.png)
![image-20220325164346257](https://i-blog.csdnimg.cn/blog_migrate/ddb644ecfec1a13e727b4c69839f0c1d.png)
7|60x06-6 -PU 发送 UDP 包
加入这个参数之后只会发送UDP
数据包
例子 |
含义 |
sudo nmap 192.168.123.1 -PU -sn -n |