用于识别感染 BPFDoor 恶意软件的主机的 Python 脚本。
入门
此工具提供一个 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 说明中提到的相同的事情。