#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(上)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。

目录

Yakit进阶模式-MITM中间人代理与劫持

背景介绍

MITM 交互式劫持技术

MITM劫持,却不止于劫持

证书安装和免配置启动

免配置模式

CA证书的安装

开始劫持

开始劫持

标记/替换流量

导入/导出规则

新建/编辑规则

细节说明


Yakit进阶模式-MITM中间人代理与劫持

背景介绍

"MITM" 是 "Man-in-the-Middle" 的缩写,意思是中间人攻击。

MITM攻击是一种网络攻击技术,攻击者通过欺骗的手段,让自己成为通信双方之间的中间人,从而可以窃取双方之间的通信内容、修改通信内容、甚至篡改通信流量,从而实现窃取信息、伪造信息等攻击目的。

"未知攻,焉知防",在渗透测试中,MITM劫持可以被用来模拟真实的黑客攻击,以测试系统和应用程序的安全性。

渗透测试中使用MITM攻击的一个典型场景是在测试Web应用程序时。攻击者可以使用MITM技术拦截应用程序和服务器之间的通信,以获取用户名和密码等敏感信息,或者篡改应用程序返回的数据。攻击者可以使用代理工具,来捕获应用程序发送和接收的数据,对数据进行修改或篡改,然后重新发送到应用程序或服务器。这样就可以测试应用程序是否可以有效地防范MITM攻击,并且是否能够正确地处理应用程序和服务器之间的通信。

MITM攻击还可以用来测试网络的弱点,并检测是否存在潜在的漏洞。通过MITM攻击,渗透测试人员可以捕获网络中传输的数据,并进行分析和审查,以发现可能存在的安全问题。

例如,攻击者可以利用MITM攻击来欺骗局域网内的设备,并拦截设备之间的通信流量,从而窃取敏感信息,或者篡改数据包,对网络进行进一步的攻击。

总的来说,MITM劫持是渗透测试中常用的一种技术,它可以帮助测试人员发现网络中可能存在的安全漏洞,提供相应的建议和解决方案,从而保护系统和应用程序的安全。

相比于基础工具的使用,这一部分内容相对来说需要一定的安全基础,属于Yakit的进阶内容。故此部分内容归属于进阶模式。

MITM 交互式劫持技术

Yakit的MITM模块原理是启动一个HTTP代理,自动转发流量,当用户启动手动劫持后,会停止自动转发,阻塞请求,并将请求出栈,做解压Gzip、处理chunk、解码等处理,让请求变得人类可读,并显示在用户前端,用户可以对请求做查看、修改或重放。

重放时,会对用户构造的HTTP请求数据包做修复,保证请求包的有效性。Yak引擎手动实现了HTTP库,所以用户可以自定义畸形的请求包、响应包,应用于一些特殊场景下的漏洞利用。

MITM劫持,却不止于劫持

MITM操作台可百分百替代 BurpSuite,下载并安装证书、劫持请求、响应、编辑劫持到的数据包等。

并且提供一整套顺畅的工作流,劫持 => History => Repeater / Intruder,劫持到的数据,在History可以查看历史数据,选择需要“挖掘”的数据包,发送到 WebFuzzer 进行 Repeater / Intruder 操作。

除了这些典型的操作场景外,MITM 还提供了插件被动扫描、热加载、数据包替换、标记等更灵活的功能。

接下来的章节将对MITM模块进行详细介绍MITM的功能。

证书安装和免配置启动

要在渗透测试中使用Yakit 的 MITM劫持,您可以:

  • 使用免配置模式。不需要任何其他配置,只需安装Chrome 浏览器,免配置启动之后将打开一个新的浏览器会话,其中所有流量都将通过 Yakit 自动代理。无需安装 Yakit 的 CA 证书就可以使用它来通过 HTTPS 进行测试。
  • 使用您选择的外部浏览器。由于各种原因,您可能不想使用免配置的代理的浏览器。在这种情况下,您需要执行一些其他步骤来配置浏览器以与 Yakit的 MITM 一起使用,并在浏览器中安装 Yakit 的 CA 证书。

免配置模式

点击手工测试--MITM交互式劫持即可进入MITM劫持页面,点击免配置启动进入免配置启动设置界面。

CA证书的安装

关于证书的安装(以windows为例),主要有以下步骤:

  1. 首先,需要我们根据图中所示配置好代理的监听端口和浏览器的代理服务器设置,然后点击③高级配置并下载证书。

修改下载证书的后缀,去掉“.pem”,双击进行安装,证书存储选择 '受信任的根证书颁发机构'

拓展知识:CRT和PEM是两种常见的数字证书格式,用于加密和验证通信过程中的数据安全。CRT是一个X.509证书文件格式,PEM是一种可打印的证书文件格式,可以包含多种类型的加密和公钥证书。PEM格式通常使用base64编码,并且以“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”之间的文本块包含证书数据。PEM格式还可以用于存储密钥、证书请求和其他类型的加密数据。CRT格式是一种二进制格式,包含用于验证数字证书有效性的公钥、证书持有者的信息以及证书签名。CRT格式通常用于安装数字证书到Web服务器或其他应用程序中。在实践中,PEM格式比CRT格式更为常见,因为PEM格式的文件可以轻松地通过文本编辑器进行查看和编辑,并且PEM格式也可以包含多种类型的加密和公钥证书。不过,在某些情况下,例如在安装数字证书到Web服务器上时,CRT格式可能更为方便。

至此,我们已经完成Yakit-MITM证书的安装,在Yakit中可以对HTTPS请求进行抓包。

开始劫持

  • 1.设置代理监听主机,远程模式可以修改为0.0.0.0以监听主机所有网卡。
  • 2.设置代理监听端口,设置一个不被占用的端口。
  • 3.开启该选项将支持 HTTP/2.0 劫持,关闭后自动降级为HTTP1.1,开启后 HTTP2 协商失败也会自动降级。
  • 4.根据填写的正则规则,对符合规则的数据包进行染色、标记、替换、打tag等操作,方便用户快速筛选出目标数据包。Yakit目前提供55条默认规则,点击默认配置导入即可使用。
  • 5.开启启用插件则表示,进入劫持页面就会加载在侧边栏 ⑥ 当中选择的插件以及编写插件时设置了默认启动的插件。
  • 6.插件商店当中的"MITM插件" 和 "端口扫描插件"类型的插件。
  • 7.插件分组:将插件按照自己的使用习惯进行分组,便于在使用插件时快速勾选自己需要的插件。插件组在整个Yakit里是共用的,只要有加载插件的地方就使用插件分组。
  • 8.根据关键字或者tag快速搜索所需插件。
  • 9.下拉显示已创建过的分组,并进行分组选择。
  • 10.高级配置:
  • 11.为劫持再设置一个代理,通常用于访问中国大陆无法访问的网站或访问特殊网络/内网,也可用于接入xray等被动扫描。
  • 12.客户端TLS:导入TSL证书,用于 mTLS(Mutual TLS)开启客户端验证的 HTTPS 网站抓包。
  • 13.过滤器:通过配置过滤条件,来控制只抓/不抓哪些数据包,也可以理解为劫持的“黑白名单”。
  • 14.下载Yakit证书。

开始劫持

点击劫持启动后进入到劫持界面:选择丢弃请求,则该条数据不会出现在history,提交数据则会将该数据包记录在history 并开始劫持下一个数据包。

  1. 在劫持页面的左上角的①单选框选择手动劫持,打开浏览器,输入你需要访问的URL(以百度一下,你就知道 为例)并回车,这时你将会看到数据流量经过 Yakit 并暂停,您可以查看或修改数据包。选择自动放行则会放行所有的数据包,被动日志则为劫持模块、插件加载、被动扫描的执行日志。

  2. 选择手动劫持劫持到请求以后,点击右边② 丢弃请求 则该条数据将会丢失,不在继续处理且不会出现在history中,③提交数据则会将该数据包继续传输下去并记录在history并开始劫持下一个数据包。

  3. 劫持到请求以后,在右边单选框④劫持响应处选择当前请求,则会劫持到当前请求包对应的响应数据包。选择"所有"则会劫持所有请求的响应数据包。

  4. 在整个数据包展示处,我们可以看到HTTP请求的数据进行手工的修改,数据主要包含了:请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等,点击鼠标右键可以对数据包进行更多的操作:

劫持到的所有的数据包都会存入到history中,劫持后可以在history查看感兴趣的数据包。关于History功能的详情请移步 History进行查看。

标记/替换流量

在日常的工作中,我们需要对测试的目标网站进行流量分析;当然除了在分析流量之外,我们经常需要涉及一些操作,以实现对流量的修改。

作为一个合格的工程师,任何时候掌握对流量的完全控制权其实是非常重要的基本技能。

该功能主要是替换数据包中符合规则的内容,比如替换数据包中自己的敏感信息,对数据包进行颜色标记或者打上标签,方便对数据包进行分类,或快速找出自己感兴趣的数据包。

导入/导出规则

在启动 MITM 之前,我们就可以配置这些规则,当然,我们也可以在 MITM 劫持过程中动态修改。

首先,在开始劫持页面的内容规则选项我们可以看到 ①默认配置导入配置导出配置 三个与内容规则相关的操作选项。我们点击默认配置选项。

在弹出的对话框中,点击 ①使用默认配置,导入JSON以后,点击 ②导入

点击右上角的导出配置,可以将规则导出为JSON文件,可将文件进行分享给他人使用。

新建/编辑规则

在劫持页面点击右上角规则配置可以查看已有规则

编写规则的部分采用 Golang 风格正则表达式:推荐使用 regex101: build, test, and debug regex 调试,规则如果编译失败,则自动降级为关键字匹配

已有的规则可以进行编辑操作,或者新增规则,编辑或新增以后点击添加该规则修改进行保存

细节说明

  1. 这些规则是 针对代理全流量的,不光会对用户在 History 看到的过滤后的请求生效,对一些已经被过滤掉的 JS 或者静态文件都是生效的,编写简单规则务必明确场景

  2. 规则的执行顺序是有意义的

  3. 规则基于 Golang 风格正则/Glob/关键字, 采取降级策略:即如果无法编译为正则,将会最后被降级为 “关键字” 匹配。

  4. 替换后的数据包将会被自动修复,用户不需担心数据包毁坏协议

未完待续~~!!!!!!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows11安装Isaac Lab

1.1 下载文件 将 Isaac Lab 仓库克隆到您的工作空间: git clone https://github.com/isaac-sim/IsaacLab.git 1.2 创建Isaac Sim符号链接 F:cd IsaacLab 官方文档里路径/有问题,改成\): # 打开IsaacLab目录cd IsaacLab# 使用…

AI 的时代,新科技和新技术如何推动跨学科的整合?

在当前AI的发展中,我们面临的一个主要挑战就是融合的问题,这实际上不仅是技术上的融合,还有更深层次的哲学层面的思考。 或许在中国这方面的讨论较少,但在西方哲学和神学的语境中,探讨万物的根本和不同学科之间的联系…

力扣打卡12:复原IP地址

