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

"Red October" - szczegółowy opis kampanii cyberszpiegowskiej. Pierwszy etap ataku

Tagi:

Globalny Zespół ds. Badań i Analiz (GReAT), Kaspersky Lab

Niedawno opublikowaliśmy raport na temat zagrożenia „Red October”, kampanii cyberszpiegowskiej wysokiego poziomu, w ramach której w ciągu ostatnich pięciu lat dokonano pomyślnej infiltracji sieci komputerowych wielu organizacji dyplomatycznych, rządowych i naukowo – badawczych. W pierwszej części naszej analizy omówiliśmy najważniejsze elementy kampanii: anatomię ataku, oś czasową działalności napastników, rozkład geograficzny ofiar, informacje pochodzące z operacji sinkholingu oraz infrastrukturę centrum kontroli (C&C). W dniu dzisiejszym publikujemy drugą część naszego raportu, który obejmuje analizę techniczną modułów, stosowanych podczas trwania kampanii „Czerwony Październik”.

Często jest tak, że podczas analizy ataków ukierunkowanych badacze koncentrują się na powierzchownej infekcji systemu i odpowiedzi na pytanie, jak do niej doszło. Czasami takie podejście jest wystarczające dla analityków, ale nie w przypadku Kaspersky Lab! Nasze standardy są dużo wyższe. Dla nas ważne jest, aby nie tylko przeanalizować infekcję, ale również odpowiedzieć na trzy pytania:

  • Co dzieje się z ofiarą, gdy zostanie zainfekowana?
  • Jakie informacje zostały skradzione podczas ataku?
  • Dlaczego „Czerwony Październik” to taka wielka rzecz w porównaniu do innych kampanii, takich jak Aurora i Night Dragon?

Zgodnie z naszą wiedzą, żadna inna operacja cyberszpiegowska w historii bezpieczeństwa IT nie była analizowana tak szczegółowo i z takim naciskiem na moduły wykorzystywane do ataku i wyprowadzania danych, jak „Czerwony Październik”. W większości przypadków analiza jest niemożliwa przez brak dostępu do danych ofiary; badacze widzą tylko niektóre działania modułów i nie są w stanie w pełni zrozumieć celu ataku, lub co, i w jakim celu zostało skradzione. Aby ominąć te przeszkody, podstawiliśmy kilka „prawdziwych” ofiar na całym świecie i monitorowaliśmy, jak napastnicy traktowali je w ciągu kilku ostatnich miesięcy. To pozwoliło nam zebrać setki modułów i narzędzi ataku. Oprócz nich, zidentyfikowaliśmy wiele innych modułów, stosowanych w różnych atakach, które pozwoliły nam na unikatowy wgląd w ideę samego ataku.

Badania, które publikujemy dzisiaj, są chyba największym kiedykolwiek opublikowanym artykułem podającym wyniki badań szkodliwego oprogramowania. Na pewno jest to najbardziej złożony przypadek badawczy w historii naszej firmy i mamy nadzieję, że ten artykuł wyznaczy nowe standardy w dziedzinie analizy szkodliwego oprogramowania. Ze względu na objętość treści, artykuł został podzielony na dwie części: "Red October" – szczegółowy opis szkodliwego oprogramowania. Pierwszy etap ataku. oraz "Red October" – szczegółowy opis szkodliwego oprogramowania. Drugi etap ataku. Oto, co zostanie zaprezentowane w szczegółowej analizie modułów wykorzystywanych w kampanii „Rocra”:

"Red October" – szczegółowy opis szkodliwego oprogramowania. Pierwszy etap ataku.

  1. Exploity
  2. Dropper
  3. Moduł loadera
  4. Główny komponent

W tej części artykułu zajmiemy się pierwszym etapem ataku. W kolejnej publikacji podamy obszerną analizę drugiego etapu ataku.


1. Exploity

Opierając się na analizie znanych przypadków, zidentyfikowaliśmy dwie główne metody, jakimi Backdoor.Win32.Sputnik infekuje ofiary ataku. Obie metody bazują na spear – phishingowych wiadomościach e-mail, które są rozsyłane do potencjalnych ofiar. Wiadomości e-mail zawierają załącznik, który jest dokumentem aplikacji Excel lub Word i obowiązkowo posiada kuszącą nazwę.


Diagram infekcji w kampanii „Rocra”

Exploit dla Excela: CVE-2009-3129

Jest to najstarszy znany sposób infekowania komputerów przez „Red October”. Poniżej znaleźć można listę nazw niektórych plików aplikacji Excel:

Nazwa pliku:MD5:
Katyn_-_opinia_Rosjan.xls bd05475a538c996cd6cafe72f3a98fae
WORK PLAN (APRIL-JUNE 2011).xls f16785fc3650490604ab635303e61de2
EEAS-Staff New contact list (05-25-2011).xls 5f9b7a70ca665a54f8879a6a16f6adde
"tactlist_05-05-2011_.8634.xls EEAS New contact list (05-05-2011).xls " bb2f6240402f765a9d0d650b79cd2560
Agenda Telefoane institutii si ministere 2011.xls 4bfa449f1a351210d3c5b03ac2bd18b1
Agenda Telefoane institutii si ministere 2011 (2).xls 4ce5fd18b1d3f551a098bb26d8347ffb
FIEO contacts update.xls ec98640c401e296a76ab7f213164ef8c
spisok sotrudnikov.xls d98378db4016404ac558f9733e906b2b
List of shahids.xls dc4a977eaa2b62ad7785b46b40c61281
Spravochnik.xls 5ecec03853616e13475ac20a0ef987b6
Agenda Telefoane&Email institutii si ministere 2011.xls de56229f497bf51274280ef84277ea54
EEAS New contact list (05-05-2011) (2).xls 396d9e339c1fd2e787d885a688d5c646
FIEO contacts update.xls 7e5d9b496306b558ba04e5a4c5638f9f
Telephone.xls c42627a677e0a6244b84aa977fbea15d
List of shahids.xls 1f86299628bed519718478739b0e4b0c
BMAC Attache List - At 11 Oct_v1[1].XLS f0357f969fbaf798095b43c9e7a0cfa7
MERCOSUR_Imports.xls 50bd553568422cf547539dd1f49dd80d
Cópia de guia de telefonos (2).xls cee7bd726bc57e601c85203c5767293c
Programme de fetes 2011.xls ceac9d75b8920323477e8a4acdae2803
12 05 2011 updated.xls 639760784b3e26c1fe619e5df7d0f674
telefonebi.xls d71a9d26d4bb3b0ed189c79cd24d179a
telefonebi.xls dc8f0d4ecda437c3f870cd17d010a3f6

