拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

2023-10-28

工作准备

•一台SQLSERVER 2005/SQLSERVER 2008服务

•SQLSERVER jdbc驱动程序

•Java开发环境eclipse + jdk1.8

•java反编译工具JD-Core

反编译JDBC分析SQLSERVER客户端与服务器通信原理

SQLServerConnection.class

1、经过反编译分析SQLServerConnection.class文件我们可以看到登录时所执行的算法,代码如下图所示:

由此可见sqlserver在用户名密码传输过程中使用了SSL加密,从上图中我们可以看到在启用SSL加密前执行了Prelogin(String param,int param2)函数,该函数算法大致如下图所示:

2、经过一些列分析得知,在启用SSL加密前客户端向服务器发送了客户端驱动信息之后立即读取服务返回的版本内容以作判断当前所使用的驱动是否支持。

3、在反编译分析代码过程中可以看到用户名密码加密算法分别所示:

由此可以通过逆向推算得出用户名密码解密算法如下所示:

TDSChannel.class

1、经过反编译分析SQLServerConnection.class 文件得知通过调用TDSChannel.class 中的函数enableSSL(String param,int param2),那么经过反编译TDSChannel.class文件分析得知该函数主要代码段如下所示:

2、由此可见SQLSERVER客户端仅在传输用户名密码时启用了ssl加密,登录认证前后数据传输均采取明文传输。

SSL通道拦截设计

1、SQLSERVER原始SSL通信如下:

2、拦截后通信如下:

程序设计

1、认证服务伪代码如下:

2、读取客户端驱动版本等信息并模拟sqlserver返回的版本信息,伪代码如下所示:

3、完成以上两步操作后立即开启SSL通道等待客户端开启SSL并握手,伪代码如下:

4、若SSL握手成功则接收客户端发送的用户名密码信息,并立即连接目标服务伪代码如下:

5、若连接成功则模拟客户端发送驱动版本信息并读取目标服务返回的信息反馈给真正的用户,紧接着开始SSL握手,若握手成功则立即发送真实的用户名密码,伪代码如下所示:

SSL通道用户名密码替换以及实时监控

1、使用SQLSERVER标准客户端工具填写堡垒主机地址和端口号用户名密码以及目标主机信息,如下所示:

2、点击“连接”登录实现转发连接功能,登录成功如下所示:

3、通过实时监控窗口查看SQLSERVER客户端执行的命令,如下图所示:

4、新建查询执行命令,如下所示:

5、通过实时监控查看执行的命令信息,如下所示:

到此为止已完成所有工作。

转载于:https://my.oschina.net/zhangzhigong/blog/1859788

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一) 的相关文章

