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

Detail přednášky

Když něco neznám a chci to najít, tak použiju… Google. No jo, ale co když chci najít veřejně přístupné a na Internet připojené web kamery, nebo elektrárny? Nebo napadené databáze a ukradená hesla? Nebo třeba HTTPS certifikáty, které často odhalí testovací a hůře zabezpečené nebo zapomenuté servery? Co by udělal MacGyver? No, přišel by na tuhle přednášku. Ukážeme si Certificate Transparency, vyhledávač Shodan, neobvyklé dotazy do Google a další tipy a triky.

Datum a akce

6. října 2018, LinuxDays 2018 (délka přednášky 50 minut, 16 slajdů, video)

Slajdy

Vyhledávejte jako MacGyver

#1 MacGyver je problémořešič ze stejnojmenného seriálu, jehož první díl byl odvysílán v roce 1985. MacGyver vždy našel řešení na jakýkoliv problém a vše vyřešil za pomoci běžných věcí a nástrojů. Mě se také občas podaří něco najít, často jen pomocí webového prohlížeče. Ukážu vám, jak takový běžný program, jakým webový prohlížeč dnes je, použít k vyhledávání problémů. Řešení si pak už musíte najít sami, třeba v jiné mé přednášce nebo na mém školení.

Have I Been Pwned?

#2 Na Have I Been Pwned? si můžete ověřit, jestli vaše e-mailová adresa (nebo adresa kohokoliv jiného) nebyla v nějakém veřejně známém úniku dat. Troy Hunt, provozovatel této služby, do ní nahrává data, která najde veřejně na webu nebo která mu někdo poskytne. Slovo „pwned“ pochází z „owned“, obojí vyjadřuje přivlastnění něčeho, v tomto případě vaší online identity.

Notifikace z Have I Been Pwned?

#3 Pokud váš e-mail (soukromý i pracovní) byl v nějakém úniku a ještě jste si nezměnili hesla na dané službě, tak to hned udělejte. Nezapomeňte si také nastavit notifikace, abyste se o případném novém úniku dat, který Troy Hunt přidá, dozvěděli co nejdříve. Prohledávat můžete i celé domény, což se hodí pro firemní prostředí.

Index of / db321_souldeep.sql

#4 Najít zajímavá data na webu můžete občas i úplnou náhodou. 22. února 2014 jsem si chtěl na hudebním vydavatelství Soul Deep Recordings koupit nějakou tu empétrojku, ale místo toho jsem na webu našel export databáze. Tenhle web neměl zrovna štěstí na zabezpečení, v roce 2015 se místo titulky objevil nápis Hacked by…

heslo 955db0b81ef1989b4a4dfeae8061a9a6

#5 Jak najít „zálohy“ (ehm, úniky) databází? Když nějaká databáze zdrhne kamsi na Internet, tak je docela slušná šance, že ji najde Google při zadání správného dotazu. Představte si, že firma ukládá špatně hesla svých uživatelů, třeba pomocí algoritmu MD5. Pak by mohlo stačit hledat hash nějakých předvídatelných hesel, ne? Jo, mohlo. Zkuste si hledat třeba hash slova „heslo“ a pro ještě lepší výsledky do dotazu přidejte inurl:sql nebo filetype:sql. Firem, které stále používají MD5 je ještě docela dost. Správně by se měl používat algoritmus bcrypt nebo Argon2 a při změně je dobré také přehašovat existující hesla.

Výsledek hledání a76c8ba54d7be5d57daf858987c168a458009312

#6 Na posledním slajdu své přednášky o hashování hesel mám SHA-1 hash a76c8ba54d7be5d57daf858987c168a458009312, ale zapomněl jsem, co bylo vstupem. Pamatoval jsem si jen to, že to bylo něco lehkého, aby se to dalo najít Googlem. Při přípravě jiné přednášky v květnu 2017 jsem to tedy zkusil najít. Bylo to zahešované slovo „konec“ (hash slova „konec“ na posledním slajdu, ha ha, hi hi, že). Při pozornějším zkoumání té stránky s výsledky jsem si všiml i něčeho dalšího.

