FastFinder
这个项目是为了什么而设计的?
FastFinder是一款轻量级工具,用于在 Windows 和 Linux 平台上进行威胁追踪、实时取证和分类。它专注于基于各种标准的端点枚举和可疑文件查找:
- 文件路径/名称
- md5 / sha1 / sha256 校验和
- 简单的字符串内容匹配
-
准备战斗!
fastfinder 已在多个 CERT、CSIRT 和 SOC 用例的实际案例中进行了测试
-
安装
该软件的编译版本可用。如果你想从源代码编译,可能会有点棘手,因为它强烈依赖于 go-yara和 CGO 编译。无论如何,您会找到适用于 windows和linux的详细文档
用法
```shell
| /\ /` | | | |\ | | \ | |) | /~~\ ./ | | | | | |/ |_ | \
2021-2022 | Jean-Pierre GARNIER | @codeyourweb https://github.com/codeyourweb/fastfinder
usage: fastfinder [-h|—help] [-c|—configuration “
Incident Response - Fast suspicious file finder
Arguments:
-h —help Print help information -c —configuration Fastfind configuration file. Default: -b —build Output a standalone package with configuration and rules in a single binary -o —output Save fastfinder logs in the specified file -n —no-window Hide fastfinder window -u —no-userinterface Hide advanced user interface -v —verbosity File log verbosity | 4: Only alert | 3: Alert and errors | 2: Alerts,errors and I/O operations | 1: Full verbosity) . Default: 3 -t —triage Triage mode (infinite run - scan every new file in the input path directories). Default: false
根据您查找文件的位置,FastFinder可以与管理员或简单用户权限一起使用。
<a name="BP9M6"></a>
### 根据您的需要扫描和导出文件匹配
[那里](https://github.com/codeyourweb/fastfinder/blob/master/examples)提供了配置示例:
```shell
input:
path: [] # match file path AND / OR file name based on simple string
content:
grep: [] # match literal string value inside file content
yara: [] # use yara rule and specify rules path(s) for more complex pattern search (wildcards / regex / conditions)
checksum: [] # parse for md5/sha1/sha256 in file content
options:
contentMatchDependsOnPathMatch: true # if true, paths are a pre-filter for content searchs. If false, paths and content both generate matchs
findInHardDrives: true # enumerate hard drive content
findInRemovableDrives: true # enumerate removable drive content
findInNetworkDrives: true # enumerate network drive content
findInCDRomDrives: true # enumerate physical CD-ROM and mounted iso / vhd...
output:
copyMatchingFiles: true # create a copy of every matching file
base64Files: true # base64 matched content before copy
filesCopyPath: '' # empty value will copy matched files in the fastfinder.exe folder
advancedparameters:
yaraRC4Key: '' # yara rules can be (un)/ciphered using the specified RC4 key
maxScanFilesize: 2048 # ignore files up to maxScanFileSize Mb (default: 2048)
cleanMemoryIfFileGreaterThanSize: 512 # clean fastfinder internal memory after heavy file scan (default: 512Mb)
在任何地方或指定路径中搜索:
- 采用 ‘?’ 在简单字符通配符的路径中(例如 powershe??.exe)
- 在多个字符通配符的路径中使用“*”(例如 *.exe)
- 也可以使用正则表达式,只需用斜杠将路径括起来(例如 /[0-9]{8}.exe/)
也可以使用环境变量(例如 %TEMP%\myfile.exe)
重要笔记
输入路径始终不区分大小写
- 对字符串 (grep) 的内容搜索始终区分大小写
不应该转义反斜杠(正则表达式除外)有关更多信息,请查看示例
Windows 上FastFinder的编译说明
FastFinder最初是为 Windows 平台设计的,但编译起来有点棘手,因为它强烈依赖 go-yara 和 CGO。这是一个分步指南:
安装前
所有安装过程都将使用 msys2/mingw 终端完成。为了避免任何错误,您必须确保您的安装目录不包含空格或特殊字符。我还没有测试以简单用户身份安装,我强烈建议您在 c:\ 驱动器上以管理员权限安装所有内容。
对于下面的配置和示例,我的安装路径是:GO: c:\Go
- GOPATH: C:\Users\myuser\go
- Msys2: c:\msys64
-
安装 msys2 和依赖项:
首先,请注意,如果依赖项是使用 GCC 以外的其他编译器编译的,您将无法让FastFinder工作。目前使用Visual C++编译外部库时CGO存在一些问题,因此无需安装Visual Studio或vcpkg。
从官网下载msys2并安装
- 在那里,您会发现两个不同的二进制文件,它们分别是“MSYS2 MSYS”和“MSYS2 MinGW 64bits”。请启动第二个。
- 使用以下命令行安装依赖项:
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-pkg-config base-devel openssl-devel
在 mingw 终端中添加环境变量:
export PATH=$PATH:/c/Go/bin:/c/msys64/mingw64/bin:/c/Git/bin
下载并编译 libyara
强烈建议不要克隆 VirusTotal 的 YARA 存储库,而是下载最新版本的源代码。
如果您从最新提交编译 libyara,则在将此库与FastFinder和 GCO链接时可能会产生一些副作用。从这里下载最新的 VirusTotal 发布源代码
- 将文件夹解压缩到没有空格和特殊字符的目录中
- 在 mingw 终端中,转到 yara 目录(反斜杠必须用斜杠替换,例如 cd c:/yara)
使用以下命令编译和安装:
./bootstrap.sh &&./configure && make && make install
配置您的操作系统
通过这一步,您将不再需要使用 mingw 终端,您将能够使用 Go 安装FastFinder并直接从 Windows cmd / powershell 编译您的项目。
确保您有以下作为系统环境变量(不是用户环境变量)。如果没有,请创建它们:GOARCH=<your-architecture> (eg. amd64)
GOOS=windows
CGO_CFLAGS=-IC:/msys64/mingw64/include
CGO_LDFLAGS=-LC:/msys64/mingw64/lib -lyara -lcrypto
PKG_CONFIG_PATH=C:/msys64/mingw64/lib/pkgconfig
您还需要系统 PATH 环境变量中的 C:\msys64\mingw64\bin。
确保您有以下用户环境变量(不是系统变量):GOPATH=%USERPROFILE%\go
请注意,路径必须用斜杠而不是反斜杠书写。如前所述,不要使用带有空格或特殊字符的路径。
下载、安装和编译 FastFinder
现在,您可以从 Windows cmd 或 Powershell 安装FastFinder:
go get github.com/codeyourweb/fastfinder 编译应该通过以下方式完成:go build -tags yara_static -a -ldflags '-extldflags "-static"'
。关于这个项目
我最初创建这个项目是为了在广泛的计算机网络上自动化快速的面向系统的 IOC 检测,它满足了我今天的需求。
不过,如果您有互补的想法,请不要犹豫,如果它们对每个人都有用,我会考虑实施它们。另一方面,将仔细研究拉取请求。未来版本
我现在不打算添加任何其他功能。下一个版本将重点关注:
单元测试/代码测试覆盖率/CI
- 基于实时恶意软件交易和威胁参与者活动构建更多示例
参考资料
https://github.com/codeyourweb/fastfinder/blob/master/examples
https://github.com/VirusTotal/yara