Assemblyline 4 PDF Analysis service (PDFiD)
1M+
This Assemblyline service extracts metadata and objects from PDF files using Didier Stevens PDFId (Version 2.7) and PDFParser (Version 7.4) tools.
The PDFId service will report the following information for each file when present:
Note: PDFParser will only run on a sample if in deep scan mode, or if PDFId plugins (see below) detected suspicious elements are present in the sample.
Reports number of:
Extracts PDF Elements:
Extracts Suspicious Elements:
ObjStms
PDFId plugins are python scripts used by PDFId service to score suspicious properties based on PDFId results. Plugins can be added to service by users (see configuration above). The following format is required for plugin scripts to work with this AL service:
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
See source code under "pdfid" folder for examples of plugins already used by this service.
Assemblyline services are built from the Assemblyline service base image, which is based on Debian 11 with Python 3.11.
Assemblyline services use the following tag definitions:
| Tag Type | Description | Example Tag |
|---|---|---|
| latest | The most recent build (can be unstable). | latest |
| build_type | The type of build used. dev is the latest unstable build. stable is the latest stable build. | stable or dev |
| series | Complete build details, including version and build type: version.buildType. | 4.5.stable, 4.5.1.dev3 |
This is an Assemblyline service. It is designed to run as part of the Assemblyline framework.
If you would like to test this service locally, you can run the Docker image directly from the a shell:
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
To add this service to your Assemblyline deployment, follow this guide.
General Assemblyline documentation can be found at: https://cybercentrecanada.github.io/assemblyline4_docs/
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.
Le service PDFId rapporte les informations suivantes pour chaque fichier lorsqu'elles sont présentes :
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 :
Extrait les éléments du PDF :
Extrait les éléments suspicieux :
ObjStms
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, 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.
La documentation générale sur Assemblyline peut être consultée à l'adresse suivante: https://cybercentrecanada.github.io/assemblyline4_docs/
Content type
Image
Digest
sha256:ea2cda31e…
Size
235.3 MB
Last updated
4 days ago
Requires Docker Desktop 4.37.1 or later.
Pulls:
429
Apr 6 to Apr 12