Podívejte se raději na online verzi přednášky, slajdy mohly být aktualizovány nebo doplněny.

Detail přednášky

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í.

Komentář od Opery najdete na konci článku na Help Net Security: prý to není ani VPN ani klasická proxy, ale místo secure proxy tomu budou říkat „browser VPN“. Meh.

Pokud jste na konferenci chyběli, přečtěte si reportáž od Ladislava Prskavce.

Přijďte na školení Bezpečnosti webových aplikací (nejbližší termín: termín zatím nevypsán)!

Datum a akce

1. dubna 2017, Devel.cz Konference 2017 (délka přednášky 20 minut, 18 slajdů, video)

Slajdy

Prohlížeč s maskou

#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ů.

Opera

#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.

Free VPN integrated in Opera for better online privacy

#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.

No, I assure you: it's a VPN.

#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…

Enable VPN (Secure proxy provided by SurfEasy Inc.)

#5 Toto je drobný text pod checkboxem, kterým v nastavení Opery povolujete „VPN“.

Opera → (HTTPS/TLS 1.2) → (proxy ↔ DNS) → (HTTPS/HTTP) → web

#6 „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.

✔ Include the actual bytes sent/received.

#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.

chrome://net-internals/#events: https://api.surfeasy.com/v2/...

#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).

URL_REQUEST: SE-Client-API-Key: [64 bytes were stripped]

#9 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.

SOCKET: [660 bytes were stripped]

#10 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.

HTTP_STREAM_JOB: PROXY_SERVICE_RESOLVED_PROXY_LIST --> pac_string = "HTTPS default0.opera-proxy.net:443;..."

#11 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.

SOCKET: CONNECT ifconfig.co:443 HTTP/1.1

#12 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.

EVERYBODY GETS A PROXY!

#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 :-)

Username: ..., Password: ...

#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.

Opera Buys SurfEasy To Add Secure VPN Services To Its Browser Software

#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“.

Opera browser sold to a Chinese consortium for $600 million

#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.

China just made VPNs illegal

#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?

Opera VPN pro Android a iOS

#18 Opera nabízí také VPN aplikace pro iOS i Android. Obojí jsou klasické VPN, ne jen proxy servery (od půlky roku 2018 už nenabízí, ačkoliv něco už zase přidali do browseru na Androidu). 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á.

Video záznam

SlidesLive

Michal Špaček

Michal Špaček

Vyvíjím webové aplikace, zajímá mě jejich bezpečnost. Nebojím se o tom mluvit veřejně, hledám hranice tak, že je posouvám. Chci naučit webové vývojáře stavět bezpečnější a výkonnější weby a aplikace.

Veřejná školení

Zvu vás na následující školení, která pořádám a vedu: