onion onion

Prevádzka skrytých služieb - Tor hidden services a.k.a. Darkweb


Nasledujúci obsah je určený skôr administrátorom a vyžaduje aspoň základnú znalosť linuxu.
Sieť Tor neposkytuje anonymitu iba užívateľom ale umožňuje aj anonymnú prevádzku tzv. Tor hidden services (skryté služby). K takejto službe sa program môže pripojiť iba cez tor proxy a jej doména má tvar:

xmh57jrzrnw6insl.onion (vyhľadávač Torch – indexuje iba cibuľové stránky)
.onion – neoficiálna pseudo-TLD (Top Level Domain), takéto zakončenie má každá skrytá služba Toru.

Výhody:
– anonymný hosting bez nutnosti poskytnutia IP adresy
– celá komunikácia ostáva chránená šifrovaním v Tore, žiadne riziko škodlivého Exit Nodu
– možnosť nakonfigurovať aj iné protokoly ako http, napríklad ssh
– vďaka Toru je zaistená ochrana voči niektorým typom DoS útokov
– skryté služby predstavujú rýchle a jednoduché riešenie ak chceme aby boli dosiahnuteľné aj vtedy ak sa nachádzajú za NAT-om alebo firewallom, napr. server v domácej LAN

Obsah:

  1. Detaily
  2. Inštalácia http servera + základné zabezpečenie pre Ubuntu/Debian
    1. Apache2
    2. Nginx
    3. Lighttpd
  3. Modifikácia torrc súboru Ubuntu/Debian
  4. Skryté služby na Whonixe
  5. Secure shell (ssh) a Tor
  6. Klientská autorizácia
  7. Vytvorenie prispôsobenej domény
  8. Nová generácia cibuľových služieb
  9. Onionscan


Detaily


Anonymná komunikácia medzi užívateľom a skrytou službou je možná vďaka tzv. rendezvous point (bodu schôdzky).
Služba musí najprv sieti Tor oznámiť svoju existenciu predtým než sa k nej niekto pripojí, preto si najprv v sieti náhodne zvolí niekoľko relays, vybuduje k nim okruhy (circuits) a požiada aby figurovali ako jej introduction points (IPs - úvodné body) tým, že im oznámi svoj verejný kľúč.

V ďalšom kroku skrytá služba skonštruuje tzv. deskriptor obsahujúci jej verejný kľúč a štatistiku všetkých IPs. Tento deskriptor sa nahrá do Distributed hash table (DHT), ktorá sa nachádza v Hidden service directory, je to vlastne iba klasický relay, ktorý je označený príznakom HSDir. Ak užívateľ vie adresu služby (16-miestna, odvodená od verejného kľúča) a snaží sa k nej pripojiť, musí najprv stiahnuť deskriptor z DHT, ak k takej adrese existuje, užívateľ má jej IPs a správny verejný kľúč.
Užívateľ potom vybuduje okruh (circuit) k náhodnému relay a zvolí si ho ako rendezvous point (bod schôdzky), ktorému oznámi jednorázové tajomstvo (cookie). Ak je bod schôdzky pripravený, užívateľ skonštruuje úvodnú správu (zašifrovanú kľúčom služby), ktorá obsahuje adresu bodu schôdzky a jednorázové tajomstvo a pošle ho jednému z IPs služby.

Služba potom dešifruje správu a vytvorí okruh k rendezvous point, ktorému pošle tajomstvo. Rendezvous point nakoniec informuje užívateľa o úspešnom pripojení a komunikácia môže začať.

pozn. Na rozdiel od spojenia klient-->internet (guard-->middle-->exit node) sa na spojení klient-->skrytá služba podieľa 6 nodov, 3 vybrané klientom, pričom konečný je práve   rendezvous point a 3 skrytou službou.
Zdroj - Torproject, opis protokolu cibuľových služieb, detailnejší výklad môžete nájsť v dokumente Tor design.

HTTP server Debian/Ubuntu + základné bezpečnostné kroky


Jednoduchá konfigurácia spočíva v spustení servera a modifikácie torrc súboru, ale ak skutočne záleží na anonymite a chceme zabrániť IP únikom je nutne uskutočniť aspoň tieto kroky:

– Bezpečnostné opatrenia ako pri normálnej prevádzke, tj. zaplátanie zraniteľností, pravidelné aktualizácie, zabezpečenie webových aplikácií, vyhýbanie sa SQL injection a podobným chybám, konfigurácia firewall, umiestnenie serveru za NAT alebo do DMZ…
– Treba si uvedomiť, že skrytá služba môže byť napadnutá rovnakými (väčšinou) technikami a prostriedkami ako na clearwebe (normálnom internete), útočníkovi stačí poznať .onion doménu, príkladom môže byť nedávny útok na sociálnu sieť BlackBook, ktorá sa nachádzala na adrese blkbook3fxhcsn3u.onion, (odkaz na únik - onion adresa)
– Server by mal načúvať iba na loopback adrese (najčastejšie 127.0.0.1 - localhost) a nie na 0.0.0.0 aby služba nebola dosiahnuteľná z normálneho internetu alebo z LAN
– Vypnúť listovanie v adresári (modul autoindex)
– Zabrániť zobrazovaniu chybových hlášok, statusu servera a chýb aplikácií (záleží na použitom jazyku)
– Odstrániť signatúry servera


Čo sa týka samotného toru, mal by byť ponechaný v móde ako klient, nie ako relay, pretože tie sú uverejňované, aj keď je tor dosť chytrý aby samého seba nevybral do okruhu. K bezpečnej prevádzke určite dopomôže aj pravidelné štúdium siete, o objavených zraniteľnostiach a útokoch...

Nasledujúci obsah popisuje inštaláciu a základnú konfiguráciu HTTP serverov Apache, Nginx a Lighttpd, čo sa týka výberu servera, Nginx a Lighttpd sú vhodnejšie ako Apache. Časť s bezpečnostnými krokmi môžete preskočiť ak chcete skryté služby použiť iba na testovacie účely.


a) Apache

su
apt-get update && apt-get install apache2
nano /etc/apache2/ports.conf

nájdite riadok:

Listen		80 	

prepíšte na:

Listen 		127.0.0.1:80

zmeny uložte (ctrl+x)

systemctl restart apache2

netstat -tl		# overíme či sa postup podaril

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:http          0.0.0.0:*               LISTEN




a2dismod autoindex	# vypnutie autoindex

a2dismod info		# vypnutie zobrazenia stránky server-info

a2dismod status		# vypnutie zobrazenia server-status

nano /etc/apache2/conf-enabled/security.conf

Nájdite riadky:

ServerTokens	OS

ServerSignature On

prepíšte ich na:

ServerTokens Prod
ServerSignature Off

uložte zmeny (ctrl+x)

systemctl start apache2 al. systemctl reload apache2


b) Nginx

su
apt-get update && apt-get install nginx
nano /etc/nginx/sites-enabled/default

nájdite tento riadok:

        listen [::]:80 default_server;

a prepíšte na:

listen 127.0.0.1:80 default_server;

pod riadok pre koreňový priečinok pridajte:

root /var/www/html;
autoindex off;

pre vypnutie signatúr:

nano /etc/nginx/nginx.conf

do http sekcie pridajte:

server_tokens off;

súbor uložte (ctrl+x)

systemctl start nginx al. systemctl restart nginx

c) Lighttpd

Lighttpd (Lighty) je bezpečnostne orientovaný nenáročný server, vyžadujúci minimum prostriedkov.
su
apt-get update && apt-get install lighttpd

nano /etc/lighttpd/lighttpd.conf

do konfigurácie pridajte tieto riadky:

server.bind                 = "127.0.0.1"
pozn. V základnej konfigurácii lighttpd by listovanie adresára malo byť vypnuté, ak nie, pridajte ešte riadok:
server.dir-listing        = "disable"
V základnej konfigurácií taktiež nie je povolený modul mod_status pre zobrazenie stránky o stave servera, ak ho máte povolený, nájdite a odstráňte tento riadok:
status.status-url = ""

