ngrep: un analizador de paquetes de red para Linux
Ngrep. ( network grep. es un analizador de paquetes de red simple pero potente. Es una herramienta similar a grep aplicada a la capa de red: coincide con el tráfico que pasa por una interfaz de red. Le permite especificar una expresión extendida regular o hexadecimal para que coincida con las cargas de datos (la información real o el mensaje en los datos transmitidos, pero no los metadatos generados automáticamente) de los paquetes.
Esta herramienta funciona con varios tipos de protocolos, incluidos IPv4/6, TCP, UDP, ICMPv4/6, IGMP y Raw en varias interfaces. Funciona de la misma manera que la herramienta de detección de paquetes tcpdump.
El paquete ngrep. está disponible para instalar desde los repositorios del sistema predeterminados en las distribuciones principales de Linux utilizando la herramienta de administración de paquetes como se muestra.
$ sudo apt install ngrep $ sudo yum install ngrep $ sudo dnf install ngrep
Después de instalar ngrep. puede comenzar a analizar el tráfico en su red Linux usando los siguientes ejemplos.
1.. El siguiente comando le ayudará a hacer coincidir todas las solicitudes de ping en la interfaz de trabajo predeterminada. Necesita abrir otra terminal e intentar hacer ping a otra máquina remota. La bandera-q le dice a ngrep. que trabaje silenciosamente, que no muestre ninguna información más que los encabezados de los paquetes y sus cargas útiles.
$ sudo ngrep-q ‘.’ Interfaz ‘icmp’. enp0s3 (192.168.0.0/255.255.255.0) filtro: (icmp) y ((ip || ip6) || (vlan && (ip || ip6))) coinciden:. I 192.168.0.104-> 192.168.0.103 8: 0] … ~ oG […. j …………………..! “# $% & ‘() * +,-./01234567 I 192.168.0.103-> 192.168.0.104 0: 0] … ~ oG […. j …………. ……….! “# $% & ‘() * +,-./01234567 I 192.168.0.104-> 192.168.0.103 8: 0] …. oG [….. …………………..! “# $% & ‘() * +,-./01234567 I 192.168.0.103-> 192.168.0.104 0: 0] …. oG [……………………….! “# $% & ‘() * +,-./01234567 freestar.config.enabled_slots.push
Puedes presionar Ctrl + C para terminarlo.
2.. Para hacer coincidir solo el tráfico que va a un sitio de destino en particular, por ejemplo ‘Google.com’. ejecute el siguiente comando e intente acceder a él desde un navegador.
$ sudo ngrep-q ‘.’ ‘host google.com’. interfaz: enp0s3 (192.168.0.0/255.255.255.0) filtro: (host google.com) y ((ip || ip6) || (vlan && (ip || ip6)) ) partido: . T 172.217.160.174:443-> 192.168.0.103:54008 [AP] ………………;. (… RZr .. $ …. s = ..l.Q + RU.4..gj.I, .l ..: {ya, …. C {5> [email protected] T 172.217.160.174:443-> 192.168.0.103:54008 [AP ] …………. l …….!, 0hJ …. 0.% F ..! … l | ……… PL..X … t..T.2DC ….. ..y … ~ Y; [email protected]
3.. Si está navegando por la web, luego ejecute el siguiente comando para monitorear qué archivos está solicitando su navegador :.
$ sudo ngrep-q ‘^ GET. * HTTP/1. [01]’. interfaz: enp0s3 (192.168. 0.0/255.255.255.0) filtro: ((ip || ip6) || (vlan && (ip || ip6))) coincidencia: ^ GET. * HTTP/1. [01] T 192.168.0.104:43040-> 172.217 .160.174: 80 [AP] GET/HTTP/1.1..Host: google.com..User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; texto ) .. Accept: */* .. Accept-Language: en, *; q = 0.1..Accept-Codificación: gzip, deflate, bzip2..Accept-Charset: us-ascii, ISO-8859-1, ISO-885 9-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, SO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16, windows-1250, windows-1251, windows-1252, windows-1256, windows-1257, cp437, cp737, cp850, cp852, cp866, x-cp866-u, x-mac, x-mac-ce, x-kam-cs, koi8-r, koi8-u, koi8-ru, TCVN-5712, VISCII, utf-8 ..Connection: keep-alive ….
4.. Para ver toda la actividad que cruza el puerto de origen o destino 25. ( SMTP. , ejecute el siguiente comando.
$ sudo ngrep port 25.
5.. Para monitorear cualquier tráfico de syslog basado en la red para detectar la aparición de la palabra “Error”. use el siguiente comando.
$ sudo ngrep-d any ‘error’ port 514
Es importante destacar que esta herramienta puede convertir los nombres de los puertos de servicio almacenados en “/etc/services ” (en sistemas similares a Unix como Linux) a los números de puerto. Este comando es equivalente al comando anterior.
$ sudo ngrep-d any ‘error’ port syslog
6.. También puede ejecutar ngrep contra un servidor HTTP. (puerto 80. , hará coincidir todas las solicitudes con el host de destino como se muestra.
$ sudo ngrep puerto 80. interfaz: eth0 (64.90.164.72/255.255.255.252) filtro: ip y ( puerto 80) #### T 67.169.59.38:42167-> 64.90.164.74:80 [AP] GET/HTTP/1.1..User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i 686) Opera 7.21 [en] .. Host: www.darkridge.com..Aceptar: text/html, application/xml; q = 0.9, application/xhtml + xml; q = 0.9, image/png, image/jpeg, image/gi f, image/x-xbitmap, */*; q = 0.1..Accept-Charset: iso-8859-1, utf-8, utf-16, *; q = 0.1..Accept-Encoding: deflate, gzip, x-gzip, identidad, *; q = 0..Cookie: SQ MSESSID = 5272f9ae21c07eca4dfd75f9a3cda22e..Cookie2: $ Versión = 1..Conexión: Keep-Alive, TE..TE: desinflar, gzip, fragmentado, identidad, remolques …. ##
Como puede ver en la salida anterior, todos los encabezados HTTP tr ansmission se muestran en su sangriento detalle. Sin embargo, es difícil de analizar, así que veamos qué sucede cuando aplica el modo de línea-W.
$ sudo ngrep-W puerto de línea 80. interfaz: eth0 (64.90.164.72/255.255.255.252) filtro: ip y (puerto 80) #### T 67.169.59.38:42177-> 64.90.164.74:80 [AP] GET/HTTP/1.1. Usuario-Agente: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera … Host: www.darkridge.com. Aceptar: text/html, application/xml; q = 0.9, application/xhtml + xml; q = 0.9 … Accept-Charset: iso-8859-1, utf-8, utf-16, *; q = 0.1. Aceptar codificación: deflate, gzip, x-gzip, identity, *; q = 0. Cookie: SQMSESSID = 5272f9ae21c07eca4dfd75f9a3cda22e. Cookie2: $ Versión = 1. Control de caché: sin caché. Conexión: Keep-Alive, TE. TE: desinflar, gzip, fragmentado, identidad, avances.
7.. Para imprimir una marca de tiempo. en forma de AAAA/MM/DD HH: MM: SS.UUUUUU. cada vez que un paquete coincide, use el indicador -t.
$ sudo ngrep-t-W byline port 80. interfaz: enp0s3 (192.168.0.0/255.255.255.0) filter : (puerto 80) y ((ip || ip6) || (vlan && (ip || ip6))) #### T 2018/07/12 16: 33: 19.348084 192.168.0.104:43048-> 172.217. 160.174: 80 [AP] GET/HTTP/1.1. Anfitrión: google.com. Usuario-Agente: Enlaces (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; texto). Aceptar: */*. Aceptar-Idioma: en, *; q = 0.1. Aceptar codificación: gzip, deflate, bzip2. Aceptar-juego de caracteres: us-ascii, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, utf-8. Conexión: mantener vivo.
8.. Para evitar poner la interfaz que se está monitoreando en modo promiscuo (donde intercepta y lee cada paquete de red que llega en su totalidad), agregue el indicador-p.
$ sudo ngrep-p-W byline port 80
9.. Otra opción importante es-N que es útil en caso de que esté observando protocolos sin formato o desconocidos. Le dice a ngrep. que muestre el número de subprotocolo junto con un identificador de un solo carácter.
$ sudo ngrep-N-W byline
Para obtener más información, consulte ngrep. página de manual.
$ man ngrep
ngrep Repositorio de Github: https://github.com/jpr5/ngrep
¡Eso es todo! Ngrep. ( network grep. es un analizador de paquetes de red que comprende la lógica del filtro BPF de la misma forma que tcpdump. Nos gustaría conocer su opinión sobre ngrep. en la sección de comentarios.