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.



