Eksploruj膮c 64-bitowe wy偶yny Internetu

Costin Raiu
Head of Research & Development, Kaspersky Lab Romania

Po opublikowaniu dw贸ch g艂贸wnych wersji systemu Windows dla architektury x64 (znanej r贸wnie偶 jako "AMD64") Microsoft umo偶liwi艂 niemal wszystkim dost臋p do 64-bitowych komputer贸w po niskich cenach. Na konferencji Virus Bulletin w 2005 roku przedstawi艂em referat na temat architektury x64, w kt贸rym szczeg贸艂owo opisa艂em wsp贸艂dzia艂anie znanych wirus贸w i rootkit贸w dla system贸w 32-bitowych z t膮 architektur膮.

Pod koniec prezentacji otrzyma艂em wiele pyta艅 od widowni. Najciekawsze zada艂 naukowiec z European AntiVirus Research Centre firmy Symantec. Pytanie dotyczy艂o Internet Explorera w systemie Windows x64 oraz sposobu, w jaki obiekty ActiveX i BHO (Browser Helper Objects) - do tej pory wy艂膮cznie 32-bitowe - dzia艂aj膮 w 艣rodowisku Windows x64. Jest to istotne ze wzgl臋du na istnienie ogromnej ilo艣ci program贸w spyware i adware, kt贸re instaluj膮 si臋 z Internetu poprzez luki w zabezpieczeniach IE z wykorzystaniem technologii ActiveX oraz aplikacji Java.

Artyku艂 ten stanowi odpowied藕 na powy偶sze pytanie.

Poznaj Internet Explorer x64

Poniewa偶 wszystkie aplikacje systemowe Windows x64 to 64-bitowe pliki typu PE, nale偶a艂oby si臋 spodziewa膰, 偶e Internet Explorer zosta艂 skompilowany jako 64-bitowa aplikacja macierzysta. Tak te偶 jest w rzeczywisto艣ci; 64-bitowy Internet Explorer (wersja 6.0.3790) zosta艂 wbudowany w najnowsze wydanie systemu Windows XP dla platformy 64-bitowej. Rysunek 1 pokazuje okno dialogowe "About".


Rys. 1: 64-bitowe wydanie Internet Explorera

Jednak wraz z 64-bitowym Internet Explorerem z menu Start dost臋pna jest r贸wnie偶 jego 32-bitowa wersja (zobacz Rys. 2). Po uruchomieniu, 32-bitowy Internet Explorer wygl膮da identycznie jak jego bli藕niacza wersja. Wystarczy jednak sprawdzi膰 w Mened偶erze Zada艅, aby przekona膰 si臋, 偶e jest to rzeczywi艣cie proces 32-bitowy.


Rys. 2: Z menu Start dost臋pna jest 32-bitowa edycja tego samego produktu

Wygl膮da wi臋c na to, 偶e tw贸rcy systemu Windows postanowili zaoferowa膰 u偶ytkownikom mo偶liwo艣膰 wyboru u偶ytkowanej wersji. Jakkolwiek dziwnie to brzmi, mieli ku temu bardzo wa偶ny pow贸d: kompatybilno艣膰.

W systemie Windows x64 64-bitowe aplikacje mog膮 skorzysta膰 z IPC w celu wywo艂ania starszego 32-bitowego kodu, podobnie jak 32-bitowe aplikacje mog膮 wywo艂a膰 16-bitowe biblioteki DLL w systemie Win32 poprzez u偶ycie techniki thunking. Oznacza to, 偶e przynajmniej w teorii, ka偶da 64-bitowa aplikacja mo偶e zosta膰 "zmuszona" do wykorzystania 32-bitowej biblioteki DLL. Jednak wywo艂anie 32-bitowego kodu z 64-bitowej aplikacji wi膮偶e si臋 z pewnymi problemami dotycz膮cymi g艂贸wnie szybko艣ci i bezpiecze艅stwa.

Mimo tych problem贸w, przynajmniej teoretycznie, 64-bitowy Internet Explorer mo偶e wykorzystywa膰 32-bitowe wtyczki i obiekty ActiveX. Dlaczego w takim razie Microsoft postanowi艂 dostarczy膰 32-bitow膮 wersj臋 Internet Explorera wraz z systemem Windows XP x64?

Jedno proste wyt艂umaczenie jest takie, 偶e aby sprawi膰, 偶eby 32-bitowe obiekty ActiveX dzia艂a艂y z 64-bitowego Internet Explorera, Internet Explorer musia艂by otworzy膰 32-bitow膮 maszyn臋 wirtualn膮, za艂adowa膰 tam 32-bitowy obiekt COM i komunikowa膰 si臋 z nim. Wymaga艂oby to du偶ych nak艂ad贸w technicznych, jednak dla tak du偶ej firmy jak Microsoft nie by艂oby to powa偶nym problemem.

Ponadto, w艂膮czenie 32-bitowych obiekt贸w ActiveX w 64-bitowym Internet Explorerze otwiera drzwi dla r贸偶nych zagro偶e艅 bezpiecze艅stwa, kt贸re od lat stanowi膮 plag臋 Internetu. Wymaga to r贸wnie偶 kodowania specjalnej bramy aplikacji: 64-bitowa os艂ona dla obiekt贸w ActiveX, kt贸ra zmniejsza podzia艂, jaki istnieje mi臋dzy 64- a i 32-bitowym 艣wiatem w systemie Windows x64. Jest to istotne, poniewa偶 64- i 32-bitowe aplikacje "widz膮" na przyk艂ad r贸偶ne wersje rejestru i mog膮 mie膰 r贸偶ne typy ustawie艅 konfiguracji, a w rezultacie r贸偶nie si臋 zachowywa膰.

Niezale偶nie od tego, kt贸re wyt艂umaczenie jest prawdziwe, Windows x64 zawiera dwie wersje Internet Explorera. Przyjrzyjmy si臋, jak obs艂uguj膮 one formanty ActiveX.

Technologia ActiveX

ActiveX to og贸lna nazwa zbioru technologii, kt贸re zosta艂y rozwini臋te w celu wymiany informacji pomi臋dzy aplikacjami. ActiveX wywodzi si臋 z technologii COM i OLE. jednak wykorzystywana jest g艂贸wnie do oznaczenia "formant贸w ActiveX". W tym przypadku jest to technologia, kt贸ra mo偶e by膰 wywo艂ywana z przegl膮darki.

Wiele lat temu, gdy technologia ActiveX zosta艂a udost臋pniona w Internet Explorerze, zosta艂a uznana za bezpo艣redni膮 konkurencj臋 dla Javy. Jednak Internet Explorer Microsoftu by艂 jedyn膮 przegl膮dark膮 na rynku, kt贸ra j膮 obs艂ugiwa艂a. Jednym z g艂贸wnych argument贸w przeciwko technologii ActiveX by艂o to, 偶e opiera艂a si臋 na kodzie wykonywalnym x86, co bardzo utrudnia艂o jej dzia艂anie na innych procesorach, takich jak PowerPC czy Sparc. W rezultacie, firmy tworz膮ce wieloplatformowe aplikacje by艂yby zmuszone ograniczy膰 si臋 do przegl膮darki Microsoftu oraz komputer贸w PC kompatybilnych z procesorem Intel.

W rzeczywisto艣ci Microsoft wyrz膮dzi艂 sobie nied藕wiedzi膮 przys艂ug臋, poniewa偶 je艣li kto艣 wykorzystuje Internet Explorer, nie oznacza to automatycznie, 偶e posiada 艣rodowisko obs艂uguj膮ce technologi臋 ActiveX! Na przyk艂ad MacOS Internet Explorer (najnowsza wersja: 5.2.3) nie jest zdolny do za艂adowania i uruchomienia formant贸w ActiveX. Podczas gdy technologia Java umo偶liwia艂a uruchomienie aplikacji na wielu r贸偶nych systemach i architekturach sprz臋towych, ActiveX pozwala na uruchomienie kodu tylko na 32-bitowych procesorach Intel x86 pod kontrol膮 systemu Windows. Wraz z pojawieniem si臋 Windows x64 tw贸rcy technologii ActiveX musieli zacz膮膰 si臋 martwi膰 o kolejn膮 platform臋: formanty ActiveX 64-bitowego Internet Explorera.

W艂a艣ciwo艣ci 32- i 64-bitowego Internet Explorera w systemie Windows x64

64-bitowy Internet Explorer z Windows x64 umieszczony jest w folderze "Program Files", oddzielonym od wersji 32-bitowej. Obs艂uguje wtyczki i - jak nale偶a艂oby si臋 spodziewa膰 - potrafi za艂adowa膰 i uruchomi膰 64-bitowe formanty ActiveX. Interesuj膮ce jest to, 偶e w wi臋kszo艣ci wypadk贸w Windows x64 domy艣lnie uruchamia 32-bitowego Internet Explorera. 32-bitowy Internet Explorer wywo艂ywany jest klikni臋ciem skr贸tu IE na pasku narz臋dzi, pozycji "Windows Update" w menu Start oraz skr贸tu IE na pulpicie. Gdy jednak z Eksploratora Windows 偶膮dany jest adres URL, kt贸ry stanowi aplikacj臋 64-bitow膮, wykorzystywany jest 64-bitowy Internet Explorer.

Interesuj膮ce jest r贸wnie偶 zachowanie "Windows Update" pod kontrol膮 systemu Windows x64. Jak ju偶 wspomnieli艣my, pozycja menu Start dla "Windows Update" uruchamia 32-bitowego Internet Explorera, kt贸ry 艂aduje wszystkie modu艂y aktualizacji b臋d膮ce aplikacjami 32-bitowymi. Je艣li jednak otworzymy stron臋 Windows Update w 64-bitowym Internet Explorerze, otrzymamy nast臋puj膮c膮 wiadomo艣膰 (Rys. 3):


Rys. 3. Otwarcie Windows Update w 64-bitowym Internet Explorerze

Niestety nie mam pod r臋k膮 maszyny Itanium IA64, aby sprawdzi膰, czy Windows Update posiada macierzysty formant ActiveX IA64, czy raczej aktualizacja jest uruchamiana jako emulowany kod 32-bitowy, zdecydowanie warto jednak podj膮膰 tak膮 pr贸b臋.

Warto jeszcze wspomnie膰, 偶e 32-bitowa i 64-bitowa wersja IE z systemu Windows x64 posiadaj膮 kilka wsp贸lnych ustawie艅: wykorzystuj膮 na przyk艂ad ten sam folder "Temporary Internet Files" (kt贸ry domy艣lnie znajduje si臋 w "Documents and Settings\%Nazwa_u偶ytkownika%Local SettingsTemporary Internet Files"), ten sam folder "Historia" i "Ulubione".

W wersji IE 6 SP2 Microsoft wprowadzi艂 bardzo u偶yteczn膮 funkcj臋 zarz膮dzania dodatkami Internet Explorera. Mo偶na j膮 znale藕膰 w menu Narz臋dzia: "Tools->Manage Add-ons". Mened偶er dodatk贸w mo偶na wykorzystywa膰 do wy艂膮czania lub ponownego w艂膮czania formant贸w ActiveX lub rozszerze艅 przegl膮darki. Niestety nie mo偶na go u偶y膰 do ich odinstalowania. Tym samym u偶ytkownik posiada pe艂niejszy obraz rozszerze艅 wykorzystywanych w danym momencie przez Internet Explorera i mo偶e je w pewnym stopniu kontrolowa膰.

Wtyczki dla 64-bitowego IE

呕adna z wersji IE z systemu Windows x64 nie obs艂uguje domy艣lnie Javy, tak wi臋c trzeba oddzielnie pobra膰 i zainstalowa膰 obs艂ug臋 Javy. Oczywi艣cie najnowsza publikacja firmy Sun zawiera 32-bitowe JRE (J2SE Runtime Environment 5.0 Update 5), jednak na stronie internetowej firmy Sun nie ma nic na temat obs艂ugi platformy AMD64 dla Windows. Wprawdzie w wersji Update 4, kt贸r膮 mo偶na otrzyma膰 od firmy Sun, zawarta jest wersja J2SE Runtime Environment 5.0 dla AMD64, jednak wydaje si臋 ona nie dzia艂a膰. Pakiet instaluje si臋 bez 偶adnych b艂臋d贸w, lecz IE nie wy艣wietla go na li艣cie rozszerze艅 a aplety Javy nie dzia艂aj膮 na stronach WWW.

Dodatkowo, Macromedia nie oferuje odtwarzacza animacji Flash dla Windows x64, nie ma programu Acrobat Reader x64 firmy Adobe i nie jest dost臋pna bezpo艣rednia obs艂uga formatu QuickTime w przegl膮darce. W rzeczywisto艣ci, podczas pisania tego artyku艂u nie uda艂o mi si臋 znale藕膰 偶adnej 64-bitowej wtyczki dla IE ani 偶adnego 64-bitowego formantu ActiveX stworzonego przez firm臋 inn膮 ni偶 Microsoft.

Oznacza to, 偶e 64-bitowy Internet Explorer nie obs艂uguje (jeszcze) aplet贸w Javy oraz plik贸w Shockwave i PDF, co w praktyce ogranicza jego funkcjonalno艣膰 tak bardzo, 偶e dla wielu u偶ytkownik贸w stosowanie go b臋dzie ca艂kowicie bezcelowe.

Ataki z艂o艣liwych program贸w

Ze wzgl臋du na to, 偶e 64-bitowy IE nie potrafi wywo艂a膰 32-bitowego kodu x86, ataki 32-bitowych z艂o艣liwych program贸w wyst臋puj膮 na bardzo ograniczon膮 skal臋. W praktyce nie dzia艂a 偶adna z obecnych metod wykorzystywanych do rozprzestrzeniania z艂o艣liwych program贸w za po艣rednictwem stron internetowych, mo偶e z wyj膮tkiem ich bezpo艣redniego pobrania i wykonania przez u偶ytkownika.

Niestety nie mo偶na powiedzie膰 tego samego o 32-bitowym Internet Explorerze z Windows x64. Przetestowa艂em szereg z艂o艣liwych program贸w, kt贸re instaluj膮 si臋 z r贸偶nych stron WWW. Poni偶ej przedstawiam kilka z nich:

  • Trojan-Downloader.Win32.IstBar.jm
  • Trojan-Downloader.Win32.IstBar.kq
  • Trojan-Downloader.Win32.IstBar.ij
  • Trojan-Downloader.Win32.Dyfuca.ei

Wszystkie z nich przedostaj膮 si臋 na komputery u偶ytkownik贸w ze stron WWW, wykorzystuj膮c r贸偶ne exploity na luki w IE (w IE6 dla Windows XP x64 luki te zosta艂y ju偶 za艂atane, tak wi臋c exploity te nie dzia艂aj膮) oraz formanty ActiveX. W celu ukrycia swojej obecno艣ci niekt贸re z nich wykorzystuj膮 rootkity w trybie j膮dra Win32 (nie dzia艂aj膮 w systemie Windows x64), inne wykorzystuj膮 rootkity w trybie u偶ytkownika, kt贸re s膮 skuteczne w stosunku do innych aplikacji w systemie Windows XP x64, ale nie w stosunku do aplikacji 64-bitowych.

Z艂e wie艣ci s膮 takie, 偶e nie tylko skutecznie infekuj膮 one system (chocia偶 wszystkie z nich wymagaj膮 do instalacji potwierdzenia u偶ytkownika), ale r贸wnie偶 dzia艂aj膮 pod kontrol膮 WOW64. Przetrwaj膮 ponowne uruchomienie systemu, nawet je艣li obiekty BHO s膮 wy艂膮czone w IE przed restartem. Nie艂atwo je usun膮膰 bez u偶ycia 64-bitowego skanera antywirusowego.

W rzeczywisto艣ci, bez 64-bitowego skanera antywirusowego (niestety oferty w tym zakresie wci膮偶 s膮 bardzo ograniczone) pozbycie si臋 32-bitowego z艂o艣liwego programu z systemu Windows x64 nie jest zadaniem 艂atwym dla niedo艣wiadczonego u偶ytkownika. Oczywi艣cie niedo艣wiadczony u偶ytkownik zawsze m贸g艂by unicestwi膰 wszystkie 32-bitowe procesy w Mened偶erze zada艅, a nast臋pnie u偶y膰 zwyk艂ego 32-bitowego skanera antywirusowego, aby wyleczy膰 lub usun膮膰 wszystkie zainfekowane pliki. Jednak podzia艂 mi臋dzy 32- i 64-bitowymi procesami w systemie Windows x64 utrudnia 32-bitowemu skanerowi antywirusowemu usuni臋cie niekt贸rych z wy偶ej wymienionych z艂o艣liwych program贸w, w czasie gdy s膮 aktywne.

Wnioski

Wydaje si臋, 偶e wraz z systemem Windows x64 Microsoft w ko艅cu dostarczy艂 wersj臋 Internet Explorera, kt贸ra jest zabezpieczona przed wi臋kszo艣ci膮 dzisiejszych atak贸w z艂o艣liwych program贸w wykorzystuj膮cych Internet Explorer; mowa jest oczywi艣cie o 64-bitowym IE. Niestety nie wynika to z prze艂omu w zabezpieczeniu dokonanego przez firm臋 Microsoft, ale jest skutkiem ubocznym braku obs艂ugi Javy, 32-bitowych formant贸w ActiveX, zawarto艣ci Shockwave oraz PDF. W艂a艣nie z tego powodu wi臋kszo艣膰 u偶ytkownik贸w b臋dzie u偶ywa艂o 32-bitowego Internet Explorera, kt贸ry - jak mogli艣my si臋 przekona膰 - tak samo sprzyja atakom z艂o艣liwych program贸w jak ka偶da inna wersja dzia艂aj膮ca pod kontrol膮 32-bitowego systemu Windows XP. Jednak, przy u偶yciu aktualnego 64-bitowego skanera antywirusowego u偶ytkownicy nie powinni mie膰 problem贸w z usuwaniem 32-bitowych szkodnik贸w. W rzeczywisto艣ci, dzi臋ki dobrej separacji mi臋dzy 艣wiatem 32- a 64-bitowym, usuwanie tych zagro偶e艅 powinno by膰 nawet 艂atwiejsze. U偶ytkownicy Windows x64 b臋d膮 mieli mniejsze problemy ze szkodliwym oprogramowaniem, oczywi艣cie do czasu, gdy 64-bitowe szkodniki stan膮 si臋 popularne.

Bibliografia

Artyku艂 zosta艂 po raz pierwszy opublikowany w Virus Bulletin, w grudniu 2005 r.

  1. Costin Raiu, "Enhanced virus protection", Virus Bulletin International Conference 2005.
  2. Microsoft: Lista ogranicze艅 w 64-bitowych systemach Windows
  3. Microsoft: R贸偶nice mi臋dzy 32- a 64-bitowymi wersjami przegl膮darek Internet Explorer zawartych w systemach Windows Server 2003 (wersja dla x64) oraz Windows XP Professional x64 Edition