CybercentreCanada/assemblyline-service-pdfid

GitHub: CybercentreCanada/assemblyline-service-pdfid

Assemblyline 的 PDF 分析服务,使用 PDFId 与 PDFParser 提取元数据与可疑对象。

Stars: 6 | Forks: 7

[![Discord](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://discord.gg/GUAy9wErNu) [![](https://img.shields.io/discord/908084610158714900)](https://discord.gg/GUAy9wErNu) [![Static Badge](https://img.shields.io/badge/github-assemblyline-blue?logo=github)](https://github.com/CybercentreCanada/assemblyline) [![Static Badge](https://img.shields.io/badge/github-assemblyline\_service\_pdfid-blue?logo=github)](https://github.com/CybercentreCanada/assemblyline-service-pdfid) [![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues/CybercentreCanada/assemblyline/service-pdfid)](https://github.com/CybercentreCanada/assemblyline/issues?q=is:issue+is:open+label:service-pdfid) [![License](https://img.shields.io/github/license/CybercentreCanada/assemblyline-service-pdfid)](./LICENSE) # PDFId 服务 这项 Assemblyline 服务使用 Didier Stevens PDFId(版本 2.7)和 PDFParser(版本 7.4)工具从 PDF 文件中提取元数据和对象。 ## 服务详情 ### 配置 - ADDITIONAL_KEYS:PDFid 搜索的关键词列表 - HEURISTICS:选择在服务执行期间运行的启发式插件。可用插件如下: - pdf_id/pdfid/plugin_embeddedfile - pdf_id/pdfid/plugin_nameobfuscation - pdf_id/pdfid/plugin_suspicious_properties - pdf_id/pdfid/plugin_triage - MAX_PDF_SIZE:PDFid 处理的最大 PDF 文件大小。深度扫描时此值将被忽略 ### 执行 PDFId 服务在文件存在时报告以下信息: #### 文件信息 ##### PDFId - PDF 头字符串 - 数量: - objects - streams - endstreams - xref - trailer - startxref - '/Page' - '/Encrypt' - '/Objstm' - '/JS' - '/Javascript' - '/AA' - '/OpenAction' - '/AcroForm' - '/JBIG2Decode' - '/RichMedia' - '/Launch' - '/Colours' - '%%EOF' - EOF 后的字节数 - 总熵 - 流内熵 - 流外熵 - 修改日期(AL 标签:file.pdf.date.modified) - 创建日期(AL 标签:file.date.creation) - 最后修改日期(AL 标签:file.date.last_modified) - 源数据修改日期(AL 标签:file.pdf.date.source_modified) ##### PDFParser *注意:* 仅在深度扫描模式下,或当 PDFId 插件(如下文所述)检测到样本中存在可疑元素时,才会运行 PDFParser。 - 报告数量: - /Comment - /XREF - /Trailer - /StartXref - /Indirect object - /Catalog - /ExtGState - /Font - /FontDescriptor - /Pages - 提取 PDF 元素: - 注释 - Trailer - StartXref - 提取可疑元素: - 被 PDFId 插件标记的完整对象(作为提取文件),仅深度扫描模式下提取 JBIG2Decode 对象。 - 具体对象内容(在 AL 结果中)并对内容运行 FrankenStrings 模式以搜索 IOC(由 PDFId 插件确定)。 - ObjStms - 服务将尝试重新处理样本中的对象流作为 PDF 文件,并再次运行 PDFId 和 PDFParser 分析器。如果处于深度扫描模式,最多重新处理 100 个 objstms,否则最多两个。 #### PDFId 插件 PDFId 插件是用于根据 PDFId 结果评估可疑属性的 Python 脚本。用户可以通过上述配置向服务添加插件。插件脚本需符合以下格式才能与该 AL 服务兼容: ``` class cPDFiD[NAME](cPluginParent): onlyValidPDF = True name = '[NAME OF PLUGIN]' def __init__(self, oPDFiD): self.oPDFiD = oPDFiD # Whether or not hits is used, it must be returned by Score self.hits = [] def Score(self): score = 0 [conditions that might adjust score/self.hits] return score, self.hits def Instructions(self, score, hits): if score == 1000: # These messages will show in AL result, along with score return 'Some message' if score == 500: return 'Some other message' if score == 0: return ``` 请参阅“pdfid”文件夹中的源代码以获取该服务已使用的插件示例。 ## 图像变体与标签 Assemblyline 服务基于 [Assemblyline 服务基础镜像](https://hub.docker.com/r/cccs/assemblyline-v4-service-base) 构建, 该镜像基于 Debian 11 并附带 Python 3.11。 Assemblyline 服务使用以下标签定义: | **标签类型** | **描述** | **示例标签** | | :----------: | :----------------------------------------------------------------------------------------------- | :------------------------: | | latest | 最新构建(可能不稳定)。 | `latest` | | build_type | 构建类型。`dev` 为最新不稳定构建。`stable` 为最新稳定构建。 | `stable` 或 `dev` | | series | 完整的构建详情,包括版本和构建类型:`version.buildType`。 | `4.5.stable`, `4.5.1.dev3` | ## 运行此服务 这是一个 Assemblyline 服务,设计为作为 Assemblyline 框架的一部分运行。 如果您希望本地测试此服务,可以直接从终端运行 Docker 镜像: ``` docker run \ --name Pdfid \ --env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \ --network=host \ cccs/assemblyline-service-pdfid ``` 要将此服务添加到您的 Assemblyline 部署,请遵循以下 [指南](https://cybercentrecanada.github.io/assemblyline4_docs/developer_manual/services/run_your_service/#add-the-container-to-your-deployment)。 ## 文档 Assemblyline 通用文档可访问:https://cybercentrecanada.github.io/assemblyline4_docs/ # 服务 Pdfid Ce service d'Assemblyline extrait les métadonnées et les objets des fichiers PDF en utilisant les outils PDFId (Version 2.7) et PDFParser (Version 7.4) de Didier Stevens. ## 服务详情 ### 配置 - ADDITIONAL_KEYS : Liste des mots-clés recherchés par PDFid - HEURISTICS : Choisissez le module d'extension heuristique à exécuter pendant l'exécution du service. Voici la liste des modules d'extension à choisir : - pdf_id/pdfid/plugin_embeddedfile - pdf_id/pdfid/plugin_nameobfuscation - pdf_id/pdfid/plugin_suspicious_properties - pdf_id/pdfid/plugin_triage - MAX_PDF_SIZE : Taille maximale du PDF à traiter par PDFid. Cette valeur est ignorée lors de l'analyse approfondie ### 执行 Le service PDFId rapporte les informations suivantes pour chaque fichier lorsqu'elles sont présentes : #### 文件信息 ##### PDFId - Chaîne de caractère de l'en-tête du PDF - Nombre de : - objects - streams - endstreams - xref - trailer - startxref - '/Page' - '/Encrypt' - '/Objstm' - '/JS' - '/Javascript' - '/AA' - '/OpenAction' - '/AcroForm' - '/JBIG2Decode' - '/RichMedia' - '/Launch' - '/Colours' - '%%EOF' - Bytes after %%EOF - Entropie totale - Entropie à l'intérieur des flux - Entropie en dehors des flux - Date de modification (AL tag : file.pdf.date.modified) - Date de création (AL tag : file.date.creation) - Date de la dernière modification (AL tag : file.date.last_modified) - Date de la modification de la source de données (AL tag : file.pdf.date.source_modified) ##### PDFParser *Note:* PDFParser n'est exécuté sur un échantillon qu'en mode d'analyse approfondie, ou si les modules d'extension PDFId (voir ci-dessous) ont détecté la présence d'éléments suspicieux dans l'échantillon. - Signale le nombre de : - /Comment - /XREF - /Trailer - /StartXref - /Indirect object - /Catalog - /ExtGState - /Font - /FontDescriptor - /Pages - Extrait les éléments du PDF : - Comments - Trailer - StartXref - Extrait les éléments suspicieux : - Objets entiers (dans le fichier extrait) lorsqu'ils sont signalés par les modules PDFId (les objets JBIG2Decode ne seront extraits qu'en mode d'analyse approfondie). - Le contenu d'un objet spécifique (dans le résultat de l'analyse AL) et l'exécution de motifs FrankenStrings contre le contenu pour rechercher des IOC (déterminés par les plugins PDFId). - ObjStms - Le service tentera de retraiter les flux d'objets dans les échantillons sous forme de fichiers PDF pour les soumettre àouveau aux analyseurs PDFId et PDFParser. En mode d'analyse approfondie, un maximum de 100 objstms sera retraité, sinon un maximum de deux objstms sera retraité. #### PDFId 插件 Les modules d'extension PDFId sont des scripts python utilisés par le service PDFId pour évaluer les propriétés suspicieuses sur la base des résultats PDFId. Les modules d'extension peuvent être ajoutés au service par les utilisateurs (voir la configuration ci-dessus). Le format suivant est requis pour que les scripts des modules d'extension fonctionnent avec ce service AL : ``` class cPDFiD[NAME](cPluginParent): onlyValidPDF = True name = '[NAME OF PLUGIN]' def __init__(self, oPDFiD): self.oPDFiD = oPDFiD # Whether or not hits is used, it must be returned by Score self.hits = [] def Score(self): score = 0 [conditions that might adjust score/self.hits] return score, self.hits def Instructions(self, score, hits): if score == 1000: # These messages will show in AL result, along with score return 'Some message' if score == 500: return 'Some other message' if score == 0: return ``` Voir le code source dans le dossier "pdfid" pour des exemples de plugins déjà utilisés par ce service. ## 图像变体和标签 Les services d'Assemblyline sont construits à partir de l'image de base [Assemblyline service](https://hub.docker.com/r/cccs/assemblyline-v4-service-base), qui est basée sur Debian 11 avec Python 3.11. Les services d'Assemblyline utilisent les définitions d'étiquettes suivantes: | **Type d'étiquette** | **Description** | **Exemple d'étiquette** | | :------------------: | :------------------------------------------------------------------------------------------------------------- | :------------------------: | | dernière version | La version la plus récente (peut être instable). | `latest` | | build_type | Type de construction utilisé. `dev` est la dernière version instable. `stable` est la dernière version stable. | `stable` ou `dev` | | série | Détails de construction complets, comprenant la version et le type de build: `version.buildType`. | `4.5.stable`, `4.5.1.dev3` | ## 执行此服务 Ce service est spécialement optimisé pour fonctionner dans le cadre d'un déploiement d'Assemblyline. Si vous souhaitez tester ce service localement, vous pouvez exécuter l'image Docker directement à partir d'un terminal: ``` docker run \ --name Pdfid \ --env SERVICE_API_HOST=http://`ip addr show docker0 | grep "inet " | awk '{print $2}' | cut -f1 -d"/"`:5003 \ --network=host \ cccs/assemblyline-service-pdfid ``` Pour ajouter ce service à votre déploiement d'Assemblyline, suivez ceci [guide](https://cybercentrecanada.github.io/assemblyline4_docs/fr/developer_manual/services/run_your_service/#add-the-container-to-your-deployment). ## 文档 La documentation générale sur Assemblyline peut être consultée à l'adresse suivante: https://cybercentrecanada.github.io/assemblyline4_docs/
标签:Assemblyline, Didier Stevens, Discord, PDFId, PDFParser, PDF元数据, PDF分析, PDF名称混淆, PDF嵌入文件, PDF解析, 可疑属性, 威胁情报, 开发者工具, 开源安全工具, 恶意文件分析, 文件三分类, 文件取证, 服务化, 深度扫描, 熵计算, 网络安全, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护