Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
#F12IsNotACrime, czyli opowieść o zaglądaniu w kod źródłowy [Czwartki z OSINTem]
Chociaż śledztwa OSINT-owe z wykorzystaniem metod wizualnych, takich jak badanie zawartości zdjęć czy map, są bardzo spektakularne, to analiza kodów źródłowych stron internetowych także może dawać ciekawe rezultaty. Dzisiaj przyjrzymy się nieco bliżej temu, co możemy znaleźć w kodzie i jak to wykorzystać.
Prześmiewcza wersja okładki w stylu serii książek o tematyce IT (źródło: Twitter)
Zacznę jednak od historii będącej dla niektórych źródłem wątpliwości, czyli od pytania, czy można zaglądać do „wnętrza” stron i portali w Internecie bez obawy o konsekwencje z tego wynikające. Na początku października 2021 roku Josh Renaud, dziennikarz gazety “Post-Dispatch” z St. Louis w stanie Missouri, odkrył, że z kodu źródłowego strony stanowego Departamentu Edukacji Podstawowej i Ponadpodstawowej (DESE) można odczytać ponad 100 000 numerów ubezpieczenia społecznego (SSN, Social Security Numbers) należących do nauczycieli. Dla uproszczenia można powiedzieć, że te dziewięciocyfrowe identyfikatory to amerykańskie odpowiedniki naszych numerów PESEL.
Dziennikarz zgłosił ryzyko wycieku danych do DESE i opublikował artykuł informujący o tym incydencie, kiedy problem został usunięty. Niedługo po tym zamiast podziękowań, spotkała go niemiła niespodzianka – gubernator Mike Parson wystąpił z oświadczeniem, że był to hacking i domagał się wyciągnięcia konsekwencji prawnych wobec dziennikarza. W wypowiedzi Komisarz ds. edukacji Margie Vandeven na ten temat pojawiła się nawet informacja, że dane nauczycieli zostały „odszyfrowane” z kodu strony. Trudno w tej chwili powiedzieć, czy chodziło tutaj o samo odczytanie informacji ze źródła strony i to nazwane zostało „odszyfrowaniem”, czy też faktycznie do ich przechowywania zastosowano np. kodowanie Base64. Niemniej w żadnym z tych przypadków nie można de facto mówić o szyfrowaniu, a co najwyżej o zmianie formy zapisu danych. Base64 jest często wykorzystywany do kodowania informacji w Internecie ze względu na ograniczoną liczbę znaków używanych do zapisu, co ułatwia na przykład przekazywanie dowolnych wartości w adresach URL bez obawy o problemy związane z kodowaniem znaków.
Gubernator Mike Parson o „konwertowaniu i dekodowaniu kodu” strony internetowej
Wracając jednak do naszej historii, po kompromitujących wypowiedziach gubernatora Parsona, na sile przybrała akcja z hashtagiem #F12IsNotACrime, czyli „F12 to nie przestępstwo”. F12 to klawisz, którego naciśnięcie otwiera w ogromnej większości przeglądarek internetowych narzędzia deweloperskie, umożliwiające podejrzenie nie tylko kodu źródłowego strony, ale także informacje dotyczące błędów, przesyłanych mediów, ciasteczek i innych danych oraz na temat wydajności strony.
Innym przypadkiem, kiedy w kodzie strony umieszczono informacje, które nie powinny być ogólnodostępne, jest wydarzenie, które miało miejsce pół roku wcześniej. Wówczas to holenderskie Stowarzyszenie Gmin Niderlandów (VNG) musiało zdjąć stronę internetową opeventuitslag.nl ze względu na możliwość podglądu frekwencji i rezultatów wyborów parlamentarnych, właśnie dzięki przeglądaniu kodu źródłowego.
Kod strony potrafi być kopalnią danych także podczas śledztwa OSINT-owego. Jedną z informacji, którą można w ten sposób uzyskać, jest identyfikator konta Google czy Microsoft, co pokazywałem w innym artykule na sekuraku. W ramach sekurakowych szkoleń OSINT master także niejednokrotnie zaglądamy w źródła witryn w Internecie.
Innym interesującym elementem zawartym w kodzie wielu stron są identyfikatory Google Analytics. Usługa o tej nazwie pozwala właścicielom witryn śledzić statystyki dla wybranych stron. Jeden identyfikator może być wykorzystywany na różnych stronach i domenach, dzięki czemu umożliwia powiązanie danej witryny z innymi, co z kolei może znacznie ułatwić ustalenie powiązań danego serwisu z konkretnymi osobami. Identyfikator konta w Google Analytics ma postać: UA-XXXXXXXX, a w formie z dodanym na końcu numerem usługi, wygląda następująco: UA-XXXXXXXX-Y (X i Y oznaczają dowolną cyfrę).
W 2017 roku w RPA właśnie dzięki analizie Google Analytics ID dziennikarzowi Janowi Cronje udało się wpaść na trop prowadzący do właściciela stron związanych z teorią o powstrzymywaniu przemian w Afryce Południowej, znanych jako narracja „white monopoly capital”. W ramach śledztwa, oprócz Google Analytics, ważne okazały się także identyfikatory Google Adsense (usługi reklam kontekstowych od Google).
Powiązania domen w ramach południowoafrykańskiego śledztwa (autor grafiki: Justin Seitz)
Aby sprawdzić, czy można prześledzić powiązania na podstawie powyższego identyfikatora, zajrzymy w kod strony gazety “The Guardian”. Po naciśnięciu klawisza F12 lub wybraniu opcji pokazania źródła strony z menu kontekstowego (dostępnego po naciśnięciu prawego przycisku myszy na stronie, najlepiej poza elementami graficznymi), możemy w pole wyszukiwania wpisać ciąg znaków „UA-”, co wskaże nam miejsca, w których znajduje się poszukiwany identyfikator. Do dalszej analizy można wykorzystać serwisy SpyOnWeb lub DNSlytics, które na podstawie podanego identyfikatora zwrócą nam listę powiązanych serwisów internetowych. Zawsze warto jednak pamiętać, by nie ufać ślepo otrzymanym wynikom, chociażby dlatego, że taki ciąg znaków w kodzie swojej strony może umieścić każdy.
Na stronie “The Guardian” ciekawą zawartość ma jeszcze jeden element, na który także warto zwracać uwagę podczas poszukiwań OSINT-owych. Są to komentarze, pozostawione przez twórców serwisu – czy to w celu ułatwienia sobie pracy, czy też przez roztargnienie. Mogą się w nich znaleźć wskazówki dotyczące wyłączonych lub jeszcze niedostępnych stron, informacje o technologii użytej do wykonania strony albo dane dostępowe lub osobowe. Oczywiście w kodzie strony będą widoczne tylko komentarze umieszczone w elementach HTML – jeśli kod strony pisany jest na przykład w PHP, to komentarze z kodu nie znajdą się w wynikowym kodzie strony (chyba że specjalnie je tam umieścimy). Na poniższym zrzucie ekranu widać, że w kodzie strony zawarte zostało ogłoszenie, kierowane do osób, które wiedzą, jak ten kod wyświetlić i wpadną na to, by to zrobić.
Ogłoszenie w kodzie strony internetowej “The Guardian”
Nie wiadomo, jaka przyszłość czeka Google Analytics w Europie, gdyż w toczącej się od lat batalii europejskich organów ochrony danych nastąpił przełom i austriacki Urząd Ochrony Danych wydał decyzję dotyczącą łamania postanowień RODO przez Google. Wynika to z faktu, że dane z Google Analytics są przesyłane poza obszar Unii Europejskiej. Czy zatem Google zmieni konfigurację tak, żeby dane trafiały na serwery europejskie, czy też odetnie Europejczyków od tej usługi – czas pokaże.
W kodzie źródłowym stron można znaleźć jeszcze wiele innych ciekawych informacji. O nich jednak opowiem w kolejnych częściach. I pamiętajcie: #F12IsNotACrime.
OSINT case 04 – podsumowanie i rady |
Każdy może zajrzeć w kod źródłowy strony internetowej, więc wszystkie informacje tam zawarte należy traktować tak, jak gdyby znajdowały się na stronie. Taka jest idea działania WWW.Często informacje dostępne w kodzie źródłowym, takie jak identyfikatory śledzenia lub komentarze, mogą wskazać faktycznego autora lub właściciela witryny.Nie wszystko jest zapisane tekstem jawnym, niekiedy trzeba odkodować dane z Base64. Dobrze jest też znać notację JSON oraz sposób przekazywania parametrów metodą GET w URL-ach. |
Krzysztof Wosiński, @SEINT_pl