关于蚁剑反制深入的分析和利用的一点小思路


前言
前几天我在公众号看到了一篇名为《端内钓鱼,反制蚁剑》的文章,我觉得这个思路很好,之后决定深入研究一下,通过两天的研究,现在已经写出了比较真实的反制马。在研究的过程中把一些经验分享出来,希望可以给大家解决一下问题。

一、反制思路
首先我们知道蚁剑虚拟终端遇到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 等这样的字母去生成大钥匙的

三、利用效果
如果明白了,上面说的连通密钥和功能密钥,去分析流量找特征可以实现基本上全部功能。效果如下