Exploit dla Excela jest wykrywany przez produkty Kaspersky Lab jako Trojan-Dropper.MSWord.Agent.ga. Exploit był wykorzystywany głównie w roku 2011, a kilka jego próbek zostało przesłanych przez ofiary do laboratorium VirusTotal. Oto, jak wygląda kwestia wykrywania tego exploita przez różne produkty antywirusowe:

https://www.virustotal.com/file/afaebb8055559ea6bf88cedcd6fc7b93f02cde31a560876bcc4860fd0686739d/analysis

Wykrycia obejmują m. in.:

Kaspersky Trojan-Dropper.MSWord.Agent.ga 20120808
McAfee Exploit-MSExcel.u 20120808
Microsoft Exploit:Win32/CVE-2009-3129 20120808
Symantec Bloodhound.Exploit.306 20120808
TrendMicro HEUR_OLEXP.B 20120808

Właściwości plików Excela wszystkich exploitów wskazują, że były one edytowane na systemie z wersją aplikacji w języku chińskim (uproszczonym). Exploit prawdopodobnie został skompilowany dnia 26 listopada 2009 r.:

EXIF METADATA ============= MIMEType : application/vnd.ms-excel
Company :
ModifyDate : 2009:11:26 03:35:15
TitleOfParts : Sheet1
SharedDoc : No
Author :
CodePage : Windows Simplified Chinese (PRC, Singapore)
Title :
AppVersion : 11.9999
LinksUpToDate : No
ScaleCrop : No
LastModifiedBy : qq
HeadingPairs : ??????, 1
HyperlinksChanged : No
CreateDate : 1996:12:17 01:32:42
Security : None
FileType : XLS
Software : Microsoft Excel

 

Dokładny typ exploita, wykorzystywanego przez Czerwony Październik w plikach XLS, to CVE-2009-3129.

Informacje o exploicie (CVE-2009-3129):

Microsoft Office Excel 2002 SP3, 2003 SP3 i 2007 SP1 oraz SP2; Office 2004 i 2008 for Mac; Open XML File Format Converter for Mac; Office Excel Viewer 2003 SP3; Office Excel Viewer SP1 i SP2 oraz Office Compatibility Pack for Word, Excel i PowerPoint 2007 File Formats SP1 i SP2 pozwalają atakującemu na wykonanie dowolnego kodu za pomocą arkusza z wpisem FEATHEADER zawierającym element cbHdrData o nieprawidłowym rozmiarze, który wpływa na offset wskaźnika”. Podatność ta bywa również nazywana „Excel Featheader Record Memory Corruption Vulnerability”.

Informacje amerykańskiego CERTu: https://www.us-cert.gov/cas/techalerts/TA09-314A.html

Łata naprawcza Microsoftu: http://technet.microsoft.com/en-us/security/bulletin/ms09-nov

Luka wykorzystywana przez dropper XLS Czerwonego Października została załatana przez Microsoft w listopadzie 2009 r.

Exploit CVE-2009-3129 i kod powłoki


Deskryptor kodu powłoki w plikach XLS

CVE-2009-3129: exploit XLS Czerwonego Października wydaje się być pierwotnie opracowany przez chińskich hakerów. Był również używany w innych, niepowiązanych atakach na działaczy tybetańskich i inne podmioty. Jego głównym celem jest załadować i uruchomić trojana, który dla „Red October” posiada rozmiar w granicach 500 – 600 KB. Shellcode otrzymuje kontrolę po udanym wykorzystaniu luki i przechodzi do odszyfrowania samego siebie. Po udanej deszyfracji, Shellcode zaczyna odszyfrowywanie głównego składnika szkodliwego oprogramowania (na offsecie 0x6600 w plikach XLS). Szkodnik jest przechowywany w formie zaszyfrowanej w pliku Excela na offsecie 0x6600:


Zaszyfrowany złośliwy ładunek w plikach XLS

Szkodliwe oprogramowanie jest zaszyfrowane z użyciem prostego algorytmu XOR+ROR:

void decrypt(unsigned char *tbuf, unsigned long n, int round) { unsigned char b;
long i;
unsigned short ecx=0x400;
unsigned char a;
a=6;
for (i=0;i<1024;i++) {
b=tbuf[i];
b=b^ecx;
b = (b>>a) | (b<<(8-a));
tbuf[i]=b;
ecx--;
}
}

Shellcode zapisuje główny, „najważniejszy” dropper trojana do pliku zwanego „Dcs.tmp” i uruchamia go. Wyodrębnia również pusty plik Excela, który będzie widoczny dla użytkownika, jeśli exploit był udany. Pusty plik Excela nazywa się „~ .xls”.

