我的程序解析从Cuckoo输出的JSON报告文件,查找DLL。不幸的是,似乎很少(根据我的意见没有)文档指定文件中的哪些字段存在,以及它们是否以特定顺序出现;这使得抓取文件令人难以置信地不确定是否将捕获正确的数据。
目前,我在'pe_imports'(如果它存在)和'peid_signatures'键之间解析数据以找到DLL,但是,peid_signatures字段总是存在,并且它总是会直接成功DLL文件?如果有任何相关文档,或者您可以将我指向Cuckoo代码中的正确部分,请告诉我:)
由于
答案 0 :(得分:0)
peid_signatures字段是否始终存在?
如果某些对象(在您的情况下为dll)与定义的签名匹配,则取决于签名,杜鹃将在报告中添加分数和签名信息。这些签名并不总是出现在json报告中。
如果您有兴趣查找布谷鸟为其分析报告生成的密钥,可以在 static.py 文件中找到它们。文件位置
杜鹃/杜鹃/处理/ static.py
def _get_peid_signatures(self):
"""Gets PEID signatures.
@return: matched signatures or None.
"""
try:
sig_path = cwd("peutils", "UserDB.TXT", private=True)
signatures = peutils.SignatureDatabase(sig_path)
return signatures.match(self.pe, ep_only=True)
except:
return None
和结果
def run(self):
"""Run analysis.
@return: analysis results dict or None.
"""
if not os.path.exists(self.file_path):
return {}
try:
self.pe = pefile.PE(self.file_path)
except pefile.PEFormatError:
return {}
results = {}
results["peid_signatures"] = self._get_peid_signatures()
results["pe_imports"] = self._get_imported_symbols()
results["pe_exports"] = self._get_exported_symbols()
results["pe_sections"] = self._get_sections()
results["pe_resources"] = self._get_resources()
results["pe_versioninfo"] = self._get_versioninfo()
results["pe_imphash"] = self._get_imphash()
results["pe_timestamp"] = self._get_timestamp()
results["pdb_path"] = self._get_pdb_path()
results["signature"] = self._get_signature()
results["imported_dll_count"] = len([x for x in results["pe_imports"] if x.get("dll")])
return results
如果有此
的任何文档
不确定这一点,布谷鸟沙箱有详细的安装指南,如何修改和自定义模块和输出,目前我也无法找到文件。
如果有任何混淆或您需要更多详细信息,您可以提出,