Trzy lata, sześć miesięcy i dwa tygodnie

Rzadko coś mnie zadziwia do tego stopnia i wielowymiarowo, jak to, o czym dowiedziałem się dziś. Chodzi oczywiście o błąd w Google+. No dobrze, nie sam błąd mnie zadziwił, bo ten był raczej mizerny. Poszło o to, że jeśli użytkownik Google+ udostępnił jakiejś aplikacji dostęp do danych publicznych swojego konta Google+, to aplikacja miała też dostęp do danych prywatnych. Z bardziej krytycznych – w świetle choćby RODO – do adresu email, imienia, nazwiska.

Chodzi o 500 tys. użytkowników, dane nie są super wrażliwe, udostępnione tylko aplikacjom. Oczywiście błąd pozostaje błędem, ale ten w dodatku został wykryty samodzielnie, nie na skutek wycieku. Ogólnie niezły potencjał na opowieść, którą nawet jeśli nie można się pochwalić, to nie ma się co wstydzić.

I tu pojawiają się tytułowe trzy lata, sześć miesięcy i dwa tygodnie, które jeżą włos na głowie. No dobrze, nie wszystkie. Trzy lata, to czas, kiedy podatność była dostępna. Tak naprawdę, powinny być dwa i pół, ale lepiej pasowało do clikcbaitowego tytułu. W dodatku zupełnie nie ma znaczenia ile czasu podatność była obecna – prawdopodobieństwo wykrycia nie rośnie z każdym dniem.

Ciekawe są dwie kolejne wartości. Sześć miesięcy to czas, przez który Google zataiło informację o podatności, bojąc się reakcji opinii publicznej. Wykryto ją w marcu 2018, ogłoszono wczoraj. W dodatku twierdzą, że w sumie nie wiedzą, czy podatność została wykorzystana, bo logi API mają z tytułowych dwóch tygodni, a nie trzymają ich dłużej, bo szanują prywatność użytkowników. Poważnie tak uzasadnili, w informacji o wycieku, która jest niejako przy okazji. Bardzo ładne zagranie PR-owe, ale jedyny komentarz, który przychodzi mi do głowy to:

Źródło: https://imgflip.com/i/2jpigy

Prędzej uwierzyłbym, że nie mają tych logów, bo im się na dyskach nie mieściły. 😉

Nie wiem, czy tak właśnie wygląda the right thing w świecie security, ale po graczu wielkości Google spodziewałem się jednak większej transparentności.

Kolejne zaskoczenie to reakcja rynku. Czy też może właśnie brak tej reakcji. Akcje Alphabet symbolicznie spadły, szybko odrobiły. Nie stało się nic… Przynajmniej na razie, zobaczymy jeszcze jak zareagują urzędy regulujące różnej maści, ale póki co wszystko wskazuje na to, że ani prywatność, ani transparentność nie są dzisiaj w cenie.

Lynis – narzędzie do audytu bezpieczeństwa systemów Linux

Czasem zdarza się, że znajdę jakieś stare, fajne narzędzie, którego nie znałem wcześniej. Tak jest w przypadku Lynis – programu open source napisanego przez CISOfy służącego do audytu bezpieczeństwa systemu na podstawie bieżących ustawień. Przypadkiem, na komórce w tramwaju mignął mi wpis o nim gdzieś w sieci, opis był ciekawy, więc postanowiłem dać szansę, choć od dłuższego czasu nie interesowałem się podobnymi programami. Kiedyś, na początku przygody z Linuksem bawiłem się Bastille Linux i to w zasadzie wszystko, jeśli chodzi o automaty.

Działanie Lynis sprawdzałem tylko na Debianie i Ubuntu – działa bardzo sprawnie, generuje sensowne raporty z uwzględnieniem specyfiki dystrybucji. Przy każdym raporcie jest link do krótkiego opisu z wytłumaczeniem danej opcji. Dla początkujących jest to dobra okazja do poczytania nt. ustawień i ich wpływu na bezpieczeństwo systemu, dla zaawansowanych automat, który sprawdzi, czy czegoś nie przeoczyliśmy lub nie zapomnieliśmy włączyć np. po testach.

Program jest dostępny jako pakiet, więc instalacja sprowadza się do:

apt-get install lynis

Uruchomienie audytu również jest proste:

lynis audit system

Polecam dodanie przełącznika -Q. Program jedynie generuje raport, niczego nie zmienia w systemie, więc uruchomienie jest bezpieczne. Wynik wyświetla na ekran oraz do logu, znajdziemy tam zarówno znalezione błędy, ostrzeżenia, jak i wskazówki do hardeningu systemu.

Narzędzie ma zastosowanie raczej dla systemów, prywatnych,  utrzymywanych ręcznie – te konfigurowane automatycznie raczej nie mają miejsca na powstanie błędu, a forma raportu jest raczej przyjazna dla ludzi, niż maszyn.

Oczywiście przy domyślnej konfiguracji zgłosi także odstępstwa od normy, które są zamierzone albo nieistotne, więc wynik będzie nieco przegadany. Mimo to polecam wypróbowanie samodzielnie.

MauiBot – analiza zachowania bota

Pewnego dnia patrząc w logi serwera WWW zauważyłem sporą aktywność bota identyfikującego się jako:

MauiBot (crawler.feedback+dc@gmail.com)

Z zapałem crawlował labirynt dla botów, w User Agent nie było zazwyczaj obecnego URLa, żeby poczytać, co to za wynalazek, więc uruchomiłem wyszukiwarkę. Szybko udało mi się ustalić, że to bad bot, działający z chmury Amazonu (AWS) i nawet są reguły dla nginx do blokowania ruchu od niego.

Na początek parę znalezionych linków:

Wygląda, że bot pojawił się w marcu tego roku, czyli jest dość świeży. Wygląda też, że potrafi spowodować trochę problemów, przynajmniej na shared hostingach i/lub stronach słabo zoptymalizowanych.

Dokładniejszych informacji nie ma, więc postanowiłem poobserwować zwyczaje bota na własną rękę.

