Pull to refresh

Comments 24

Так и хочется вам порекомендовать Штирлиц.exe, чтобы не заниматься галиматьей с раскодирование escape и unicode и т.д.
Это мне известно, просто пользователи попросили рассказать, как это делается вручную.
Я, кстати, чуть позже написал вот такой быдлокод для расшифровки без мучительства:

        var x = $E[$d.$fJ]($j);
        var s = x.replace(/\\u00([0-9a-fA-F]{2})/g, function() {
            return String.fromCharCode(parseInt(arguments[1], 16));
        });
        s = s.replace(/\\x([0-9a-fA-F]{2})/g, function() {
            return String.fromCharCode(parseInt(arguments[1], 16));
        });
        console.log(s);


понятно, что это можно свести в одну регулярку.
Вот что на сайте cryptoservice.info/:

Добрый день, уважаемый пользователь КриптоСервиса.

Наш сервис относительно молод, но функционал наш велик. Спустя несколько месяцев с начала нашей работы мы заметили, что у нас превалирует часть клиентов, криптующих исключительно iframe, хотя сервис изначально задумывался как платный криптер/обфускатор Javascript-кода вообще. Теперь мы видим, что это используется для распространения вредоносного ПО. С этого момента мы прекращаем криптовать iframe-коды. Доступными останутся только криптеры Javascript, контента и ссылок. В течении недели криптер iframe будет убран с нашего сервиса. Пользователям с уже оплаченным аккаунтом iframe-криптер будет доступен до истечения аккаунта.

С наилучшими пожеланиями, КриптоСервис.
Автор молодец, что следит за сайтами клиентов и ищет правду в таких «скриптах».
Недавно сам столкнулся с такой проблемой и искал вариант «декондига» таких подарков и остановился примерно на следующем варианте:
<script type="text/javascript">
window.eval = function(code)
{
	console.log(code); // or alert(code);
}
</script>

классная идейка, спасибо!
В дополнение к этому скажу, что мне приходилось встречаться с обфусцированным кодом, где расшифрованный код выполнялся не eval'ом, а с помощью конструктора Function, т.е. вроде
new Function('','alert(document.cookie)')();
Только обращения к самому window.Function'у не было, поэтому его переопределение ничего не дало. Зато есть, например, такой вариант достучаться до него
new alert.constructor('','alert(document.cookie)')();
, который и использовался в моём случае. Мне оставалось только переопределить Function.prototype.constructor, и желанный код любезно отобразился в консоли.

Ну и для восстановления форматирования (и даже избавления от /packer/'а) можно пользоваться JSbeautifier'ом.
Спасибо, как я и думал в коменте к прошлой статье. Однако бывают сложнее алгоритмы обфускации по типу множественного пакера, кодера. Думаю принципы в статье и для них пригодятся, главное начинает анализ с самой последней вызываемой функции…
А что происходит после редиректа на iframe? Как iframe может привести к запуску вируса?
javascript deobfuscator addon под ff отлично показывает исполняемый код и такого мучительства делать не надо
Вы внимательно читали топик? Этот пост объясняет, как можно вручную расшифровать вредоносный JS-код. Тем более, я считаю, что большинство юзеров хабра сидит в гугл хром; фф сдает позиции (имхо).
Конечно, большинству людей интересней всего алгоритм «нажми на кнопку — получишь результат». Но всё же ещё не перевелись люди, которым интересно, как эта «кнопка» работает и возможно среди них есть те, кто когда-нибудь эту «кнопку» сделает ещё лучше или похожу для других целей. Почему бы с ними не поделиться принципом?
Цитаты из той статьи, на которую Вы ссылаетесь:

Раскодируем поэтапно скрипт воспользовавшись обратными функциями:
Далее уберем 16-ричную систему функцией unescape


Из этого можно сделать вывод, что использование unescape — это не использование обратной функции? Какие тогда функции использовались?
UFO just landed and posted this here
Очень удобно делать в строке браузера.
Вводим javascript:alert("\u0064\u006Fcument.creat\u0065\u0045\u006C\u0065ment('ifra\x6D\x65')")
Видим:
ЕМНИП, на хабре была статья про расшифровку хитро запакованного JS. Там было что-то связанное с лямбда-функциями и использованием тела функции как ключа. Сейчас найти ее не могу. Никто не подскажет?
Одну ссылку я давал выше, но вроде что было ещё, тоже найти не могу…
Как раз недавно dx в своем блоге опубликовал подобную статью. Правда там рассматривается пример деобфускации php скрипта, но подход тот же.
Sign up to leave a comment.

Articles