08-12-2020 / Podcast

Czego nie wiesz o złośliwym oprogramowaniu

Wprowadzenie

Nie każde złośliwe oprogramowanie od razu niszczy lub kradnie Twoje dane. Jeżeli popatrzymy na starsze przykłady malware'u - często zobaczymy, że były to zabawne programy pokazujące kunszt twórców. Stanowiły pokaz umiejętności programowania i prezentowały niezwykłe możliwości systemu.

Hydra
https://archive.org/details/malware_HYDRA_II.COM

Ale to już przeszłość. W dzisiejszych czasach chodzi głównie o zysk - jak zarobić na tych, którzy uruchomili niebezpieczne oprogramowanie. Widok taki jak tutaj - może więc przestraszyć - zwłaszcza jeżeli jesteś prezesem dużej firmy. No bo wyobraź sobie, że przychodzi do Ciebie księgowa i informuje Cię że wszystkie dane finansowe znikły. Albo mówiąc bardziej szczegółowo - zostały zaszyfrowane.

Ransomware
https://avlab.pl/aktualizacja-3-podpowiadamy-jak-zabezpieczyc-komputery-przed-ransomware-wannacry/

Te przykłady przebijają się do mediów głównego nurtu - i dobrze, bo potrzebna jest edukacja w tym zakresie. Zwłaszcza, że głównym czynnikiem infekcji jest błąd ludzki - uruchomienie złośliwego załącznika z poczty czy otwarcie dokumentu tekstowego i włączenie makra. Ale malware to bardzo szeroka grupa - podzielona na wiele mniejszych kategorii. A każda z nich na swój sposób jest interesująca.

Malware to nie tylko szyfrowanie

Bo malware potrafi zaskoczyć - nawet jeżeli pracuje się z nim od lat. Co chwilę natrafiamy na nowe techniki wykorzystywane przez przestępców, które mają kilka celów.

  • Po pierwsze - ukryć działanie oprogramowania w komputerze.
  • Po drugie - przetrwać ponowne uruchomienie maszyny.
Oglądasz te filmy?

Pracujesz zdalnie? Zasłaniasz kamerę? Czujesz się obserwowany? Zapewne nie jeden z nas ma takie myśli - czy aby ktoś nas nie podgląda? No bo co wtedy? Zobaczy, że gotujemy obiad albo sprzątamy mieszkanie. A może zauważy coś jeszcze?

Podglądanie

Takie wątpliwości mogą pojawić się w Twojej głowie, ale po chwili oddajesz się prozie życia. No chyba, że na Twoją skrzynkę mailową przyjdzie mail. Nic niezwykłego ot, kolejna wiadomość od kogoś lub newsletter reklamujący niesamowitą promocję na pralki i lodówki.

Otwierasz, czytasz, a Twoja twarz robi się coraz bardziej czerwona. Ktoś uzyskał dostęp do Twojej kamery i nagrał wszystko, powtarzam wszystko co robiłeś.

Przestraszyłbyś się?

Na szczęście - to tylko SCAM, próba oszustwa. Bo jeśli przestępca wyśle takiego maila do miliona użytkowników, to zapewne znajdzie się jakiś procent, który nie będzie pewny swoich poczynań i wpłaci odpowiednią kaucję.

Proste hasła

Nie przekonałem Cię? Takie wiadomości można dodatkowo uwiarygodnić. Bo co, jeśli w treści maila znajduje się hasło? I to nie byle jakie - ale takie, którego kiedyś używałeś bądź dalej używasz? To nie może być przypadek - coś musi być na rzeczy.

No ale jak to możliwe?

Odpowiedź jest dużo prostsza niż myślisz. Co roku, różne bazy danych padają celem złodziei. Część tak wykradzionych danych trafia następnie do Internetu, gdzie można ją pobrać - jeżeli tylko wiesz gdzie można znaleźć takie dane. Potem wystarczy już tylko złamać hasła i wysłać maile. Jeżeli korzystasz z prostych haseł, złożonych z kilku liter - złamanie ich jest tylko kwestią czasu.

Spam

SPAM
https://visualhunt.com/f5/photo/155554663/89beb0ac63/

No dobrze, te przypadki mogą przestraszyć - ale jeżeli sprawdzałeś kiedykolwiek folder SPAM w swojej skrzynce mailowej - wiesz, że znajdują się tam różne wiadomości.

Nigeryjski przekręt

Może tak samo jak ja - jesteś spadkobiercą wielkiego króla w Nigerii? Wielki majątek, miliony dolarów czekają na Ciebie. Są tuż na wyciągnięcie Twojej ręki - musisz tylko uiścić drobną opłatę manipulacyjną. Wiadomo - prawnicy i notariusze swoje kosztują. Jest tylko jedno ale - te maile brzmią jak pisane przez translator. I pewno tak jest. Jest więc niemożliwe, żeby ktoś nabrał się na coś takiego? Też tak sądziłem - ale jest inna, prawdopodobna opcja dlaczego są tak źle napisane.

Jeżeli ktoś uwierzy w tak słabej jakości wiadomość - to znaczy, ze jest bardzo podatny na manipulację.

Wpada więc w sidła złodziei, którzy mogą próbować oszukać go na większe kwoty.

Denerwujemy się, że takie wiadomości czasami trafiają do naszej skrzynki. Jak to możliwe, że automaty ich nie wyłapały? Przecież to powinno być oczywiste. Nie do końca - zwłaszcza, jeżeli użyje się kilku sztuczek. Treść maila to zazwyczaj tekst. Ale niektóre znaki mogą być pogrubione, pochylone, podzielone na paragrafy.