Wygląda, że 25 lipca ok. 1:20 trafił na moją stronę domową i zaczął podążać za kolejnymi linkami. Korzystał z IP 54.237.208.52, nie dało się obserwować opisywanego w niektórych miejscach wykonywania requestów grupami po 4-8 co 30 sekund. Wykonywał między 100 a 250 requestów na godzinę.

Tego samego dnia ok. 20:40 zmienił IP na 54.87.252.55 i… zaczął wszystko od początku. 26 lipca około 1:20 skończyły się requesty dotyczące blogów, pozostały tylko dotyczące wypasania botów.  W tym momencie intensywność crawlowania znacząco wzrosła – między 1600 a 2100 requestów na godzinę. Daje się też zauważyć grupowanie requestów, choć wygląda ono nieco inaczej niż w opisywanych w sieci przypadkach – 3-4 requesty co 5-6 sekund. Być może każdy wątek dla danej ścieżki wykonuje 4 requesty co 30 sekund.

Zaczynam też obserwować spadek liczby zapytań na godzinę. 26 lipca o godzinie 7 było 1500 requestów, następnie systematycznie z godziny na godzinę spada do 900 requestów o 19 i 550 o godzinie 5 następnego dnia. O godzinie 19 27 lipca jest już tylko 340 requestów, a o godzinie 9 28 lipca już tylko 250 zapytań na godzinę.

W tym momencie zaczynam eksperymentować. Po pierwsze dodaję przed linkami z parametrami i za nimi linki z inną ścieżką, ale również prowadzące do labiryntu. Bot natychmiast za nimi podąża, najwyraźniej dokładając nowe wątki/procesy, bo liczba requestów wzrasta do ponad 700/h, przy czym liczba do bazowego powoli spada do ok. 200/h.

31 lipca liczba requestów to ok. 150/h. Podstawiam linka do labiryntu ale w innej domenie, ale MauiBot ignoruje tego linka. Trochę zbyt długo zwlekałem z analizą, obecnie bot reaguje bardzo powoli, więc publikuję teraz, a kolejne obserwacje pojawią się wkrótce, jako aktualizacja tego wpisu.

UPDATE

Aby sprawdzić, czy pomija ze względu na inną domenę, czy w ogóle przestał, dołożyłem kolejnego linka, tym razem w crawlowanej dotychczas domenie. Podążył za nim, a liczba requstów wzrosła do ok. 210/h. Podobnie bot podążył za URLem w tej samej domenie po podaniu pełnej ścieżki zamiast względnej, używanej wszędzie dotychczas.

Wygląda na to, że odwiedzone URLe są zapamiętywane – bot nie wrócił do początkowego indeksu, mimo podanie osobnego linka w odwiedzonej już ścieżce.

Aby sprawdzić, jak sobie radzi z forkowaniem i jak to wpływ na ilość requestów, wysłałem go w dziewięć kolejnych, niezależnych miejsc.

Ostatecznie przestałem go obserwować na bieżąco przez cztery tygodnie i w zasadzie czekałem tylko, kiedy skończy pobierać i czy np. nie zmieni IP. Nie zmienił, za to pobierać przestał 20 sierpnia 2018. Tempo pobierania w ostatnich godzinach to ok. 335/h, pobierał ze wszystkich stron w grupach nie po 4, a po 8 requestów.

Google CTF begginers quest – wrażenia

O Google CTF dowiedziałem się zupełnym przypadkiem, prawdopodobnie info mignęło mi na Twitterze. Do głównego nie podchodziłem i z braku czasu, i umiejętności, ale stwierdziłem w sobotę, że pobawię się chociaż zadaniami dla początkujących przy kawie, czyli begginers quest. Pierwsze wrażenie jak najbardziej pozytywne, jest fabuła, jest estetyczna strona.

Google CTF screenshot
Google CTF screenshot – poza ostatnim dolnym te zadania albo umiałem rozwiązać, albo bardzo niewiele zabrakło

Zadanie pierwsze (letter) trywialne, zadanie drugie (floppy) też poszło szybko i… się wciągnąłęm. Zadanie trzecie (JS safe) już nie takie proste, tzn. niby widzę o co chodzi, ale JS to nie moja działka, więc próbuję innej ścieżki. Na warsztat poszło zadanie z dolnej ścieżki (moar) i… wpadłem w mailny, niepotrzebnie walcząc z socat zamiast przejść do sedna. TBH zmyliło mnie zepsute wyświetlanie i liczyłem, że flaga będzie po prostu gdzieś w manualu, jak tylko naprawię wyświetlanie, tj. połączę się przy pomocy socat zamiast nc. Żeby było śmieszniej o prawidłowym rozwiązaniu też pomyślałem, ale… zafiksowałem się na tym, że najpierw wymagany jest socat i nie drążyłem tematu.

Postanowiłem zajrzeć w górną ścieżkę i… bingo, pierwsze zadanie (OCR is cool) wygląda na proste. Najwięcej czasu zeszło mi na OCR (da się znaleźć sensowne online, niemniej jak potem testowałem to najlepiej od kopa działał lios). Kolejne zadania idą dość szybko, choć nie zawsze do końca ortodoksyjnie. Utknąłem dopiero na Media DB. Oczywiście prawidłowo rozpoznałem i typ, i miejsce, gdzie jest luka ale… zabrakło skilla, a w przykładach w sieci dominuje PHP, MySQL i… nieco inne payloady, niż wymagany. Jak się później okazało, chciałem to zrobić w sposób mocno przekombinowany. Chwilę powalczyłem, ale nie wiedząc, czy specyfika Pythona, czy SQLite, odpuściłem, robiąc finalnie sześć zadań.

Przyznaję, że CTF bardzo mi się podobał, niestety trochę słabo z czasem stałem, poza tym, to jedna z pierwszych tego typu zabaw, chociaż z tego co pamiętam w jakieś podobne zagadki kiedyś się okazjonalnie bawiłem, choć może nie do końca się to CTF nazywało i bardziej związane ze steganografią były. Klimat nieco podobny jak przy konkursach związanych z programowaniem, choć tu się bardziej psuje/debuguje, niż tworzy. 😉

Tak czy inaczej polecam zabawę, jeśli ktoś ma chwilę. Przez jakiś czas serwis powinien jeszcze działać, choć nie jest już supportowany, można się pobawić (dlatego bez spoilerów). Bardzo staranne przygotowanie, choć zadania trochę trudne, jak dla początkujących i bardzo przekrojowe.

Jeśli komuś się znudzi, albo po prostu utknie, to Gynvael pokazywał na YouTube rozwiązanie wszystkich zadań z Google CTF dla początkujących na żywo. Jest podział na zadania, można przeskoczyć do wybranego, co się przydaje, bo materiału trwa prawie cztery godziny.

Co do samego streamu mam mieszane uczucia – z jednej strony bardzo fajnie i live, z drugiej trochę chaosu i momentami dłużyzn. Ale takie są uroki rozwiązywania na żywo. Za to jest klimat i wytłumaczenie okolic i przyległości, a jakby coś było za szybko lub niezrozumiałe, to materiały powinny już być na GitHubie, więc ostatecznie polecam, tym bardziej, że nie kojarzę innego miejsca z kompletem rozwiązań.

Okazało się, że brakuje mi porządnego deassemblera. Moje hexedytory też nie do końca spełniają oczekiwania (lub nie umiem ich sprawnie używać). Ale przede wszystkim muszę dojść do porozumienia z terminalem, bo w zadaniu Fridge TODO list zamiast bannera widzę krzaki. I szczerze mówiąc myślałem, że pozbycie się ich to część zadania, dopiero ww. stream pokazał, że zupełnie nie o to chodzi… 😉

Entropia w Linuksie – HOWTO

Dawno temu pojawił się mit, że w Linuksie /dev/random jest źródłem prawdziwej entropii, a /dev/urandom jest gorszy. Pokutuje on do dziś i część softu za źródło danych przyjmuje właśnie /dev/random, niezależnie od realnych potrzeb. Ilość losowych danych w systemie nie jest nieskończona i zależy od dostępnych źródeł i zdarzeń zewnętrznych. Dopóki komputery były głównie fizyczne, często obsługiwane przez ludzi, problem był nieco mniejszy. W epoce wirtualek systemy i ruch są coraz bardziej powtarzalne, więc z „prawdziwą” entropią są problemy. A entropia nadal jest w systemach aplikacjom potrzebna – słusznie lub nie, chyba nawet bardziej niż kiedyś, bo szyfrowanie wszystkiego jest coraz bardziej popularne i wykorzystywane są coraz silniejsze algorytmy.

Od pewnego czasu (okolice wersji 3.7) kernel Linuksa potrafi co prawda korzystać ze sprzętowych modułów (TPM) zapewniających źródła losowych danych, o ile takie są obecne. Nie każdy sprzęt jest jednak w to wyposażony, nie każda wirtualka posiada dostęp do danych z hypervisora i obecność modułu nie oznacza jeszcze, że dane będą dostępne dla programów, więc problem nadal pozostaje.

Sprawdzenie dostępnej entropii

Jeśli nie wiemy, czy faktycznie system ma problem z dostępną entropią, możemy to w prosty sposób sprawdzić. Aktualną ilość można odczytać przez wydanie polecenia:

cat /proc/sys/kernel/random/entropy_avail

Oczywiście jest to wartość chwilowa, zmieniająca się w czasie, żeby z całą pewnością stwierdzić, jak system stoi z entropią, trzeba by poobserwować w dłuższym czasie, a najlepiej monitorować ją, np. przy pomocy Zabbiksa. Wartość powyżej 1000 oznacza, że na pewno problemu nie ma, wartości poniżej 300 oznaczają, że prawie na pewno są niedobory, mogące wpływać na pracę usług.

rngd

Istnieją dwa rozwiązania, które pomogą zwiększyć ilość dostępnych danych losowych w systemie. Pierwsze z nich, to rngd z pakietu rng-tools. Jego zadanie jest proste – dostarczać dane do napełniania /dev/random korzystając ze wskazanego źródła.

Jeśli platforma posiada sprzętowy moduł dostarczający dane losowe, rngd warto skonfigurować, by z niego korzystał. W tym celu w pliku

/etc/default/rng-tools

należy umieścić linię

HRNGDEVICE=/dev/hwrng

Natomiast w przypadku braku takiego modułu, sugerowane jest dodanie linii

HRNGDEVICE=/dev/urandom

 

Kontrowersje korzystania z /dev/urandom

Korzystanie z /dev/urandom jako źródła danych dla /dev/random powoduje kontrowersje. Główne zarzuty to niegwarantowana losowość danych w /dev/urandom (ale patrz mit), oraz powstawanie sprzężenia zwrotnego, co łącznie może powodować okresowość, a zatem teoretyczną możliwość przewidzenia stanu generatora liczb pseudolosowych. Podkreślam, że jest to możliwość czysto teoretyczna, nie wykazana w praktyce.

Alternatywa dla rngd

Istnieje drugie popularne rozwiązanie programowe, które pozwala na zwiększenie dostępnej w systemie entropii. Jest to demon haveged z pakietu o tej samej nazwie. Korzysta on z faktu, że czas wykonania kodu przez procesor jest mało powtarzalny i zależy od wielu czynników. Jest to rozwiązanie obecne w dystrybucjach od wielu lat, proste w użyciu.

Wybór rozwiązania

Jeśli system posiada moduł sprzętowy, to bym z niego korzysał, za pośrednictwem rngd. Czy haveged jest lepszy od rngd zasilanego z /dev/urandom? Nie podejmuję się odpowiedzi na to pytanie. Oba zapewniają najważniejszą sprawę, czyli dostępność danych losowych. Oba rozwiązania spełniają proste testy badające losowość danych. Osobiście uważam, że w większości przypadków rozwiązanie korzystające z rngd jest wystarczające. Tam gdzie do losowości danych przykładana jest duża waga, nie jest nie powinno być problemu z dostępem do sprzętowych generatorów, a niedobory entropii zawsze są bardziej szkodliwe, niż jej teoretycznie niższa jakość.

Linki

Na koniec zbiór linków, zarówno źródła jak i dalsza lektura, czyli ciekawe linki (kolejność losowa):

Debian over Tor

Z lekkim opóźnieniem, ale nadal news godny uwagi: Debian jest dostępny po sieci Tor. Najwidoczniej pozazdrościli Facebookowi, o którym wspominałem opisując uruchomienie strony w sieci Tor. 😉 Uzasadnienie uruchomienia jest następujące (i ładne):

