CLI: Ejemplos de comando SDK content

Document created by RSA Information Design and Development on Apr 23, 2018
Version 1Show Document
  • View in full screen mode
 

El primer ejemplo de comando sdk content de NwConsole que aparece a continuación es simple y muestra todos los comandos que debe ingresar. Después de eso, los ejemplos solo muestran los comandos sdk content. El primer ejemplo crea un archivo de registro y explora los primeros 1,000 registros de una agregación de Concentrator desde 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

Este script genera 1,000 registros (suponiendo que en el servicio existe entre 1 y 1,000 sesiones) en el archivo /tmp/mylogs.log. Los registros están en texto crudo. El parámetro fileExt=.log es necesario para indicar al comando que se desea generar un archivo de registro.

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

Este comando explora los mismos 1,000 registros como se indicó anteriormente, pero analiza el encabezado del registro y extrae la fecha y hora, el reenviador y otra información del registro, y los coloca en un archivo con formato CSV.

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

El registro de fecha y hora se expresa en tiempo Epoch. Los parámetros includeHeaders y separator solo se pueden usar en instalaciones de NetWitness Suite 10.4.0.2 y superior.

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

Este comando escribe un archivo de registro en toda la gama de la sesión actual, pero solo registros que coinciden con risk.info='nw35120'. Tenga en cuenta que cuando agrega una cláusula Where, realiza una consulta en segundo plano para recopilar los ID de sesión para exportación. La consulta se debe ejecutar en un servicio con los campos adecuados indexados (generalmente es un Broker o un Concentrator). En este caso, puesto que está consultando el campo risk.info, vuelva a comprobar el servicio donde se ejecuta el comando para asegurarse de que esté indexado en el nivel de valor (IndexValues; consulte index-concentrator.xml para obtener ejemplos). De forma predeterminada, la mayoría de los Decoders solo tienen tiempo indexado. Si utiliza cualquier campo, excepto tiempo, en la cláusula Where, necesita transferir la consulta del Decoder a Concentrator, Broker o Archiver con los niveles de índice apropiados para la consulta. Puede encontrar más información sobre la indexación y la escritura de consultas en la Guía de ajuste de la base de datos de NetWitness SuiteCore.

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'"

Este comando es el mismo que el anterior, pero solo busca coincidencias de registros entre las 15:00 y las 16:00 h (UTC) el 5 de enero de 2015, que tengan una clave de metadatos threat.category. Nuevamente, debido a que esta consulta tiene un campo distinto de tiempo en la cláusula Where (threat.category), se debe ejecutar en un servicio con threat.category indexado por lo menos en el nivel IndexKeys (los operadores exists y !exists solo requieren un índice en el nivel de clave, a pesar de que los valores también funcionan bien).

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

Este comando crea varios archivos de registro, donde cada uno de ellos no tiene un tamaño mayor que 1 GiB. Antepone mylogs a los nombres de archivo y les agrega el registro de fecha y hora del primer paquete/registro en el archivo. Algunos nombres de archivo de ejemplo: mylogs-1-2015-Jan-28T11_08_14.log, mylogs-2-2015-Jan-28T11_40_08.log y mylogs-3-2015-Jan-28T12_05_47.log. En versiones anteriores a Security Analytics 10.5, el separador T entre la fecha y hora es un espacio.

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

Este comando explora todos los paquetes entre el período de cinco horas para tipos de servicios 80 y 21 y escribe un archivo PCAP. Cada 5 minutos, inicia un nuevo archivo PCAP.

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

Preste atención a este comando. ¿Por qué? Funciona en paquetes y registros, y es extremadamente rápido. La desventaja es que obtendrá todo entre los dos rangos de tiempo y no podrá usar una cláusula Where. Nuevamente, comienza a transmitir de regreso todo casi de inmediato y no requiere una consulta para ejecutar primero en el back-end. Debido a que todo se puede leer con I/O secuenciales, puede saturar completamente el vínculo de red entre el servidor y el cliente. Comienza a crear archivos que tienen antepuesto mydecoder y los divide en un archivo nuevo una vez que alcanzan un tamaño de 512 MIB.

sdk tailLogs

o (el comando equivalente):

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

Este es un comando divertido. Utiliza sdk content en segundo plano. El propósito de este comando es ver todos los registros entrantes en un Log Decoder. Eso es todo. Es muy simple. A medida que los registros entran en el Log Decoder (también puede ejecutarlo en un Broker o Concentrator), salen en la pantalla de la consola. Esta es una excelente manera de ver si el Log Decoder está capturando y qué es lo que exactamente ingresa en el Log Decoder. Este comando se ejecuta en modo continuo. No lo utilice si el Log Decoder está capturando en una alta tasa de recopilación (este comando no puede mantener el ritmo de él). Sin embargo, es útil para la verificación o con fines de solución de problemas.

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

Este comando es el mismo que el anterior, excepto que solo genera registros que coinciden con la cláusula Where y en lugar de generar resultados en la consola, los escribe en un conjunto de archivos de registro en /mydir/anotherdir que no aumentan más de 1 GiB. Obviamente, también puede lograrlo con el comando sdk content, pero si prefiere el comportamiento predeterminado, debe escribir un poco menos.

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

