Hackeando con la línea de comandos. ¿Te atreves a un reto?

Te propongo un reto para probar tu destreza con la línea de comandos de GNU/Linux ¿Te atreves?

9b724-jqpoyye

El término “hackear” más que con la delincuencia informática, lo asocio a las ganas de aprender, al placer de retarte tu mismo y saber de qué eres capaz o de qué cosas puedes llegar a descubrir. Así que prepárate a “hackear” con la línea de comandos de GNU/Linux con este reto, en el que además puedes ganar un pequeño premio!

Desde la web de opensource.com he leido que en uno de sus artículos proponían un reto a sus lectores. Si no lo has leido te lo traigo por el blog, para ver si te animas. El reto tiene premio, pero da igual que ganes que no, o que estes leyendo esto fuera de plazo. Diviértete con el proceso de encontrar una solución al problema, diviértete hackeando, aprendiendo, investigando… ese es el buen hacker! 😉

El reto en cuestión lo puedes encontrar en el siguiente enlace:

Y consiste en lo siguiente. Tenemos un servidor web, y tenemos múltiples ataques de acceso al host via SSH. Mediante la utilidad Fail2Ban, conseguimos que esos atacantes no tengan acceso a nuestro servidor.

Y además podemos exportar, entre otros datos, las direcciones, IP de los atacantes junto con la horar y más. Y esto nos lo genera en este archivo que puedes descargar desde este enlace (son 6Mb de archivo)

El reto

El reto consiste en contar el número de correos electrónicos que se han enviado por cada dirección IP que ha intentado acceder al host mediante SSH, pero no con un script, sino que deberás hacerlo con varios comandos utilizando la opción de las “tuberías” o pipes en inglés, ya sabes este operador |

Es decir que debes crear un comando de una sola línea (eso sí como quieras de larga) utilizando las tuberías para entubar la salida de un comando a la entrada de otro y así conseguir el objetivo, que es contar cuantos accesos ha habido por cad IP. ¿está claro? ¿sencillo?

Ah! y como puntuación extra, que te dará más opciones de ganar, sería incluir el nombre del país de cada dirección IP.

Como digo, tienes más información en la web original donde se propone el reto. Tienes de margen hasta el día 31 de julio de 2015, pero siempre tendrás tiempo de intentarlo aunque ya se haya pasado la fecha. Lo divertido es retarse a uno mismo! Más información aqui:

Mis consejos (si me lo permites): que dividas el reto en partes afrontado cada parte por separado y viendo que te funcionan, después verás cómo unirlas todas. Y que primero pruebes con un archivo reducido de prueba, no con el archivo entero de 6Mb, si te funciona con un pequeño extracto de ese archivo tiene que funcionar en el archivo entero.

Como pequeña culturilla, apuntar que el uso de “tuberías” es algo heredado de Unix, y que fueron creadas por Malcolm Douglas McIlroy, al que debemos también muchas otras herramientas como diff, sort.

Ponte manos a la “shell” y trata de encontrar tu solución, seguro que puede haber muchas y muy diversas! Yo llevo un tiempo intentándolo, y tengo una que no termina de funcionar del todo, me faltan unos pequeños detalles…

Más que nunca, hoy te deseo… happy hacking!! 😉

EDITO (15/9/15): En este enlace tienes las opciones ganadoras, para que les eches un vistazo:

——————————————————————————–

11 pensamientos en “Hackeando con la línea de comandos. ¿Te atreves a un reto?

  1. Buenas victorhck!

    Me ha gustado mucho lo del reto ya que me encanta eso de que uno tenga que calentarse la cabeza buscándose la vida para poder solucionar un problema, necesidad, o como queramos llamarlo.
    Tengo un comando que, ejecutándolo, me sale esto (en total 5764 IP’s únicas):

    23 1.30.20.148
    1 1.34.33.136
    4 1.51.45.22
    1 1.62.253.11
    2 1.93.11.227
    4 1.93.16.11
    5 1.93.23.118
    1 1.93.24.85
    2 1.93.24.90

    ¿Es esto lo que se pide? Si es así, mañana ya intentare el extra de poner el país de procedencia de cada IP.

    Un saludo!!

  2. Ya he enviado mi comando. Aqui os le dejo para que os sirva de inspiración , espero.
    ___________________________________________________________________________
    cat log-full.txt | grep -v “SPAM” |grep “SSH: banned” |sed ‘s/”FW://g’ |sed ‘s/”,”/ /g’|awk ‘{ print $4}’ | sort -k1 |uniq -c | sort -k1 -n |awk ‘$2{ {print $1 “\t” $2 } system(“geoiplookup “$2″”)}’ |paste – – |awk ‘{suma +=$1 } BEGIN { print ” Nº conex.\tDireccion-IP”;} {print } END { print “suma=” suma “\n” “REPORTE FINALIZADO”}’ > salida.txt
    ____________________________________________________________________________
    Estoy seguro que se puede mejorar, así que a por ello.

      • Pues tienes razón , comando muy grande. Aquí os envío la versión final algo más pequeño y solo con tuberías
        _____________________________________________________________________________
        cat log-full.txt | grep -v “SPAM” |grep “SSH: banned” |sed ‘s/”FW://g’ |sed ‘s/”,”/ /g’|awk ‘{ print $4}’ | sort -k1 |uniq -c | sort -k1 -n |awk ‘$2{ {print $1 “\t” $2 } system(“geoiplookup “$2″”)}’ |paste – – | sed -n ‘w salida.txt’
        _____________________________________________________________________________

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s