To wszystko przez to, że większość klientów poczty rozpoznaje składnię HTML - czyli dokładnie tą samą, której używa się do tworzenia stron internetowych. A tu czeka na nas kilka niespodzianek. Używając stylów możemy zmieniać wielkość liter. Pozwala to na ustawienie kroju czcionki dla całej wiadomości, ale także dla pojedynczych wyrazów lub nawet liter.

Załóżmy, że słowo kluczowe Microsoft - jest zakazane.

A co, jeśli zamiast tego w mailu znajdzie się zdanie gdzie pierwsze litery poszczególnych wyrazów składają się na słowo Microsoft? Teraz wystarczy już tylko ukryć niepotrzebne litery ustawiając ich wielkość na zero i już. Automat widzi zdanie - człowiek natomiast wyraz - bo reszta liter jest ukryta.

https://www.avanan.com/blog/zerofont-phishing-attack

Ten sposób jest stary. Jak więc można oszukać automaty?

Plik WOFF

Strony Internetowe używają różnych czcionek - jedne ładnie wyglądają, inne przypominają pismo odręczne a jeszcze inne są czytelne w przypadku kodu źródłowego. Te czcionki znajdują się w tak zwanych plikach woff. To tam definiuje się jak wygląda każda konkretna litera.

Litery zamienione miejscami

W tym pliku każda litera ma swoje określone miejsce. Mówiąc w bardzo dużym  uproszczeniu - wyobraźmy sobie, że pierwsza litera to zawsze A, druga to zawsze B i tak dalej. Dzięki temu przeglądarka wie gdzie szukać wyglądu konkretnej litery. Czyli jeżeli ma wyświetlić literę D - to szuka jej pod 4 pozycją w pliku woff.

Jeśli tworzysz nową czcionkę to starasz się przestrzegać tych reguł. No bo jeśli ktoś pisze KOT to chciałby, żeby wyświetlił się właśnie taki wyraz a nie jakikolwiek inny - trzyliterowy. Ale przestępcy myślą inaczej. Technicznie rzecz ujmując, można bowiem zamienić litery miejscami. Czyli na pierwszym miejscu wstawić zawartość litery k a na trzecim miejscu wstawić wartość odpowiadającą literze p.

Co się wtedy dzieje? Przeglądarka (lub klient poczty) wyświetla na ekranie tekst, bazując na tym co znajduje się w pliku czcionki. A więc to, co znajduje się w tekście, a to co zostanie wyświetlone użytkownikowi - może się od siebie różnić. Popatrzmy na przykład.

Co widzi klient poczty

W treści maila znajduje się nic nieznaczące słowo akpcre. Filtr antyspamowy przepuszcza taką wiadomość - bo ten wyraz nie wydaje się być niebezpieczny i powiązany z czymkolwiek znanym. Teraz do gry wkracza przeglądarka. Otwiera plik z odpowiednią czcionką i wyświetla tekst użytkownikowi. Ponieważ w tym pliku litera a i k są zamienione miejscami - na ekranie wyświetla się wyraz zaczynający się na KA a nie AK - jak wcześniej.

Podobnie z literami PC i ER, które również są zamienione miejscami- co finalnie daje nam wyraz kacper. Sprytne - prawda?

Złośliwe rozszerzenia

Linki mogą być niebezpieczne

Jeżeli pracujesz w dużej korporacji, to pewno od czasu do czasu bierzesz udział w szkoleniach z bezpieczeństwa. Słyszysz tam, że pliki exe, pliki js czy vbs mogą być niebezpieczne. Że nie powinieneś klikać w nieznane Ci odnośniki - bo mogą zawierać niebezpieczne dane.

Pliki JSE i VBE

Tylko, że świat nie kończy się tylko na plikach wykonywalnych. Jest jeszcze wiele innych, czasami egzotycznych rozszerzeń, o których mogłeś nie słyszeć. No bo czy wiesz do czego służy VBE lub JSE?

VBS to język skryptowy stworzony przez Microsoft, stanowiący część rodziny języków Visual Basic. Z językami skryptowymi wiąże się jednak problem piractwa. Bo użytkownik końcowy, nie otrzymuje skompilowanego pliku exe - ale cały kod źródłowy aplikacji, który może otworzyć i przeczytać w dowolnym edytorze tekstu.

Z punktu widzenia programistów, którzy żyją z tworzenia kodu źródłowego - mogło to stanowić problem. No bo taki kod można dowolnie kopiować i dystrybuować bez płacenia za niego. Postanowiono więc rozwiązać ten problem i zaobfuskować plik, który trafia do użytkownika. Czyli zamieniamy go na postać, która dla typowego śmiertelnika jest nieczytelna i zupełnie niezrozumiała.

System operacyjny radzi sobie z nią jednak doskonale i wykonuje tak zakodowany program bez żadnych przeszkód. W wielkim skrócie właśnie tak działają pliki VBE.

Jak działa VBE
Po lewej stronie prosty program, wyświetlający okienko z napisem test - korzystając z funkcji echo. Po prawej stronie dokładnie ten sam program - ale poddany procedurze obfuskacji.

Jeżeli nie znasz tej technologii, otwierając taki załącznik w notatniku możesz odnieść mylne wrażenie, że to nieczytelny stek bzdur. Ale jeśli ten plik ma rozszerzenie vbe - to podczas jego uruchomienia może Cię spotkać niemiła niespodzianka. Bo jeśli nie odkodujesz takiego pliku, to tak naprawdę nie wiesz co on robi. Może wyświetlać messagebox, ale równie dobrze może usuwać pliki z dysku.

