Jak jsem pomocí prohlížeče přišel na to, že Opera VPN není VPN aneb co všechno na sebe Chrome prozradí v chrome://net-internals/ a jak to můžete použít pro ladění nebo zkoumání různých udělátek a extenzí.
1. Jak jsem přišel na to, že „VPN“ v prohlížeči Opera celkem pochopitelně není VPN.
A jak stejný postup můžete použít i vy třeba pro zkoumání extenzí nebo jiných
vnitřností browserů. Slajdy obsahují poznámky, které v původní prezentaci nejsou.
Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
2. Operu milovalo a používalo hodně webových vývojářů, včetně mě. Od tohoto
původně norského prohlížeče se často inspirovali i výrobci ostatních browserů, z
Opery převzali například „taby“. Počátkem roku 2008 byla v Praze otevřena
vývojová pobočka Opera Software (a o pár let později zase v tichosti zavřena). V
létě 2013 vyšla verze 15 a od té doby je prohlížeč Opera postaven na projektu
Chromium a používá jádro Blink, stejně jako Chrome a další browsery.
3. V roce 2016 se v Opeře objevil vestavěný „ad-blocker“ a „VPN“. Software pro
tvorbu Virtual private network zpřístupňuje privátní sítě přes Internet. VPN se
také používají pro ochranu připojení v případě používání veřejných Wi-Fi, umí
chránit veškerý provoz z a do zařízení, nehledě na program, který data posílá
nebo přijímá. VPN pracují na 2. (spojové) nebo 3. (síťové) vrstvě OSI modelu.
4. Ondrej Galbavý mě upozornil, že v Opeře by to tak být nemuselo. Jeho tweet
adresovaný tehdejšímu zástupci CTO Opery říkal, že v Opeře je proxy, ne VPN.
Bruce Lawson ho ovšem ujistil, že to opravdu je VPN. To mě zaujalo a vydal jsem
se nalézt pravdu, Deputy CTO by přece měl vědět, co tam mají. Důvěřuj, ale…
5. Toto je drobný text pod checkboxem, kterým v nastavení Opery povolujete „VPN“.
6. PROXY
WEB
HTTPS (TLS 1.2)
HTTP/HTTPS
DNS
„VPN“ v Opeře je opravdu proxy, přesněji secure proxy. Provoz mezi prohlížečem
a proxy serverem je vždy šifrovaný pomocí HTTPS, nehledě na to, na jaký web se
nakonec pošle požadavek. DNS překlad na IP adresu provádí také proxy server.
7. Přišel jsem na to pomocí prohlížeče samotného, zkoumal jsem co a kam posílá.
V Developer Tools (F12) ale nevidíte všechno, musíte jít trochu hlouběji, do
chrome://net-internals. Požadavky, nejen ty interní, najdete v Events, pro
zobrazení celých POST požadavků musíte v Capture povolit Include the actual
bytes. Seznam speciálních chrome URL pro prohlížeč Chrome najdete na
chrome://chrome-urls/, ale v Opeře všechny nefungují. Firefox má seznam
na about:about a v popisu protokolu about na Mozilla Developer Network.
8. Když v nastavení poprvé povolíte „VPN“, tak Opera pošle čtyři POST požadavky
na api.surfeasy.com. Nejdříve zaregistruje uživatele (register_subscriber),
poté zařízení (register_device), pak získá seznam zemí (geo_list), ve kterých
jsou proxy servery, a nakonec zjistí IP adresy těch proxy serverů (discover).
9. Source Type: URL_REQUEST
Rozkliknutím událostí typu URL_REQUEST zjistíte hlavičky těch požadavků. V
současné Opeře verze 44 již obsah podstatných hlaviček výrobce skryl, v
dřívějších verzích („VPN“ je ve vývojářské Opeře od verze 38) byl API klíč vypsán.
10. Source Type: SOCKET
Když výrobce skryl API klíč v URL_REQUEST, tak se dal ještě najít v události typu
SOCKET, společně s tělem POST požadavku, pokud jste povolili zobrazování
všech bajtů na záložce Capture. Od února 2017 (Opera 43) už je skrytý i tam.
11. Source Type: HTTP_STREAM_JOB
Jak tedy ověřit, že „VPN“ v Opeře je vlastně proxy? V detailu události typu
HTTP_STREAM_JOB najdete nastavení Proxy auto-config (PAC), určující proxy
servery, z nichž browser vybere jeden, který se pro vybraný požadavek použije.
12. Source Type: SOCKET
V události SOCKET je pak vidět i připojení na proxy server a poslání žádosti
o otevření spojení na cílový web (zde ifconfig.co) metodou CONNECT. Ta se používá
právě k tunelování HTTP požadavků. Všimněte si i dalších „proxy“ hlaviček.
13. Registraci uživatele a získání IP adres proxy serverů jsem pro studijní účely
reimplementoval. Vytvořil jsem v Pythonu skript, který vypíše IP adresy proxy
serverů i jméno a heslo potřebné pro připojení k nim. Jmenuje se The Oprah Proxy
a najdete ho na GitHubu. Oprah Winfrey v jedné show rozdávala auta, můj skript
rozdává proxy servery. Název se asi zalíbil i v SurfEasy, VPN divizi Opery :-)
14. Takto můj skript vypíše jméno a heslo pro proxy servery, které můžete použít třeba
i ve Firefoxu. Na GitHubu naleznete ukázkový soubor pac.js a popis, jak ho využít.
Secure proxy podporuje i curl od verze 7.52.0, která vyšla v prosinci 2016. Asi by
bylo dobré upozornit, že při použití těchto proxy serverů se vygenerované username
posílá s každým požadavkem, a že to celé může kdykoliv přestat fungovat.
15. Opera tuhle „VPN“ technologii nevytvořila úplně sama, ale v březnu 2015 ji koupila
společně s kanadskou firmou SurfEasy. Ta se stala „VPN divizí Opery“.
16. Od července 2016 vlastní Operu (prohlížeč a jméno, ne celou firmu) konsorcium
čínských společností. (Transakce byla dokončena v listopadu 2016.) Do prodaného
balíčku patří i divize SurfEasy a její produkty.
17. Jen si to představte: vaši firmu na VPN a proxy koupí norská společnost. Tu
obratem koupí skupina čínských firem, včetně vás. No a pak v Číně zakážou VPN,
resp. použití VPN musí schválit čínská vláda. To je ale pech, co?
18. Opera nabízí také VPN aplikace pro iOS i Android. Obojí jsou klasické VPN, ne jen
proxy servery. Asi by bylo dobré dodat, že „secure proxy“ v Opeře na zabezpečení
prohlížení stránek proti hackerům v kavárnách a na konferencích stačí, jen není fér
tomu říkat VPN. Nezapomeňte, že na anonymitu na Internetu VPN nestačí, a že ne
každá VPN aplikace je stejně dobrá a bezpečná.
MichalMichal ŠpačekŠpaček
www.michalspacek.czwww.michalspacek.cz
@spazef0rze@spazef0rze