Lupa.cz: Hostingu Czechia od firmy ZONER unikly přihlašovací údaje zákazníků [AKTUALIZOVÁNO]

#7 Našel jsem data z hostingu Czechia od firmy ZONER. Zhruba 100 tisíc e-mailových účtů a hesel v SHA-1, nějaké ty přístupy na eftýpka a tak podobně. Zoneru jsem vše nahlásil (pokud něco podobného najdete, tak to prosím udělejte také) a počkal, až incident vyřeší a sami zveřejní. Někdo měl k e-mailu nastavené heslo „konec“, ZONER to uložil jako SHA-1 hash a ten jsem hledal. A našel.

To se takhle chcete podívat, co o webu banky píše jeho výrobce a najdete zdrojáky. NA DRUHÝ STRÁNCE V GOOGLE!

#8 V roce 2012 jsem také něco hledal a něco našel. Hledal jsem jednoho člověka, našel jsem zdrojový kód a další soubory prezentačního webu Air Bank. Ten člověk, kterého jsem hledal, totiž shodou okolností pracoval na systému, na kterém byl web Air Bank postaven.

Certificate Transparency

#9 Když už jsme u těch bank… weby bank, a vlastně úplně všechny weby, že, by měly běžet na zabezpečeném protokolu HTTPS. K tomu je potřeba mít HTTPS certifikáty, které vystavují a podepisují tzv. certifikační autority (CA). A v těch občas bývá docela nepořádek, podepisují certifikáty bez správného ověření majitele, používají algoritmy, které by již používat neměly (viz třeba problémy Symantecu nebo autorit WoSign a StartCom) a tak podobně. Tolik nutnou transparentnost do jejich fungování přinesl projekt Certificate Transparency (CT).

TLS/SSL System with Certificate Transparency (X.509v3 Extension)

#10 Ten, kromě jiného, vyžaduje, aby všechny certifikáty byly zapsány do více CT logů. Účast v Certificate Transparency je aktuálně pro většinu certifikačních autorit nepovinná, ačkoliv snad většina CA je již dobrovolně loguje, nicméně od dubna 2018 bude Chrome vyžadovat, aby v CT logu byly již všechny nově vydané certifikáty. Prohlížeč dostupnost certifikátu v logu může zkontrolovat bez ztráty rychlosti načítání stránek např. následovně: před vydáním certifikátu zapíše CA do CT logu tzv. „předcertifikát“ (precertificate), log jako odpověď pošle Signed Certificate Timestamp (SCT), podepsaný čas uložení certifikátu. CA poté SCT přidá do certifikátu a ten konečně vydá žadateli, který ho umístí na server. Prohlížeč poté při každé návštěvě stránky dostane od serveru certifikát i s časem SCT, který může ověřit a pokud je čas např. v budoucnosti, nebo v certifikátu není SCT vůbec (což může znamenat, že certifikát nebyl zalogován), tak může spojení odmítnout. Další možnosti ověření jsou uvedeny na stránce How Certificate Transparency Works.

Certificate Search crt.sh

#11 CT logy jsou veřejné a dají se prohledávat pomocí nástrojů jako je třeba crt.sh. K čemu je dobré prohledávání certifikátů? Tak předně si můžete kontrolovat, jestli nějaká CA nevydala nějakému mizerovi certifikát pro vaši doménu bez vašeho vědomí. crt.sh má i RSS, resp. Atom feed, takže to můžete i automatizovat. Vyhledávat můžete samozřejmě i cizí domény, velmi často tak najdete třeba nějaké zapomenuté služby, nebo testovací verze, které nemusí být tak dobře zabezpečené jako produkční verze. Kdybyste se chtěli účastnit bug bounty českého T-Mobile, tak by se vám mohl hodit seznam jejich domén (a další). Domény samozřejmě nezjistíte, pokud budou „skryté“ za wildcard certifikátem, existuje také návrh na „cenzurování“ domén v CT logu, ale zatím to je jen návrh. Ostatně, když to není v logu, tak to neznamená, že to nikdo nenajde. Mimochodem, databázi crt.sh můžete prohledávat i přímým přístupem do jejich PostgreSQL. Prohledávání CT logů nabízí i Facebook, tam se dokonce můžete „zapsat“ k doméně a Facebook vám pošle notifikace, když se pro tu doménu objeví nový certifikát. Doslova proud nově vystavených certifikátů můžete získat třeba pomocí CertStreamu, pomocí klienta pro příkazovou řádku pak můžete pěkně automatizovat třeba skenování. Najdete defaultní instalace, které ještě někdo nestihl zabezpečit a další pikantnosti.

Mapa Internetu

#12 Tohle je mapa Internetu. V roce 2014 ji vytvořil John Matherly. Pingnul všechny zařízení a odpovědi zanesl do mapy.

TCP port scanner, spews SYN packets asynchronously, scanning entire Internet in under 5 minutes.

#13 Když máte dobré připojení k Internetu, tak ho celý můžete oskenovat za 5 minut pomocí skeneru masscan. Ale přenést 10 milionů paketů za vteřinu jen tak nějaká Wi-Fi nezvládne. V roce 2014 jsem skenoval 6,5 milionu českých IP adres na chybu Heartbleed a z nějakého obyčejného a nejlevnějšího „serverového“ připojení mi to trvalo 2 hodiny. Když zmiňuju Internet, tak myslím IPv4. IPv6 má o něco víc adres, takže skenovat všechny by nebylo moc moudré. Vhodné by bylo podívat se jen na ty, na kterých něco je. Ale jak je zjistit? Existuje hezký trik: udělejte si NTP server, který bude dostupný po IPv6, a přidejte se do poolu serverů. Když pak nějaký stroj bude chtít synchronizovat čas, tak s určitou pravděpodobností o to požádá váš server. Ten dostane spojení po IPv6 a bude tak znát další aktivní IPv6 adresu.

SHODAN (Sentient Hyper-Optimized Data Access Network) z hry System Shock

#14 Tohoto triku na zjišťování IPv6 adres využívá i vyhledávač Shodan, jehož jméno je odkazem na SHODAN (Sentient Hyper-Optimized Data Access Network) z mé oblíbené hry System Shock.

Shodan

#15 Shodan hledá všechno. IoT, elektrárny, ledničky, kamery, weby a tak dále. Zkouší posílat požadavky na známé porty, uloží si odpověď (a to jako text i jako obrázek, pokud se vrátil např. ze vzdálené plochy) a tu vám pak umožní prohledávat. Chcete najít servery již zmíněného T-Mobile? Ledničky připojené k Internetu (protože proč ne)? Hledejte „fridge“ (a po přihlášení si zobrazte jen port 8081). Chcete vidět všechny obrázky z kamer a vzdálených ploch, které Shodan našel? Budete potřebovat účet a pak šup na images.shodan.io, opět nejlépe s filtrem na ČR. Můžete se podívat, na co zrovna kouká učitel v učebně 203 na Vysokém učení technickém v Brně (už ne) nebo kdo si co kupuje na baru v pražském prostoru Node5.

Pokud se zaregistrujete s „akademickým e-mailem“, tak vám účet automaticky povýší, ale asi to nefunguje s českými školami – v takovém případě by mělo pomoci napsat na podporu. Občas je také možné získat lifetime membership za $5, obvykle na Black Friday.

Podobným nástrojem je Censys.

Shrnutí

#16 Na závěr pěkně všechny vyhledávače dohromady:

Když najdete nějaká evidentně uniklá data, nezapomeňte to prosím majiteli nahlásit. Můžete k tomu využít i Národní CSIRT České republiky. O „státních“ problémech pak dejte vědět Vládnímu CERTu České republiky. Pojďme ten Internet udělat lepším a bezpečnějším místem na Zemi.

Jestli máte web nebo nějakou webovou aplikaci, tak si na ni přidejte soubor security.txt, aby vám lidi jako já mohli bezpečnostní problémy jednoduše nahlásit.

Video záznam

https://www.youtube.com/watch?v=K3Et7FnFAWE