Test d'automatisation dans AppScan® Enterprise à l'aide d'AppScan Traffic Recorder

HCL AppScan Traffic Recorder vous permet d'enregistrer du trafic et de l'utiliser en tant que données d'exploration dans votre travail AppScan Enterprise (ASE). HCL AppScan Traffic Recorder est un système de gestion des instances d'enregistreur de trafic. Des instances de l'enregistreur de trafic peuvent être créées à la demande pour enregistrer le trafic qui sera ensuite utilisé pour un examen DAST. Cette rubrique décrit comment configurer et utiliser l'enregistreur de trafic.

Présentation

Dans l'univers des DevOps, il est de plus en plus important de pouvoir intégrer des examens de sécurité à vos processus CI/CD. Si vous utilisez une infrastructure d'automatisation (comme Selenium), vous pouvez tirer parti des scripts déjà écrits pour créer des examens personnalisés.
  • À l'aide d'HCL AppScan Traffic Recorder, vous pouvez démarrer automatiquement une instance d'enregistreur de trafic. Les demandes provenant de la structure d'automatisation vers l'application Web sont ensuite enregistrées lorsqu'elles sont transmises via cet enregistreur de trafic. Le trafic est enregistré au format HAR dans un fichier .dast.config, que vous pouvez ensuite charger pour qu'il soit utilisé par AppScan Enterprise (ASE) en tant que données d'exploration pour une analyse.
  • Vous pouvez également enregistrer le trafic manuellement, via l'enregistreur de trafic, pour créer un fichier .dast.config.
  • Vous pouvez également charger votre propre fichier HAR directement dans ASE, sans utiliser l'enregistreur de trafic.

Ce diagramme illustre le flux d'analyse automatisé avec AppScan® Enterprise.


Flux d'analyse automatisé avec AppScan Enterprise

Flux de travail standard

  1. Installer l'enregistreur de trafic
  2. Configurer l'enregistreur de trafic
  3. Démarrer l'enregistreur de trafic
  4. Utilisation de l'enregistreur de trafic
Note :
Le script de démonstration pour ce flux de travail, ProxyServerDemoScript.py, se trouve dans le dossier d'installation d'AppScan.

Installer HCL AppScan Traffic Recorder

Prérequis : vous devez disposer d'une version actuelle de Node.js (v16 ou version LTS ultérieure) installée sur votre machine. Si votre service est conforme à la norme FIPS, vous devez utiliser un serveur Node.js conforme à la norme FIPS.

Si vous utilisez le fournisseur OpenSSL FIPS, mettez à jour la configuration OpenSSL FIPS :

  1. Localisez le fichier nodejs.cnf fourni avec le Traffic Recorder.
  2. Mettez à jour le chemin d'inclusion pour qu'il pointe vers la sortie de la commande openssl fipsinstall que vous avez utilisée lors de l'installation du fournisseur OpenSSL FIPS.
  3. Pour exécuter le Traffic Recorder en tant que processus, utilisez nodefips <filename>. Cela applique automatiquement la configuration nodejs.cnf lorsque vous exécutez Node.js.

    Par exemple : nodefips app.js

Pour installer l'enregistreur de trafic :

  1. Téléchargez le fichier de l'enregistreur de trafic. Vous pouvez le télécharger depuis https://<HOST_NAME>/ase/downloads/TrafficRecorder.zip ou y accéder localement à l'emplacement C:\Program Files (x86)\HCL\AppScan Enterprise\WebApp\downloads\TrafficRecorder.zip.
  2. Pour Windows, décompressez TrafficRecorder.zip dans un dossier sur votre machine.

    Pour Linux, décompressez TrafficRecorder.Linux.zip.

  3. Pour remplacer un port par défaut sur lequel exécuter l'enregistreur de trafic, configurez le paramètre du port dans Settings.json.
  4. Pour Linux, assurez-vous que app.js et le fichier Java interne (/java/bin/java) disposent des autorisations d'exécution.

Configurer HCL AppScan Traffic Recorder

Après avoir apporté des modifications à la configuration, vous devez redémarrer le serveur.
Note :
Lors d'une mise à niveau, si vous avez déjà un certificat PKCS12 défini dans Settings.json, vous devrez le définir à nouveau.

Mode conforme à FIPS

  1. Localisez le fichier Settings.json dans le dossier racine de l'enregistreur de trafic et ouvrez-le dans un éditeur de texte.
  2. Localisez le paramètre requireFips et modifiez sa valeur de false en true.
  3. Sauvegardez le fichier.

