TISC API

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 24 minutes de lecture
  • L’API TISC fournit des points de terminaison permettant d’ajouter et de récupérer des données de Threat Intelligence dans l’application Centre de sécurité des renseignements sur les menaces (TISC).

    Les données récupérées par cette API peuvent être utilisées par d’autres outils de sécurité tels que les systèmes SIEM (Security Information Event Management). Les systèmes SIEM peuvent s’intégrer à l’aide de TISC cette API pour récupérer les observables liés aux menaces et TISC détecter et surveiller automatiquement ces menaces au sein du réseau d’une organisation. Cette API permet le partage bidirectionnel d’observables à partir d’outils de sécurité. Les systèmes SIEM observent une activité anormale dans l’environnement et peuvent fournir une liste des observables associés à l’activité anormale à TISC.

    Cette API peut également être utilisée pour enrichir les alertes SIEM avec un contexte de renseignements sur les menaces. Par exemple, si une alerte SIEM est générée sur la base d’un trafic anormalement élevé provenant d’une adresse IP, elle peut fournir des informations supplémentaires, TISC par exemple si l’adresse IP ou le domaine impliqué est lié à des activités malveillantes connues. Ces données d’enrichissement permettent aux analystes de sécurité de trier les alertes et d’utiliser les informations contextuelles pour une correction efficace.

    Cette API nécessite l’application Centre de sécurité des renseignements sur les menaces , qui est disponible sur le ServiceNow Store.

    Cette API s’exécute dans l’espace de noms sn_sec_tisc .

    La version actuelle de cette API est v1.

    Pour plus d’informations sur l’authentification par API, reportez-vous à la section Sécurité des API REST de la section REST APIs.

    Pour en savoir plus sur , reportez-vous à TISCla section Threat Intelligence Security Center.

    API TISC : POST /sn_sec_tisc/threat_intel_data/add_observables

    Ajoute des enregistrements sources d’observables à l’application Centre de sécurité des renseignements sur les menaces (TISC).

    Les enregistrements sources des observables sont créés dans la table Source des observables [sn_sec_tisc_observable_source] et sont traités par déduplication et agrégation dans le flux de données TISC.

    Remarque :
    Les enregistrements sources des observables ne peuvent pas être directement mis à jour à l’aide de ce point de terminaison. Seuls de nouveaux enregistrements peuvent être créés. Par conséquent, même si seuls quelques champs nécessitent une mise à jour, tous les champs doivent toujours être inclus dans la demande.

    Pour accéder à ce point de terminaison, l’appelant doit disposer du rôle sn_sec_tisc.api_obs_write_access qui, par défaut, est inclus dans le rôle d’administrateur Threat Intelligence (sn_sec_tisc.admin).

    Format d'URL

    URL versionnée : /api/sn_sec_tisc/{api_version}/threat_intel_data/add_observables

    URL par défaut : /api/sn_sec_tisc/threat_intel_data/add_observables

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    api_version Facultatif. Version du point de terminaison auquel accéder. Exemple : v1 ou v2. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière.

    Type de données : chaîne

    Tableau 2. Paramètres de requête
    Nom Description
    Aucun
    Tableau 3. Paramètres du corps de la demande (JSON)
    Nom Description
    observables Requis. Tableau d’objets observables à ajouter.TISC Pour chaque objet observable, un enregistrement source observable est créé si toutes les validations sont réussies, avec la source telle que définie par le source paramètre dans le corps de la demande.
    "observables": [
       {
          "attributes": {Object},
          "<field>": "String"
       }
    ]

    Type de données : tableau d’objets

    Observables.Attributs Paires champ-valeur contenant des données attributaires sur l’observable. Les attributs sont spécifiques à un type d’observable, comme le numéro AS pour une adresse IP ou le type de socket pour un réseau.

    Tous les attributs de tous les types d’observables sont pris en charge. Pour obtenir la liste complète des attributs valides, consultez la section Attributs observables ci-dessous.

    "attributes": {
       "<field>": "<value>"
    }

    Type de données : objet

    observables.<field> Paires champ-valeur contenant des données générales sur l’observable. Les champs qui peuvent être fournis dans ce paramètre sont communs à tous les types d’observables et sont situés dans la table Source d’observables [sn_sec_tisc_observable_source].

    Les type champs et value sont requis pour tous les observables.

    Remarque :
    Suivez les instructions suivantes pour fournir des valeurs :
    • Toutes les dates doivent être au format ISO dans le fuseau horaire UTC.
    • Certains champs requièrent des valeurs d’une table spécifiée ou disposent d’une liste de valeurs possibles. Si des valeurs non valides sont fournies pour ces champs, l’enregistrement source de l’observable est toujours créé, mais les valeurs non valides sont ignorées.

    Champs valides :

    additional_context
    Contexte supplémentaire sur l’observable.
    attack_phases
    Liste des noms des phases d’attaque sous forme de valeur séparée par des virgules. Pour obtenir la liste complète des phases d’attaque valides, consultez le champ Nom de la phase de kill chain dans le tableau Phase de kill chain [sn_sec_tisc_kill_chain_phase].
    Par exemple :
    "attack_phases": "Lockheed Martin: Reconnaissance,Lockheed Martin: Installation"
    auteur
    Auteur pour l’observable.
    fiabilité
    Confiance du système source dans l’exactitude des données observables. Doit être un nombre compris entre 0 et 100.
    description
    Description de l’observable.
    expiration_time
    Date d’expiration de l’enregistrement de l’observable.
    external_source_id
    ID externe de l’observable à partir du système source.
    first_observed
    Date à laquelle les données ont été vues pour la première fois.
    first_seen
    Date à laquelle cet observable a été vu pour la première fois en train d’effectuer des activités malveillantes.
    last_observed
    Date à laquelle les données ont été vues pour la dernière fois.
    last_seen
    Date à laquelle cet observable a été vu pour la dernière fois en train d’effectuer des activités malveillantes.
    notes
    Toutes les remarques supplémentaires pour l’observable. Peut être formaté en HTML.
    réputation
    Réputation de l’observable.
    Valeurs possibles :
    • effacer
    • malveillant
    • suspect
    • Inconnu
    source_reported_score
    Score de malveillance de l’observable signalé par le système source. Doit être un nombre compris entre 0 et 100.
    balises
    Liste de balises sous forme de valeur séparée par des virgules. Pour obtenir la liste complète des balises valides, consultez le champ Nom de la table Balise [sn_sec_tisc_tag]. Si la balise fournie n’existe pas, la balise est automatiquement créée et associée à l’observable.
    Taxonomies
    Liste des taxonomies sous forme de valeurs séparées par des virgules. Pour obtenir la liste complète des taxonomies valides, consultez le champ Valeur de taxonomie dans la table Valeur de taxonomie [sn_sec_tisc_taxonomy_value].
    threat_level
    Niveau de menace de l’observable.
    Valeurs possibles :
    • faible
    • moyen
    • élevé
    threat_severity
    Gravité de la menace de l’observable.
    Valeurs possibles :
    • faible
    • moyen
    • élevé
    • critique
    Tlp
    Niveau de sensibilité des données pour l’observable utilisant le Traffic Light Protocol (TLP). Situé dans le champ Étiquette de la table Étiquette TLP [sn_sec_tisc_tlp_label].
    Valeurs possibles :
    • CLAIR
    • VERT
    • AMBRE
    • AMBRE+STRICT
    • ROUGE
    type
    Requis. Type d’observable.

    Pour obtenir la liste complète des types d’observables valides, consultez le champ Valeur de la table Type d’observable [sn_sec_tisc_observable_type] ou la section Attributs des observables ci-dessous.

    usage_categories
    Liste des catégories d’utilisation sous forme de valeur séparée par des virgules. Pour obtenir la liste complète des catégories d’utilisation valides, consultez le champ Catégorie d’utilisation dans la table Catégorie d’utilisation [sn_sec_tisc_usage_category].
    valide
    Requis. Valeur associée à l’observable, telle qu’une adresse IP ou une URL.

    Type de données : chaîne

    source Requis. La source qui a détecté les observables à l’origine, par exemple un système SIEM.

    La source est utilisée pour tous les observables répertoriés dans la demande d’API.

    Les sources fournies dans le corps de la demande sont ajoutées à la table Intégration d’API [sn_sec_tisc_api_integration].

    Type de données : chaîne

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Prend uniquement en charge application/json.
    Content-Type Format de données du corps de la demande. Prend uniquement en charge application/json.
    Tableau 5. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 6. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    400 Demande incorrecte. Les paramètres de la demande ne sont pas valides ou le JSON du corps de la demande comporte une erreur syntaxique.

    Pour afficher les détails de l’erreur, consultez le error paramètre dans le corps de la réponse.

    401 Non autorisé. L’authentification de l’utilisateur n’est pas valide. Vérifiez le nom d’utilisateur et le mot de passe ou le jeton OAuth.
    403 Interdit. Il manque un rôle requis à l’utilisateur appelant. Le rôle sn_sec_tisc.api_obs_write_access est requis pour accéder à ce point de terminaison.
    429 Trop de demandes. Le nombre de demandes d’API dépasse la limite de taux de l’API. Par défaut, la limite est de 100 demandes par heure.
    500 Erreur interne du serveur. Consultez les journaux d’application dans la table Journal [syslog] pour plus d’informations sur l’erreur.

    Paramètres de corps de réponse (JSON)

    Nom Description
    erreur Informations erronées. Ce paramètre n’est renvoyé qu’en cas d’échec de la demande.
    "error": {
       "message": "String",
       "detail": "String"
    }

    Type de données : objet

    message.erreur Message d’erreur indiquant le motif de l’échec de la demande.

    Type de données : chaîne

    error.detail Détails supplémentaires sur les raisons de l’échec de la demande.

    Type de données : chaîne

    error_records Détails sur les observables inclus dans la demande qui n’ont pas pu être ajoutés à TISC.
    "error_records": [
       {
          "error_message": "String",
          "type": "String",
          "value": "String"
       }
    ]

    Type de données : tableau d’objets

    error_records.error_message Message d’erreur qui explique pourquoi un enregistrement n’a pas pu être créé pour l’observable.

    Type de données : chaîne

    error_records.type Type d’observable.

    Pour obtenir la liste complète des types d’observables valides, consultez le champ Valeur de la table Type d’observable [sn_sec_tisc_observable_type] ou la section Attributs des observables ci-dessous.

    Type de données : chaîne

    error_records.valeur Valeur associée à l’observable, telle qu’une adresse IP ou une URL.

    Type de données : chaîne

    metadonnées Métadonnées sur le nombre d’enregistrements créés par la demande d’API.
    "metadata": {
       "error_records": Number,
       "success_records": Number,
       "total_records": Number
    }

    Type de données : objet

    metadata.error_records Nombre d’observables inclus dans la demande qui n’ont pas pu être ajoutés à TISC.

    Type de données : nombre

    metadata.success_records Nombre d’enregistrements d’observables créés avec succès dans .TISC

    Type de données : nombre

    metadata.total_records Nombre total d’observables inclus dans la demande.

    Type de données : nombre

    statut État de la demande d’API.
    Valeurs possibles :
    • Réussite : tous les observables ont été ajoutés avec succès à TISC.
    • partial_success : certains observables ont été ajoutés avec succès à TISC.
    • Erreur : aucun observable ajouté avec succès à TISC.
    • échec : la demande a échoué en raison d’une demande incorrecte ou d’une erreur système. Consultez le error paramètre dans le corps de la réponse pour plus d’informations sur l’erreur.

    Type de données : chaîne

    success_records Détails sur les enregistrements d’observables qui ont été créés avec succès.
    "success_records": [
       {
          "sys_id": "String",
          "type": "String",
          "value": "String"
       }
    ]

    Type de données : tableau d’objets

    success_records.sys_id Sys_id de l’enregistrement de l’observable.

    Type de données : chaîne

    success_records.type Type d’observable.

    Pour obtenir la liste complète des types d’observables valides, consultez le champ Valeur de la table Type d’observable [sn_sec_tisc_observable_type] ou la section Attributs des observables ci-dessous.

    Type de données : chaîne

    success_records.valeur Valeur associée à l’observable, telle qu’une adresse IP ou une URL.

    Type de données : chaîne

    Attributs des observables

    La table suivante répertorie les attributs valides pour chaque type d’observable.
    Remarque :
    Toutes les dates doivent être au format ISO dans le fuseau horaire UTC.
    Type d'observable Attributs Type de données
    Artefact decryption_key Chaîne
    encryption_algorithm Chaîne
    md5_hash Chaîne
    mime_type Chaîne
    sha1_hash Chaîne
    sha256_hash Chaîne
    sha512_hash Chaîne
    URL Chaîne
    autonomous_system_number nom Chaîne
    rir Chaîne
    répertoire directory_creation_time Date
    directory_last_accessed_time Date
    directory_last_modified_time Date
    encoded_path Chaîne
    domain_name is_fqdn

    (Nom de domaine complet)

    Booléen
    resolves_to Chaîne
    email_address display_name Chaîne
    email_message email_body Chaîne
    email_recipients_bcc Chaîne
    email_recipients_cc Chaîne
    email_recipients_to Chaîne
    email_sender Chaîne
    email_subject Chaîne
    sent_date Date
    email_subject Aucun
    fichier encoded_file_name Chaîne
    file_created_time Date
    file_last_accessed_time Date
    file_last_modified_time Date
    file_name Chaîne
    magic_number Chaîne
    md5_hash Chaîne
    mime_type Chaîne
    sha1_hash Chaîne
    sha256_hash Chaîne
    sha512_hash Chaîne
    ip_v4_address as_number Chaîne
    mac_address Chaîne
    ip_v4_cidr as_number Chaîne
    mac_address Chaîne
    ip_v6_address as_number Chaîne
    mac_address Chaîne
    ip_v6_cidr as_number Chaîne
    mac_address Chaîne
    mac_address Aucun
    md5_hash Aucun
    mutex_name Aucun
    réseau destination_bytes_count Entier
    destination_packets_count Entier
    destination_port
    end_time Date
    http_message_body_length Entier
    http_request_header Chaîne
    http_request_method Chaîne
    http_request_value Chaîne
    http_request_version Chaîne
    network_source Chaîne
    network_destination Chaîne
    icmp_code_byte Chaîne
    icmp_type_byte Chaîne
    is_network_active Booléen
    is_socket_blocking Booléen
    is_socket_listening Booléen
    network_protocols Chaîne
    socket_address_family Chaîne
    Valeurs possibles :
    • af_unspec
    • af_inet
    • af_ipx
    • af_appletalk
    • af_netbios
    • af_inet6
    • af_irda
    • af_bth
    socket_descriptor Entier
    socket_handle Entier
    socket_options Chaîne
    socket_type Chaîne
    Valeurs possibles :
    • service_kernel_driver
    • service_file_system_driver
    • service_win32_own_process
    • service_win32_share_process
    source_bytes_count Entier
    source_packets_count Entier
    source_port Chaîne
    start_time Date
    tcp_destination_flags Chaîne
    tcp_source_flags Chaîne
    autre Aucun
    Processus aslr_enabled Booléen
    command_line Chaîne
    Mot de passe CWD

    (répertoire de travail actuel)

    Chaîne
    dep_enabled Booléen
    environment_variables Chaîne
    is_hidden Booléen
    owner_sid Chaîne
    pid

    (ID du processus)

    Chaîne
    Priorité Chaîne
    process_created_time Date
    service_descriptions Chaîne
    service_display_name Chaîne
    service_group_name Chaîne
    service_name Chaîne
    service_start_type Chaîne
    Valeurs possibles :
    • service_auto_start
    • service_boot_start
    • service_demand_start
    • service_disabled
    • service_system_alert
    service_status Chaîne
    Valeurs possibles :
    • service_continue_pending
    • service_pause_pending
    • service_paused
    • service_running
    • service_start_pending
    • service_stop_pending
    • service_stopped
    service_type Chaîne
    Valeurs possibles :
    • service_kernel_driver
    • service_file_system_driver
    • service_win32_own_process
    • service_win32_share_process
    startup_info Chaîne
    windows_integrity_level Chaîne
    Valeurs possibles :
    • faible
    • moyen
    • élevé
    • système
    window_title Chaîne
    sha1_hash Aucun
    sha256_hash Aucun
    sha512_hash Aucun
    logiciel cpe

    (Common Platform Enumeration)

    Chaîne
    supported_languages Chaîne
    SWID (en anglais seulement)

    (Identification logicielle)

    Chaîne
    vendor Chaîne
    version Chaîne
    URL Aucun
    user_account account_created_time Date
    account_expiry_time Date
    account_type Chaîne
    can_escalate_privileges Booléen
    credentials_last_changed_time Date
    display_name Chaîne
    first_login_time Date
    is_account_disabled Booléen
    is_privileged Booléen
    is_service_account Booléen
    last_login_time Date
    account_login Chaîne
    user_id Chaîne
    windows_registry_key key_modified_time Date
    registry_value Chaîne
    subkeys_count Entier
    x509_certificate authority_key_identifier Chaîne
    basic_constraints Chaîne
    certificate_policies Chaîne
    crl_distribution_points Chaîne
    extended_key_usage Chaîne
    inhibit_any_policy Chaîne
    émetteur Chaîne
    issuer_alternative_name Chaîne
    is_self_signed Booléen
    key_usage Chaîne
    name_constraints Chaîne
    policy_constraints Chaîne
    policy_mappings Chaîne
    private_key_usage_valid_from Date
    private_key_usage_valid_until Date
    signature_algorithm Chaîne
    objet Chaîne
    subject_alternative_name Chaîne
    subject_directory_attributes Chaîne
    subject_key_identifier Chaîne
    subject_public_key_algorithm Chaîne
    subject_public_key_exponent Entier
    subject_public_key_modulus Chaîne
    valid_from Date
    valid_until Date
    version Chaîne

    Demande cURL

    Cet exemple de demande contient trois observables pour lesquels créer des enregistrements dans .TISC

    curl 'http://instance.servicenow.com/api/sn_sec_tisc/v1/threat_intel_data/add_observables' \
    --request POST \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
    --data '{
       "source": "Sentinel",
       "observables": [
          {
             "value": "1.2.1.45",
             "type": "ip_v4_address",
             "reputation": "malicious",
             "confidence": "90",
             "tags": "critical,important",
             "taxonomies": "MITRE: T121",
             "attack_phases": "Lockheed Martin: Reconnaissance",
             "usage_categories": "Infected Bot",
             "first_seen": "2023-10-14T18:01:34.000Z",
             "attributes": {
                "as_number": "14280"
             }
          },
          {
             "value": "https://example.com",
             "type": "url",
             "tags": "important",
             "confidence": "50",
             "reputation": "malicious"
          },
          {
             "value": "1.1.1.1",
             "type": "ip_add",
             "confidence": "50",
             "reputation": "malicious"
          }
       ]
    }'

    Deux des trois observables ont été ajoutés avec succès à TISC. Un enregistrement n’a pas été créé, car le type de l’observable n’est pas valide.

    {
       "status": "partial_success",
       "metadata": {
          "total_records": 3,
          "success_records": 2,
          "error_records": 1
       },
       "success_records": [
          {
             "value": "1.2.1.45",
             "type": "ip_v4_address",
             "sys_id": "e519392643e642102164e0ea78b8f29d"
          },
          {
             "value": "https://example.com",
             "type": "url",
             "sys_id": "ad1979ae43ea42102164e0ea78b8f241"
          }
       ],
       "error_records": [
          {
             "value": "1.1.1.1",
             "type": "ip_va",
             "error_message": "The 'type' field value is invalid"
          }
       ]
    }

    API TISC : POST/sn_sec_tisc/threat_intel_data/OBSERVABLES

    Récupère les données observables, y compris les relations entre les observables et d’autres données Threat Intelligence telles que les objets STIX (Structured Threat Information Expression).

    Les observables renvoyés dans la réponse sont triés sys_id par ordre croissant.

    Pour plus d’informations sur les observables et les objets STIX, reportez-vous à la section IoC Repository.

    Pour accéder à ce point de terminaison, l’appelant doit disposer du rôle sn_sec_tisc.api_obs_read_access qui, par défaut, est inclus dans le rôle d’administrateur Threat Intelligence (sn_sec_tisc.admin).

    Format d'URL

    URL versionnée : /api/sn_sec_tisc/{api_version}/threat_intel_data/observables

    URL par défaut : /api/sn_sec_tisc/threat_intel_data/observables

    Paramètres de demande pris en charge

    Tableau 7. Paramètres de chemin d'accès
    Nom Description
    api_version Facultatif. Version du point de terminaison auquel accéder. Exemple : v1 ou v2. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière.

    Type de données : chaîne

    Tableau 8. Paramètres de requête
    Nom Description
    Aucun
    Tableau 9. Paramètres du corps de la demande (JSON)
    Nom Description
    included_fields Champs à renvoyer pour les observables, les références observables et les objets STIX dans la réponse. Différents champs peuvent être retournés pour les observables, les références et chaque type d’objet STIX.

    ServiceNow Les champs système, à l’exception de sys_created_on, sys_updated_on et sys_id, ne sont pas renvoyés dans la réponse.

    "included_fields": { 
       "observable": {Object},
       "reference": {Object},
       "<stix_object>": {Object}
    } 

    Type de données : objet

    included_fields.observable Champs à retourner pour les observables.
    "observable": { 
       "attributes": {Object},
       "common_fields": {Object}
    }

    Type de données : objet

    Par défaut : renvoie les champs syd_id, type et valeur pour tous les types d’observables.

    included_fields.observable.attributes Objet contenant des champs à renvoyer pour les types d’observables spécifiés.
    "attributes": { 
       "<observable_type>": {Object}
    }

    Type de données : objet

    Par défaut : aucun champ spécifique à un type d’observable n’est renvoyé. Seuls les champs syd_id, type et valeur sont renvoyés.

    included_fields.observable.attributes.<observable_type> Objet contenant des champs à retourner pour un type d’observable.
    "<observable_type>": { 
       "include_all_fields": Boolean, 
       "values": [Array] 
    }

    Remplacez <observable_type> par le nom du type d’observable, tel qu’artifact. Pour obtenir la liste complète des types d’observables valides, consultez le champ Valeur de la table Type d’observable [sn_sec_tisc_observable_type].

    Type de données : objet

    included_fields.observable.attributes.<observable_type>.include_all_fields Marqueur indiquant s’il faut renvoyer tous les champs disponibles pour le type d’observable.
    Valeurs valides :
    • true : renvoie tous les champs pour le type d’observable.
    • false : renvoie uniquement les champs spécifiés dans le paramètre pour le type d’observable values .

    Type de données : booléennes

    included_fields.observable.attributes.<observable_type>.values Liste des champs à renvoyer pour le type observable. N’utilisez ce paramètre que si la valeur de est include_all_fields faux.
    "values": [
       "String"
    ]
    Les champs fournis doivent être column_names à partir de la table pour le type d’observable. Les tables suivantes sont utilisées pour les types observables.
    • Artefact [sn_sec_tisc_artifact]
    • Numéro AS [sn_sec_tisc_as_number]
    • Répertoire [sn_sec_tisc_directory]
    • Nom du domaine [sn_sec_tisc_domain_name]
    • Adresse e-mail [sn_sec_tisc_email_address]
    • Message d’e-mail [sn_sec_tisc_email_message]
    • Objet de l’e-mail [sn_sec_tisc_email_subject]
    • Fichier [sn_sec_tisc_file]
    • IPv4 [Adresse sn_sec_tisc_ipv4_address]
    • CIDR IPv4 [sn_sec_tisc_ipv4_cidr]
    • Adresse IPv6 [sn_sec_tisc_ipv6_address]
    • CIDR IPv6 [sn_sec_tisc_ipv6_cidr]
    • Adresse MAC [sn_sec_tisc_mac_address]
    • Hachage MD5 [sn_sec_tisc_md5_hash]
    • Nom Mutex [sn_sec_tisc_mutex_name]
    • Réseau [sn_sec_tisc_network]
    • Autre observable [sn_sec_tisc_other_observable]
    • Processus [sn_sec_tisc_process]
    • Hachage SHA1 [sn_sec_tisc_sha1_hash]
    • Hachage SHA256 [sn_sec_tisc_sha256_hash]
    • Hachage SHA512 [sn_sec_tisc_sha512_hash]
    • Logiciel [sn_sec_tisc_software]
    • URL [sn_sec_tisc_url]
    • Compte d’utilisateur [sn_sec_tisc_user_account]
    • Clé de registre Windows [sn_sec_tisc_windows_registry_key]
    • Certificat X.509 [sn_sec_tisc_x_509_certificate]

    Type de données : tableau

    included_fields.observable.common_fields Objet contenant des champs à renvoyer pour tous les types d’observables.

    Les champs doivent provenir de la table Observable [sn_sec_tisc_observable], car ils doivent être communs à tous les types d’observables.

    "common_fields": { 
       "include_all_fields": Boolean, 
       "values": [Array] 
    }

    Type de données : objet

    Par défaut : renvoie les champs syd_id, type et valeur pour tous les types d’observables.

    included_fields.observable.common_fields.include_all_fields Marqueur indiquant s’il faut renvoyer tous les champs de la table Observable [sn_sec_tisc_observable] pour tous les types d’observables.
    Valeurs valides :
    • vrai : renvoie tous les champs de la table Observable [sn_sec_tisc_observable].
    • false : renvoie uniquement les champs spécifiés dans le common_fields.values paramètre.

    Type de données : booléennes

    included_fields.observable.common_fields.values Liste des champs à renvoyer pour tous les types d’observables. N’utilisez ce paramètre que si la valeur de est common_fields.include_all_fields faux.
    "values": [
       "String"
    ]

    Les champs fournis doivent être column_names à partir de la table Observable [sn_sec_tisc_observable].

    Type de données : tableau

    included_fields.référence Champs à retourner pour les références observables. Les références observables sont des références externes utilisées pour décrire des pointeurs vers des informations représentées en dehors de STIX.
    "reference": { 
       "include_all_fields": Boolean, 
       "values": [Array] 
    }

    Type de données : objet

    Par défaut : renvoie les champs reference_source, sys_id et URL.

    included_fields.reference.include_all_fields Marqueur indiquant s’il faut renvoyer tous les champs disponibles pour les références observables.
    Valeurs valides :
    • true : renvoie tous les champs pour les références observables.
    • false : renvoie uniquement les champs spécifiés dans le reference.values paramètre.

    Type de données : booléennes

    included_fields.valeurs.référence Liste des champs à renvoyer pour les références observables. N’utilisez ce paramètre que si la valeur de est reference.include_all_fields faux.
    "values": [
       "String"
    ]

    Les champs fournis doivent être column_names à partir de la table Référence des observables [sn_sec_tisc_observable_reference].

    Type de données : tableau

    included_fields.<stix_object> Objet contenant des champs à renvoyer pour un type d’objet STIX.
    "<stix_object>": { 
       "include_all_fields": Boolean, 
       "values": [Array] 
    }

    Remplacez <stix_object> par le nom du type d’objet STIX, par exemple attack_pattern.

    Types d’objets STIX valides :
    • attack_pattern
    • campagne
    • course_of_action
    • data_component
    • data_source
    • groupement
    • identity
    • incident
    • indicateur
    • infrastructure
    • intrusion_set
    • emplacement
    • malware
    • malware_analysis
    • note
    • observed_data
    • opinion
    • rapport
    • threat_actor
    • outil
    • vulnerability

    Type de données : objet

    Par défaut : renvoie les champs ID, Nom et sys_id.

    included_fields.<stix_object>.include_all_fields Marqueur indiquant s’il faut renvoyer tous les champs disponibles pour le type d’objet STIX.
    Valeurs valides :
    • true : renvoie tous les champs pour le type d’objet STIX.
    • false : renvoie uniquement les champs spécifiés dans le values paramètre pour le type d’objet STIX.

    Type de données : booléennes

    included_fields.<stix_object>.valeurs Liste des champs à renvoyer pour le type d’objet STIX. N’utilisez ce paramètre que si la valeur de est include_all_fields faux.
    "values": [
       "String"
    ]
    Les champs fournis doivent être column_names à partir de la table pour le type d’objet STIX. Les tables suivantes sont utilisées pour les objets STIX.
    • Modèle d’attaque [sn_sec_tisc_attack_pattern]
    • Campagne [sn_sec_tisc_campaign]
    • Déroulement de l’action [sn_sec_tisc_course_of_action]
    • Composant de données [sn_sec_tisc_aggregated_data_component]
    • Source de données [sn_sec_tisc_aggregated_data_source]
    • Regroupement [sn_sec_tisc_threat_grouping]
    • Identité [sn_sec_tisc_identity]
    • Incident [sn_sec_tisc_threat_event]
    • Indicateur [sn_sec_tisc_indicator]
    • Infrastructure [sn_sec_tisc_infrastructure]
    • Ensemble d’intrusions [sn_sec_tisc_intrusion_set]
    • Emplacement [sn_sec_tisc_location]
    • Programme malveillant [sn_sec_tisc_malware]
    • Analyse de programme malveillant [sn_sec_tisc_malware_analysis]
    • Remarque [sn_sec_tisc_threat_note]
    • Données observées [sn_sec_tisc_observed_data]
    • Opinion [sn_sec_tisc_threat_opinion]
    • Rapport [sn_sec_tisc_threat_report]
    • Acteur de menace [sn_sec_tisc_threat_actor]
    • Outil [sn_sec_tisc_tool]
    • Vulnérabilité [sn_sec_tisc_vulnerability]

    Type de données : tableau

    observable_filters Filtres à appliquer aux observables. Seuls les observables qui correspondent aux critères de filtre sont renvoyés dans la réponse.
    "observable_filters": {
       "boolean_operator": "String", 
       "filters": [Array]
    }

    Type de données : objet

    Par défaut : objet vide (aucun filtre appliqué)

    observable_filters.boolean_operator Opérateur booléen à utiliser pour les conditions de filtre.
    Valeurs valides :
    • ET : renvoyer des observables qui remplissent toutes les conditions de filtre.
    • OU : renvoyer les observables qui remplissent au moins une des conditions de filtre.

    Type de données : chaîne

    observable_filters.filters Tableau de filtres à appliquer aux observables.
    Chaque objet de filtre peut être simple ou complexe.
    • Les filtres simples contiennent un nom de champ, un opérateur et une valeur.
    • Les filtres complexes contiennent un opérateur booléen et un tableau de filtres simples. L’opérateur booléen est appliqué au tableau de filtres simples.
    "filters": [ 
       //Simple filter 
       { 
          "field_name": "String", 
          "operator": "String", 
          "field_value": "String" 
       }, 
       //Complex filter 
       {
          "boolean_operator": "String", 
          "filters": [
             {
    	     "field_name": "String",
    	     "operator": "String",
    	     "field_value": "String"
             }  
          ]
       }
    ]

    Type de données : tableau

    observable_filters.filters.field_name Nom du champ à utiliser pour filtrer les observables.
    Valeurs valides :
    • fiabilité
    • réputation
    • security_type
    • statut
    • sys_created_on
    • sys_updated_on
    • threat_score
    • type
    • valide
    • watch_list

    Type de données : chaîne

    observable_filters.filtres.opérateur Opérateur à utiliser pour le filtre.

    Pour plus d’informations sur les opérateurs, reportez-vous à la section Operators available for filters and queries.

    Le type de données du champ de filtre détermine les opérateurs valides. Les opérateurs suivants sont valides pour chaque type de données.

    Booléen

    Champ applicable : watch_list

    • !=
    • =
    • EST VIDE
    • ISNOTEMPTY
    Choix

    Champs applicables : réputation, security_type, état

    • !=
    • =
    • SE TERMINE PAR
    • DANS
    • COMME
    • PAS DANS
    • DIFFÉRENT DE
    • STARTSWITH
    Date-heure

    Champ applicable : sys_created_on

    • <
    • <=
    • >
    • >=
    • EST VIDE
    • ISNOTEMPTY
    • NOTON (en anglais seulement)
    • ACTIVÉ
    Numéro

    Champs applicables : confiance, threat_score

    • !=
    • <=
    • =
    • >=
    • EST VIDE
    • ISNOTEMPTY
    Référence

    Champ applicable : type

    • !=
    • =
    • DANS
    • EST VIDE
    • ISNOTEMPTY
    Chaîne

    Champ applicable : valeur

    • !=
    • <=
    • =
    • >=
    • SE TERMINE PAR
    • DANS
    • EST VIDE
    • ISNOTEMPTY
    • COMME
    • DIFFÉRENT DE
    • STARTSWITH

    Type de données : chaîne

    observable_filters.filters.field_value Valeur du champ.

    Pour les champs de choix, la valeur doit être la valeur interne et non la valeur d’affichage. Pour les champs de date et heure, la valeur doit être au format ISO dans le fuseau horaire UTC.

    Remarque :
    Ce paramètre n’est pas obligatoire lors de l’utilisation des opérateurs ISEMPTY ou ISNOTEMPTY.

    Type de données : chaîne

    page_size Limite le nombre d’observables qui sont renvoyés dans la réponse API. Utilisé pour la pagination.

    Type de données : chaîne

    Par défaut : 100

    Valeur maximale : 1 000

    page_token Utilisé pour obtenir les données des observables pour la page actuelle.

    Pour obtenir la première page, ce paramètre peut être omis ou la valeur de ce paramètre doit être une chaîne vide. Pour obtenir la page suivante de la demande suivante, utilisez la valeur du corps de la next_page_token réponse comme valeur de ce paramètre.

    Type de données : chaîne

    Par défaut : chaîne vide

    Relations Tableau de types de relations à retourner pour chaque observable dans la réponse.

    Les relations peuvent être avec un autre observable, une référence observable ou un objet STIX (Structured Threat Information Expression).

    Valeurs valides :
    • attack_pattern
    • campagne
    • course_of_action
    • data_component
    • data_source
    • groupement
    • identity
    • incident
    • indicateur
    • infrastructure
    • intrusion_set
    • emplacement
    • malware
    • malware_analysis
    • note
    • observable
    • observed_data
    • opinion
    • référence
    • rapport
    • threat_actor
    • outil
    • vulnerability

    Par exemple, transmettre le tableau ["observable », « threat_actor"] renvoie tous les observables associés et les acteurs de menace pour chaque observable de la réponse.

    Type de données : tableau

    Par défaut : tableau vide (aucune relation renvoyée)

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 10. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Prend uniquement en charge application/json.
    Content-Type Format de données du corps de la demande. Prend uniquement en charge application/json.
    Tableau 11. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 12. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    400 Demande incorrecte. Les paramètres de la demande ne sont pas valides ou le JSON du corps de la demande comporte une erreur syntaxique.

    Pour afficher les détails de l’erreur, consultez le error paramètre dans le corps de la réponse.

    401 Non autorisé. L’authentification de l’utilisateur n’est pas valide. Vérifiez le nom d’utilisateur et le mot de passe ou le jeton OAuth.
    403 Interdit. Il manque un rôle requis à l’utilisateur appelant. Le rôle sn_sec_tisc.api_obs_read_access est requis pour accéder à ce point de terminaison.
    429 Trop de demandes. Le nombre de demandes d’API dépasse la limite de taux de l’API. Par défaut, la limite est de 500 demandes par heure.
    500 Erreur interne du serveur. Consultez les journaux d’application dans la table Journal [syslog] pour plus d’informations sur l’erreur.

    Paramètres de corps de réponse (JSON)

    Nom Description
    erreur Informations erronées. Ce paramètre n’est renvoyé qu’en cas d’échec de la demande.
    "error": {
       "message": "String",
       "detail": "String"
    }

    Type de données : objet

    message.erreur Message d’erreur indiquant le motif de l’échec de la demande.

    Type de données : chaîne

    error.detail Détails supplémentaires sur les raisons de l’échec de la demande.

    Type de données : chaîne

    is_last_page Marqueur indiquant s’il s’agit de la dernière page de données observables.
    Valeurs valides :
    • true : cette réponse contient la dernière page de données.
    • false : certaines pages supplémentaires peuvent être renvoyées.

    Type de données : booléennes

    next_page_token Utilisez cette valeur dans la prochaine demande API pour obtenir la page suivante de données observables. Fournissez cette valeur dans le page_token paramètre dans le corps de la demande.

    Type de données : chaîne

    observables Tableau d’objets observables.
    "observables": [
       {
          "attributes": {Object},
          "relationships": {Object},
          "sys_id": "String",
          "type": "String",
          "value": "String"
       }
    ]
    Chaque objet observables inclut également les champs spécifiés par le included_fields.observable.common_fields paramètre dans le corps de la demande.

    Type de données : tableau

    Observables.Attributs Objet contenant des paires champ-valeur pour les champs spécifiés par le paramètre dans le included_fields.observable.attributes.<observable_type> corps de la demande.
    "attributes": {
       "<field>": "<value>"
    }

    Type de données : objet

    Observables.Relations Objet contenant des relations pour l’observable. Les types de relations renvoyés sont spécifiés par le relationships paramètre dans le corps de la demande, et les champs renvoyés pour chaque relation sont spécifiés par le included_fields paramètre dans le corps de la demande.

    Cet exemple montre la structure de base de ce paramètre. Toutefois, les types de relations et les champs renvoyés varient en fonction des paramètres du corps de la demande.

    "relationships": {
       "observable": [
          {
             "sys_id": "String",
             "type": "String",
             "value": "String"
          }
       ],
       "indicator": [
          {
             "id": "String",
             "name": "String",
             "sys_id": "String"
          }
       ],
       "attack_pattern": [
          {
             "name": "String",
             "sys_id": "String",
             "id": "String"
          }
       ]
    }

    Type de données : objet

    observables.sys_id Sys_id de l’observable. Situé dans la table Observable [sn_sec_tisc_observable].

    Type de données : chaîne

    type.observables Type d’observable. Pour obtenir la liste complète des types d’observables valides, consultez le champ Valeur de la table Type d’observable [sn_sec_tisc_observable_type].

    Type de données : chaîne

    Valeur.Observables. Valeur associée à l’observable, telle qu’une adresse IP ou une URL.

    Type de données : chaîne

    origine Application de l’origine de la réponse, qui est Centre de sécurité des renseignements sur les menaces (TISC). La valeur de ce paramètre est sn_sec_tisc.

    Cette valeur peut éventuellement être utilisée par les SIEM qui utilisent la réponse API pour déterminer si les renseignements proviennent de TISC ont entraîné la création d’incidents de sécurité.

    Type de données : chaîne

    page_size Nombre maximal d’observables renvoyés dans la réponse. Utilisé pour la pagination.

    Type de données : chaîne

    statut État de la demande d’API.
    Valeurs possibles :
    • succès
    • échec

    Si la demande a échoué, consultez le paramètre dans le corps de error la réponse pour plus d’informations sur l’erreur.

    Type de données : chaîne

    Demande cURL

    Cet exemple renvoie la première page de données observables. Le observable_filters paramètre spécifie de ne renvoyer que les observables qui correspondent à la condition état = actif ET [threat_score >= 70 OU confiance >= 50].

    curl 'http://instance.servicenow.com/api/sn_sec_tisc/v1/threat_intel_data/observables' \
    --request POST \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic YWRtaW46YWRtaW4=' \
    --data '{
       "page_size": "100",
       "page_token": "",
       "relationships": [
          "observable",
          "threat_actor",
          "indicator",
          "reference",
          "attack_pattern"
       ],
       "included_fields": {
          "observable": {
             "common_fields": {
                "include_all_fields": false,
                "values": [
                   "value",
                   "reputation",
                   "confidence"
                ]
             },
             "attributes": {
                "ip_v4_address": {
                   "include_all_fields": false,
                   "values": [
                      "as_number"
                   ]
                },
                "artifact": {
                   "include_all_fields": false,
                   "values": [
                      "mime_type",
                      "encryption_algorithm"
                   ]
                }
             }
          },
          "threat_actor": {
             "include_all_fields": false,
             "values": [
                "name",
                "aliases",
                "description",
                "threat_actor_roles"
             ]
          },
          "attack_pattern": {
             "include_all_fields": true
          },
          "indicator": {
             "include_all_fields": false,
             "values": [
                "name",
                "pattern",
                "pattern_type",
                "indicator_types"
             ]
          },
          "reference": {
             "include_all_fields": true,
             "values": [
                "description"
             ]
          }
       },
       "observable_filters": {
          "boolean_operator": "AND",
          "filters": [
             {
                "field_name": "status",
                "operator": "=",
                "field_value": "active"
             },
             {
                "boolean_operator": "OR",
                "filters": [
                   {
                      "field_name": "threat_score",
                      "operator": ">=",
                      "field_value": "70"
                   },
                   {
                      "field_name": "confidence",
                      "operator": ">=",
                      "field_value": "50"
                   }
                ]
             }
          ]
       }
    }'

    Corps de réponse.

    {
       "status": "success",
       "observables": [
          {
             "sys_id": "792e3d1543a0421060eee0ea78b8f227",
             "type": "url",
             "value": "https://www.example.com",
             "confidence": "60",
             "reputation": "",
             "relationships": {
                "observable": [
                   {
                      "sys_id": "ccadb19143a0421060eee0ea78b8f25a",
                      "type": "ip_v4_address",
                      "value": "1.1.1.1",
                      "confidence": "20",
                      "reputation": "malicious"
                   }
                ],
                "indicator": [
                   {
                      "id": "indicator--294d97754364c21060eee0ea78b8f2ae",
                      "indicator_types": "",
                      "name": "Poison Ivy",
                      "pattern": "",
                      "pattern_type": "sigma",
                      "sys_id": "a54d97754364c21060eee0ea78b8f2ae",
                      "type": "indicator"
                   }
                ],
                "attack_pattern": [
                   {
                      "name": "Phishing",
                      "sys_id": "010d5bf14364c21060eee0ea78b8f2ac",
                      "id": "attack-pattern--810d5bf14364c21060eee0ea78b8f2ac",
                      "type": "attack-pattern"
                   }
                ],
                "reference": [
                   {
                      "description": "phishing",
                      "reference_source": "CAPEC-98",
                      "sys_created_on": "2024-02-25T03:34:45.000Z",
                      "sys_id": "a42d97354364c21060eee0ea78b8f28c",
                      "sys_updated_on": "2024-02-25T03:34:45.000Z",
                      "url": " https://capec.mitre.org/data/98.html "
                   }
                ]
             },
             "attributes": {
                "encryption_algorithm": "mime-type-indicated",
                "mime_type": "application/zip"
             }
          },
          {
             "sys_id": "ccadb19143a0421060eee0ea78b8f2242",
             "type": "ip_v4_address",
             "value": "1.2.2.1",
             "confidence": "70",
             "reputation": "",
             "relationships": {}
          },
          {
             "sys_id": "7ccd359143a0421060eee0ea78b8f264",
             "type": "artifact",
             "value": "pom.xml",
             "confidence": "",
             "reputation": "",
             "relationships": {}
          }
       ],
       "page_size": "100",
       "next_page_token": "drejvfgbresg|7ccd359143a0421060eee0ea78b8f264",
       "is_last_page": true,
       "origin": "sn_sec_tisc"
    }