November 26, 2019
crt.shからCTログを引っ張ってきて出力する。 CTログのクエリの仕方を変えるだけでフィッシングサイトとかが簡単に見つかる。
Googleが提唱している証明書の透明性を高める取り組み・プロジェクト。 証明書の発行を誰もがほぼリアルタイムで監視・監査することで、認証局によって誤って発行されたSSL証明書の発見や、悪意を持って発行された証明書とそれを発行した認証局の特定を可能にする。 たまにCTログの中に内部のドメインとかが入っているためOSINT大好きマンにはよく利用されている。
Certificate Transparency JNSAの資料(PDF)
まずはcrt.shからjsonで情報を出力する。
といっても
https://crt.sh/?q=
+ <domain>
+ &output=json
でGETリクエストを出すだけ。
$ curl 'https://crt.sh/?q=example.com&output=json' | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2163 100 2163 0 0 1635 0 0:00:01 0:00:01 --:--:-- 1636
[
{
"issuer_ca_id": 1191,
"issuer_name": "C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA",
"name_value": "example.com",
"min_cert_id": 987119772,
"min_entry_timestamp": "2018-11-29T13:44:14.118",
"not_before": "2018-11-28T00:00:00",
"not_after": "2020-12-02T12:00:00"
},
{
"issuer_ca_id": 1191,
"issuer_name": "C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA",
"name_value": "example.com",
"min_cert_id": 984858191,
"min_entry_timestamp": "2018-11-28T21:20:12.606",
"not_before": "2018-11-28T00:00:00",
"not_after": "2020-12-02T12:00:00"
},
{
"issuer_ca_id": 1465,
"issuer_name": "C=US, O=\"thawte, Inc.\", CN=thawte SSL CA - G2",
"name_value": "example.com",
"min_cert_id": 24564717,
"min_entry_timestamp": "2016-07-14T07:55:01.55",
"not_before": "2016-07-14T00:00:00",
"not_after": "2017-07-14T23:59:59"
},
{
"issuer_ca_id": 1465,
"issuer_name": "C=US, O=\"thawte, Inc.\", CN=thawte SSL CA - G2",
"name_value": "example.com",
"min_cert_id": 24560643,
"min_entry_timestamp": "2016-07-14T07:30:08.461",
"not_before": "2016-07-14T00:00:00",
"not_after": "2018-07-14T23:59:59"
},
{
"issuer_ca_id": 1465,
"issuer_name": "C=US, O=\"thawte, Inc.\", CN=thawte SSL CA - G2",
"name_value": "example.com",
"min_cert_id": 24560621,
"min_entry_timestamp": "2016-07-14T07:25:01.93",
"not_before": "2016-07-14T00:00:00",
"not_after": "2017-07-14T23:59:59"
},
{
"issuer_ca_id": 1449,
"issuer_name": "C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 Secure Server CA - G4",
"name_value": "example.com",
"min_cert_id": 24558997,
"min_entry_timestamp": "2016-07-14T06:40:02.4",
"not_before": "2016-07-14T00:00:00",
"not_after": "2018-07-14T23:59:59"
},
{
"issuer_ca_id": 1397,
"issuer_name": "C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA",
"name_value": "example.com",
"min_cert_id": 10557607,
"min_entry_timestamp": "2015-11-05T14:51:33.941",
"not_before": "2015-11-03T00:00:00",
"not_after": "2018-11-28T12:00:00"
},
{
"issuer_ca_id": 1397,
"issuer_name": "C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA",
"name_value": "example.com",
"min_cert_id": 5857507,
"min_entry_timestamp": "2014-12-11T14:36:57.201",
"not_before": "2014-11-06T00:00:00",
"not_after": "2015-11-13T12:00:00"
}
]
https://github.com/famasoon/crtsh
クエリをかけたり証明書の中身から登録されているDNS情報を引き出せる。(悪用ダメ絶対)
機能自体はGo言語の標準ライブラリのみで実装しているので特に依存関係とか気にせず使用可能。
https://crt.sh自体がクエリにワイルドカード(%
やら_
)に対応しているのでクエリをかけるのが楽。
今は証明書からDNS情報のみ引き出せるが将来的にはより多くの情報を引き抜くようにしていきたい。
https://crt.shでは_
を使った検索が可能である。
内容としては一部一致しているドメインの証明書を引っ張ってこれる。
これはうまく使うとフィッシング詐欺系サイト(特にドメインを似せてきていたり、タイポスワッティングを狙っているサイト)を大量に引っ掛けられそうである。
今回はそこまでしないが、今度うまくいったら報告する予定。
以上です。