Connexion à l'enregistreur de trafic

  1. Configurez un port par défaut dans Settings.json pour l'enregistreur de trafic.
  2. Configurez une connexion sécurisée (SSL) à l'enregistreur de trafic. Vous pouvez le faire en utilisant votre propre certificat (Méthode A) ou un certificat auto-signé (Méthode B).

    Méthode A : Configurez votre propre certificat PEM ou PKCS12 dans Settings.json.

    PEM :

    Un certificat PEM nécessite deux chemins d'accès aux fichiers (vers private.key et certificate.pem).
    • Insérez les chemins d'accès aux fichiers dans la section PEM de Settings.json.
      Note :
      Le caractère « \ » doit être échappé, par exemple : "C:\\Users\\admin\\private.key"

    PKCS12 :

    Vous devez échapper les caractères si nécessaire, tant dans les chemins de fichiers que dans le mot de passe. Par exemple, un mot de passe tel que abc!”123 deviendrait abc!\”123 (le symbole ” est échappé).
    1. Dans la ligne de commande, exécutez :

      .\Java\bin\java.exe -jar .\DastProxy.jar -sc "C:\Path\to\certificate.pfx"

    2. À l'invite, entrez le mot de passe du certificat et appuyez sur Entrée.

      Exemple d'utilisation d'openssl pour créer un certificat PEM :

      openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem

      openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

      Exemple d'utilisation d'openssl pour convertir le certificat PEM en certificat PKCS12 :

      openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in server.crt

      Exemple d'outil keygen de Java pour convertir un certificat JKS en certificat PKCS12 :

      keytool -importkeystore -srckeystore certificate.jks -srcstoretype JKS -destkeystore certificate.p12 -deststoretype PKCS12

    Méthode B : Si vous ne disposez pas de certificat, vous devez créer et utiliser un certificat autosigné. Notez que cette méthode est moins sécurisée.

    Option A : utilisation d'OpenSSL

    OpenSSL n'est pas inclus et n'est pas requis, sauf pour créer le certificat autosigné.

    1. Créez les fichiers de clé et PEM à l'aide de la commande OpenSSL : openssl req -new -newkey rsa:2048 -nodes -keyout private.key -x509 -days 365 -out certificate.pem
    2. Insérez les chemins d'accès aux fichiers dans la section PEM de Settings.json.
      Note :
      Le caractère « \ » doit être échappé, par exemple : "C:\\Users\\admin\\private.key".

    Option B : utilisation de l'outil Java keytool

    Pour Node.js 17 et versions ultérieures, vous devez utiliser l'option « --openssl-legacy-provider » de Node.js en raison d'une limitation de keytool, voir https://nodejs.org/api/cli.html#--openssl-legacy-provider

    1. Dans la ligne de commande, ouvrez le dossier racine Traffic Recorder.
    2. Créez un fichier de certificat PKCS12 à l'aide de la commande : .\Java\bin\keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore-new.p12 -storetype PKCS12 -validity 365 -keysize 2048
    3. Renseignez les détails du certificat et protégez-le avec un mot de passe qui sera nécessaire à l'étape suivante.
    4. Utilisez le certificat généré dans le HCL AppScan Traffic Recorder à l'aide de la commande : .\Java\bin\java.exe -jar .\DastProxy.jar -sc "keystore-new.p12"

Certificat racine

Si l'application que vous testez utilise SSL (HTTPS), le HCL AppScan Traffic Recorder doit agir en tant qu'intermédiaire (man-in-the-middle) pour enregistrer le trafic. Pour cela, il doit disposer d'un certificat racine qu'il peut utiliser pour signer ses communications avec l'application.

Par défaut, le HCL AppScan Traffic Recorder génère un certificat racine unique et aucune intervention de l'utilisateur n'est nécessaire. Cependant, vous obtiendrez des avertissements SSL lorsque vous parcourrez l'application. Vous pouvez soit les ignorer, soit faire l'une des choses suivantes :
  1. Installez le certificat généré par le HCL AppScan Traffic Recorder sur votre ou vos machines :
    1. Utilisez l'API REST pour télécharger l'autorité de certification racine autosignée utilisée par AppScan Traffic Recorder sous forme de fichier PEM.
    2. Installez le certificat sur le navigateur utilisé pour l'exploration ou à tout emplacement requis (en fonction de l'origine du trafic).
  2. Importez votre propre certificat racine dans le HCL AppScan Traffic Recorder. Les formats de certificats pris en charge sont PKCS12 (.P12, .PFX) et JKS :
    1. Ouvrez une fenêtre de ligne de commande et accédez au dossier d'installation sur la machine de l'enregistreur de trafic.
    2. Exécutez la commande suivante :

      .\Java\bin\java -jar DastProxy.jar -irc [chemin vers le fichier de certificat] -ircp [mot de passe]

      Note :
      Pour voir l'utilisation complète de la commande, exécutez la commande .\Java\bin\java -jar DastProxy.jar.

      Important : il est recommandé d'utiliser un certificat test dédié, dans la mesure où le certificat est enregistré sur l'enregistreur de trafic.

  3. Fournissez votre propre certificat de serveur fixe (et non un certificat racine) dans la commande StartProxy.