Exploit dla Worda: CVE-2010-3333

Exploit CVE-2010-3333 dla Worda (w plikach RTF) był obserwowany we wrześniu i w październiku 2012 r. Przykładowe nazwy plików / sumy MD5 związane z atakiem:

Nazwa pliku:MD5:
arexeio1.doc cb51ef3e541e060f0c56ac10adef37c3
Popa Tatiana -plîngere.doc 6B23732895DAAAD4BD6EAE1D0B0FEF08
La Política de Defensa y el Poder Naval en México OTAN (1).doc 44E70BCE66CDAC5DC06D5C0D6780BA45
Iran, Syria and the balance of power in the Middle East.doc 9F470A4B0F9827D0D3AE463F44B227DB
Diplomatic Staff list.doc 91EBC2B587A14EC914DD74F4CFB8DD0F
Diplomatic Car for Sale - MB 2000.doc 85BAEBED3D22FA63CE91FFAFCD7CC991
Rulers have hostaged parliament to further their personal interest (1).doc B9238737D22A059FF8DA903FBC69C352
????? ???????????? ?.?????????.doc 2672FBBA23BF4F5E139B10CACC837E9F
the wife of Ambassador-2.doc 65D277AF039004146061FF01BB757A8F
????????? ?????????????? ???????.doc 731C68D2335E60107DF2F5AF18B9F4C9
31086823_cm04639-re02 en12.doc 9B55887B3E0C7F1E41D1ABDC32667A93
16 ??????? 2012 ???? (??????????).doc A7330CE1B0F89AC157E335DA825B22C7
delegat.doc FC3C874BDAEDF731439BBE28FC2E6BBE
Davos2011_follow-up plan_heregjilt.doc 9950A027191C4930909CA23608D464CC
Participant list 6th Forum 09-12 update.doc C78253AEFCB35F94ACC63585D7BFB176
Draft 3_Conference Renewable energy cooperation and Grid integration.doc 5D1121EAC9021B5B01570FB58E7D4622

Exploit dla Worda jest wykrywany przez produkty Kaspersky Lab jako Exploit.MSWord.CVE-2010-3333.bw. Exploit był najintensywniej używany w październiku 2012 r., a jego jedna próbka została przesłana do laboratorium VirusTotal, prawdopodobnie przez jedną z ofiar. Poniżej znajduje się odsyłacz do strony pokazującej rezultaty wykrywania exploita przez różne produkty antywirusowe:

https://www.virustotal.com/file/5fe53a960bc2031a185c575ea05ac466f26739a34c651c14260e4cfbc123e87f/analysis/

 

Detekcje obejmują:

Kaspersky Exploit.MSWord.CVE-2010-3333.bw 20121012
McAfee - 20121012
Microsoft Exploit:Win32/CVE-2010-3333 20121012
Symantec - 20121012
TrendMicro - 20121012

W rzeczywistości dropper jest plikiem RTF, którego autorem jest nieznany „John Doe”, rzekomo stworzonym za pośrednictwem aplikacji „microsoft office word Msfedit 5.1.21.2500”. Ten sam exploit / dropper był obserwowany w wielu innych atakach ukierunkowanych, np. przeciwko działaczom tybetańskim. Wydaje się być pochodzenia chińskiego, tak samo jak exploit XLS. Dokładny typ exploita wykorzystywany przez Czerwony Październik w plikach RTF to CVE-2010-3333.

Informacje o exploicie (CVE-2010-3333):

Przepełnienie bufora w Microsoft Office XP SP3, Office 2003 SP3, Office 2007 SP2, Office 2010, Office 2004 i 2008 for Mac, Office for Mac 2011 oraz Open XML File Format Converter for Mac pozwala atakującemu na wykonanie dowolnego kodu za pośrednictwem spreparowanych danych RTF”. Ta podatność nazywana jest również „RTF Stack Buffer Overflow Vulnerability”.

Stanowisko MITRE: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3333
Stanowisko CERTu: http://www.us-cert.gov/cas/techalerts/TA10-313A.html
Stanowisko Microsoftu: http://technet.microsoft.com/en-us/security/bulletin/ms10-nov

Luka wykorzystywana przez exploit Czerwonego Października w dokumentach RTF została załatana przez Microsoft w listopadzie 2010 r.

Exploit CVE-2010-3333 i kod powłoki

Plik RTF działa jak dropper dla głównego składnika trojana. Zawiera również fałszywy dokument, który staje się widoczny dla użytkownika w przypadku, gdy exploit się powiedzie.


Zaszyfrowany korpus trojana wewnątrz plików RTF

Główny korpus trojana jest zaszyfrowany przy pomocy algorytmu XOR 0xFB i przechowywany jako tekst w formie heksadecymalnej wewnątrz pliku RTF. Shellcode odszyfrowuje korpus szkodnika i uruchamia go.

CVE-2012-0158: exploit dla aplikacji Word

W listopadzie 2012 r. byliśmy świadkami nowych ataków z użyciem dokumentów RTF wykorzystujących lukę CVE-2012-0158. Ten exploit był wyjątkowo popularny podczas zaawansowanych trwałych ataków (APT) w roku 2012, więc nie jest dużym zaskoczeniem, że został zaadoptowany na potrzeby kampanii „Red October”.

Lista przykładowych nazw plików / sum MD5 związanych z atakiem:

Nazwa pliku:MD5:
Mazda.doc 93d0222c8c7b57d38931cfd712523c67
Komorowski.doc 51edea56c1e83bcbc9f873168e2370af
Commercial Report for October.doc 114ed0e5298149fc69f6e41566e3717a
Russian terrorist attack.doc 350c170870e42dce1715a188ca20d73b
FLOC-meeting.doc 4daa2e7d3ac1a5c6b81a92f4a9ac21f1
3037.doc 82e518fb3a6749903c8dc17287cebbf8
8th_2012 Minutes of meeting.doc 3ded9a0dd566215f04e05340ccf20e0c

Exploit CVE-2012-0158 stosowany w tych atakach jest prawie niewykrywalny przez powszechne rozwiązania antywirusowe, datowane na czas pisania tego raportu. Na szczęście produkty Kaspersky Lab wyłapują i blokują ten exploit dzięki nowatorskiej technologii Automatycznego zapobiegania exploitom. Ten sam exploit / dropper był obserwowany w wielu innych atakach ukierunkowanych, np. przeciwko działaczom tybetańskim. Wydaje się być pochodzenia chińskiego, tak samo jak pozostałe exploity operacji „Red October”. Dokładny typ exploita wykorzystywany przez „Red October” w plikach RTF to CVE-2012-0158.

Informacje o exploicie (CVE-2012-0158):

Kontrolki ActiveX: (1) ListView, (2) ListView2, (3) TreeView i (4) TreeView2 w pliku MSCOMCTL.OCX w sekcji Common Controls w Microsoft Office 2003 SP3, 2007 SP2 i SP3 oraz 2010 Gold i SP1; Office 2003 Web Components SP3; SQL Server 2000 SP4, 2005 SP4 i 2008 SP2, SP3 oraz R2; BizTalk Server 2002 SP1; Commerce Server 2002 SP4, 2007 SP2 i 2009 Gold oraz R2; Visual FoxPro 8.0 SP1 i 9.0 SP2, a także Visual Basic 6.0 Runtime pozwalają atakującemu na zdalne wykonanie dowolnego kodu poprzez spreparowaną: (a) stronę internetową, (b) dokument pakietu Office lub (c) plik .rtf, który wyzwala naruszenie "stanu systemowego" – dane na kwiecień 2012 r.” Ta luka nazywa się również „MSCOMCTL.OCX RCE Vulnerability”.

Stanowisko NIST: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0158
Stanowisko Microsoftu: http://technet.microsoft.com/en-us/security/bulletin/ms12-027

Luka wykorzystywana przez dokumenty RTF Czerwonego Października została załatana przez Microsoft w kwietniu 2012 r.

Exploit CVE-2012-0158 i kod powłoki

Plik RTF działa jak dropper dla głównego składnika trojana. Zawiera również fałszywy dokument, który staje się widoczny dla użytkownika w przypadku, gdy exploit się powiedzie.


Zaszyfrowany korpus droppera trojana w plikach RTF z ukrytym exploitem CVE-2012-0158

Główny składnik trojana jest zaszyfrowany algorytmem XOR 0xDE i przechowywany jako tekst w formie heksadecymalnej wewnątrz pliku RTF. Shellcode po prostu wpisuje główny dropper do pliku o nazwie „msmx21.exe” w folderze „%TEMP%” i uruchamia go. Wyodrębnia także fałszywy dokument, który jest wyświetlany ofierze, jeśli exploit odniósł sukces.


Fałszywy dokument przedstawiany ofierze, jeśli exploit się powiedzie

 

2. Dropper

Moduł droppera jest plikiem PE EXE, skompilowanym za pośrednictwem Microsoft Visual Studio 2008. Jest wypakowywany i wykonywany przez jeden z exploitów, wykorzystywanych do dostarczenia szkodliwego oprogramowania. Znane warianty ładują i uruchamiają składnik „loadera”, zwany „svchost.exe” lub „svclogon.exe”, oraz jeden zaszyfrowany plik głównego komponentu (zobacz opis składnika „loadera”).

Funkcja główna

Sprawdzanie klucza rejestru

Moduł generuje identyfikator CLSID z wartości sumy kontrolnej SHA1 ścieżki katalogu systemowego i numeru seryjnego dysku systemowego. Następnie próbuje odczytać domyślną wartość klucza rejestru:

HKLM\Software\Classes\CLSID\generated_CLSID (jeżeli posiada prawa administracyjne)
HKCU\Software\Classes\CLSID\generated_CLSID (jeżeli nie posiada praw administracyjnych)

Moduł sprawdza zawartość domyślnej wartości klucza. Ten test się powiedzie, jeśli klucz rejestru nie jest obecny lub jego wartość jest równa ostatniej wartości DWORD plikowej sumy kontrolnej SHA1. W przeciwnym wypadku, test nie jest uznawany za pomyślny i jest uruchamiany 4294967294 razy co trzy milisekundy. Następnie, moduł ustawia domyślną wartość klucza rejestru jako heksadecymalną reprezentację wartości DWORD w sumie SHA1 i próbuje odczytać wartość „InfoTip” z tego samego klucza rejestru. Zakłada się, że wartość rejestru jest 48-bajtowym buforem binarnym. Moduł wydobywa z tego bufora parametr czasu i wykonuje procedurę samousunięcia, jeśli różnica między ustawionym czasem i aktualnym czasem jest mniejsza niż 3 dni.

Oznacza to, że zaktualizowane moduły mogą być dostarczone do tej samej ofiary nie wcześniej niż w ciągu trzech dni. Jeśli ktoś próbuje powtórnie zainfekować system tym samym dropperem, nie może tego zrobić w ciągu trzech dni od ostatniej infekcji. To również może być mechanizm ucieczki od zwrócenia uwagi przez zaawansowanych użytkowników i administratorów, którzy mogą próbować powtórnie uruchomić niedawno otwarte podejrzane aplikacje, i dokładnie monitorować ich aktywność. Kontrola ta jest identyczna jak test zaimplementowany w module „loadera”.

Procedura instalacyjna

Moduł pobiera swój zasób typu „AAA” o nazwie „000”. Następnie, zasób jest odszyfrowywany z wykorzystaniem niestandardowego szyfru podobnego do RC4, o ustalonej wartości klucza.

OffsetTypOpis
0 DWORD Jeżeli równe "1", dropper powinien przeprowadzić samousunięcie po przetworzeniu zasobu
4 DWORD Jeżeli równe "1", dropper powinien zakończyć pracę po przetworzeniu zasobu
8 DWORD Opóźnienie (w milisekundach) przed przetworzeniem zasobu

Po nagłówku zasobu występują wpisy danych, przy czym każdy wpis zawiera tylko jeden plik.

OffsetTypOpis
0 DWORD Typ wpisu
4 DWORD Rozmiar nazwy pliku (w bajtach)
8 DWORD Rozmiar zawartości pliku
12 DWORD Zarezerwowane, równe 0x7D4
16 BYTE[] Nazwa pliku, Unicode
16 + rozmiar nazwy pliku BYTE[] Zawartość pliku

Każdy rekord jest przetwarzany inaczej, w zależności od wartości "Typ wpisu":

Typ wpisuDziałanie
0x07 Zapisać plik na dysku
0x08 Zapisać plik na dysku i uruchomić natychmiast API CreateProcess()
0x09
0x0A
0x0D
0x0E
Zapisać do uprzednio zdefiniowanego katalogu:
%System Directory%\wmispoold\%file name% (jeżeli posiada uprawnienia administratora)
%APPDATA%\wmispoold\%file name% (jeżeli posiada tylko prawa użytkownika)
0x09 – utworzyć nowy plik i zapisać do niego
0x0A – utworzyć nowy plik, zapisać do niego i uruchomić
0x0D – nadpisać plik
0x0E – nadpisać i uruchomić plik
Stara się zakończyć każdy uruchomiony proces, który należy do pliku będącego
nadpisywanym.
0x0B
0x0C
Zapisz do pierwszego dostępnego katalogu z zakodowanej listy (patrz poniżej)
0x0B – zapisać plik
0x0C – zapisać i uruchomić plik

Moduł ustawia czas utworzenia / modyfikacji pliku na taki sam, jak czas w przypadku pliku "%windir%\system32\kernel32.dll".

Dla typów wpisu „0x0B” i „0x0C” moduł próbuje zapisać plik do pierwszego katalogu dostępnego z listy:

%ProgramFiles%\Windows NT\
%APPDATA%\Microsoft\
%ProgramFiles%\Windows NT\Accessories\
%ProgramFiles%\Windows NT\Pinball\
%ProgramFiles%\Windows Media Player\
%ProgramFiles%\Web Publish\
%ProgramFiles%\Outlook Express\
%ProgramFiles%\Microsoft Office\Office10\Data\
%ProgramFiles%\Microsoft Office\Office10\
%ProgramFiles%\Microsoft Frontpage\
%ProgramFiles%\Internet Explorer\
%ProgramFiles%\ComPlus Applications\
%ProgramFiles%\WindowsUpdate\
%CommonProgramFiles%\Microsoft Shared\MsInfo\
%CommonProgramFiles%\Microsoft Shared\Office10\
%CommonProgramFiles%\Proof\
%CommonProgramFiles%\Web Folders\
%CommonProgramFiles%\Web Server Extensions\
%CommonProgramFiles%\System\ado\
%CommonProgramFiles%\System\msadc\
%SystemDrive%\Documents and Settings\LocalService\
Application Data\Microsoft\ %SystemDrive%\Documents and Settings\
LocalService\
Local Settings\Application Data\Microsoft\
%ALLUSERSPROFILE%\Application Data\
%windir%\Installer\
%windir%\Help\Tours\mmTour\
%windir%\Help\Tours\htmTour\
%windir%\Help\Tours\WindowsMediaPlayer\
%windir%\IME\
%windir%\MsApps\
%windir%\MsApps\MsInfo\
%windir%\inf\
%ALLUSERSPROFILE%\Application Data\Microsoft\
%ALLUSERSPROFILE%\Application Data\Microsoft\Office\
%ALLUSERSPROFILE%\Application Data\Microsoft\Office\Data\
%ALLUSERSPROFILE%\Application Data\Microsoft\Windows\
%HOMEPATH%\Local Settings\
%APPDATA%\
%APPDATA%\Microsoft\Office\
%APPDATA%\Microsoft\Office\Data\
%APPDATA%\Microsoft\Windows\
%windir%\Temp\
%TMP%\
%TEMP%\

Działania po przetwarzaniu

Moduł usuwa następujące klucze rejestru:

HKCU\Software\Microsoft\Office\11.0\Word\Resiliency\StartupItems
HKCU\Software\Microsoft\Office\11.0\Word\Resiliency\DisabledItems

Robi się to, aby usunąć listę dokumentów Microsoft Word, które wymagałyby odzyskania w razie awarii procesu Worda, i tym samym powtórnego ujawnienia i uruchomienia exploita.

Procedura samousunięcia

Dropper tworzy plik „%TEMP%\msc.bat”, uruchamia go i kończy pracę, pozwalając na efektywne usunięcie swojej obecności:

chcp 1251
:Repeat
attrib -a -s -h -r "%ścieżka dostępu do własnego pliku wykonywalnego%"
del "%ścieżka dostępu do własnego pliku wykonywalnego%"
if exist "%ścieżka dostępu do własnego pliku wykonywalnego%" goto Repeat
del "%ścieżka dostępu do własnego pliku wykonywalnego%"

 

Znane warianty

MD5Data kompilacji (źródło)Data kompilacji (ładunek)
D784EAB30F85D2CDFB14ED1B0D98C98C 2011.07.06 07:41:01 (GMT) 2011.03.15 07:43:59 (GMT)
418B7A888484BDCBBA3B431ACC57B6AB 2011.09.22 04:52:59 (GMT) 2011.03.15 07:43:59 (GMT)
5C23DBF7B2BED5D54EADC47889EE1038 2011.06.23 09:53:26 (GMT) 2011.03.15 07:43:59 (GMT)
EA2765A3D9F865EF7546BA7F5F145E95 2011.06.30 08:26:29 (GMT) 2011.03.15 07:43:59 (GMT)
4A5F5C6E1AD30CF2799E3EA13468B3C2 2011.07.07 09:27:34 (GMT) 2011.03.15 07:43:59 (GMT)
A03CCD50DB47361E6BD9B05017372110 2011.04.21 10:47:12 (GMT) 2011.03.15 07:43:59 (GMT)
FA28873EFD2279E9AF79202E9A7E9398 2011.08.16 06:31:24 (GMT) 2011.03.15 07:43:59 (GMT)
4ACE8A18C8710B40FF9B47F29F82EAC7 2011.08.18 06:21:22 (GMT) 2011.03.15 07:43:59 (GMT)
204F7BFA78ED99E623DEF43BA0A188C9 2011.07.20 13:04:53 (GMT) 2011.03.15 07:43:59 (GMT)
35061250A7C580A4CEA31F29E050C4FF 2011.03.14 14:46:51 (GMT) 2011.03.03 12:50:46 (GMT)
58C5D4158DF279E9038344D0B420BEDE 2011.03.14 14:58:56 (GMT) 2011.03.03 12:50:46 (GMT)
24546BB958EDD449408BA1AADDB3DCEB 2011.03.04 11:46:39 (GMT) 2011.03.02 09:45:07 (GMT)
2541C266893A45F393112C6F15C2A0C7 2011.01.13 07:59:02 (GMT) 2010.10.11 14:14:34 (GMT)
B0D190A48E749B2688E7A90CE3926E84 2011.03.09 08:58:07 (GMT) 2011.03.03 12:50:46 (GMT)
3E35C7C39BC71BADFE9AD15752C2DDDE 2012.09.06 10:30:38 (GMT) 2011.03.15 07:43:59 (GMT)
EBCCD9FC831B168D872F6556B4A42DAC 2011.03.15 08:33:11 (GMT) 2011.03.15 07:43:59 (GMT)
7AAC26EA551EC67882E14C388E436F10 2011.03.15 09:06:51 (GMT) 2011.03.15 07:43:59 (GMT)
5F1D10F7CA9E1B9C301872B1BC4B8A18 2011.05.06 07:58:13 (GMT) 2011.03.15 07:43:59 (GMT)
812FC1780548F0611E3F4105E48E518A 2011.05.26 11:04:38 (GMT) 2011.03.15 07:43:59 (GMT)
DC0A5753F9885D0BA71ECEA767F91564 2011.07.20 11:06:28 (GMT) 2011.03.15 07:43:59 (GMT)
D44966B31FC6BAFF97AE23EA53A6DFF0 2011.10.06 14:05:34 (GMT) 2011.03.15 07:43:59 (GMT)
141DC8FD84D985F792DE9747F63C6A4C 2011.03.14 15:00:23 (GMT) 2011.03.03 12:50:46 (GMT)
8CE5E706D956D28F6412C38FC5911DCE 2011.03.09 08:18:38 (GMT) 2011.03.03 12:50:46 (GMT)
0C4D3483AD48A4751E288993388E03D2 2011.03.14 14:49:50 (GMT) 2011.03.03 12:50:46 (GMT)
9BD07F7DC5E26F022FDEA386D35EAC68 2011.03.09 07:46:51 (GMT) 2011.03.03 12:50:46 (GMT)
1754024F9932DC25691CDB90D8FAC632 2011.04.13 05:34:30 (GMT) 2011.03.15 07:43:59 (GMT)
4168EEF52CD458B253EBE62B8DAF75AC 2011.03.14 13:34:01 (GMT) 2011.03.03 12:50:46 (GMT)
2B62D48C9D728C5D9650B39E0119F1B7 2010.11.12 09:29:19 (GMT) 2010.10.11 14:14:34 (GMT)
EA74E951111ED2E046B87C0A9241FC25 2012.08.02 05:59:07 (GMT) 2011.03.15 07:43:59 (GMT)
3BE885097DBD3DF03B568D1E248A2E4C 2012.09.13 09:41:13 (GMT) 2011.03.15 07:43:59 (GMT)
B952997DD0AB0B58F916AF89A5C3E4BD 2011.04.29 10:02:22 (GMT) 2011.03.15 07:43:59 (GMT)
2216490B1C09BB9B4E07AD05A1552FE9 2012.04.06 11:35:36 (GMT) 2011.03.15 07:43:59 (GMT)
DBE4C33F6C482D571305589207A3F910 2011.03.14 14:57:27 (GMT) 2011.03.03 12:50:46 (GMT)
8E88185368C9C2C53014E0BAEFCE3066 2011.03.09 08:05:16 (GMT) 2011.03.03 12:50:46 (GMT)

 

3. Moduł loadera

Znane lokalizacje plików:

%PROGRAMFILES%\Windows NT\svchost.exe %PROGRAMFILES%\Windows NT\svclogon.exe

Moduł jest plikiem PE EXE, skompilowanym przy pomocy Microsoft Visual Studio 2005. Ten moduł jest tworzony na pierwszym etapie działania droppera szkodliwego oprogramowania, zazwyczaj za pomocą pliku zawierającego exploit. Sam moduł tworzy obiekt zdarzenia systemu przy użyciu wzorców nazw:

  • "WIN_%08X%08X%08X%08X%08X", gdzie parametry "%08X" są zastępowane przez szesnastkową wartość sumy kontrolnej pliku (SHA1).
  • "SYS_%08X%08X%08X%08X%08X", gdzie parametry "%08X" są zastępowane przez szesnastkową wartość sumy kontrolnej pliku (SHA1).

Następnie moduł sprawdza, czy zostały mu przyznane prawa administracyjne i ustawia odpowiednią flagę, która będzie wykorzystywana w kilku podprocedurach. Moduł generuje identyfikator CLSID z wartości sumy kontrolnej SHA1 ścieżki katalogu systemowego i numeru seryjnego dysku systemowego. Następnie próbuje odczytać domyślną wartość w następującym kluczu rejestru:

HKLM\Software\Classes\CLSID\generated_CLSID (jeśli posiada prawa administracyjne)
HKCU\Software\Classes\CLSID\generated_CLSID (jeśli nie posiada praw administracyjnych)

Moduł sprawdza zawartość domyślnej wartości klucza. Ten test się powiedzie, jeśli klucz rejestru nie jest obecny lub jego wartość jest równa ostatniej wartości DWORD plikowej sumy kontrolnej SHA1. W przeciwnym wypadku test nie jest uznawany za pomyślny i jest uruchamiany 4294967294 razy co trzy milisekundy. Następnie, moduł ustawia domyślną wartość klucza rejestru jako heksadecymalną reprezentację wartości DWORD w sumie SHA1 i próbuje odczytać wartość „InfoTip” z tego samego klucza rejestru. Zakłada się, że wartość rejestru jest 48-bajtowym buforem binarnym. Moduł wydobywa z tego bufora parametr czasu i wykonuje procedurę samousunięcia, jeśli różnica między ustawionym czasem i aktualnym czasem jest mniejsza niż 3 dni. Oznacza to, że zaktualizowane moduły mogą być dostarczone do tej samej ofiary nie wcześniej niż w ciągu trzech dni. Jeśli ktoś próbuje powtórnie zainfekować system tym samym dropperem, nie może tego zrobić w ciągu trzech dni od ostatniej infekcji. To również może być mechanizm ucieczki od zwrócenia uwagi przez zaawansowanych użytkowników i administratorów, którzy mogą próbować uruchomić powtórnie niedawno otwarte podejrzane aplikacje i dokładnie monitorować ich aktywność. Następnie moduł rozpoczyna wątek instalacji rejestru i przechodzi do swojej pętli głównej.

Wątek instalacji rejestru

Co 100 sekund moduł upewnia się, że został zarejestrowany w usłudze autouruchamiania za pomocą jednego z kluczy rejestru:

Jeżeli był uruchomiony z prawami administratora, dołącza ścieżkę dostępu do własnego pliku do:

HKLM\Software\Microsoft\Windows
NT\CurrentVersion\Winlogon\Userinit

W przeciwnym razie zapisuje wartość rejestru w:

HKCU\Software\Microsoft\Windows\CurrentVersion\
Run\%autorun key% ="ścieżka do własnego pliku"

Możliwe wartości klucza „Autorun”, które obserwowaliśmy:

Nazwa zaszyfrowanego modułu głównegoNazwa wartości gałęzi rejestru "Run"
fsmgmtio32.msc DotNet32
cfsyn.pcs SdbChk
frpdhry.hry Hre32
ime64ex.ncs SrvCC32
io32.ocx Ocx32
lhafd.gcp Lha
lsc32i.cmp Lsc32
ocxstate.dat NtNdsc
opdocx.gxt Scpsts
sccme.hrp Lhrp
scprd.hrd Srsf
syncls.gxk Mslisht
lgdrke.swk Sltrdbe
sdlvk.acx Ltsmde
wsdktr.ltp Lsrtmpx
synhfr.pkc Msdcc
scpkrp.gmx Dbxchek
rfkscp.pck Cskcmp
qsdtlp.rcp Klsmod

Główna pętla

Moduł uruchamia pętlę z losowymi opóźnieniami podawanymi przez API Sleep() i sprawdza, czy może połączyć się z którymś z adresów URL w domenie microsoft.com.

Nazwa zaszyfrowanego modułu głównegoNazwy domen
fsmgmtio32.msc update.microsoft.com, www.microsoft.com
Inne update.microsoft.com, www.microsoft.com,
support.microsoft.com

Jeżeli którykolwiek z adresów URL jest osiągalny, uruchamiany jest wątek loadera z nazwą pliku modułu głównego jako parametrem. Następnie, moduł uaktualnia klucz rejestru „InfoTip” wartością bieżącej daty i godziny, i aktualizuje sumę SHA1 swojej nazwy pliku. W tej wartości przechowuje również identyfikator własnego procesu. Moduł odczytuje ustawienia serwera proxy dla przeglądarek Internet Explorer, Firefox i Opera, i stara się nawiązywać połączenie ze wskazanymi adresami URL poprzez proxy, jeżeli nie może zostać ustanowione konwencjonalne połączenie.

Wątek loadera

Moduł odczytuje plik, który zawiera główny składnik szkodnika, odszyfrowuje go za pomocą algorytmu RC4 ze zdefiniowanym kluczem, a następnie wypakowuje jego zawartość korzystając z biblioteki Zlib. Potem sprawdza, czy nieskompresowany bufor zawiera plik PE i rozpoczyna wątek loadera PE.

Wątek loadera PE

