缺少Cuckoo Sandbox报告文件格式的文档 - 需要知道密钥名称和解析顺序

时间:2017-01-17 19:18:21

标签: sandbox analysis malware

我的程序解析从Cuckoo输出的JSON报告文件,查找DLL。不幸的是,似乎很少(根据我的意见没有)文档指定文件中的哪些字段存在,以及它们是否以特定顺序出现;这使得抓取文件令人难以置信地不确定是否将捕获正确的数据。

目前,我在'pe_imports'(如果它存在)和'peid_signatures'键之间解析数据以找到DLL,但是,peid_signatures字段总是存在,并且它总是会直接成功DLL文件?如果有任何相关文档,或者您可以将我指向Cuckoo代码中的正确部分,请告诉我:)

由于

1 个答案:

答案 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
  

如果有此

的任何文档

不确定这一点,布谷鸟沙箱有详细的安装指南,如何修改和自定义模块和输出,目前我也无法找到文件。

如果有任何混淆或您需要更多详细信息,您可以提出,