Définir le délai d'inactivité

Si une instance de l'enregistreur de trafic n'est pas fermée après utilisation à l'aide de la commande correspondante, elle reste ouverte et en mode écoute sur le port. Les instances de l'enregistreur de trafic sont automatiquement fermées si elles restent inactives pendant une durée prédéfinie.

Le délai d'inactivité par défaut pour les instances de l'enregistreur de trafic est de 60 minutes. Vous pouvez modifier cette valeur en changeant la valeur de inactivityTimeoutInMinutes dans le fichier Settings.json enregistré dans le dossier d'installation.

Chiffrer le trafic

Par défaut, le fichier de trafic (.dast.config) n'est pas chiffré. Pour configurer le serveur afin de chiffrer tout le trafic, modifiez la valeur "encryptDastConfig" en "true" dans le fichier Settings.json, qui se trouve dans le dossier d'installation.

Proxy chaîné

Si vous devez définir plusieurs proxys chaînés ou des exceptions au proxy, utilisez le fichier de règles de proxy chaîné (proxy.chain) qui se trouve dans le dossier d'installation. Des instructions d'utilisation sont incluses dans ce fichier.

Démarrer/Arrêter l'enregistreur de trafic

Vous pouvez simplement démarrer l'enregistreur de trafic ou l'exécuter en tant que service (ci-dessous). Notez que vous ne pouvez pas faire les deux en parallèle.

Pour démarrer l'enregistreur de trafic :
  • Exécutez la commande suivante : node app.js [port]

    *port = le port sur lequel l'enregistreur de trafic écoute les requêtes de l'API REST.

Note :
  • Si vous ne définissez pas le port au démarrage de l'enregistreur de trafic, le port défini dans le fichier Settings.json est utilisé. Si aucun port n'y est défini, le port 8383 est utilisé.
  • Il n'est pas nécessaire d'arrêter l'enregistreur de trafic, vous pouvez le laisser s'exécuter de façon permanente.

Démarrer en tant que service Windows

Vous pouvez exécuter l'enregistreur de trafic en tant que service Windows, à l'aide de l'exécutable service.js qui se trouve dans le dossier Service. Le service utilise les privilèges du système local.
Note :
Toutes les commandes de service doivent être exécutées avec des privilèges d'administrateur (Exécuter en tant qu'administrateur).

Pour démarrer le service, exécutez les commandes :

node service.js --install

node service.js --start

Commandes de service supplémentaires

Vous pouvez afficher cette liste en exécutant la commande node service.js --help

Commandes de service Description
--start Démarrer le service
--stop Arrêter le service
--install Installer le service
--uninstall Arrêter et désinstaller le service
--h | --help Informations d'utilisation de sortie

Arrêter le service Windows

Pour arrêter le service Windows de l'enregistreur de trafic à l'aide de l'exécutable service.js qui se trouve dans le dossier "Service", exécutez la commande :

node service.js --uninstall

Démarrer en tant que service Linux à l'aide de systemd

  1. Créez un nouveau fichier dans le répertoire systemd (généralement : /etc/systemd/system). Par exemple, sudo vim /etc/systemd/system/TrafficRecorder.service.

    Contenu du fichier :

    [Unit]

    Description=Appscan TrafficRecorder

    After=multi-user.target

    [Service]

    ExecStart=[chemin vers node ici] [chemin vers app.js ici]

    Restart=always

    RestartSec=10StandardOutput=syslog

    StandardError=syslog

    SyslogIdentifier=TrafficRecorder

    [Install]

    WantedBy=multi-user.target

    Exemple pour ExecStart : ExecStart= node /home/admin/Documents/TrafficRecorder.Linux.1.2.0/app.js

  2. Rechargez les fichiers systemd à l’aide de la commande : sudo systemctl daemon-reload
  3. Démarrez le service à l’aide de la commande : sudo systemctl start TrafficRecorder.service
  4. Vous pouvez vérifier l’état à l’aide de la commande : sudo systemctl status TrafficRecorder.service
    Note :
    Le statut doit s'afficher comme « Active: active (running) »
  5. Activez le service à l’aide de la commande : sudo systemctl enable TrafficRecorder.service

