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:
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”:
W tej części artykułu zajmiemy się pierwszym etapem ataku. W kolejnej publikacji podamy obszerną analizę drugiego etapu ataku.
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ę.
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:
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.
„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.
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:
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 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.
„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.
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.
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.
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.
„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.
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.
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.
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”).
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”.
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.
Offset | Typ | Opis |
---|---|---|
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.
Offset | Typ | Opis |
---|---|---|
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 wpisu | Dział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%\
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.
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%" |
MD5 | Data 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) |
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:
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.
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łównego | Nazwa 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 |
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łównego | Nazwy 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.
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.
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.
Główny komponent jest plikiem PE DLL bez symboli eksportu, skompilowanym za pośrednictwem Microsoft Visual Studio 2005.
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.
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
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:
Rok | Nazwy domen C&C | Adresy 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 |
Rok | Nazwa 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 |
(dwa bajty z identyfikatora użytkownika zostały usunięte!)
W kolejnej publikacji podamy obszerną analizę drugiego etapu ataku „Red October”.
Analizy
Blog