使用Vibe-coding技术构建ClipShield安全工具

本文详细介绍了如何利用AI编程技术构建ClipShield安全工具,通过监控剪贴板内容变化来防范特洛伊剪贴板攻击,涉及C++编程、Windows API调用和AMSI集成等核心技术。

使用Vibe-coding技术构建ClipShield安全工具

最近,特洛伊剪贴板攻击日益流行,攻击者诱使用户跨越安全边界携带攻击载荷并危害设备。与此同时,AI技术正风靡一时。

尝试Vibe-coding

当我了解到"vibe-coding"这个概念时——只需向AI描述需求,它就能为你构建应用程序——我意识到这与我作为产品经理的工作方式惊人相似:描述应用程序功能,然后等待开发团队实现。

在与研究特洛伊剪贴板攻击的安全专家讨论后,我构思了一些可能的缓解措施。我意识到,我们甚至不需要更改任何应用程序:一个简单的安全工具可以监控剪贴板变化,检测内容是否来自浏览器,并在发现危险时警告用户。

构建ClipShield

我打开Google Gemini(Flash 2.0)并指示它:

编写一个简单的C++应用程序,调用AddClipboardFormatListener,在每个WMClipboardUpdate调用时扫描剪贴板文本以查找我选择的字符串。如果找到,显示MessageBox并清除剪贴板文本。

大约15秒后,它生成了完整的C++源文件。我将代码粘贴到Visual Studio中尝试编译,预期会出现大量错误。

VS抱怨没有WinMain函数。Gemini将其函数命名为main()。我要求它将入口点从main更改为WinMain,新代码编译并完美运行。

功能扩展

随后我提出了一系列改进要求:

  • 在WM_CLIPBOARDUPDATE代码中检查剪贴板是否包含名为"Chromium internal source URL"的格式
  • 更新代码以搜索一组字符串而非单个字符串
  • 使字符串搜索不区分大小写
  • 在阻止时在警报中显示剪贴板字符串,并通过OutputDebugString发送到调试控制台

在每个案例中,生成的代码基本正确,虽然我手动调整了一些代码块以提高性能。重要的是,我没有浪费时间在常见的C++烦恼上:字符串操作和转换、参数传递约定等。

高级功能

我继续要求Gemini:

  • 修复编译器警告
  • 在不同线程上显示消息框以免阻塞进程
  • 使用互斥锁确保单实例行为
  • 添加调用AMSI的代码以使用Defender或系统防病毒软件扫描剪贴板内容

当出现链接错误时,Gemini解释了问题原因并提供了在Visual Studio中的具体修复步骤。

最终成果

通过结合我的知识和Gemini的优势,我们实现了:

  • 将lastClipboardUpdate时间点提升为全局变量
  • 重写GetTimestamp函数不使用auto
  • 监控Win+R热键,如果在剪贴板复制后30秒内按下则显示警告
  • 使用键盘钩子而非RegisterHotKey
  • 使用GetAsyncKeyState检查VK_LWIN是否按下

我对结果印象深刻。代码已发布在https://github.com/ericlaw1979/clipshield。

这种体验展示了AI编程在安全工具开发中的巨大潜力,特别是对于熟悉相关领域但时间有限的专业人士。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计