Grep — Búsqueda, Filtrado y Extracción de Texto
Búsqueda de patrones con grep: verificación de servicios, extracción de URLs/hrefs, contextos -A/-B/-C, credenciales en texto plano y pipelines con cut/sort/uniq/wc.
1. Operational Scope & Technical Objective
grep selecciona líneas que casan con un patrón (regex BRE/ERE) y es la navaja de la recon: verificar servicios a la escucha, extraer URLs y endpoints de HTML, filtrar credenciales en claro en código, y combinar con cut/sort/uniq/wc para convertir montañas de logs en una lista accionable. Su variante -o extrae solo la parte que casa, esencial para construir listas de hosts.
2. High-Impact Syntax & Command Cheatsheet
# Verificar que un servicio corre y escucha
netstat -antp | grep apache
# Cortar por delimitador, filtrar y ordenar (extracción de dominios de un HTML)
grep "href=" index.html | cut -d "/" -f 3 | grep "\\." | cut -d '"' -f 1 | sort -u
# Extraer strings legibles de un binario (buscar paths, credenciales, claves)
strings <file_name> | grep <searched text>
# Todas las líneas que contienen una cadena
grep "href=" index.html
# Buscar en el historial de comandos
history | grep phrase_to_search_for
# Regex con -o (solo el match) + cut + sort, volcado a fichero
cat index.html | grep -o 'http://\[^"\]\*' | cut -d "/" -f 3 | sort -u > list.txt
# extrae los http://... de los hrefs y deja los dominios únicos en list.txt
# Credenciales en texto plano (caza en código y configs)
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename] # 5 líneas de contexto alrededor de cada hit
# Búsqueda y procesado básico
grep bob wordlist.txt # líneas con 'bob'
grep -v e wordlist.txt # líneas que NO contienen 'e' (-v)
grep error /var/log/*.log # 'error' en todos los logs
grep error -B 3 -A 2 /var/log/*.log # -B líneas antes del hit, -A después
# Ordenar y deduplicar (uniq solo elimina adyacentes -> ordenar primero)
sort random.txt # orden alfabético
sort -nr random-numbers.txt # -n numérico, -r descendente
sort random-words.txt | uniq # salida alfabética sin duplicados
# Contar
wc words.txt # líneas, palabras y bytes del fichero
grep bob words.txt | wc -l # nº de ocurrencias de 'bob'
3. Real-World Offensive/Defensive Scenarios
Enumeración de hosts/endpoints desde una página. El pipeline grep -o 'http://...' | cut -d "/" -f 3 | sort -u reconstruye el dominio/IP y los recursos que una app enlaza: subdominios, CDNs y rutas internas que el sitemap no lista.
Caza de credenciales embebidas. grep -R -i -n "password\|passwd\|secret\|api_key" /var/www localiza configs con credenciales en claro; strings <binario> | grep hace lo mismo contra binarios estáticos (tokens, rutas, buckets).
Log analysis (Blue Team). grep -B/-A da el contexto de un evento (IP origen, payload) sin abrir el fichero completo; grep error -B 3 -A 2 /var/log/*.log es el primer triage de un incidente. Combinar con sort | uniq -c | sort -nr prioriza los atacantes más persistentes.
Nota de rendimiento. Para árboles grandes usa grep -R (recursivo) o -l (solo nombres de fichero); en binarios, strings | grep evita falsos negativos por datos no imprimibles.