Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Exploit dnia zerowego dla systemu Windows wykorzystany w atakach ukierunkowanych przez ugrupowanie APT FruityArmor

Dodany 20 października 2016, 14:03 CEST
Tagi:

Kilka dni temu Microsoft wydał swój „krytyczny” biuletyn bezpieczeństwa MS16-120 zawierający poprawki dla luk w zabezpieczeniach systemu Microsoft Windows oraz aplikacji Microsoft Office, Skype for Business, Silverlight i Microsoft Lync. 

Jedna z luk - CVE-2016-3393 - została zgłoszona firmie Microsoft przez Kaspersky Lab we wrześniu 2016 roku.

fruity_armor_01_auto.png

Przedstawiamy kilka informacji odnośnie wykrycia tej luki dnia zerowego. Kilka miesięcy temu wdrożyliśmy do naszych produktów nowy zestaw technologii pozwalających na identyfikowanie i blokowanie ataków dnia zerowego. Technologie te udowodniły swoją skuteczność już wcześniej tego roku, gdy wykryliśmy dwa exploity dnia zerowego dla Adobe Flash - CVE-2016-1010 oraz CVE-2016-4171. Z ich pomocą zidentyfikowane zostały również dwa exploity EoP (podnoszące uprawnienia w zainfekowanym systemie) dla systemu Windows. Jeden to CVE-2016-0165, drugi to CVE-2016-3393.

Jak większość exploitów dnia zerowego, które są obecnie wykrywane na wolności, CVE-2016-3393 jest wykorzystywany przez ugrupowanie APT, które określamy jako FruityArmor. FruityArmor jest nieco nietypowym ugrupowaniem ze względu na to, że wykorzystuje platformę ataków, która opiera się całkowicie na PowerShell. Główny implant szkodliwego oprogramowania tej grupy jest napisany w PowerShell, a wszystkie polecenia operatorów również są wysyłane w postaci skryptów PowerShell.

W raporcie tym opiszemy lukę w zabezpieczeniach, jaka została wykorzystana przez omawiane ugrupowanie w celu zwiększenia przywilejów na maszynie ofiary. Nie zostaną opublikowane wszystkie szczegóły dotyczące tej luki z uwagi na ryzyko wykorzystania ich przez cyberprzestępców w swoich atakach.

Opis sekwencji ataku

W celu zdalnego wykonania kodu na maszynie ofiary FruityArmor wykorzystuje zwykle exploita przeglądarki. Ponieważ wiele współczesnych przeglądarek jest tworzonych w oparciu o piaskownice (sandbox), jeden exploit zwykle nie wystarczy, aby zapewnić pełny dostęp do atakowanej maszyny. Większość ataków wykorzystujących exploita przeglądarki, jakie ostatnio obserwowaliśmy, opiera się również na exploicie EoP, który pozwala na skuteczne obejście piaskownicy. 

W przypadku ugrupowania FruityArmor, po exploicie dla przeglądarki zawsze wykorzystywany jest exploit EoP. Ma on postać modułu, który uruchamia się bezpośrednio w pamięci. Głównym celem tego modułu jest rozpakowanie specjalnie stworzonej czcionki TTF, która zawiera exploita CVE-2016-3393. Po rozpakowaniu moduł bezpośrednio ładuje exploita z pamięci za pomocą AddFontMemResourceEx. Po skutecznym wykorzystaniu luki CVE-2016-3393 wykonana zostaje szkodliwa funkcja drugiego etapu z wyższymi przywilejami w celu wykonania interpretera poleceń PowerShell przy użyciu skryptu łączącego się z cyberprzestępczym centrum kontroli.

Szczegóły dotyczące exploita dnia zerowego EoP

Luka ta jest zlokalizowana w funkcji cjComputeGLYPHSET_MSFT_GENERAL z modułu systemowego Win32k.sys. Funkcja ta analizuje tabelę cmap i wypełnia struktury wewnętrzne. Struktura CMAP wygląda tak:

fruity_armor_02.png

Najciekawszymi elementami tej struktury są dwie tablice - endCount i startCount. Exploit zawiera kolejną tabelę cmap z następującymi segmentami: 

fruity_armor_03.png

W celu obliczenia, ile pamięci przydzielić strukturom wewnętrznym, funkcja wykonuje poniższy kod 

fruity_armor_04.png

Po obliczeniu tej liczby funkcja ta przydziela pamięć strukturom w następujący sposób:

fruity_armor_05_auto.png

 

Problem polega na tym, że jeśli dokonamy obliczeń dla całej tablicy, doprowadzimy do przepełnienia i zmienna cnt będzie zawierała nieprawidłową wartość. 

W jądrze sytuacja wygląda następująco:

fruity_armor_06_auto.png

 

Kod przydziela pamięć jedynie dla 0x18 InternalStruct, ale potem występuje pętla dla całego zakresu segmentów (wartość ta została pobrana bezpośrednio z pliku):

fruity_armor_07_auto.png

Przy użyciu tabeli cmap można kontrolować zmienną v44 (index), w efekcie czego następuje uszkodzenie pamięci. Aby doprowadzić do tego, osoba atakująca może wykonać następujące działania: 

  1.  Spowodować przepełnienie liczby całkowitej w win32k!cjComputeGLYPHSET_MSFT_GENERAL
  2.  Sprawić, aby określone zakresy segmentów w pliku czcionki uzyskały dostęp do określonej pamięci.

A jak wygląda to w przypadku systemu Windows 10? Jak wiadomo większości z Was, przetwarzanie czcionki w systemie Windows 10 odbywa się w specjalnym procesie w trybie użytkownika z ograniczonymi przywilejami. Jest to bardzo dobre rozwiązanie, ale kod posiada ten sam błąd w przetwarzaniu TTF. 

fruity_armor_08.png

W efekcie, po załadowaniu/otwarciu tego exploita czcionki w systemie Windows 10 nastąpi awaria fontdrvhost.exe:

fruity_armor_09.png 

Kaspersky Lab wykrywa tego exploita jako:

  • HEUR:Exploit.Win32.Generic
  • PDM:Exploit.Win32.Generic.

 Dziękujemy firmie Microsoft za szybką reakcję w celu usunięcia tej luki w zabezpieczeniach. 

* Więcej informacji odnośnie ugrupowania APT FruityArmor jest dostępnych dla klientów usługi Kaspersky Intelligence Services. Kontakt: intelreports@kaspersky.com.