В этом руководстве мы покажем вам, как создать файловую систему-приманку на Linux с помощью FUSE шаг за шагом.
Представьте, что вы запускаете облачный сервер для своего стартапа.
Однажды вы помещаете поддельный файл под названием client_credentials.txt в общую папку.
Внутри него вы помещаете что-то вроде этого:
AWS_KEY=FAKE123 SECRET_KEY=GOTCHA456
Теперь, если кто-то попытается им воспользоваться, вы сразу же получите уведомление.
Это говорит о том, что кто—то копается в ваших вещах, и теперь вы можете провести расследование или закрыть доступ.
Это именно то, что делает файл–приманка или хани пот.
🍯Что такое Honeypot на примере Kfsensor
Что такое файловая система-приманка?
Файловая система-приманка – это виртуальная система, маскирующаяся под реальную файловую систему, которая выглядит как настоящая, но на самом деле является поддельной.
Ее цель – обмануть злоумышленников, наблюдать за поведением атакующих или побудить злоумышленников раскрыть свою личность.
Вы можете рассматривать это как “цифровую ловушку”.
Это может побудить злоумышленников открыть ее.
Предпосылки
- Сервер Ubuntu: В этом руководстве используется серверная версия Ubuntu 24.04 LTS. Напоминаю, что набор предустановленных пакетов Ubuntu Server отличается от набора предустановленных пакетов для обычного рабочего стола Ubuntu. Вы можете использовать Vagrant для быстрой настройки сервера Ubuntu.
- Установите Fuse
- Настройка среды Python
Создайте файловую систему-приманку на Linux с помощью FUSE
Технически, файловая система такого типа обычно создается с помощью:
- FUSE (Файловая система в пользовательском пространстве) для создания “реальной” файловой системы
- Python для написания логики поведения файлов
- Система ведения журнала для регистрации обращений. В этом руководстве мы будем использовать уведомления Slack, чтобы уведомлять нашу команду о любых подозрительных попытках.
Создайте файл на Python
Создайте файл decoy_fs.py с содержимым:
from fuse import FUSE, Operations
import time, os
class DecoyFS(Operations):
def __init__(self):
now = time.time()
self.files = {
'/salary_report_2024.xlsx': self._make_file(b'Fake salary data inside\n', now),
'/admin_passwords.txt': self._make_file(b'admin: admin123\n', now),
'/project/secret_notes.txt': self._make_file(b'Confidential: Do not distribute\n', now)
}
def _make_file(self, content, timestamp):
return {
'content': content,
'st_mode': 0o100644,
'st_nlink': 1,
'st_size': len(content),
'st_ctime': timestamp,
'st_mtime': timestamp,
'st_atime': timestamp
}
def getattr(self, path, fh=None):
if path == '/':
return dict(st_mode=(0o40555), st_nlink=2)
elif path in self.files:
return self.files[path]
elif path == '/project':
return dict(st_mode=(0o40555), st_nlink=2)
else:
raise FileNotFoundError
def readdir(self, path, fh):
if path == '/':
return ['.', '..', 'salary_report_2024.xlsx', 'admin_passwords.txt', 'project']
elif path == '/project':
return ['.', '..', 'secret_notes.txt']
else:
raise FileNotFoundError
def open(self, path, flags):
if path in self.files:
msg = f" *Decoy file accessed:* `{path}` at {time.ctime()}"
print(msg)
return 0
else:
raise FileNotFoundError
def read(self, path, size, offset, fh):
return self.files[path]['content'][offset:offset + size]
if __name__ == '__main__':
import sys
if len(sys.argv) != 2:
print("Usage: python3 decoy_fs.py /mount/point")
exit(1)
mountpoint = sys.argv[1]
FUSE(DecoyFS(), mountpoint, nothreads=True, foreground=True)
Этот код имитирует каталог с поддельными конфиденциальными файлами и регистрирует, когда кто-то пытается получить к ним доступ.
В реальном сценарии мы можем настроить оповещения с помощью Slack или отправлять уведомления по электронной почте члену команды.
Мы создали три поддельных файла: salary_report_2024.xlsx, admin_passwords.txt и secret_notes.txt.
Запустите скрипт на Python
Создайте точку монтирования и запустите созданный выше скрипт на python для создания файловой системы–приманки
Попробуйте прочитать файл
Теперь зайдите в эту папку и попробуйте прочитать файл:
Зачем использовать файловую систему-приманку?
Вы можете спросить, почему бы не использовать настоящую файловую систему с поддельными данными для привлечения злоумышленников?
Хотя это может показаться хорошей идеей, есть несколько проблем, которые делают ее менее эффективной для использования в файловой системе-приманке.
Реальные файлы являются частью реальной файловой системы.
Таким образом, они видны обычным пользователям, приложениям или даже автоматическим скриптам, которые могут сканировать файлы или выводить их список (например, с помощью ls, find или других системных инструментов).
С помощью FUSE вы можете перехватывать и контролировать каждое взаимодействие с файлами.
Например, когда пользователь пытается прочитать файл, вы можете решить, разрешать ли это, запускать оповещения или регистрировать доступ.
Вы даже можете возвращать различные данные в зависимости от определенных условий или временных меток.
Файловая система-приманка обладает следующими свойствами:
- Она более активна, чем антивирус: это не просто защита, это “приманка”
- Обнаруживает внутренние угрозы: например, когда сотрудники манипулируют данными компании
- Обнаруживает проблемы на ранней стадии атаки
- Не содержит реальных данных, риск очень низкий
Заключение
Файловая система-приманка – это метод обмана в сетевой безопасности.
Она заманивает злоумышленников, создавая поддельные файлы и папки.
Это все равно, что оставить светящийся красным портфель посреди комнаты, полной камер, — только виновный сможет его открыть.
см. также:
- 🧶 h0neytr4p: настройка Honeypot для Blue team
- 🍯 Как быстро развернуть honeypot с помощью Kali Linux
- Настройка honeypot в Kali Linux | Pentbox
- 🔅 Parsero – проверка на наличие уязвимостей




