关于蚁剑反制深入的分析和利用的一点小思路
前言
前几天我在公众号看到了一篇名为《端内钓鱼,反制蚁剑》的文章,我觉得这个思路很好,之后决定深入研究一下,通过两天的研究,现在已经写出了比较真实的反制马。在研究的过程中把一些经验分享出来,希望可以给大家解决一下问题。
一、反制思路
首先我们知道蚁剑虚拟终端遇到http/https协议头时会发生转换,这个链接打开的页面是以蚁剑内部的浏览器打开的,蚁剑在实现上用了node.js,之后通过打开的页面嵌入js来直接执行命令
文章里面初步认证的问题已经解决了,但是依旧存在很多问题没有解决。
1.功能模块实现太少,达不到钓鱼效果。
2.返回连接那里执行命令返回一次内容后用户名变化。
3.执行命令的exec对windows不友好。
4.如果为了追求真实性,钓鱼的html过大会导致JS命令执行失败。
5.蚁剑读取外部网站会产生缓存,如果钓鱼的html过大需要清理Appdata的缓存在执行才可以。
所以我这里做了优化和改进,把思路转换
1.jb小子日站爆目录
2.爆到一个shell.php
3.通过弱口令蚁剑连接成功
3.读取文件和目录都没有问题,常见的命令执行没有问题,但是上传下载显示连通性出现问题
4.执行命令突然报错,后面出现一个欺骗性很高的域名和伪装度极高的网站
5.急不可耐的点击进去,渲染恶意js脚本
6.明线:jb小子开始查看文档寻找解决方法。暗线:C2上线查户口
二、分析结论
我经过分析之后得出结论
蚁剑分为连通密钥和功能密钥两种密钥,只用连通密钥而不去管功能密钥,导致后面的路径丢失,自然而且出现“2.返回连接那里执行命令返回一次内容后用户名变化”,而且虽然连通密钥前半部分就可通过认证,但如果要实现完整功能(比如查看内容)其实还是不够的。
上面三张图,首先第一张是蚁剑在执行命令的源码,第二张是执行命令请求包,第三张是解码后的内容,
蚁剑执行命令的结构是
cd /d "路径"&命令&echo 功能密钥首&cd&echo 功能密钥尾。而这种请求的特征也有两种,这里大家可以自行去分析。
PS建议:另外蚁剑是通过F S 等这样的字母去生成大钥匙的
三、利用效果
如果明白了,上面说的连通密钥和功能密钥,去分析流量找特征可以实现基本上全部功能。效果如下