The freedom to use open source software may be compromised when access to that software is monitored, logged, limited, prevented, or prohibited. As a community, we acknowledge that users should not feel that their every action is trackable or observable by others.

Dodatkowo, Tor zapewnia niezależne od zewnętrznych źródeł, „wbudowane” uwierzytelnianie i szyfrowanie treści – powiedzmy, że taki wbudowany HTTPS. Pełen katalog serwisów Debiana dostępnych via Tor dostępny jest tutaj, ale najważniejsze są chyba repozytoria pakietów.

Tor logoŹródło: https://media.torproject.org/image/official-images/2011-tor-logo-flat.svg

Przy okazji dowiedziałem się o load balancerze dla serwisów Tor.

Wpis jest pokłosiem dodania do czytnika RSS nowego serwisu Debiana, czyli micronews, który swoją drogą też wygląda ciekawie i być może pod względem technicznym będzie cegiełką do uruchomienia kolejnego projekciku…

Jak zabezpieczyć domową sieć Wi-Fi?

Ciągle słychać o błędach w urządzeniach Wi-Fi, ale zwykły użytkownik nie ma wielkiego pola manewru – z routera Wi-Fi korzystać będzie, może co najwyżej liczyć na aktualizację oprogramowania przez producenta. Postanowiłem popełnić krótki praktyczny poradnik o tym, jak łatwo zabezpieczyć sieć Wi-Fi w domu czy SOHO. Zakładam, że konfigurowany będzie dowolny router Wi-Fi, nie określonego producenta. Nie będę podawał konkretnych zakładek/nazw, bo na różnych routerach różnie się opcje nazywają. Efektem jest przyzwoicie zabezpieczony sprzęt w domu, zmniejszający także szansę na wykorzystanie luk w oprogramowaniu – w większości przypadków konieczny jest dostęp do urządzania przez atakującego.

Podstawy

Wymienione poniżej czynności są absolutną podstawą, a efektem jest przyzwoicie zabezpieczona sieć.

  1. Zmiana hasła administracyjnego do urządzenia – warunek absolutnie konieczny. Bez tego możliwe są ataki na urządzenie przy pomocy dowolnej strony odwiedzanej z przeglądarki w sieci domowej.
  2. Wyłączenie zarządzania na porcie WAN – po co ułatwiać włamania z zewnątrz?
  3. Włączenie szyfrowania WPA2 lub WPA + AES – brak szyfrowania czy WEP nie są żadnym zabezpieczeniem, któryś z tych dwóch powinien być obecny nawet w starych sprzętach.
  4. Wyłączenie WPS – dodawanie urządzeń przy pomocy PINu może być kuszącym ułatwieniem, ale drastycznie ułatwia włamanie do sieci.
  5. Aktualizacja firmware do urządzenia do najnowszej wersji – to, że urządzenie jest nowe i prosto ze sklepu nie oznacza, że ma wgrane nowe oprogramowanie. Warto sprawdzić, czy producent nie wydał nowszej wersji oprogramowania, często poprawiane są różne błędy dotyczące stabilności i bezpieczeństwa.
  6. Ustawienie silnego hasła do Wi-Fi – patrz rozdział o hasłach.
  7. Okresowe przeglądy – patrz rozdział o przeglądach.

Dodatki

Poniższe czynności są opcjonalne, ich skuteczność jest niewielka, dyskusyjna, albo niekoniecznie są proste czy w ogóle możliwe do wykonania.

  1. Wyłączenie zarządzania routerem przez Wi-Fi – jeśli komputer jest podłączony po kablu, nie jest to żadne utrudnienie, w innym przypadku średnio wygodne, ale podnosi nieco bezpieczeństwo, zwłaszcza jeśli wpuszczamy do swojej sieci różne obce urządzenia po Wi-Fi. Zabezpiecza przed ominięciem uwierzytelniania w przypadku błędów oprogramowania.
  2. Zmniejszenie mocy Wi-Fi – brak zasięgu oznacza brak możliwości zaatakowania sieci bezprzewodowej. Ale napastnik może mieć porządną antenę kierunkową… Tak czy inaczej, nie ma sensu zakłócać urządzeń sąsiadom – jeśli mamy przyzwoity sygnał to zwiększanie mocy nie poprawi parametrów naszej sieci.
  3. Wydzielenie osobnej sieci dla gości – czy to poprzez wirtualny access point, obecny w niektórych sprzętach, czy poprzez osobne urządzenie.
  4. Ukrycie widoczności sieci – moim zdaniem złudne zabezpieczenie. Atakujący i tak jest w stanie taką sieć wykryć, a może to utrudniać dołączanie urządzeń czy wybór najlepszego kanału.
  5. Ograniczenie dostępu na podstawie MAC adresu – kolejne złudne zabezpieczenie, bo MAC adresy można zmieniać. Niemniej trochę pomaga, bo nie każdy umie zmienić i nie każdy sprzęt/sterownik pozwala w prosty sposób na zmianę MAC. Wiąże się z koniecznością każdorazowego logowania na router i dopisywania MAC przy wpuszczaniu nowego urządzenia do sieci, więc niezbyt wygodne.

Hasła

Hasła powinny być możliwie długie (myślę, że w dzisiejszych czasach 14-16 znaków to rozsądne minimum), zawierać cyfry, wielkie i małe litery. Z uwagi na wpisywanie hasła do Wi-Fi na urządzeniach mobilnych, warto wziąć pod uwagę wygodę wpisywania, zwłaszcza, jeśli wpisujemy je często, na różnych urządzeniach. Znaki specjalne zwiększają bezpieczeństwo haseł, ale uważam, że lepiej (wygodniej i porównywalnie pod względem bezpieczeństwa) mieć hasło o kilka znaków dłuższe, niż ze znakami specjalnymi.

Przeglądy okresowe

Raz na jakiś czas – czy to kwartał, czy co pół roku – warto sprawdzić czy jest dostępne nowsze oprogramowanie dla routera, zmienić hasło do Wi-Fi. Jeśli korzystamy z kontroli dostępu na poziomie MAC adresu – warto od razu zweryfikować listę i usunąć zbędne urządzenia.

Jak zenbox.pl z domen klientów korzystał

Niedawno na blogu sprawnymarketing.pl pojawił się wpis o tym, jak rzekomo Zenbox stosował black hat SEO. Sprawa okazała się znacznie głębsza, szersza i ciekawa, niż na pierwszy rzut oka wyglądał. W różnych wymiarach, od technicznych, po prawne.

Przede wszystkim, niezaprzeczalnym faktem jest, że niektóre strony (raczej: większość) hostowane na zenbox.pl, pokazywały co innego przy wejściu przez HTTP, a co innego przez HTTPS. Jak pokazują zamieszczone w ww. wpisie zrzuty ekranu, narzędzia do badania SEO zauważały te linki. Raczej słusznie, bo wbrew temu, co twierdzi zenbox.pl, strony te nie zostały zignorowane przez Google, lecz normalnie zaindeksowane, co pokazuje poniższy zrzut ekranu:

Zenbox.pl SEO HTTPS

Szybko okazało się, że zenbox.pl nie jest jedynym hostingiem, który działa w ten sposób, a winny jest prawdopodobnie panel DirectAdmin, którego domyślna konfiguracja powoduje pokazywanie „zaślepki” przy braku podpiętego certyfikatu SSL. Potem było już tylko weselej, bo w dyskusji na Wykopie niektórzy sugerowali, że w zaślepkach powinien być w linkach atrybut nofollow. Uważam, że akurat brak nofollow świadczy w tym przypadku na korzyść zenbox.pl i braku celowego działania – gdyby ktoś zawracał sobie głowę atrybutami czy anchor text (a są i tacy), to znaczy, że pomyślał o pozycjonowaniu.

Jeszcze bardziej dziwi mnie skupienie się na SEO i ominięcie sedna sprawy: nie chodzi o – celowe lub nie – wprowadzenie w błąd Google. Przede wszystkim mamy do czynienia z podmianą treści na stronie zamieszczonej w określonej domenie. Wątpię, by właściciele domen mieli wiedzę, że taka podmiana miała miejsce. Jeszcze bardziej wątpię w ich zgodę na takie działanie.

HTTPS zamiast HTTP niewiele tu zmienia – oczywiście jest możliwość serwowania różnych treści w zależności od protokołu, podobnie jak strona z przedrostkiem www (de facto subdomena) z technicznego punktu widzenia może kierować zupełnie gdzie indziej, niż domena bez takiego przedrostka, ale przyjęte jest, że kierują w to samo miejsca. W przypadku HTTPS jest to IMO wręcz oczywiste.

Pamiętajmy też, że strony WWW, zwłaszcza popularniejsze blogi, potrafią po prostu sprzedawać miejsce na reklamę na stronie. Wydaje mi się, że w przypadku takich blogów wykazanie szkody w sądzie byłoby trywialne. Dlatego podejście zenbox.pl do sprawy mnie dziwi. Jak widać w komentarzach na blogu, mamy kolejno:

  1. straszenie „na takie działania godzić się nie można i zrobimy wszystko aby takie akcje miały konsekwencje”
  2. negacja, najpierw problemu w ogóle (screenshot w ww. wpisie), potem wpływu „działania nie mają wpływu na pozycję stron klientów ani wpływu na pozycję witryny zenbox.pl”
  3. przyznanie istnienia problemu „wspomnianego problemu nie doświadczyli” i w końcu podjęcie działań (zmiana konfiguracji, mailingi)

Wydaje mi się, że znacznie bardziej na miejscu byłaby analiza sytuacji, podziękowanie za zwrócenie uwagi, naprawienie problemu (poprawa konfiguracji) i przeproszenie klientów.

Cała sprawa ma jeszcze jeden ciekawy aspekt. Wydaje mi się, że największy błąd popełniło… Google, które podmienioną treść na stronie jak widać łyka jak pelikan. Mimo ewidentnych błędów HTTPS (certyfikat nie pasuje do domeny), które m.in. przed taką podmianą miały chronić. W czasach, gdy każda domena może mieć rozpoznawany przez przeglądarki certyfikat SSL za darmo (oczywiście chodzi o projekt Let’s Encrypt) strony za niepasującymi, wygasłymi i self signed certyfikatami powinny po prostu być ignorowane.

Prawidłowa konfiguracja to IMHO ta sama treść dostępna po HTTP i HTTPS. Czy to za sprawą odpowiedniego przekierowania (to sensownie uda się tylko z HTTP na HTTPS…), czy też – zwł. na shared hostingu – pod certyfikatem hostingodawcy, jeśli domena nie ma własnego.

Rozważania o blokowaniu ekranu

Przy okazji trwającej dramy dotyczącej xscreensavera w Debianie[1] przypomniał mi się pokrewny temat, o którym miałem robić wpis jakiś czas temu. Chodzi o blokadę dostępu do komputera, niezależnie od używanego systemu (Windows, Linux, OS X). Tradycyjnie jest to jakiegoś rodzaju wygaszacz ekranu, który po pierwsze blokuje możliwość odczytu danych z ekranu, po drugie, blokuje możliwość wprowadzania danych do uruchomionych programów. Do odblokowania zwykle konieczne jest podanie przez użytkownika hasła do systemu.

Rozwiązanie znane jest od dawna i wydawać by się mogło, że to wystarczy, ale czy tak jest faktycznie? Coraz więcej danych jest wprowadzanych i odbieranych z komputera nie tylko przy pomocy klawiatury i ekranu, ale także przy pomocy innych urządzeń. Programy do komunikacji VoIP, czy to Skype, czy aplikacja dostępna przez przeglądarkę typu appear.in czy hubl.in, po zablokowaniu ekranu nadal działają. Umożliwiają i odsłuchiwanie połączonych osób, i przekazują dane z otoczenia do nich. Zarówno za pośrednictwem audio, jak i video. Blokada ekranu co prawda wyłączy możliwość podglądu naszego rozmówcy, ale już nie wyłączy naszego webcama…

