一、背景介绍
近期,Citizen Lab发布了一份关于Paragon间谍软件的详细分析报告,Paragon是一家以色列的间谍软件公司,成立于2019年,由前以色列总理 Ehud Barak 和前以色列8200部队指挥官 Ehud Schneorson 共同创立,该公司主要产品是名为 Graphite 的间谍软件,其主打产品Graphite能够秘密寄生在合法应用中监控即时通讯内容,已被多国政府用于监视记者和活动人士。
研究人员通过分析证书特征成功识别了Paragon的基础设施,这为我们提供了一个很好的案例来比较各大测绘平台的证书搜索能力。
二、Paragon的证书特征
2.1 P1指纹(C2服务器)
文章中提到指纹是censys的搜索语法,p1主要用于识别Paragon的C2服务器,包含以下特征:
parsed.validity_period.length_seconds=31536000 and
parsed.extensions.subject_alt_name.dns_names=/.+/ and not
parsed.extensions.subject_alt_name.uniform_resource_identifiers=/.+/ and not
parsed.extensions.key_usage.value=[0 to 255] and not
parsed.extensions.extended_key_usage.server_auth=`true` and
parsed.subject_dn=/O=[a-z0-9-.]+, CN=[a-z0-9-.]+/ and
(parsed.issuer_dn=/O=[a-z0-9-.]+, CN=[a-z0-9-.]+/ or not
parsed.issuer_dn=/.+/) and ((parsed.extensions.subject_key_id=/.+/ and parsed.extensions.authority_key_id=/.+/) or
(not parsed.extensions.subject_key_id=/.+/ and not parsed.extensions.authority_key_id=/.+/)) and not
parsed.extensions.basic_constraints.is_ca=true and not
parsed.extensions.basic_constraints.is_ca=false and labels=`unexpired`
指纹含义以及转换360quake和fofa对应的语法:
1. 证书有效期检查
parsed.validity_period.length_seconds=31536000
含义:证书有效期必须精确等于一年(31536000秒)
2. DNS名称检查
and parsed.extensions.subject_alt_name.dns_names=/.+/
含义:须包含至少一个DNS名称在SAN扩展中
平台支持:
360 Quake:
cert:"Subject Alternative Name" AND cert:"DNS:"
FOFA:
cert="DNS Names"
3. URI检查
and not parsed.extensions.subject_alt_name.uniform_resource_identifiers=/.+/
含义:不能在SAN扩展中包含任何URI
示例:带有URI的SAN扩展格式
X509v3 Subject Alternative Name:
DNS:example.com
URI:http://example.com
4. Key Usage检查
and not parsed.extensions.key_usage.value=[0 to 255]
含义:不能包含任何Key Usage值
需排除的格式:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment...
平台支持:
360 Quake:
AND NOT cert:"Key Usage"
FOFA:
&& cert!="Key Usage"
5. Extended Key Usage检查
and not parsed.extensions.extended_key_usage.server_auth=true
含义:不能包含服务器认证的扩展密钥用途
需排除的格式:
X509v3 Extended Key Usage:
TLS Web Server Authentication
TLS Web Client Authentication
平台支持:
360 Quake:
AND NOT cert:"TLS Web Server"
FOFA:
&& cert!="Extended Key Usage"
6. 主题DN检查
and parsed.subject_dn=/O=[a-z0-9-.]+, CN=[a-z0-9-.]+/
含义:主题DN必须包含O和CN,且格式必须严格匹配:小写字母、数字、连字符(-)和点(.),需要支持正则表达式搜索
7. 颁发者DN检查
and (parsed.issuer_dn=/O=[a-z0-9-.]+, CN=[a-z0-9-.]+/ or not parsed.issuer_dn=/.+/)
含义:颁发者DN要么不存在,要么必须符合与主题DN相同的格式
8. 密钥标识符检查
and ((parsed.extensions.subject_key_id=/.+/ and parsed.extensions.authority_key_id=/.+/) or (not parsed.extensions.subject_key_id=/.+/ and not parsed.extensions.authority_key_id=/.+/))
含义:要么同时包含主体密钥标识符和授权密钥标识符,要么两者都不包含,不允许只有其中一个
9. Basic Constraints检查
and not parsed.extensions.basic_constraints.is_ca=true and not parsed.extensions.basic_constraints.is_ca=false
含义:不能包含Basic Constraints扩展
需排除的格式:
X509v3 Basic Constraints: critical
CA:TRUE
平台支持:
360 Quake:
AND NOT cert:"Basic Constraints"
FOFA:
&& cert!="Basic Constraints"
10. 证书有效性检查
and not labels=unexpired
含义:证书必须是未过期的
2.2 P2指纹(管理后端)
parsed.issuer.organization=”Internet Widgits Pty Ltd” and
parsed.extensions.subject_alt_name.dns_names=/.+/ and
parsed.extensions.key_usage.value=96
P2指纹用于识别Paragon的管理后端,特征包括:
-
颁发者组织名称为"Internet Widgits Pty Ltd"
-
必须包含至少一个DNS名称在SAN扩展中
-
Key Usage值必须为96(Certificate Sign + CRL Sign)
其中 “Internet Widgits Pty Ltd” 为OpenSSL的默认配置
Key Usage值必须为96的含义如下:
在X.509标准文档 ITU-T X.509规范中定义:
二进制位 | 十六进制值 | 描述 | 标签 |
---|---|---|---|
0 | 0x80 | Digital Signature | digitalSignature |
1 | 0x40 | Non Repudiation | nonRepudiation |
2 | 0x20 | Key Encipherment | keyEncipherment |
3 | 0x10 | Data Encipherment | dataEncipherment |
4 | 0x08 | Key Agreement | keyAgreement |
5 | 0x04 | Certificate Sign | keyCertSign |
6 | 0x02 | CRL Sign | cRLSign |
7 | 0x01 | Encipher Only | encipherOnly |
8 | 0x00 | Decipher Only | decipherOnly |
Key Usage值必须为96(0x60) 是由: Certificate Sign (32 = 0x20)、 CRL Sign (64 = 0x40) 组成
三、各平台证书搜索能力对比
3.1 Censys
Censys证书字段相比其他测绘平台字段更加丰富,原因是早期Censys就在做透明证书(Certificate Transparency)的采集,拥有海量的证书库,使用ZCrypto(开源Go加密)解析证书: https://github.com/zmap/zcrypto 对TLS && x509证书解析的更加详细,证书字段达到了上百种。
拥有其他家没有证书特征搜索方法,如:
搜索证书有效期范围时间,精确到秒数
parsed.validity_period.length_seconds=31536000
使用正则来匹配对应字段格式
parsed.subject_dn=/O=[a-z0-9-.]+, CN=[a-z0-9-.]+
证书过期与否搜索
labels=unexpired
语法参考:
https://platform.censys.io/home/definitions?resource=cert&org=8e1c018e-3dd2-4662-ac4d-7f5fb335c7a2
3.2 360 Quake
360 quake对证书做了原始x509证书字符串展示
可以看到对tls握手信息和证书也做了详细解析存储,可以看出来也是使用ZCrypto开源库实现解析,但帮助文档中没有开放所有字段的搜索语法。
3.2 fofa
fofa对证书的展示如下
四、总结
通过Paragon间谍软件的案例,我们可以看到:
-
各测绘平台在证书搜索能力上各有优势:Censys提供最细粒度的证书字段搜索,360 Quake和FOFA支持基于字符串的证书内容搜索,并提供证书的基础字段的搜索。
-
Censys在证书搜索方面具有显著优势:提供完整的X.509证书字段解析、支持复杂的正则表达式匹配、可以精确定位特定的证书扩展字段,同时保留证书的历史记录便于追溯。
-
合理组合使用多个平台可以获得更好的结果:利用各平台的互补优势、交叉验证提高判断准确性,不同平台的扫描时间差异可提供更全面的覆盖。
-
证书特征是识别恶意基础设施的重要手段:证书配置特征往往反映部署者的意图,异常的证书配置可能暴露恶意行为,证书之间关系可以揭示基础设施之间的关联。
未来可以期待的发展:
-
测绘平台功能演进:期待更细粒度的证书字段搜索支持、更强大的正则表达式匹配能力、证书链关系的可视化分析以及证书异常配置的智能检测。
-
威胁检测方向:自动化的恶意基础设施发现、证书特征与其他特征的关联分析,以及实时的证书变化监测预警。
-
平台协同方向:测绘数据的标准化和互通、多平台结果的自动化比对、统一的查询语言转换接口,以及跨平台的威胁情报共享。
这个案例不仅展示了如何通过证书特征识别特定的基础设施,也帮助我们更好地理解和利用各个测绘平台的能力。在实际工作中,我们应该根据具体需求选择合适的平台,充分利用各平台的独特优势,建立多平台交叉验证机制,持续跟踪平台能力的演进,并积累证书特征分析经验。通过这些实践,我们可以更有效地利用证书特征来发现和跟踪恶意基础设施,提升威胁检测和响应能力。
原文始发于微信公众号(源影安全团队):从Paragon恶意软件分析测绘平台证书搜索能力
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论