CLI : Exemples de commandes SDK content

Document created by RSA Information Design and Development on Feb 6, 2017
Version 1Show Document
  • View in full screen mode
  

Le premier exemple de commande sdk content NwConsole ci-dessous est simple et présente toutes les commandes que vous devez saisir. Ensuite, les exemples ne contiennent que les commandes sdk content. Le premier exemple crée un fichier log et extrait les 1 000 premiers logs d'un Concentrator qui agrège les données issues d'un Log Decoder :

sdk open nw:://admin:netwitness@myconcentrator.local:50005

sdk output /tmp

sdk content sessions=1-1000 render=logs append=mylogs.log fileExt=.log

Ce script génère 1 000 logs (à supposer que les sessions 1 à 1 000 existent sur le service) dans le fichier /tmp/mylogs.log. Les logs sont en texte brut. Le paramètre fileExt=.log est nécessaire pour indiquer à la commande que nous souhaitons générer un fichier log.

sdk content sessions=1-1000 render=logs append=mylogs.log fileExt=.log includeHeaders=true separator=","

Cette commande extrait les mêmes 1 000 logs que ci-dessus, mais elle analyse l'en-tête de log et extrait l'horodatage du log, le redirecteur et d'autres informations, et les place dans un fichier au format CSV.

Exemple de CSV : 1422401778,10.250.142.64,10.25.50.66,hop04b-LC1,%MSISA-4: 81.136.243.248...

L'horodatage figure en heure Epoch. Les paramètres includeHeaders et separator ne peuvent être utilisés que sur les installations Security Analytics 10.4.0.2 et versions supérieures.

sdk content sessions=l-now render=logs append=mylogs.log fileExt=.log includeHeaders=true separator="," where="risk.info='nw35120'"

Cette commande écrit un fichier log dans l'ensemble des sessions actuelles, mais seuls les logs qui correspondent à risk.info='nw35120'. N'oubliez pas que, lorsque vous ajoutez une clause where, elle exécute une requête en arrière-plan pour collecter les ID de session en vue de l'exportation. La requête doit être exécutée sur un service avec les champs appropriés indexés (en général un Broker ou un Concentrator). Dans ce cas, étant donné que vous interrogez le champ risk.info, vérifiez le service dans lequel vous exécutez la commande pour vous assurer qu'il est indexé au niveau de la valeur (Pour le paramètre IndexValues, reportez-vous au fichier index-concentrator.xml pour obtenir des exemples). Par défaut, la plupart des Decoder n'ont que time indexé. Si vous utilisez tous les champs sauf time dans la clause where, vous devez déplacer la requête du Decoder vers un Concentrator, Broker ou Archiver. Pour plus d'informations sur l'indexation et l'écriture des requêtes, reportez-vous au Guide d'optimisation de la base de données principale de Security Analytics.

sdk content sessions=l-now render=logs append=mylogs.log fileExt=.log includeHeaders=true separator="," where="threat.category exists && time='2015-01-05 15:00:00'-'2015-01-05 16:00:00'"

Cette commande est identique à la commande ci-dessus,mais elle ne recherche que les logs correspondant entre 15h00 et 16h00 (UTC) le 5 janvier 2015 qui ont une clé de méta threat.category. Encore une fois, étant donné que cette requête contient un champ autre que time dans la clause where (threat.category), elle doit être exécutée sur un service avec la clé de méta threat.category indexée, au moins au niveau IndexKeys (les opérateurs exists et !exists n'ont besoin que d'un index au niveau de la clé, bien que des valeurs puissent être acceptées aussi).

sdk content sessions=l-now render=logs append=mylogs fileExt=.log where="event.source begins 'microsoft'" maxFileSize=1gb

Cette commande crée différents fichiers log, chacun ne dépassant pas 1 Gio. Elle fait précéder les noms de fichier du préfixe mylogs et leur ajoute la date et l'heure du premier horodatage de paquet/log figurant dans le fichier. Quelques exemples de noms de fichiers : mylogs-1-2015-Jan-28T11_08_14.log, mylogs-2-2015-Jan-28T11_40_08.log et mylogs-3-2015-Jan-28T12_05_47.log. Pour les versions antérieures à Security Analytics 10.5, le séparateur T entre la date et l'heure est un espace.

sdk content sessions=l-now render=pcap append=mypackets where="service=80,21 && time='2015-01-28 10:00:00'-'2015-01-28 15:00:00'" splitMinutes=5 fileExt=.pcap

Cette commande extrait tous les paquets pour la période de cinq heures pour les types de services 80 et 21 et enregistre un fichier PCAP. Elle démarre un fichier PCAP toutes les cinq minutes.

