映像劫持分析

所謂的IFEO就是Image File Execution Options,在是位於註冊表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options。

基本介紹

  • 中文名:映像劫持分析
  • 外文名:IFEO
  • 全稱:Image File Execution Options
  • 位於:註冊表
技術分析,防範方法,基礎判斷方法,追查劫持來源,解除映像劫持,

技術分析

奇怪的中毒現象
在辦公室的一台電腦上折騰半個小時後,電腦部的工程師只覺得眼皮不停狂跳,因為從剛開始接手這個任務開始,他就一直在做無用功:他隨身帶的隨身碟里引以為豪的眾多維護工具包在這台機器上全軍覆沒,無論他直接在隨身碟上運行還是隨便複製到哪個目錄里,系統都是報告“找不到檔案”或者直接沒有運行起來的反應,他第一次感受到了恐懼,檔案分明就好好的在眼皮底下,可它們就是“找不到”或死活不肯執行,莫非是在這台機器上被病毒破壞了?他只好打開網頁嘗試重新下載,但是他很快就絕望了,剛下載的查殺工具同樣也不能使用。
無奈之下他只好在眾多文員的期待下說出了:“系統檔案嚴重損壞了,沒法修了,只能重裝。”
裝完系統和常用辦公軟體後,他像一個賊似的趕緊離開了辦公室,生怕多呆一會兒就會惹來什麼麻煩似的,而他卻不知道,“麻煩”早已在他剛才使用的隨身碟上安家了。回到自己的電腦前,他剛右鍵點擊隨身碟,就看見滑鼠忙碌的狀態比平時久了點,然後托盤區裡的防毒軟體網路防火牆都消失了,他心裡一慌張,趕緊運行超級巡警,系統卻報告“找不到檔案”,他一下子呆在了電腦前:瘟神跟上門來了……
古語云:道高一尺,魔高一丈。這句經典哲理在網路上得到了迅速的延伸套用。今年初,一種早已有之的系統調試功能被套用到病毒技術上,從而搖身一變成為惡魔的代言人,普通用戶很快就面臨了一場莫名其妙的病毒災難,這就是“映像劫持”。
我本將心向明月,奈何明月照
“映像劫持”,也被稱為“IFEO”(Image File Execution Options,其實應該稱為“Image Hijack”,至少也應該稱為IFEO Hijack而不是只有“IFEO”自身!),它的存在自然有它的理由,在WindowsNT架構的系統里,IFEO的本意是為一些在默認系統環境中運行時可能引發錯誤的程式執行體提供特殊的環境設定,系統廠商之所以會這么做,是有一定歷史原因的,在Windows NT時代,系統使用一種早期的堆疊Heap,由應用程式管理的記憶體區域)管理機制,使得一些程式的運行機制與現在的不同,而後隨著系統更新換代,廠商修改了系統的堆疊管理機制,通過引入動態記憶體分配方案,讓程式對記憶體的占用更為減少,在安全上也保護程式不容易被溢出,但是這些改動卻導致了一些程式從此再也無法運作,為了兼顧這些出問題的程式,微軟以“從長計議”的態度專門設計了“IFEO”技術,它的原意根本不是“劫持”,而是“映像檔案執行參數”!
IFEO 設定了一些與堆疊分配有關的參數,當一個可執行程式位於IFEO的控制中時,它的記憶體分配則根據該程式的參數來設定,那么如何使一個可執行程式位於IFEO 的控制中呢?答案很簡單,Windows NT架構的系統為用戶預留了一個互動接口,位於註冊表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”內,使用與可執行程式檔案名匹配的項目作為程式載入時的控制依據,最終得以設定一個程式的堆疊管理機制和一些輔助機制等,大概微軟考慮到加入路徑控制會造成判斷麻煩與操作不靈活的後果,也容易導致註冊表冗餘,於是IFEO使用忽略路徑的方式來匹配它所要控制的程式檔案名稱,例如IFEO指定了對一個名為“AAA.EXE”的可執行程式檔案進行控制,那么無論它在哪個目錄下,只要它名字還叫“AAA.EXE”,它就只能在IFEO的五指山里打滾了。
說了半天都只是純粹的概念,那么IFEO到底是怎么樣發揮作用的呢?例如有一個程式檔案名稱為“lk007.exe”,由於使用了舊的堆疊管理機制,它在新系統里無法正常運行甚至出現非法操作,為了讓系統為其提供舊的堆疊管理機制,我們需要IFEO來介入,則需執行以下步驟:
1. 確保在管理員狀態下執行regedit.exe,定位到以下註冊表項
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
2. 在“Image File Execution Options”下建立一個子鍵,名為“lk007.exe”,不區分大小寫。現在確保位於HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lk007.exe\下,建立一個字元串類型的註冊表項,名為“DisableHeapLookAside”,值為“1”
3. 再次運行lk007.exe查看運行情況,如果真的是由於堆疊管理機制引發的問題,則程式得以正常運行,否則該程式問題不屬於IFEO能夠干涉的範圍,或者需要嘗試搭配其他的參數使用。
目前已知的IFEO參數有:
ApplicationGoo
Debugger
PageHeapFlags
DisableHeapLookAside
DebugProcessHeapOnly
PageHeapSizeRangeStart
PageHeapSizeRangeEnd
PageHeapRandomProbability
PageHeapDllRangeStart
PageHeapDllRangeEnd
GlobalFlag
BreakOnDllLoad
ShutdownFlags
說白了,IFEO本質是系統廠商為某些可能以早期設計模式運行的軟體提供一種保全措施而設計出來的產物,並對其加以擴充形成了一套可用於調試程式的簡易方案,如“BreakOnDllLoad”參數可設定在載入某個DLL時設定斷點,便於程式設計師調試ISAPI接口;帶有“Range”字樣的幾個參數則用於限制堆的大小等。
而裡面有一個導致了今天這種局面的參數:Debugger。或許微軟當初的用意是便於程式設計師能夠通過雙擊某個設定了IFEO控制列表的執行體檔案來直接調用調試器對其進行調試,而不用再通過繁瑣的打開調試器再進行檔案載入來實現調試,提高了工作效率。
為了使得IFEO能夠影響到任何一個程式啟動請求,NT架構中將IFEO的優先權設定得很高,基本上,當用戶要求執行某個程式時,系統首先判斷該程式檔案是否可執行體,然後就到IFEO的入口項進行檔案名稱配對了,直到通過IFEO這一步後,進程才真正開始申請記憶體創建起來。
如果系統在IFEO程式列表里匹配了當前運行的檔案名稱,它就會讀取檔案名稱下的參數,這些參數在未被人為設定之前均有個默認值,而且它們也具備優先權,“Debugger”的優先權是最高的,所以它是第一個被讀取的參數,如果該參數未被設定,則默認不作處理,如果設定了這個參數,情況就變得複雜了……
罪魁禍首“Debugger”
前面大家應該都了解IFEO的本質了,從實際現象來說,把IFEO直接稱為“映像劫持”未免有點冤枉它了,因為裡面大部分參數並不會導致今天這種局面的發生,惹禍的參數只有一個,那就是“Debugger”,將IFEO視為映像劫持,大概是因為國內一些人直接套用了“Image File Execution Options”的縮寫罷,在相對規範的來自Sysinternals的專業術語裡,利用這個技術的設計漏洞進行非法活動的行為應該被稱為“Image Hijack”,這才是真正字面上的“映像劫持”!
Debugger參數,直接翻譯為“調試器”,它是IFEO里第一個被處理的參數,其作用是屬於比較匪夷所思的,系統如果發現某個程式檔案在IFEO列表中,它就會首先來讀取Debugger參數,如果該參數不為空,系統則會把Debugger參數裡指定的程式檔案名稱作為用戶試圖啟動的程式執行請求來處理,而僅僅把用戶試圖啟動的程式作為Debugger參數裡指定的程式檔案名稱的參數傳送過去!光是這個概念大概就足夠一部分人無法理解了,所以我們放簡單點說,例如有兩個客人在一起吃自助餐,其中一個客人(用戶)委託另一個客人(系統)去拿食物時順便幫自己帶點食物回來(啟動程式的請求),可是系統在幫用戶裝了一盤子食物並打算回來時卻發現另一桌上有個客人(Debugger參數指定的程式檔案)居然是自己國小里的暗戀對象!於是系統直接端著原本要拿給用戶的食物放到那桌客人那裡共同回憶往事去了(將啟動程式請求的執行檔案映像名和最初參數組合轉換成新的命令行參數……),最終吃到食物的自然就是Debugger客人(獲得命令行參數),至此系統就忙著執行Debugger客人的啟動程式請求而把發出最初始啟動程式請求的用戶和那盤食物(都送給Debugger客人做命令行參數了)給遺忘了。
在系統執行的邏輯里,這就意味著,當一個設定了 IFEO項Debugger參數指定為“notepad.exe”的“iexplore.exe”被用戶以命令行參數“-nohome bbs.nettf.nxet”請求執行時,系統實際上到了IFEO那裡就跑去執行notepad.exe了,而原來收到的執行請求的檔案名稱和參數則被轉化為整個命令行參數“C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.nxet”來提交給notepad.exe執行,所以最終執行的是“notepad.exe C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.nxet”,即用戶原來要執行的程式檔案名稱iexplore.exe被替換為notepad.exe,而原來的整串命令行加上 iexplore.exe自身,都被作為新的命令行參數傳送到notepad.exe去執行了,所以用戶最終看到的是記事本的界面,並可能出現兩種情況,一是記事本把整個iexplore.exe都作為文本讀了出來,二是記事本彈出錯誤信息報告“檔案名稱不正確”,這取決於iexplore.exe原來是作為光桿司令狀態請求執行(無附帶運行命令行參數)的還是帶命令行參數執行的。
Debugger參數存在的本意是為了讓程式設計師能夠通過雙擊程式檔案直接進入調試器里調試自己的程式,曾經調試過程式的朋友也許會有一個疑問,既然程式啟動時都要經過IFEO這一步,那么在調試器里點擊啟動剛被 Debugger參數送進來的程式時豈不是又會因為這個法則的存在而導致再次產生一個調試器進程?微軟並不是傻子,他們理所當然的考慮到了這一點,因此一個程式啟動時是否會調用到IFEO規則取決於它是否“從命令行調用”的,那么“從命令行調用”該怎么理解呢?例如我們在命令提示符里執行 taskmgr.exe,這就是一個典型的“從命令行調用”的執行請求,而我們在點擊桌面上、普通應用程式選單里的taskmgr.exe時,系統都會將其視為由外殼程式Explorer.exe傳遞過來的執行請求,這樣一來,它也屬於“從命令行調用”的範圍而觸發IFEO規則了。為了與用戶操作區分開來,系統自身載入的程式、調試器里啟動的程式,它們就不屬於“從命令行調用”的範圍,從而繞開了IFEO,避免了這個載入過程無休止的循環下去。
從編程角度來說明“命令行調用”,那就是取決於啟動程式時CreateProcess是使用lpCommandLine(命令行)還是 lpApplicationName(程式檔案名稱)來執行,默認情況下大部分程式設計師編寫的調用習慣是lpCommandLine——命令行調用
BOOL CreateProcess
(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes。
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
由於Debugger參數的這種特殊作用,它又被稱為“重定向”(Redirection),而利用它進行的攻擊,又被稱為“重定向劫持” (Redirection Hijack),它和“映像劫持”(Image Hijack,或IFEO Hijack)只是稱呼不同,實際上都是一樣的技術手段。
講解完Debugger參數的作用,現在我們來看看“映像劫持”到底是怎么一回事,遭遇流行“映像劫持”病毒的系統表現為常見的防毒軟體防火牆、安全檢測工具等均提示“找不到檔案”或執行了沒有反應,於是大部分用戶只能去重灌系統了,但是有經驗或者歪打正著的用戶將這個程式改了個名字,就發現它又能正常運行了,這是為什麼?答案就是IFEO被人為設定了針對這些流行工具的執行檔名的列表了,而且Debugger參數指向不存在的檔案甚至病毒本身!
超級巡警的主要執行檔案AST.exe為例,首先,有個檔案名稱為kkk.exe 的惡意程式向IFEO列表里寫入AST.exe項,並設定其Debugger指向kkk.exe,於是系統就會認為kkk.exe是AST.exe的調試器,這樣每次用戶點擊執行AST.exe時,系統執行的實際上是作為調試器身份的kkk.exe,至於本該被執行的AST.exe,此刻只能被當作 kkk.exe的執行參數來傳遞而已,而由於kkk.exe不是調試器性質的程式,甚至惡意程式作者都沒有編寫執行參數的處理代碼,所以被啟動的永遠只有 kkk.exe自己一個,用戶每次點擊那些“打不開”的安全工具,實際上就等於又執行了一次惡意程式本體!這個招數被廣大使用“映像劫持”技術的惡意軟體所青睞,隨著OSO這款超級隨身碟病毒與AV終結者(隨機數病毒、8位字母病毒)這兩個滅殺了大部分流行安全工具和防毒軟體的惡意程式肆虐網路以後,一時之間全國上下人心惶惶,其實它們最大改進的技術核心就是利用IFEO把自己設定為各種流行安全工具的調試器罷了,破解之道尤其簡單,只需要將安全工具的執行檔案隨便改個名字,而這個安全工具又不在乎互斥量的存在,那么它就能正常運行了,除非你運氣太好又改到另一個也處於黑名單內的檔案名稱去了,例如把 AST.exe改為IceSword.exe。
小知識:互斥量
為了預防用戶簡單的更改一個檔案名稱就使得大部分安全工具破籠而出,一些木馬還同時採用了一種被稱為“互斥量”的技術來徹底阻止安全工具運行。在系統里,有一類特殊的系統對象被稱為“互斥量”(Mutex),它們的存在是為了減少系統開銷而設,例如一些工具在運行時會檢測是否已經有另一個自己的副本在運行,要做這種檢測最有效率的方法就是在第一次運行時創建一個互斥量,以後再運行時檢測即可,這實際上是很簡單的方法,因為系統會為我們保存已經創建的互斥量,直到程式請求銷毀互斥量,否則它將一直存在。這樣一來,問題又出現了,如果惡意程式掌握了一些安全工具的互斥量並偽造呢?這些安全工具就會因為檢測到“自身已經運行”而放棄繼續執行的權利,惡意程式就沒有剋星了。
而那些雙擊時明明程式檔案就在眼前,系統卻報錯說“找不到檔案”,又是什麼回事呢?這也是IFEO的另一種套用罷了,其秘訣是將Debugger參數指向一個不存在的檔案位置,這樣系統就會因為找不到這個調試器而無法順利執行下去,如果系統老老實實報出“找不到調試器”的錯誤提示那倒還好了,但就不知道微軟是出於對IFEO這個東西存在的事實掩蓋還是什麼苦衷,卻死活不肯承認是Debugger指向的調試器不存在導致的錯誤,而是把已經被“變異”成為命令行參數無法進入系統創建進程機制的原執行請求作為“找不到的檔案”給報了回去,於是未曾了解過IFEO的用戶只能莫名其妙的看著眼前就存在而系統“不承認” 的安全工具發愣了。

防範方法

怎樣防範“映像劫持”
好了,前面說了這么多,大概又嚇得一批人開始冒冷汗了吧,我們現在就來學習如何防範和破解“映像劫持”。

基礎判斷方法

判斷你的機器是否被劫持
最簡單的方法是逐個運行你常用的安全工具,檢查是否出現“無法找到檔案”或者乾脆直接沒了反應的,當然,執行結果和預期差別太大的也要被懷疑為劫持,例如你執行IceSword.exe反而是你的QQ運行了,那就不必我多說了。
其實只要註冊表編輯器regedit.exe、regedt32.exe沒有被劫持,那我們直接用它進入“HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”這個註冊表項並展開裡面的子項列表一個個看下來確認是否出現Debugger參數或其他可能影響程式運行的堆管理參數,便可得知機器是否被劫持。
如果註冊表編輯器被劫持了怎么辦?直接改個名就能用了啊……
更簡單的方法,是使用Sysinternals的Autoruns,點擊它的“Image Hijacks”選項卡,即可看到被劫持的程式項了。

追查劫持來源

如果不幸你的機器上已經成為“映像劫持”的受害者,請記錄好Debugger指向的程式位置,也不要試圖再執行那些安全工具,首先應該嘗試刪除受影響的 IFEO項,然後刷新註冊表看看數據是否馬上恢復了,如果馬上恢復,則說明後台里有程式正在實時判斷和寫入IFEO,這時候必須拿出 Sysinternals出品的註冊表監控工具Regmon或類似工具,設定Filter為你正在嘗試刪除的安全工具的IFEO項,很快就能發現具體是什麼進程在操作註冊表了,然後將IceSword改名(如果已經被劫持),在它的進程列表里將相應進程終止掉。如果這個進程立即又重生了呢?再終止一次,然後迅速點擊IceSword的“監視進執行緒創建”,你就能發現上一次搗亂的程式是什麼名字了,將它記錄下來,再開啟一個Sysinternals的工具 “Process Explorer”,在對應進程上點擊右鍵選擇“Suspend”,這個進程就會被掛起,用IceSword和它配合把相關惡意進程都掛起後,再使用 IceSword的檔案功能里的“強制刪除”,在這個程式還沒來得及反應時就把它們的本體給殲滅,這時候再返回Process Explorer里按照大小排列從最大的一個守護進程開始Kill Process即可,由於沒有了映像檔案存在,它們意欲重新建立木馬帝國的賊心也就無法實現了。
如果查殺過程更為複雜的話,請自行參閱相關文章,這裡就不再贅述了。
如此實現“免疫”?不被推薦的做法
由於AV終結者搞得人心惶惶,一時間網路上開始流傳“免疫映像劫持”甚至“利用映像劫持免疫大部分常見病毒”的做法,對於這些方法的最初提供者,我相信他們的出發點是好的,只是,從嚴格的角度來看,這卻是不可取的。
首先是“免疫映像劫持”,具體的方法是,例如免疫威金病毒“logo_1.exe”,則在IFEO列表里建立一個“logo_1.exe”項,然後設定它的 Debugger參數為它自身即“logo_1.exe”,根據原作者解釋,其原理是遞歸死循環:“當Debugger的值等於本身時,就是調用自身來調試自己,結果自己不是調試器,又來一次,遞歸了,就進入了死循環,也就不能啟動了。”
這種方法雖然有效(最後的現象是“找不到檔案”),但是它會導致系統在短時間內陷入一個CreateProcess循環和命令參數的字元串累加狀態,會消耗一定的資源,最終沒能執行程式是因為系統使用 CreateProcess啟動的實例會被它自身代替執行,從而造成死循環,而且命令行的長度是有系統限制的,到一定範圍就會出錯了,尤其在可以接受命令行參數的程式里,你甚至會發現硬碟狂轉了好一會兒才彈出錯誤提示,這段時間裡就是在死循環傳遞狀態了,最終由於超過系統限制的命令行長度而導致系統傳遞執行請求時出錯,才得以跳出這個死循環,換一個角度來看,如果系統沒有限制命令行長度,那么這個操作很可能直接導致系統所有資源都消耗在這個自己反覆執行自己的“調試器”上了。
至於“利用映像劫持免疫大部分常見病毒”的做法,發起號召者模仿“映像劫持”後門禁止大部分常用安全工具的原理,蒐集了許多流行危害程式的執行檔名加以前面提到的遞歸死循環方法達到目的,如果不計較前面提到的遞歸死循環缺點,似乎這個方法是可行的。
然而這真的可行嗎?世界上存在許多與某些系統檔案同名同姓的社交型後門,如位置不同而名字相同的命令提示符輸入法控制程式“conime.exe”(被 OSO超級隨身碟病毒借用名字)、重要程式Rundll32.exe被某些木馬替換為自身、甚至IE瀏覽器主體iexplore.exe也存在被木馬偽造檔案名稱的案例,如此一來不知道多少正常的系統程式可能會被這份“免疫列表”給誤殺了,我僅僅粗略瀏覽了一下就發現msiexec.exe居然存在“免疫列表”中,要知道這可是微軟安裝程式的主執行體啊……
爭議話題:是否禁止IFEO列表許可權?
同時,網上還流傳著一個讓初級用戶看不懂的做法,那就是關閉IFEO列表的寫入許可權,具體操作如下:
?執行32位註冊表編輯器regedt32.exe
?定位到HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
?確保焦點在Image File Execution Options上,選擇“安全”—“許可權”
?將出現的用戶列表內所有帶有“寫入”的許可權去掉,確定退出
這樣一來,任何對IFEO的寫入操作都失效了,也就起了免疫效果。這個方法對一般用戶而言還是不錯的,除非遭遇到一些特殊的需要往裡面寫入堆管理參數的程式,否則我建議一般用戶還是禁止此項,從而杜絕一切IFEO類病毒來襲。
而爭議正在於此,因為從長計議來看,用戶很可能會遇到需要往IFEO列表里寫入數據的正常程式,徹底禁止了IFEO的寫入可能會導致不可預見的後果,既然如此,我們就採取折中的方法好了,使用HIPS(主機入侵防禦系統)的註冊表防禦體系RD(Registry Defend),為我們提供一種兩者都能兼顧的IFEO管理方法!
以SSM為例,首先確保RD體系模組已經開啟,然後添加新監視規則,“鍵路徑” 指向HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,“操作”為“當更改時報警”,記得“包含值”選上,最後把“子鍵深度最大值”設為“3”,點擊確定生成新的監視規則,然後在“規則”主界面里確保“存取”、“刪除”、“寫入”的操作均為疑問狀態,這是表示在相關鍵值被進行寫入操作時彈出訊息詢問用戶,最後點擊“套用設定”讓規則生效,從此只需開著SSM,映像劫持就離你遠去了。

解除映像劫持

把以上代碼貼上到記事本,保存為 "任意檔案名稱.bat",即可查看、禁止和解除被映像劫持不能運行的程式
:: 本工具可查看、禁止和解除被映像劫持不能運行的程式。
:: 很多木馬病毒等會用映像劫持技術來禁止安全軟體運行,當然你也可用它來禁止木馬病毒運行。
@echo off
title 映像劫持查看、解除和禁止程式運行。
:start
cls
rd /s /q "%temp%\ifeo" 1>nul 2>nul
md "%temp%\ifeo" 1>nul 2>nul
set adir=%temp%\ifeo
set route=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
echo 正在讀取已被禁止運行的程式列表
reg query "%route%" 2>nul >%adir%\1.txt
for /F "usebackq tokens=7 delims=\" %%i in (%adir%\1.txt) do @echo %%i >>%adir%\2.txt
findstr "[.]" %adir%\2.txt 2>nul > %adir%\3.txt
for /F %%i in (%adir%\3.txt) do (
reg query "%route%\%%i" /v Debugger 2>nul 1>nul && echo %%i >>%adir%\list.txt
)
del /q /f %adir%\?.txt
:input
cls
echo 已被禁止運行的程式列表
echo -------------------------------------------
IF EXIST %adir%\list.txt (type %adir%\list.txt) else (echo 無映像劫持項)
echo -------------------------------------------
echo.
echo 輸入 程式名稱(如 qq.exe),如果程式已禁止則會解除禁止
echo 輸入 a 則刪除全部的禁止項目
echo 輸入 d 則刪除劫持項(不推薦)
echo 輸入 b 則批量禁止(先在當前目錄建立 list.txt 檔案,每行一個名稱)
echo 輸入 x 則退出本工具
echo.
set name=
set /p name=請輸入:
if /I "%name%" == "" goto input
if /I "%name%" == "a" goto 3
if /I "%name%" == "d" goto 4
if /I "%name%" == "b" goto 5
if /I "%name%" == "x" goto end
echo 已輸入:%name% | findstr "[.]" || (echo 輸入錯誤 & pause >nul & goto input)
findstr "%name%" %adir%\list.txt 2>nul 1>nul
if not %ERRORLEVEL% == 1 goto 2
:1
reg add "%route%\%name%" /v "Debugger" /t REG_SZ /d "ntsd -d # 劫持 %name% 禁止它運行" /f >nul 2>nul
echo.
echo 已禁止運行 %name%
echo.
pause
goto start
:2
reg delete "%route%\%name%" /f >nul 2>nul
echo.
echo 已解除禁止運行 %name%
echo.
pause
goto start
:3
for /F %%j in ('IF EXIST %adir%\list.txt type %adir%\list.txt') do (reg delete "%route%\%%j" /f 2>nul 1>nul)
echo.
echo 已解除所有禁止運行項
echo.
pause
goto start
:4
reg export "%route%" "%adir%\Image File Execution Options.reg" 2>nul 1>nul
copy /y "%adir%\Image File Execution Options.reg" "Image File Execution Options.reg" 2>nul 1>nul && echo. & echo 已備份到當前目錄,有問題時請恢復。
reg delete "%route%" /f >nul 2>nul
echo.
echo 已刪除整項
echo.
pause
goto start
:5
IF EXIST list.txt (
for /F %%j in (list.txt) do (reg add "%route%\%%j" /v "Debugger" /t REG_SZ /d "ntsd -d # 劫持 %name% 禁止它運行" /f >nul 2>nul)
echo.
echo 已禁止 list.txt 檔案中的所有項
) else (
echo 當前目錄無 list.txt 檔案
)
echo.
pause
goto start
:end
rd /s /q "%temp%\ifeo" 1>nul 2>nul
二 打開註冊表編輯器,定位到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\,把“ImageFileExecutionOptions”項刪除即可。
三 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options;
確保焦點在Image File Execution Options上,選擇“安全”—“許可權”; 將出現的用戶列表內所有帶有“寫入”的許可權去掉,確定退出。  俗話說:道高一尺,魔高一丈,當幾乎所有可能利用的啟動項都被安全工具翻了個遍以後,與安全對立的技術也就不得不往上提高一個檔次,於是無論什麼歪門邪道的招數,只要能夠被利用,哪怕它原意是好的,也會被改寫定義,從這次的映像劫持事件可以看出,這個系統遠遠不如我們想像中那么容易被掌握,尤其對普通用戶而言,這次技術的誤用簡直是他們的滅頂之災!在安全技術與反安全技術鬥爭激烈的今天,我們用戶越來越有在夾縫中生存的感覺了,當年輕鬆就可以得到的隨便開多少個網頁都不會帶來一個病毒的日子早已遠去,要想在這個瘋狂的世界裡得以保全,我們只能藉助於各種工具的守護,和學習更多本來可以不用接觸的安全知識,難道這真的要變成網際網路的生存法則嗎?

相關詞條

熱門詞條

聯絡我們