¿Qué es NGREP y cómo usarlo??

¿Qué es NGREP y cómo usarlo??
A pesar de que Tshark y TCPDump son las herramientas de olfateo de paquetes más populares que profundizan en el nivel de bits y bytes del tráfico. NGREP es otra utilidad NIX de línea de comandos que analiza los paquetes de red y los busca en un patrón regex dado.

La utilidad utiliza la biblioteca PCAP y GNU para realizar búsquedas de cadenas de regex. NGREP significa Network GREP que es similar a la utilidad GREP regular. La única diferencia es que el texto de NGREP analiza en paquetes de red mediante el uso de expresiones regulares o hexadecimales.

En este artículo, aprendemos sobre una utilidad de línea de comandos rica en funciones conocida como NGREP que es útil para un análisis rápido de PCAP y vertido de paquetes.

Introducción

NGREP proporciona capacidades similares a GREP para la tercera capa del modelo OSI, es decir, actualmente, la herramienta funciona con los protocolos IPv4/6, TCP, UDP, ICMPV4/6, IGMP. Por lo tanto, la utilidad reconoce varios protocolos, captura el tráfico en vivo y examina los archivos de PCAP capturados. La mejor ventaja de la utilidad NGREP es que un usuario de GREP regular puede usar su conocimiento de análisis de texto en NGREP.

Empezando

Actualice el repositorio de Ubuntu e instale la utilidad NGREP a través de la herramienta de administración de paquetes APT-Get:

ubuntu@ubuntu: ~ $ sudo apt-get actualización
ubuntu@ubuntu: ~ $ sudo apt-get install ngrep

La herramienta requiere que los privilegios de sudo ejecute comandos de inspección de paquetes profundos. Mientras que la sintaxis de la herramienta general es la siguiente:

ubuntu@ubuntu: ~ $ ngrep patrón/expresión

El patrones ¿Buscan los usuarios de expresiones regulares en un paquete de red?. El filtrar La opción indica Berkeley Packet Filter (BPF) que incluye una serie de palabras clave para especificar reglas de selección de paquetes. Las palabras clave incluyen protocolo, fuente o host de destino, y puertos, etc.

Capturar paquetes

Ninguna opción de filtro captura todos los paquetes de la interfaz predeterminada, por ejemplo, el siguiente comando capturará todos los paquetes de red de todas las interfaces.

ubuntu@ubuntu: ~ $ sudo ngrep

Para enumerar todas las interfaces disponibles, use el siguiente comando y presione la pestaña varias veces para emitir todas las interfaces:

ubuntu@ubuntu: ~ $ sudo ngrep -d [tab] [tab]
enp0s3 lo

Uso básico

La salida al comando anterior muestra cargas de detalles de paquetes en el terminal. NGREP ofrece una opción tranquila "-q" que consulta todas las interfaces y protocolos para una coincidencia de cadena específica, calma la salida e solo imprime detalles del encabezado de paquetes de la carga útil relevante.

ubuntu@ubuntu: ~ $ sudo ngrep -q
[sudo] Contraseña para Ubuntu:
Interfaz: ENP0S3 (10.0.2.0/255.255.255.0)
Filtro: ((IP || IP6) || (VLAN && (IP || IP6))))
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #1
... "7C.X] e.Nu ... m.'.Tú ... y ... tú.%Z ..
T 10.0.2.15: 35524 -> 142.250.180.46: 443 [AP] #2
... H ... '.@AQ?un.'K ..
T 142.250.180.46: 443 -> 10.0.2.15: 35524 [A] #4

El comando de arriba con la cadena 'http' muestra/captura paquetes con la cadena buscada.

ubuntu@ubuntu: ~ $ sudo ngrep -q 'http'

Agregue el indicador T en el comando anterior para imprimir una marca de tiempo con la información de coincidencia en el Yyyy/mm/dd HH: mm: ss.Uuuuuu formato. Del mismo modo, usando el T La bandera imprimirá el tiempo transcurrido entre los partidos inmediatos y las marcas de tiempo en +S.Formato uuuuuu.

ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
ubuntu@ubuntu: ~ $ sudo ngrep -qt 'http'
Interfaz: ENP0S3 (10.0.2.0/255.255.255.0)
Filtro: ((IP || IP6) || (VLAN && (IP || IP6))))
Partido: http
T +24.714768 10.0.2.15: 48096 -> 142.250.185.35:80 [AP] #1453
Post /gts1o1core http /1.1 ... anfitrión: OCSP.PKI.Googs ... agente de usuario: Mozilla/5.0

