Profileur de système¶
Le System Profiler collecte les empreintes digitales du navigateur et du système des visiteurs des pages de reconnaissance hébergées par le relais. Lorsqu'une cible visite une page de profilage (généralement déguisée en page de destination de phishing ou en application Web inoffensive), JavaScript exécuté dans son navigateur collecte des informations système détaillées et les envoie au relais, qui les transmet au backend de Stentor pour stockage et analyse.
Architecture¶
Le profileur est un outil de reconnaissance passive. Le relais héberge un serveur HTTP léger sur un port configurable (PROFILER_PORT) qui dessert une page de prise d'empreintes digitales. Lorsqu'un visiteur charge la page, JavaScript côté client collecte les attributs du système et les envoie au relais, qui transmet les données à l'API backend.
sequenceDiagram
participant Target as Target Browser
participant Relay as Relay<br/>(Profiler HTTP)
participant API as Stentor API
participant DB as PostgreSQL
Target->>Relay: GET /profiler (loads page)
Relay-->>Target: HTML + JavaScript
Target->>Target: Collect fingerprint data
Target->>Relay: POST fingerprint JSON
Relay->>API: POST /api/v1/profiler/visits
API->>DB: INSERT profiler_visits
API-->>Relay: 201 Created Données collectées¶
Chaque visite du profileur capture un ensemble complet d'attributs du navigateur et du système :
| Champ | Type | Description |
|---|---|---|
id | UUID | Identifiant unique de la visite |
visitor_ip | chaîne | Adresse IP externe du visiteur |
user_agent | chaîne | Chaîne d'agent utilisateur du navigateur complet |
platform | chaîne | Plateforme du système d'exploitation (par exemple, Win32, Linux x86_64) |
language | chaîne | Langue principale du navigateur (par exemple, en-US) |
languages | chaîne | Toutes les langues acceptées |
timezone | chaîne | Fuseau horaire IANA (par exemple, America/New_York) |
timezone_offset | int | Décalage UTC en minutes |
screen_width | int | Largeur de l'écran en pixels |
screen_height | int | Hauteur de l'écran en pixels |
color_depth | int | Afficher la profondeur de couleur en bits |
plugins | chaîne | Tableau JSON de plugins de navigateur installés |
webgl_vendor | chaîne | Chaîne du fournisseur de GPU de WebGL |
webgl_renderer | chaîne | Chaîne de rendu GPU de WebGL |
internal_ip | chaîne | Adresse IP interne/privée (via une fuite WebRTC) |
cookies_enabled | bool | Si les cookies sont activés |
do_not_track | chaîne | Valeur de l'en-tête Ne pas suivre |
hardware_concurrency | int | Nombre de cœurs de processeur logiques |
device_memory | float | RAM de l'appareil en gigaoctets |
relay_id | UUID | Relais qui a collecté l'empreinte digitale (facultatif) |
created_at | horodatage | Quand la visite a été enregistrée |
IP interne via WebRTC
Le champ internal_ip capture l'adresse réseau privée du visiteur à l'aide d'une fuite candidate WebRTC ICE. Cela révèle l'adresse IP LAN de la cible même lorsqu'elle se trouve derrière le NAT, ce qui est précieux pour la cartographie du réseau et la planification des mouvements latéraux.
Statistiques de visite¶
Le point de terminaison des statistiques regroupe les données de visite dans une vue récapitulative affichant le nombre total de visites, les adresses IP uniques des visiteurs et une répartition de la plateforme.
Champs de réponse :
| Champ | Type | Description |
|---|---|---|
total_visits | int | Nombre total de visites de profileurs enregistrées |
unique_ips | int | Nombre d'adresses IP de visiteurs distincts |
platforms | objet | Carte des chaînes de plateforme pour compter les visites |
Visites d'annonces¶
Récupérez les empreintes digitales collectées, classées par les plus récentes.
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"visitor_ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"platform": "Win32",
"language": "en-US",
"languages": "en-US,en",
"timezone": "America/New_York",
"timezone_offset": 300,
"screen_width": 1920,
"screen_height": 1080,
"color_depth": 24,
"plugins": "[]",
"webgl_vendor": "Google Inc. (NVIDIA)",
"webgl_renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 3070...)",
"internal_ip": "192.168.1.105",
"cookies_enabled": true,
"do_not_track": "1",
"hardware_concurrency": 16,
"device_memory": 32,
"relay_id": null,
"created_at": "2026-02-21T14:30:00Z"
}
]
Paramètres de requête :
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
limit | int | 100 | Nombre maximum de visites à revenir |
Créer des visites¶
Le relais soumet les données d'empreintes digitales via ce point de terminaison. Les opérateurs n'appellent généralement pas cela directement : le relais le gère automatiquement lorsqu'une cible visite la page du profileur.
curl -s -X POST https://stentor.app/api/v1/profiler/visits \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"visitor_ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"platform": "Win32",
"language": "en-US",
"timezone": "America/New_York",
"timezone_offset": 300,
"screen_width": 1920,
"screen_height": 1080,
"color_depth": 24,
"webgl_vendor": "Google Inc. (NVIDIA)",
"webgl_renderer": "ANGLE (NVIDIA, NVIDIA GeForce RTX 3070...)",
"internal_ip": "192.168.1.105",
"cookies_enabled": true,
"hardware_concurrency": 16,
"device_memory": 32
}' | jq
Détection IP automatique
Si visitor_ip est omis dans le corps de la requête, le serveur utilise automatiquement l'adresse IP du client de la requête HTTP. Ceci est utile lorsque le relais transmet les données d'empreinte digitale sans les modifier.
Effacement des données¶
Supprimez toutes les visites du profileur. Il s’agit d’une opération destructrice qui ne peut être annulée.
Irréversible
La suppression des données du profileur supprime définitivement toutes les empreintes digitales collectées. Pensez d'abord à exporter les données si vous en avez besoin pour la création de rapports.
Fonctionnalités de l'interface utilisateur¶
La page Profiler de l'interface utilisateur de Stentor (/profiler) fournit :
- Cartes de statistiques montrant le nombre total de visites, les adresses IP uniques et la répartition de la plateforme
- Tableau d'empreintes digitales avec colonnes triables pour l'heure, l'adresse IP du visiteur, l'adresse IP interne, la plateforme, la résolution d'écran et le GPU
- Lignes extensibles : cliquez sur n'importe quelle ligne pour afficher tous les détails de l'empreinte digitale, notamment l'agent utilisateur, la langue, le fuseau horaire, les spécifications matérielles, les informations WebGL, l'état des cookies et les plugins.
- Bouton Actualiser pour recharger manuellement les données d'empreintes digitales
- Bouton Effacer tout avec une boîte de dialogue de confirmation pour éviter toute suppression accidentelle
Configuration du relais¶
Activez le profileur système sur un relais en définissant la variable d'environnement PROFILER_PORT dans le fichier .env du relais :
Définissez PROFILER_PORT=0 (par défaut) pour désactiver le profileur.
Voir Gestion des relais pour plus de détails sur la configuration du relais.
Cas d'utilisation¶
Reconnaissance préalable à l'engagement¶
Déployez une page de profilage avant le début de l’exploitation active. Envoyez le lien par e-mail de phishing ou intégrez-le dans un site de point d'eau. Les données collectées révèlent :
- Versions cibles du système d'exploitation et du navigateur : aide à sélectionner les payloads et les exploits appropriés.
- Informations GPU -- utiles pour identifier les machines virtuelles (détection sandbox)
- Adresses IP internes : mappe la topologie du réseau interne de la cible via les fuites WebRTC
- Spécifications matérielles – Les cœurs de processeur et la RAM permettent de distinguer les serveurs des postes de travail
- Fuseau horaire et langue : confirme la géographie et les paramètres régionaux cibles pour l'ingénierie sociale
Intégration de campagnes de phishing¶
Combinez le profileur avec des campagnes de phishing. Lorsqu'une cible clique sur un lien de phishing, la page du profileur collecte des données d'empreintes digitales avant de les rediriger vers le contenu de phishing réel. Cela fournit des renseignements même si la cible ne tombe pas dans le piège du phishing.
Détection du bac à sable¶
Analysez les visites des profileurs pour identifier les environnements d'analyse automatisés :
- Une faible concurrence matérielle (1 à 2 cœurs) et une RAM limitée suggèrent un bac à sable
- Les moteurs de rendu GPU génériques ou virtualisés (par exemple, "SVGA3D" ou "llvmpipe") indiquent une machine virtuelle
- Des combinaisons inhabituelles de fuseau horaire et de langue peuvent indiquer un chercheur plutôt qu'une véritable cible
Résumé de l'API¶
| Méthode | Point de terminaison | Description |
|---|---|---|
GET | /api/v1/profiler/visits | Liste des empreintes digitales collectées |
POST | /api/v1/profiler/visits | Créer un nouvel enregistrement de visite |
GET | /api/v1/profiler/stats | Obtenez des statistiques de visites |
DELETE | /api/v1/profiler/visits | Effacer toutes les données de visite |