Si eres pentester o trabajas en auditorías de seguridad, sabrás lo importante que es contar con herramientas que optimicen tu flujo de trabajo y te permitan mantener un registro claro de tus actividades. Hoy vamos a ver Oh My Pentest Report, un tema personalizado para Oh My Zsh que hice hace unos meses con el fin de mejorar mi día a día.

¿De qué trata?

Oh My Pentest Report es un tema de Oh My Zsh creado con el objetivo de ofrecer un prompt que no solo sea visualmente claro, sino que también incluya funcionalidades prácticas para el día a día, como el registro automático de comandos y la visualización dinámica de información relevante. Entre sus características más destacadas están:

  • Visualización de fecha y hora: Muestra la fecha y hora actuales, ideal para documentar cuándo se ejecutaron ciertas pruebas. También es útil para saber cuántos minutos ha tardado un comando en ejecutarse.
  • Dirección IP dinámica: Permite mostrar la IP de una interfaz específica (como tun0 para VPNs), una IP configurada manualmente o incluso la IP pública (útil para auditorías externas). La IP de la interfaz es comprobada cada 10 segundos por si cambia y la IP pública cada minuto.
  • Estado de comandos: Indica si el último comando fue exitoso (símbolo blanco ❯) o falló (símbolo rojo ❯), y muestra un símbolo especial (# en amarillo) si eres root, de nuevo, se vuelve rojo si el último comando falló.
  • Registro de comandos: Guarda automáticamente todos los comandos ejecutados en un archivo ~/.pentest_history con el formato FECHA - IP - COMANDO, así podrás saber todos los comandos que has ejecutado junto a su fecha, hora e IP, este último en caso de que la hayas configurado, sino, se pondrá la IP por defecto de la interfaz eth0.
  • Prompt de dos líneas: Por defecto, el prompt es de dos líneas, debido a la gran longitud que puede tener el prompt si está todo habilitado. Aún así, puedes modificar el tema de manera sencilla para usar una sola línea.
  • Soporte para Git: Cuando accedes a un directorio donde hay un repositorio de Git, automáticamente se añade al prompt la rama en la que estás trabajando y un símbolo de asterisco si hay archivos editados sin commits.

A continuación, puedes ver una captura de pantalla que muestra cómo luce el prompt con todas sus funcionalidades activadas:

Prompt de Oh My Pentest Report con todas las funcionalidades activadas

Además, puedes editar el valor por defecto de algunas configuraciones editando el propio archivo del tema:

Configuración por defecto del tema Oh My Pentest Report

Instalación del tema

En el caso de que no tengas ZSH instalada y/o puesta como shell por defecto, puedes hacer lo siguiente:

sudo apt install zsh -y
chsh -s $(which zsh)

Si ya tienes ZSH pero no tienes Oh My Zsh, puedes instalarlo de la siguiente manera:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Una vez tengas ambos es hora de instalar el tema de Oh My Pentest Report, el proceso es muy sencillo y directo:

# Clonar e instalar el tema
git clone https://github.com/sikumy/ohmy-pentest-report/ $ZSH_CUSTOM/themes/ohmy-pentest-report
mv $ZSH_CUSTOM/themes/ohmy-pentest-report/ohmy-pentest-report.zsh-theme ~/.oh-my-zsh/themes/ohmy-pentest-report.zsh-theme
# Configurar .zshrc
sed -i 's/ZSH_THEME=".*"/ZSH_THEME="ohmy-pentest-report"/' ~/.zshrc
# Añade el siguiente comando a la .zshrc. Tienes que agregarlo antes de la línea "source $ZSH/oh-my-zsh.sh"
zstyle ':omz:alpha:lib:git' async-prompt force
# Recargar la terminal
exec $SHELL

Y con esto ya estaría todo listo, tendrías el tema activo en tu terminal.

Comandos disponibles

Por defecto, la visualización de la IP y la fecha/hora están desactivadas para mantener el prompt limpio, pero puedes activarlas fácilmente con comandos específicos. Aquí tienes un resumen de los comandos más útiles:

  • Activar/Desactivar Fecha y Hora
enabledate  # Muestra la fecha y hora en cian
disabledate # Oculta la fecha y hora
  • Activar/Desactivar IP
enableip   # Muestra la IP configurada
disableip  # Oculta la IP
  • Configurar la IP
setip 192.168.1.100 # IP estática
setip eth0 # IP de interfaz
setip public # IP pública (se actualiza cada minuto, puedes modificar este tiempo en el tema)
  • Activar/Desactivar todo
enableall  # Activa IP y fecha/hora
disableall # Desactiva IP y fecha/hora

Registro de comandos (~/.pentest_history)

Como se ha mencionado antes, una de las características más útiles de Oh My Pentest Report es su sistema de registro automático de comandos. Cada comando ejecutado se guarda en el archivo ~/.pentest_history con el formato FECHA - IP - COMANDO. Por ejemplo:

28/10/23 16:38 - 192.168.1.100 - nmap -sV target.com

Como se ha dicho, tener este registro es muy útil para saber exactamente qué comandos ejecutaste, desde qué IP y en qué momento.

Personalización

Si quieres ajustar el formato de la fecha, los símbolos del prompt o los colores, puedes editar directamente el archivo ohmy-pentest-report.zsh-theme. Por ejemplo:

  • Formato de Fecha: Puedes modificar la función get_datetime para cambiar cómo se muestra la fecha y hora.
  • Símbolos: Puedes cambiar los símbolos de comando exitoso (cmd_symbol_success), fallido (cmd_symbol_fail) o usuario root (cmd_symbol_root) y usuario root fallido (cmd_symbol_root_fail) editando sus respectivas funciones.
  • Colores: También puedes ajustar los códigos de color para que el prompt se adapte a lo que te guste.

Conclusión

En conclusión, Oh My Pentest Report es un tema que hice para mejorar mi trabajo diario. El prompt limpio, sus funciones prácticas y su registro automático de comandos, hacen que sea perfecto para tener una organización sobre las actividades realizadas en una auditoría.

Podéis encontrar el tema en el siguiente repositorio, se agradece cualquier estrellita ⭐:

Cualquier Pull Request con mejoras es bienvenido :)

Dicho esto, Happy Hacking!