前置知识: Networking

nc 与 nmap

2 min入门

nc 与 nmap:端口探测与服务指纹识别、常用扫描方式与结果解读、基础安全用法。

nc 基本用法

基本写法:连接 TCP 端口 nc <主机> <端口>

# 连接到 example.com 的 80 端口
nc example.com 80

基本写法:监听端口 nc -l <端口>

# 监听 8080 端口
nc -l 8080

基本写法:指定超时 nc -w <秒数> <主机> <端口>

# 设置 5 秒超时
nc -w 5 example.com 80

基本写法:UDP 连接 nc -u <主机> <端口>

# UDP 模式连接
nc -u example.com 53

基本写法:UDP 监听 nc -ul <端口>

# 监听 UDP 端口
nc -ul 8080

nc 端口扫描

基本写法:扫描单个端口 nc -zv <主机> <端口>

# 扫描 80 端口
nc -zv example.com 80

基本写法:扫描端口范围 nc -zv <主机> <起始>-<结束>

# 扫描 1-1000 端口范围
nc -zv example.com 1-1000

基本写法:指定超时扫描 nc -zvw <秒数> <主机> <端口>

# 设置 2 秒超时扫描
nc -zvw 2 example.com 1-1000

基本写法:使用 IPv6 nc -6 -zv <主机> <端口>

# 使用 IPv6 扫描
nc -6 -zv example.com 80

nc 文件传输

基本写法:接收文件 nc -l <端口> > <文件>

# 监听 8080 端口接收文件
nc -l 8080 > received.txt

基本写法:发送文件 nc <主机> <端口> < <文件>

# 发送文件到远程主机
nc 192.168.1.100 8080 < file.txt

基本写法:传输目录 tar czf - <目录> | nc <主机> <端口>

# 压缩并传输目录
tar czf - /data | nc 192.168.1.100 8080

基本写法:接收并解压 nc -l <端口> | tar xzf -

# 接收并解压目录
nc -l 8080 | tar xzf - -C /backup

nc 高级用法

基本写法:保持监听 nc -lk <端口>

# 持续监听 8080 端口
nc -lk 8080

基本写法:HTTP 请求 echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

# 通过 nc 发送 HTTP 请求
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

基本写法:聊天服务器 nc -l <端口>

# 在主机 A 启动监听
nc -l 8080
# 在主机 B 连接
nc 192.168.1.1 8080

基本写法:端口转发 nc -l <本地端口> -c 'nc <目标> <端口>'

# 端口转发
nc -l 8080 -c 'nc example.com 80'

nmap 基本扫描

基本写法:扫描单个主机 nmap <主机>

# 扫描 example.com 常用端口
nmap example.com

基本写法:扫描 IP 范围 nmap <起始IP>-<结束IP>

# 扫描 192.168.1.1 到 192.168.1.100
nmap 192.168.1.1-100

基本写法:扫描网段 nmap <网段>/<前缀>

# 扫描 192.168.1.0/24 网段
nmap 192.168.1.0/24

基本写法:从文件读取目标 nmap -iL <文件>

# 从文件读取目标列表扫描
nmap -iL targets.txt

基本写法:排除指定主机 nmap <网段> --exclude <IP>

# 排除指定主机扫描
nmap 192.168.1.0/24 --exclude 192.168.1.1

nmap 端口扫描

基本写法:扫描指定端口 nmap -p <端口> <主机>

# 扫描 80 端口
nmap -p 80 example.com

基本写法:扫描端口范围 nmap -p <起始>-<结束> <主机>

# 扫描 1-1000 端口
nmap -p 1-1000 example.com

基本写法:扫描所有端口 nmap -p- <主机>

# 扫描所有 65535 个端口
nmap -p- example.com

基本写法:扫描指定协议端口 nmap -p <协议>:<端口> <主机>

# 扫描 UDP 53 端口
nmap -p U:53 example.com

基本写法:快速扫描常用端口 nmap -F <主机>

# 快速扫描 100 个常用端口
nmap -F example.com

nmap 扫描类型

基本写法:SYN 半开扫描 nmap -sS <主机>

# SYN 半开扫描(需 root)
nmap -sS example.com

基本写法:TCP 全连接扫描 nmap -sT <主机>

# TCP 全连接扫描
nmap -sT example.com

基本写法:UDP 扫描 nmap -sU <主机>

# UDP 端口扫描
nmap -sU example.com

基本写法:Ping 扫描 nmap -sn <网段>

# 只发现存活主机
nmap -sn 192.168.1.0/24

基本写法:无 Ping 扫描 nmap -Pn <主机>

# 跳过主机发现直接扫描端口
nmap -Pn example.com

nmap 服务与版本探测

基本写法:服务版本探测 nmap -sV <主机>

# 探测端口对应的服务版本
nmap -sV example.com

基本写法:操作系统探测 nmap -O <主机>

# 探测目标操作系统
nmap -O example.com

基本写法:全面扫描 nmap -A <主机>

# 启用所有高级探测功能
nmap -A example.com

基本写法:指定版本探测强度 nmap -sV --version-intensity <级别> <主机>

# 设置版本探测强度为 9
nmap -sV --version-intensity 9 example.com

nmap 时间与性能

基本写法:设置扫描时序 nmap -T<级别> <主机>

# 使用激进时序模板(0-5)
nmap -T4 example.com

基本写法:设置并发速率 nmap --max-rate <速率> <主机>

# 限制最大每秒 100 个包
nmap --max-rate 100 example.com

基本写法:设置并行数 nmap --min-parallelism <数量> <主机>

# 设置最小并行探测数
nmap --min-parallelism 10 example.com

基本写法:设置超时 nmap --host-timeout <时间> <主机>

# 设置每主机超时 30 分钟
nmap --host-timeout 30m example.com

nmap 脚本引擎

基本写法:使用默认脚本 nmap -sC <主机>

# 使用默认脚本集合扫描
nmap -sC example.com

基本写法:指定脚本扫描 nmap --script <脚本> <主机>

# 使用 vuln 脚本扫描漏洞
nmap --script vuln example.com

基本写法:HTTP 标题枚举 nmap --script http-title -p <端口> <主机>

# 获取 HTTP 服务标题
nmap --script http-title -p 80,443 example.com

基本写法:SSL 证书枚举 nmap --script ssl-cert -p 443 <主机>

# 获取 SSL 证书信息
nmap --script ssl-cert -p 443 example.com

基本写法:列举脚本 nmap --script-help <类别>

# 列出所有 vuln 类别脚本
nmap --script-help vuln

nmap 输出格式

基本写法:输出到文件 nmap -oN <文件> <主机>

# 输出标准格式到文件
nmap -oN scan.txt example.com

基本写法:输出 XML 格式 nmap -oX <文件> <主机>

# 输出 XML 格式便于程序解析
nmap -oX scan.xml example.com

基本写法:输出 Grep 格式 nmap -oG <文件> <主机>

# 输出 grep 友好格式
nmap -oG scan.gnmap example.com

基本写法:输出所有格式 nmap -oA <文件名> <主机>

# 同时输出所有格式
nmap -oA scanresult example.com

实用扫描组合

基本写法:快速存活主机发现 nmap -sn -T4 <网段>

# 快速扫描网段存活主机
nmap -sn -T4 192.168.1.0/24

基本写法:全面扫描单主机 nmap -sS -sV -O -A -T4 -p- <主机>

# 全面扫描所有端口和服务
nmap -sS -sV -O -A -T4 -p- example.com

基本写法:扫描并保存结果 nmap -sV -oA <文件名> -p- <主机>

# 扫描所有端口并保存结果
nmap -sV -oA fullscan -p- 192.168.1.1