Ostatni atak za pomocą automatycznych aktualizacji SolarWinds Orion okazał się jednym z najbardziej wyrafinowanych i szkodliwych ataków w 2020 roku, składającym się z wielu artefaktów i zaawansowanych TTP. Pisaliśmy już o jego przebiegu i wpływie na Microsoft w artykule tutaj.
W związku z kompromitacją SolarWinds pojawiło się kilka różnych rodzin złośliwego oprogramowania. Należą do nich: SUNBURST, SUPERNOVA, COSMICGALE i TEARDROP.

W tym poście przedstawiamy analizę trojana SUPERNOVA, opisującą, w jaki sposób uzbrojony ładunek DLL różni się od legalnej wersji, którą zastąpił. Ponadto ujawniamy kilka nowych wskaźników naruszenia bezpieczeństwa, które mogą, oprócz wcześniej udokumentowanych IoC, pomóc zespołom bezpieczeństwa w wykryciu, kiedy szkodliwa powłoka jest aktywna.


Przegląd złośliwych komponentów SolarWinds:

SUNBURST odnosi się do backdoora .NET (napisanego w C #). Backdoor ten był rozprowadzany jako część złośliwej poprawki MSI (instalatora Windows) i rozpowszechniany za pośrednictwem mechanizmów aktualizacyjnych SolarWinds.
TEARDROP to implant zaszywający się w pamięci, używany (głównie) do dystrybucji ładunku ostrzegawczego Cobalt Strike.
COSMICGALE odnosi się do niektórych złośliwych skryptów PowerShell, które są wykonywane na zainfekowanych hostach.
SUPERNOVA odnosi się do implantu powłoki internetowej (webshell) używanego do dystrybucji i wykonywania dodatkowego kodu na widocznych w sieci hostach.

Poniżej skupimy się na zrozumieniu i wykrywaniu implantu powłoki sieciowej SUPERNOVA.


Trojan w bibliotece DLL

SUPERNOVA to strojanizowana kopia legalnej biblioteki DLL .NET w aplikacji internetowej SolarWinds Orion. Celem oryginalnej biblioteki DLL jest udostępnianie skonfigurowanego przez użytkownika logo na stronach internetowych w aplikacji internetowej Orion.

Modyfikacja legalnej biblioteki DLL SolarWindows w celu złośliwego użycia wymagała zaledwie kilku kluczowych zmian, a po analizie wydaje się zwodniczo w porządku. Poniżej przedstawiamy niektóre kluczowe różnice między legalną biblioteką DLL SolarWinds, a uzbrojoną biblioteką DLL „SUPERNOVA”.

Osoby atakujące wstrzyknęły dodatkową metodę, DynamicRun(), do legalnej klasy LogoImageHandler z App_Web_logoimagehandler.ashx.b6031896.dll, zmieniając niegroźną bibliotekę DLL w wyrafinowaną powłokę internetową. Poniżej widać subtelną różnicę w strukturze biblioteki:

Dodana metoda DynamicRun() jest wywoływana przez metodę ProcessRequest(), która obsługuje żądania HTTP. Osoby atakujące dodały blok try/catch na początku kodu źródłowego tej metody, aby przeanalizować część żądania HTTP i przekierować przepływ sterowania do metody DynamicRun(), która jest już w całości dziełem atakujących.

Metoda DynamicRun() jest miejscem, w którym znajduje się prawdziwa funkcjonalność powłoki internetowej SUPERNOVA. Ta metoda akceptuje obiekt blob kodu źródłowego C# wraz z klasą do utworzenia instancji, metodą do wywołania oraz argumentami tej metody. Te parametry będą używane do kompilowania i wykonywania w pamięci zestawu .NET wysłanego przez osoby atakujące za pośrednictwem protokołu HTTP.

Klasa .NET CSharpCodeProvider jest mechanizmem używanym do wykonywania kompilacji w pamięci. Jak widać poniżej, parametr GenerateInMemory ma wartość true, co oznacza, że zestaw fizyczny nie zostanie zapisany na dysku, co pozwoli na utworzenie minimalnych artefaktów kryminalistycznych. Ostatnim parametrem przekazanym do kompilatora w pamięci jest obiekt blob kodu źródłowego C# dostarczony przez żądanie HTTP osoby atakującej.

Parametry wejściowe metody DynamicRun():
codes – Blob z kodem C# do wykonania w całości w pamięci komputera – clazz – klasa .NET do stworzenia instancji – method – metoda .NET do wywołania – args – argumenty, które zostaną przekazane do powyższej metody

Jeśli podczas kompilacji nie wystąpią żadne błędy, złośliwe oprogramowanie tworzy instancję odpowiedniej klasy, wywołuje metodę przekazaną jako trzeci argument funkcji i zwraca wyniki.

Ta funkcjonalność umożliwia atakującym dowolną kompilację i wykonywanie ładunków .NET, a wszystko to w kontekście SolarWinds. Ten mechanizm nie wykorzystuje żadnego exploita, a po prostu nadużywa legalnej funkcjonalności .NET. Jest to potężne narzędzie, ponieważ umożliwia złośliwemu oprogramowaniu wykonywanie solidnie skompilowanego kodu w czasie rzeczywistym (in the fly) bez upuszczania jakichkolwiek dodatkowych plików do systemu plików lub uruchamiania jakichkolwiek oczywistych lub hałaśliwych poleceń przesyłanych przez sieć.


Wykrycie aktywności Supernova

Podczas procesu kompilacji Supernova natywne narzędzia związane z platformą .NET, CSC.exe i CVTRES.exe, pojawiają się jako procesy potomne procesu wywołującego.

Jako argumenty do CSC i CVTRES przekazywane są ścieżki do losowo nazwanych plików tymczasowych, które są używane przez te narzędzia podczas procesu kompilacji.
Widać to na poniższym drzewie procesów:

Składnia poleceń wykonywanych przez procesy CSC oraz CVTRES jest następująca:

Takie drzewo procesów może zapewnić cenny wgląd w to, kiedy webshell SUPERNOVA jest potencjalnie aktywny i odbiera polecenia z C2. To zachowanie mogą poprzedzać dodatkowe działania atakującego, takie jak ruch poprzeczny, uruchomione nietypowe procesy lub porzucone pliki.


Podsumowanie

Wiele organizacji obecnie ciężko pracuje, aby zrozumieć i określić ryzyko wynikające z ataku dostaw aktualizacji SolarWinds. Chociaż analiza naruszenia SolarWinds (i powiązanych ataków) jest w toku, można już śmiało powiedzieć, że można to uznać za jedną z bardziej zorganizowanych i wyrafinowanych kampanii roku 2020.

Biorąc pod uwagę zakres tej kampanii, należy pamiętać o kilku pomocnych rzeczach.

– Chociaż SolarWinds podaje około 18 000 instalacji złośliwej aktualizacji, nie oznacza to, że wszystkie organizacje zostały całościowo naruszone. Obecny wywiad sugeruje ponad 140 pełnowymiarowych „ofiar”.
– Główna infrastruktura C2 została przejęta, a następnie zlikwidowana przez Microsoft i innych partnerów branżowych. Jest teraz używany jako „wyłącznik awaryjny” dla istniejącego złośliwego oprogramowania.
– SolarWinds wypuściło łatkę 15 grudnia. Platforma Orion Platform v2020.2.1 HF2 została udostępniona wszystkim klientom używającym podatnych na ataki wersji SolarWinds Orion. Dla klientów platformy v2019 dostępna jest platforma Orion v2019.4 HF 6. Ponadto SolarWinds podjął środki w celu zapewnienia, że wszystkie złośliwe pliki zostały usunięte z ich serwerów.

Podziel się z innymi tym artykułem!