Lee y filtra la salida de herramientas en Kali

LinuxBeginner
Practicar Ahora

Introducción

Las herramientas de seguridad pueden producir salidas extensas con notas, observaciones repetidas y diagnósticos. Un resultado útil es un pequeño conjunto de hallazgos relevantes cuyo origen comprendes.

En esta práctica utilizarás un archivo de texto proporcionado antes de ejecutar cualquier herramienta de escaneo. Leerás su contenido, filtrarás y eliminarás duplicados de registros de servicios abiertos, los contarás y mantendrás los errores separados de la salida útil.

Lee un archivo de salida preparado

En este paso inspeccionarás de varias formas un archivo de texto preparado antes de extraer hallazgos. Son datos de ejemplo, no la salida de un escaneo que debas ejecutar.

Abre el shell Kali preparado:

kali

Utiliza una ruta absoluta para elegir el directorio de trabajo compartido:

cd /home/labex/project

El archivo observations.txt contiene líneas cortas que comienzan por NOTE, OPEN o CLOSED. Aquí OPEN significa que la observación de ejemplo indica un servicio abierto; no demuestra una vulnerabilidad. Muestra el pequeño archivo completo:

cat observations.txt

Verás líneas repetidas de servicios abiertos, además de notas y líneas de servicios cerrados. Leer primero la fuente ayuda a elegir un filtro que conserve la información deseada.

Para un archivo largo, less muestra una página cada vez sin modificar el archivo:

less observations.txt

Utiliza las flechas para desplazarte si es necesario y pulsa q para salir y volver al shell. La muestra cabe en una pantalla; el mismo paginador funciona para salidas más grandes de herramientas.

head lee el principio de un archivo; tail lee su final. La opción -n establece cuántas líneas mostrar. Inspecciona las tres primeras líneas:

head -n 3 observations.txt

Salida esperada:

NOTE supplied training observations
OPEN training-web:8080 http
CLOSED training-db:5432 postgresql

Ahora inspecciona las dos últimas líneas:

tail -n 2 observations.txt

La última línea es NOTE end of sample. Guarda la vista previa de tres líneas utilizando el operador > presentado en la primera práctica:

head -n 3 observations.txt > preview.txt
cat preview.txt

La vista previa debe contener las mismas tres líneas mostradas arriba. Conservaste la fuente intacta y guardaste una vista útil de ella.

Filtra, ordena y elimina hallazgos repetidos

En este paso construirás una tubería que conserve los registros de servicios abiertos y elimine duplicados.

Permanece en Kali y vuelve al espacio de trabajo compartido:

cd /home/labex/project

grep muestra las líneas coincidentes. El patrón siguiente está entre comillas simples para que el shell lo pase literalmente. El ancla ^ significa el principio de una línea y el espacio después de OPEN separa el tipo de registro de sus datos:

grep '^OPEN ' observations.txt

La salida incluye todas las observaciones de servicios abiertos, incluidas las líneas repetidas. No aparecen las notas ni las líneas CLOSED.

El símbolo de tubería | conecta la salida estándar de un comando con la entrada estándar del siguiente. sort ordena las líneas para que las idénticas queden adyacentes:

grep '^OPEN ' observations.txt | sort

Ahora las líneas repetidas están agrupadas. uniq elimina las líneas idénticas adyacentes, por lo que debe ir después de ordenar cuando los duplicados puedan estar separados:

grep '^OPEN ' observations.txt | sort | uniq

Salida esperada:

OPEN training-dns:5353 dns
OPEN training-ssh:2222 ssh
OPEN training-web:8080 http

Cada comando tiene una función: seleccionar registros, ordenarlos y reducir las repeticiones. Guarda el flujo resultante en un archivo de salida independiente:

grep '^OPEN ' observations.txt | sort | uniq > open-services.txt
cat open-services.txt

Deberías ver los mismos tres registros únicos. La redirección se aplica a la salida final de la tubería; las observaciones originales no se editan.

Cuenta resultados y separa la salida de errores

En este paso contarás los hallazgos seleccionados y distinguirás la salida normal de un mensaje de error.

Parte del espacio de trabajo compartido:

cd /home/labex/project

wc cuenta texto. Su opción -l cuenta las líneas terminadas con un salto de línea. Como el archivo guardado tiene un hallazgo por línea, el recuento es el número de registros distintos de servicios abiertos:

wc -l open-services.txt

La salida indica 3 y el nombre del archivo; el espaciado puede variar. Una tubería proporciona texto sin un argumento de nombre de archivo, lo que facilita guardar solo el recuento:

cat open-services.txt | wc -l > finding-count.txt
cat finding-count.txt

El valor es 3, posiblemente con espacios iniciales.

Los programas normalmente envían los datos útiles a la salida estándar y los diagnósticos al error estándar. El > del shell redirige la salida estándar; 2> redirige el error estándar. Para observar la diferencia, intenta leer un archivo ausente deliberadamente y guarda su diagnóstico. Se espera que el siguiente comando falle porque missing-observations.txt no existe; es una demostración intencionada, así que continúa después:

cat missing-observations.txt 2> read-error.txt

No debería aparecer nada en pantalla porque el mensaje de error fue a read-error.txt. Inspecciona ese diagnóstico separado:

cat read-error.txt

El mensaje nombra missing-observations.txt y dice que no puede leerse porque no existe. Tus hallazgos reales siguen separados:

cat open-services.txt

Los tres registros válidos permanecen intactos. Mantener separados los diagnósticos evita confundir un mensaje de error con un hallazgo de una herramienta.

Resumen

Leíste texto con cat, less, head y tail; seleccionaste líneas con grep; compusiste una tubería con sort y uniq; contaste registros con wc y utilizaste redirecciones de salida y error. Estas habilidades ayudan a transformar salidas extensas de herramientas en resultados pequeños que se pueden inspeccionar.