随机推荐

  • [MySQL] Centos下的启动和关闭

    MySQL Centos下的启动和关闭 现在主流的Unix系统有两种风格 System V和BSD 他们的区别如下 Linux作为类Unix 同样也存在这两种风格 其中Centos属于System V 本文主要介绍在Centos下 即Sys
  • 如何让人际关系网助你一臂之力?

    如何让人际关系网助你一臂之力 编者按 本文来自First Round Review 他们准备的文章既讲故事 还同时向创业者提供可操作的建议 以助力打造优秀的公司 LinkedIn 早期项目经理Patrick Ewers现如今的工作就是帮助科
  • PCL 部分点云视点问题

    目录 一 问题概述 二 解决方案 1 软件实现 2 代码实现 三 调整之后 一 问题概述 针对CloudCompare软件处理过的pcd格式点云 在使用PCL进行特征点提取 配准等实验中最终显示结果出现点云位置偏差较大的问题 本博客给出解决
  • 基于pytorch神经网络的工业区域用电量预测 完整代码数据

    代码讲解 工业用电量预测 时间序列预测 基于pytorch神经网络的工业用电量预测 完整代码数据 哔哩哔哩 bilibili 本博客付完整代码数据 运行截图 pip install openpyxl i https pypi tuna ts
  • Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。

    原文地址 http www cnblogs com woms p 5769680 html 内置属性 主要有两个常用内置属性 basedir 表示项目根目录 即包含pom xml文件的目录 version 表示项目版本 POM属性 pom中
  • 《Effective Java》第二版总结

    Effective Java 主要给了78条编码建议 指导 方便开发者开发出 高效 稳定 健壮 设计优良的程序 下面看一下这78条建议 创建和销毁对象 1 考虑用静态工厂方法代替构造器 为了让客户端获取他自身的一个实例 最常用的方法就是提供
  • UE4材质:纯数学算法实现水面水波扩散效果

    上面的做法有几个问题 1 用于地形时 显示不出来 原因是地形的UV是会超出1的 做如下修正 2 水波在UV边界被截断 暂不处理了 有几个办法 不让水波出现在UV边界上 或在世界空间指定水波位置 在二个相邻的水块中分别为半个水波指定发射位置
  • CTEX安装教程与注意事项

    一 CTEX Latex 下载 百度搜索ctex 进入下载中心 CTEX 2 下载中心中选择稳定版本CTeX 2 9 2 164 点击进入 初学者是使用basic CTeX 2 9 2 164 exe 已足够使用 二 安装 首先备份电脑的环
  • vs试用期延长期到期_VS2017试用期到期后登录微软账户出现错误解决方法

    关于使用VS2017试用期一个月到后 需要登录微软账户后进行认证后才能重新使用 但是登录成功后出现如下错误 We could not refresh the credentials for the account AADSTS50001 T
  • 【IDEA Sprintboot】简单入门:整合SpringSecurity依赖、整合Thymeleaf框架

    目录 1 IDEA 简单入门 请求数据库表数据 水w的博客 CSDN博客 目录 三 1 整合SpringSecurity依赖 2 整合Thymeleaf框架 解决css样式等静态资源访问不到的问题 三 1 整合SpringSecurity依
  • Linux shell脚本之函数 Function 详解

    Linux shell脚本之函数Function 函数详解 函数语法 函数的生命周期 函数返回值 函数参数 变量作用域 1 本地变量 2 局部变量 函数变量示例 函数递归 递归示例 函数示例 函数详解 在过程式编程中 代码会重用 过程式编程
  • IOS集成ctp,恒生,金仕达穿透式监管的一点坑

    官方文档有些问题遗漏 1 要将引入对应头文件的文件用 mm后缀支持c 语法 不然会出现Expected 报错 不支持int 2 在解析的时候存在一些差异 CTP GetSystemInfo返回的数据实际是用char 接收的纯byte数据 用
  • 用RCircos包来画圈圈图

    用RCircos包来画圈圈图 我先讲解了画图 再讲解了一些小知识 安装并加载必须的packages 如果你还没有安装 就运行下面的代码安装 install packages RCircos library RCircos 如果你安装好了 就
  • GCC详解

    开放 自由和灵活是Linux的魅力所在 而这一点在gcc上的体现就是程序员通过它能够更好地控制整个编译过程 在使用gcc编译程序时 编译过程可以细分为 个阶段 预处理 Pre Processing 编译 Compiling 汇编 Assem
  • Linux命令大全(手册)

    https www linuxcool com
  • Android OkHttp源码阅读详解一

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到教程 前言 源码阅读基于okhttp 3 10 0 Android中OkHttp源码阅读二 责任链模式 implementation com
  • 【100天精通python】Day42:python网络爬虫开发_HTTP请求库requests 常用语法与实战

    目录 1 HTTP协议 2 HTTP与HTTPS 3 HTTP请求过程 3 1 HTTP请求过程 3 2 GET请求与POST请求 3 3
  • 树莓派快速扩容

    当树莓派默认的系统空间已经被占满 无法再进行安装等操作 而 SD卡仍有空间未被使用 可以对树莓派进行扩容 假设一个镜像的大小为 4G 由于该镜像对内存卡的要求是大于或等于 4G 但对于 4G以上的内存卡来说 树莓派的系统只利用到 4G 因此
  • 2.机器学习之单变量线性回归(李宏毅)

    2 单变量线性回归 Linear Regression with One Variable 2 1 模型表示 Model Represention 以前面说的例子 房子的价格是个回归问题 回归一词指的是 我们根据之前的数据预测出一个准确的输
  • 拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 工作准备 一台SQLSERVER 2005 SQLSERVER 2008服务 SQLSERVER jdbc驱动程序 Java开发环境eclipse jdk1 8 java反