用于检测加密材料,如SSH密钥和SSL证书。
文件:libcurl.so.5.3.0
yara文件:https://github.com/leiwuhen92/yara_rule/blob/main/compile_rule/crypto_material.yc
yara命令检测:
yara --print-meta --print-strings crypto_material.yar ibcurl.so.5.3.0
![](https://i-blog.csdnimg.cn/blog_migrate/673e8969979118d862002173473b0f79.png)
实现逻辑:
import pathlib
import yara
NAME="crypto_material"
CHINESE_NAME="密钥及证书检测"
CHINESE_DESCRIPTION="检测加密材料,如SSH密钥和SSL证书"
# 结果存储位置
class FileAnalysis():
def__init__(self):
self.file_path="libcurl.so.5.3.0"
self.processed_analysis={}
file_object=FileAnalysis()
# 特征文件路径
compile_path=pathlib.Path("crypto_material.yc")
# 加载特征文件
rule=yara.load(str(compile_path))
# 匹配
result=rule.match(file_object.file_path)
print("result:%s"%result)
# 解析结果
file_object.processed_analysis[NAME]={}
summary=set()
foriteminresult:
print(item)
print(item.rule)
print(item.meta)
summary.add(item.rule)
file_object.processed_analysis[NAME][item.rule]={"meta":item.meta}
file_object.processed_analysis[NAME]["summary"]=list(summary)
mongo_data={
"file_path":file_object.file_path,
"processed_analysis":file_object.processed_analysis
}
print(mongo_data)
运行结果:
result:[genericPublicKey]
genericPublicKey
genericPublicKey
{'author': 'Joerg Stucke', 'description': 'Generic Public Key Block', 'date': '2017-03-16', 'version': '2', 'version_schema_information': 'Version number is increased whenever something changes.'}
{
"file_path":"libcurl.so.5.3.0",
"processed_analysis": {
"crypto_material": {
"genericPublicKey": {
"meta": {
"author":"Joerg Stucke",
"description":"Generic Public Key Block",
"date":"2017-03-16",
"version":"2",
"version_schema_information":"Version number is increased whenever something changes."
}
},
"summary": [
"genericPublicKey"
]
}
}
}
从结果可知密钥方式为genericPublicKey。
genericPublicKey的yara规则如下:两条字符串在文本内
![](https://i-blog.csdnimg.cn/blog_migrate/3d0f02cf4b3441a3661d98079f246e16.png)
HxD工具打开libcurl.so.5.3.0:搜索yara中的两条字符串(-----BEGIN PUBLIC KEY----- 与 -----END PUBLIC KEY-----),都能检索到
![](https://i-blog.csdnimg.cn/blog_migrate/2cfb3ee8b1f2e77d18531830fe6d642f.png)
参考: