
*nix 시스템을 위한 아티팩트 수집 도구
fennec는 *nix 기반 시스템에서 사고 대응 시 사용되는 Rust로 작성된 아티팩트 수집 도구입니다. 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`, 호스트 이름은 런타임에 평가된 머신 호스트 이름입니다)
* `--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을 실행합니다. 기본적으로 Fennec은 `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에 업로드합니다. 다음은 예시입니다: