很多博客都提到了这个,但是似懂非懂,又不够简洁。
反控的主要思路
简而言之,cobalt strike反控的思路可以这么理解:
当你红队的钓鱼木马成功上线时,你在cs客户端浏览受害者的文件。实际的原理是你的cs生成的payload程序 调用了windows的想相关API:比如可以访问文件列表 访问进程名
那么 你只需要 注入这些windows API 将其改为你的payload。则,当红队的某个幸运儿去浏览文件时,其实就是执行了相关的windwosAPI,也即你的payload。所以原理是这样的。
那怎么实现注入windows API呢?
有一个框架叫frida。是一个用于动态代码插桩的开源工具,它支持多种平台和架构。通过 Frida,你可以动态地修改、追踪或拦截应用程序在运行时的行为。这点就需要你好好研究了,网上也有一些例子,因为相关的windows API太多了。你总能找到可以注入的。无非就是你要学一下Frida框架怎么实现(我看有用java实现的)。这就是熟练度的问题。
可以参照这篇文章;
然后再分享几个小技巧
怎么拿到cs服务器的IP和密码?
客户端的角度
其实换个角度,当cs客户端连接teamserver服务器时,不也是要输入密码么。
不过cs客户端是有漏洞的,他的默认配置是密码明文存储与用户目录下的.aggressor.prop文件。
我们在cs客户端执行这条ps命令:
type $env:USERPROFILE.\aggressor.prop | findstr 'password'
拿到密码。
其实,你是不需要用管道符找这个password的,你直接都把信息展示出来不好吗。
服务器的角度
往往服务器有时候开启http服务 可能会泄露一些信息,比如在home目录下开。那你直接读取.aggressor.prop可是可以的。
还有一种方法就是用history命令。因为本身teamserver的 启动就是需要带上明文的账号和密码参数。
在kali系统的.bash_history可能是空的,因为shell不一样。有的kali是默认zsh.所以你要读取.zsh_history
再分享一个,mysql蜜罐读取攻击者信息
https://blog.csdn.net/logic1001/article/details/137598400
有机会会写更多。