Apostille:让假证书以假乱真的证书伪造工具

假如你仔细不雅看了之后放出的演讲视频,你应该能留意到此中他们说起了一个叫做“Apostille”的对象

严明声明:本文仅限于技巧评论争论,严禁用于其他用途

在DefCon 26上,@singe 和 @_cablethief 颁发了关于企业无线进击的杰出演讲这是一款由@Sensepost团队成员Rogan Daweska开拓的,证书偷取(克隆/捏造)对象但在演讲中他们并未过多先容,这也是匆匆使我写这篇博文的缘故原由

复制证书的通用名称,电子邮件或在创建时输入其他字段是证书捏造的相对简单的要领咋一看,他们看起来并没有什么不合但这样的证书每每会留下诸多的捏造痕迹例如,我创建了一个类似的证书:

root@apostille-post:~# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.pem -out mycert.pem

Generating a 2048 bit RSA private key

…………………………………………………………………………………………………..+++

…+++

writing new private key to ‘mycert.pem’

—–

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [AU]:US

State or Province Name (full name) [Some-State]:California

Locality Name (eg, city) []:Mountain View

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Google LLC

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:*.google.com

Email Address []:

假如我将其托管,以下是Google.com的结果:

可以看到,捏造证书(左图)的证手札息明确指出该证书不被相信此外,从证书的揭橥机构也可以很轻易的判断出证书的真伪

Apostille 安装

Apostille必要Java JDK和Maven来进行编译,是以我们先来安装它们:

root@apostille-post:~# apt install -y maven default-jdk git

克隆存储库,并应用Maven进行编译:

root@apostille-post:~# git clone https://github.com/sensepost/apostille

Cloning into ‘apostille’…

remote: Counting objects: 48, done.

remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48

Unpacking objects: 100% (48/48), done.

root@apostille-post:~# cd apostille/

root@apostille-post:~/apostille# mvn package

克隆你的第一个证书:

java -jar target/apostille-1.0-SNAPSHOT.jar google.com:443 tempkeystore.jks ASDqwe123 ASDqwe123

google.com:443:办事于证书链的端点(不仅限于HTTPS,任何TLS端点都可以)

tempkeystore.jks:寄放证书链的Java Keystore文件

ASDqwe123:前一个是kspassword,后面的是keypassword(密钥库和证书密码)- 密钥库只会在稍后导出证书的时刻用到

下面我们要做的是将证书从密钥库中掏出,并转换为可用于测试的PEM款式详细操作可参考:https://www.calazan.com/how-to-convert-a-java-keystore-jks-to-pem-format/

root@apostille-post:~/apostille# keytool -importkeystore -srckeystore tempkeystore.jks -destkeystore myapp.p12 -srcalias *.google.com -srcstoretype jks -deststoretype pkcs12

Importing keystore tempkeystore.jks to myapp.p12…Enter destination keystore password: ASDqwe123

Re-enter new password: ASDqwe123

Enter source keystore password: ASDqwe123

转换后看起来应该像这样:

现在,让我们来看看比较之前捏造的证书有什么不合之处我将参考AKB的快速Web办事器列表

root@apostille-post:~/apostille# openssl s_server -cert myapp.pem -accept 443 -WWW

Enter pass phrase for myapp.pem: WugWZ3!F3hD#8P!f

Using default temp DH parameters

ACCEPT

结果如下:

可以看到,真证书和捏造证书险些已经很难经由过程肉眼进行区分而证手札息部分,虽有提示但并不明确着末,再次谢谢@RoganDawes供给了这款对象!

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包