为什么使用宏键盘?
压缩无处不在——文件、视频、存储和网络中都存在压缩技术,因此将其应用于工作流中也理所当然。通过宏键盘(如Stream Deck或完全可软件自定义的机械键盘),您可以将一系列繁琐、重复且需要多个步骤和配置的任务“压缩”为一次按键操作。
请注意:本博客不需要物理Stream Deck硬件,因为Elgato的移动Stream Deck应用也包含相同的宏键盘功能。
为什么使用宏键盘?
有时,渗透测试的一半工作似乎是从笔记中复制粘贴或重新输入常用命令。无论是启动Nmap扫描、运行您最喜欢的Nuclei模板,还是在Word中格式化发现内容,在独特和个性化的环境中进行渗透测试涉及大量重复工作,尤其是在测试的初期。
基本功能
在深入创建这些宏之前,需要简要介绍Stream Deck的基本内置功能。毕竟,每个专家都曾是初学者。以下是我每天使用的核心功能:
-
多动作:按顺序堆叠多个命令。您可以一键连接到VPN、启动终端并更改工作区布局。
-
热键:将键绑定组合(如“ctrl+c”)放在这里。
-
文件夹:组织功能,可容纳多个不同的宏。例如,这可用于保存所有与报告摘要相关的项目,而不会使主页面混乱。
-
插件:Stream Deck还对Microsoft Teams或Discord等应用程序提供强大的第三方支持,让您指尖即可获得通话选项。
-
配置文件:在Word、终端和浏览器等应用程序之间分离Stream Deck布局。
渗透测试的自动化示例
然而,制作宏需要一些时间。根据我的经验,您必须确定您频繁执行的操作,并逐步将它们添加到Stream Deck中——例如设置测试环境或基本的侦察/测试任务。
每次我加载新的测试虚拟机时,我总是运行标准的“apt”命令:update、upgrade、install。所有这些操作都可以添加到一个多动作宏中。例如:“apt update; apt upgrade -y; apt dist-upgrade -y; apt install nuclei”可以放在一个宏中。甚至设置您最喜欢的Screen会话或TMUX布局也可以使用您已经使用的相同键盘快捷键自动化。
我还使用一个数百行的设置脚本来配置我的虚拟机以准备测试。鉴于该文件有数百行长,文本操作完成时间太长。在这种情况下,我使用MacOS终端和“pbcopy”命令通过多动作快速复制脚本。
整个操作不到一秒即可完成,您可以在比手动导航和复制更快的时间内获得安装脚本的新副本,以便粘贴到远程虚拟机中。您甚至可以添加额外的热键操作,在打开终端之前alt-tab回到活动窗口。
例如,在测试网络时,我知道我会使用Nmap、Nuclei和FFuF。所有这些命令都可以添加到宏键盘中,为文件输入或输出留出占位符文本,例如“Nmap -sC -sV -p 443,80,8443,8080 -iL ”用于针对Web主机和端口的Nmap扫描。
如果您保持一致,并始终使用文本文件“scope.txt”作为初始范围文件,并选择“在消息后按Enter”以在键入命令后立即启动它。您甚至可以将其他命令的输出链接到彼此。使用解析和格式化脚本(如“grep”和“sed”)输出到另一个文件,您可以自动分离Web主机以供其他命令使用,并在nuclei等工具中使用它们。
测试完成后,宏甚至可以帮助报告。无论是记录发现、格式化屏幕截图还是在脚注中引用工具使用情况,报告是自动化和节省时间在我个人工作流中闪耀的地方。例如,我使用一个专用配置文件,在打开Microsoft Word时激活,其中包括以下宏:
- 插入常用摘要
- 格式化文本,例如将样式更改为“代码”或“标题2”
- 自动为Nmap或Burp Suite等工具添加脚注
- 粘贴屏幕截图并立即格式化及其标题
这是通过Word的可自定义键绑定选项(在工具 > 自定义键盘选项中)以及Stream Deck的热键和多动作功能实现的。这使我能够专注于写作内容,而不是中断流程手动选择样式和格式。
类似地,插入脚注可以使用多动作完成,该动作以Word的“插入脚注”键绑定的热键开始,然后是文本操作以插入特定工具的URL。
使用这种方法,我的主要报告布局如下所示。
您可以通过使用Word自己的内置Visual Basic宏系统进一步增强Word。例如,运行一个脚本,将Markdown代码片段/块格式转换为Word中的适当样式。
专业提示
虽然文本操作对于报告或命令的简短摘要很有用,但大型命令最好还是复制粘贴到终端中。文本操作平均以1-10毫秒的延迟键入一个字符,使得大段落在整个段落中变得缓慢。
此外,不要忘记查看Stream Deck的插件商店(https://marketplace.elgato.com/stream-deck/plugins)。那里有许多基于生产力的功能可供使用——例如控制Microsoft Teams、Pomodoro计时器、Home Assistant控制或IP地址列表——因此您始终知道测试的来源。