P4wnP1 A.L.O.A. 由 MaMe82 开发,是一个将树莓派 Zero W 转变为灵活、低成本的渗透测试、红队和物理接触平台的框架……或者说是一个“小型进攻型设备”。
最新镜像可在 Releases 标签下找到。
访问全新 P4wnP1 A.L.O.A. 安装最简单的方式是通过生成的 WiFi 使用 Web 客户端(预共享密钥为 MaMe82-P4wnP1,URL 为 http://172.24.0.1:8000)或 SSH(默认密码 toor)。
Math 进行鼠标计算等)这里不多赘述,P4wnP1 A.L.O.A. 基于 KALI Linux,因此一切所需工具都已就绪(或可通过 apt 安装)
因此,如果你想在远程 Windows 主机上使用批处理文件配置 P4wnP1……没问题:
host 参数尽管最初并未计划,P4wnP1 A.L.O.A. 现在可以通过 Web 客户配置。 即便最初未规划,这个客户端却发展成了一款不错的软件。实际上,它已成为配置 P4wnP1 A.L.O.A. 的主要工具。 Web 客户端具备 CLI 无法访问的功能(模板存储、创建“触发器动作”)。
核心特性:
CTRL+SPACE)旧版 P4wnP1 的自动化方法(静态 bash 脚本)已不再适用。
P4wnP1 A.L.O.A. 的自动化方法需满足以下要求:
通过引入所谓的“触发器动作”,并将其与模板系统(所有子系统的持久设置存储)结合,所有需求均得到满足。有关触发器动作的详细信息,请参阅“工作流程”部分。
P4wnP1 A.L.O.A. 不使用静态配置或载荷等概念。实际上,它根本没有静态工作流程。
P4wnP1 A.L.O.A. 旨在尽可能灵活,以便在可能的所有场景中使用(包括我在开发 P4wnP1 A.L.O.A. 时未能想到的场景)。
但本节将讲解一些基本概念。由于很难在不制作完整(视频)文档的情况下解释所有内容,我将通过一些常见用例和示例来解释需要说明的内容。
尽管如此,我不太可能抽出时间提供完整的文档。因此,我鼓励大家提供教程和想法,这些内容可以链接回本 README
现在从最基本的任务开始:
实现此目标的最低配置要求是:
P4wnP1(未修改镜像)的默认配置已满足这些要求:
MaMe82-P4wnP1172.24.0.1172.16.0.1P4wnP11337172.26.0.1root,默认密码为 toor注意: 部署 HTTPS 连接目前不在项目范围内。因此,如果在 Web 客户端中处理敏感数据(如 WiFi 凭证),请务必注意这一点。整个项目并非以安全为首要目标(而且未来也不太可能将其作为需求)。请采取适当措施(例如,如果接入点配置为开放认证,则使用 iptables 限制对 Web 客户端的访问;在没有 PIN 保护的情况下,不要启用蓝牙可发现和可连接等)
至此,我假设:
要从 SSH 会话运行 CLI 客户端,请执行以下命令:``` root@kali:~# P4wnP1_cli The CLI client tool could be used to configure P4wnP1 A.L.O.A. from the command line. The tool relies on RPC so it could be used remotely.
Version: v0.1.0-alpha1
Usage: P4wnP1_cli [command]
Available Commands: db Database backup and restore evt Receive P4wnP1 service events help Help about any command hid Use keyboard or mouse functionality led Set or Get LED state of P4wnP1 net Configure Network settings of ethernet interfaces (including USB ethernet if enabled) system system commands template Deploy and list templates trigger Fire a group send action or wait for a group receive trigger usb USB gadget settings wifi Configure WiFi (spawn Access Point or join WiFi networks)
Flags: -h, --help help for P4wnP1_cli --host string The host with the listening P4wnP1 RPC server (default "localhost") --port string The port on which the P4wnP1 RPC server is listening (default "50051")
Use "P4wnP1_cli [command] --help" for more information about a command.
帮助屏幕已经显示,CLI客户端使用不同的命令来与P4wnP1 A.L.O.A.的各种子系统进行交互。这些命令大多又有自己的子命令。每个命令或子命令的帮助可以通过在CLI命令后附加`-h`来访问:```
root@kali:~# P4wnP1_cli hid run -h
Run script provided from standard input, commandline parameter or by path to script file on P4wnP1
Usage:
P4wnP1_cli hid run [flags]
Flags:
-c, --commands string HIDScript commands to run, given as string
-h, --help help for run
-r, --server-path string Load HIDScript from given path on P4wnP1 server
-t, --timeout uint32 Interrupt HIDScript after this timeout (seconds)
Global Flags:
--host string The host with the listening P4wnP1 RPC server (default "localhost")
--port string The port on which the P4wnP1 RPC server is listening (default "50051")
现在,为了向USB主机输出"Hello world",可以使用以下CLI命令:
P4wnP1_cli hid run -c 'type("Hello world")'
在SSH会话中的输出结果应该类似于:``` TempFile created: /tmp/HIDscript295065725 Start appending to 'HIDscript295065725' in folder 'TMP' Result: null
在USB主机上,应当在具有键盘焦点的应用程序中输入了"Hello World"。
*如果你的SSH客户端运行在USB主机本身上,那么键入的"Hello world"会出现在CLI命令的输出之间(它不属于输出,而是在中间键入的)。*
**目标达成。我们向目标注入了按键。**
对于一个简单的按键注入任务来说,阅读量很大,但同样,本节旨在解释基本概念。
### 2.2 进一步了解HIDScript的高级语言特性
如果你成功运行了"Hello world"按键注入,那么现在是探索一些额外HIDScript特性的好时机。
我们已经了解了`type`命令,但让我们尝试讨论一些更高级的HIDScript命令:
#### 按下特殊键和组合键
`type`命令支持通过将"换行"字符编码到输入字符串中来按下回车键,如下所示:```
P4wnP1_cli hid run -c 'type("line 1\nline 2\nline 3 followed by pressing RETURN three times\n\n\n")'
但是特殊键或组合键呢?
press 命令来帮忙!
让我们使用 press 向 USB 主机发送 CTRL+ALT+DELETE:```
P4wnP1_cli hid run -c 'press("CTRL ALT DELETE")'
*注意:有两个键是修饰键(CTRL 和 ALT),只有一个键是实际键(DELETE)*
让我们在不使用任何修饰键的情况下按下键 'A':```
P4wnP1_cli hid run -c 'press("A")'
结果输出应该是小写字母 'a',因为 press("A") 将 'A' 解释为按键。而命令 type("A") 则尝试按下按键组合,从而产生大写字母 'A' 输出字符。
让我们组合一个修饰键和一个非修饰键,以产生大写字母 'A' 输出字符(模仿 type("A") 的行为):```
P4wnP1_cli hid run -c 'press("SHIFT A")'
这应该已经产生了一个大写字母A的输出。
重要的是要理解,`press`将其给定的键参数解释为键,而`type`则尝试找到合适的按键组合以产生预期的输出字符。
在最后一个例子中,让我们结合使用`press`和`type`。```
P4wnP1_cli hid run -c 'type("before caps\n"); press("CAPS"); type("after caps\n"); press("CAPS");'
最后一个命令输入了一个字符串,切换了CAPSLOCK,又输入了另一个字符串并再次切换了CAPSLOCK。 结果,CAPSLOCK应该回到初始状态(切换了两次),但其中一个字符串是大写输入,另一个是小写输入,尽管两个字符串都是小写给出的。
关于使用 press 按键的附加说明: