今天看到火絨團隊發的《銀狐後門: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
