Некоторые особенности в программировании троянских программ

При написании троянских программ любого типа необходимо учитывать некоторые общие принципы, общие для всех подобных программ. Конечно у Back Door есть свои нюансы, у Key Logger свои, но существуют некоторые общие черты, которые необходимо учитывать как при проектировании, так и при поиске троянских программ на компьютере.

Замечание: здесь рассматриваются лишь системы MS Windows.

Обеспечение самозапуска

Первый раз троян запускает сам пользователь, но было бы глупым считать, что он будет делать это каждый раз. Вот основные места в системе Windows, откуда система запускает программы при своем старте:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunservicesOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runservices
Плюс те же разделы для ключей HKEY_LOCAL_MACHINE и HKEY_USERS.
Плюс папки "Autorun" (общая и текущего пользователя) - ну это очень нагло, так как это место у всех на виду. Хотя, на крайний случай, когда происходит распаковка архива в эту директорию, с последующей "нормальной" инсталляцией( разумеется после повторного входа в систему/перезагрузки) этот способ становиться достаточно интересным.
Еще остаются архаичные win.ini и system.ini, но это уже для Win9x.

При этом имя файла желательно выбирать как можно правдоподобнее, не стоит привлекать внимание названием trojan.exe или vzlom.dll.

Еще одно замечание: если имя процесса: WinLogon.Exe, CSRSS.exe или другое "системное", то штатными средствами Windows (имеется в виду "Диспетчер задач") такой процесс завершить не удастся. А если эта программа будет достаточно часто проверять свое наличие в местах автозапуска и прописывать себя там( в случае отсутствия соответствующей записи), то для обычного пользователя будет достаточно трудно ее удалить(хотя "NT Process Viewer" без проблем остановит подобный процесс). Дело в том, что файл трояна, пока он запущен, не удалить. А автозапуск будет гарантирован регулярной проверкой ключей реестра. С точки зрения обычного пользователя - замкнутый круг...

Например раздел:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

содержит параметры:

internat.exe - строковый парметр, имеющий значение "internat.exe",
DiskProtect - строковый парметр, имеющий значение "rundll32.exe protect.dll,EntryPoint".

Первая строка - просто запуск, программы с названием "internet.exe"
Вторая строка - приведен пример автозапуска DLL-библиотеки, при помощи стандартного средства Windows - программы "rundll32". Указывается имя dll-библиотеки, и "точка входа" - процедура в тоянской библиотеке, имеющая синтаксис:
void CALLBACK EntryPoint(
HWND hwnd, // handle to owner window
HINSTANCE hinst, // instance handle for the DLL
LPTSTR lpCmdLine, // string the DLL will parse
int nCmdShow // show state
);
Этот способ может быть несколько предпочтительнее первого из-за его "загадочности" для обычного пользователя.

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

Раздел реестра
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

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

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

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

Последнее замечание в этом подразделе: необходимо проверять, чтобы не заражать уже зараженную машину. Так как это может привести к быстрому обнаружению трояна или вообще к неработоспособности системы/отдельных программ. Например, наличие в разделе реестра нескольких параметров с одинаковым значением не может не вызвать подозрения.

Обеспечение невидимости

Основным способом для обеспечения невидимости является использование так называемых "потоков". Дело в том, что все средства контроля, начиная от "Диспетчера задач" и кончая такими программами как "NT Process Viewer" или "TaskInfo2000" выводят лишь имена процессов, а потоки своих имен не имеют. Максимум, что могут сообщить такие программы - это количество потоков в отображаемых процессах. То есть все потоки в одном процессе в каком-то смысле одинаковы для внешних программ.

А как же создать свой поток в чужом процессе?

Получение, отправка данных

После своего проникновения на компьютер жертвы троянская программа должна уметь, отправлять и принимать данные. Для Back Door троянов нужно будет написать клиент (он будет установлен на компьютере злоумышленника) и сервер (он будет установлен на компьютере жертвы).
Примеры работы программы-клиента и программы-сервера по протоколам UDP и TCP можно найти например в книге Михаила Фленова "Программирование на C++ глазами хакера", http://www.vr-online.ru

Для E-mail троянов нужно будет просто уметь отправлять данные на e-mail злоумышленника. Для этого необходимы знание основных команд протокола SMTP и сформированная для отправки строка(пароли, IP адрес жертвы и т.д.). Пример отправки на E-mail можно найти: http://www.mailinfo.ru/story02/02/10/3305614

Маскировка трафика

Способ "встраивания" своего кода в виде потока в чужом процессе помогает и в задаче маскировки трафика под трафик чужой программы.
Действительно, редко кто ставит в настройках брэндмауэра запрет на трафик "Explorer" или "IE". Некоторые тоянские программы имеют в себе базу с названиями основных антитроянских программ, брэндмауэров и пытаются либо помешать их нормальной работе, либо внести себя в списки "разрешенных", "доверенных" программ.

Действия

Это уже определяется фантазией автора. Можно реализовать и удаленную консоль, и собирать пароли от e-mail, ICQ, IRC... пароли к играм, пароли для доступа в Internet, серийные номера от программ, и возможность проводить распределенные вычисления, и организовать DoS атаку.
В качестве примера можно привести набор действий трояна Phatbot:
Phatbot представляет собой троянскую программу, способную проникать на машины через дыры в Windows или "черные ходы", оставленные другими вирусами, в частности, MyDoom и Bagle. После проникновения на компьютер Phatbot выполняет несколько основных операций.
Во-первых:
Phatbot ищет в памяти запущенные антивирусные процессы и пытается их закрыть (всего ему известно порядка 600 таких процессов).
Во-вторых:
троян вносит изменения в системный реестр, обеспечивая, тем самым, свой автоматический запуск при каждом включении компьютера.
В-третьих:
программа пытается украсть персональную информацию - логины и пароли для доступа к системе мгновенного обмена сообщениями AOL, ключи к играм, регистрационные ключи Windows и пр.
Наконец:
Phatbot подключает инфицированную машину к особой Р2Р-сети. По словам экспертов, такая Р2Р-сеть может использоваться для организации DoS-атак или же для отправки миллионов рекламных сообщений без ведома владельцев компьютеров. Ситуация ухудшается еще и тем, что деактивировать вирус можно только лишь путем очистки всех до единого компьютеров, входящих в такую пиринговую сеть.

Главное - это не привлекать излишнего внимания вообще или до наступления решающего момента - например до начала атаки на сервер корпорации Microsoft или до уничтожения всех данных пользователя.

back next
Hosted by uCoz