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:
- Detaily
- Inštalácia http servera + základné zabezpečenie pre Ubuntu/Debian
- Modifikácia torrc súboru Ubuntu/Debian
- Skryté služby na Whonixe
- Secure shell (ssh) a Tor
- Klientská autorizácia
- Vytvorenie prispôsobenej domény
- Nová generácia cibuľových služieb
- 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 = "Signatúry lighttpd sa síce nezobrazujú ale zobrazuje sa číslo verzie v HTTP záhlaví, pre zmenu pridajte ešte riadok:" a v sekcií server.modules odstráňte položku "mod_status",
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@defaultotvorte 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:Pre otestovanie zadajte adresu do Tor prehliadača.
#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
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.
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ľaPripojenie 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.onion2. 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ľaPripojenie 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.onionAby 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 torPouž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.onionUpozornenie: 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.
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.oniondoménu otestujte v TBB 7.5 alebo vyššom
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.onionda6zvlks3ojrkcv3.onon - cieľ (Apache server ponechaný v základnej konfigurácii)