Авторские статьи Исследование работы Encrypt HTML Pro

Discussion in 'Статьи' started by _kREveDKo_, 16 Oct 2006.

  1. _kREveDKo_

    _kREveDKo_ _kREveDKo_

    Joined:
    4 Dec 2005
    Messages:
    778
    Likes Received:
    620
    Reputations:
    1,040
    [Intro]
    Здрася всем. На днях вот от безделия и от отсутствия подключения к сети начал ковырять движки, но
    ни одна известная опенсурсная гадина мне не поддавалась, поэтому плавно перешёл на поиск глюков
    в осле, и наконец получив добротного пинка и тут, решил поковыряться в сплойтах под ИЕ. Достав
    творение одного из наших мемберов (хвала ему и почесть), увидел что хотя сплойт вроде как приватный,
    а палится антивирём. Вот тут-то и пришлось юзать хтмл-криптор, хотя никогда в них ранее нужды
    не испытывал. Под руку попался Encrypt HTML Pro 2.6, который мне сразу напомнил о статье в хакере,
    где подобную программулину ломали. "Ыхыхы! Ну-ка и я попробую!" - подумал я =). Понеслась.

    [Наблюдаем]

    Итак, я создал файлик с именем crypt.html и так как криптор шифрует то что находится
    в теге <body>, то именно этот тег я напичкал его вот таким кодом:
    Code:
    <body>
    Тыц-тыц-тыц
    <script>alert("123456789")</script>
    </body>
    
    Далее запустил криптор вот с такими отпциями:
    [​IMG]
    [​IMG]
    , а всё остальное убрал.

    Смело нажав на Protect, получаю сбэкапленный хтмл-файл и закриптованный
    хтмл-файл. Запускаю второй и вижу вставленную какаху ввиде подобия баннера:
    (This webpage was protected by Encrypt HTML Pro Unregistered Version), волшебные
    слова Тыц-тыц-тыц, алерт и ещё какой-то сраный pop-up. Ну чтоже, приступаем к исследованию
    изменённого кода.

    [Round 1]
    Содержимое закриптованного файла вышло такое:
    Code:
    <SCRIPT LANGUAGE="JavaScript">eval(unescape("%77%69%6e%64%6f%77%2e%6f%70%65%6e%28%22%68%74%74%70%3a%2f%2f%77%77%77%2e%68%74%6d%6c%70%61%73%73%77%6f%72%64%2e%63%6f%6d%2f%61%64%31%2e%68%74%6d%22%2c%20%22%45%6e%63%72%79%70%74%48%54%4d%4c%50%72%6f%22%2c%20%22%77%69%64%74%68%3d%35%30%30%2c%68%65%69%67%68%74%3d%34%30%30%22%29%3b%0d%0a"));eval(unescape("%66%75%6e%63%74%69%6f%6e%20%52%72%52%72%52%72%52%72%28%74%65%61%61%62%62%29%20%7b%76%61%72%20%74%74%74%6d%6d%6d%3d%22%22%3b%6c%3d%74%65%61%61%62%62%2e%6c%65%6e%67%74%68%3b%77%77%77%3d%68%68%68%68%66%66%66%66%3d%4d%61%74%68%2e%72%6f%75%6e%64%28%6c%2f%32%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%09%68%68%68%68%66%66%66%66%3d%68%68%68%68%66%66%66%66%2d%31%3b%66%6f%72%28%69%3d%30%3b%69%3c%68%68%68%68%66%66%66%66%3b%69%2b%2b%29%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%29%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%2b%68%68%68%68%66%66%66%66%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%20%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%6c%2d%31%29%3b%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%74%74%74%6d%6d%6d%29%3b%7d%3b"));</script><body><SCRIPT LANGUAGE="JavaScript">RrRrRrRr("<CITLNUG=JvSrp\"wie(idwsdbr?reflevrw5=as;/CITSRP AGAE\"aacit>sd=wno.iea)tu:as;a 46fle<SRP>");</SCRIPT><table width="100%" border="0" height="50"><tr bgcolor="#336699" align="center"><td height="50"><a href="http://www.mtopsoft.com"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="3">This webpage was protected by Encrypt HTML Pro</font></a><br><b><font color="#FFFFFF" size="-1" face="Arial, Helvetica, sans-serif">Unregistered Version</font></b></td></tr></table>
    Тыц-тыц-тыц
    <script language="JavaScript">RrRrRrRr("<citaet\"2468\"<srpsrp>lr(13579)/cit>");</script>
    </body><!--Protected by Encrypt HTML Pro, MTop, Software Inc.-->
    
    Далее я привожу его в божеский вид, хотя бы немного отформатировав:

    Code:
    <SCRIPT LANGUAGE="JavaScript">
    eval(unescape("%77%69%6e%64%6f%77%2e%6f%70%65%6e%28%22%68%74%74%70%3a%2f%2f%77%77%77%2e%68%74%6d%6c%70%61%73%73%77%6f%72%64%2e%63%6f%6d%2f%61%64%31%2e%68%74%6d%22%2c%20%22%45%6e%63%72%79%70%74%48%54%4d%4c%50%72%6f%22%2c%20%22%77%69%64%74%68%3d%35%30%30%2c%68%65%69%67%68%74%3d%34%30%30%22%29%3b%0d%0a"));
    eval(unescape("%66%75%6e%63%74%69%6f%6e%20%52%72%52%72%52%72%52%72%28%74%65%61%61%62%62%29%20%7b%76%61%72%20%74%74%74%6d%6d%6d%3d%22%22%3b%6c%3d%74%65%61%61%62%62%2e%6c%65%6e%67%74%68%3b%77%77%77%3d%68%68%68%68%66%66%66%66%3d%4d%61%74%68%2e%72%6f%75%6e%64%28%6c%2f%32%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%09%68%68%68%68%66%66%66%66%3d%68%68%68%68%66%66%66%66%2d%31%3b%66%6f%72%28%69%3d%30%3b%69%3c%68%68%68%68%66%66%66%66%3b%69%2b%2b%29%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%29%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%2b%68%68%68%68%66%66%66%66%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%20%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%6c%2d%31%29%3b%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%74%74%74%6d%6d%6d%29%3b%7d%3b"));
    </script>
    
    <body>
    
    <SCRIPT LANGUAGE="JavaScript">
    RrRrRrRr("<CITLNUG=JvSrp\"wie(idwsdbr?reflevrw5=as;/CITSRP AGAE\"aacit>sd=wno.iea)tu:as;a 46fle<SRP>");
    </SCRIPT>
    
    <table width="100%" border="0" height="50">
    <tr bgcolor="#336699" align="center">
    <td height="50">
    <a href="http://www.mtopsoft.com">
    <font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="3">
    This webpage was protected by Encrypt HTML Pro
    </font></a><br><b>
    <font color="#FFFFFF" size="-1" face="Arial, Helvetica, sans-serif">
    Unregistered Version
    </font></b></td></tr></table>
    
    Тыц-тыц-тыц
    <script language="JavaScript">RrRrRrRr("<citaet\"2468\"<srpsrp>lr(13579)/cit>");</script>
    </body>
    
    <!--Protected by Encrypt HTML Pro, MTop, Software Inc.-->
    
    Такс, такс, такс, для начала вижу невооружённым взглядом, что вот она созданная таблица, напоминающая нам что
    за продукт мы не заплатили. Фтопку его. Фтопку и рекламу снизу. Подрезав получаю вот это:
    Code:
    <SCRIPT LANGUAGE="JavaScript">
    eval(unescape("%77%69%6e%64%6f%77%2e%6f%70%65%6e%28%22%68%74%74%70%3a%2f%2f%77%77%77%2e%68%74%6d%6c%70%61%73%73%77%6f%72%64%2e%63%6f%6d%2f%61%64%31%2e%68%74%6d%22%2c%20%22%45%6e%63%72%79%70%74%48%54%4d%4c%50%72%6f%22%2c%20%22%77%69%64%74%68%3d%35%30%30%2c%68%65%69%67%68%74%3d%34%30%30%22%29%3b%0d%0a"));
    eval(unescape("%66%75%6e%63%74%69%6f%6e%20%52%72%52%72%52%72%52%72%28%74%65%61%61%62%62%29%20%7b%76%61%72%20%74%74%74%6d%6d%6d%3d%22%22%3b%6c%3d%74%65%61%61%62%62%2e%6c%65%6e%67%74%68%3b%77%77%77%3d%68%68%68%68%66%66%66%66%3d%4d%61%74%68%2e%72%6f%75%6e%64%28%6c%2f%32%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%09%68%68%68%68%66%66%66%66%3d%68%68%68%68%66%66%66%66%2d%31%3b%66%6f%72%28%69%3d%30%3b%69%3c%68%68%68%68%66%66%66%66%3b%69%2b%2b%29%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%29%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%69%2b%68%68%68%68%66%66%66%66%29%3b%69%66%28%6c%3c%32%2a%77%77%77%29%20%74%74%74%6d%6d%6d%20%3d%20%74%74%74%6d%6d%6d%20%2b%20%74%65%61%61%62%62%2e%63%68%61%72%41%74%28%6c%2d%31%29%3b%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%74%74%74%6d%6d%6d%29%3b%7d%3b"));
    </script>
    
    <body>
    
    <SCRIPT LANGUAGE="JavaScript">
    RrRrRrRr("<CITLNUG=JvSrp\"wie(idwsdbr?reflevrw5=as;/CITSRP AGAE\"aacit>sd=wno.iea)tu:as;a 46fle<SRP>");
    </SCRIPT>
    
    Тыц-тыц-тыц
    <script language="JavaScript">RrRrRrRr("<citaet\"2468\"<srpsrp>lr(13579)/cit>");</script>
    </body>
    
    Ещё я нахожу интересным строчку
    Code:
    Тыц-тыц-тыц
    , потому что сразу узнаю ASCI-коды.
    Понятно что это наши слова Тыц-тыц-тыц.

    Помимо этого узнаю и ещё и функцию декодировки из url-формата - eval(unescape("")); Тут же моя мышка скользит по панели
    инструментов, где находится InetCrack и скармливаю ему содержимое закодированных строк, привожу
    получившееся в божеский вид и получаю это:
    Code:
    
    <SCRIPT LANGUAGE="JavaScript">
    window.open("http://www.htmlpassword.com/ad1.htm", "EncryptHTMLPro", "width=500,height=400");
    
    function RrRrRrRr(teaabb)
    {
    var tttmmm="";
    l=teaabb.length;
    www=hhhhffff=Math.round(l/2);
    
    if(l<2*www)
    {
    hhhhffff=hhhhffff-1;
    }
    
    for(i=0;i<hhhhffff;i++)
    {
    tttmmm = tttmmm + teaabb.charAt(i)+ teaabb.charAt(i+hhhhffff);
    }
    
    if(l<2*www)
    {
    tttmmm = tttmmm + teaabb.charAt(l-1);
    }
    
    document.write(tttmmm);
    
    };
    </script>
    
    <body>
    
    <SCRIPT LANGUAGE="JavaScript">
    RrRrRrRr("<CITLNUG=JvSrp\"wie(idwsdbr?reflevrw5=as;/CITSRP AGAE\"aacit>sd=wno.iea)tu:as;a 46fle<SRP>");
    </SCRIPT>
    
    Тыц-тыц-тыц
    <script language="JavaScript">RrRrRrRr("<citaet\"2468\"<srpsrp>lr(13579)/cit>");</script>
    </body>
    
    [Фтыкаем]
    Ага, б*я!!! Вот он наш поп-ап. Ф топку его. Далее вижу, порадок контента не изменён, т.е. раз в исходном коде после
    слов Тыц-тыц-тыц я разместил алерт, то теперь, насколько мне подсказывает интуиция, он там и остался.
    А точнее не сам алерт, функция, которая его "собирает" как мозайку:
    Code:
    <script language="JavaScript">RrRrRrRr("<citaet\"2468\"<srpsrp>lr(13579)/cit>");</script>
    
    Почему мозайку? Потому что функция RrRrRrRr, которая и берёт на себя роль шифровки, сначала разбивает необходимый для
    "сокрытия" участок кода на две части, а потом записывает сначала первый символ из первой половины, потом первый символ из
    второй половины, далее - второй символ из первой половины и второй символ из второй половины, и так далее. Гораздо
    более наглядный пример будет следующим. Передадим функции RrRrRrRr значение 123456789
    вот так:
    Code:
    <script language="JavaScript">RrRrRrRr("123456789");</script>
    
    Получим вот это:
    Code:
    152637489
    
    Хыхыых, вот и всё... Правда остался не совсем понятный элемент. Участок кода
    Code:
    RrRrRrRr("<CITLNUG=JvSrp\"wie(idwsdbr?reflevrw5=as;/CITSRP AGAE\"aacit>sd=wno.iea)tu:as;a 46fle<SRP>");
    
    с помощью главной функции превращается в какую-то ява-какашку, которая мне не совсем понятна и без которой и так всё
    пашет. Вот теперь кажется всё.

    [Тхе енд]
    В общем-то сплойт я от антивиря спрятал, но денющку за такое кодерство уж увольте, я платить не стал бы =).
     
    7 people like this.