Soumission d'analyses
L'API Scan accepte les requêtes d'analyse via un endpoint unique et unifié. Spécifiez la cible, le moteur d'analyse et la configuration optionnelle — la plateforme gère la mise en file d'attente, l'exécution, la collecte des résultats et les notifications.
Architecture
Les analyses sont traitées de manière asynchrone via Kafka :
POST /scans → Kafka → Moteur d'analyse → Résultats → Webhook/Polling
Lorsque vous soumettez une analyse, elle est immédiatement mise en file d'attente et retourne un ID d'analyse. Le scanner la prend en charge, l'exécute et publie les résultats. Vous pouvez interroger le statut ou configurer des webhooks pour des mises à jour en temps réel.
Créer une analyse
Endpoint
POST /api/v1/scans
Portée requise : scans:create
Requête
curl -X POST https://api.cert-ix.com/scan-api/api/v1/scans \
-H "X-API-Key: $CERTIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "example.com",
"scanType": "nmap",
"name": "Audit réseau hebdomadaire",
"targetType": "domain",
"priority": "normal",
"options": {
"ports": "1-1024",
"timing": "T3"
},
"tags": ["production", "hebdomadaire"],
"timeout": 3600
}'
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
target | string | Oui | Cible de l'analyse (URL, hôte, domaine, IP ou CIDR) |
scanType | string | Oui | Moteur d'analyse à utiliser (voir référence ci-dessous) |
name | string | Non | Nom lisible de l'analyse |
targetType | string | Non | Classification de la cible : host, url, domain, ip, network |
priority | string | Non | Priorité d'exécution : critical, high, normal, low (défaut : normal) |
options | object | Non | Options spécifiques au moteur |
config | object | Non | Surcharges de configuration du moteur |
tags | string[] | Non | Tags personnalisés pour l'organisation et le filtrage |
timeout | integer | Non | Durée maximale de l'analyse en secondes |
assetId | string | Non | Lier l'analyse à un actif enregistré dans la Gestion des actifs |
callbackUrl | string | Non | URL HTTPS pour un callback ponctuel de complétion |
Réponse (201 Created)
{
"success": true,
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"scanType": "nmap",
"name": "Audit réseau hebdomadaire",
"target": "example.com",
"status": "queued",
"priority": "normal",
"progress": 0,
"tags": ["production", "hebdomadaire"],
"createdAt": "2026-03-06T10:00:00Z"
}
}
Référence des moteurs d'analyse
Nmap — Découverte réseau
Type : nmap · Catégorie : Réseau · Cibles : host, ip, network, domain
Effectue la découverte d'hôtes, le scan de ports, la détection de services et l'identification d'OS. Idéal pour les évaluations d'infrastructure réseau.
{
"target": "192.168.1.0/24",
"scanType": "nmap",
"options": {
"ports": "1-65535",
"timing": "T4",
"serviceDetection": true,
"osDetection": true,
"scriptScan": true,
"scripts": ["vuln", "safe"]
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
ports | string | 1-1024 | Plage de ports (ex. : 22,80,443, 1-1024, 1-65535) |
timing | string | T3 | Template de timing : T0 (paranoïaque) à T5 (insensé) |
serviceDetection | boolean | true | Activer la détection de service/version (-sV) |
osDetection | boolean | false | Activer l'identification d'OS (-O) |
scriptScan | boolean | false | Activer le scan par scripts NSE |
scripts | string[] | [] | Catégories de scripts NSE à exécuter |
udpScan | boolean | false | Inclure le scan UDP (-sU) |
topPorts | integer | — | Scanner uniquement les N ports les plus courants |
ZAP — Sécurité des applications web
Type : zap · Catégorie : App web · Cibles : url
OWASP ZAP effectue des Tests Dynamiques de Sécurité Applicative (DAST). Il explore l'application web cible et teste les vulnérabilités OWASP Top 10 incluant XSS, injection SQL, CSRF et plus.
{
"target": "https://app.example.com",
"scanType": "zap",
"options": {
"scanPolicy": "full",
"spiderMaxDepth": 5,
"ajaxSpider": true,
"activeScan": true,
"contextInclude": ["https://app.example.com/.*"],
"contextExclude": ["https://app.example.com/logout"]
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
scanPolicy | string | standard | Intensité : light, standard, full |
spiderMaxDepth | integer | 3 | Profondeur maximale d'exploration |
ajaxSpider | boolean | false | Activer l'exploration AJAX/JavaScript |
activeScan | boolean | true | Effectuer les tests actifs de vulnérabilités |
contextInclude | string[] | [] | Patterns regex d'URL à inclure dans le périmètre |
contextExclude | string[] | [] | Patterns regex d'URL à exclure du périmètre |
authentication | object | — | Configuration d'authentification (formulaire, en-tête ou cookie) |
Trivy — Analyse de vulnérabilités des conteneurs
Type : trivy · Catégorie : Conteneur/Infrastructure · Cibles : url, host
Analyse les images de conteneurs, les systèmes de fichiers et l'infrastructure-as-code pour détecter les vulnérabilités connues (CVE), les mauvaises configurations et les secrets exposés.
{
"target": "registry.example.com/monapp:latest",
"scanType": "trivy",
"options": {
"scanners": ["vuln", "misconfig", "secret"],
"severity": ["CRITICAL", "HIGH"],
"ignoreUnfixed": true
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
scanners | string[] | ["vuln"] | Scanners : vuln, misconfig, secret, license |
severity | string[] | ["CRITICAL","HIGH","MEDIUM"] | Filtrer par sévérité |
ignoreUnfixed | boolean | false | Ignorer les vulnérabilités sans correctif disponible |
skipDirs | string[] | [] | Répertoires à ignorer |
skipFiles | string[] | [] | Fichiers à ignorer |
Nuclei — Détection basée sur des templates
Type : nuclei · Catégorie : Détection de vulnérabilités · Cibles : url, host, domain
Utilise des templates communautaires et personnalisés pour détecter les vulnérabilités, les mauvaises configurations et les expositions sur un large éventail de technologies.
{
"target": "https://api.example.com",
"scanType": "nuclei",
"options": {
"templates": ["cves", "vulnerabilities", "misconfigurations"],
"severity": ["critical", "high", "medium"],
"concurrency": 25,
"rateLimit": 150
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
templates | string[] | ["cves"] | Catégories de templates à exécuter |
severity | string[] | Toutes | Filtrer par sévérité |
concurrency | integer | 25 | Exécutions de templates en parallèle |
rateLimit | integer | 150 | Requêtes max par seconde |
tags | string[] | [] | Exécuter uniquement les templates correspondant à ces tags |
excludeTags | string[] | [] | Ignorer les templates correspondant à ces tags |
Nikto — Scan de serveurs web
Type : nikto · Catégorie : Serveur web · Cibles : url
Teste les serveurs web pour détecter les fichiers dangereux, les logiciels obsolètes et les mauvaises configurations. Vérifie plus de 6 700 fichiers/CGI potentiellement dangereux.
{
"target": "https://www.example.com",
"scanType": "nikto",
"options": {
"tuning": "1234",
"maxTime": "600s",
"ssl": true
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
tuning | string | "123" | Catégories de test : 1=Fichiers, 2=Mauvaises configs, 3=Info, 4=XSS, etc. |
maxTime | string | — | Durée maximale (ex. : "600s", "10m") |
ssl | boolean | auto | Forcer le mode SSL |
SQLMap — Détection d'injection SQL
Type : sqlmap · Catégorie : App web · Cibles : url
Automatise la détection et l'exploitation des failles d'injection SQL. Prend en charge tous les principaux moteurs de base de données.
{
"target": "https://app.example.com/search?q=test",
"scanType": "sqlmap",
"options": {
"level": 3,
"risk": 2,
"technique": "BEUSTQ",
"dbs": true,
"batch": true
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
level | integer | 1 | Niveau de test (1–5). Plus élevé = plus de payloads |
risk | integer | 1 | Niveau de risque (1–3). Plus élevé = plus agressif |
technique | string | "BEUSTQ" | Techniques d'injection à tester |
dbs | boolean | false | Énumérer les bases de données |
batch | boolean | true | Mode non interactif |
SQLMap peut être agressif. Utilisez toujours level ≤ 3 et risk ≤ 2 sur les systèmes de production. N'utilisez des valeurs plus élevées que dans des environnements de test isolés.
Wapiti — Scan d'applications web
Type : wapiti · Catégorie : App web · Cibles : url
Effectue une analyse de vulnérabilités d'applications web en boîte noire. Explore l'application, identifie les surfaces d'attaque et lance des tests ciblés.
{
"target": "https://app.example.com",
"scanType": "wapiti",
"options": {
"modules": ["xss", "sql", "exec", "file", "crlf"],
"scope": "domain",
"maxDepth": 5
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
modules | string[] | Tous | Modules d'attaque à activer |
scope | string | "domain" | Périmètre d'exploration : url, page, folder, domain |
maxDepth | integer | 3 | Profondeur maximale d'exploration |
maxTime | string | — | Durée maximale |
theHarvester — Reconnaissance OSINT
Type : harvester · Catégorie : OSINT · Cibles : domain
Collecte les adresses email, sous-domaines, IP et métadonnées à partir de sources publiques. Reconnaissance passive sans interaction directe avec la cible.
{
"target": "example.com",
"scanType": "harvester",
"options": {
"sources": ["google", "bing", "linkedin", "shodan", "crtsh"],
"limit": 500,
"dnsLookup": true
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
sources | string[] | Toutes publiques | Sources de données à interroger |
limit | integer | 200 | Résultats max par source |
dnsLookup | boolean | false | Effectuer la résolution DNS des hôtes découverts |
dnsBrute | boolean | false | Activer la découverte de sous-domaines par force brute DNS |
Sublist3r — Énumération de sous-domaines
Type : sublist3r · Catégorie : OSINT · Cibles : domain
Énumère les sous-domaines en utilisant plusieurs moteurs de recherche et services DNS. Découvrez votre surface d'attaque complète.
{
"target": "example.com",
"scanType": "sublist3r",
"options": {
"engines": ["google", "bing", "yahoo", "virustotal", "dnsdumpster"],
"bruteforce": true,
"ports": "80,443,8080,8443",
"threads": 30
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
engines | string[] | Tous | Moteurs de recherche à utiliser |
bruteforce | boolean | false | Activer la force brute DNS |
ports | string | — | Scanner les sous-domaines découverts pour les ports ouverts |
threads | integer | 10 | Threads concurrents |
Sentinel — Orchestration multi-moteurs
Type : sentinel · Catégorie : Unifié/Complet · Cibles : url, host, domain, ip
Analyse orchestrée multi-moteurs propriétaire de Cert-IX. Sélectionne et exécute automatiquement la combinaison de scanners la plus appropriée en fonction du type de cible, puis corrèle et déduplique les découvertes dans un rapport unifié.
{
"target": "example.com",
"scanType": "sentinel",
"priority": "high",
"options": {
"depth": "standard",
"engines": ["nmap", "nuclei", "harvester", "sublist3r"],
"correlate": true,
"riskScore": true
}
}
| Option | Type | Défaut | Description |
|---|---|---|---|
depth | string | "standard" | Profondeur d'évaluation : quick, standard, deep |
engines | string[] | auto | Moteurs spécifiques à inclure (défaut : sélection auto) |
correlate | boolean | true | Corréler les découvertes entre moteurs |
riskScore | boolean | true | Calculer le score de risque agrégé |
Niveaux de profondeur :
| Profondeur | Moteurs utilisés | Durée estimée |
|---|---|---|
quick | Nmap + Nuclei | 5–15 minutes |
standard | Nmap + Nuclei + Harvester + ZAP/Nikto | 15–45 minutes |
deep | Tous les moteurs applicables | 1–3 heures |
Niveaux de priorité
La priorité affecte l'ordonnancement dans la file d'attente. Les analyses à priorité plus élevée sont traitées en premier.
| Priorité | Comportement | Cas d'utilisation |
|---|---|---|
critical | En tête de file, traitement immédiat | Réponse à incident active |
high | Avant les analyses normales | Vérifications pré-déploiement |
normal | Ordonnancement FIFO standard | Évaluations de routine (défaut) |
low | Traitement quand capacité disponible | Analyses en arrière-plan/lot |
Types de cibles
| Type de cible | Exemples | Moteurs compatibles |
|---|---|---|
host | serveur1.example.com | nmap, nuclei, sentinel |
url | https://app.example.com/chemin | zap, nikto, sqlmap, wapiti, nuclei, trivy, sentinel |
domain | example.com | nmap, nuclei, harvester, sublist3r, sentinel |
ip | 192.168.1.1, 2001:db8::1 | nmap, nuclei, sentinel |
network | 192.168.1.0/24 | nmap |
Si vous omettez targetType, l'API le déduit du format de la cible. Le typage explicite est recommandé pour plus de clarté.
Annuler une analyse
Annulez une analyse en cours ou en file d'attente :
POST /api/v1/scans/:scanId/cancel
Portée requise : scans:cancel
curl -X POST "https://api.cert-ix.com/scan-api/api/v1/scans/$SCAN_ID/cancel" \
-H "X-API-Key: $CERTIX_API_KEY"
Lister les analyses
GET /api/v1/scans
Portée requise : scans:list
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
scanType | string | nmap | Filtrer par moteur d'analyse |
status | string | — | Filtrer par statut |
page | integer | 1 | Numéro de page |
limit | integer | 20 | Résultats par page (max : 100) |
Prochaines étapes :