Показано с 1 по 8 из 8.

Троянские вкладки и троянизация приложений

  1. #1
    External Specialist Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для priv8v
    Регистрация
    26.06.2008
    Сообщений
    1,373
    Вес репутации
    1263

    Arrow Троянские вкладки и троянизация приложений

    ###


    Троянские вкладки и троянизация приложений


    В этой небольшой статье рассмотрена достаточно актуальная на сегодняшний день тема - троянские вкладки в программах и троянизация вполне легитимных приложений. Сегодня антивирусы разбирают файл буквально по косточкам, файл должен пройти через огонь, воду и медные трубы, что бы ему наконец дали запуститься, поэтому при целевых атаках большую эффективность приносит троянизация приложений - в этом случае не придется скрываться от антивируса и бороться с его злобной эвристикой, эмуляцией, фаерволом и обновлениями - пользователь все сделает за него - ведь приложение-то легитимное и ему нужно все разрешать.
    Методы, цели и способы при троянизации разные и специфика их применения тоже сильно варьируется. Автор постарался рассказать о наиболее популярных и интересных способах и методах троянизации приложений.


    Фейки программ.
    Условно их можно разделить на две большие группы: те, которые вымогают деньги и те, которые похищают персональные данные. Конечно, никто не мешает фейкам одновременно делать и то и другое, но подобная наглость со стороны хакеров встречается не часто.
    Наверняка, все слышали (из тех же самых новостей) о поддельных антивирусах, которые имитируют нахождение в системе вирусов, и за их "удаление" просят денег в виде платы за регистрацию - это тоже, своего рода, фейки.
    Если говорить о фейках в чистом виде, то в рунете чаще всего попадаются фейки ICQ-клиентов и программы WebMoney Keeper Classic. Их пользователь или сам скачивает, принимая за чистую монету (преходя по ссылкам в пришедшем спаме, или с варезников) или они устанавливаются в систему трояном, который удаляет настоящий файл данной программы и вместо него кладет фейк. Эти два способа попадения фейков на компьютер жертвы наиболее распространены. Фейки (в своем большинстве) сделаны "за вечер на коленке" - только принимают логин/пароль (uin/pass) и отправляют его хакеру на E-mail. При этом можно даже невооруженным глазом увидеть различия между фейком и оригиналом - цвета не такие яркие, картинки немного не такие, проверки на заполняемость полей нет, стучат по 25 порту куда-то...


    Троянские закладки в чистом виде - подарок от разработчиков.
    Не стоит удивляться - такое тоже встречается, не так часто, но имеет место. Подобный функционал может быть легальным, полулегальным и нелегальным. К легальному можно отнести, например, такое: при установке программа предлагает помочь разработке этого ПО - т.е дает пользователю выбор отправлять или нет какие-то данные с компьютера не сервер разработчикам (это могут быть названия, устанавливаемых программ, отдельные файлы, дампы памяти и т.д - все это зависит от того, что за ПО). К полулегальным можно отнести отправку данных на сервер о которой не говорится при установке и которая включена по умолчанию, а что бы ее отключить нужно во-первых о ней знать, а во-вторых долго рыть до галочки, отключающей ее, в настройках. Сюда же можно отнести загрузку рекламы из сети и показ ее пользователю без возможности отключения этого - неизвестно что там еще загрузится, а без отображения рекламы приложение может и вовсе отказаться работать (нет интернета - не буду работать). А к нелегальным можно отнести закладки, о которых никто кроме разработчиков не знает - если речь идет о большом и известном приложении (антивирус, ОС), то тут о таких закладках можно только догадываться - теоритические обсуждения такого можно найти как на форумах по безопасности (ВИ, АМ), так и в новостях, где сообщается о легальных троянах и вкладках в ОС и некоторые приложения, которые псевдохорошие власти навязвают своим гражданам. А если речь идет о приложении поменьше, то тут троянская закладка будет служить обогащению его автора. Например можно встретить некоторые небольшие ICQ-клиенты или боты с такими вставками - они или отправляют тут же uin/pass в асю создателю или могут это сделать по определенной команде. Подобные закладки можно найти в некоторых E-mail клиентах - не только отправляет письмо по адресу, но и отправляет логин/пароль злоумышленнику.
    Если последнее можно найти именя на руках сниффер, то закладку, которая будет работать по команде (по условию) можно найти только имея достаточно хорошие навыки реверсинга. Но не реверсить же подряд все приложения?.. Поэтому стоит только догадываться о том, в скольких приложениях есть подобные подарки от разработчиков.
    Самый безоблачный пример секретной вкладки - это пасхальное яйцо в программе - при нажатии на определенное место в окне или при вводе определенного символа программа показывает картинку или еще что-нибудь в этом роде делает - вреда от этого никакого, наоборот приятно.


    Джойнеры
    Джойнер (от английского слова join - присоединять). Это программа, которая служит для соединения двух и более файлов в один. Различают джойнеры по функциональности (по количеству возможных файлов для соединения в один, по формату файлов для соединения, по криптозащите и т.д).
    В общем виде можно описать это так: из двух файлов получается один исполняемый файл, который включает в себя два исходных, при запуске он извлекает их из себя во временную папку и запускает (чаще через ShellExecute, для того, что бы приложение было открыто тем, с чем оно ассоциировано в системе) оба файла.
    Чаще всего этот способ троянизации используется для "приклеивания" вредоносного файла к безвредному - т.е вполне можно скачать из интернета с какого-нибудь варезника нужную программу - при запуске запустится и она и приклеенный к ней зловред.


    Потенциальная опасность
    Некой троянской функцией можно считать создание приложением брешей в обороне компьютера. Зачастую, это получается, из-за неверной настройки программы или из-за того, что программа вообще не позволяет это настраивать и делает "дыру" в любом случае. Достаточно вспомнить о различных программах класса "качалки-раздавалки", IRC-клиенты, удаленное администрирование и прочее. Расшаривание ресурсов и IRC это уже скорее прошлый век, а удаленное администрирование это удел пряморуких админов, но сбрасывать это со счетов все-таки не нужно. Расшаривание чаще встречается сегодня на компьютерах, подключенных к локальной сети. Если локалки нет, то необходимости расшаривать ресурсы вообще нет никакой - можно с комфортом использовать uTorrent (он не создает шар) или качать с файлохранилищ. Также некоторые приложения для своей работы запускают потенциально опасные службы (сервер, планировщик заданий и т.д).



    Использование легитимных программ
    Вполне легитимная программа может быть использована хакером как некий троянец (речь не идет о действии из контекста приложения, путем внедрения в его АП своей dll). Многие программы позволяют управлять практически всеми своими функциями через параметры командной строки - так почему хакер будет отказываться от этого? Тем более фаерволы не обратят на это действие никакого внимания, а все заверения разработчиков АВ-софта по поводу мониторинга внешнего управления приложениями, которые пользуются сетью, относятся только к браузерам, хотя и тут можно найти лазейку и запускать браузер с параметрами в обход проактивной защиты. Также некоторые программы хранят львиную долю своих настроек (даже те, которые не нужно выставлять напоказ) в текстовом файле в открытом виде, и их умелая модификация может привести к тому, что приложение будет действовать не совсем так, как того требует пользователь.
    Не стоит сюда приплетать внешнее управление функционалом через GUI (через SendMessage/PostMessage/keybd_event/mouse_event и другие) - тогда почти каждое приложение может стать трояном и лучше вообще компьютер не включать. Хоть подобное управление и встречается, но оно не просто редко, а очень редко, да и то его используют даже в этих редких случаях для нажатия в АВ-комплексе кнопки Да/Разрешить/Создать правило и им подобных. Хотя чаще всего это не работает, т.к вышли уже новые версии антивирусов (классы и заголовки поменялись) + на нормальных АВ-комплексах есть защита от внешнего управления сервисом.



    Троянизация приложений хакером.
    Методов троянизации чужих приложений, путем внедрения в них своего кода существует достаточно много. Что бы иметь хотя бы поверхностное представление об этих способах, путях их реализации и методике их создания, необходимо понимать принципы их работы. Для этого сделаем их условную классификацию и рассмотрим по отдельности методики их работы (что-то рассмотрим более подробно для примера).
    Классифицируем по способу введения кода в приложение-жертву:
    1). Заражение PE-файла - как видно из названия тут работает принцип файлового вируса. Т.е заражение файла без потери его функционала и работоспособности. В данном случае под заражением файла я имею в виду заражение файла другим файлом, причем сам вирус может быть универсальным (умеет заражать практически любые исполняемые файлы) или узконаправленным (заражает только один определенный файл или определенную группу файлов). О файловых вирусах можно найти очень много материала, поэтому более останавливаться на этом способе мы не будем.
    2). Троянизация файла "руками" - хакер имеет непосредственный доступ к файлу и затроянивает его, используя отладчики/дизассемблеры/другие_инструменты. Важно учитывать, что при этом способе прямой доступ хакера к ПК с заражаемым приложением не является необходимым условием троянизации файла: достаточно знать какие приложения используются на ПК (можно просто заслать трояна, который заменит приложение-жертву на затрояненное).
    Рассмотрим "троянизацию руками" более подробно, для этого проведем условную классификацию этого способа инфицирования:

    2.1). Заражение путем создания новой секции.
    Создание новой секции, выправка всей структуры файла написание кода, перехват и возвращение управления - все это и даже больше необходимо для успешного выполнения подобной троянизации, как видно, работа это кропотливая и выполнять ее нужно аккуратно, обложившись утилитами типа PETools и другими.

    2.2). Троянизация путем внедрения своего кода в неиспользуемую область или модификация уже существующего.
    Этот способ будет наиболее интересен для чуть более пристального рассмотрения, и на нем сразу можно показать несколько направлений идеи троянизации файла. Рассмотрим троянизацию обыкновенного hello_world'a:
    PHP код:
    .const
    szTitle db 'OK'0
    szText db 
    'Hello, world!'0
    szDllName db 
    'user32.dll'0
    szMessageBox db 
    'MessageBoxA'0
    .data?
    fMessageBoxA  FARPROC ?
    .
    code
    start
    :
    invoke LoadLibraryAaddr szDllName   
    invoke GetModuleHandle
    addr szDllName
    invoke GetProcAddress
    eaxaddr szMessageBox
    mov fMessageBoxA
    eax
    push 0
    push offset szTitle
    push offset szText
    push 0
    call 
    [fMessageBoxA]
    ret
    end start 
    Нечто подобное с некоторыми отличиями (например, без динамической загрузки библиотеки user32) можно встретить на каждом шагу.
    Скомпилировав это приложение, получим примерно слудующее:



    На рисунке прекрасно изображен наш код. На мой взгляд, читать такое еще удобнее, чем читать исходник - все по цветам, с дужками... загляденье, в общем. Так вот, к этому загляденью мы попробуем добавить функцию логирования в файл каких-то данных, например (т.к мы не оперируем какими-то динамичными данными) будет сохранять в файл заголовок.
    Итак, что мы имеем? Имеем kernel32.dll - для записи в файл нам ее вполне хватит. Теперь мы стоим перед выбором как внедрять свой код: вариант с непосредственной записью прямо в середину отпадает - кода и так кот наплакал, а тут еще и мы со своей записью в файл пристали. Поэтому код придется вынести куда-то "влево", а в тело программы вставить прыжок (JMP) на наш код, а в нашем коде возвращение (также JMP) на следующую инструкцию в оригинальном коде. Идем далее: какой-то оригинальный код придется затереть, но т.к мы его затираем, то необходимо будет его восстановить в завершение нашего кода и при этом сохранить регистры - программа же должна дальше как-то работать.
    В общем, эта идея ясна, но мы сделаем для демонстрации другой идеи иначе: укоротим оригинальный код и в освободившееся место вставим наш JMP (прыжок на наш код).
    Мы видим следующую последовательность действий в программе:
    LoadLibraryA -> GetModuleHandleA -> GetProcAddress
    Первая функция загружает user32, вторая получает ее хэндл, а третья уже адрес MessageBoxA. Но можно обойтись и без второй функции, т.к LoadLibraryA итак возвращает хэндл загружаемой библиотеки - поэтому все, что связано с GetModuleHandleA можно смело отправить к праотцам, но при этом не забыть про то, что необходимо как-то передать функции GetProcAddress хэндл загруженной библиотеки. Что бы об этом не задумываться (о том где сохранять хэндл, как потом не забыть его вернуть и т.д) мы сместим немного код и сделаем вот так:



    Этим кодом мы убиваем сразу двух зайцев: не запутываем сами себя в передаче хэндла и помещаем адрес MessageBoxA в стэк - он там будет храниться и после выполнения нашего кода (мы же будем изменять eax) мы просто достанем значение из стэка.
    Теперь можно смело проматывать окно отладчика вниз, находить пустое место, выбирать адрес и прыгать на него. Не буду вас утомлять ненужными описаниями того, как мы друг за другом помещали в стэк аргументы CreateFileA, затем вызывали WriteFile и потом закрывали хэндл - это ясно и без объяснений, поэтому просто приведу скриншот того, что получилось в итоге (для большей наглядности я проставил много NOP-ов и кое-где написал комментарии):



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

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

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

    2.3). Модификация файла с целью загрузки им "левой" DLL:
    Библиотека, естественно, не экспортирует для файла никаких функций, по которым бы он к ней обращался и просил что-то сделать (еще бы - ведь он с ней не знаком). Библиотека начинает действовать при загрузке (DLL_PROCESS_ATTACH) или завершении работы приложения (DLL_PROCESS_DETACH) хотя первое встречается по понятным причинам намного чаще. Модифицировать для этого файл можно несколькими способами, но на этом мы останавливаться не будем (эта тема для огромной статьи, а вкратце можно выделить несколько направлений: перенос таблицы импорта в другое место и ее последующая свободная модификация, модификация какого-то ненужного кода на LoadLibraryA, замена в IAT имени чужой библиотеки на свою с последующим подгрузкой нужной).


    Эпилог.
    Вместо грустных (и уже набивших оскомину) слов о том, что нужно обновлять антивирус, не ходить по левым ссылкам, не искать "клубничку" и т.д...полезнее будет прочитать о том, как самостоятельно обнаруживать подобные происки хакеров, как с ними бороться и что еще нужно знать:
    * Борьба с фейками заключается в скачивании программ только с официального сайта, в обращении внимания на алерты антивируса вроде "Исполняемый файл изменился" и в обращении внимания на изменение внешнего вида и реакции на действия пользователя программы.
    * С вкладками от разработчиков можно бороться чтением того, что пишется при инсталляции, настройкой приложения, участием в обсуждениях ПО на форумах, использованием достаточно известного ПО, а не мелких поделок, скачанных с сайтов типа *.narod.ru
    * Против джойнеров бороться можно VMware-й, хорошим антивирусом и скачиванием программ только с официальных сайтов, причем свою оборону в борьбе с джойнерами нужно строить, начиная с последнего пункта и заканчивая первым.
    * Программы, открывающие бреши в безопасности ПК лучше вообще не использовать или грамотно их настраивать и контролировать их деятельность.
    * Против ручной троянизации приложений помогает тот же самый "Контроль целостности" в АВ-комплексе и соблюдение простой техники безопасности при использовании ПК (ведь троянизированное приложение должно как-то попасть на Ваш компьютер) - об этом как раз и рассказывают другие статьи и многие сообщения на форумах по ИБ (не ходить по левым ссылкам, не сидеть под админом, использовать антивирус, настраивать систему).

    PS: Во вложении эта же статья, но в PDF формате.
    PS2: Статью писал почти весь сегодняшний день - накатило вдохновенье, которое совпало с отключением интернета по тех.причинам - сидел перед монитором в гордом одиночестве и стучал пальцами по клавиатуре...
    Вложения Вложения
    Последний раз редактировалось priv8v; 18.06.2009 в 22:48.
    // ...

  2. Будь в курсе!
    Реклама на VirusInfo

    Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:

    Anti-Malware Telegram
     

  3. #2
    VIP Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    07.07.2005
    Адрес
    Moscow region
    Сообщений
    30,462
    Вес репутации
    2522
    СПС сказал, читать буду завтра.
    Павел
    AVZ HijackThis помощь с 10-00 до 18-00МСК

    Windows7, SEP(work)
    WindowsXP KIS(home)

    На up не реагирую

  4. #3
    Expert Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    03.03.2008
    Сообщений
    14,832
    Вес репутации
    1808
    Молодец, пожелание: в некоторых местах заменяй слово хакер на вирусописатель, лично для меня это разные люди

  5. #4
    External Specialist Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для priv8v
    Регистрация
    26.06.2008
    Сообщений
    1,373
    Вес репутации
    1263
    Спасибо, учту на будущее - слово "хакер" постараюсь использовать меньше, в виду того, что у него в самом деле на сегодняшний день мутное лексическое значение
    // ...

  6. #5
    Visiting Helper Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    11.12.2006
    Сообщений
    3,698
    Вес репутации
    1837
    Ну по сову "хакер" http://ru.wikipedia.org/wiki/%D0%A5%...BE.D0.B2.D0.B0

    (хоть и не является истиной в последней инстанции..)

    Цитата Сообщение от priv8v Посмотреть сообщение
    [B][CENTER][SIZE="4"]
    Троянские закладки в чистом виде - подарок от разработчиков.

    Потенциальная опасность
    IRC-клиенты, удаленное администрирование и прочее.
    ...
    Также некоторые приложения для своей работы запускают потенциально опасные службы (сервер, планировщик заданий и т.д).

    Использование легитимных программ
    Троянизация приложений хакером.
    По поводу "Троянские закладки в чистом виде - подарок от разработчиков." так и хочется вспомнить червь Морриса. Одним из методов распространения была закладка от разработчика - отладочный интерфейс в sendmail, и лишь потому, что разработчик не имел достаточно времени/возможности работать непосредственно со своим детищем и встроил это для удаленной отладки.
    Но в последствии не закрыл..

    К чему это привело - расскажут поисковики)))

    А вот "Потенциальная опасность" тем и отличается, что зная для чего и как применить эту программу, Вы можете упростить свою работу.
    Но если она непонятно как появилась, лучше перестраховаться

    Использование легитимных программ - да, это опасно, т.к. защитный софт чаще всего им доверяет.
    Но и просто так их не получится использовать..
    Для этого сначала надо как-то получить возможность исправить конфиг/передать параметры в коммандную строку и т.д.

    Все оставшееся отсекается "набившим оскомину" замечанием из эпилога, дескать <мойте руки перед едой> *зачеркнуто* обновляйтесь, не тыкайте без прочтения и т.д.
    The worst foe lies within the self...

  7. #6
    External Specialist Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для priv8v
    Регистрация
    26.06.2008
    Сообщений
    1,373
    Вес репутации
    1263
    Для этого сначала надо как-то получить возможность исправить конфиг/передать параметры в коммандную строку и т.д.
    Это предложение я не уверен, что понял правильно, поэтому пишу наугад:

    Если про "возможность", то подразумевается, что хакер или имеет "ручной" доступ к ПК, или удаленный (хотя если есть удаленный, то зачем вообще заниматься запуском чего-то с параметрами), или уже имеющийся на компе зловред, который в троянизирует приложения/эксплуатирует потенциально опасные вкладки программ в своих целях (в целях скрытия своего присутствия, в целях скрытой укоренения в системе, в целях скрытой отправки данных).

    Т.е если нечто изнутри инфицирует или действует другими методами, описанными в статье, то такие действия практически не вызывают подозрений у антивирусов и для пользователя они не заметны.
    "Реставрация" конфига - просто открытие файла через CreateFileA.
    А скрытый запуск с параметрами через
    Код:
     ShellExecute(
     NULL, 
     NULL, 
     szFile, // путь до файла 
     szParameters, // параметры
     NULL, 
     SW_HIDE // окно скрыто
    );
    (CreateProcess - слишком палевный вообще метод запуска)
    // ...

  8. #7
    Visiting Helper Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация
    Регистрация
    11.12.2006
    Сообщений
    3,698
    Вес репутации
    1837
    Цитата Сообщение от priv8v Посмотреть сообщение
    Если про "возможность", то подразумевается, что хакер или имеет "ручной" доступ к ПК, или удаленный
    Я о том, что пока имеем лишь сервер с "вредной ссылкой" и пытаемся затащить свое поделие жертве на машину.

    Если есть физ. доступ, то "кто машину загружает - тот и root"

    Если стоит бекдур - он и сам все что надо сделает.. Зачем что-то постороннее привлекать.
    The worst foe lies within the self...

  9. #8
    External Specialist Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Репутация Аватар для priv8v
    Регистрация
    26.06.2008
    Сообщений
    1,373
    Вес репутации
    1263
    Ну да...
    Но эта тема для других статей, в этой я лишь говорил о троянизации и методах смежных ей
    // ...

Похожие темы

  1. трояны!!!! руткиты!!!! троянские dll
    От Dron23 в разделе Помогите!
    Ответов: 12
    Последнее сообщение: 06.09.2011, 09:37
  2. Dr.Web обнаружил троянские программы
    От vd7 в разделе Помогите!
    Ответов: 3
    Последнее сообщение: 18.02.2011, 22:29
  3. Выскакивают постоянно троянские программы
    От СергейТамбов в разделе Помогите!
    Ответов: 25
    Последнее сообщение: 22.09.2010, 16:23
  4. Замучали троянские программы
    От Юфик в разделе Помогите!
    Ответов: 15
    Последнее сообщение: 22.02.2009, 03:17
  5. Keylogger-ы и троянские DLL задолбали!
    От Combat в разделе Помогите!
    Ответов: 1
    Последнее сообщение: 12.11.2008, 12:37

Свернуть/Развернуть Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Page generated in 0.01509 seconds with 20 queries