Elastic Security Labs

BPFDoor 扫描器

用于识别感染 BPFDoor 恶意软件的主机的 Python 脚本。

阅读 4 分钟工具
BPFDoor Scanner

用于识别感染 BPFDoor 恶意软件的主机的 Python 脚本。

下载 bpfdoor-scanner.tar.gz

入门

此工具提供一个 Python 脚本来识别感染了 BPFDoor 恶意软件的主机。

Elastic Security 团队发布了对 BPFDoor 恶意软件的深入分析,并创建了一个额外的工具,用于从 BPFDoor 恶意软件样本中提取配置。

权限

在 Linux(以及因此在容器中),该工具需要以下权限

  • CAP_NET_BIND_SERVICE
  • CAP_NET_RAW

在任何 *NIX 主机上,使用 sudo 运行脚本将获得您需要的内容。 只要您不剥夺为容器列出的权限,并发布您打算接收的 UDP 端口,您就应该可以了。

Docker

我们可以使用 Docker 轻松运行扫描程序,首先我们需要构建映像

Building the BPFDoor scanner Docker image

docker build . -t bpfdoor-scanner

用法

构建 Docker 映像后,我们可以运行容器以获取选项列表。

Runing the BPFDoor container

docker run -ti --rm bpfdoor-scanner:latest --help

Usage: bpfdoor-scanner [OPTIONS]

  Sends a discovery packet to suspected BPFDoor endpoints.

  Example usage:

      sudo ./bpfdoor-scanner --target-ip 1.2.3.4

  Sends a packet to IP 1.2.3.4 using the default target port 68/UDP (tool
  listens on all ports) using the default interface on this host and listens
  on port 53/UDP to masquerade as traffic.

  NOTE: Elevated privileges are required for source ports < 1024.

Options:
  --target-ip TEXT       [required]
  --target-port INTEGER  [default: 68]
  --source-ip TEXT       IP for target to respond to and attempt to bind
                         locally  [default: 172.17.0.3]
  --source-port INTEGER  Local port to listen on for response  [default: 53]
  --timeout INTEGER      Number of seconds to wait for response  [default: 5]
  -v, --verbose          Show verbose output
  -d, --debug            Show debug output
  --version
  --help                 Show this message and exit.

所需的最低选项只是 --target-ip。其余的都有默认值。 对于在容器中运行,您需要发布返回端口(默认为 53),并指定要使用的主机接口的 --source-ip。 在以下示例中,IP 192.168.100.10 是我主机上将接收数据包的接口。

Example running the BPFDoor scanner

docker run -ti --publish 53:53/udp --rm bpfdoor-scanner:latest \
  --target-ip 192.168.32.18 --source-ip 192.168.100.10

本地运行

如上所述,Docker 是运行此项目的推荐方法,但您也可以在本地运行。 此项目使用 Poetry 来管理依赖项、测试和元数据。 如果您已经安装了 Poetry,则在此目录中,您可以简单地运行以下命令来运行该工具。 这将设置一个虚拟环境,安装依赖项,激活虚拟环境,并运行控制台脚本。

Running BPFDoor scanner locally

poetry lock
poetry install
poetry shell
sudo bpfdoor-scanner --help

一旦它工作,你可以做与上面 Docker 说明中提到的相同的事情。