硬核科普:Python類應用是如何悄無聲息往電腦植入後門的?

今天看到火絨團隊發的《銀狐後門:Python庫壓縮包篡改與Chrome僞裝攻擊分析》後,感覺這裏用到了一種很新奇的方法,於是我做了復現,順便分享給大家共同學習

這裏我結合這幾年興起的無文件攻擊手段來植入後門(後門就是哆啦A夢的任意門,來去自如

我們來看演示,運行一個知名軟件Umi-OCR(圖中右側爲後門服務器)

我們知道,現在越來越多的主流功能都使用python庫進行實現,不管是OCR,大數據還是本地AI。這些軟件本身都會自帶python的運行環境

比如坐擁41K Star好用到宇宙大爆炸的Umi-OCR,就是使用Python實現的。

它提供的包裏就自帶了Python3.8的運行環境

我不修改exe,不修改dll不新增任何文件,僅僅只是在程序依賴的python標準庫zip包中__init__.pyc中加入了後門代碼(如下圖),就達到了演示中的植入後門效果

整個程序只有一處和官方的不同

此種方式極其隱蔽,而且對後門做免殺後,實驗環境下從靜態掃描、後門植入到下發指令均沒有觸發報警(不要認爲我想在此引戰,請閱讀我文末的聲明)

技術細節

此部分供同愛好者查閱

上面說到我修改了__init__.py的代碼,到底改了啥

我們直接上代碼,在原來的__init__.py基礎上新增功能

1、從遠程服務器請求二進制後門文件(shellcode)

2、把後門文件加載到內存(網絡->內存)

這是無文件攻擊的重要手段,文件不落地

3、把存放此後門文件的內存塊設置爲可執行地址並立即執行

修改後編譯爲pyc,改爲__init__.pyc然後放入程序依賴的pythonxx.zip壓縮包裏即可

__init__.py新增後門代碼

注意init裏並不是什麼代碼都能執行,比如open操作會報NameError: name 'open' is not defined,原因是初始化還在進行中,builtins模塊還沒加載完。

整個流程就是:

請求下發的後門文件哪裏來?

使用Cobalit Strike生成shellcode文件,方便上述代碼直接加載到內存

生成後門文件

這就是python init+無文件攻擊的利用過程。其思路很巧妙,值得學習(不是

最後,下載軟件渠道要謹慎,必應上現在攜帶銀狐木馬的軟件已經數不勝數了,銀狐木馬的運作原理,就和我本文中演示的後門相似,都具有遠程截圖、實時監視、獲取文件、提權、下發木馬等功能。

參考資料(#替換爲.)

Python3.8的__init.py源碼

github.com/python/cpython/blob/3.8/Lib/encodings/__init__.py?spm=5176.28103460.0.0.2df46308jHPeAn&file=__init__.py

銀狐後門:Python庫壓縮包篡改與Chrome僞裝攻擊分析

huorong.cn/document/tech/vir_report/1905

聲明

1、以上覆現中涉及到的後門程序僅在受限環境運行,不涉及公共互聯網,未對網絡安全造成危害

2、寫作目的是對技術可行性的研究,公開細節,讓更多人瞭解攻擊手段

3、文中所述測試全程殺毒軟件未報警,僅在我當前的測試環境中成立,不排除因局域網等條件導致的靜默放行。並且此測試不詆譭任何殺毒軟件,僅表明python init+無文件攻擊的威脅性

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com