a v sekcií server.modules odstráňte položku "mod_status",
Signatúry lighttpd sa síce nezobrazujú ale zobrazuje sa číslo verzie v HTTP záhlaví, pre zmenu pridajte ešte riadok:

server.tag	=""

uložte zmeny(ctrl+x) a reštartujte lighttpd

systemctl restart lighttpd

Modifikácia súboru torrc

Uistite sa, že máte najnovšiu verziu toru a všetko funguje ako má (viď inštalácia Toru)
systemctl status tor@default
otvorte súbor /etc/tor/torrc (konfiguračný súbor toru)v textovom editore (ako root)
su
nano /etc/tor/torrc

nájdite tieto riadky v sekcii pre Hidden Services a od-komentujte ich:
#HiddenServiceDir /var/lib/tor/hidden_service/ #HiddenServicePort 80 127.0.0.1:80 HiddenServiceDir /var/lib/tor/hidden_service/ HiddenServicePort 80 127.0.0.1:80 #číslo portu musí byť rovnaké na akom načúva server systemctl reload tor teraz sa presuňte do adresára pre hidden service cd /var/lib/tor/hidden_service ls #ak sa všetko podarilo, mali by sa tam nachádzať súbory: hostname private_key cat hostname hwehi7898bcwqxml.onion #onion adresa vášho webu
Pre otestovanie zadajte adresu do Tor prehliadača.

TIP: Pri migrácií a zachovaniu domény stačí skopírovať súkromný kľúč (private_key) do nového adresára uvedeného v torrc, ak ho ale získa útočník môže svoj web vydávať za váš, takže ho uchovávajte v bezpečí!!!!


HTTP server - Whonix

Prevádzka služieb vo Whonixe má oproti prevádzke v inom (tj. kde nie všetky spojenia idú cez Tor) linuxe a všeobecne v inom OS, množstvo výhod vďaka svojmu dizajnu izolácie a poskytuje vyššiu úroveň bezpečnosti.

Najprv nainštalujte a nakonfigurujte ľubovoľný server vo Whonix Workstation podľa manuálu vyššie, a potom upravte torrc vo Whonix Gateway a reštartujte tor. V tomto prípade musí server načúvať na 0.0.0.0 a nie iba na loopback adrese.
su
nano /etc/tor/torrc

Riadok pre port prepíšte takto:

HiddenServicePort 80 10.152.152.11:80

#IP adresa sa musí zhodovať s adresou Whonix Workstation
a taktiež port na ktorom načúva server

Zmeny uložte (ctrl+x) a reštartujte tor vo Whonix Gateway
service tor@default reload #alebo kliknite na odkaz reload_tor na ploche

Secure shell (ssh) ako skrytá služba Debian/Ubuntu

Podobne ako pri konfigurácií http servera, aj ssh by mal načúvať iba na localhost.
su
nano /etc/ssh/sshd_config

pridajte tento riadok a uložte:

ListenAddress 127.0.0.1

systemctl start ssh

nano /etc/tor/torrc

nájdite tieto riadky a od-komentujte ich:

#HiddenServiceDir /var/lib/tor/other_hidden_service/
#HiddenServicePort 22 127.0.0.1:22		

#číslo portu musí súhlasiť s portom na ktorom beží ssh

systemctl start tor al. systemctl reload tor
cd /var/lib/tor/other_hidden_service
ls
hostname	private_key
cat hostname
dhiqw790nwd83qna.onion	#vaša ssh doména 

Pripojenie klienta (Linux):
pozn. tor musí bežať aj na zariadení s ktorým sa chceme pripojiť, pre "torifikovanie" ssh príkazu môžeme použiť buď torsocks alebo torify, obidve programy by sme mali mať ak sme tor nainštalovali z repozitára.

