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

Заражение и инициализация

Про­цесс зараже­ния телефо­на ничем осо­бен­ным от уже при­выч­ной схе­мы для устрой­ств под управле­нием Android не отли­чает­ся. Злов­редный APK-файл про­ника­ет на телефон под видом игры Sex Xonix, яко­бы пре­дос­тавля­ющей воз­можность полюбо­вать­ся голыми тет­ками. Понят­ное дело, что нат­кнуть­ся на такое сок­ровище на андро­ид‑мар­кете нере­аль­но и оби­тает оно на вся­чес­ких вто­росор­тных сай­тах с сом­нитель­ным содер­жимым, которое прив­лека­ет к себе любите­лей погоря­чее.

Зловредный Sex Xonix готов к установке
Злов­редный Sex Xonix готов к уста­нов­ке

При уста­нов­ке тро­ян зап­рашива­ет сле­дующие раз­решения (они, как и положе­но, про­писа­ны в AndroidManifest.xml):

![рисунок_2](рисунок_2.jpg)<!-- неограниченный доступ в интернет -->
"android.permission.INTERNET"
<!-- мониторинг состояния сети -->
"android.permission.ACCESS_NETWORK_STATE"
<!-- чтение состояния и идентификатора телефона -->
"android.permission.READ_PHONE_STATE"
<!-- запуск приложения при загрузке телефона -->
"android.permission.RECEIVE_BOOT_COMPLETED"
<!-- запрещение перевода телефона в «спящий» режим -->
"android.permission.WAKE_LOCK"
<!-- чтение содержимого SD-карты -->
"android.permission.WRITE_EXTERNAL_STORAGE"
<!-- запись на SD-карту -->
"android.permission.READ_EXTERNAL_STORAGE"
Разрешения, которые Simplocker запрашивает при установке
Раз­решения, которые Simplocker зап­рашива­ет при уста­нов­ке

Ко­неч­но, опыт­ный и осто­рож­ный вла­делец телефо­на, уви­дев такие нес­кром­ные для прос­той игрушки зап­росы, сра­зу же заподоз­рит нелад­ное, но самых нас­торажи­вающих раз­решений на отправ­ку SMS и совер­шения звон­ков в этом спис­ке не наб­люда­ется (да и прав супер­поль­зовате­ля тоже не тре­бует­ся), поэто­му мно­гие любите­ли такого рода игр спо­кой­но давят на кноп­ку «Уста­новить».

В резуль­тате уста­нов­ки вмес­то полу­обна­жен­ных кра­соток на экра­не телефо­на появ­ляют­ся устра­шающие над­писи, подоб­ные тем, что «пос­час­тли­вилось» наб­людать мно­гим незадач­ливым поль­зовате­лям на экра­нах сво­их компь­юте­ров в не сов­сем далеком прош­лом.

До боли знакомая многим картина экрана блокировки
До боли зна­комая мно­гим кар­тина экра­на бло­киров­ки

Су­щес­тву­ет нес­коль­ко вари­антов тро­яна с раз­ными видами экра­на бло­киров­ки, которые отли­чают­ся содер­жани­ем устра­шающей над­писи, вымога­емой сум­мой (есть вари­ант, тре­бующий опла­ту в укра­инских грив­нах) и спо­собом опла­ты (име­ются вари­анты с опла­той через QIWI-кошелек, через попол­нение номера мобиль­ного и через укра­инскую пла­теж­ную сис­тему MoneXy). Некото­рые раз­новид­ности Simplocker для боль­шего устра­шения исполь­зуют еще и встро­енную в телефон камеру: фотог­рафиру­ют перепу­ган­ное лицо нес­час­тно­го вла­дель­ца телефо­на и гро­зят­ся отпра­вить это фото «куда сле­дует». Все­го на момент написа­ния статьи анти­вирус­ными ком­пани­ями было обна­руже­но око­ло 30 модифи­каций тро­яна Simplocker.

Simplocker на virustotal.com
Simplocker на virustotal.com
 

Изучаем содержимое манифест-файла

В начале деком­пилиро­ван­ного фай­ла AndroidManifest.xml мы видим выше­опи­сан­ные сом­нитель­ные раз­решения. Далее сле­дуют объ­явле­ния ком­понен­тов тро­яна: один ком­понент Main типа action, который запус­кает­ся в момент, ког­да поль­зователь щел­кает по икон­ке тро­яна, два ком­понен­та типа receiver — ServiceStarter и SDCardServiceStarter (пер­вый запус­кает­ся во вре­мя заг­рузки телефо­на, вто­рой — при наличии SD-кар­ты) и два ком­понен­та типа service — MainService и TorService.

Все наз­вания говорят сами за себя. В MainService реали­зован основной фун­кци­онал тро­яна, ServiceStarter, оче­вид­но, запус­кает основной сер­вис в момент заг­рузки телефо­на, SDCardServiceStarter запус­кает про­цесс шиф­рования фай­лов, если в телефон встав­лена SD-кар­та, а TorService, судя по наз­ванию, отве­чает за связь с коман­дным сер­вером пос­редс­твом сети Tor.

Компоненты трояна в AndroidManifest.xml
Ком­понен­ты тро­яна в AndroidManifest.xml

warning

Simplocker бло­киру­ет экран телефо­на дос­таточ­но эффектив­но, но не без­надеж­но. Обла­дая опре­делен­ной лов­костью рук, быс­тры­ми и точ­ными дви­жени­ями паль­цев мож­но попытать­ся оста­новить работу тро­яна через какой‑нибудь заранее уста­нов­ленный менед­жер при­ложе­ний (если у тебя есть зна­комый чем­пион по сбор­ке кубика Рубика, то можешь поп­росить его).

