#取证 #命令行 #API #API 绑定 #CLI #命令行界面

bin+lib velociraptor_api

Velociraptor API 客户端(https://github.com/Velocidex/velociraptor)

1 个不稳定版本

0.1.0 2023年10月12日

#4 in #取证

LGPL-3.0 或更高版本

25KB
514 代码行

Velociraptor API 客户端和命令行工具

命令行工具

特性

  • 服务器端查询:子命令 query
  • 客户端shell命令,例如
    • VQL 查询: client <client-id> query
    • Bash: client <client-id> bash
    • Cmd.exe: client <client-id> cmd
    • Powershell: client <client-id> powershell
  • 结果文件下载:子命令 fetch

所有命令都有简单的帮助信息。

此工具的主要目的是作为围绕文本编辑器组织的 VQL 开发和测试工作流程的构建块,而不是 Velociraptor 的网络界面。

配置

客户端需要一个 API 密钥文件,该文件可以通过在服务器上运行以下命令生成。

velociraptor config api_client

该文件应命名为 apiclient.yaml 并放置在配置目录中

  • Unix: $XDG_CONFIG_HOME/velociraptor$HOME/.config/velociraptor
  • MacOSX: $HOME/Library/Application Support/velociraptor
  • Windows: %userprofile%\AppData\Roaming\velociraptor

如果需要多个服务器或配置文件的 API 密钥,则应命名为 apiclient-$INSTANCE.yaml;可以使用 --instance 参数进行选择。

期望 apiclient.yaml 文件具有以下结构

ca_certificate: |
  -----BEGIN CERTIFICATE-----
  ...
  -----END CERTIFICATE-----
client_cert: |
  -----BEGIN CERTIFICATE-----
  ...
  -----END CERTIFICATE-----
client_private_key: |
  -----BEGIN RSA PRIVATE KEY-----
  ...
  -----END RSA PRIVATE KEY-----
api_connection_string: velociraptor-server.example:8001
name: velouser

即兴 VQL 查询

服务器端和客户端 VQL 查询的输出由格式化良好的 JSON 组成,适用于由 jq 等工具进行后处理。例如

$ velociraptor-client --instance test client C.02749d29d382534f query 'select * from info()'
[
  {
    "Architecture": "amd64",
    "BootTime": 1684997214,
    "ClientStart": "2023-05-25T22:29:21.525425229Z",
    "CompilerVersion": "go1.20.3",
    "Exe": "/usr/local/bin/velociraptor_client",
    "Fqdn": "foo",
    "HostID": "76dabd94-de78-4ab6-884a-ac63e38424aa",
    "Hostname": "foo",
    "IsAdmin": true,
    "KernelVersion": "5.14.21-150400.24.60-default",
    "OS": "linux",
    "Platform": "opensuse-leap",
    "PlatformFamily": "suse",
    "PlatformVersion": "15.4",
    "Procs": 98,
    "Uptime": 12057434,
    "VirtualizationRole": "",
    "VirtualizationSystem": ""
  }
]

即兴 shell 命令

执行简单的 bash 命令如下所示

$ velociraptor-client --instance test client C.02749d29d382534f bash 'cat /etc/motd'
openSUSE Leap 15.4 x86_64 (64-bit)

As "root" use the:
- zypper command for package management
- yast command for configuration management

Have a lot of fun...

标准输出和标准错误流被写入到独立的本地输出流。

API客户端库

这是一个将pyvelociraptor移植到Rust的尝试。实现了fetchquery函数。(我还没有想好如何处理event。)有关详细信息,请参阅Rustdoc文档(或源代码)。

请勿在生产环境中使用此代码,因为接口可能仍然会发生变化。

作者

Hilko Bengen <[email protected]>

依赖项

~18–29MB
~527K SLoC