簡單的定時DDOS攻擊樣本分析
本次分析的樣本來自《惡意軟件分析》課後實驗–Lab-7-01中的程序,將樣本載入到DIE內查殼,如下
程序無殼,使用的VC++6.0
編寫,看到編譯時間爲2010/09/30
說明這個樣本已經很老很老了。將樣本載入到IDA內分析相關功能,來到入口函數Main
出,程序首先調用了StartServiceCtrlDispatcherA
啓動了一個名爲MalService
的服務,接着服務會執行函數sub_401040
,啓動完成服務後,會再次調用函數sub_401040
,如下
下面開始圍繞如下幾個問題開始分析
- 如何持久化駐留
- 如何保持任意時刻的單例運行
- 如何檢測程序運行後基於主機內的特徵
- 程序的目的是什麼
- 程序是否能正常結束
如何持久化駐留
首先看到服務啓動後,會調用函數sub_401040
,進入到函數內分析,首先調用函數OpenMutexA
獲取一個名爲互斥量HGL345
,如果存在了這個互斥量,則表明程序已經運行,就會停止當前運行的程序。
如果是首次運行,則程序會進入jz short loc_401064
,程序首先會調用CreateMutexA
函數創建一個HGL345
的互斥量,接着調用OpenSCManagerA
函數獲取一個hSCManager
對象,方便後續添加一個服務做準備,接着通過GetModuleFileNameA
獲取程序運行的路徑,然後調用CreateServiceA
函數創建一個名爲Malservice
的服務,因此可以查看是否有服務被創建,運行後看到查詢服務後,可以看到一個名爲MalService
的服務,值是程序的路徑,如下
如何保持任意時刻的單個程序運行
根據上述的分析可以知道,程序在進入到sub_401040
後會判斷是否創建了互斥體HGL345
,如果存在就退出,否則就執行啓動後續的動作
程序運行後,使用ProcessExplore
查看對應的互斥量,如下
如何檢測程序運行後基於主機內的特徵
有兩個方式來查看基於主機的特徵,第一個就是查看對應的服務對象,根據創建時的參數可以知道,dwStartType=0x2
對應了SERVICE_AUTO_START
的值,因此程序會自己啓動,這是一個持久化的手段。
程序的目的是什麼
當程序創建完了服務之後,繼續往下就是先創建一個定時器,定時器的啓動時間是0x834
對應了十進制2100
年1月1日,通過函數SystemTimeToFileTime
轉爲一個FileTime
,之後調用CreateWaitableTimerA
函數創建一個定時器,然後通過SetWaitableTimer
來設置定時器,之後通過WaitForSingleObject
來等,這裏類似一直延時等待,最後來到程序的核心位置,創建了0x14 (20)
個線程,主要功能在StaratAddress
函數內執行,進入到函數內分析可以知道,主要對http://www.malwareanalysisbook.com
的網站發起訪問,並且函數會無限發起訪問這個網站。
創建20個線程
執行的任務
由此可以知道,安裝了這個程序的電腦會在2100/01/01
對完成發起DDOS攻擊,導致網站奔潰。
程序的完成時間
根據上述分析可以知道,程序不會停止,並且在timer到來之後,就創建20個線程會發起網絡攻擊。
總結
本次分析主要是對惡意軟件使用Windows Api
熟悉,包括線程,進程,服務,網絡等,增加更多對惡意軟件分析的敏感度。
IOCs
樣本hash
sha-256
0C98769E42B364711C478226EF199BFBBA90DB80175EB1B8CD565AA694C09852