Arrêtez le service Linux

  1. Arrêtez le service à l’aide de la commande : sudo systemctl stop TrafficRecorder.service
  2. Désactivez le service à l’aide de la commande : sudo systemctl disable TrafficRecorder.service

Utilisation de l'enregistreur de trafic

Une fois que l'enregistreur de trafic a démarré, vous pouvez lancer de nouvelles instances de l'enregistreur de trafic, pour enregistrer le trafic de votre application.

  1. Pour démarrer une instance de l’enregistreur de trafic, utilisez la requête de l’API REST : StartProxy
  2. Envoyez votre trafic vers l'application que vous testez, via le port de l'enregistreur de trafic défini.
  3. Lorsque vous avez terminé, envoyez la requête d’API REST : StopProxy.
  4. Téléchargez le fichier .dast.config, qui contient le trafic enregistré, en envoyant la requête d’API REST : Traffic. Le fichier est une archive ZIP contenant un ou plusieurs fichiers .har (HTTP Archive). Lorsque vous téléchargez ce fichier, les données sont supprimées de HCL AppScan Traffic Recorder.
  5. Vous pouvez utiliser le fichier .dast.config pour mettre à jour les données d’exploration d’un travail existant, à l’aide de l’API REST d’ASE. Consultez le lien de documentation : https://<domain>:9443/ase/api/pages/apidocs.html. Pour plus d’informations, voir la section « Commandes de l’API de l’enregistreur de trafic ».

Commandes de l'API de l'enregistreur de trafic

Une fois que l'enregistreur de trafic a démarré, vous pouvez lancer une instance de l'enregistreur de trafic et envoyer votre trafic vers votre application.

Documentation

Pour afficher la documentation complète de l’API REST dans Swagger, saisissez dans un navigateur : https://<server>:<port>

Toutes les commandes pointent vers un nœud final qui ressemble à ceci :

https://[server]:[port]/automation/

server = adresse IP de la machine sur laquelle l'enregistreur de trafic est installé (la valeur par défaut est localhost).

port = port sur lequel l'enregistreur de trafic écoute

"StartProxy"

Démarrez une instance de l'enregistreur de trafic qui écoute sur le port spécifié.
  • URL : https://[server]:[port]/automation/StartProxy/<recordingPort>
  • Type de requête : POST ou GET (si vous utilisez chainedProxy, proxyCertificate et clientCertificate, la requête est POST ; sinon, elle est GET)

"StopProxy"

Arrêtez l'instance de l'enregistreur de trafic qui écoute sur le port spécifié.
  • URL : https://[server]:[port]/automation/StopProxy/<recordingPort>
  • Type de requête : GET
Note :
Définir le port sur 0 n'arrête pas toutes les instances ouvertes du Traffic Recorder. Pour ce faire, utilisez StopAllProxies.

"StopAllProxies"

Arrêtez toutes les instances de l'enregistreur de trafic en cours d'exécution. Cette commande permet d'arrêter toutes les instances de l'enregistreur de trafic sur tous les ports, y compris ceux démarrés par d'autres utilisateurs.

  • URL : https://[server]:[port]/automation/StopAllProxies
  • Type de requête : POST

"EncryptDastConfig"

Chargez le fichier DAST.CONFIG pour le chiffrer.
  • URL : https://[server]:[port]/automation/EncryptDastConfig
  • Type de requête : POST

"DownloadEncryptedDast"

Téléchargez un fichier .dast.config chiffré (chargé à l'aide de l'API EncryptDastConfig).
Note :
Lorsque le fichier a été téléchargé, les fichiers .dast.config chiffrés et déchiffrés sont supprimés de l'enregistreur de trafic.
  • URL : https://[server]:[port]/automation/DownloadEncryptedDastConfig/<uuid>
  • Type de requête : GET

"Traffic"

Téléchargez les données enregistrées à partir de l'enregistreur de trafic identifié par son port, comme un fichier .dast.config.
  • URL : https://[server]:[port]/automation/Traffic/<recordingPort>
  • Type de requête : GET

"Certificate"

Téléchargez l'autorité de certification racine autosignée utilisée par l'enregistreur de trafic en tant que fichier PEM.
  • URL : https://[server]:[port]/automation/Certificate
  • Type de requête : GET