
Collecteur automatisé de renseignements de sécurité qui interroge les flux publics et les API pour obtenir des données sur les menaces concernant les IP, domaines, URLs, hachages et empreintes SSL, avec une configuration basée sur YAML et une sortie en JSON.

Machinae est un outil de collecte de renseignements provenant de sites/flux publics concernant divers éléments liés à la sécurité : adresses IP, noms de domaine, URL, adresses e-mail, empreintes de fichiers et empreintes SSL. Il s'inspire d'[Automater][1], un autre excellent outil de collecte d'informations. Le projet Machinae est né du désir d'améliorer Automater dans 4 domaines :
Machinae peut être installé avec pip3 :
pip3 install machinae
Ou, si vous vous sentez aventureux, directement depuis github :
pip3 install git+https://github.com/HurricaneLabs/machinae.git
Vous devez disposer des dépendances nécessaires sur votre système pour
compiler les modules Python (sur les systèmes basés sur Debian, python3-dev), ainsi que du
paquet de développement libyaml (sur les systèmes basés sur Debian, libyaml-dev).
Vous voudrez aussi récupérer le [fichier de configuration le plus récent][2] et le placer
dans /etc/machinae.yml.
Machinae prend en charge un système simple de fusion de configuration pour vous permettre
d'ajuster la configuration sans modifier le fichier machinae.yml fourni, ce qui
simplifie les mises à jour de configuration. Cela fonctionne en trouvant une configuration
par défaut à l'échelle du système (par défaut /etc/machinae.yml), en fusionnant avec
une configuration locale système (/etc/machinae.local.yml) et enfin une configuration
locale par utilisateur (~/.machinae.yml). La configuration système peut également être
située dans le répertoire de travail courant, être définie via la variable d'environnement
MACHINAE_CONFIG, ou bien sûr en utilisant les options de ligne de commande -c ou
--config. La fusion de configuration peut être désactivée avec l'option --nomerge,
ce qui fait que Machinae ne charge que la configuration système par défaut (ou celle
passée en ligne de commande).
Par exemple, supposons que vous souhaitiez activer le site Fortinet Category, qui est
désactivé par défaut. Vous pourriez modifier /etc/machinae.yml, mais ces modifications
seraient écrasées lors d'une mise à jour. Au lieu de cela, vous pouvez placer ce qui suit
dans /etc/machinae.local.yml ou ~/.machinae.yml :
fortinet_classify:
default: true
Ou, inversement, pour désactiver un site, comme Virus Total pDNS :
vt_ip:
default: false
vt_domain:
default: false
L'utilisation de Machinae est très similaire à Automater :
usage: machinae [-h] [-c CONFIG] [--nomerge] [-d DELAY] [-f FILE] [-i INFILE] [-v]
[-o {D,J,N,S}] [-O {ipv4,ipv6,fqdn,email,sslfp,hash,url}] [-q]
[-s SITES] [-a AUTH] [-H HTTP_PROXY]
[--dump-config | --detect-otype]
...
Voir ci-dessus pour les détails des options -c/--config et --nomerge.
Machinae prend en charge une option -d/--delay, comme Automater. Cependant, Machinae
utilise 0 par défaut.
La sortie de Machinae est contrôlée par deux arguments :
-o contrôle le format de sortie et peut être suivi d'un seul caractère
pour indiquer le type de sortie souhaité :
-f/--file spécifie le fichier où la sortie doit être écrite. La valeur par
défaut est "-" pour la sortie standard.Machinae tente de détecter automatiquement le type de cible passé (Machinae
appelle les cibles des « observables » et le type, « otype »). Cette détection peut
être remplacée avec l'option -O/--otype. Les choix sont listés dans l'utilisation.
Par défaut, Machinae fonctionne en mode verbeux. Dans ce mode, il affiche les
informations d'état sur les services qu'il interroge sur la console au fur et à mesure
de l'interrogation. Cette sortie est toujours écrite sur la sortie standard, quel que soit
le paramètre de sortie. Pour désactiver le mode verbeux, utilisez -q.
Par défaut, Machinae parcourt tous les services de la configuration qui s'appliquent à l'otype de chaque cible et qui ne sont pas marqués comme « default: false ». Pour modifier ce comportement, vous pouvez :
all pour parcourir tous les services, y compris
ceux marqués comme « default: false ».Notez que dans les deux cas, la validation de l'otype est toujours appliquée.
Machinae prend en charge le passage d'un proxy HTTP en ligne de commande via
l'argument -H/--http-proxy. Si aucun proxy n'est spécifié, machinae recherche les
variables d'environnement standard HTTP_PROXY et HTTPS_PROXY, ainsi que les
variables moins standard http_proxy et https_proxy.
Enfin, une liste de cibles doit être passée. Tous les arguments autres que les options listées ci-dessus seront interprétés comme des cibles.
Machinae est livré avec la prise en charge prête à l'emploi des sources de données suivantes :
Avec d'autres sources de données à venir.
Machinae prend en charge l'authentification HTTP Basic pour les sites qui l'exigent via
l'option --auth/-a. Vous devrez créer un fichier YAML avec vos identifiants, qui
contiendra une clé pour le site nécessitant les identifiants et une liste de deux éléments,
nom d'utilisateur et mot de passe ou clé API. Par exemple, pour le site PassiveTotal inclus,
cela pourrait ressembler à :
passivetotal: ['[email protected]', 'my_api_key']
Dans la configuration du site sous request, vous verrez une clé telle que :
json:
request:
url: '...'
auth: passivetotal