Книги: "Создание сайтов" - "Доменные войны". Защита информации: техническое описание TLS, тестовый сервер TLS 1.3. Ресурсы: LaTeX
Длина вирусов
Между прочим, ещё каких-то лет 16-17 назад, компьютерные вирусы, распространявшиеся в среде ОС MS-DOS на IBM PC-совместимых персональных компьютерах, имели размеры программного кода около сотни байтов. Очень не много, если учесть, что такой вирус должен был суметь получить управление при запуске заражённого файла, установиться в память “резидентом” (то есть, остаться там после завершения программы-носителя) и перехватить хотя бы парочку системных функций – что необходимо для эффективного заражения других файлов. Понятно, конечно, что суперкороткие вирусы и тогда были лишь исключением – типичный размер измерялся несколькими сотнями байтов и килобайтами.
Сейчас подобные короткие вирусы, – в гражданских системах, по крайней мере, – можно ожидать разве что для мобильных телефонов. Впрочем, это тоже важный сектор “развития рынка”.
Адрес записки: https://dxdt.ru/2009/01/05/1962/
Похожие записки:
- Системы счисления и системное администрирование
- Модули DH в приложении Telegram и исходный код
- Детектирование текстов, сгенерированных ИИ
- Ретроспектива заметок: август 2007 года
- Дорисовывание Луны смартфонами Samsung
- Форматы ключей
- DNS как транспорт для сигналов и данных
- "Смайлики" в старых книгах, XVII век
- Шумерские цифры и хитрости Unicode
- Падение тел в физике Аристотеля
- Техническое: certbot, проскользнувший мимо веб-сервера
Комментарии читателей блога: 17
1. 5th January 2009, 21:54 // Читатель player1 написал:
Фактор заметности.
В современном компьтере памяти столько и скорость подключения к нтеренету такая, что много больший размер неощутим. Вирусы просто незачем делать такими компактными.
PS: помню, во времена MS-DOS, вирусы использовали пустые места в блоках памяти, чтобы общий размер зараженного файла вовсе не изменялся. То есть размер вируса влиял только на оперативную память.
Которой, как раз, было совсем немного, и часто не хватало. Борьба иногда шла за каждый килобайт – поиски небольшого драйвера мыши, разные режимы загрузки для определенных программ…
2. 5th January 2009, 21:57 // Читатель Name написал:
Очень не много, если учесть, что такой вирус должен был суметь получить управление при запуске заражённого файла, установиться в память ?резидентом? (то есть, остаться там после завершения программы-носителя) и перехватить хотя бы парочку системных функций – что необходимо для эффективного заражения других файлов.
——
1) получить управление при запуске – комманда jmp – байт этак 5.
2) установиться в память ?резидентом? – вызов одной функции DOS, еще байт 5 наверное.
3) перехватить хотя бы парочку системных функций – еще байт 10.
Можно пример реально распространеного вируса в 100 байт длиной?
Современные вирусы управляются через инет, отслылают е-мэйлы и еще много чего умеют, на что 100 байт никак не хватит.
3. 5th January 2009, 23:29 // Александр Венедюхин ответил:
Ага, только Вы тут упускаете из виду, что речь о вирусе, а не о прикладной программе. Поэтому задача получения управления состоит из двух частей: нужно ещё уметь так подготовить файл-носитель при заражении, чтобы и управление получить, и заражённую программу потом не испортить. А так да, верно, jmp, только два байта.
Да, очень смешно, для ценителей юмор. Для эффективного вируса под DOS – не годится такой способ, там нужно было самостоятельно память занимать. Почитайте описание DOSа.
Только ещё нужно их обрабатывать.
Я так понимаю, что по Вашим оценкам 100 байтов – много? Получается – типа 20 достаточно?
Вам ровно сто байтов? Ну можно: https://www.symantec.com/en/uk/security_response/writeup.jsp?docid=2003-121315-3157-99&tabid=1
Ага, получение и отработка команд из внешней сети – это, конечно, архисложно, требует тысяч операций, известное дело.
4. 6th January 2009, 00:17 // Читатель kid написал:
Пол года назад мимо меня пролетал DVD-диск, забитый под завязку вирусами. Это были именно самостоятельные деструктивные программы, а не куски кода, внедряемые в другую программу.
Дак вот, самый маленький из них был порядка нескольких байт (bat-файл, рекурсивно удаляющий файлы), а самый большой – порядка 6 мегабайт (судя по всему написан на visual-basic :) ). Могу разыскать и выложить, если кому-то интересно.
5. 6th January 2009, 03:30 // Читатель Name написал:
“подготовить файл-носитель”, “ещё нужно их обрабатывать”
вот, уже более технический разговор, а то перехватить, установиться в память “резидентом”…
—–
Для эффективного вируса под DOS – не годится такой способ, там нужно было самостоятельно память занимать. Почитайте описание DOSа.
—–
Да ладно, писал я резиденты. Одна команда доса завершает программу, не удаляя ее из памяти. Terminate and Stay Resident называется. Хотя может и забыл чего, там вроде в качестве параметра надо было указать сколько памяти оставить не освобождая.
6. 6th January 2009, 10:06 // Читатель Nikopol написал:
> Одна команда доса завершает программу, не удаляя ее из памяти.
Это всё равно, что взять в руки плакат “Я – вирус. Убейте меня !”
:)
7. 6th January 2009, 10:55 // Читатель Basil написал:
>Да ладно, писал я резиденты.
Видимо, только простейшие. А если попытаться добавить перенос в другую область памяти, попытки спрятать блок памяти от mi, освобождение PSP (хотя в случае вируса вроде не нужно), то сложность резко возрастает.
8. 6th January 2009, 10:55 // Александр Венедюхин ответил:
Наверное, лучше не выкладывать такие наборы всё ж.
9. 6th January 2009, 10:59 // Александр Венедюхин ответил:
Один вызов, совершенно верно. Вот только при этом программа-носитель завершится не заработав, и, как верно заметил Nikopol, вызовет подозрения (мягко говоря). Потом, порча заражённых программ – это совсем уж плохой тон, если можно так выразиться.
10. 6th January 2009, 14:30 // Читатель yparah написал:
Современные средства защиты Виндовс и стандартные программы защиты (антивирусы, файрволы и прочие) недопустят выполнения таких простых сценариев рамером до сотни байт – все слишком просто и очевидно, указывает на попытку получить доступ над системой. Поэтому идут на ухищрения, маскируют под системные процессы, не забывайте о полиморфности – такие вещи никак не укладываются в 100 байт. Но в наше время даже 100 килобайт – уже не критичный размер, при современных скоростях передачи данных.
Вирусы для ДОСа – это интересно, но это уже прошлое, которое никак не навредит современным ОС.
11. 6th January 2009, 15:37 // Читатель Vadim написал:
Комментарий получился столь велик, что пришлось его оформить отдельным постом:
http://vadim-proskurin.livejournal.com/321959.html
Краткое содержание: обращения к системным функциям Windows требуют от прикладной программы гораздо более объемного кода, чем обращения к системным функциям MS-DOS. Именно этим в первую очередь и объясняется такой большой размер Windows-вирусов.
12. 6th January 2009, 18:41 // Александр Венедюхин ответил:
Ага, интересно. Действительно я оговорился про два байта jmp. Два – только смещение + код.
13. 6th January 2009, 22:28 // Читатель Name написал:
6th January 2009, 10:55 // Читатель Basil написал:
>Да ладно, писал я резиденты.
Видимо, только простейшие.
—-
Ну вот пара примеров:
1) Два компа соединины шнурком через ком порт. Резидент получает коды клавиш с другого компа, где запущен мой клиент, и помещает их в буфер клавиатуры. Таким образом можно с одного компьютера управлять другим.
2) Несколько компов соединины шнурком через ком порт. Ком порт на каждом компе _один_. С сервера можно получать копию экрана любого из клиентов.
Вирусы я не писал. Вышеперечисленные примеры не задумывались для нанесения вреда. Второй применялся преподавателем информатики для мониторинга учеников.
На досуге посмотрю код вышеприведенного 100 байтного вируса, наверняка там все очень просто.
14. 7th January 2009, 02:12 // Читатель Name написал:
Поискал код baby.100, не нашел.
Продолжаю утверждать, что для регистрации “резидентом”, нужно выполнить одну функцию DOS. А перехват прерываний, перенос в другую область памяти, попытки спрятать блок памяти, нужны либо для того чтобы затруднить обнаружение, либо чтобы вирус выполнял некие функции _определенным_ образом и к регистрации резидента это отношения не имеет. Все эти дополнительные вещи можно сделать и другим образом, а вот TSR только функцией DOS, a если и можно без вызова этой самой функции, то будет наверняка длиннее.
15. 7th January 2009, 10:48 // Александр Венедюхин ответил:
Нет, не только. Можно было поправить структуры управления памятью и разместить код вне контроля DOS, без вызова её функций. Изучайте код. Примеры, пожалуйста, ищите самостоятельно – в Сети полно исходников и документации.
16. 8th January 2009, 08:20 // Читатель Name написал:
Конечно не только, например, можно тупо скопировать кусок тела этой самой функции. Но как я и говорил, “будет наверняка длиннее”, чем просто ее вызвать.
17. 8th January 2009, 19:47 // Читатель arcman написал:
Компактных вирусов больше нет потому что современная молодёжь обленилась и больше не применяет asm.
Да и вообще в отрасли теперь ценится простота в написании/поддержке кода.