Legion se basa en la Metodología de Pentesting que puedes encontrar en book.hacktricks.xyz.
Legion es una herramienta que utiliza varias herramientas open-source muy conocidas para enumerar de forma automática, semiautomática o manual los servicios más frecuentes que se ejecutan en las máquinas que podrías necesitar para hacer pentesting.
Básicamente, el objetivo de Legion es extraer toda la información que pueda de cada servicio de red abierto, para que no tengas que escribir y ejecutar los mismos comandos en un terminal cada vez que encuentres ese servicio. Algunas acciones son repetidas por más de una herramienta, esto se hace para estar seguros de que toda la información posible es extraída correctamente.
Instalación
Instalación de Legion
git clone https://github.com/carlospolop/legion.git /opt/legion
cd /opt/legion/git
./install.sh
ln -s /opt/legion/legion.py /usr/bin/legion
Para los servicios de pentesting de Oracle debes instalar manualmente algunas dependencias: Ver aquí.
Docker
Para tener una buena experiencia con Legion también puedes construir una imagen de contenedor usando docker
o podman
, , simplemente escribiendo los siguientes comandos:
docker build -t legion .
Y arrancar el contenedor:
docker run -it legion bash
Tendrás una imagen de contenedor de legion lista para usar (Para ejecutar legion dentro del contenedor ejecuta ./legion.py
).
Uso de Legion
Protocolos admitidos
Puedes obtener una lista utilizando el comando protos
Fuerza bruta
Todos los protocolos incluidos en Legion que pueden ser forzados, pueden ser forzados usando Legion. Para ver si un servicio puede ser forzado (fuerza bruta) y qué línea de comandos se utilizará para hacerlo (por defecto se implementa “hydra”, si hydra no está disponible se utilizará metasploit o nmap) establece el protocolo y la intensidad a “3”.
Ejemplo de fuerza bruta ssh:
Comandos internos
Utiliza el comando interno help
para obtener información sobre lo que hace cada comando.
Escaneo automático
Simplemente lanza el comando interno startGeneral
y el ‘General‘ comenzará a escanear puertos y servicios automáticamente.
Escaneo semiautomático
Puedes configurar todas las opciones correctamente y lanzar varios comandos para escanear un servicio. Puedes hacer esto usando el comando run
.
Escaneo manual
Puedes ejecutar sólo un comando utilizando exec <nombre>
. Por ejemplo:
exec http_slqmap
Algunos servicios tienen comandos bajo demanda, estos comandos sólo pueden ser ejecutados usando este comando interno (exec
).
Opciones (comando Options)
Dominio (domain)
Establece el dominio del DNS o del usuario que desea utilizar
Extensiones (extensions)
Lista separada por comas de posibles extensiones (para forzar archivos en un servidor web)
Host
Es el host que se quiere atacar (IP y dominios válidos)
Ejemplo:
set host 127.0.0.1
set host some.domain.com
Intensidad (intensity)
Hay 3 intensidades:
- Comprobaciones básicas ejecutadas
- Ejecución de todas las comprobaciones (por defecto)
- Fuerza bruta (comprobación de disponibilidad)
IPv6
Dirección ipv6 de la víctima, podría ser útil para algunos comandos
notuse
Puedes establecer una lista (separada por comandos) de comandos que no deseas utilizar. Por ejemplo, si no quieres que se ejecuten módulos de metasploit:
set notuse msf
Contraseña (password)
Establece aquí (password) la contraseña del nombre de usuario que deseas utilizar.
ruta (path)
Ruta del archivo del servidor web
plist
Establece aquí la ruta a una lista de contraseñas (por defecto LEGION tiene su propia lista)
Puerto (port)
El puerto donde se ejecuta el servicio. Si es “0”, se utilizará el puerto por defecto del servicio (puede ver esta información utilizando info
)
proto
Es el protocolo que se quiere atacar
Ejemplo:
set proto http
reexec
Establece True
si deseas que los comandos ya ejecutados se vuelvan a ejecutar (por defecto está establecido en False).
ulist
Establece un valor aquí si quieres forzar una lista de nombres de usuario (por defecto LEGION tiene su propia lista de nombres de usuario)
nombre de usuario (username)
Establece el nombre de usuario que desea utilizar/forzar bruta (por defecto para forzar bruta se utiliza una lista de usuarios).
verbose
Si es True
la salida del comando se mostrará tan pronto como termine. Si es False
no se mostrará.
Si es True
la salida de info
mostrará donde se usa cada parámetro, por ejemplo:
Directorio de trabajo (workdir)
Es el directorio donde se almacena la información de la víctima. Por defecto es $HOME/.legion
legion (este enlace se abre en una nueva ventana) por carlospolop (este enlace se abre en una nueva ventana)
Automatic Enumeration Tool based in Open Source tools