Nmap (“Network Mapper”) 是用于网络探索和安全审计的开源工具。它被设计用于快速扫描大型网络,尽管它在单个主机上运行良好。Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机、这些主机提供的服务(应用程序名称和版本)、它们正在运行的操作系统(和操作系统版本)、使用的数据包过滤器/防火墙类型,以及许多其他特性。虽然Nmap通常用于安全审计,但许多系统和网络管理员发现它对于日常任务很有用,如网络资源清册、管理服务升级计划以及监控主机或服务正常运行时间。(1.2的官网复制的)。
简单来说,就是扫描的比较仔细,但是扫描速度比较慢,建议使用arp发现工具和ping扫描工具提前对网络进行扫描,提前发现资产,然后再使用nmap对一些“信息泄露”的端口进行详细信息的获取。
https://nmap.org/
https://nmap.org/download#windows
Windows 11我建议下如下的稳定版本,现在是2023年初,最新版有openssh的不兼容问题。
https://nmap.org/dist/nmap-7.92-setup.exe
nmap 10.44.1.0/24
通过抓包发现,发送了两遍的arp请求包。
一共发送了8000左右的tcp的syn请求包。测试不同的端口,非连续端口,看来是常用的端口。我使用tcp.dstport==445测试了高危端口,全都有。
期间还有一些ping包,期间还有130这台虚拟机ping了我物理机,但是我物理机开启了防火墙,它ping不通。
现在看扫描结果。
129主机是win10虚拟机,开启了Windows的系统防火墙,只能扫到mac地址。
130主机是centos7虚拟机,firewall服务也开着,只能扫到ssh远程端口。
131主机是win7虚拟机,开启了Windows的系统防火墙,扫到mac地址和远程桌面服务的3389端口。
nmap -sn 10.44.1.0/24
通过抓包,看到,该命令仅发送了arp包。因此只返回mac地址信息。
通过nmp帮助手册,可以看到sn参数的作用是取消端口扫描。
C:\Users\zhang>nmap -h | findstr "sn"
-sn: Ping Scan - disable port scan
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -sS -p1-65535 10.44.1.129
等效于
nmap -sS -p- 10.44.1.129
这一次就扫描单台win10虚拟机,全端口扫描发送了13万个SYN包。比较耗时间。值得一提的是,火绒和Windows defense都没有告警。
全端口扫描,发现了我更改过的远程桌面服务的端口23389。还有一个从CSDN的友友的那里查到是微软的补丁更新端口7680。
端口查询命令(扩展一下)。
C:\Users\zhangcj>netstat -ano | findstr "7680"
TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 1048
TCP [::]:7680 [::]:0 LISTENING 1048
C:\Users\zhangcj>tasklist /svc | findstr "1048"
svchost.exe 1048 DoSvc
以下是nmap的帮助手册。
PORT SPECIFICATION AND SCAN ORDER:端口规格和扫描顺序:
-p <port ranges>: Only scan specified ports仅扫描指定端口
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <port ranges>: Exclude the specified ports from scanning从扫描中排除指定的端口
-F: Fast mode - Scan fewer ports than the default scan快速模式-扫描比默认扫描更少的端口
-r: Scan ports sequentially - don't randomize 按顺序扫描端口-不要随机化
--top-ports <number>: Scan <number> most common ports扫描<number>最常见的端口
--port-ratio <ratio>: Scan ports more common than <ratio>扫描端口比<比率>更常见
nmap -O 10.44.1.0/24
这一次也发送了8k的包,arp和tcp都有。以及一些ping包。此时开着系统防火墙。
通过22和3389的信息泄露,nmap扫描出了一些比较模糊的操作系统的信息。
现在关闭win7虚拟机的系统防火墙,重新通过3389端口扫描系统。
此次关闭系统防火墙的探测结果为,仅通过传输层的连接探测(TCP、UDP),就大致地猜出了目标靶机的操作系统。
由此可见,关闭系统防火墙,服务器的信息泄露是很明显的。(按我的理解,现有的安全措施很难防御住这种系统扫描。)
查看nmap -h
OS DETECTION:
-O: Enable OS detection 开启系统探测
--osscan-limit: Limit OS detection to promising targets将OS检测限制在有希望的目标上
--osscan-guess: Guess OS more aggressively猜测操作系统更激进
nmap -sV 10.44.1.130
这一次探测CentOS虚拟机仅发送2k数据包,扫描端口1千。
这次终于发现了除了ARP、TCP包的其他包,SSH包。追踪TCP流,发现是做了一次完整的TCP握手(三次握手和四次分手),数据流的内容仅有SSH的版本信息。
与CentOS虚拟机内部查看命令对应的上。
查看nmap -h
SERVICE/VERSION DETECTION:服务/版本检测
-sV: Probe open ports to determine service/version info探测打开的端口以确定服务/版本信息
--version-intensity <level>: Set from 0 (light轻度) to 9 (try all probes尝试所有探测)版本强度探测
--version-light: Limit to most likely probes (intensity 2)限制为最可能的探测(强度2)
--version-all: Try every single probe (intensity 9)所有测试,强度9
--version-trace: Show detailed version scan activity (for debugging)显示详细的版本扫描活动(用于调试)
这次到此为止,后续会有更多命令测试。