torsocks ssh user@dhiqw790nwd83qna.onion
alebo
torify ssh user@dhiqw790nwd83qna.onion

Klientská Autorizácia

Menej známe, no užitočné nastavenie vďaka ktorému majú prístup k službe iba povolení užívatelia, aj keď tento postup nie je veľmi praktický pre .onion stránky s veľkým počtom návštevníkov. Autorizácia je buď:

Základná (basic) - v základnej sa indtroduction points (IPs), predtým než sa v deskriptore služby uverejnia v HSDir, symetricky zašifrujú, určíme jednotlivých užívateľov (maximum je 16) a pre každého sa vygeneruje autorizačný reťazec.

Utajená (stealth) - funguje podobne ako základná s rozdielom, že pre každého užívateľa sa vygeneruje rozdielna adresa (deskriptor), čím znemožní škodlivej HSDir monitorovať návštevnosť služby.

1. Nastavenie základnej autorizácie
Systém na ktorom beží skrytá služba (v tomto prípade ssh):
su
nano /etc/tor/torrc

do sekcie pre Hidden Service pod konfiguráciu ssh pridajte riadok:

HiddenServiceAuthorizeClient basic client1, client2	

#dvaja povolení užívatelia

systemctl restart tor al. systemctl reload tor

cd /var/lib/tor/other_hidden_service
ls
clients_key	hostname	private_key
cat hostname

q3wzpoq7w3fcki65.onion 39q6mMQBVxc74Vkgd4gqHh # client: client1
#reťazec pre prvého užívateľa

q3wzpoq7w3fcki65.onion AP3OQfgw82k6uUbPPBiwWR # client: client2
#reťazec pre druhého užívateľa
Pripojenie užívateľa (Linux):
su
nano /etc/tor/torrc

do sekcie Hidden Services pridajte riadok:

HidServAuth q3wzpoq7w3fcki65.onion 39q6mMQBVxc74Vkgd4gqHh # client: client1

systemctl reload tor

Otestovanie:

torsocks ssh user@q3wzpoq7w3fcki65.onion
2. Nastavenie utajenej autorizácie (ssh Linux):
nano /etc/tor/torrc

Pridajte k Hidden services:

HiddenServiceAuthorizeClient stealth client1, client2	
#dvaja povolení užívatelia

systemctl restart tor al. systemctl reload tor

cd /var/lib/tor/stealth_ssh
ls
clients_key	hostname	private_key
cat hostname

47hdsbqj91iwkl96.onion 39q6mMQBVxc74Vkgd4gqHh # client: client1
#adresa a reťazec pre prvého užívateľa

b3dhai9w03kvnmmz.onion AP3OQfgw82k6uUbPPBiwWR # client: client2
#adresa a reťazec pre druhého užívateľa
Pripojenie užívateľa - postup rovnaký ako pri základnej autorizácií.

Prispôsobené .onion domény

Pre jednoduchšiu identifikáciu domény môžete zmeniť aspoň niekoľko jej znakov, najprv ale musíte vygenerovať nové súkromné kľúče, čím viac znakov podľa vlastného výberu, tým dlhšie proces trvá. Príklad:

Facebook - facebookcorewwwi.onion
Onion Soup (blog) - soupksx6vqh3ydda.onion

Existuje niekoľko nástrojov na vytvorenie takejto domény, prvým bol onionhash, neskôr z neho vznikol Schallot, potom sú tu Eschalot a Scallion (používa GPU, potrebuje .NET al. Mono), nasledujúci odsek rozoberá Eschalot.

git clone https://github.com/ReclaimYourPrivacy/eschalot
cd eschalot
sudo make && make install

#zobrazenie nápovedy

eschalot --help

#Generovanie nových domén a kľúčov s prefixom onion:

eschalot -c -p onion

#nová prispôsobená doména

