Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Ваш интернет-бизнес" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Декабрь 2005 → | ||||||
2
|
4
|
|||||
---|---|---|---|---|---|---|
5
|
6
|
7
|
8
|
9
|
10
|
|
12
|
13
|
14
|
15
|
16
|
18
|
|
19
|
20
|
21
|
22
|
23
|
25
|
|
26
|
27
|
28
|
29
|
30
|
31
|
Автор
Статистика
1.422 подписчиков
-1 за неделю
-1 за неделю
ExCode.ru - программирование на высоком уровне - выпуск 21
ExCode.ru - программирование на высоком уровне | ||||||||||||||||||||||||||||||||
Выпуск №21 ( 2005.12.17 )
|
||||||||||||||||||||||||||||||||
Здравствуйте, уважаемые подписчики!На сайте по-прежнему продолжается конкурс. У нас появилось 3 явных фафорита: Ramzes, jackbit и romodos. Но у вас еще достаточно времени, чтобы догнать их и даже обогнать. Хотя делать это и не обязательно. Победить может любой. Главный приз - 2 DVD.
E-book - библиотека программиста На диске содержится более 150 электронных учебников, самоучителей и справочников по программированию, которые разбиты на 7 разделов: .NET, C/C++/C#, Delphi, PHP, Hacking, UNIX, и "другие". Также на диске имеются утилиты, необходимые для комфортного чтения книг. SDK, DDK и инсталяторы На диске вы найдете большое количество разнообразных Software Development Kit и Driver Development Kit, для различных целей, в том числе и последнюю версию DirectX SDK, кроме этого на диске собрана большая коллекция инсталяторов, программ для отладки и сервисов для управления крупными проектами. Цена одного DVD диска: 300 руб. (за доставку платить не надо) |
||||||||||||||||||||||||||||||||
Новости копьютерного мира:
|
||||||||||||||||||||||||||||||||
Статья номера:
Живучий троянИсточник: DANIL's page
Для программ, называемыми некоторыми функционерами от софта, BackDoor-ами и Trojan-ами необходима интеграция в систему т.е. систему надо "заразить" программой или программа должна намертво в эту систему вцепиться. Сразу можно выделить основные функции, необходимые таким программам: a) автозагрузка невидимая пользователю; b) перезапуск при прерывании; c) запрет на прерывание; d) восстановление при удалении; e) невидимость для различных просмотрщиков процессов В статье я буду последовательно рассматривать каждый пункт. Я не буду рассказывать обо всех известных способах, но (на мой взгляд) предоставленная информация является лучшим решением для интеграции в MS Windows. Итак, по порядку: A. Автозагрузка. Есть несколько основных направлений реализации автозагрузки (рассматривается только запуск программ для MS Windows - autoexec.bat[nt] и подобные запускает только DOS-приложения): 1.1. Папка автозагрузки в меню Start. Без комментариев. 1.2. Запись параметра в HKLMSoftwareMicrosoftWindowsCurrentVersionRun. Есть несколько модификаций. Недостатки: даже самый тупой пользователь просматривает этот параметр и на платформе MS Win-NT (NT,2000,XP), если пользователь не принадлежит к группе администраторов, то параметр записан не будет - система не даст записать в HKLM системного реестра. 1.3. Запись автостарта в win.ini, system.ini. Недостатки: все программы слежения за автозапуском в системе эти ключи знают. 1.4. Изменение уже запускаемого при старте системы файла так, чтоб он запускал необходимую программу. Недостатки: можно запросто уронить систему и существует очень много программ, считающих контрольную сумму системных файлов (особенно автозагружаемых). 1.5. Подключение сервиса или драйвера в систему на платформе WinNT. Мало кто помнит все сервисы системы и обратит внимание на еще один. Недостатки: сервис не будет работать в Win-9x/ME. 1.6. Прописывание как ScreenSaver. Программа запускается при простое компьютера несколько минут. Потом она должна запустить тот scr, что был до этого. Недостатки: ScreenSaver может быть не установлен и обнаружение там какой-то записи не желательно. 1.7. Связь какого-то расширения файлов с программой. Например, открытие файлов с расширением *.doc не MS Word, а своей программой (HKEY_CLASSES_ROOT.doc). При запуске Word-овского документа, программа запускается и получает параметр-имя файла. Теперь программа должна запустить MS Word, передав ему этот параметр. Очень хороший способ. Сложен в реализации, но оно того стоит. Недостатки: в системе могут переставить MS Word или поставить другую программу, связанную с этим типом файлов. Наша программа перестанет запускаться. 1.8. Создание "системной" dll, подгружаемой при старте системы. Такая библиотека "прикрепляется" к explorer-у и ее нельзя удалить при загруженном рабочем столе. В MS Windows есть много лазеек, о которых публично не говорят и программы слежения за автозагрузкой таких способов просто не знают или думают, что так ничего запустить нельзя. Нахождение такого способа - просто клад для создателя подобных прорамм. О нем обычно особо не распространяются, но в этой статье будет приведен пример такой автозагрузки. Недостатки: для инициализации "системной" dll необходимо изменять реестр в ветви HKLM (см. 1.2). B. Перезапуск при прерывании. Самый простой способ - воспользоваться дополнительной dll и функцией SetWindowsHookEx. Эта функция устанавливает различные системные hook-и, вызывая обработчик из дополнительной dll. Если вызвать эту функцию в программе как SetWindowsHookEx(WH_CALLWNDPROC, addr func, addr dll, 0) и при выгрузке дополнительной dll с функцией обработки запускать программу, то произойдет следующее: дополнительная dll "прицепится" ко всем запущенным окнам и при прерывании программы дополнительная dll будет выгружаться и заново запускать нашу программу. Реализация данного способа будет чуть ниже. Подробную информацию об установке hook-ов можно взять в интернете или на моей странице www.danil.com.ua в статьях по клавиатурному шпиону. C. Запрет на прерывание. В системе Win-9x/ME программу необходимо скрыть по "Alt"+"Ctrl"+"Del", а в системах на платформе WinNT можно сделать запрет на прерывание процесса в TaskManager-е. Выглядит это так (корректно работает на всех системах): "zapret.dpr" (Delphi32):
"zapret.asm" (MASM32):
D. Восстановление при удалении. В случае удаления нашей программы, восстанавливать ее должна еще одна программа или дополнительная dll. Наиболее простой путь - воспользоваться пунктом 1.8 автозагрузки. Запускать нашу программу будет дополнительная dll, а значит она же может ее и восстанавливать. Программа при своем первом запуске создает дополнительную библиотеку (исходники будут ниже) и какой-то файл, содержащий саму себя, но зашифрованный xor (чтоб потом этот файл не нашли по совпадению с программой). Прописывает автозагрузку. При загрузке системы, инициализируется дополнительная dll. Она проверяет наличие файла и, в случае его отсутствия, восстанавливает его из xor-енного файла данных. Потом его запускает. E. Невидимость для различных просмотрщиков процессов. Эта функция реализуется по принципу системы перехвата функций WinAPI. Очень хорошая статья по этой теме есть на www.wasm.ru. Также данную информацию можно прочитать в книге Jeffrey Richter "Programming Applications for Microsoft Windows". Поэтому подробно на подмене функций я останавливаться не буду. Скажу только, что эта технология очень хорошо подходит для различных Trojan-ов: подменить ведь можно и функцию send. Большинство паролей передается в открытом виде и подменив функцию send и произведя мониторинг всех передаваемых строк, начинающихся с PASS и т.д., нет необходимости "выдирать" пароли на почту из аутглюка или на ftp из ftp-client-а. Тем более, что неизвестно какая почтовая программа у пользователя стоит, а по этой технологии это не существенно. Также можно подменить функцию connect, recv и т.д. Кодинг. Итак, рассмотрим каркас программы, включающей пункты a, b, c, d. Для автозагрузки будет использован способ из пункта 1.8. Вся эта система будет состоять из непосредственно программы (exe-файл) и 2 дополнительных библиотек. Первая нужна для автостарта и восстановления при удалении; вторая - обработка hook-а для перезапуска при прерывании и подмена функций WinAPI. Объеденить их в одну нельзя - будет глючить при выключении компьютера. Рассмотрим сначала библиотеку для перезапуска при прерывании программы. "dll1.dpr" (Delphi) :
Перед компиляцией необходимо создать файл dll1.def с ткекстом: LIBRARY dll1 EXPORTS AutoProc и откомпилировать: masm32inml /c /coff dll1.asm masm32inLink /SUBSYSTEM:WINDOWS /DLL /DEF:dll1.def dll1.obj Код подмены функций NtQuerySystemInformation, Process32First, Process32Next, EnumWindows, EnumThreadWindows, EnumChildWindows и т.п. приводить не буду. Теперь необходимо рассмотреть библиотеку для автозапуска и восстановления exe-файла. Автозапуск будет осуществляться так: 1) Необходимо в системном реестре в ключе HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionShellServiceObjectDelayLoad создать строковой параметр. Этот параметр с произвольным названием должен содержать CLSID. Для формирования этого значения необходимо воспользоваться функцией CoCreateGuid для создания GUID. Потом функцией StringFromCLSID привести полученное значение к нормальному виду. У нас должно получиться что-то вроде "{E6FB5E20-DE35-11CF-9C87-00AA005127ED}". 2) В ключе реестра HKEY_CLASSES_ROOTCLSID необходимо создать подключ с именем полученного ранее CLSID. В созданном ключе необходимо создать подключ InProcServer32. В ключе HKEY_CLASSES_ROOTCLSID{MyCLSID}InProcServer32 необходимо записать в параметре по умолчанию (Default) путь и имя файла dll (например: C:WINNTSYSTEM32dll2.dll). При старте системы записанная dll будет инициализированна и "прикреплена" к explorer. Теперь пока загружен рабочий стол ее удалить нельзя. Если в обработчике инициализации этой библиотеки прописать восстановление exe-файла из xor-енного файла данных и его запуск, а в обработчике выгрузки - прописывание автостарта, то такую программу можно будет удалить только не загружаясь в систему или точно зная алгоритм работы. Новые статьи на сайте ExCode.ru:
|
||||||||||||||||||||||||||||||||
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.excode Архив рассылки |
Отписаться
Вспомнить пароль |
В избранное | ||