
*nixシステム向けアーティファクト収集ツール
fennec は、Rust で記述されたアーティファクト収集ツールであり、*nix ベースのシステムにおけるインシデントレスポンスで使用するためのものです。fennec では、アーティファクトを収集する方法を記載した設定ファイルを記述できます。
| OS 詳細 | アーキテクチャ | 成功? | 詳細 |
|---|---|---|---|
| Ubuntu 20.04.3 LTS | x86_64 | ✅ | |
| Ubuntu 19.04 | x86_64 | ✅ | |
| Ubuntu 18.04.6 LTS | x86_64 | ✅ | |
| Ubuntu 17.04 | x86_64 | ✅ | |
| Ubuntu 16.04.7 LTS | x86_64 | ✅ | |
| Ubuntu 15.10 | x86_64 | ✅ | |
| Ubuntu 14.04.6 LTS | x86_64 | ✅ | |
| Ubuntu 13.04 | x86_64 | ✅ | |
| Ubuntu 12.04.5 LTS | x86_64 | ✅ | |
| CentOS 8.4.2105 | x86_64 | ✅ | |
| CentOS 7.9.2009 | x86_64 | ✅ | |
| CentOS 6.10 | x86_64 | ✅ | |
| CentOS 5.11 | x86_64 | ❌ | osquery には libc >= 2.12 が必要です |
| Ubuntu 20.04 | aarch64 | ✅ | |
| MacOS Monterey v12.0.1 | x86_64 | ✅ | 設定の調整が必要です。MacOS アーティファクトの経験があれば、ぜひコントリビュートしてください |
| Oracle Linux Server 7.9 | x86_64 | ✅ |
fennec 0.4.1 AbdulRhman Alfaifi [email protected] Aritfact collection tool for *nix systems
USAGE: fennec [OPTIONS]
OPTIONS: -c, --config Sets a custom config file (Embedded : true)
-o, --output <FILE>
Sets output file name [default: ABDULRHMAN-PC.zip]
-l, --log-level <LEVEL>
Sets the log level [default: info] [possible values: trace, debug, info, error]
-f, --log-file <FILE>
Sets the log file name [default: fennec.log]
-u, --upload-artifact <CONFIG>...
Upload configuration string. Supported Protocols:
* s3 : Upload artifact package to S3 bucket (ex. minio)
* Format :
s3://<ACCESS_KEY>:<SECRET_ACCESS_KEY>@(http|https)://<HOSTNAME>:<PORT>/<BUCKET_NAME>:<PATH>
* Example (minio): s3://minioadmin:minioadmin@http://192.168.100.190:9000/fennec:/
* aws3 : Upload artifact package to AWS S3 bucket
* Format : aws3://<ACCESS_KEY>:<SECRET_ACCESS_KEY>@<AWS_REGOIN>.<BUCKET_NAME>:<PATH>
* Example: aws3://AKIAXXX:[email protected]:/
* scp : Upload artifact package to a server using SCP protocol
* Format : scp://<USERNAME>:<PASSWORD>@<HOSTNAME>:<PORT>:<PATH>
* Example: scp://testusername:[email protected]:22:/dev/shm
-q, --quiet
Do not print logs to stdout
-t, --timeout <SEC>
Sets osquery queries timeout in seconds [default: 60]
-h, --help
Print help information
--non-root
Run Fennec with non root permisions. This isn't recommended, most artifacts require root
permissions
--osquery-path <PATH>
Sets osquery path, if osquery is embedded it will be writen to this path otherwise the
path will be used to spawn osquery instance (Embedded : true) [default: ./osqueryd]
--output-format <FORMAT>
Sets output format [default: jsonl] [possible values: jsonl, csv, kjson]
--show-config
Show the embedded configuration file
--show-embedded
Show the embedded files metadata
-V, --version
Print version information
* `-c`, `--config` : 指定された設定ファイルを埋め込みの設定の代わりに使用します
* `-f`, `--log-file` : ログファイルのデフォルト名を変更します(デフォルト: `fennec.log`)
* `-h`, `--help` : ヘルプメッセージを表示します
* `-l`, `--log-level` : デフォルトのログレベルを変更します(デフォルト: `info`)
* `-o`, `--output` : zipファイルのデフォルト出力ファイル名を変更します(デフォルト: `{HOSTNAME}.zip`。hostnameは実行時に評価されるマシンのホスト名です)
* `--osquery-path` : osquery実行可能ファイルへのパス。この値は以下の条件に基づいて使用されます:
* osqueryバイナリが`fennec`に埋め込まれている場合、それを抽出して`--osquery-path`にダンプします
* osqueryが`fennec`に埋め込まれていない場合、`--osquery-path`のパスにあるosqueryバイナリを使用します
* `--output-format` : 出力形式を選択します。サポートされている形式:
* jsonl : 改行区切りのJSONオブジェクト(デフォルト)
* csv: カンマ区切りの値
* kjson: 結果ファイルを[Kuiper](https://github.com/DFIRKuiper/Kuiper)分析プラットフォームにアップロードする場合にこの形式を使用します
* `-q`, `--quiet` : `stdout`へのログ出力を行いません
* `--non-root`: Fennecを非root権限で実行します。デフォルトでは、Fennecは`root`権限を必要とし、rootでない場合はエラーメッセージを表示して終了します
* `--show-config` : 埋め込み設定を表示して終了します
* `--show-embedded` : 埋め込みファイルを表示します
* `-t`, `--timeout` : クエリアーティファクトタイプの各osqueryのタイムアウトを秒単位で設定します
* `-u`, `--upload-artifact` : アーティファクトパッケージをリモートサーバーにアップロードします。サポートされているプロトコル:
* `s3` : アーティファクトパッケージをS3バケットにアップロードします
* `形式` : s3://<ACCESS_KEY>:<SECRET_ACCESS_KEY>@(http|https)://<HOSTNAME>:<PORT>/<BUCKET_NAME>:<PATH>
* `例` : s3://minioadmin:minioadmin@http://192.168.100.190:9000/fennec:/
* `aws3` : アーティファクトパッケージをAWS S3バケットにアップロードします
* `形式` : aws3://<ACCESS_KEY>:<SECRET_ACCESS_KEY>@<AWS_REGOIN>.<BUCKET_NAME>:<PATH>
* `例` : aws3://AKIAXXXXXXXXXXXXXXXXX:[email protected]:/
* `scp` : SCPプロトコルを使用してアーティファクトパッケージをサーバーにアップロードします
* `形式` : scp://`<USERNAME>`:`<PASSWORD>`@`<HOSTNAME>`:`<PORT>`:`<PATH>`
* `例` : scp://testusername:[email protected]:22:/dev/shm
* `-V`, `--version` : `fennec`のバージョンを表示して終了します
## 依存関係と共にコンパイルする 👨💻
fennecは`query`タイプのアーティファクトを実行するために`osquery`に依存しています。`deps`ディレクトリには、ターゲットOSとアーキテクチャに応じてバイナリに埋め込まれるファイルが含まれています。コンパイルする前に、以下の手順に従ってください:
* 必要に応じて設定ファイル`deps/<TARGET_OS>/fennec.yaml`を修正します
* 以下のコマンドのいずれかを使用してバイナリをビルドします:
* 動的リンク: ```bash
cargo build --release
リリースセクションのプリコンパイル済みバイナリも使用できます。
以下は、このリポジトリと同じ設定で Ubuntu 20 上で実行した例です:

Kuiper がサポートする形式でデータを出力するには、以下の引数を指定して Fennec を実行します:```bash sudo ./fennec --output-format kjson
または、設定の `args` セクションに以下を追加してください:```yaml
args:
- "--output-format"
- "kjson"
再コンパイルしてから実行:```bash sudo ./fennec
次に、結果のzipファイルをKuiperにアップロードします。以下が例です: