Наборы эксплойтов используются злоумышленниками для автоматической установки вредоносного кода на компьютер пользователя. Для того, чтобы пользователь оказался на самой «веб-странице посадки» (landing page), которая подберет нужный тип эксплойта, соответствующего окружению браузера пользователя, он должен быть на нее перенаправлен. Это перенаправление может осуществляться с легитимных веб-сайтов, которые были скомпрометированы вредоносным содержимым (JavaScript или IFrame).
Таким образом, обычный сценарий использования набора эксплойтов злоумышленниками заключается в компрометации легитимного веб-ресурса, с которого пользователь перенаправляется на вредоносное содержимое. На этой неделе мы столкнулись с интересным вариантом того, каким образом осуществляется перенаправление пользователя на страницу одного из наборов эксплойтов. На скомпрометированной веб-странице мы обнаружили вредоносный код, который умеет взаимодействовать с пользователем, отображая ему поддельное сообщение о работе браузера.
Рис. Поддельное сообщение, генерируемое вредоносным кодом.
Код, который отвечает за взаимодействие с пользователем через такое сообщение, выполнен в виде внедренной в веб-страницу HTML-формы. Окно отображается только в том случае, когда пользователь просматривает страницу в браузере Internet Explorer. Мы также обратили внимание на то, что эта форма отправляет на сервер некоторые данные в POST-запросе.
Рис. Внедренное в веб-страницу вредоносное содержимое.
Вне зависимости от того, какой вариант ответа (Cancel или OK) выберет пользователь, он будет перенаправлен на страницу набора эксплойтов Angler exploit kit. Для выполнения перенаправления, через форму будет отправлен указанный на скриншоте POST-запрос, который вернет небольшой фрагмент HTML и JavaScript кода. С помощью этого кода и будет выполнено перенаправление на конечный URL-адрес.
Рис. URL-адрес промежуточной веб-страницы.
Рис. Полная цепочка перенаправлений и конечной эксплуатации.
Теперь вернемся к данным, которые отправляются в POST-запросе. Видно, что они закодированы в формате Base64. Ниже дана их расшифровка.
Оригинальная строка.
ua_base64 =
«tlP7Vt89hmr1vjdAW8YqmDT/sGFiyxROsPBX45R6HxinEeZC+YGrgEA0mmA3NDEJUYzgWm29EKShU2QPqxBXzVNMJvpfJN3Q
cVGGehPCNNXOlxo0JE94z0RTBgCq0VubolrWHmAexV14+cqx6qILC6z1EZDl4JFYd32wrMZrhNinl47lzpnvXwPluNsmh0CA»
Декодированная строка.
base64.b64decode(ua_base64) =
"xb6SxfbVxdf=x86jxf5xbe7@[xc6*x984xffxb0abxcbx14Nxb0xf0Wxe3x94zx1fx18xa7x11xe6Bxf9x81xabx80@4x9a`741
tQx8cxe0Zmxbdx10xa4xa1Sdx0fxabx10WxcdSL&xfa_$xddxd0qQx86zx13xc24xd5xcex97x1a4$OxxcfDSx06x00xaaxd1[
x9bxa2Zxd6x1e`x1exc5]xxf9xcaxb1xeaxa2x0bx0bxacxf5x11x90xe5xe0x91Xw}xb0xacxc6kx84xd8xa7x97x8exe5xcex99
xef_x03xe5xb8xdb&x87@x80"
По названию параметра «ua» можно догадаться, что эти данные представляют собой зашифрованную строку User-Agent используемого пользователем браузера. В нашем примере она выглядит так.
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E; BOIE8;ENUSMSCOM).
Можно предположить, что указанные в HTML-коде формы параметры (см. скриншот выше) зашифрованы через XOR с использованием одной и той же строки (keystream). Для этого можно применить операцию XOR к декодированной через base64 строке, которая содержит User-Agent c keystream в виде уже известной нам строки User-Agent (переведенной в нижний регистр). Получившееся значение мы можем использовать как keystream для расшифровки параметра furl (см. скриншот выше). В результате этой операции мы получим оригинальный URL веб-страницы набора эксплойтов. Для этого можно использовать нижеуказанный код на Python.
import base64
def xor(message, key):
decrypted = “”
for i in range(0, len(message)):
decrypted += chr(ord(message[i]) ^ ord(key[i%len(key)]))
return(decrypted)ua = “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E; BOIE8;ENUSMSCOM)”
ua_plaintext = ua.lower()
ua_base64 = “tlP7Vt89hmr1vjdAW8YqmDT/sGFiyxROsPBX45R6HxinEeZC+YGrgEA0mmA3NDEJUYzgWm29EKShU2QPqxBXzVNMJvpfJN3QcVGGehPCNNXOlxo0JE94z0RTBgCq0VubolrWHmAexV14+cqx6qILC6z1EZDl4JFYd32wrMZrhNinl47lzpnvXwPluNsmh0CA”
furl_base64 = “s0j1T4l+yCai5DANXd0gmz38sX5pwRVb/vhQpcU9Qlj8G6tQ5Nc=”
keystream = xor(base64.b64decode(ua_base64), ua_plaintext)
print “Decrypted furl:”
print(xor(base64.b64decode(furl_base64), keystream))
$ python angler-dexor.py
Расшифрованный параметр furl:
hxxp://cct7m.xenybuvifd.net/4genk1met8
Используемая злоумышленниками практика интерактивности (взаимодействие с пользователем), при осуществлении операции перенаправления, предназначена для того, чтобы избежать обнаружения конечного URL полезной нагрузки со стороны систем автоматического анализа.
Вредоносный код, который устанавливается на компьютер с помощью этого набора эксплойтов, обнаруживается антивирусными продуктами ESET как Win32/PSW.Papras.CX.
Автор: esetnod32