Moduł implementuje swój własny loader PE. Ładowany plik ma być biblioteką DLL. Po załadowaniu i przemieszczeniu PE, moduł dwukrotnie wywołuje swoją funkcję DllMain (DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH) i wykonuje powrót.

 

4. Główny komponent

Główny komponent jest plikiem PE DLL bez symboli eksportu, skompilowanym za pośrednictwem Microsoft Visual Studio 2005.

Funkcja DllMain

Moduł ustawia czasomierz z funkcją zwrotną, która ma zostać wykonana co każde 900 sekund, a następnie rozpoczyna pętlę wiadomości systemu Windows.

Funkcja zwrotna czasomierza

Moduł sprawdza, czy komputer jest podłączony do internetu (używa w tym celu API InternetGetConnectedState) i, jeżeli okaże się to prawdą, rozpoczyna swój wątek główny.


Ruch HTTP generowany przez główny komponent

Główny wątek

Moduł przygotowuje 98-bajtowy bufor, która zawiera wiele unikatowych identyfikatorów maszyn, używając do tego numeru seryjnego dysku systemowego, adresów MAC kart sieciowych i identyfikatora rejestracyjnego Internet Explorera. Bufor zawiera również unikalny, zakodowany ciąg szesnastkowy, który zdaje się być identyfikatorem ofiary lub kampanii, i zakodowaną wartość DWORD.

Następnie, moduł używając żądań HTTP POST przesyła ten bufor do pierwszego dostępnego serwera C&C, wybranego z zakodowanej listy. W odpowiedzi od serwera moduł oczekuje zaszyfrowanego pakietu. Pakiet jest odszyfrowywany przy pomocy prostego algorytmu XOR, a moduł wykonuje jedno z następujących poleceń, w zależności od danych otrzymanych w pakiecie z serwera C&C:

  • Załaduj do pamięci bibliotekę DLL z pakietu i wywołaj funkcję DllMain
  • Zapisz pakiet do pliku w katalogu „temporary/windows/system” i uruchom go przy pomocy API CreateProcess()
  • Załaduj bibliotekę DLL określoną przez lokalną ścieżkę dostępu i wywołaj funkcję DllMain, albo wykonaj program z podanej ścieżki
  • Zapisz pakiet do pliku w katalogu „temporary/windows/system”
  • Zapisz zawartość pakietu w lokalizacji „%TEMP%\bestcrypt_update.exe” oraz (część opcjonalna) „%TEMP%\bestcrypt_update.dll” i uruchom plik EXE

Oś czasu użycia serwera C&C

RokNazwy domen C&CAdresy URL
2007 msgenuine.net /cgi-bin/view
2008 msinfoonline.org /cgi-bin/a/slice
2009 microsoftosupdate.com;microsoft-msdn.com;microsoftcheck.com /cgi-bin/ms/check
  osgenuine.com;wingenuine.com;update-genuine.com /cgi-bin/gen/jau
2010 drivers-update-online.com;drivers-get.com;drivers-check.com /cgi-bin/driver/info
  genuine-check.com;genuineservicecheck.com;genuineupdate.com /cgi-bin/genuine/a
  msonlineupdate.com;msonlinecheck.com;msonlineget.com /cgi-bin/online/set
  os-microsoft-check.com;os-microsoft-update.com;os-microsoft-online.com /cgi-bin/microsoft/dev
  windowscheckupdate.com;windows-genuine.com;windowsonlineupdate.com /cgi-bin/win/wcx
2011 dll-host-update.com;dll-host-check.com;dll-host.com /cgi-bin/dllhost/ac
  genuine-check.com;genuineservicecheck.com;genuineupdate.com /cgi-bin/genuine/a
  microsoftosupdate.com;microsoft-msdn.com;microsoftcheck.com /cgi-bin/ms/check
  ms-software-check.com;ms-software-update.com;ms-software-genuine.com /cgi-bin/software/tau
  nt-windows-online.com;nt-windows-update.com;nt-windows-check.com /cgi-bin/nt/th
  svchost-check.com;svchost-online.com;svchost-update.com /cgi-bin/svchost/uat
2012 csrss-check-new.com;csrss-update-new.com;csrss-upgrade-new.com /cgi-bin/csrss/dfl
  ms-software-check.com;ms-software-update.com;ms-software-genuine.com /cgi-bin/software/tau
  nt-windows-online.com;nt-windows-update.com;nt-windows-check.com /cgi-bin/nt/th
  svchost-check.com;svchost-online.com;svchost-update.com /cgi-bin/svchost/uat
  wins-driver-check.com;wins-driver-update.com;win-driver-upgrade.com /cgi-bin/ntdriver/ton

 

Nazwy plików głównego komponentu

RokNazwa pliku głównego komponentu
2007 netads.dat
2008 smartiosys.dbn
2009 smartiosys.dbn
2010 fsmgmtio32.msc
  ime64ex.ncs
  ocxwinsmb.tlb
2011 frpdhry.hry
  ime64ex.ncs
  io32.ocx
  lhafd.gcp
  lsc32i.cmp
  ocxstate.dat
  sccme.hrp
  scprd.hrd
2012 klsldr.slr
  lgdrke.swk
  lsmpdr.vcs
  mbdsec.sdx
  ocxstate.dat
  opdocx.gxt
  qsdtlp.rcp
  rfkscp.pck
  scpesc.ecs
  scpkrp.gmx
  sdlvk.acx
  syncls.gxk
  synhfr.pkc
  wsdktr.ltp



Przykład sesji komunikacyjnej z serwerem C&C

(dwa bajty z identyfikatora użytkownika zostały usunięte!)

W kolejnej publikacji podamy obszerną analizę drugiego etapu ataku „Red October”.