sdk content time1="2015-01-28 14:00:00" time2="2015-01-28 14:15:00" render=pcap append=mydecoder fileExt=.pcap maxFileSize=512mb sessions=l-now

Prêtez attention à cette commande. Pourquoi ? Elle fonctionne aussi bien pour les paquets que pour les logs et est extrêmement rapide. Son inconvénient est que vous obtenez tout entre les deux périodes et que vous ne pouvez pas utiliser de clause where. Une fois encore, elle renvoie tous les résultats presque immédiatement et n'exige pas d'exécution de requête préalable sur le backend. Étant donné que tout est lu à l'aide d'E/S séquentielles, elle peut complètement saturer la liaison réseau entre le serveur et le client. Elle crée des fichiers avec le préfixe mydecoder et commence un nouveau fichier lorsque la taille du fichier atteint 512 Mio.

sdk tailLogs

ou (la commande équivalente) :

sdk content render=pcap console=true sessions=now-u

C'est une petite commande amusante. En fait, elle utilise sdk content en arrière-plan. Cette commande vise à afficher tous les logs entrants sur un Log Decoder. Voilà. C'est très simple. Lorsque les logs arrivent dans le Log Decoder (vous pouvez l'exécuter sur un Broker ou un Concentrator aussi), ils sortent sur l'écran de la console. C'est un excellent moyen de savoir si le Log Decoder effectue une capture et de repérer exactement ce qui entre dans celui-ci. Cette commande s'exécute en mode continu. Évitez de l'utiliser si le Log Decoder effectue une capture à un rythme d'acquisition élevé (cette commande ne peut pas suivre son rythme). Cependant, elle est très utile pour vérifier ou résoudre les problèmes.

sdk tailLogs where="device.id='ciscoasa'" pathname=/mydir/anotherdir/mylogs

Cette commande est identique à la commande ci-dessus, sauf qu'elle ne génère que les logs qui correspondent à la clause where et que, au lieu d'afficher ses résultats sur la console, elle les enregistre dans une série de fichiers dans le répertoire /mydir/anotherdir qui ne dépasse pas 1 Gio. Vous pouvez évidemment effectuer aussi cela avec la commande sdk content, mais la présente commande demande moins d'opérations de saisie.

sdk content sessions=now-u render=pcap where="service=80" append=web-traffic fileExt=.pcap maxFileSize=2gb maxDirSize=100gb

Cette commande écrit les fichiers PCAP de l'ensemble du trafic Web issu de la dernière session et de toutes les nouvelles sessions entrantes qui correspondent à service=80. Elle génère des PCAP ne dépassant pas 2 Gio et, si tous les PCAP du répertoire dépassent 100 Gio, elle supprime les PCAP les plus anciens jusqu'à ce que le répertoire soit de 10 % inférieur à la taille maximale. N'oubliez pas que la vérification de la taille du répertoire n'est pas exacte et que la taille du répertoire n'est vérifiée que toutes les 15 minutes par défaut. Vous pouvez ajuster l'intervalle en minutes entre les vérifications en passant le paramètre cacheMinutes, mais cela ne fonctionne qu'avec Security Analytics 10.5 et versions supérieures.

sdk content sessions=79000-79999 render=nwd append=content-%1%.nwd metaFormatFilename=did

C'est une commande de sauvegarde de pauvre. Elle extrait 1000 sessions et sort le contenu intégral (sessions, méta, paquets ou logs) au format NWD (NetWitness Data Format). NWD est un format spécial qui peut être réimporté dans un Packet Decoder ou un Log Decoder sans réanalyser. Ainsi, la session analysée d'origine importe essentiellement sans modifications. L'horodatage ne change pas aussi, et si elle a été analysée initialement il y a 6 mois, l'horodatage effectué à l'importation sera conservé tel qu'il était il y a six mois. 

Remarque : Ne vous attendez pas à obtenir de grandes performances avec cette commande, en particulier avec les paquets. La collecte des paquets pour une session implique beaucoup d'E/S aléatoires et peut ralentir drastiquement l'exportation. Les logs ne souffrent pas autant de ce problème (un seul log par session), mais cette commande utilise en arrière-plan l'API de contenu /sdk, qui n'est pas une Streaming API performante comme /sdk packets. Donc ne vous attendez pas encore à obtenir de grandes performances.

Le paramètre metaFormatFilename est très utile dans cette commande. Si cette commande est exécutée sur un Concentrator avec plusieurs services, les noms de fichier NWD sont créés avec le méta did pour chaque session (le %1% du paramètre append est remplacé par la valeur de did). Chaque nom de fichier indiquera exactement le Decoder d'où proviennent les données.

sdk content session=l-u where="service=80,139,25,110" render=files maxDirSize=200mb cacheMinutes=10

Voilà une autre petite commande amusante. Elle fonctionne de manière très similaire à notre ancien produit Visualize si vous appariez le répertoire de sortie à Windows Explorer en mode Icône, par exemple. Elle extrait les fichiers de l'ensemble du trafic Web, de messagerie et SMB. Sont compris tous les types de fichiers (images, fichiers zip, vidéos, PDF, documents Office, fichiers texte, exécutables et fichiers audio. Si elle extrait un malware, votre analyseur de virus le repérera. Ne vous inquiétez pas, rien ne sera exécuté par la commande et la machine ne sera pas infectée (sauf si vous tentez d'exécuter la commande vous-même). Cependant, elle peut être très utile, car le nom de fichier indique l'ID de session d'où il a été extrait afin de vous permettre de trouver le malware. Vous pouvez alors interroger cet ID de session et rechercher l'hôte éventuellement infecté par ce malware afin d'entreprendre une action. Les paramètres includeFileTypes ou excludeFileTypes vous permettent de filtrer ce qui doit être extrait (voir l'aide associée à la commande). Par exemple, l'ajout de excludeFileTypes=".exe;.dmg;.msi" empêche l'extraction des exécutables et des programmes d'installation. Cette commande se contente d'extraire des fichiers en nonstop de toutes les sessions existantes et nouvelles. Lorsque le répertoire contient plus de 200 Mio de fichiers, elle nettoie automatiquement les fichiers toutes les 10 minutes. 

Remarque : Cette commande est seulement valable pour les sessions de paquets et non les logs.

sdk content session=1-now where="time='2015-01-27 12:00:00'-'2015-01-27 13:00:00' && (service=25,110,80)" subdirFileTypes="audio=.wav;.mp3;.aac; video=.wmv;.flv;.mp4;.mpg;.swf; documents=.doc;.xls;.pdf;.txt;.htm;.html images=.png;.gif;.jpg;.jpeg;.bmp;.tif;.tiff archive=.zip;.rar; other=*" renameFileTypes=".download|.octet-stream|.program|.exe;.jpeg|.jpg" render=files maxDirSize=500mb

Cette commande extrait les fichiers des sessions HTTP et de messagerie sur une période d'une heure et groupe ensuite les fichiers extraits en répertoires spécifiés par le paramètre subdirFileTypes. Par exemple, tout fichier audio extrait qui a l'extension .wav, .mp3 ou .aac est placé dans le sous-répertoire audio qui est créé dans le répertoire de sortie spécifié. Il en va de même pour tous les autres groupes spécifiés dans ce paramètre. Selon leur extension, certains fichiers sont aussi renommés automatiquement. Ceci est géré par renameFileTypes. Tous les fichiers avec l'extension .download, .octet-stream ou .program sont renommés .exe. Les fichiers avec l'extension .jpeg sont renommés jpg. Lorsque le répertoire de premier niveau dépasse 500 Mio, les fichiers les plus anciens sont effacés. Cette commande s'arrête à la dernière session qui porte l'heure à laquelle la commande a démarré.

sdk search session=l-now where="service=80,25,110" search="keyword='party' sp ci"

Cette commande recherche tous les paquets et logs (le paramètre sp) correspondant au mot-clé party. Si le mot-clé party est trouvé quelque part dans les paquets et les logs, elle génère l'ID de session accompagné du texte qu'elle a trouvé et du texte autour comme contexte. La clause where indique qu'elle explore uniquement le trafic Web et de messagerie. Le paramètre ci indique qu'il s'agit d'une recherche dans laquelle les minuscules ne sont pas différenciées des majuscules. Vous pouvez remplacer regex par keyword pour obtenir une recherche regex.

sdk search session=l-now search="keyword='checkpoint' sp ci" render=log append=checkpoint-logs.log fileExt=.log

C'est un exemple de commande intéressant. Cette commande explore tous les logs (ou éventuellement les paquets) pour rechercher le mot-clé checkpoint, et, lorsque ce mot-clé est trouvé, elle extrait le log dans un fichier checkpoint-logs.log. Cette commande s'accompagne de toutes sortes de possibilités. À la base, lorsqu'une occurrence est détectée, la commande passe la session à l'appel de contenu. Ainsi, les paramètres que vous transmettez à sdk search qui ne sont pas reconnus sont passés à l'appel de contenu. Cela permet d'exploiter toutes les capacités de l'appel de sdk content, mais seulement en travaillant sur des sessions contenant des occurrences de contenu recherché. Avec le pouvoir vient la responsabilité !

Previous Topic:Commande SDK Content
You are here
Table of Contents > Console RSA Security Analytics > Exemples de commandes SDK content

Attachments

    Outcomes