define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);{"id":31,"date":"2011-02-10T03:46:55","date_gmt":"2011-02-10T02:46:55","guid":{"rendered":"http:\/\/www.monovarlinux.org\/?p=31"},"modified":"2012-05-29T02:15:45","modified_gmt":"2012-05-29T01:15:45","slug":"31","status":"publish","type":"post","link":"http:\/\/www.monovarlinux.org\/?p=31","title":{"rendered":"Tormentas Broadcast (ARP Storm). Descubriendo el pc infectado"},"content":{"rendered":"<p>Hola.<\/p>\n<p>En este articulo les ense\u00f1ar\u00e9 como descubrir el dispositivo que tantas peticiones\u00a0 broadcast esta generando y tanto dolor de cabeza nos esta creando.<\/p>\n<p>No vamos a utilizar ning\u00fan software milagroso ni nada excepci\u00f3nal, nos valdremos de nuestro entorno bash, tcpdump y algo de ingenio con bash scripting&#8230;..<\/p>\n<p>1 &#8211; Nuestro primer objetivo es ver el tr\u00e1fico arp de nuestra red con tcpdump&#8230;<br \/>\n<!--more--><\/p>\n<blockquote><p><strong># tcpdump -i eth0 -n net 192.168.16.0\/24<\/strong><br \/>\n<!--more-->Ejecutaremos tcpdump para escuchar en la interfaz \u00bbeth0\u00bb y la red 192.168.16.0 con m\u00e1scara de subred 255.255.255.0&#8230;<\/p><\/blockquote>\n<blockquote><p>Seguidamente nos empezar\u00e1 a escupir resultados:<br \/>\n<!--more--> <strong>02:43:59.781831 arp who-has 192.168.16.18 tell 192.168.16.17<br \/>\n02:43:59.857333 arp who-has 192.168.16.18 tell 192.168.16.66<br \/>\n02:43:59.967977 arp who-has 192.168.16.18 tell 192.168.16.42<br \/>\n02:44:00.220114 arp who-has 192.168.16.18 tell 192.168.16.74<br \/>\n02:44:00.308751 arp who-has 192.168.16.13 tell 192.168.16.9<br \/>\n02:44:00.332418 arp who-has 192.168.16.13 tell 192.168.16.42<br \/>\n02:44:00.374803 arp who-has 192.168.16.13 tell 192.168.16.74<\/strong><br \/>\n<!--more--><\/p><\/blockquote>\n<p>Aqui tenemos una parte de la salida de tcpdump, con el que observamos varias peticiones ARP para averiguar la direcci\u00f3n MAC de las ips: 192.168.16.18 &amp; 192.168.16.13. Dichas peticiones generadas por distintos equipos dentro de la red.<\/p>\n<p>Hasta ahi estaria todo correcto y podriamos dejarlo funcional con lo anterior. Pero nosotros buscamos algo m\u00e1s de simplicidad en los resultados para poder detectar el malhechor dentro de nuestra red con m\u00e1s f\u00e1cilidad.<\/p>\n<p>Vamos a seguir utilizando tcpdump pero lo combinaremos con algo de bash script \u00absencillo y bonito bash scripting&#8230; :)\u00bb..<\/p>\n<p>2 &#8211; Evaluando los campos que nos interesan<\/p>\n<p>Esta es la primera linea del segmento de tcpdump publicado m\u00e1s arriba..<\/p>\n<blockquote><p><!--more--><br \/>\n<strong>02:43:59.781831 arp who-has 192.168.16.18 tell 192.168.16.17<\/strong><br \/>\n<!--more--><\/p><\/blockquote>\n<p>Nosotros buscamos obtener solamente la ip del que genera dicha solicitud ARP y que la solucitud sea solamente del tipo \u00bbwho-has\u00bb.<\/p>\n<p>Como podemos observar el que gener\u00e1 dicha consulta ARP en este caso es 192.168.16.17 (tell 192.168.16.17).<\/p>\n<p>Trabajaremos con \u00bb<strong>head<\/strong>\u00bb para realizar un m\u00e1ximo de registros a capturar..<\/p>\n<p>ej: head-50 # Guardara 50 registros..<\/p>\n<p>En todo momento tcpdump nos dar\u00e1 la ip del que origina la consulta ARP en \u00faltimo lugar en cada linea, con lo que podriamos quedarnos con el \u00faltimo valor de una forma sencilla&#8230;<\/p>\n<blockquote><p><!--more--><br \/>\n<strong>tcpdump -i eth0 -n net 192.168.16.0\/24 | head -50 |\u00a0 egrep &#8216;arp who-has&#8217; | awk &#8216; { print $NF }<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>&#8211; Con (<strong>egrep<\/strong> &#8216;arp who-has&#8217; mostramos solo los registros con el texto &#8216;arp who-has&#8217;<\/p>\n<p>&#8211; Con<strong> head -50<\/strong> mostramos solamente HASTA 50 registros.<\/p>\n<p>&#8211; Una vez tengamos solamente los registros con la petici\u00f3n arp who-has, mostramos el \u00fatimo campo (la ip que origina la consulta ARP).<\/p>\n<p>Con esto ya simplificariamos bastante la salida, con lo que solo nos mostraria las ips de nuestra red que generan la consulta ARP&#8230;(pego las 5 primeras lineas a modo de ejemplo)<\/p>\n<blockquote><p><!--more--><br \/>\n<strong>192.168.16.9<br \/>\n192.168.16.42<br \/>\n192.168.16.10<br \/>\n192.168.16.9<br \/>\n192.168.16.42<\/strong><br \/>\n<!--more--><\/p><\/blockquote>\n<p>De esta forma nuestro objetivo estaria \u00bbcasi\u00bb cumplido.<\/p>\n<blockquote><p><!--more--><strong>tcpdump -i eth0 -n net 192.168.16.0\/24 | head -50 | egrep &#8216;arp who-has&#8217; | awk &#8216; { print $NF } &#8216;<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>3 &#8211; Ordenar Resultados<\/p>\n<p>Podemos dar un paso m\u00e1s all\u00e1, podemos ordenar esos registros para una mejor localizaci\u00f3n. Podemos lograr ese objetivo con \u00bbsort\u00bb.<\/p>\n<p><!--more--><\/p>\n<blockquote><p><strong>tcpdump -i eth0 -n net 192.168.16.0\/24 | head -50 | egrep &#8216;arp who-has&#8217; | awk &#8216; { print $NF } &#8216; | head -50 | sort<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>4 &#8211; Eliminar registros repetidos<\/p>\n<p>Lo \u00faltimo que podriamos hacer para que sea realmente f\u00e1cil localizar un dispositivo generador de tr\u00e1fico ARP, seria eliminar las ips repetidas y mostrar cuantas veces se han repetido.<\/p>\n<p>Lo podemos hacer con <strong>uniq <\/strong>seguido del flag &#8216;<strong>-c<\/strong>&#8216;.<\/p>\n<p><strong>uniq<\/strong> elimina registros repetidos y con el flag <strong>-c<\/strong> podemos mostrar el n\u00famero de veces que se han repetido.<\/p>\n<p><!--more--><\/p>\n<blockquote><p>**especial atenci\u00f3n que estoy mostrando solamente 5 registros (head -5)<\/p>\n<p><strong>tcpdump -i eth0 -n net 192.168.16.0\/24 | head -5 | egrep &#8216;arp who-has&#8217; | awk &#8216; { print $NF } &#8216;|sort | uniq -c<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p><strong><br \/>\n<\/strong><\/p>\n<p>Con esto obtendriamos una salida similar a esta:<\/p>\n<blockquote><p><!--more--><strong>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode<br \/>\nlistening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes<br \/>\n1 192.168.16.17<br \/>\n1 192.168.16.26<br \/>\n2 192.168.16.89<br \/>\n1 192.168.16.9<br \/>\n135 packets captured<br \/>\n135 packets received by filter<br \/>\n0 packets dropped by kernel<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>Habriamos llegado hasta nuestro objetivo, ahora podemos dejar nuestro pc encendido un buen rato, para desvelar quien es el que genera tantas peticiones ARP&#8230;<\/p>\n<blockquote><p><!--more--><\/p>\n<p><strong>tcpdump -i eth0 -n net 192.168.16.0\/24 | head -1000 | egrep &#8216;arp who-has&#8217; | awk &#8216; { print $NF } &#8216;|sort | uniq -c<\/strong><\/p>\n<p><strong>*** Preste especial atenci\u00f3n. Mostraremos 1000 ips (head -1000).<\/strong><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>Imprimiendo hasta 1000 registros, podemos ver claramente que equipos estan generando tr\u00e1fico ARP a montones. Tardar\u00e1 un poco, tomens\u00e9 un buen caf\u00e9 y disfruten.<\/p>\n<p>Saludos.<\/p>\n<p>By\u00a0 ZaPa.<\/p>\n<p><strong>Fuentes:<\/strong><\/p>\n<p><a href=\"http:\/\/everythingsysadmin.com\/2004\/10\/whos-infected.html\">http:\/\/everythingsysadmin.com\/2004\/10\/whos-infected.html<\/a><\/p>\n<div class=\"be-social\" data-url=\"http:\/\/www.monovarlinux.org\/?p=31\" data-base=\"\" data-title=\"Tormentas Broadcast (ARP Storm). Descubriendo el pc infectado\" data-track=\"true\" data-via=\"\" data-show=\"{&quot;facebook&quot;:true,&quot;twitter&quot;:true,&quot;google&quot;:true,&quot;reddit&quot;:true,&quot;linkedin&quot;:true,&quot;meneame&quot;:true}\" ><h2 class=\"be-social-title\">Share<\/h2><\/div>","protected":false},"excerpt":{"rendered":"<p>Hola. En este articulo les ense\u00f1ar\u00e9 como descubrir el dispositivo que tantas peticiones\u00a0 broadcast esta generando y tanto dolor de cabeza nos esta creando. No vamos a utilizar ning\u00fan software milagroso ni nada excepci\u00f3nal, nos valdremos de nuestro entorno bash, &hellip; <a href=\"http:\/\/www.monovarlinux.org\/?p=31\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[],"_links":{"self":[{"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/posts\/31"}],"collection":[{"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=31"}],"version-history":[{"count":8,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":34,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions\/34"}],"wp:attachment":[{"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.monovarlinux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}