Este comando comienza a escribir PCAP de todo el tráfico web desde la sesión más reciente y todas las nuevas sesiones entrantes que coinciden con el servicio = 80. Escribe PCAP no mayores que 2 GiB y si todos los PCAP del directorio alcanzan un tamaño mayor que 100 GIB, elimina los PCAP más antiguos hasta que el directorio es 10 % menor que el tamaño máximo. Tenga en cuenta que la comprobación de tamaño del directorio no es exacta y solo comprueba cada 15 minutos de forma predeterminada. Puede ajustar la cantidad de minutos entre comprobaciones si pasa cacheMinutes como un parámetro, pero esto solo funciona con Security Analytics 10.5 y superior.

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

Este es el comando de respaldo de una persona inexperta. Explora 1,000 sesiones y genera el contenido completo (sesiones, metadatos, paquetes o registros) en formato NWD (formato de datos de NetWitness). NWD es un formato especial que se puede volver a importar a un paquete o Log Decoder sin volver a analizar. Por lo tanto, básicamente, la sesión analizada original se importa sin cambios. El registro de fecha y hora tampoco cambia, por lo que si originalmente se analizó hace 6 meses, durante la importación dicho registro se conservará como hace 6 meses. 

Nota: No se debe esperar un gran rendimiento con este comando, especialmente con los paquetes. Recopilar los paquetes para una sesión implica una gran cantidad de I/O aleatorios, lo que puede ralentizar significativamente la exportación. Los registros no se ven muy afectados por este problema (un solo registro por sesión), pero en segundo plano este comando utiliza la API de /sdk content, la cual no es una API de transmisión orientada al rendimiento como los paquetes de /sdk. Por lo tanto, nuevamente, no debe esperar un gran rendimiento.

El parámetro metaFormatFilename es muy útil en este comando. Si este comando se ejecuta en un Concentrator con más de un servicio, se crearán los nombres de archivo NWD con los metadatos did para cada sesión (el %1% en el parámetro de anexo se sustituye por el valor de did). Cada nombre de archivo indicará exactamente de cuál Decoder provienen los datos.

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

Este es otro comando divertido. Funciona muy similar a nuestro antiguo producto Visualize si vincula el directorio de salida con algo como el Explorador de Windows en modo de ícono. Extrae archivos de todo el tráfico de la web, correo electrónico y SMB. Esto incluye todos los tipos de archivos, como imágenes, archivos zip, videos, archivos PDF, documentos de Office, archivos de texto, archivos ejecutables y archivos de audio. Si extrae malware, el antivirus lo señalará. No se preocupe, el comando no ejecutará nada para que no infecte la máquina (a menos que intente ejecutarlo usted mismo). Sin embargo, puede ser útil porque si encuentra malware, el nombre de archivo indica el ID de la sesión de donde se extrajo. A continuación, puede consultar ese ID de sesión y ver qué host está posiblemente infectado por el malware y tomar medidas. Puede filtrar lo que se extrae con los parámetros includeFileTypes o excludeFileTypes (consulte la ayuda del comando). Por ejemplo, si se agrega excludeFileTypes=".exe;.dmg;.msi", se evita que se extraigan archivos ejecutables e instaladores. Este comando ejecuta, sin interrupción, la extracción de archivos desde todas las sesiones existentes y desde cualquier sesión nueva. Después de que el directorio se abarrota con más de 200 MIB de archivos, se inicia automáticamente la limpieza de los archivos cada 10 minutos. 

Nota: Este comando solo tiene sentido para las sesiones de paquete, no para los registros.

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

Este comando extrae archivos de sesiones HTTP y de correo electrónico desde un período de una hora y agrupa los archivos extraídos en los directorios que especifica el parámetro subdirFileTypes. Por ejemplo, cualquier archivo de audio extraído con la extensión .wav, .mp3 o .aac se colocará en el audio del subdirectorio, el cual se creará en el directorio de salida especificado. Lo mismo sucede con el resto de los grupos especificados en ese parámetro. Algunos archivos también se renombrarán automáticamente según su extensión de archivo. Esto se maneja mediante renameFileTypes. Cualquier archivo con una extensión .download, .octet-stream o .program se renombrará a .exe. Los archivos con la extensión .jpeg se renombrarán como .jpg. Una vez que el directorio de nivel superior supera los 500 MiB, se limpian los archivos más antiguos. Este comando se detiene en la última sesión cuando se inicia el comando.

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

Este comando busca en todos los paquetes y los registros (el parámetro sp) la palabra clave party. Si party se encuentra en algún lugar de los paquetes o los registros, se presenta el ID de sesión junto con el texto que encontró y el texto que rodea al contexto. La cláusula Where indica que solo busca tráfico de correo electrónico y web. El parámetro ci significa que es una búsqueda que no distingue mayúsculas de minúsculas. Puede reemplazar regex por keyword para que lleve a cabo una búsqueda de regex.

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

Este es un ejemplo de comando interesante. Busca la palabra clave checkpoint en todos los registros (o podría ser paquetes) y si la encuentra, extrae el registro a un archivo checkpoint-logs.log. Existe todo tipo de posibilidades con este comando. Básicamente, cuando se detecta un acierto, transfiere la sesión a la llamada de contenido. Por lo tanto, todos los parámetros que pasa a sdk search y que no se reconocen se pasan junto con la llamada de contenido. Esto permite todas las funcionalidades de la llamada sdk content, pero solo cuando se trabaja en las sesiones con aciertos de búsqueda de contenido. Un gran poder conlleva una gran responsabilidad

You are here
Table of Contents > CLI: Ejemplos de comando SDK content

Attachments

    Outcomes