信息收集
1.主机发现:
nmap -sn 10.32.252.0/24 (扫c段)
-sn不进行端口扫描(也称ping扫描)(在扫描互联网的时候)
- 发送ICMP回显请求
- 对端口443的TCPSYN请求
- 对端口80的TCPACK请求
- 默认情况下的ICMP时间戳请求
- 非特权用户执行时会用conact调用发送SYN数据包到443端口
- 特权用户发送ARP请求
-sL列表扫描
- -sL与-sn有相同时目的吗,-sn对目标网络进行轻量级的侦查(入侵),不会引起太多注意
sudo arp-scan -l
这段命令与nmap -sn原理相同(在扫描本地网络的时候)
--send-ip :发送ICMP时间戳请求确定主机的活动性,(arp请求可能不会被主机响应,而icmp可以,更可靠)
2.端口扫描:
- 建立一个文件夹以存放扫描结果:mkdir nampscan
sudo nmap --min-rate 10000 -p- 10.10.10.21 -oA nmapscan/ports
不指定扫描技术则默认-sS扫描,但实际应该以-sT以tcp协议进行扫描 - --min-rate 1000:以最低一万的速率扫描全部端口
- -p- :接需要扫描的主机
- -o(输出)A(all):数据化输出
- -sS:利用tcp的syn标志位来探测目标主机的端口,发送syn包只建立tcp连接的第一步,收到syn+ack回复,则表示端口开放,若表示rst复位,则表示端口关闭(快速扫描存在的端口)
- -sT:需要等待完整的tcp的连接过程,实战中这个准确性,隐蔽性更高
nmapscan/ports:输出到nmapscan下的ports文档中,输出文件格式.gnmap(nmap自创的形式,已被弃用) .nmap .xml
需要单独将开放的端口输出到控制台:
grep open nmapscan/ports.nmap | awk -F'/' '{print $1}'
- 搜索posts.nmap中open的端口 | 用awk指定-F的参数,用斜杠作为分隔符,打印第一列
posts=$(grep open nmapscan/ports.nmap | awk -F'/' '{print $1}' | paste -sd ',')
- -sd:指定合并到一行
- ',':分隔符是逗号
- posts=$:指定变量posts
构造详细信息扫描
sudo nmap -sT -sV -sC -O -p21,22,80,3306 10.10.21 -oA nmapscan/detail
- -sT:用tcp协议扫描
- -sV:探测服务版本
- -sC:用默认脚本扫描(用于漏洞检测或服务信息收集)
- -O:探测服务器版本
- -p:用$+tab键补全端口值
本次扫描是nmap最重的一次扫描,同时可以尝试UDP扫描
UDP扫描
sduo nmap -sU --top-ports 20 10.10.10.21 -oA nampscan/udp
- sU:指定UDP协议扫描
- --top-ports 20:指定扫描20端口(常用)
Traceroute
traceroute
是一个网络诊断工具,用于显示数据包从源主机到目标主机经过的路由。它通过发送带有逐渐增加的 TTL(生存时间)值的 ICMP 数据包来工作。
Nmap Scripting Engine (NSE)
Nmap 是一个强大的网络扫描工具,NSE 允许用户编写 Lua 脚本以执行各种网络任务,如服务发现、漏洞扫描等。NSE 脚本可以通过 -sC
或 --script
选项来运行。
^ports
grep open nmapscan/ports.nmap | awk F'/' '{print $1}' | paste -sd ','
命令功能解析
该命令是三级管道操作,用于处理 Nmap 扫描结果,最终输出开放的端口号列表(逗号分隔):
第一阶段:grep open nmapscan/ports.nmap
作用:筛选出开放端口行
解析:
grep open
→ 过滤包含 "open" 的行(Nmap 结果中开放端口标记)nmapscan/ports.nmap
→ 扫描结果文件路径(典型 Nmap 输出格式)
输入示例:
80/tcp open http 443/tcp open https 22/tcp closed ssh
输出结果:
80/tcp open http 443/tcp open https
第二阶段:awk -F'/' '{print $1}'
作用:提取纯端口号
解析:
-F'/'
→ 设置/
为字段分隔符{print $1}
→ 打印分隔后的第一个字段(端口号)
输入(来自第一阶段):
80/tcp 443/tcp
输出结果:
80 443
第三阶段:paste -sd ','
作用:合并为逗号分隔单行
解析:
-s
→ 将所有行合并为单行-d ','
→ 设置,
为分隔符
输入(来自第二阶段):
80 443
输出结果:
80,443