|
2 | 2 | * @Author: LetMeFly |
3 | 3 | * @Date: 2025-03-16 16:35:42 |
4 | 4 | * @LastEditors: LetMeFly.xyz |
5 | | - * @LastEditTime: 2025-03-16 16:35:42 |
| 5 | + * @LastEditTime: 2025-03-17 11:17:40 |
6 | 6 | --> |
| 7 | +# 命令行添加证书 |
| 8 | + |
7 | 9 | 通过命令行添加系统证书:https://blog.csdn.net/qq_42005831/article/details/108139496 |
8 | 10 |
|
9 | 11 | ```shell |
10 | 12 | certutil -addstore root D:\1.crt |
11 | 13 | ``` |
12 | 14 |
|
| 15 | +# 讲好一个故事 |
| 16 | + |
| 17 | +## 初始版本 |
| 18 | + |
| 19 | +AB两公司都是以安全为主业的公司,B公司为了测试A公司的安全保密程度是否可靠,向A公司发起了挑战,以成功将A公司的核心电脑上的一些信息传输出来为目标。 |
| 20 | + |
| 21 | +A公司接受了这一挑战,为了防止A公司核心电脑上的内容遭到泄露,A公司将核心电脑修改为只能连接内网,A公司认为,由于B公司无法访问A公司内网,所以这样就会尽可能地安全。 |
| 22 | + |
| 23 | +但是A公司的核心电脑在某些时候仍然需要被使用,因为疫情等原因A公司有员工使用非核心电脑在家远程办公。A公司的主管有时需要使用核心电脑通过内网和非核心成员进行沟通。 |
| 24 | + |
| 25 | +B公司决定利用这一特性,想要通过A公司将邮件通过内网发送给能连接外网的非核心电脑这一特性来将核心电脑的信息传输出来。 |
| 26 | + |
| 27 | +假设B公司已经利用已有漏洞在A公司的电脑上植入了一些脚本,这些脚本可以进行如下操作: |
| 28 | + |
| 29 | +1. 对于A公司不能联网的核心电脑,脚本读取核心电脑上的一些信息。并在核心电脑上静默安装可信任证书,使用mitmproxy工具,在核心电脑使用邮件客户端(实际上走的HTTPS协议)发送消息时,将想要传输的消息编码加密并以一定的格式附加到邮件的末尾。 |
| 30 | +2. 对于A公司能联网的非核心电脑,脚本同样通过mitmproxy,在非核心成员通过网页读取邮件时,读取邮件中附加的内容并解码,将邮件内容还原。之后由于非核心电脑能够连接公网,脚本可以直接往B公司预留接口发送加密后的信息,至此A公司只能连接内网的核心电脑上的一部分信息也被隐式地传输了出来。 |
| 31 | + |
| 32 | +这样,核心电脑和非核心电脑所能看到的都是正常的邮件,A公司很难察觉。因此,B公司胜利,成功证明了以安全为主业的A公司仍然存在安全保障不周的漏洞。 |
| 33 | + |
| 34 | +## 可行性分析 |
| 35 | + |
| 36 | +**核心电脑静默安装可信任证书实现细节:** |
| 37 | + |
| 38 | +利用脚本调用系统证书管理接口(如Windows的certutil或Linux的update-ca-certificates),将预先生成的根证书添加到系统信任存储中。通过模拟用户操作或提权漏洞绕过权限限制,确保安装过程无弹窗提示。证书由B公司控制,用于后续HTTPS流量的解密和篡改。 |
| 39 | + |
| 40 | +**核心电脑邮件内容附加加密数据实现细节:** |
| 41 | + |
| 42 | +在核心电脑部署mitmproxy作为透明代理,拦截邮件客户端发出的HTTPS请求。通过解析邮件正文的MIME结构,在邮件末尾的Content-Type: text/html部分追加Base64编码的加密数据(如伪装成HTML注释或空白图片标签的data URI)。加密算法采用AES-GCM,密钥通过B公司预置的公钥非对称加密后一并嵌入。 |
| 43 | + |
| 44 | +**非核心电脑提取邮件附加内容实现细节:** |
| 45 | + |
| 46 | +在非核心电脑的浏览器中注入mitmproxy证书,代理网页端邮件服务的HTTPS流量。当用户访问网页邮箱时,mitmproxy扫描邮件内容的特定标记(如特定HTTP头部或隐藏的`<meta>`标签),提取附加的加密数据并解密。解密后的数据可直接存放在内存中。甚至可以不进行解密,直接原始加密状态发送给B公司预留端口并在B公司机器上解密。 |
| 47 | + |
| 48 | +**非核心电脑外传数据实现细节:** |
| 49 | + |
| 50 | +脚本将解密后的数据分块并混入合法的DNS查询或HTTPS请求中,通过B公司控制的域名(如api.bcompany.com)发送。采用DNS-over-HTTPS或WebSocket协议降低流量特征,数据包伪装为统计跟踪像素(如/pixel.png?d=加密数据),利用公网CDN节点作为中转。 |
| 51 | + |
| 52 | +**可行性论证:** |
| 53 | + |
| 54 | ++ 证书安装:Windows/Linux的证书管理接口是公开的,工具如certutil可通过脚本调用。已有案例(如恶意软件Silence)证明静默安装证书可行。 |
| 55 | ++ 数据注入:mitmproxy支持自定义脚本修改流量,经过分析OWA的包格式可精准定位注入点。Base64和AES-GCM为标准化方案,不易触发邮件网关检测。 |
| 56 | ++ 数据提取:网页邮箱内容为明文传输(如Gmail的AMP for Email),mitmproxy可提取DOM中的隐藏数据。临时文件存储可通过内存挂载(如ramfs)规避检测。 |
| 57 | ++ 数据外传:DNS隐蔽信道和HTTPS伪装已被APT组织(如APT29)广泛使用,CDN和公有云服务(如AWS Lambda)可提供合法掩护,流量混入正常请求后难以被规则引擎识别。 |
| 58 | + |
| 59 | +# 更低的假设要求 |
| 60 | + |
| 61 | +使用WebAssembly伪装成Google Analytics直接在非核心电脑上将信息传递出来,不再需要将脚本植入非核心电脑。 |
| 62 | + |
0 commit comments