onionhevgmfwv7rt.onion
Aby ste novú doménu mohli používať musíte v adresári skrytej služby nahradiť starý kľúč (zálohujte ho) novým, ktorý eschalot vygeneroval.
sudo mv echalot_key /var/lib/tor/hidden_service/private_key
systemctl reload tor
Použitie regulárnych výrazov (viac nájdete v nápovede):

eschalot -r black$		#doména so sufixom black
5tpgd73wmr2black.onion	

eschalot -r ^[1-6]{3}.*[a-z]{3}$	
#doména začínajúca trojkombináciou čísel od 1 do 6 
#a končiaca trojkombináciou písmen

556mgjetjsk2muep.onion
Upozornenie: takéto domény sú síce pre návštevníkov prívetivejšie, ale ich častým problémom je, že sú náchylnejšie na phishing:

onionhevgmfwv7rt.onion - skutočná doména webu

onionwdnpurf4ixa.onion - falošná doména webu (phishing)

Next generation onion services (v3)

Na tejto súčasti pracoval tím Tor Project 4 roky, prvýkrát je obsiahnutá v Tor 0.3.2.1-alpha, ktorý je súčasťou TBB 7.5a9. Next generation onion services sľubujú vyššiu bezpečnosť a anonymitu, napr. do HSDir sa nahrá menej informácií ako v klasických službách (v2).
Tieto služby majú až 56-miestnu adresu, napr.:

gihuuyf5dn3gfiavcr3nwn6jrs5dhbn4hmps4ladtdai3aa7tidnkgqd.onion

V novej verzií je prvýkrát obsiahnutý aj KIST scheduler (Kernel-informed socket transport), ktorý by mal predísť preťaženiu spojení medzi relays, lepšie prioritizovať okruhy a celkovo znížiť latenciu, pre častého užívateľa to znamená napr. rýchlejšie načítanie stránky atď., dostupný je iba pre unixové systémy, pre Windows je KISTLite.

Inštalácia:
tor --version	 #musí byť 0.3.1.9 alebo vyššia
su
systemctl start apache2/nginx/lighttpd

nano /etc/tor/torrc 

Konfigurácia rovnaká, stačí iba pridať riadok s verziou:

HiddenServiceDir /var/lib/tor/v3_hidden_service/
HiddenServiceVersion 3
HiddenServicePort 80 127.0.0.1:80 

systemctl restart tor

cd /var/lib/tor/v3_hidden_service
ls
hostname	hs_ed25519_public_key	hs_ed25519_secret_key
cat hostname

#v3 adresa stránky
gihuuyf5dn3gfiavcr3nwn6jrs5dhbn4hmps4ladtdai3aa7tidnkgqd.onion

doménu otestujte v TBB 7.5 alebo vyššom

Prispôsobené domény:
Postup sa týka programu mkp224o. Najprv nainštalujte požiadavky, nájdete ich v README.txt (okrem libsodium je potrebný aj libsodium-dev), inštalácia a používanie:
git clone https://github.com/cathugger/mkp224o.git
cd mkp224o
./autogen.sh
./configure
make

#nápoveda
./mkp22o --help	

#doména s prefixom onion, výstup sa uloží do adresára v3onion

./mkp22o -d v3onion onion
 


Onionscan

Onionscan je penetračný nástroj na detekciu zlej konfigurácie cibuľových stránok, napísaný je v jazyku Go od Googlu, preto ho musíme mať najskôr nainštalovaný (najlepšie golang-1.6) a k tomu aj niekoľko modulov:

su
apt-get update && apt-get install golang
export GOPATH=$HOME/go

go get golang.org/x/net/proxy
go get golang.org/x/net/crypto
go get golang.org/x/net/html
go get github.com/rwcarlsen/goexif
go get github.com/HouzuoGuo/tiedot/db

go get github.com/s-rah/onionscan
go install github.com/s-rah/onionscan
cd /root/go/bin

/.onionscan --torProxyAddress=127.0.0.1:9050 da6zvlks3ojrkcv3.onion

da6zvlks3ojrkcv3.onon - cieľ (Apache server ponechaný v základnej konfigurácii)

onionscan output