Jak na razie nie wiem nic o alternatywach dla wygaszaczy ekranu, które w momencie aktywacji blokowałyby nie tylko klawiaturę i ekran, ale dodatkowo wyłączały webcam(y) oraz wyciszały (mute) audio[2]. Pobieżne testy urządzeń z Androidem pokazują, że także na nich problem jest aktualny, przynajmniej w zakresie dźwięku. Warto po prostu pamiętać, że zablokowany komputer czy telefon w naszym otoczeniu wcale nie musi być tak do końca zablokowany…

[1] Skomentowałem u developera na blogu i wystarczy, wpisu nie będzie, sytuacja jest IMHO żenująca, więc szkoda klawiatury – jeśli ktoś ma cierpliwość, to wystarczy śledzić podlinkowane źródła.

[2] Jeśli istnieją systemy z takimi rozwiązaniami, albo samodzielne aplikacje, to chętnie poznam – u nikogo z nowszym Windowsem nie widziałem takiego rozwiązania.

Letsencrypt i lighttpd – HOWTO

Czym jest Let’s Encrypt wie już chyba każdy, kogo interesują certyfikaty SSL, ale wypada jakieś wprowadzenie napisać, więc: to prosty sposób na odnawialne automatycznie, rozpoznawane przez przeglądarki, bezpłatne certyfikaty SSL dla każdego. Projekt jest w fazie public beta, więc przystąpić może każdy, stoją za nim duzi (przykładowi, bardziej znani sponsorzy: Mozilla, EFF, Cisco, OVH, Google Chrome, Facebook), więc raczej coś z tego będzie i jest krokiem w kierunku zwiększania bezpieczeństwa w sieci pod hasłem wszystko po HTTPS (które to rozwiązanie ma wady, ale o tym już było).

Let's Encrypt logo

Źródło: https://letsencrypt.org/trademarks/

Ponieważ właśnie dostałem maila od Let’s Encrypt, że wygenerowany przez nich, darmowy certyfikat SSL dla mojej domeny wygasa, postanowiłem skorzystać z największego dobrodziejstwa, czyli zautomatyzować całość. Prosty skrypt, który zadziała dla lighttpd i jednej domeny:

#!/bin/bash LECMD="/opt/bin/letsencrypt/letsencrypt-auto"DOMAIN="mojadomena.com"WEBROOT="/var/www/mojadomena.com/html/"EMAIL="adres@email"$LECMD --renew-by-default -a webroot --webroot-path $WEBROOT --server https://acme-v01.api.letsencrypt.org/directory --email $EMAIL --text --agree-tos -d $DOMAIN authcat /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/letsencrypt/live/$DOMAIN/cert.pem > /etc/letsencrypt/live/$DOMAIN/ssl.pemservice lighttpd restart

Zakładam oczywiście, że skrypt letsencrypt jest pobrany z gita, masz dostęp do roota, lighttpd jest skonfigurowane i ma podpięty certyfikat SSL. Plus, że w konfiguracji lighttpd jest linia w stylu:

ssl.pemfile = "/etc/letsencrypt/live/mojadomena.com/ssl.pem"

To co wyżej to sama esencja, brakuje choćby kontroli błędów/statusu wykonania poleceń, ale wywołane z ręki działa i pewnie dodam do crona wykonywanie raz w miesiącu (wzmocnione przez && w ramach „kontroli błędów”). Opisuję, by mi nie zginęło, poza tym, widziałem albo skrypty automatyzujące, albo opisy uruchomienia letsencrypt z lighttpd, więc liczę, że zebrane do kupy się komuś przyda.

UPDATE Wpis się lekko zdezaktualizował o czym więcej w tym wpisie. A krótko: jest gotowiec od EFF o nazwie Certbot do automatycznego zarządzania darmowymi certyfikatami SSL Let’s Encrypt, z opisami dla różnych serwerów.

Włamanie na serwery Minta

Jak donosi blog Minta, atakujący wykradli bazę danych (pełną – hash hasła, adres email, wiadomości prywatne) użytkowników forum, udało im się też podmienić linki na stronie kierując do wyposażonego w backdoora ISO.

Z racji zamykania Joggera trochę przeglądałem stare wpisy i widzę, że to nie pierwszy raz i nic nowego[1]. W roku 2008 doszło do włamania na serwery Fedory oraz Red Hata. Wtedy atakującym udało się nawet podpisać pakiety SSH w Red Hacie, co uważam za groźniejsze. Włamanie na serwery Linux Mint przypomina mi zatem póki co bardziej to, co spotkało choćby TAILS, czyli jedynie naruszenie dystrybucyjnego „frontendu”, bez dostępu do kluczowych elementów dystrybucji.

Warto przypomnieć o sprawdzaniu podpisów pobranych ISO[2]. I nie chodzi mi o sumy kontrolne typu MD5 czy SHA1, które są zamieszczane na stronach WWW, a o podpisy GPG, które dobrze opisuje strona TAILS. Suma kontrolna weryfikuje jedynie brak przekłamań przy pobieraniu i zapisie. Pobieranie przy pomocy protokołu torrent również nie jest gwarancją autentyczności ISO! Pojawiają się informacje, że ISO Linuksa Mint pobrane przez torrent były bezpieczne, ale stało się tak tylko dlatego, że przypadku atakujący po prostu nie pomyśleli o publikacji zainfekowanej wersji ISO przez torrent i podmianie plików torrent na stronie.

[1] Widzę też, że kiedyś pisałem o takich drobiazgach na blogu, teraz bym pominął, gdybym nie znalazł tamtego wpisu… Czasy się zmieniają, ludzie się zmieniają nawet nar^Wblogi się zmieniają.

[2] Na temat kontenerów różnej maści tym razem będę litościwie milczał.

Panoptykon narzeka na ministerstwa i blokowanie Tora

Fundacja Panoptykon po raz kolejny narzeka na blokowanie przez ministerstwa IP, na którym mają uruchomiony węzeł Tor (relay-node). Sytuacja skłoniła mnie do wpisu, bo mam wrażenie, że zachodzi grube niezrozumienie tematu. Z obu stron…

Logo projektu Tor

Źródło: https://media.torproject.org/image/official-images/2011-tor-logo-flat.svg

 

Czy warto blokować ruch z sieci Tor?

