导航AI 🤝 对抗天网
使用AI可以成为对抗工程的强大工具。这原本只是为了探索可能性并学习更多自动化知识的趣味项目,但它同时证明了Git提交历史和提交日期都不可信!
AI技术演进
人工智能(AI)、生成式AI(GenAI)和代理AI(Agentic AI)是过去几年主导技术领域的重要趋势。基于生成式AI的AI聊天机器人已变得普遍,通过自然语言处理响应用户查询,提供即时、情境感知的回复。
然而,下一个探索领域是代理AI——这是一种融合深度推理和迭代规划的进化。与传统AI仅响应单一交互不同,代理AI能自主处理复杂的多步骤问题。这一进步有潜力在各行业指数级提升生产力和运营效率,提供前所未有的自动化水平和决策能力。
随着Claude、OpenAI和Apple Intelligence等平台使AI工具更易获取,这些技术不再局限于学者、研究人员或开发者。普通用户现在可以免费或以低成本利用AI来组织文本、格式化代码、编写文档等,使先进能力广泛普及。
对抗工程视角
像对抗者一样思考是我的工作,也是我长期从事并热爱的职业——追逐新兴趋势,理解最新技术,并利用它们来提升我的工作质量。“对抗架构师”这个术语是我的好友John Carroll在某天下午我们互相碰撞想法时创造的,我认为它比“红队成员”、“渗透测试员”或安全研究员等头衔更能准确描述我当前的工作内容——我研究对抗者的行为架构,并构建处理问题的方法来运用这种思维模式改进应对策略。
工具创建
我喜欢编写工具,这个周六下午也不例外。我一直在修改最初为AutoPoC和HoneyPoC编写的逻辑,因为我对模板自动化很感兴趣,这像往常一样让我陷入了探索的深渊。我编写了许多工具并发布到GitHub上,最初这只是帮助我学习不同语言的随机脚本输出口,在过去十年中已发展成一个不错的作品集。
最近我发现使用AI帮助改进脚本和工具创建越来越有用。虽然许多人对AI产生的幻觉输出表示抱怨和批评,AI确实偶尔会出现这种情况,但我在家庭实验室中越多地使用AI,就越能学习提示工程,基本上可以说是“强迫”模型给我想要的内容。
GitHub仓库创建及其工作原理
GitHub仓库作为代码的集中存储位置,允许开发者使用Git跟踪变更、协作和管理版本。创建仓库时,Git会在项目内初始化一个.git目录,其中包含版本控制所需的所有元数据,包括提交历史、分支和配置文件。对仓库的每个更改都记录为提交,作为项目在特定时间点状态的快照。每个提交都附带描述变更的消息,为未来参考提供上下文。
我编写了一个AI驱动的仓库自动化工具,能动态创建、修改和管理具有逼真提交历史、仓库描述和AI增强文件修改的仓库。该工具集成Ollama用于AI生成内容,并通过API调用直接与GitHub交互。
通过利用随机化提交日期,脚本将提交回溯日期,使变更看起来是随时间逐渐发生的,而不是单次执行完成的。它还使用AI优化提交消息,确保它们结构良好且有意义,避免通用或重复的措辞。这种方法不仅简化了仓库设置,还创建了更真实的提交历史,使仓库看起来像是经过较长时间积极开发的结果。
对抗工程实践
我将RepoMan编写为概念验证,用于实现完全自动化的Git仓库创建和历史提交,以建立合法性。使用ollama作为AI修改的接收方,但您可以轻松修改它以使用其他模型。
示例提交消息
脚本首先从vars.toml获取变量,您可以在此配置要使用的ollama模型,我已使用llama2和mistrel使其正常工作:
|
|
然后它构建仓库内容:
- 创建并初始化仓库(本地和GitHub)
- 使用AI生成名称、描述和提交消息
- 智能修改文件,同时避免.git目录
- 清理AI生成的输出,确保只有有效内容保留
- 推送具有逼真提交历史的仓库
- 必要时可以回滚提交
代码实现细节
代码本身相当温和,但它很好地构建在我一直在进行的另一个项目上,用于通过AI实现代码的持续修改以进行CI/CD构建,首先是探索可能性,其次是研究提示工程以获得模型响应我想要内容的合适提示。
对于那些已经是AI驯服大师的读者来说,这可能看起来非常简单,但以下是我必须充分优化提示并在之后执行清理的代码片段,以防止模型向文件中注入垃圾:
|
|
虽然作为概念验证还不够完美,但它运行良好,而且为了增加趣味性,可以看看RepoMan的提交历史😏。我写了第二个脚本来使提交历史变得疯狂有趣:
|
|
在创建脚本的过程中,我发现了一些值得探索的实际用例:在混乱的提交消息中隐藏数据,向仓库膨胀代码提交,以及在repoman中减去疯狂内容,它允许潜在的合法内容。Git的任意膨胀可能很好地反映在虚假身份和CV吹嘘上,用作者/参与度误导人们。
这原本只是为了探索可能性并学习更多自动化知识的趣味项目,但它同时证明了Git提交历史和提交日期都不可信!