對流氓軟件及反流氓軟件的技術分析

流氓軟件的技術五花八門,任何一項功能都有可能成爲流氓技術,就象武器,用好了可以伸張正義,用歪了卻成爲罪惡的幫兇。 
    首先我從win32下的一些流氓着數分析開始: 
    1.我想做爲一個流氓軟件,首先要做到的是實時運行,譬如在註冊表的run下,在boot下增加它的啓動。這應該是比較老的方法,以前 3721好象就是在run下,但是現在一般的人都知道了。 
    2.作爲流氓軟件,已經改變了以前一些***的特性了,他沒必要使自己一定要實時啓動了,而是需要自己的時候再啓動,譬如說打開一個瀏覽器窗口,這是一般流氓軟件的方法,因爲他需要連上網纔能有利益可圖,所以瀏覽器肯定是流氓軟件必定監控的進程。 
    3.使用BHO插件,這種技術早先特別流行,這是微軟提供的接口,本意是讓IE瀏覽器可以擴充功能。每當一個ie瀏覽器啓動的時候,都會調用BHO下必要的插件,流氓軟件就是利用這一點。監控了瀏覽器所有事件與信息。 
    4.還有最笨的辦法就是利用進程快照監控進程,判斷有它自己所監控的進程啓動,就使用atl得到瀏覽器指針,從而監控瀏覽器所有事件與信息。 
    5,還有一種方法就是使用spi,這是我在網上看到的。spi是分層協議,當winsock2啓動的時候都會調用它的dll,可以監控所有應用層數據包。從而監控用戶信息,而且能實時啓動。 
    6.hook方法,hook技術可以所應用太廣泛了,特別是監控方面。所以流氓軟件也不會錯過。首先應用的是api函數hook,譬如windows核心編程裏的apihook類,或者微軟的detous都可以完成,兩者方法其實相同就是修改IDT函數入口地址。api hook鉤住createprocess 就可以監控進程,比進程快照性能更強,可以鉤住spi下的函數可以完成spi下的所有功能。還有消息hook,鼠標消息,鍵盤消息,日子消息等等鉤子,方法實在太多,都可以利用。 
    上面列舉了一些流氓軟件的使用方法,但是流氓軟件的一個特性是他無法卸載。所以它又要使用下面的方法了因爲上面的很多方法都可以刪除註冊表卸載他們,那怎麼辦呢,那就會時時監控,它會在它的進程,或者線程裏監控註冊表項,設置一個循環監控,發現沒了就繼續安裝,增加。我想這應該是很多流氓軟件的技術。 
    那現在又出現了一個新問題,那就是流氓軟件的進程線程要是結束掉怎麼辦呢???看下面 
    7.一種方法就是上面的api hook技術,鉤住openprocess ,用自己的函數判斷只要打開的是自己進程就返回正確,使用這種方法,用戶或者一般的軟件就無法結束它的進程了。 
    8.還有一種是上面象bho,spi根本沒有進程。一般的用戶也無法刪除他 
    9.還有一種方法是遠程線程,這個技術用的也很普遍,首先是象api hook一樣向目標進程裏申請一段內存空間,然後使用自己映射過去,然後使用CreateRemoteThread創建遠程線程。一般很多流氓軟件或者以前的一些***程序,都是把線程注入到系統進程譬如explorer,service等等,使用用戶或者一般的殺毒軟件很難處理或者結束…… 
    10.註冊成服務後,也可以簡單的隱藏進程。還有更可笑的是把自己的進程名跟一些系統進程名譬如lsass相同後,也就無法結束了。 
    從我上面列舉的方法已經差不多可以形成好幾款流氓軟件了。但是你別高興太早,因爲這些技術只是應用層的,現在出現了一堆驅動層的反流氓軟件工具,譬如超級兔子,完美卸載,***剋星,雅虎助手,還有現在火熱的360安全衛士。 
    這些反流氓軟件的方法刪除以上流氓軟件軟件就比較簡單。優先於流氓軟件啓動,截獲所有訪問流氓軟件文件的irp,然後刪除註冊表項,刪除文件。輕鬆的完成了反流氓任務。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章