To zależy. Ruch z sieci Tor pozwala na łatwe uzyskanie stosunkowo wysokiej anonimowości w sieci. Z jednej strony jest to wykorzystywane do anonimowej komunikacji przez zwykłych ludzi, z drugiej jest wykorzystywane do nadużyć i wandalizmu. Ze znanych serwisów wymienionych w FAQ – Wikipedia blokuje edycję artykułów z sieci Tor, podobnie Slashdot. Oczywiście takich serwisów jest o wiele więcej. Po prostu stosunek sygnał/szum jest w przypadku sieci Tor wyjątkowo niski.

Są też inne, poważniejsze powody do blokowania. O ile sieć Tor ma raczej słabą przepustowość i nie nadaje się do ataków wolumetrycznych, to zdecydowanie ułatwia łatwe, anonimowe ataki na aplikację, SQLi itp. Czyli raj dla script kiddies. I dokładnie taki jest oficjalny powód podany przez rzecznika ABW cytowany na Niebezpieczniku.

Jak blokować ruch z sieci Tor?

Autorzy projektu Tor podkreślają, że wezły sieci Tor mają indywidualne polityki, ale.. Patrząc z punktu widzenia administratora serwisu docelowego i ekonomii działania: sieć Tor to jakieś ułamki promila ruchu, w dodatku często ruchu niepożądanego. Jeśli ktoś zdecyduje się już blokować ruch z sieci Tor, to raczej nie będzie bawił się w polityki poszczególnych węzłów, tylko zablokuje wszystkie. Czy to na poszczególnych maszynach, czy to na centralnym firewallu, czy wręcz null-route’ując na routerach ruch kierowany do węzłów Tor (co uniemożliwi komunikację TCP). Ostatnia metoda jest i prosta w implementacji, i prosta w utrzymaniu (centralne miejsce do zarządzania), i wydajna.

Z których węzłów ruch blokować?

Tu jest pies pogrzebany. Fundacja Panoptykon nie prowadzi exit node, czyli nie przekazuje ruchu z sieci Tor do „normalnego internetu”. Niestety, oficjalne narzędzia udostępniane przez projekt Tor IMO nie są zbyt przyjazne administratorom (szczególnie tym, którzy są mniej świadomi zasad działania Tora lub którzy nie mają czasu). Blokowanie wszystkich węzłów Tora widziałem spotkałem, zarówno jako użytkownik końcowy (tak, relay node w domu, ruch z normalnego IP i komunikat o niewpuszczaniu z sieci Tor w serwisie), jak i administrator. Przede wszystkim brakuje oficjalnej listy węzłów wyjściowych łatwej do przetwarzania, czyli zawierającej same IP. Przypominam, że pisałem we wpisie o blokowaniu węzłów Tor, że udostępniam taką listę. Tylko exit nodes, tylko adresy IP.

Podsumowując, obie strony są winne:

Dziwią mnie żale ze strony Panoptykonu, gdy sytuacja jest typowa i opisana w FAQ Tora:

You might also find that your Tor relay’s IP is blocked from accessing some Internet sites/services. This might happen regardless of your exit policy, because some groups don’t seem to know or care that Tor has exit policies. (If you have a spare IP not used for other activities, you might consider running your Tor relay on it.)

Jak widać, projekt Tor zaleca prowadzenie węzłów na oddzielnych IP, nieużywanych do innych usług. Tak, wiem, sekcja dotyczy węzłów wyjściowych, ale idę o zakład, że pomysłodawca/admin w Panoptykonie nie czytał. Poza tym, zdrowy rozsądek zaleca analizę możliwych konsekwencji przed uruchomieniem usługi i stosowanie oddzielnych IP w tym przypadku.

Dziwi mnie też implementacja blokowania Tora na rządowych serwerach, wskazująca na niezrozumienie tematu. Oczywiście nie mam złudzeń co do korzystania przez nich np. z mojej listy (sam bym tego na ich miejscu nie zrobił), ale samodzielna implementacja to nie rocket science… Plus, niezrozumienie tematu może prowadzić do fałszywego poczucia bezpieczeństwa – tak naprawdę nie sposób zablokować 100% ruchu z sieci Tor, przynajmniej nie w oparciu o adresy IP.

Obciach jest chwilowy, popularność jest wieczna

Pewna rodzina z Poznania (albo okolic) postanowiła wstawić sobie do niemal całego domu kamery, udostępnić w internecie i poszukać sponsorów. Albo rozgłosu. Rodzina składa się z dorosłych, którzy decydowali, oraz dzieci, które głosu zapewne nie miały, a nawet jeśli miały, to raczej nie rozumiały, co się dzieje naprawdę. Zresztą, wiele wskazuje na to, że nie do końca wiedzieli i rodzice…

O całej sprawie można poczytać nieco więcej u Lotty, mnie zdumiały niektóre aspekty. Po pierwsze, wygląda na to, że sąd w ekspresowym tempie nakazał rzecz dość dziwną, mianowicie wyłączenie kamer. I jest to podyktowane rzekomo prawem do prywatności dzieci. Zastanawiam się, gdzie tu miejsce na odwołanie, uprawomocnienie wyroku itp. Zastanawiam się też, gdzie leży granica. Bo jakoś usuwania np. zdjęć dzieci zamieszczonych przez rodziców w internecie nikt usuwać nie każe, a przecież też bez zgody dzieci są publikowane i niekoniecznie z „oficjalnych” okazji. Różnica czy obraz ruchomy czy statyczny? Cóż, obowiązku posiadania firan czy zasłon w oknach w domu też nie ma, ciekawe, czy rodzinami w domach bez zasłoniętych okien też się sąd interesuje?

 

Po drugie, dziwi mnie poruszenie wokół sprawy. Przecież to taki nieudolny, amatorski Big Brother, bez profesjonalnej obsługi, bez napięcia i bez reżyserowania czy selekcji. Podobnie jak w tym programie, uczestnicy sprzedają na chwilę swoją prywatność, w zamian otrzymując pieniądze i zyskując rozgłos. Stąd tytuł. Czy to się opłaca? Patrząc na stronę na Wikipedii poświęconą polskiej edycji Big Brothera – wszystko to już było, te same kontrowersje, te same motywacje. Nie było jedynie dzieci. Czy uczestnikom udało się zdobyć popularność? Z tego co kojarzę, to tak, bo do tej pory potrafi mi w TV mignąć o kimś, że brał udział. Sprawdziłem na ww. stronie – jest ich więcej, choć procentowo mniej, niż się spodziewałem. Cóż, gwarancji sukcesu nie ma.

Po trzecie, kamery (i mikrofony) są wszędzie i mało kto zdaje sobie sprawę z rozmiarów inwigilacji i możliwości podglądu/podsłuchu. Dobra okazja by przypomnieć grafikę z dawnego wpisu:

Cameras are recording your life 24 hours a day. Think about it.Zdjęcie grafiki na murze, IIRC Nowy Sącz.

Coraz więcej urządzeń, które posiadamy, jest wyposażonych w kamerę lub mikrofon oraz dostęp do sieci. Smartfon, tablet, telewizory, komputery… Wbudowany mikrofon posiada też na przykład Banana Pi (komputer, jakby nie patrzeć). Dedykowane kamery IP montowanych samodzielnie w domach czy teoretycznie zamknięte systemy monitoringu są oczywiste. Wszystkie te urządzenia mogą być (i są!) wykorzystywane do podglądu/podsłuchu przez producentów urządzeń i oprogramowania (Facebook!, Google!), służby (to jakby oczywiste i chyba w sumie najlepiej – przynajmniej teoretycznie – obwarowane prawnie)  i… włamywaczy komputerowych. Zresztą część kamer IP jest po prostu wystawiona do sieci, nawet włamywać się nie trzeba. Zabezpieczenia tego typu sprzętu wielowymiarowo leżą. Poczynając od udostępnienia w sieci przez samego użytkownika, przez niezmienione domyślne hasła[1] po… błędy producenta, typu niemożliwe do zmiany hasło „serwisowe”.

 

Stawiam, że 99% (źródło: sufit, chodzi o skalę) ludzi nie zdaje sobie sprawy z tego, co naprawdę potrafi zrobić (i robi!) ich urządzenie. Czy różnica, czy obserwuje/podsłuchuje nas obsługa producenta, czy losowi ludzie jest naprawdę tak wielka? Naiwna wiara, że systemy monitoringu obsługują jacyś inni ludzie, niż losowi? Kto ma świadomość, że kamera w laptopie może pracować bez zapalonej diody? Kto zamontował fizyczne zabezpieczenie na kamerze w laptopie (polecam wpisać laptop camera cover w wyszukiwarkę)? Co z mikrofonem, który „odciąć” znacznie trudniej i który od zawsze jest aktywowany bez choćby próby fizycznego powiadamiania użytkownika?

Warto też pamiętać, że „publiczne” kamery bywają umieszczane w niezupełnie publicznych miejscach. Typu łazienki/toalety w urzędzie. A monitoring osiedlowy może umożliwiać pracownikom zaglądanie do mieszkań. O kamerach w przedszkolach itp. nie wspominam (a bywają, niekoniecznie zabezpieczone).

Ostatnia sprawa to konsekwencje. W znacznej mierze zgadzam się z twierdzeniem, że to społeczeństwo jest chore (nie owa rodzina). No bo czy ktoś normalny będzie gapił się w te kamery i robił „żarty”, ocierające się o stalking? Nawiasem, stawiam, że nawet gdyby rodzina nie podała namiarów na siebie na stronie, to stalkerzy szybko by ją namierzyli… Faktem jest, że wygląda, że rodzice – przy swojej prymitywnej motywacji – niezupełnie zdają sobie sprawę co się dzieje i jakie są konsekwencje ich działań.

Na koniec: nie, nie popieram tego, co robi ta rodzina. Dziwi mnie jedynie, że ludzie, którzy to znaleźli nie wytłumaczyli im po prostu, czemu robią źle, tylko zaczęli zamawiać pizzę itp. I dziwi mnie pójście na noże, sąd, zamiast wizyty kogoś z instytucji zajmującej się prawami dzieci. Tym bardziej, że IHMO akurat prawnie nie sposób zabronić udostępniania takiego „odsłoniętego okna” w postaci kamer.

Natomiast jest to kolejna okazja do przypomnienia ludziom o wszechobecności kamer i mikrofonów. I o konieczności aktualizacji oprogramowania i zabezpieczenia dostępu, szczególnie do kamer IP.

[1] Insecam.org to serwis, który podaje namiary na kamery z niezmienionym hasłem, dostępne w sieci, z podziałem na kraje i kategorie. Aktualnie z Polski jest 95 kamer, w tym pokazujące obraz z wnętrz różnego rodzaju.

Spam o grze na giełdzie – wzorzec, sprawdź logi

Od pewnego czasu dostaję sporo spamu dotyczącego gry na giełdzie. Polsko brzmiące From, w treści zwykle niemieccy uczeni, gra na giełdzie, sztuczna inteligencja oraz całą dobę. W różnych wariantach. Do tego link do strony.

Z tego co mi się obiło o ekran, nie tylko ja to dostaję, a z tego co widzę po skrzynkach – filtry nadawców sobie nie radzą. Poza tym, myślałem, że się skończyło, ale widzę, że nadchodzi kolejna fala.

Zgłaszałem do SpamCopa (nie bez trudności) i akurat w tej kwestii dostałem kilka odpowiedzi z podziękowaniami za zwrócenie uwagi na problem, poza tym, jest charakterystyczny ciąg w URLu, więc wygląda na działanie jakiegoś niezbyt znanego robaka.

Mianowicie wszystkie(? albo prawie wszystkie) URLe, do których odsyłają maile ze spamem zawierają ciąg:

.php?b=2

Zapewne jeśli prowadzi serwer WWW, to warto grepnąć logi pod tym kątem. Kod 200 będzie oznaczał, że prawdopodobnie strona jest zainfekowana.

Zatem prośba do adminów WWW o sprawdzenie logów pod tym kątem, a do adminów poczty o próbę uwzględnienia tego w regułach antyspamowych.

PS Jakby przyjrzeć się bliżej, to pewnie nawet okaże się, że problem dotyczy tylko starej wersji któregoś CMSa, ale tego nie chce mi się już analizować.