国产麻豆精品视频-国产麻豆精品免费视频-国产麻豆精品免费密入口-国产麻豆精品高清在线播放-国产麻豆精品hdvideoss-国产麻豆精品

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

解析映像劫持技術(shù)

發(fā)布時間:  2012/7/4 14:30:19
一. 詭異的中毒現(xiàn)象
  在成品檢驗科文員辦公室的一臺電腦上折騰半個小時后,計算機(jī)維護(hù)部門的技術(shù)員只覺得眼皮不停狂跳,因為從剛開始接手這個任務(wù)開始,他就一直在做無用功:他隨身帶的U盤里引以為豪的眾多維護(hù)工具包在這臺機(jī)器上全軍覆沒,無論他直接在U盤上運(yùn)行還是隨便復(fù)制到哪個目錄里,系統(tǒng)都是報告“找不到文件”或者直接沒有運(yùn)行起來的反應(yīng),他第一次感受到了恐懼,文件分明就好好的在眼皮底下,可它們就是“找不到”或死活不肯執(zhí)行,莫非是在這臺機(jī)器上被病毒破壞了?他只好打開網(wǎng)頁嘗試重新下載,但是他很快就絕望了,剛下載的查殺工具同樣也不能使用。
  無奈之下他只好在眾多文員的期待下說出了大部分號稱上門維護(hù)電腦的高手們常用的一句話,一般情況下這句話馬上能讓大部分用戶接受殘酷的現(xiàn)實(shí),允許其重裝系統(tǒng),并為這次重裝系統(tǒng)付出50元的價格,這句話就是:“系統(tǒng)文件嚴(yán)重?fù)p壞了,沒法修了,只能重裝。”
  裝完系統(tǒng)和常用辦公軟件后,他像一個賊似的趕緊離開了辦公室,生怕多呆一會兒就會惹來什么麻煩似的,而他卻不知道,“麻煩”早已在他剛才使用的U盤上安家了。回到自己的電腦前,他剛右鍵點(diǎn)擊U盤,就看見鼠標(biāo)忙碌的狀態(tài)比平時久了點(diǎn),然后托盤區(qū)里的殺毒軟件和網(wǎng)絡(luò)防火墻都消失了,他心里一慌張,趕緊運(yùn)行超級巡警,系統(tǒng)卻報告“找不到文件”,他一下子呆在了電腦前:瘟神跟上門來了……
  古語云:道高一尺,魔高一丈。這句經(jīng)典哲理在網(wǎng)絡(luò)上得到了迅速的延伸應(yīng)用。今年初,一種早已有之的系統(tǒng)調(diào)試功能被應(yīng)用到病毒技術(shù)上,從而搖身一變成為惡魔的代言人,普通用戶很快就面臨了一場莫名其妙的病毒災(zāi)難,這就是“映像劫持”。
  二. 我本將心向明月,奈何明月照……
  “映像劫持”,也被稱為“IFEO”(Image File Execution Options,其實(shí)應(yīng)該稱為“Image Hijack”,后面章節(jié)會詳細(xì)提到,至少也應(yīng)該稱為IFEO Hijack而不是只有“IFEO”自身!),它的存在自然有它的理由,在WindowsNT架構(gòu)的系統(tǒng)里,IFEO的本意是為一些在默認(rèn)系統(tǒng)環(huán)境中運(yùn)行時可能引發(fā)錯誤的程序執(zhí)行體提供特殊的環(huán)境設(shè)定,系統(tǒng)廠商之所以會這么做,是有一定歷史原因的,在Windows NT時代,系統(tǒng)使用一種早期的堆(Heap,由應(yīng)用程序管理的內(nèi)存區(qū)域)管理機(jī)制,使得一些程序的運(yùn)行機(jī)制與現(xiàn)在的不同,而后隨著系統(tǒng)更新?lián)Q代,廠商修改了系統(tǒng)的堆管理機(jī)制,通過引入動態(tài)內(nèi)存分配方案,讓程序?qū)?nèi)存的占用更為減少,在安全上也保護(hù)程序不容易被溢出,但是這些改動卻導(dǎo)致了一些程序從此再也無法運(yùn)作,為了兼顧這些出問題的程序,微軟以“從長計議”的態(tài)度專門設(shè)計了“IFEO”技術(shù),它的原意根本不是“劫持”,而是“映像文件執(zhí)行參數(shù)”!
  IFEO設(shè)定了一些與堆分配有關(guān)的參數(shù),當(dāng)一個可執(zhí)行程序位于IFEO的控制中時,它的內(nèi)存分配則根據(jù)該程序的參數(shù)來設(shè)定,那么如何使一個可執(zhí)行程序位于IFEO的控制中呢?答案很簡單,Windows NT架構(gòu)的系統(tǒng)為用戶預(yù)留了一個交互接口,位于注冊表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”內(nèi),使用與可執(zhí)行程序文件名匹配的項目作為程序載入時的控制依據(jù),最終得以設(shè)定一個程序的堆管理機(jī)制和一些輔助機(jī)制等,大概微軟考慮到加入路徑控制會造成判斷麻煩與操作不靈活的后果,也容易導(dǎo)致注冊表冗余,于是IFEO使用忽略路徑的方式來匹配它所要控制的程序文件名,例如IFEO指定了對一個名為“小金.EXE”的可執(zhí)行程序文件進(jìn)行控制,那么無論它在哪個目錄下,只要它名字還叫“小金.EXE”,它就只能在IFEO的五指山里打滾了。
  說了半天都只是純粹的概念,那么IFEO到底是怎么樣發(fā)揮作用的呢?例如有一個程序文件名為“lk007.exe”,由于使用了舊的堆管理機(jī)制,它在新系統(tǒng)里無法正常運(yùn)行甚至出現(xiàn)非法操作,為了讓系統(tǒng)為其提供舊的堆管理機(jī)制,我們需要IFEO來介入,則需執(zhí)行以下步驟:
  1. 確保在管理員狀態(tài)下執(zhí)行regedit.exe,定位到以下注冊表項:
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  2. 在“Image File Execution Options”下建立一個子鍵,名為“lk007.exe”,不區(qū)分大小寫。現(xiàn)在確保位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lk007.exe\下,建立一個字符串類型的注冊表項,名為“DisableHeapLookAside”,值為“1”
  3. 再次運(yùn)行l(wèi)k007.exe查看運(yùn)行情況,如果真的是由于堆管理機(jī)制引發(fā)的問題,則程序得以正常運(yùn)行,否則該程序問題不屬于IFEO能夠干涉的范圍,或者需要嘗試搭配其他的參數(shù)使用。
  目前已知的IFEO參數(shù)有:
  ApplicationGoo
  Debugger
  PageHeapFlags
  DisableHeapLookAside
  DebugProcessHeapOnly
  PageHeapSizeRangeStart
  PageHeapSizeRangeEnd
  PageHeapRandomProbability
  PageHeapDllRangeStart
  PageHeapDllRangeEnd
  GlobalFlag
  BreakOnDllLoad
  ShutdownFlags
  說白了,IFEO本質(zhì)是系統(tǒng)廠商為某些可能以早期設(shè)計模式運(yùn)行的軟件提供一種保全措施而設(shè)計出來的產(chǎn)物,并對其加以擴(kuò)充形成了一套可用于調(diào)試程序的簡易方案,如“BreakOnDllLoad”參數(shù)可設(shè)定在載入某個DLL時設(shè)置斷點(diǎn),便于程序員調(diào)試ISAPI接口;帶有“Range”字樣的幾個參數(shù)則用于限制堆的大小等。
  而里面有一個導(dǎo)致了今天這種局面的參數(shù):Debugger。或許微軟當(dāng)初的用意是便于程序員能夠通過雙擊某個設(shè)置了IFEO控制列表的執(zhí)行體文件來直接調(diào)用調(diào)試器對其進(jìn)行調(diào)試,而不用再通過繁瑣的打開調(diào)試器再進(jìn)行文件載入來實(shí)現(xiàn)調(diào)試,提高了工作效率。
  為了使得IFEO能夠影響到任何一個程序啟動請求,NT架構(gòu)中將IFEO的優(yōu)先權(quán)設(shè)置得很高,基本上,當(dāng)用戶要求執(zhí)行某個程序時,系統(tǒng)首先判斷該程序文件是否可執(zhí)行體,然后就到IFEO的入口項進(jìn)行文件名配對了,直到通過IFEO這一步后,進(jìn)程才真正開始申請內(nèi)存創(chuàng)建起來。
  如果系統(tǒng)在IFEO程序列表里匹配了當(dāng)前運(yùn)行的文件名,它就會讀取文件名下的參數(shù),這些參數(shù)在未被人為設(shè)置之前均有個默認(rèn)值,而且它們也具備優(yōu)先權(quán),“Debugger”的優(yōu)先權(quán)是最高的,所以它是第一個被讀取的參數(shù),如果該參數(shù)未被設(shè)置,則默認(rèn)不作處理,如果設(shè)置了這個參數(shù),情況就變得復(fù)雜了……
  三. 罪魁禍?zhǔn)?ldquo;Debugger”
  前面一章里大家應(yīng)該都了解IFEO的本質(zhì)了,從實(shí)際現(xiàn)象來說,把IFEO直接稱為“映像劫持”未免有點(diǎn)冤枉它了,因為里面大部分參數(shù)并不會導(dǎo)致今天這種局面的發(fā)生,惹禍的參數(shù)只有一個,那就是“Debugger”,將IFEO視為映像劫持,大概是因為國內(nèi)一些人直接套用了“Image File Execution Options”的縮寫罷,在相對規(guī)范的來自Sysinternals的專業(yè)術(shù)語里,利用這個技術(shù)的設(shè)計漏洞進(jìn)行非法活動的行為應(yīng)該被稱為“Image Hijack”,這才是真正字面上的“映像劫持”!
  Debugger參數(shù),直接翻譯為“調(diào)試器”,它是IFEO里第一個被處理的參數(shù),其作用是屬于比較匪夷所思的,系統(tǒng)如果發(fā)現(xiàn)某個程序文件在IFEO列表中,它就會首先來讀取Debugger參數(shù),如果該參數(shù)不為空,系統(tǒng)則會把Debugger參數(shù)里指定的程序文件名作為用戶試圖啟動的程序執(zhí)行請求來處理,而僅僅把用戶試圖啟動的程序作為Debugger參數(shù)里指定的程序文件名的參數(shù)發(fā)送過去!光是這個概念大概就足夠一部分人無法理解了,所以我們放簡單點(diǎn)說,例如有兩個客人在一起吃自助餐,其中一個客人(用戶)委托另一個客人(系統(tǒng))去拿食物時順便幫自己帶點(diǎn)食物回來(啟動程序的請求),可是系統(tǒng)在幫用戶裝了一盤子食物并打算回來時卻發(fā)現(xiàn)另一桌上有個客人(Debugger參數(shù)指定的程序文件)居然是自己小學(xué)里的暗戀對象!于是系統(tǒng)直接端著原本要拿給用戶的食物放到那桌客人那里共同回憶往事去了(將啟動程序請求的執(zhí)行文件映像名和最初參數(shù)組合轉(zhuǎn)換成新的命令行參數(shù)……),最終吃到食物的自然就是Debugger客人(獲得命令行參數(shù)),至此系統(tǒng)就忙著執(zhí)行Debugger客人的啟動程序請求而把發(fā)出最初始啟動程序請求的用戶和那盤食物(都送給Debugger客人做命令行參數(shù)了)給遺忘了。
  在系統(tǒng)執(zhí)行的邏輯里,這就意味著,當(dāng)一個設(shè)置了IFEO項Debugger參數(shù)指定為“notepad.exe”的“iexplore.exe”被用戶以命令行參數(shù)“-nohome bbs.nettf.net”請求執(zhí)行時,系統(tǒng)實(shí)際上到了IFEO那里就跑去執(zhí)行notepad.exe了,而原來收到的執(zhí)行請求的文件名和參數(shù)則被轉(zhuǎn)化為整個命令行參數(shù)“C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.net”來提交給notepad.exe執(zhí)行,所以最終執(zhí)行的是“notepad.exe C:\Program Files\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.net”,即用戶原來要執(zhí)行的程序文件名iexplore.exe被替換為notepad.exe,而原來的整串命令行加上iexplore.exe自身,都被作為新的命令行參數(shù)發(fā)送到notepad.exe去執(zhí)行了,所以用戶最終看到的是記事本的界面,并可能出現(xiàn)兩種情況,一是記事本把整個iexplore.exe都作為文本讀了出來,二是記事本彈出錯誤信息報告“文件名不正確”,這取決于iexplore.exe原來是作為光桿司令狀態(tài)請求執(zhí)行(無附帶運(yùn)行命令行參數(shù))的還是帶命令行參數(shù)執(zhí)行的。
  Debugger參數(shù)存在的本意是為了讓程序員能夠通過雙擊程序文件直接進(jìn)入調(diào)試器里調(diào)試自己的程序,曾經(jīng)調(diào)試過程序的朋友也許會有一個疑問,既然程序啟動時都要經(jīng)過IFEO這一步,那么在調(diào)試器里點(diǎn)擊啟動剛被Debugger參數(shù)送進(jìn)來的程序時豈不是又會因為這個法則的存在而導(dǎo)致再次產(chǎn)生一個調(diào)試器進(jìn)程?微軟并不是傻子,他們理所當(dāng)然的考慮到了這一點(diǎn),因此一個程序啟動時是否會調(diào)用到IFEO規(guī)則取決于它是否“從命令行調(diào)用”的,那么“從命令行調(diào)用”該怎么理解呢?例如我們在命令提示符里執(zhí)行taskmgr.exe,這就是一個典型的“從命令行調(diào)用”的執(zhí)行請求,而我們在點(diǎn)擊桌面上、普通應(yīng)用程序菜單里的taskmgr.exe時,系統(tǒng)都會將其視為由外殼程序Explorer.exe傳遞過來的執(zhí)行請求,這樣一來,它也屬于“從命令行調(diào)用”的范圍而觸發(fā)IFEO規(guī)則了。為了與用戶操作區(qū)分開來,系統(tǒng)自身加載的程序、調(diào)試器里啟動的程序,它們就不屬于“從命令行調(diào)用”的范圍,從而繞開了IFEO,避免了這個加載過程無休止的循環(huán)下去。
  從編程角度來說明“命令行調(diào)用”,那就是取決于啟動程序時CreateProcess是使用lpCommandLine(命令行)還是lpApplicationName(程序文件名)來執(zhí)行,默認(rèn)情況下大部分程序員編寫的調(diào)用習(xí)慣是lpCommandLine——命令行調(diào)用
  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參數(shù)的這種特殊作用,它又被稱為“重定向”(Redirection),而利用它進(jìn)行的攻擊,又被稱為“重定向劫持”(Redirection Hijack),它和“映像劫持”(Image Hijack,或IFEO Hijack)只是稱呼不同,實(shí)際上都是一樣的技術(shù)手段。
  講解完Debugger參數(shù)的作用,現(xiàn)在我們來看看“映像劫持”到底是怎么一回事,遭遇流行“映像劫持”病毒的系統(tǒng)表現(xiàn)為常見的殺毒軟件、防火墻、安全檢測工具等均提示“找不到文件”或執(zhí)行了沒有反應(yīng),于是大部分用戶只能去重裝系統(tǒng)了,但是有經(jīng)驗或者歪打正著的用戶將這個程序改了個名字,就發(fā)現(xiàn)它又能正常運(yùn)行了,這是為什么?答案就是IFEO被人為設(shè)置了針對這些流行工具的可執(zhí)行文件名的列表了,而且Debugger參數(shù)指向不存在的文件甚至病毒本身!
  以超級巡警的主要執(zhí)行文件AST.exe為例,首先,有個文件名為kkk.exe的惡意程序向IFEO列表里寫入AST.exe項,并設(shè)置其Debugger指向kkk.exe,于是系統(tǒng)就會認(rèn)為kkk.exe是AST.exe的調(diào)試器,這樣每次用戶點(diǎn)擊執(zhí)行AST.exe時,系統(tǒng)執(zhí)行的實(shí)際上是作為調(diào)試器身份的kkk.exe,至于本該被執(zhí)行的AST.exe,此刻只能被當(dāng)作kkk.exe的執(zhí)行參數(shù)來傳遞而已,而由于kkk.exe不是調(diào)試器性質(zhì)的程序,甚至惡意程序作者都沒有編寫執(zhí)行參數(shù)的處理代碼,所以被啟動的永遠(yuǎn)只有kkk.exe自己一個,用戶每次點(diǎn)擊那些“打不開”的安全工具,實(shí)際上就等于又執(zhí)行了一次惡意程序本體!這個招數(shù)被廣大使用“映像劫持”技術(shù)的惡意軟件所青睞,隨著OSO這款超級U盤病毒與AV終結(jié)者(隨機(jī)數(shù)病毒、8位字母病毒)這兩個滅殺了大部分流行安全工具和殺毒軟件的惡意程序肆虐網(wǎng)絡(luò)以后,一時之間全國上下人心惶惶,其實(shí)它們最大改進(jìn)的技術(shù)核心就是利用IFEO把自己設(shè)置為各種流行安全工具的調(diào)試器罷了,破解之道尤其簡單,只需要將安全工具的執(zhí)行文件隨便改個名字,而這個安全工具又不在乎互斥量的存在,那么它就能正常運(yùn)行了,除非你運(yùn)氣太好又改到另一個也處于黑名單內(nèi)的文件名去了,例如把AST.exe改為IceSword.exe。
  小知識:互斥量
  為了預(yù)防用戶簡單的更改一個文件名就使得大部分安全工具破籠而出,一些木馬還同時采用了一種被稱為“互斥量”的技術(shù)來徹底阻止安全工具運(yùn)行。在系統(tǒng)里,有一類特殊的系統(tǒng)對象被稱為“互斥量”(Mutex),它們的存在是為了減少系統(tǒng)開銷而設(shè),例如一些工具在運(yùn)行時會檢測是否已經(jīng)有另一個自己的副本在運(yùn)行,要做這種檢測最有效率的方法就是在第一次運(yùn)行時創(chuàng)建一個互斥量,以后再運(yùn)行時檢測即可,這實(shí)際上是很簡單的方法,因為系統(tǒng)會為我們保存已經(jīng)創(chuàng)建的互斥量,直到程序請求銷毀互斥量,否則它將一直存在。這樣一來,問題又出現(xiàn)了,如果惡意程序掌握了一些安全工具的互斥量并偽造呢?這些安全工具就會因為檢測到“自身已經(jīng)運(yùn)行”而放棄繼續(xù)執(zhí)行的權(quán)利,惡意程序就沒有克星了。
  而那些雙擊時明明程序文件就在眼前,系統(tǒng)卻報錯說“找不到文件”,又是什么回事呢?這也是IFEO的另一種應(yīng)用罷了,其秘訣是將Debugger參數(shù)指向一個不存在的文件位置,這樣系統(tǒng)就會因為找不到這個調(diào)試器而無法順利執(zhí)行下去,如果系統(tǒng)老老實(shí)實(shí)報出“找不到調(diào)試器”的錯誤提示那倒還好了,但就不知道微軟是出于對IFEO這個東西存在的事實(shí)掩蓋還是什么苦衷,卻死活不肯承認(rèn)是Debugger指向的調(diào)試器不存在導(dǎo)致的錯誤,而是把已經(jīng)被“變異”成為命令行參數(shù)無法進(jìn)入系統(tǒng)創(chuàng)建進(jìn)程機(jī)制的原執(zhí)行請求作為“找不到的文件”給報了回去,于是未曾了解過IFEO的用戶只能莫名其妙的看著眼前就存在而系統(tǒng)“不承認(rèn)”的安全工具發(fā)愣了。
  作者:小金 轉(zhuǎn)載請勿斬首,謝謝
  四. 防范“映像劫持”
  好了,前面說了這么多,大概又嚇得一批人開始冒冷汗了吧,我們現(xiàn)在就來學(xué)習(xí)如何防范和破解“映像劫持”。
  判斷你的機(jī)器是否被劫持
  最簡單的方法是逐個運(yùn)行你常用的安全工具,檢查是否出現(xiàn)“無法找到文件”或者干脆直接沒了反應(yīng)的,當(dāng)然,執(zhí)行結(jié)果和預(yù)期差別太大的也要被懷疑為劫持,例如你執(zhí)行IceSword.exe反而是你的QQ運(yùn)行了,那就不必我多說了。
  其實(shí)只要注冊表編輯器regedit.exe、regedt32.exe沒有被劫持,那我們直接用它進(jìn)入“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”這個注冊表項并展開里面的子項列表一個個看下來確認(rèn)是否出現(xiàn)Debugger參數(shù)或其他可能影響程序運(yùn)行的堆管理參數(shù),便可得知機(jī)器是否被劫持。
  如果注冊表編輯器被劫持了怎么辦?直接改個名就能用了啊……
  更簡單的方法,是使用Sysinternals的Autoruns,點(diǎn)擊它的“Image Hijacks”選項卡,即可看到被劫持的程序項了。
  追查劫持來源
  如果不幸你的機(jī)器上已經(jīng)成為“映像劫持”的受害者,請記錄好Debugger指向的程序位置,也不要試圖再執(zhí)行那些安全工具,首先應(yīng)該嘗試刪除受影響的IFEO項,然后刷新注冊表看看數(shù)據(jù)是否馬上恢復(fù)了,如果馬上恢復(fù),則說明后臺里有程序正在實(shí)時判斷和寫入IFEO,這時候必須拿出Sysinternals出品的注冊表監(jiān)控工具Regmon或類似工具,設(shè)置Filter為你正在嘗試刪除的安全工具的IFEO項,很快就能發(fā)現(xiàn)具體是什么進(jìn)程在操作注冊表了,然后將IceSword改名(如果已經(jīng)被劫持),在它的進(jìn)程列表里將相應(yīng)進(jìn)程終止掉。如果這個進(jìn)程立即又重生了呢?再終止一次,然后迅速點(diǎn)擊IceSword的“監(jiān)視進(jìn)線程創(chuàng)建”,你就能發(fā)現(xiàn)上一次搗亂的程序是什么名字了,將它記錄下來,再開啟一個Sysinternals的工具“Process Explorer”,在對應(yīng)進(jìn)程上點(diǎn)擊右鍵選擇“Suspend”,這個進(jìn)程就會被掛起,用IceSword和它配合把相關(guān)惡意進(jìn)程都掛起后,再使用IceSword的文件功能里的“強(qiáng)制刪除”,在這個程序還沒來得及反應(yīng)時就把它們的本體給殲滅,這時候再返回Process Explorer里按照大小排列從最大的一個守護(hù)進(jìn)程開始Kill Process即可,由于沒有了映像文件存在,它們意欲重新建立木馬帝國的賊心也就無法實(shí)現(xiàn)了。
  如果查殺過程更為復(fù)雜的話,請自行參閱相關(guān)文章,這里就不再贅述了。
  如此實(shí)現(xiàn)“免疫”?不被推薦的做法
  由于AV終結(jié)者搞得人心惶惶,一時間網(wǎng)絡(luò)上開始流傳“免疫映像劫持”甚至“利用映像劫持免疫大部分常見病毒”的做法,對于這些方法的最初提供者,我相信他們的出發(fā)點(diǎn)是好的,只是,從嚴(yán)格的角度來看,這卻是不可取的。
  首先是“免疫映像劫持”,具體的方法是,例如免疫威金病毒“logo_1.exe”,則在IFEO列表里建立一個“logo_1.exe”項,然后設(shè)定它的Debugger參數(shù)為它自身即“logo_1.exe”,根據(jù)原作者解釋,其原理是遞歸死循環(huán):“當(dāng)Debugger的值等于本身時,就是調(diào)用自身來調(diào)試自己,結(jié)果自己不是調(diào)試器,又來一次,遞歸了,就進(jìn)入了死循環(huán),也就不能啟動了。”
  這種方法雖然有效(最后的現(xiàn)象是“找不到文件”),但是它會導(dǎo)致系統(tǒng)在短時間內(nèi)陷入一個CreateProcess循環(huán)和命令參數(shù)的字符串累加狀態(tài),會消耗一定的資源,最終沒能執(zhí)行程序是因為系統(tǒng)使用CreateProcess啟動的實(shí)例會被它自身代替執(zhí)行,從而造成死循環(huán),而且命令行的長度是有系統(tǒng)限制的,到一定范圍就會出錯了,尤其在可以接受命令行參數(shù)的程序里,你甚至?xí)l(fā)現(xiàn)硬盤狂轉(zhuǎn)了好一會兒才彈出錯誤提示,這段時間里就是在死循環(huán)傳遞狀態(tài)了,最終由于超過系統(tǒng)限制的命令行長度而導(dǎo)致系統(tǒng)傳遞執(zhí)行請求時出錯,才得以跳出這個死循環(huán),換一個角度來看,如果系統(tǒng)沒有限制命令行長度,那么這個操作很可能直接導(dǎo)致系統(tǒng)所有資源都消耗在這個自己反復(fù)執(zhí)行自己的“調(diào)試器”上了。
  至于“利用映像劫持免疫大部分常見病毒”的做法,發(fā)起號召者模仿“映像劫持”后門屏蔽大部分常用安全工具的原理,搜集了許多流行危害程序的可執(zhí)行文件名加以前面提到的遞歸死循環(huán)方法達(dá)到目的,如果不計較前面提到的遞歸死循環(huán)缺點(diǎn),似乎這個方法是可行的。
  然而這真的可行嗎?世界上存在許多與某些系統(tǒng)文件同名同姓的社交型后門,如位置不同而名字相同的命令提示符輸入法控制程序“conime.exe”(被OSO超級U盤病毒借用名字)、重要程序Rundll32.exe被某些木馬替換為自身、甚至IE瀏覽器主體iexplore.exe也存在被木馬偽造文件名的案例,如此一來不知道多少正常的系統(tǒng)程序可能會被這份“免疫列表”給誤殺了,我僅僅粗略瀏覽了一下就發(fā)現(xiàn)msiexec.exe居然存在“免疫列表”中,要知道這可是微軟安裝程序的主執(zhí)行體啊……
  爭議話題:是否禁止IFEO列表權(quán)限?
  同時,網(wǎng)上還流傳著一個讓初級用戶看不懂的做法,那就是關(guān)閉IFEO列表的寫入權(quán)限,具體操作如下:
  ?執(zhí)行32位注冊表編輯器regedt32.exe
  ?定位到HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  ?確保焦點(diǎn)在Image File Execution Options上,選擇“安全”—“權(quán)限”
  ?將出現(xiàn)的用戶列表內(nèi)所有帶有“寫入”的權(quán)限去掉,確定退出
  這樣一來,任何對IFEO的寫入操作都失效了,也就起了免疫效果。這個方法對一般用戶而言還是不錯的,除非遭遇到一些特殊的需要往里面寫入堆管理參數(shù)的程序,否則我建議一般用戶還是禁止此項,從而杜絕一切IFEO類病毒來襲。
  而爭議正在于此,因為從長計議來看,用戶很可能會遇到需要往IFEO列表里寫入數(shù)據(jù)的正常程序,徹底禁止了IFEO的寫入可能會導(dǎo)致不可預(yù)見的后果,既然如此,我們就采取折中的方法好了,使用HIPS(主機(jī)入侵防御系統(tǒng))的注冊表防御體系RD(Registry Defend),為我們提供一種兩者都能兼顧的IFEO管理方法!
  以SSM為例,首先確保RD體系模塊已經(jīng)開啟,然后添加新監(jiān)視規(guī)則,“鍵路徑”指向HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,“操作”為“當(dāng)更改時報警”,記得“包含值”選上,最后把“子鍵深度最大值”設(shè)為“3”,點(diǎn)擊確定生成新的監(jiān)視規(guī)則,然后在“規(guī)則”主界面里確保“存取”、“刪除”、“寫入”的操作均為疑問狀態(tài),這是表示在相關(guān)鍵值被進(jìn)行寫入操作時彈出消息詢問用戶,最后點(diǎn)擊“應(yīng)用設(shè)定”讓規(guī)則生效,從此只需開著SSM,映像劫持就離你遠(yuǎn)去了。
  五. 千篇一律的結(jié)語
  道高一尺,魔高一丈,當(dāng)幾乎所有可能利用的啟動項都被安全工具翻了個遍以后,與安全對立的技術(shù)也就不得不往上提高一個檔次,于是無論什么歪門邪道的招數(shù),只要能夠被利用,哪怕它原意是好的,也會被改寫定義,從這次的映像劫持事件可以看出,這個系統(tǒng)遠(yuǎn)遠(yuǎn)不如我們想像中那么容易被掌握,尤其對普通用戶而言,這次技術(shù)的誤用簡直是他們的滅頂之災(zāi)!在安全技術(shù)與反安全技術(shù)斗爭激烈的今天,我們用戶越來越有在夾縫中生存的感覺了,當(dāng)年輕松就可以得到的隨便開多少個網(wǎng)頁都不會帶來一個病毒的日子早已遠(yuǎn)去,要想在這個瘋狂的世界里得以保全,我們只能借助于各種工具的守護(hù),和學(xué)習(xí)更多本來可以不用接觸的安全知識,難道這真的要變成互聯(lián)網(wǎng)的生存法則嗎?
  =================================
  后記:
  發(fā)現(xiàn)一個有趣的現(xiàn)象,在百度上搜索映像劫持,會得到一堆結(jié)果返回的網(wǎng)頁里都有這么一句話:
  映像劫持原理:
  Windows NT系統(tǒng)在執(zhí)行一個從命令行調(diào)用的可執(zhí)行文件運(yùn)行請求時,首先會檢查這是否是一個可執(zhí)行文件,如果是,又是什么格式的,然后就會檢查是否存在。
  這段話看著是不是莫名其妙?沒頭沒尾的,經(jīng)過我耐心查找,終于在一個角落找到了原始出處,感謝tombkeeper的撰文(節(jié)選):
  Windows NT系統(tǒng)在執(zhí)行一個從命令行調(diào)用的可執(zhí)行文件運(yùn)行請求時,首先會檢查這是否是一個可執(zhí)行文件,如果是,又是什么格式的,然后就會檢查是否存在:
  [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName]
  如果存在,首先會試圖讀取這個鍵值:
  [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName]
  "Debugger"="debug_prog"
  如果存在,就執(zhí)行“debug_prog ImageName”
  很明顯,被流傳的“原理”來自tombkeeper的某篇文章中的前一段,或許抄襲者不明白后面接著的注冊表鍵值是什么意思,有什么重要作用,就想當(dāng)然的截斷了,于是,這篇抄襲不完整的斷章取義文章經(jīng)過一傳十,十傳百的散播途徑后,終于成為了鋪天蓋地的“真理”,也難怪那么多人對IFEO感覺很好奇,因為光看那些大部分文章都是只有這么一段的,不信大家可以找找“IFEO”關(guān)鍵字,看看里面對“原理”的描述,真無語了,哎……


本文出自:億恩科技【www.artduck.net】

服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務(wù)熱線