链接:93. 复原 IP 地址 - 力扣(LeetCode) 这道题需要对字符串进行操作,我选择了三层循环,其实还可以递归。 我在循环时进行了剪枝,比如一些情况直接跳出循环。 我的代码: class Solution { p…

R学习——数据框

目录 1数据框的合并 2数据框的访问 2.1 通过索引[] 2.2符号$访问 2.3 attach访问 2.4 with访问 1数据框的合并 当每个内容存储为单独的向量,data.frame可以进行这些内容单独数据框合并。 2数据框的访问 2.1 通过索引[] [i]输出对应的列 [i,]输出对应的行 …

XMOS将在CES 2025上展出多款由边缘AI驱动的创新音效、音频、识别和处理解决方案

全球智能物联网技术领导者暨匠心独到的半导体科技企业XMOS宣布:该公司将再次参加2025年国际消费电子展(CES 2025),并将在本届CES上展出一系列由人工智能(AI)驱动的全新空间音效、语音捕获与降噪、音视频多模…

第一个C++程序--(蓝桥杯备考版)

第一个C程序 基础程序 #include <iostream>//头⽂件 using namespace std;//使⽤std的名字空间 int main()//main函数 {cout << "hello world!" << endl; //输出&#xff1a;在屏幕打印"hello world!" return 0;}main函数 main 函数是…

密码学——密码学基础、散列函数与数字签名

1.密码学概述 是信息安全的基础和核心&#xff0c;是防范各种安全威胁的重要手段&#xff0c;信息安全的许多相关知识都与密码学相关。 密码学发展 密码学是一门古老而又年轻的学科 &#xff0c;几千年以前就存在&#xff0c;至今仍在发展演进。地位非常重要甚至起决定性作用…

李飞飞的生成式3D场景,对数字孪生的未来影响几何?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第47/100篇文章。 前言 这两天&#xff0c;AI界的教母李飞飞团队重磅发布了空间智能生成式AI大模型。 仅通过一张图片就能够生成一个可操作和交互的3D空间场景。 空间智能的…

H3C NAT实验

实验拓扑 实验需求 按照图示配置 IP 地址私网 A 通过 R1 接入到互联网&#xff0c;私网 B 通过 R3 接入到互联网私网 A 内部存在 Vlan10 和 Vlan20&#xff0c;通过 R1 上单臂路由访问外部网络私网 A 通过 NAPT 使 Vlan10 和 Vlan20 都能够使用 R1 的公网地址访问互联网私网 B…

【Java Web】Tomcat 快速入门

通常&#xff0c;为了让 Java 开发的应用程序&#xff08;app&#xff09;能够在服务器上正常运行&#xff0c;必须安装 Java 运行时环境&#xff08;JRE&#xff09;。JRE 主要支持 Java SE&#xff0c;而如果要运行 Java EE 应用&#xff0c;则需要更多的支持&#xff0c;比如…

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53&#xff0c;88&#xff0c;389等端口&#xff0c;推测为域控 进一步信息收集&#xff0c;对爆破的端口进行更加详细的扫描 小tips&#xff1a;对于众多的端口&…

QT核心功能概览

QT的学习&#xff08;一&#xff09;如何查阅QT文档&#xff1f;&#xff08;以QPushButton为例&#xff09;_qt的组件在qt文档那里面看-CSDN博客 QPushButton Class | Qt Widgets 5.15.18 一、前言 QT虽说功能很庞大&#xff0c;但是常用的控件也不是很多&#xff0c;也就只…

《Java核心技术I》并行数组算法

并行数组算法 Arrays类提供了大量并行化操作。 Arrays.parallelSort方法可以对一个基本类型值或对象的数组排序。 package arrays;import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import …

深度学习:重塑学校教育的未来

摘要&#xff1a;本文旨在全面剖析深度学习技术在教育领域的应用现状及未来前景。通过对当前深度学习技术在教育中的应用案例进行深入剖析&#xff0c;探讨其在教学效果、学习体验等方面的积极作用&#xff0c;同时分析存在的挑战与问题。在此基础上&#xff0c;本文将进一步展…

从根上理解 mysql -数据在页中是怎么存储的

之前说了&#xff0c;一行数据是怎么存储的。现在来看下 数据在页中是怎么存储的 基础知识 页是Innodb管理的存储空间的基本单位,一般是16kb页分为好多类型 大概十多种&#xff0c;面试中平时所说的页即为索引页&#xff08;数据页&#xff09;&#xff0c;当然也有像insert …

在C#中编程绘制和移动线段

这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时&#xff0c;光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时&#xff0c;光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…

快速学习selenium基础操作

全篇大概19000字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间1h 什么是Selenium&#xff1f; Selenium是一系列自动化工具集的统称&#xff0c;官方工具有 Selenium IDE、Selenium WebDriver、Selenium Grid&#xff0c; 主要用于桌面端Web应用程序的自动化。能够通…

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;垃圾回收&#xff08;GC&am…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的&#xff0c;该函数需要接收一个对象作为参数&#xff0c;该对象可添加 template、data、methods 等属性。 template …

前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码

技术栈选用 Vue3 Vite5 Pinia Vant4 Sass 源码地址&#xff1a; git clone https://gitee.com/gaiya001/h5-APP.git1. 1.vite.config.js文件配置 ** import { defineConfig } from vite // 导入 Vite 的配置函数 import vue from vitejs/plugin-vue // 导入 Vue 插件 i…