En ésta serie de entradas conoceremos funcionalidades y técnicas para poder aprovechar las ventajas de contar con bash durante el proceso de pentesting sumado a unas cuantas herramientas, todos desde la línea de comandos.

Conociendo Bash.

Personalizando nuestra shell.

Conceptos básicos de scripting.

Recolección de información.

Reconocimiento del target.

Identificación de vulnerabilidades.

Parte I - Web.

Parte II - Infraestructura.

Explotación de vulnerabilidades.

Ingeniería inversa.

Para seguir ésta serie necesitarán contar con una máquina con alguna distribución de linux (particularmente usaré kali sobre una máquina virtual) y otra máquina con windows xp o 7 para que cumpla el papel de target.





En cuanto a conocimientos previos, los post serán totalmente paso a paso con la descripción de cada acción realizada. De todos modos, si cuentan con alguna consulta, duda o discrepancia pueden pueden hacerla abajo en Comentarios que estaremos totalmente predispuesto a subsanarlas.





La serie estará basada en el libro “Penetration Testing with the Bash shell“ del autor Keith Makan de la editorial Packt Publishing, aunque habrá contenido extra que no está en el libro y otras cosas serán pasadas por alto.

Bash es un intérprete de comandos que permite al usuario dar instrucciones al sistema operativo e incluso scriptear desarrollado por Brian Fox presente en la gran mayoría de las distribuciones basadas en GNU/Linux.





La capacidad de bash, como lenguaje es algo reducida ya que sólo podemos scriptear bajo paradigma estructurado, sin embargo, si necesitamos más potencial, desde programas como nano, vi o emacs entre otros podemos utilizar otros lenguajes, como por ejemplo python que veremos más adelante.





Cada instrucción o comando en bash cuenta con ayuda y manual de instrucciones detallado. Estos podemos visualizarlos con comando --help o man comando

Como ya está escrito en muchos lugares los comandos más comunes para moverse entre directorios, mover archivos, listar o buscar contenido, crear directorios o archivos, les dejo dos vínculos donde podrán revisar esas instrucciones por si es que aun no las manejan bien.

top | grep bash

top > servicios.txt

Alias es la síntesis de una o más de una instrucción en un solo string que contendrá los comandos deseados. Veamos un ejemplo práctico, a la hora de actualizar nuestro SO, debemos correr los comandos update, upgrade y dist-upgrade, en lugar de correr una por vez, podemos crear un alias para que arroje las tres instrucciones con solo teclear actualizar o cualquier cosa que se les ocurra.

En la próxima entrada veremos expresiones regulares y algunos comandos para manejo de textos que nos ayudarán a que el procesar información sea más sencillo.

Dividiremos el contenido en ocho capítulos con varios posts dentro de cada uno:Una vez que ya conocemos los comandos, podemos utilizar tuberías para concatenar instrucciones, redireccionamientos y alias.Veamos de qué trata cada cosa:Tuberías una tubería es la redirección de un output para que otra instrucción realice una acción. Por ejemplo, si se deseamos ver si el proceso bash está corriendo podemos utilizar el siguiente comando:nos mostrará los procesos activos, mientras que con grep podemos buscar un string en el resultado, que en éste caso será bash.Redireccionamientos es trasladar el output de un lugar o estado a otro. Por ejemplo si deseamos almacenar en un archivo de texto los servicios que están corriendo actualmente podemos usar el comando:Para visualizar luego los procesos en ejecución podemos.Para continuar, debemos afianzar tres conceptos:es la entrada estándar, que representa los datos que necesita una aplicación para funcionar, es decir la información que se procesará.es la salida estándar , que representa, generalmente en pantalla, la instrucción con el dato procesado. En el ejemplo recién mencionado sería la impresión en pantalla del string Sniferl4bs.es la forma en que un programa informa los problemas que pueden encontrarse al ejecutar el stdout. Al utilizar stderr, logramos que se omitan los error al representar en pantalla la salida estándar. En la práctica, generalmente se arrojan con a /dev/null con el comando instrucción 2> /dev/null¿Cómo se hace? A continuación les dejo donde está muy bien explicado, de todos modos si les quedan dudas o no les sale, pueden dejar sus inquietudes en los comentarios.Saludos.@balderramaeric