發新話題
打印

[原創] EFix的運作方式

本主題由 upside 於 2008-8-20 09:13 置頂

EFix的運作方式

我想既然有人有在用的話就還是需要提一下

一般大部分都是用來應付像kavo那一類的毒
不過他功能其實沒那麼少。

EFix運作方式大致如下:

(以下圖表建議使用1024*768解析度觀看)

EFix執行後 ------> 先解壓縮 --------> 設定環境變數以及檢查解壓縮之後的檔案完整性
                            ||
                            ||
                            ||
                            ||
                            ||
                            ||
                            ||
                      檢查沒問題 || 檢查有問題
               =============||=============
               |                        |
             顯示使用前聲明                  程式結束執行
              是|  |否====================|
               |
               |
               |
               |建立檔案運作清單
                     |
                   備份登錄檔 (使用ERUNT)
                     |
                     |
       檢查是否有自定義腳本存在有就處理並增加到刪除清單內,沒有就繼續,有就先做分類整理
                     |
                     |
         特殊模式檢查 (檢查處理方式和一般不太一樣的檔案,此處隨時會變動)
                     |
                     |
                     |
         關閉執行中的所有程序 (此處只會留系統一定要運作的程式 (註1)
                     |
                     |
                     |
            檢查前面建立的刪除檔案清單中的檔案是否存在
               否|    |是
                |    |
                |    |---呼叫刪除批次程序
                |            |
                |         檔案是否被刪除
                |          是|  |否
                |           |  |
                |------------  -------使用
                |         Rename operations pending方式移除 (註2)
                |                           |
                |----------------------------
                |
   檢查前面建立的刪除登錄值清單中的登錄值是否存在,有就刪除,沒有就跳過
                |
                |
                |
   匯入修復一些被破壞的登錄值 (EX:隱藏檔無法顯示,安全模式無法登入)
                |
                |
                |
   前面是否有使用到Rename operations pending方式以及自定義腳本方式清除檔案
             有|             |沒有
              |             |
              |             |
              |             |
             重開機         產生執行報告並分析系統內登錄
              |          值以及一些系統檔案的檢查 (註3)
              |             |
              |             |
              |            執行完畢
              |
              |
 重開機後重新檢查刪除檔案清單內檔案是否存在,有就刪除,沒有跳過,如果還是刪除失敗則顯示至報告內
              |
              |
      重新匯入刪除登錄值的資料
              |
              |
      重新匯入修復被破壞的登錄檔
              |
              |
            產生掃描報告 (註3)
本帖最近評分記錄
  • upside 威望 +30 原創內容 2008-6-1 22:27
  • upside 黃金 +30 原創內容 2008-6-1 22:27

TOP

註解1:

基本上除了底下的檔案以外,其他的都會嘗試將他關閉(關不掉的就還是會留著)

NEFix\ktv.exe (這個是主程式,就是cmd.exe)
windows\system32\svchost.exe
windows\system32\winlogon.exe
windows\system32\csrss.exe
windows\system32\lsass.exe
windows\system32\smss.exe
windows\system32\services.exe

windows\system32\wininit.exe
windows\system32\lsm.exe
windows\system32\dwm.exe
上面這三個是vista用的系統程式


註解2:
Rename operations pending

這個是擱置檔案重新命名 (有點軟的網頁翻譯說的)

動作方式基本上是將要刪除的檔案寫入到一個登錄值,位置是在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
中的PendingFileRenameOperations字串值內

這個登錄值是在重開機後smss.exe會先去讀取這一段來判斷寫入到裡面的檔案要放置在何處
或者是直接刪除的

windows啟動時smss.exe是很早就先載入的,比winlogon.exe還要早,至於有沒有比驅動早我不清楚..好像有的樣子
利用這種特性來辦到在病毒還沒載入到系統前就刪除檔案的效果
目前也有病毒會用到這邊來混淆解毒者的分析,EX:pagefile.pif

註解3:
檢查的範圍有

1.近期一個月內在底下提到的資料夾中所產生的檔案,並顯示他的修改時間和檔案屬性
檢查的資料夾為:
%systemroot%\system32
%systemroot%\system32\wbem
%systemroot%\font
%systemroot%\java
%systemroot%\inf
%systemroot%\help
%systemroot%\debug
%systemroot%\ime
%systemroot%\Temp
%systemroot%
%systemdrive%

%systemroot%為windows資料夾
%systemdrive%為系統根目錄

2.除了系統用程式以外其他的執行程序

3.掛載在下列系統檔案中沒有任何公司或檔案資訊的檔案
檢查的系統檔案有
%systemroot%\system32\csrss.exe
%systemroot%\system32\lsass.exe
%systemroot%\system32\winlogon.exe
%systemroot%\Explorer.EXE
%systemroot%\system32\svchost.exe

4.hosts檔案

5.一些比較常被病毒寫入的登錄值檢查
位置有:
hklm\software\microsoft\internet explorer\main -> Local Page、Start Page、Search Page
hkcu\software\microsoft\internet explorer\main -> Local Page、Start Page、Search Page

hklm\software\microsoft\windows nt\currentversion\winlogon -> winlogon、Userinit、Shell、UIHost
hkcu\software\microsoft\windows nt\currentversion\windows -> load
hklm\software\microsoft\windows nt\currentversion\windows -> appinit_dlls

        HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
        HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
        HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
        HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
        HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run
        HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunOnce
        HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunServices
        HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
        HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

        hkey_local_machine\software\microsoft\windows\currentversion\explorer\sharedtaskscheduler
        hkey_local_machine\software\microsoft\windows\currentversion\explorer\shellexecutehooks
        hklm\software\microsoft\windows\currentversion\shellserviceobjectdelayload
        hklm\software\microsoft\windows\currentversion\explorer\browser helper objects
        hklm\software\microsoft\windows nt\currentversion\winlogon\notify
        hklm\software\microsoft\windows nt\currentversion\image file execution options (IFEO)
        hklm\software\microsoft\active setup\installed components

        hklm\software\classes\exefile\shell\open\command
        hklm\software\classes\txtfile\shell\open\command
        hklm\software\classes\exefile\shell\open\command
        hklm\software\classes\comfile\shell\open\command
        hklm\software\classes\piffile\shell\open\command
        hklm\software\classes\regfile\shell\open\command
        hklm\software\classes\batfile\shell\open\command
        hklm\software\classes\scrfile\shell\open\command
        hklm\software\classes\vbsfile\shell\open\command
        hklm\software\classes\jsfile\shell\open\command
        hklm\software\classes\lnkfile\shell\open\command

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager -> PendingFileRenameOperations

開始 -> 程式集 -> 啟動內的檔案以及對應到的檔案

驅動和服務登錄值

下列檔案的MD5檢查
explorer.exe
userinit.exe

下列檔案的數位簽章檢查
        system32\userinit.exe
        system32\winlogon.exe
        system32\services.exe
        windows\explorer.exe
        system32\drivers\vga.sys
        system32\drivers\beep.sys

Winsock LSP檢查

大致如上
但一些值如果是檢查是windows預設值的話就不會顯示出來..

TOP

EFix有幾個地方基本上是無差別處理

因為有部分地方除了病毒會寫入以外,沒有人會去動那邊的
所以有一些地方會用到無差別處理方式、就是會直接將登錄值寫回預設值

無差別處理的地方有

hklm\software\microsoft\windows nt\currentversion\winlogon -> userinit

這個值基本上只會有一種,就是c:\\windows\\system32\\userinit.exe,
c:隨系統磁碟而定

但因應有人對付機器狗初版的病毒是使用將windows\system32\userinit.exe換到其他位置,並在原本位置建立資料夾防範機器狗
所以EFix會先行判斷userinit.exe這個檔案是不是檔案,如果是的話才會檢查該段登錄值是否為預設值


hklm\software\microsoft\windows nt\currentversion\winlogon -> Shell

這個值預設為 explorer.exe,這一段比較沒那麼嚴重所以就沒有特別做檢查,但因為碰到近期新的機器狗會將正常檔案替換掉
並且在此登錄值加入替換掉的位置,所以這邊我還會在改


hkcu\software\microsoft\windows nt\currentversion\windows -> load

這個值基本上不會有任何東西存在,所以如果有碰到裡面有寫入任何資料的話都會清空

hklm\software\microsoft\windows\currentversion\explorer\shellexecutehooks
這一段機碼內的資料會先和白名單資料比對,比對完後剩下的會全部刪除

這一個地方會用到的只有兩種東西
一個是防毒一個是病毒、還有少量的一些像msn桌面搜尋那一類的
此處因為是和hkcr\clsid是相對應的,所以會將對應到的也一起刪除

上面是無差別處理的
再來是有條件處理的

有條件處理是指當滿足了一些條件之後會將其還原成預設值或刪除的

登錄位置如下:
hklm\software\microsoft\windows nt\currentversion\windows -> appinit_dlls

由於這一段登錄值有可能正常、也有可能有問題
所以會先做判斷才刪除
判斷方式:

如果那邊寫入超過5個以上的對應檔案
EX: appinit_dlls=fur1.dll,07krjv.dll,12dssdf.dll,kropogud.dll,toopejkv.dll

像這樣有五個以上的時候就會將他還原成預設值
如果是像底下

EX:appinit_dlls=fur1.dll,07krjv.dll
這樣的話就不會還原
這是因應前一陣子會在此登錄值寫入超過255個dll檔案的病毒

再來如果在shellexecutehooks登錄值有對應到的dll登錄值同時出現在appinit_dlls登錄值上的話
也會將appinit_dlls還原
這是對應到前一陣子有病毒喜歡到處亂插dll檔案的方式

還有如果appinit_dlls中有mso字樣的dll檔案的話
EX:msosmhfp00.dll
也會將appinit_dlls還原

再來是在個run啟動登錄值中
會將有一些假裝成正常檔案檔名的登錄值刪除掉
EX:
winlogon.exe
userinit.exe
explorer.exe
svchost.exe

因為那邊不會出現這種名稱的檔案...

以上是有條件刪除或還原的地方,這邊要仔細看一下

TOP

自定義腳本刪除方式

使用時機:
這個是因應現在病毒種類那麼多種,其中如果碰到EFix沒有刪除的檔案或登錄值時
可以使用自己定義腳本的方式讓EFix去刪除。
一般來說專殺都會有這樣的功能,但會用到利用記事本記錄資訊後來刪除的方式
應該只有EFix (國內來說啦)

好處是不用拆解本體後在打包,增加安全性
並且使用方便,如果有碰到大量流行的病毒我沒時間加的話可以先使用腳本方式清除
就只要腳本加一個主程式就可以了,不用解釋軟體怎麼操作解釋半天。

使用方式:
將固定格式的腳本內容輸入至記事本內
然後存檔,將檔案名稱取名為ESCRIPT.TXT (大小寫不拘)後
將儲存的ESCRIPT文字檔圖示拖曳到EFix主程式圖示上即可。
剩下的和直接執行時一樣。

注意:要使用ansi格式

腳本格式:
EFix有四種使用的格式
使用限制和格式於底下描述


1. Driver::

如果你是要刪除驅動、服務項目的話
腳本格式使用就如下:

Driver:: (大小寫不拘,但D前面不能有空白,::後面也不能有東西)
123456

上面例子會將服務 /驅動項名稱為123456的值刪除掉

至於服務名稱怎麼看?
EFix的報告裡面有一項是 驅動 / 服務項 顯示如下:
S4  AntiVirMailService;AntiVir PersonalEdition Premium MailGuard;檔案名稱屬性

這邊看到的紅色字樣就是服務名稱,而藍色部分所顯示的是服務描述

如果是SRENG這邊看的話則是
[AntiVir PersonalEdition Premium MailGuard / AntiVirMailService][Stopped/Disabled]
這樣應該就可以知道怎麼樣去看服務驅動名稱了

2.File::
如果你是要刪除檔案,腳本使用格式如下:

File:: (大小寫不拘、F前面不能有空白、::後面不能有東西)
c:\windows\123.exe
c:\program files\345.exe
c:\kill5566.exe
d:\i hate kav.com

這邊的話就是你要刪除的檔案路徑和名稱打上去就可以
但有限制

首先不支援萬用字元以及變數名稱
EX:
File::
c:\windows\123.exe
%systemroot%\456.exe
c:\windows\???.exe
c:\program files\*.exe

這樣在處理時碰到%systemroot%\456.exe和c:\windows\???.exe以及c:\program files\*.exe時會自動跳過,但是會顯示刪除該檔案。
這一點我會在修正

再來是不用雙引號
EX:
File::
"c:\program files\123 456.exe"
上面的引號不用

然後是盡量避免刪除特殊字元
EX:
File::
c:\[^$#.exe

因為EFix是運作在cmd模式下的,所以如果碰到特殊字元時有可能會有不可預期的後果,盡量避免

再來就是沒事別亂用、這邊顯示的檔案除非有特別保護,不然都刪的掉
如果你將系統檔也列到裡面的話一樣會刪...
ex:
File::
c:\windows\system32\services.exe

前面有提到EFix會使用pending的方式刪除檔案
此方式優先權很高,所以不管是什麼系統檔放在這裡面都會被刪除...
雖然我有設安全清單,但還是會有危險請注意。

3.Registry::
如果是要刪除登錄值,則使用下列格式:
registry:: (大小寫不拘、r前面不能有空白、::後面不能有東西)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"avgnt"=-
[-HKEY_LOCAL_MACHINE\EFix]
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\system32\\userinit.exe,"

這邊是刪除登錄值的格式,其實這個格式就是當你開啟登錄編輯器之後按匯出之後的格式

如果你是要刪除字串值像HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run機碼底下的字串值avgnt時
就用
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"avgnt"=-
如果你是要刪除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run整段機碼的話
就是用
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

-號就是刪除的意思,而如果是要改登錄值的話
像上面userinit那邊
就是
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\system32\\userinit.exe,"

假設要改成explorer.exe
就是
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\explorer.exe,"

注意到上面、如果是要修改檔案路徑和名稱時,有碰到\的地方要用兩個\\,這是因為正則表示法的關係
正則表示法請參閱linux使用手冊

而使用registry的限制是該登錄值不能超過一行
EX:
registry::
[HKEY_LOCAL_MACHINE\software\EFix]
"test"=hex(2):00,01,02,03,04,05,06 \\
07,08,09,0A

這樣EFix只會匯入"test"=hex(2):00,01,02,03,04,05,06 \\這一行,下面那一行就自動去掉...這是BUG目前沒技術修,以後技術到家了在處理


4.winsock::
如果你要還原winsock的話
就在腳本內容輸入下列格式
winsock:: (w前面不能有空白、::後面不能有東西)

這樣就可以回復預設值
但也有限制

此指令限定於windows xp sp2以上才有用...如果是sp1或者是win2000的話會提示你要下載winsockfix修正。

大致上使用就是這樣

[ 本帖最後由 sylovanas 於 2008-6-1 18:47 編輯 ]

TOP

有關efix清除程式

您好
我是efix清除程式的愛用者

很多病毒會更改機碼
使"我的電腦"的"資料夾選項"中
不能開啟"顯示所有檔案"選項
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\
更改裡面的checked value
這樣點選顯示所有檔案也無效
我記得efix會還原

但是也不少病毒也會把"資料夾選項"中的"隱藏保護的系統檔案"隱藏
他是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden
下的二進位值"Type" ,
預設是checkbox
但有些病毒會改成radio和checkbox2
這樣"隱藏保護的系統檔案"就無法顯示

請問您可以在efix程式中 加入修正的動作嗎?

謝謝

TOP

回復 5# 的帖子

了解了

下一版我會將這一段加上去

感謝您提供資料

TOP

嗯.....這邊有一些更新所以加點說明

腳本部分新增加了
Filelook::

使用方式:
EX:
Filelook::
c:\windows\system32\drivers\klif.sys

這樣跑出來的報告裡面會增加報告如下:

Look File::

c:\windows\system32\drivers\klif.sys <Kaspersky Lab>
--a------ 2008/08/19 下午 05:40 187920
CRC32: 61ED28AD
MD5: 48C2BB1A6570D7F076DC3A654ABBF33D
Sigcheck -- OK
.

簡單說就是會檢查腳本內指定檔案的一些檔案資訊
像是 MD5 CRC32 以及數位簽章和該檔案建立公司資訊,以及檔案修改日期時間和檔案屬性大小
這樣對於一些被覆蓋的系統檔案來說可以做到檢查的效果

再來是刪除檔案部分
原本是使用pending rename operation的方式刪除檔案
現在改用catchme先破壞檔案後在刪除

所以刪除檔案能力基本上就更往上...請勿隨意使用

大致上是這些,其他的一些新增的東西.....從4.5到4.7多了很多就不在描述了,基本上有看到看的懂的人就知道了。

[ 本帖最後由 sylovanas 於 2008-8-19 17:59 編輯 ]

TOP

發新話題