Fałszywy mail

Złośliwe mogą być też proste pliki HTML. Tutaj otrzymałeś fakturę od gazowni. Prosta sprawa - trzeba otworzyć załącznik, skopiować numer rachunku i wysłać przelew. Klikasz więc w plik i otwiera się przeglądarka.

Fałszywa faktura

Kolejne pytanie - o logowanie. Normalna rzecz - otworzyło się nowe okno przeglądarki, więc nie jestem zalogowany na swoją skrzynkę mailową. Ile osób zauważy, że to oszustwo? Że tak naprawdę nie jesteś na stronie Gmaila? Że obok paska adresu nie ma zielonej kłódeczki? Ile osób wie, że wpisując w to okno cokolwiek - wysyłamy te dane przestępcom?

Picture in picture

Logowanie steam

Myślisz, że nie z Tobą takie numery? A grasz w gry? Może masz konto na Steam? Wchodzisz na stronę z emaila gdzie proponują Ci grę za darmo. Jest tylko jedno ale - musisz się zalogować na swoje konto aby można było dodać do niego nową "platformówkę". Klikamy więc w przycisk zaloguj przy użyciu konta Steam.

Fałszywa strona logowania do Steam

Otwiera się nam kolejne okno przeglądarki. Adres jest prawidłowy, mamy zieloną kłódeczkę - wszystko wygląda w porządku. Jeżeli nigdy nie korzystałeś z takiego mechanizmu logowania - możesz być nieco podejrzliwy. Ale to rzeczywiście tak działa.

To podobny mechanizm jak logowanie do serwisu przy pomocy Googla lub Facebooka. Wchodzimy na stronę, klikamy odpowiedni guzik i jesteśmy przekierowywani do Googla.

Tam po zalogowaniu widzimy informację o stronie, która chce uzyskać nasze dane. Po zatwierdzeniu, system przesyła te informacje do zewnętrznej witryny. Dzięki temu nie trzeba na każdej stronie tworzyć osobnego, nowego konta.

No dobrze - pytanie brzmi - czy podałbyś tutaj swoje dane do Steama?

Jeśli tak to mam złą wiadomość - właśnie zostałeś oszukany. Jak to możliwe? Przecież adres strony się zgadza, strona korzysta z SSLa wszystko wydaje się być w porządku.

Atak picture in picture

Atak który tu widzisz to tak zwany picture in picture - czyli okno w oknie.

Nowo otwarte okienko przeglądarki, które wyświetliło się przy wciśnięciu guzika to nie jest prawdziwe okno przeglądarki. To odpowiednio spreparowany obrazek, który ma takie okienko przypominać. Owszem, można nim poruszać na prawo i lewo, działają w nim niektóre przyciski - ale to dalej tylko ładnie wyglądająca strona internetowa. Można to łatwo sprawdzić - tak spreparowanego okna nie jesteś w stanie przesunąć poza okno przeglądarki.

Pakiet Office

Złośliwe makro

Kolejną częstą formą ataku jest wykorzystanie złośliwych plików Worda lub Excela. Sam tekst nie stanowi większego niebezpieczeństwa. Złośliwe jest makro - czyli kod przygotowany przez programistę, który może zostać uruchomiony po otwarciu pliku.

Na całe szczęście - w standardowej konfiguracji - taka operacja nie zostanie wykonana automatycznie. Użytkownik musi ją potwierdzić.

Edytor wyświetla w tym celu odpowiednie ostrzeżenie, w którym informuje o potencjalnym niebezpieczeństwie. Tutaj przestępcy na różne sposoby, próbują przekonać użytkownika, żeby wykonał tą akcję.

Moim ulubionym jest "sztuczka na rozmyte tło".

Sporo firm korzysta z pakietu Office, ale nie zawsze z najnowszej wersji. Można to wykorzystać - wystarczy w treści wiadomości wkleić rozmyty obrazek. Potem dodajemy tylko informację, że jeżeli z Twoim dokumentem coś jest nie w porządku - to najprawdopodobniej korzystasz ze starej wersji oprogramowania. Problem ten można bardzo prosto rozwiązać - wystarczy tylko włączyć zawartość i wszystko zacznie działać prawidłowo.

Co najważniejsze - kliknięcie tego przycisku rzeczywiście pomaga. Bo przestępcy podmieniają wtedy treść wiadomości - w miejsce oryginalnego rozmazanego zdjęcia wklejają nowe - wyglądające normalnie. Problem w tym, że w tle mogły się wykonać inne, potencjalnie niebezpieczne operacje. A wina spada na użytkownika - bo je zaakceptował.

Jak wyglądają te makra? Zazwyczaj wykorzystują pewne specyficzne funkcje. W przypadku Worda jest to document_open, a w przypadku Excela: workbook_open.

Dlaczego akurat takie nazwy? Te funkcje są automatycznie uruchamiane podczas otwarcia dokumentu (lub arkusza) - o ile oczywiście użytkownik ma włączoną obsługę makr. Przez chwilę popatrz na te przykłady.

document_open

Coś wygląda podejrzanie? Coś nie pasuje?

Wyrazy wyglądają na losowe? Znaki nie układają się w logiczną całość?

Kot na klawiaturze

Wygląda to tak jakby kot nadepnął na klawiaturę? Masz rację - zazwyczaj właśnie tak wyglądają złośliwe makra. Ale dlaczego? Co jest powodem nazywania zmiennych i funkcji w tak dziwny sposób? Przecież zwykłe programy tak nie wyglądają.