Utilizar el -W opción con un byline Indicador para imprimir la salida en un formato fácil de entender y legible.

ubuntu@ubuntu: ~ $ sudo ngrep -q -wbyline 'http'
T 10.0.2.15: 48570 -> 142.250.185.35:80 [AP] #589
Post /gts1o1core http /1.1.
Anfitrión: OCSP.PKI.salpicadura.
Agente de usuario: Mozilla/5.0 (x11; Ubuntu; Linux x86_64; RV: 79.0) Gecko/20100101 Firefox/79.0.
Aceptar: */*.
Aceptar el idioma: en-us, en; q = 0.5.
Aceptación de aceptación: GZIP, desinflar.
Tipo de contenido: Aplicación/OCSP-Request.
Contenido-longitud: 83.
Conexión: mantener alive.

NGREP guarda el tráfico de red capturado en un formato PCAP que se puede cargar a Wireshark para un análisis de paquetes más profundo. Use la opción -o para escribir la salida buscada en un archivo PCAP:

ubuntu@ubuntu: ~ $ ngrep -o http_capture.PCAP -QT 'HTTP'

Al igual que cualquier otra herramienta de olfateo de red, NGREP permite leer el tráfico de red guardado de modo que la opción -qt ayuda a filtrar el tráfico capturado en lugar de una interfaz.

ubuntu@ubuntu: ~ $ ngrep -i http_capture.PCAP -QT 'HTTP'

Filtros BPF

BPF incluye una sintaxis rica para filtrar paquetes según la dirección IP, los puertos y los protocolos. Los siguientes comandos busquen en el tráfico los paquetes TCP y UDP:

ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'tcp'
ubuntu@ubuntu: ~ $ ngrep -w byline 'http' 'UDP'

Para filtrar todos los paquetes en la interfaz ENP0S3 para el puerto 80, ejecute el siguiente comando:

ubuntu@ubuntu: ~ $ ngrep -d enp0s3 -w byline puerto 80

Del mismo modo, use los comandos dados a continuación para que coincidan con los encabezados que contienen cadena HTTP desde el destino y el host de origen:

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'dst host 172.217 '
ubuntu@ubuntu: ~ $ ngrep -q 'http' 'src host '10.0 '

Por último, el siguiente comando con un filtro de host coincide con todos los encabezados del "10.0.Dirección IP de 2 ".

ubuntu@ubuntu: ~ $ ngrep -q 'http' 'host 10.0.2 '

Búsqueda de paquetes de red basados ​​en cadenas

La utilidad NGREP puede combinar los comandos anteriores para buscar paquetes TCP en el puerto 80 para una cadena específica de 'agente de usuario'.

ubuntu@ubuntu: ~ $ sudo ngrep -d enp0s3 -w byline -i "agente de usuario:" TCP y Port 80

dónde -i La opción ignora el caso de la expresión regex.

Del mismo modo, el comando a continuación muestra todos los paquetes en el puerto 80 con la cadena Get o Post.

ubuntu@ubuntu: ~ sudo ngrep -d enp0s3 -i "^get |^post" tcp y puerto 80
Interfaz: ENP0S3 (10.0.2.0/255.255.255.0)
Filtro: (tcp y puerto 80) y ((ip || ip6) || (vlan && (ip || ip6))))
Partido: ^Get | ^Post
#######
T 10.0.2.15: 59876 -> 34.122.121.32:80 [AP] #7
Get / http / 1.1 ... Host: comprobación de conectividad.ubuntu.com ... aceptar:
###########
T 10.0.2.15: 48634 -> 34.107.221.82:80 [AP] #18
Obtener /éxito.txt http/1.1 ... Anfitrión: Detectportal.Firefox.com ... agente de usuario: Mozilla/5.0
#######

Conclusión

El artículo presenta NGREP, una herramienta de olfateo de paquetes que analiza el tráfico utilizando expresiones regulares. Discutimos y cubrimos todos los conceptos básicos para avanzar en los comandos y opciones NGREP que facilitan los administradores de la red en sus tareas diarias.