Docly Child

3.2.3.1. Recon-ng

Recon-ng es una herramienta puramente modular desarrollada por lanmaster53. Esta herramienta utiliza módulos escritos en Python, tanto en versión 2 como en 3, y viene de serie en casi todas las distribuciones de Kali Linux desde hace años pero sigue siendo una muy buena opción, pues los módulos permiten hacer uso de APIs y servicios de otras herramientas y aplicaciones webs que trabajan de forma autónoma y son muy específicos.

En versiones anteriores esta herramienta incorporaba de serie la mayoría de módulos, pero en la actualidad el mantenimiento de los módulos se ha desvinculado del mantenimiento de la aplicación (por el cambio de versión de Python), que ahora solo viene con la estructura básica para descargar y hacer uso de los módulos y administrar la información obtenida en formato de tablas.

La información del proyecto, instalación y uso puede encontrarse en: https://github.com/lanmaster53/recon-ng. Las siguientes instrucciones de líneas de código permiten obtener información de la versión e iniciar la herramienta (la versión es importante para ver si la herramienta está actualizada respecto a la información de GitHub). 

				
					recon-ng --version
recon-ng

				
			
Comprobación versión e inicio de recon-ng

Nota: Se recomienda hacer uso de la herramienta a través de instrucciones, no de forma directa a través de la consola de línea de comandos.  El sistema es muy similar a Metasploit.

Una vez iniciada la herramienta, la siguiente instrucción de ayuda (help) nos permite obtener la lista de comandos. Aquí se van a explicar los más útiles: show, keys, marketplace, modules…. Cada uno de los comandos permite definir una serie de opciones y parámetros para su uso.

				
					[recon-ng][default] > help
				
			
Sistema de comandos de recon-ng

Antes de ver como se instala y se usa un módulo (pues recon-ng no viene con módulos instalados de inicio), es necesario comentar que la herramienta permite trabajar de forma organizada por proyectos y consultar la información generada a través de las claves de comando workspaces y db, aunque aquí no se van a mostrar estas opciones.

				
					[recon-ng][default] > workspaces 

<create|list|load|remove> [...]

[recon-ng][default] > db 

<delete|insert|notes|query|schema> [...]

				
			

También es bueno saber que la información obtenida a través de los módulos se guarda en un formato de tablas. En la información del módulo, se indica en que tabla se guardará esta información. Se puede ver el tipo de información que se almacena y el nombre de estas tablas mediante el comando show (volverá a mostrarse al final):

				
					[recon-ng][default] > show

<companies|contacts|credentials|domains|hosts|leaks|locations|netblocks|ports|profiles|pushpins|repositories|vulnerabilities>

				
			

Ahora sí, para ver los módulos disponibles y descargarlos, se debe usar el comando marketplace. Los módulos se organizan por tipos, así se puede ver a través del valor de la PATH, siendo la parte más a la derecha de la PATH el nombre del módulo. A la hora de usar los módulos o ver información acerca de ellos, no será necesario poner toda la PATH, con el nombre es suficiente. Los comandos más importantes permiten buscar de forma general o por palabra cable (search). Una búsqueda general permite observar todos los módulos así como información de su versión y su última actualización, y si están instalados.

				
					[recon-ng][default] > marketplace 

<info|install|refresh|remove|search>

[recon-ng][default] > marketplace search

				
			
Búsqueda genérica de todos los módulos recon-ng

Para visualizar información o instalar, serán los comandos info y install respectivamente, seguido del nombre del módulo. Como se ha comentado, en la información del módulo se especificara para que se usa y donde va a guardarse la información obtenida.

				
					[recon-ng][default] > marketplace info <modulo>
[recon-ng][default] > marketplace install <modulo>

				
			

Nota: Se pueden instalar todos los módulos con el comando marketplace install all.

Información e instalación de un módulo

Una vez instalados los módulos, para hacer uso de ellos debe emplearse el comando modules. La opción search y load permiten obtener el listado de módulos disponibles y cargarlo respectivamente usando el nombre. Una vez cargado el módulo, la instrucción info permite visualizar si requiere claves de API (Keys) y si se tiene que parametrizar (Options). En la imagen de muestra se ve que hay que incluir el parámetro SOURCE (sin valor de entrada):

				
					[recon-ng][default] > modules
 
<load|reload|search>

[recon-ng][default] > modules search 
[recon-ng][default] > modules load <modulo>
[recon-ng][default][modulo] > info 

				
			
Carga e información de módulo recon-ng

Si es necesario setear claves API de aplicaciones foráneas, para su gestión se utiliza el comando keys.

				
					[recon-ng][default] > keys 

<add|list|remove>

[recon-ng][default] > keys list
[recon-ng][default] > keys add <nombre_clave> <valor>

				
			
Añadir claves recon-ng

Finalmente, para hacer uso del módulo, se setean las opciones con la instrucción options set y se ejecuta las acciones de este con run:

				
					[recon-ng][default][modulo] > options set <opcion> <valor>
[recon-ng][default][modulo] > run

				
			
Ejecución de módulo recon-ng

Para ver la información recolectada hay que consultar las tablas. Para la gestión de tablas de usa el comando show, indicando posteriormente el tipo de tabla, de acuerdo a la información que proporciona el módulo.

				
					[recon-ng][default] > show <tabla>

<companies|contacts|credentials|domains|hosts|leaks|locations|netblocks|...>

				
			
Información en tablas recon-ng

Como puede intuirse, a pesar de los años sigue siendo una aplicación muy buena y existen muchos módulos a examinar que no pueden resumirse aquí. Para obtener otros ejemplos de módulos: