kali的命令行中可以直接使用 nmap 命令,打开一个「终端」,输入 nmap 后回车,可以看到 nmap 的版本,证明 nmap 可用。
一、端口扫描
扫描主机的「开放端口」,在nmap后面直接跟主机IP(默认扫描1000个端口)
nmap 192.168.31.180
从上图可以看到:它用1.58秒扫描了1000个端口,其中991个端口关闭,结果中列出的9个端口就是开放的端口。
1. 指定端口
扫描「指定端口」,使用 -p
参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口
nmap 192.168.31.180 -p 80
nmap 192.168.31.180 -p 1-80
nmap 192.168.31.180 -p 80,3389,22,21
nmap 192.168.31.180 -p 1-65535
nmap 192.168.31.180 -p- # -p- 等价于 -p 1-65535
https://zhuanlan.zhihu.com/p/585377081?utm_id=0
没写完
原理
关于主机扫描默认的-sP选项, Nmap官方指南是这么介绍的:
该选项告诉Nmap仅仅进行ping 扫描(主机发现),然后打印出对扫描做出响应的那些主机。没有进一步的测试(如端口扫描或者操作系统探测)。这比列表扫描更积极,常常用于和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。对于攻击者来说,了解多少主机正在运行比列表扫描提供的一列IP 和主机名往往更有价值。
-sP 选项在默认情况下, 发送一个ICMP 回声请求和一个TCP 报文到80端口。如果非特权用户执行,就发送一个SYN 报文(用connect()系统调用)到目标机的80端口。
笔者在实践中,发现指南中的描述和实际的抓包结果并不一致,下面举例说明。
先来说一个ping不通的主机,打开CMD,运行如下命令:
nmap -sP 1.2.3.4
使用wireshark抓包如下图所示,根据抓取到的流量,可以分析出实际上我们向目标主机发送了四种类型的数据包:
1、ICMP 回声请求
2、到目标443端口的TCP SYN报文
3、到目标80端口的TCP ACK报文
4、ICMP 时间戳请求
从抓包情况看,只有去主机1.2.3.4的IP包,没有从主机1.2.3.4传回的IP包,所以结论是没有扫描到活跃主机。
下面再看一个能ping通的例子,打开CMD,运行如下命令:
nmap -sP 1.1.1.1
使用wireshark抓包如下图所示,根据抓取到的流量,可以看到同样是向目标主机发送四种类型的数据包,不同的是这次目标主机1.1.1.1在TCP 80端口回送了RST包,在TCP 443端口回送了SYN,ACK包,这说明目标主机1.1.1.1在443端口处于开放状态,所以自然目标主机处于活跃状态。
总结一下,当我们使用Nmap进行网络主机扫描时,会发送四种类型的数据给目标主机,只要收到一个目标主机的回复包,即可证明目标主机处于活跃状态,这比官方指南上说明的只发送两种类型的数据包要复杂的多,并且80端口也不是发送SYN包,而是ACK包,依笔者揣测,这样改进应该是为了更好的应对防火墙的拦截规则。
TCP三次握手中SYN,ACK,seq ack的含义 - 程序员大本营
三挥手与四握手
三个渗透靶场看完
简历弄完
三个漏洞文章写完
专利写完盖章