Ос­новная задача клас­са Main — бло­киров­ка экра­на, вывод на него устра­шающей над­писи и запуск сер­виса, который опи­сан клас­сом MainService. Все устра­шающие над­писи находят­ся в ресур­сах APK-фай­ла в виде тек­сто­вых строк, а бло­киров­ка экра­на осу­щест­вля­ется перех­ватом нажатий кно­пок телефо­на Home, Back и Menu.

Вывод надписи на экран из ресурсов приложения и обработчик нажатий кнопок на телефоне
Вы­вод над­писи на экран из ресур­сов при­ложе­ния и обра­бот­чик нажатий кно­пок на телефо­не
 

Связь с командным сервером

Глав­ная осо­бен­ность это­го тро­яна — исполь­зование сети Tor для свя­зи с коман­дным сер­вером. Сам коман­дный сер­вер рас­полага­ется в домен­ной зоне .onion, что дела­ет весь­ма зат­рудни­тель­ным иден­тифика­цию его вла­дель­ца.

В отли­чие от CryptoLocker’a, Simplocker не генери­рует домен­ные име­на коман­дно­го сер­вера по спе­циаль­ному алго­рит­му. Имя сер­вера про­писа­но непос­редс­твен­но в теле прог­раммы, при этом в раз­ных вари­антах прог­раммы име­на отли­чают­ся друг от дру­га.

Доменное имя командного сервера и настройки соединения в коде программы
До­мен­ное имя коман­дно­го сер­вера и нас­трой­ки соеди­нения в коде прог­раммы

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

Вот так Simplocker получает IMEI и модель телефона
Вот так Simplocker получа­ет IMEI и модель телефо­на
По получении команды stop троян начинает расшифровку файлов
По получе­нии коман­ды stop тро­ян начина­ет рас­шифров­ку фай­лов

За успешную работу тро­яна в Tor-сети, как мы уже говори­ли, отве­чает класс TorService, код которо­го, по всей видимос­ти, был взят из популяр­ного Tor-кли­ента под андро­ид Orbot и нем­ного допилен под нуж­ный фун­кци­онал.

info

.onion — псев­додомен вер­хне­го уров­ня, соз­данный в 2004 году для обес­печения дос­тупа к ано­ним­ным сер­висам сети Tor. Адре­са в этой домен­ной зоне не явля­ются DNS-запися­ми, и информа­ция о них не хра­нит­ся в кор­невых DNS-сер­верах, поэто­му для прос­мотра onion-сай­тов необ­ходим либо пла­гин для бра­узе­ра, либо спе­циаль­но обу­чен­ный Tor-кли­ент.

 

Поиск и шифрование файлов

При обна­руже­нии в телефо­не SD-кар­ты стар­тует SDCardServiceStarter, который, в свою оче­редь, запус­кает про­цесс поис­ка и шиф­рования фай­лов. Если покопать­ся в коде тро­яна, то там мож­но обна­ружить сле­дующие стро­ки:

EXTENSIONS_TO_ENCRYPT =
Arrays.asList(new String[]
{
"jpeg", "jpg", "png",
"bmp", "gif", "pdf",
"doc", "docx", "txt",
"avi", "mkv", "3gp", "mp4"
})

Как мож­но догадать­ся, это не что иное, как рас­ширения фай­лов, которые будут под­вер­гну­ты шиф­рованию. Для шиф­рования фай­лов исполь­зует­ся крип­тогра­фичес­кое рас­ширение JCE (Java Cryptography Extension), поз­воля­ющее реали­зовать основные крип­тогра­фичес­кие алго­рит­мы.

Рас­смат­рива­емый нами тро­ян исполь­зует алго­ритм сим­метрич­ного шиф­рования AES с дли­ной клю­ча в 256 бит, при­чем ключ генери­рует­ся самим тро­яном из тек­сто­вой стро­ки, которая хра­нит­ся в теле тро­яна (в CryptoLocker’е, напом­ним, исполь­зовал­ся алго­ритм RSA и ключ для рас­шифров­ки хра­нил­ся на коман­дном сер­вере). Генера­ция клю­ча шиф­рования осу­щест­вля­ется путем сня­тия SHA-256-хеша с тек­сто­вой стро­ки, сос­тоящей из 12 сим­волов (у каж­дого из вари­антов тро­яна эта стро­ка раз­ная).

Текстовая строка для генерации ключа и инициализация алгоритма шифрования
Тек­сто­вая стро­ка для генера­ции клю­ча и ини­циали­зация алго­рит­ма шиф­рования

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

Код функций decrypt и encrypt, ответственных за расшифровывание и зашифровывание файлов
Код фун­кций decrypt и encrypt, ответс­твен­ных за рас­шифро­выва­ние и зашиф­ровыва­ние фай­лов

Пос­ле того как тро­ян зашиф­ровал оче­ред­ной файл, он добав­ляет к зашиф­рован­ному фай­лу рас­ширение enc, записы­вает его на SD-кар­ту и уда­ляет исходный файл.

Зашифрованные файлы с расширением enc
За­шиф­рован­ные фай­лы с рас­ширени­ем enc
Исходный и зашифрованный txt-файл. Длина файла увеличилась на 16 байт за счет выравнивания блоков
Ис­ходный и зашиф­рован­ный txt-файл. Дли­на фай­ла уве­личи­лась на 16 байт за счет вырав­нивания бло­ков
 

Заключение

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии