[BlackOwl] Herramienta OSINT | Busqueda de Subdominios

  • 0 Respuestas
  • 2110 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado qwartz

  • *
  • Underc0der
  • Mensajes: 20
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

Black Owl


Buenas a todos! Les comparto una nueva herramienta creada por @qqwaszx_ para la recolección de información de sitios web, dominios, emails, etc. Esta escrita en python 2.7 y basada en operative-framework.

La herramienta contiene los siguientes modulos:
  • CMS Gathering - Detecta CMS (wordpress, joomla, magento, ...)
  • Email to Domain - Obtiene dominios registrados con 'x' email
  • Hackedmail - Verifica si se a hackedo 'x' email
  • IP Geolocation - geolocalizacion de IP
  • Namech_k - Obtiene informacion sobre un nombre de usuario
  • Subdomain Search - Busqueda de subdominios
  • Whois Domain - Se obtiene informacion de un dominio

Instalación: (GNU/Linux, OSX)
Código: (bash) [Seleccionar]
$ git clone https://github.com/qqwaszx/blackowl.git ; cd blackowl
$ pip install -r requirements.txt
$ python main.py

# Para ver los comandos disponibles ejecutamos:
: blackowl > help

Uso:
Mostrare el uso del modulo subdomain_search, que creo es uno de los mas interesantes, una vez iniciada la herramienta ejecutamos lo siguiente:
Código: (bash) [Seleccionar]
# si presionamos TAB se autocompleta el nombre del modulo o comandos disponibles
: blackowl > use subdomain_search

# Se carga el modulo, para ver las opciones ejecute:
: blackowl(core/modules/subdomain_search) > show_options
 -  domain     : No value [Is required]
 !  limit_search : No value

# a continuación veremos que es necesario dar valor a la opción domain y limit_search:
: blackowl(core/modules/subdomain_search) > set domain=google.com
: blackowl(core/modules/subdomain_search) > set limit_search=30

# Ahora ya podemos correr el modulo
: blackowl(core/modules/subdomain_search) > run
[...]

# Se pueden exportar los resultados obtenidos
: blackowl(core/modules/subdomain_search) > export
: blackowl(export file name ?) > file.txt
[+] Writing 'file.txt' file.
[+] File writed : export/file.txt


De esta manera he obtenido 30 subdominios de 'x' dominio, cabe mencionar que si no se da valor a la opción limit_search, la herramienta devolvera todos los subdominios que encuentre.

Crear mi modulo:
Esta herramieta ofrece la posibilidad de crear y agregar nuestros propios modulos, esto de la siguiente manera:

Código: (bash) [Seleccionar]
: blackowl > new_module
: blackowl(New module name ?) > mi_modulo
: blackowl(New module description ?) > este es mi primer modulo
[+] Module has been written core/modules/mi_modulo.py
 -  Now add argument on 'self.require' & write your code in 'def main()'.

Ahora deberemos editar el modulo (core/modules/mi_modulo.py), de la siguiente manera:
En este caso estoy utilizando VIM, pero usted puede utilizar cualquier otro editor de codigo
Código: [Seleccionar]
vim core/modules/mi_modulo.py
A continuación veremos el codigo del modulo:
Código: (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#description:este es mi primer modulo.

from core.lib import colors
from core.lib import completer
import readline

#colors
C = colors.Palette()


class module_element(object):

    def __init__(self):
        self.title = "Example\n"
        self.require = {
            'enterprise':{'value':'', 'required':'yes'},
            'function':{'value':'', 'required':'no'}
        }

        self.export = []

        #completer
        comp = completer.Module(self.require)
        readline.parse_and_bind("tab: complete")
        readline.set_completer(comp.complete)


    def get_options(self, name):
        if name in self.require:
            return self.require[name]['value']
        else:
            return False


    def main(self):
        print "{}{} Running module: {}{}".format(C.OK, C.GREEN, self.title, C.END)

        # ------------------------------- #
        # delete this and write your code #
        # ------------------------------- #
        enterprise = self.get_options('enterprise')
        function = self.get_options('function')
        print " Enterprise: {}\n Function: {}\n\n Passwords fond:".format(enterprise, function)
        passwords = [
                'user:123456 :: pass:12345',
                'user:qwerty :: pass:uiop',
                'user:qwaszx :: pass:xzsawq'
        ]
        for line in passwords:
            print " - " + line
            self.export.append(line)
        print "\n Please execute: export"

Ahora editamos el codigo segun sean nuestras necesidades:
Código: (python) [Seleccionar]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#description:este es mi primer modulo.

from core.lib import colors
from core.lib import completer
import readline

#colors
C = colors.Palette()


class module_element(object):

    def __init__(self):
        self.title = "Example\n"
        self.require = {
            # aqui se definen las opciones p. ej. dominio, email, website, etc.
            'user':{'value':'', 'required':'no'}
        }

        self.export = []

        #completer
        comp = completer.Module(self.require)
        readline.parse_and_bind("tab: complete")
        readline.set_completer(comp.complete)


    def get_options(self, name):
        if name in self.require:
            return self.require[name]['value']
        else:
            return False


    def main(self):
        print "{}{} Running module: {}{}".format(C.OK, C.GREEN, self.title, C.END)
        # Aqui escribimos el codigo que queramos
        # Para obtener los valores de las opciónes usamos la funcion get_options()
        user = get_options('user')
        print "Name user: " + user


Ahora podemos guardar y ejecutar nuestro propio modulo :)


Aunque la herramienta aun tiene pocos modulos algunos de ellos son interesantes (hackedmail, subdomain_search), no hace falta decir que es nueva por lo que puede presentar fallas.

Les dejo el video de demostración de la herramienta, donde se muestra el uso de algunos de los otros modulos VIDEO


Espero les sea de ayuda. Saludos!