theHarvester - Christian Martorella

Cosechando

 

Hoy hablaremos y aprenderemos a utilizar una gran herramienta creada por Christian Martorella, la cual sigue evolucionando desde que empezó allá por el 2014.

De una manera muy simple podremos recopilar información(emails,nombres,subdominios,ips y urls) sobre empresas desde múltiples fuentes públicas (google,duckduckgo,linkedin,...muchísimas, van aumentando)

Este post va dirigido para aquellas personas que quieren comprobar que no hay fuga de datos sobre sus empresas o dominios, es decir, por ejemplo hay mails que nunca deberían estar publicados para evitar ser objetivos de phising o ingeniería social, ataques que cada día están más trabajados.

Su instalación es muy sencilla, es más complejo según distro utilizada, instalar los requerimientos que la aplicación en sí. Por ejemplo, nuestra máquina de laboratorio va a ser un Debian 9 para que puedan ver dificultades que se puedan encontrar. También hay que decir que tenemos distribuciones de pentesting donde ya viene incluida.

Las dependencias serían

  • Python 3.7+
  • python3 -m pip install pipenv

De todas formas cuando lo arranquemos veremos que nos pide más dependencias

¿Por donde empezamos?


Está claro, instalando  python3.7+ . En nuestro Debian 9 tendremos que realizar los siguientes pasos:

    • Instalar los paquetes necesarios para construir la fuente de phyton.

sudo apt update

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev curl python3-pip

    • Descargarnos la última versión de python, yo suelo hacerlo en /tmp para que se borre cuando reinicio el equipo

curl -O https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz

    • Descomprimimos

tar -xf Python-3.7.7.tar.xz

    • Entramos en el directorio

cd Python-3.7.7

    • y arrancamos el configure para comprobar que todas las dependencias están satisfechas, además le pasaremos el parámetro --enable-optimizations el cual hará que el proceso tarde más pero optimizará el binario de Python

    ./configure --enable-optimizations

    • Una vez finalizado este proceso que tardará más o menos dependiendo del hardware lo construimos con

make -j 2

*Nota: la bandera -j será ajustada en función de tus cores, como nuestra máquina virtual de laboratorio tiene 2, hemos puesto 2, pero si tienes 8 poner 8 para que vaya más rápido.

    • Ya solo nos falta instalarlo, donde para no sobrescribir los binarios de python3 utilizaremos

sudo make altinstall

Perfecto, ya cumplimos todo lo necesario para instalar theHarvester, donde podemos utilizar git o bien descargarnos el zip. En este caso lo vamos hacer por zip por si alguien no está acostumbrado por git y le da algún fallo por versiones de curl o cualquier motivo.

Nos movemos al directorio donde queremos instalar,  por ejemplo, /opt sería una buena ubicación para este tipo de herramientas auto contenidas que no siguen estándares.

sudo curl -LO https://github.com/laramies/theHarvester/archive/master.zip

Descomprimimos

sudo unzip master.zip

Su instalación como veréis es descargarse el zip y descomprimir no tiene más, entramos dentro del directorio

cd theHarvester-master

Ahora tenemos dos opciones para arrancar la aplicación con Pipenv o sin él, en ambos casos es probable que os de error porque  falta algún módulo, cuando  instales ese módulo os pedirá otro hasta cumplir con todos, por lo tanto para evitar que os volváis locos ejecutar los siguientes comandos

sudo pip3.7 install --upgrade pip
sudo pip3.7 install uvloop pyyaml aiohttp dnspython shodan aiodns aiosqlite plotly netaddr pysqlite3

  • Con pipenv, dentro del directorio donde hemos instalado el programa realizamos los siguientes comandos

sudo python3.7 -m pip install pipenv

sudo pipenv install

pipenv shell

python3.7 theHarvester.py -h

  • Sin pipenv

python3.7 -m pip install -r requirements/base.txt

python3.7 theHarvester.py -h

Si habéis seguido hasta aquí el proceso observaréis uno de los muchos problemas que nos podemos encontrar, en este caso en Debian 9 construido desde las fuentes no va a encontrar el módulo sqlite3 por mucho que lo instalemos.

Para ello debemos recompilar utilizando

--enable-loadable-sqlite-extensions

pero antes instalar libsqlite3-dev

sudo apt install libsqlite3-dev

Por lo tanto nos dirigimos otra vez a

cd /tmp/Python-3.7.7/

y recompilamos con

./configure --enable-optimizations --enable-loadable-sqlite-extensions

Y volvemos a construir e instalar, ahora tardara muchísimo menos que la primera vez ya que mientras no reiniciemos puesto que estamos en /tmp solo tiene que añadir las extensiones de sqlite

make -j 2

sudo make altinstall

Ahora ya solo nos queda comprobar que ahora si arranca

cd /opt/theHarvester-master/

sudo python3.7 theHarvester.py -h

Tachán, aquí tenemos la ayuda

Como podemos ver la ayuda está muy bien explicada y ya podemos empezar a cosechar información. Vamos a ver un ejemplo sacando la información por consola del dominio hack.me para no mostrar información de más de otros dominios ya que este solo nos va a mostrar un host, con un límite de búsquedas de 1000 en la fuente pública google

sudo python3.7 theHarvester.py -d hack.me -l 1000 -b google

Vamos a realizar el mismo ejemplo pero además de verlo por consola, lo guardaremos en un xml y buscaremos en duckduckgo

sudo python3.7 theHarvester.py -d hack.me -l 1000 -b duckduckgo -f hackme.xml

Esto creará también un html llamado hackme.xml.html, si abrimos el html veremos los datos más bonitos

Esto es todo espero que se entretengan.

No utilicen nada de este post para hacer daño porque el karma está ahí...acechando en las sombras.

TL.

Gracias por leer nuestros posts.

2 Comentarios
  • fercho123
    Escrito a las 21:52h, 17 enero Responder

    Me sale un error distinto al que te salio :

    ollecting aiodns==3.0.0
    Downloading aiodns-3.0.0-py3-none-any.whl (5.0 kB)
    ERROR: Cannot install -r requirements/base.txt (line 19), -r requirements/base.txt (line 21), -r requirements/base.txt (line 7) and requests==2.27.1 because these package versions have conflicting dependencies.

    The conflict is caused by:
    The user requested requests==2.27.1
    censys 2.1.2 depends on requests>=2.26.0
    shodan 1.26.0 depends on requests>=2.2.1
    spyse-python 2.2.3 depends on requests~=2.26.0

    To fix this you could try to:
    1. loosen the range of package versions you've specified
    2. remove package versions to allow pip attempt to solve the dependency conflict

    ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
    ❯ python3.7 theHarvester.py -h
    Traceback (most recent call last):
    File "theHarvester.py", line 5, in
    from theHarvester import __main__
    File "/opt/theHarvester-master/theHarvester/__main__.py", line 11, in
    import ujson
    ModuleNotFoundError: No module named 'ujson'

    • TL
      Escrito a las 16:54h, 18 enero Responder

      Buenas tardes, Prueba a instalar el modulo ujson
      pip3.7 install ujson

Comenta la entrada