Masz rację - to kolejny przykład obfuskacji. Takie złośliwe pliki generowane są w tysiącach egzemplarzy. Każdy plik wykonuje podobne operacje - ale korzysta z innych nazw zmiennych i inaczej nazwanych funkcji. Chodzi o to, aby każda potencjalna ofiara otrzymała inną kopię złośliwego pliku.

Ma to utrudnić ich blokadę przez firmy antywirusowe. Wykrycie jednego konkretnego pliku nie za wiele da - bo zapobiegniemy atakowi tylko u jednej osoby. Konieczne są inne, zaawansowane metody detekcji.

Dane ukryte w formularzach

Gdzie jeszcze można ukryć złośliwy kod? VBA - czyli język skryptowy stworzony przez Microsoft - pozwala nie tylko na wykonywanie kodu, ale także na tworzenie interfejsu graficznego. Programista może tworzyć formularze, ustawiać różne kontrolki i przyciski.

Do każdego takiego elementu można się odwołać na podstawie jego nazwy. Dla przykładu można sprawdzić czy użytkownik wpisał prawidłowe dane. Ale sam formularz - może zawierać przykładowe informacje.

Wyobraź sobie okienko logowania składające się z dwóch elementów.

  • Miejsca w którym podajesz login
  • Pola na hasło

W polu na login programista może podać wartość standardową - która wyświetla się, gdy użytkownik jeszcze nic nie wpisał do tego miejsca.

W naszym przypadku mógłby to być prosty napis: tutaj podaj adres email. Ale przecież może się tam znaleźć cokolwiek. I właśnie to wykorzystują przestępcy. Złośliwy kod chowają właśnie w takich elementach formularza - a potem odwołują się do nich bezpośrednio w kodzie. Mniej doświadczony analityk może przegapić takie drobnostki - jeżeli o nich nie wie.

Plik chroniony hasłem

Jak jeszcze można utrudnić analizę pliku? Można go zabezpieczyć hasłem.

Wtedy, aby go uruchomić, trzeba podać odpowiednią kombinację liter i cyfr. Bez niej plik jest zaszyfrowany - dane w nim przechowywane są bezużyteczne.

Jak ten mechanizm wykorzystują przestępcy? Wraz z załącznikiem w treści maila podają hasło - które ofiara musi wpisać w odpowiednie pole aby zobaczyć fakturę za Internet.

Tylko, że takie rozwiązanie ma jeden problem - słabo działa.

Dlaczego? Mało kto czyta maile ze zrozumieniem. Widzisz odnośnik? Klikasz aby go otworzyć. A że pyta o hasło? Jakie hasło? Nie znam żadnego hasła - zamykasz program i wracasz do swoich zadań.

Standardowe hasło w Excelu
https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/404647/comments/24

A dla twórców malware'u to problem. Każdy nieotwarty załącznik zmniejsza prawdopodobieństwo zarażenia nowego komputera. Jak zatem równocześnie zabezpieczyć plik, ale z drugiej strony nie musieć prosić użytkownika o podanie hasła?

Jakiś czas temu okazało się, że Excel posiadał standardowe hasło. Czyli podczas próby otwarcia arkusza program najpierw próbował automatycznie otworzyć plik korzystając ze standardowego hasła VelvetSweatshop.

Oczywiście to hasło nie było dobrze udokumentowane i mało kto zdawał sobie z niego sprawę. O jego istnieniu dowiedzieli się jednak twórcy złośliwego oprogramowania. I nagle zaczęli wysyłać zaszyfrowane arkusze - które w Excelu otwierały się prawidłowo (bez pytania użytkownika o hasło). W innych jednak narzędziach do analizy - nie działały.

Formuły

Excel to oprogramowanie, które istnieje na rynku bardzo długo. Nic więc dziwnego, że dodawane są tam coraz to nowsze funkcjonalności. Ale co ciekawsze - te stare zazwyczaj również tam pozostają. Wszystko za sprawą kompatybilności. Jeżeli ktoś 15 lat temu stworzył coś co działa - chcemy aby działało mu dalej - bez konieczności przepisywania żadnego kodu. Oprócz kodu VBA Excel pozwala na używanie formuł.

SUM

Na pewno sam z nich nie raz korzystałeś. Chcesz poznać sumę liczb? Używasz słowa kluczowego SUM.

Czyli SUM(2+1) zwróci nam liczbę 3 - wynik dodawania 2+1.

Niektóre formuły działają w specjalnych arkuszach. Gdy spróbujesz wstawić nowy arkusz do pliku - wyświetli się dodatkowe okno. Pewno nigdy nie zwracałeś na nie uwagi. Widzisz opcję "Makro MS Excel 4.0"? Popatrz jak tą starą funkcjonalność wykorzystali twórcy złośliwego oprogramowania.

Zazwyczaj znaki wpisujemy przy pomocy klawiatury.

  • Klikasz S - w edytorze pojawia się litera S
  • Klikasz U - widzisz literę U

Te litery można jednak otrzymać w nieco inny sposób. Każdy znak ma przyporządkowaną odpowiadającą mu liczbę. I tak dużej literze M odpowiada liczba 77. Duża litera S to 83. W Excelu, do zamiany liczb na litery służy funkcja CHAR.

Funkcja CHAR

Naszą formułę SUM(2+1) - z poprzedniego slajdu możemy zatem zapisać w inny sposób - wykorzystując funkcję CHAR. Różne wywołania funkcji rozdzielamy wykorzystując znak ampersand. Pozwala on na łączenie różnych liter ze sobą - w jedną, spójną całość.

Formuła

Ale po co to wszystko? Po co te utrudnienia? Kolejne interesujące słowo kluczowe to FORMULA (pisane bez polskich znaków w angielskiej wersji oprogramowania). Możemy tutaj przekazać dwa parametry: formula_text oraz reference.

  • Pierwszy - to formuła, którą chcemy wykonać w danym momencie
  • Drugi - to miejsce, w którem zapiszemy wynik danej formuły

Najprościej wytłumaczyć to na przykładzie.

Jak działają formuły

Stworzyłem tutaj prosty arkusz- składający się z trzech elementów. Mogę go teraz uruchomić - wystarczy kliknąć na komórkę prawym przyciskiem myszy i wybrać opcję uruchom. Prześledźmy jak działa ten kawałek kodu.

Działanie przykładowej formuły

FORMULA umieszcza formułę podaną jako pierwszy parametr w komórce podanej jako drugi parametr.

Litery wygenerowane przy pomocy instrukcji CHAR i połączone ze sobą w jedną całość przy pomocy znaku ampersand składają się w instrukcję =SUM(2+1).

I to właśnie ten tekst zostanie umieszczony w komórce C11 - ponieważ to właśnie tą komórkę podaliśmy jaki drugi parametr do słowa kluczowego formula. Przechodzimy do analizy kolejnej linii.

Wizualizacja działania formuły

Komórka A5 wykona instrukcję z komórki C11 i umieści ją w komórce C12. C11 to nasza SUMA dwóch liczb. 2+1 równa się 3 i dlatego właśnie cyfra 3 zostanie umieszczona w komórce C12.

Excel przejdzie do wykonywania następnej komórki - czyli A6. Tam znajduje się funkcja return - która kończy działanie algorytmu. Brawo - właśnie wyliczyliśmy sumę dwóch liczb i wyświetliliśmy ją na ekranie.

Co ważniejsze - na pierwszy rzut oka nie widać co tak naprawdę chcemy zrobić. I właśnie tak działają przestępcy. Rozbudowują ten przykład dodając nowe elementy. Ale podstawa jest identyczna - utrudnienie analizy złośliwego pliku. No bo tutaj liczyliśmy sumę dwóch liczb - ale przecież nic nie stoi na przeszkodzie żeby wykonać inną, potencjalnie złośliwą akcję.

PIP i NPM

Programowanie

Jestem ciekaw ilu z Was programuje. Jeżeli programujesz to jesteś w uprzywilejowanej pozycji względem statystycznego użytkownika komputera. Dlaczego? Bo możesz zrozumieć program, który uruchamiasz. Tylko, że w przypadku złośliwego oprogramowania umiejętność programowania nie zawsze może pomóc. Dlaczego?

PIP in NPM

Większość dzisiejszego oprogramowania buduje się z różnych, nazwijmy to, klocków. Mało kto implementuje algorytmy czy rozwiązania na nowo. Korzystamy z gotowych elementów stworzonych przez inne osoby. Tak jest prościej, szybciej.

Ufamy, że kod stworzony przez innych jest bezpieczny.

No bo przecież nikt nie jest w stanie sprawdzać wszystkiego za każdym razem. Jeżeli używasz Node.js albo Pythona na pewno spotkałeś się z menadżerami paczek - PIP lub NPM.

Dzięki nim możemy w prosty sposób ściągnąć kod stworzony przez inne osoby na nasz komputer. Idea jest prosta. Każda paczka ma swój identyfikator. Podając jej nazwę jednoznacznie wskazujemy, które kawałki programu nas interesują i tylko je ściągamy. Ale czy aby na pewno?

Pewien użytkownik Internetu postanowił sprawdzić jak często programiści mylą się w nazwach paczek, które chcą ściągnąć. Wybrał do tego celu takie paczki, które w nazwie zwierają znak pauzy.

Fałszywe paczki PIP
https://medium.com/@williambengtson/python-typosquatting-for-fun-not-profit-99869579c35d

Wychodzi na to, że rozdzielanie nazwy swojego oprogramowania z użyciem pauzy nie jest najlepszym pomysłem. Dlaczego? Mało kto o nich pamięta i istnieje niezerowe prawdopodobieństwo, że ktoś ten znak po prostu pominie.

Widać to po statystykach pobrań fałszywych paczek, stworzonych przez tego użytkownika. Nie są to jednorazowe przypadki - ale dziesiątki pobrań. Tym razem pobrana paczka była nieszkodliwa, bo użytkownik działał w dobrej wierze i chciał chronić innych. Ale przecież nie zawsze musi tak być.

Kod złośliwej paczki
https://github.com/dateutil/dateutil/issues/984

Tutaj widzisz przykład realnego ataku - gdzie ktoś stworzył paczkę nazwaną python3-dateutils. Prawidłowa nazwa to dateutils - ale jeżeli ktoś korzysta z Pythona w wersji 3 to istniała szansa, że przypadkiem mógł natknąć się właśnie na tą fałszywkę.

A co w środku? Zaobfuskowany kawałek kodu. Gdy go teraz pokazuję, to pewno szybko stwierdzisz, że coś tutaj nie gra i ten kod nie wygląda na bezpieczny. Problem w tym, że pewno w ogóle nie otworzyłbyś tego pliku. Bo i po co?

pip install python3-dateutils

I tyle. Nie ma czasu na sprawdzanie zawartości.

Co robi ten kod
https://photomosh.com/

A ten kod może robić dosłownie wszystko. Szyfrować pliki, usuwać dane, przesłać Twoje hasła i kod źródłowy na zewnętrzny serwer. Nie każdy programista jest świadomy tego realnego zagrożenia. A takich przypadków zapewne w przyszłości będzie coraz więcej.

https://www.crazynauka.pl/

Ta technika oszukiwania użytkowniku Internetu nazywa się typosquatting - gdzie wykorzystuje się typowe błędy literowe popełniane w trakcie wpisywania znaków na klawiaturze.

Tutaj widziałeś przykład manipulacji paczkami NPM i Node - ale to samo można zastosować do domen internetowych. No bo czy Google pisze się przez jedno czy dwa o?

Nie każda firma będzie w stanie zarejestrować wszystkie domeny, wyglądające podobnie do nazwy marki. Nasz mózg potrafi nam płatać figle. No bo czy jesteś w stanie rozróżnić literę "o" od cyfry "0"?

Clipbanker

Nie każde złośliwe oprogramowanie musi być duże. Czasami kilka linijek kodu może być bardzo niebezpieczne. Przykład? Popatrz na ten slajd. Jeżeli nie programujesz - śpieszę z wyjaśnieniami.

Wyrażenie regularne

Jest to wyrażenie regularne - czyli wzorzec opisujący jakiś łańcuch symboli. Mówiąc inaczej - staramy się znaleźć tekst, który pasuje do podanego wyżej wzorca.

Te dwa wyrażenia regularne pasują do polskich numerów kont bankowych. Pierwszy poszukuje ciągu, który składa się z 26 cyfr (bo właśnie dokładnie tyle ma numer konta). Drugi - bardziej zaawansowany - również poszukuje numeru konta, tylko zapisanego w innym formacie. Czasami dla czytelności podaje się numer konta rozdzielony spacją. Mamy więc 2 znaki, spację, 4 znaki, spację, 4 znaki, spację i tak dalej.

Numer konta

Pewno zapytasz: a co w tym niebezpiecznego?

Na twoją pocztę przyszła faktura do zapłacenia. Jeżeli nie masz ustawionego zlecenia stałego w swoim banku - musisz jakoś skopiować numer konta. Mało kto będzie to robił ręcznie. Ryzyko pomyłki jest spore - zwłaszcza, że numery kont nie należą do najkrótszych.

Przelew

W jednej zakładce logujesz się do banku - w drugiej otwierasz fakturę. Kopiujesz numer konta do schowka, wklejasz do formularza przelewu.

Clipbanker

Potwierdzasz transakcję i już.

Gratuluję. Właśnie mogłeś stracić pieniądze.

Ale jak to? Pamiętasz ten mail, który dostałeś miesiąc temu? Ten dokument Worda, w którym nic nie było? Myślałeś, że był zepsuty i już dawno o nim zapomniałeś.

Wtedy to na Twoim komputerze zainstalował się ClipBanker. Program ten nieustannie monitorował Twój schowek - w poszukiwaniu numeru konta. Jeśli skopiowałeś numer konta - wtedy to automatycznie dokonywał podmiany.

Więc pomimo tego, że skopiowałeś prawidłowy numer z faktury - do formularza przelewu w systemie online banku wkleiłeś zupełnie inny numer należący do kogoś innego. Prawda, że przerażające?

Discord

Domena i serwer

Ale nie zawsze malware jest wysyłany przez email. Czasami możemy pobrać złośliwe oprogramowanie ze strony internetowej - zwłaszcza jeżeli poszukujemy nielegalnych wersji oprogramowania, darmowych filmów czy gier. Jeżeli masz stronę internetową to wiesz - że potrzebna jest do tego domena i serwer.

Dzięki temu użytkownicy mogą wyświetlać nasz sklep i blog. Tak samo jest w przypadku złośliwych plików - muszą się one znajdować gdzieś fizycznie, na jakimś serwerze - aby można je było ściągnąć.

Tylko, że domena i serwer to koszty.

Większość złośliwych serwerów jest blokowana bardzo szybko. Potrzebne są więc kolejne domeny i kolejne serwery. A to kolejne koszty. Przedsiębiorczy złodzieje i na to znaleźli rozwiązanie.

Discord
https://discord.com/

Discord to bezpłatna aplikacja służąca do rozmów głosowych i komunikacji za pomocą wiadomości tekstowych. Popularna głównie wśród młodszych użytkowników, którzy grają w różne gry. Dostępna w formie aplikacji na telefon, ale także programu na system Windows.

Użytkownicy mogą tam rozmawiać ze sobą za pomocą kanałów. Można też korzystać z prywatnych wiadomości. Oprócz tekstu i emotek oprogramowanie pozwala na przesyłanie plików do innych osób.

Wysyłka plików

Wystarczy przeciągnąć obrazek/plik do okna i już.

Całość zostanie wysłana na serwery i będzie dostępna dla innych.

Identyfikator pliku

W tle generuje się unikalny odnośnik. Każdy kto zna identyfikator - może za jego pomocą pobrać plik i zapisać na swoim dysku.

Czy już widzisz schemat?

Twórcy malware'u mogą wykorzystać tą usługę do przechowywania swoich plików. Oczywiście są one po jakimś czasie blokowane i usuwane - ale dalej - przez jakiś czas przestępcy mogą z nich korzystać za darmo - bez żadnych kosztów. Co więcej, ta domena nie może zostać zablokowana przez twórców antywirusów. Bo należy do legalnej firmy i większość osób korzysta z niej w prawidłowy sposób.

Zabawa w chowanego

No dobrze - złośliwe oprogramowanie pojawiło się już na Twoim dysku. Teraz musi się ukryć przed Twoim wzorkiem - tak aby jak najdłużej pozostało aktywne bez wykrycia. Jak wygląda taka zabawa w "chowanego"?

W systemie Windows - pliki mogą mieć nadane atrybuty. Jednym z takich atrybutów jest wartość ukryty. Wtedy taki plik nie wyświetla się w niektórych miejscach systemu.

Ukryty plik

W eksploratorze dla przykładu musimy zaznaczyć odpowiednią opcję, aby móc widzieć takie pliki ponownie. No ale nie oszukujmy się, ta metoda to nic skomplikowanego.

Harmonogram zadań

No dobrze - czy wiesz, że Windows posiada harmonogram zadań? Umożliwia on planowanie automatycznie wykonywanych zadań. Ten mechanizm można dla przykładu wykorzystać do aktualizacji oprogramowania.

Korzystasz z Chroma? Podczas instalacji automatycznie definiowane jest nowe zadanie nazwane GoogleUpdateTaskMachineCore. Jak możemy wyczytać z opisu: "zapewnia ono aktualizacje Twojego oprogramowania Google".

Harmonogram zadań

Każde zadanie ma wyzwalacze - gdzie definiuje się, kiedy ma się wykonać akcja. Możesz ustawić, że coś ma automatycznie się uruchamiać raz na godzinę. Lub tylko w niedziele o 18.

Akcje definiowane są w kolejnej zakładce. Tam to widnieją ścieżki do programów, które zostaną uruchomione. W tym przypadku system uruchomi Google Update - czyli program aktualizacyjny do Chroma.

Ale złośliwe oprogramowanie może tu zdefiniować inne akcje. Chociażby uruchomienie innego pliku znajdującego się w katalogu malware. A znalezienie tego nie jest takie oczywiste jak mogłoby się zdawać.

No bo czy wiedziałeś o czymś takim jak harmonogram zadań?

A jeśli wiedziałeś - to kiedy wchodziłeś w szczegóły któregokolwiek ze znajdujących się tam zadań?

Ale to nie jedyna funkcja systemu, którą można wykorzystać. Masz drukarkę? Wpinasz kabel USB do portu, wybierasz drukuj, wskazujesz format kartki, jakość wydruku i już. Ale czy zastanawiałeś się jak to drukowanie działa od strony systemu operacyjnego?

https://www.welivesecurity.com/2020/05/21/no-game-over-winnti-group/

System posiada tak zwany Print Spooler, który decyduje kiedy jest odpowiedni moment na drukowanie. Wtedy wywołuje print procesor - czyli specjalny plik dll, który zamienia dane na format, który może być przesłany do print monitora. To właśnie print procesor jest odpowiedzialny za wstrzymywanie i anulowanie zadań do druku.

Gdzie tu jakieś niebezpieczeństwo?

Do systemu można dodać nowy print procesor. Zazwyczaj dzieje się to podczas instalowania sterowników do naszej drukarki. Ale komendy te mogą być wykonane w dowolnym momencie. Malware musi tylko wywołać trzy API.

  1. SeLoadDriverPrivilege - aby otrzymać odpowiednie uprawnienia od systemu.
  2. Następnie - musi pobrać katalog, w którym przechowywane są pliki dll wykorzystywane podczas drukowania. Dzięki temu wie - gdzie musi się skopiować aby mógł działać prawidłowo. Za to odpowiedzialne jest API GetPrintProcessorDirectory.
  3. Teraz można już zainstalować nowy print procesor przy pomocy AddPrintProcessor.

Po co ta skomplikowana procedura? Print Spooler jest uruchamiany automatycznie przez system operacyjny podczas każdego startu. Wtedy też jest ładowany plik print procesora.

Innymi słowy - za każdym razem, gdy uruchamiamy komputer - złośliwy sterownik drukarki jest uruchamiany na nowo.

Kolejna, bardziej zaawansowana metoda pozostania w systemie użytkownika.

Wygaszacz ekranu

Wygaszacz ekranu to program komputerowy, którego zadaniem jest zwiększenie czasu bezawaryjnej pracy monitora poprzez wypełnianie go nieustannie losowymi, często zmieniającymi się wzorami lub obrazami. Było to bardzo istotne w przypadku starszej technologii monitorów CRT.

Podczas wyświetlania obrazu, niektóre jego fragmenty (na przykład pasek menu start) są wyświetlane cały czas w tym samym miejscu. W starszych modelach monitorów mogło to prowadzić do trwałego uszkodzenia - tak zwanego wypalenia w tych miejscach.

Powstawały wtedy obrazy - duchy, fragmenty, które mogły pozostawać widoczne mimo tego, że komputer już ich nie wyświetlał. Obecnie pełnią w głównej mierze funkcję rozrywkową - ale mogą też posłużyć do automatycznego uruchamiania złośliwego oprogramowania.

Wygaszacz ekranu

Gdy wejdziesz do opcji ustawienia wygaszacza ekranu, Windows poszukuje plików z rozszerzeniem scr, które znajdują się w katalogu C:\Windows\System32.

Złośliwe oprogramowanie może się więc skopiować do tego katalogu i zmienić swoje rozszerzenie z exe na scr. Potem wystarczy już tylko ustawić się jako wygaszacz i czekać aż użytkownik na chwilę odejdzie od komputera. Wtedy malware uruchomi się automatycznie (gdy tylko nikt nie będzie ruszał myszką kilka minut).

Znak RTL

Ale prawdziwe rozszerzenie pliku można spróbować ukryć. Wszystko za sprawą znaku RTL (right to left). W języku polskim czytamy od lewej do prawej. Ale w niektórych językach, znaki można czytać od prawej do lewej.

Znak RTL pozwala na zmianę sposoby wyświetlania znaków.

Od momentu jego użycia znaki zapisujemy od tyłu. Najprościej wytłumaczyć to na przykładzie. Wyobraźmy sobie, że na pulpicie zapisujemy plik o nazwie pliktxt.scr.

Chcemy oszukać użytkownika, że jest to plik tekstowy - pomimo tego, że tak naprawdę to plik z rozszerzeniem scr. Tutaj ślepa pułapka - system wyświetli rozszerzenie scr.

Sytuacja zmienia się diametralnie, kiedy to użyjemy znaku RTL. Teraz, zapisujemy plik o nazwie plik<tutaj znak RTL>txt.scr.

Znak RTL

W tym momencie użytkownikowi wyświetli się coś innego. Od momentu użycia znaku RTL - dane są zapisane od tyłu. Czyli pierwsza litera będzie wyświetlona jako ostatnia - a ostatnia jako pierwsza. Zatem nasz plik będzie widoczny jako plikrcs.txt - pomimo tego, że dalej przez system będzie traktowany jako plik z rozszerzeniem scr.

File spoofer
https://github.com/henriksb/ExtensionSpoofer

Alternate Data Stream

ADS tłumaczymy jako Alternate Data Stream. Pozwala on na dodanie dodatkowych danych do pliku - równocześnie nie zmieniając oryginalnych danych. Możemy więc ukryć dane - tak jak na tym przykładzie.

Alternate Data Stream

W pliku plik.txt znajduje się zawartość nic ciekawego. Widzimy to, wyświetlając zawartość tego pliku przy pomocy komendy more.

Przy pomocy ADS chowamy tam dodatkowe dane o nazwie ukryte. To właśnie tam zapisujemy wartość tajne dane. Możemy ją później odczytać - ponownie korzystając z komendy more.

Tym razem oprócz nazwy pliku, po dwukropku podajemy identyfikator ADS. Kolejny sposób na ukrycie danych - bo, o ile nie znasz nazwy ADS, nie możesz ich wyświetlić. A poznanie identyfikatorów ADS nie jest takie proste - zwłaszcza, jeżeli nie wiesz, że coś takiego w ogóle istnieje.

Rejestr systemu

Rejestr systemu Windows

W Windowsie znajduje się rejestr systemu. Jest to hierarchiczna baza danych, w której przechowywane są informacje o konfiguracji i ustawieniach.

NTUSER.DAT

Z poziomu komendy możemy dodać do rejestru nowe dane. Tutaj zapisuję swój sekret w kluczu HKCU\Tajne\Dane\Sekrety.

Wszystko co znajduje się w kluczu HKCU - jest zapisywane w pliku NTUSER.dat, który znajduje się w katalogu bieżącego użytkownika. Teoretycznie powinniśmy móc odczytać jego zawartość - ale nie jest to takie proste - ponieważ plik ten jest używany przez system operacyjny. Możemy zalogować się jako inny użytkownik z uprawnieniami administratora, a następnie odczytać zawartość tego pliku. Ale istnieją inne opcje na dostanie się do tych danych.

reg query
  • Możemy uruchomić edytor rejestru Windows - i tam znaleźć te dane.
  • Jeżeli znamy ich bezpośrednią ścieżkę - możemy je pobrać korzystając z linii komend i używając komend reg query.

Jest to zatem kolejne miejsce gdzie malware może schować swoje dane - na przykład konfigurację czy adresy serwerów z którymi się łączy. A ponieważ dane te nie są zapisywane w osobnych plikach - ich znalezienie może nie być takie proste.

Windows Subsystem for Linux

Na koniec - czy wiesz że od dłuższego czasu w systemie Windows 10 można uruchomić Ubuntu i niektóre inne dystrybucje Linuxa? Pozwala na to technologia Windows Subsystem for Linux. Świetna sprawa dla osób, które potrzebują dostępu do tych dwóch systemów jednocześnie. Jest jednak jedno ale.

Menadżer zadań

Tu po lewej stronie widzisz Ubuntu - uruchomione wprost z systemu Windows. Edytuję tam plik tekstowy korzystając z edytora VI.

Jeżeli jednak uruchomisz menadżer zadań - możesz czuć się rozczarowany. Oczywiście zobaczysz, że w tle jest uruchomione Ubuntu. Ale nic więcej. Z poziomu menadżera nie zobaczysz bowiem jakie inne uruchomione programy działają w tle na Linuxie.

https://github.com/microsoft/WSL/discussions/5828

Jeżeli poszukasz w Internecie, dotrzesz do informacji - że to zamierzona zmiana i wszystko działa w porządku. Trzeba mieć to na uwadze - zwłaszcza w kontekście bezpieczeństwa.

Bo standardowo Linux ma dostęp do plików, które znajdują się na Windowsie. Jeżeli zatem złośliwe oprogramowanie zacznie działać z poziomu wbudowanego Linuxa - zwykłemu użytkownikowi ciężko będzie dotrzeć do tego co tam się dzieje. Bo nie widać nazw procesów i innych szczegółów na temat działania aplikacji.

Ankieta

Materiał Ci się spodobał? Wypełnij ankietę.