揭開木馬的神秘面紗 二

2021-04-02 07:41:09 字數 3622 閱讀 1838

前言

離冰河二的問世已經快一年了,大家對於木馬這種遠端控制軟體也有了一定的認識,比如:他會改登錄檔,他會監聽埠等等,和一年前幾乎沒有人懂得木馬是什麼東西相比,這是乙個質的飛躍。但是,在這個連「菜鳥」都會用netstat看埠,用lockdown保護登錄檔的今天,難道木馬就停步不前,等待我們的「殺戮」麼?回答顯然是否定的。木馬在這一年當中,同樣也不斷進步,不斷發展,他們變得更加隱蔽,更加靈活。本文試圖通過分析近一年以來木馬軟體的發展,向大家介紹木馬的最新攻防技巧,從而使大家能夠更加安全地暢遊在internet上。

(本文中預設的作業系統為win2000,預設的程式設計環境是vc++6.0)

在過去的一年當中,出過很多有名的木馬,sub7,bo2000,冰河等等,他們都有幾個共同的特點,比如:開tcp埠監聽,寫登錄檔等等,因此,針對這些特點,也湧現出了不少查殺木馬的工具,比如lockdown2000, clean等,這些工具一般都是利用檢查登錄檔和埠來尋找木馬

(也有利用特徵碼來查詢的,那種原始的思路我們就不說了,誰都知道,只要原始碼稍微改改,特徵碼查詢就毫無用處)甚至還出了一些號稱能防範未來多少年木馬的軟體。而在大家的不斷宣傳下,以下的木馬法則已經婦孺皆知:

2、不要過於相信別人,不要隨便開啟郵件的附件;

3、經常檢查自己的系統檔案、登錄檔、埠、程序;

4、經常去檢視最新的木馬公告,更新自己防火牆的木馬庫;

這樣看來,第一代木馬的特性大家都已經耳熟能詳,在這種情況下,作為乙個地下工作者,木馬的日子會非常難過。那麼,木馬就這樣甘受屠戮,坐以待斃麼?人類就這樣滅絕了木馬這個種族麼?不是!木馬為了生存,也在不斷進化,在我們放鬆警惕,慶祝勝利的時候,木馬已經經歷了幾次質的突變,現在的木馬比起他們的前輩要更加隱蔽,更加巧妙,更難以發現,功能更強大。

一、關埠

2、潛伏是說使用ip協議族中的其它協議而非tcp/udp來進行通訊,從而瞞過netstat和埠掃瞄軟體。一種比較常見的潛伏手段是使用icmp協議,icmp(internet控制報文)是ip協議的附屬協議,它是由核心或程序直接處理而不需要通過埠,乙個最常見的icmp協議就是ping,它利用了icmp的回顯請求和回顯應答報文。乙個普通的icmp木馬會監聽icmp報文,當出現特殊的報文時(比如特殊大小的包、特殊的報文結構等)它會開啟tcp埠等待控制端的連線,這種木馬在沒有啟用時是不可見的,但是一旦連線上了控制端就和普通木馬一樣,本地可以看到狀態為established的鏈結(如果埠的最大連線數設為1,在遠端使用connect方法進行埠掃瞄還是沒有辦法發現的);而乙個真正意義上的icmp木馬則會嚴格地使用icmp協議來進行資料和控制命令的傳遞(資料放在icmp的報文中),在整個過程中,它都是不可見的。(除非使用嗅探軟體分析

網路流量)

3、除了寄生和潛伏之外,木馬還有其他更好的方法進行隱藏,比如直接針對網絡卡或modem進行底層的程式設計,這涉及到更高的程式設計技巧。

二、隱藏程序

在win9x時代,簡單的註冊為系統程序就可以從工作列中消失,可是在window2000盛行的今天,這種方法遭到了慘敗,註冊為系統程序不僅僅能在工作列中看到,而且可以直接在services中直接控制停止、執行(太搞笑了,木馬被客戶端控制)。使用隱藏窗體或控制台的方法也不能欺騙無所不見的admin大人(要知道,在nt下,administrator是可以看見所有程序的)。在研究了其它軟體的長處之後,木馬發現,

windows下的中文漢化軟體採用的陷阱技術非常適合木馬的使用。

dll陷阱技術是一種針對dll(動態鏈結庫)的高階程式設計技術,程式設計者用特洛伊dll替換已知的系統dll,並對所有的函式呼叫進行過濾,對於正常的呼叫,使用函式**器直接**給被替換的系統dll,對於一些事先約定好的特殊情況,dll會執行一些相對應的操作,乙個比較簡單的方法是起乙個程序,雖然所有的操作都在dll中完成會更加隱蔽,但是這大大增加了程式編寫的難度,實際上這樣的木馬大多數只是使用dll進行監聽,一旦發現控制端的連線請求就啟用自身,起乙個綁埠的程序進行正常的木馬操作。操作結束後關掉程序,繼續進入休眠狀況。

因為大量特洛伊dll的使用實際上已經危害到了

windows作業系統的安全和穩定性,據說微軟的下一代作業系統window2001(海王星)已經使用了dll數字簽名、校驗技術,因此,特洛伊dll的時代很快會結束。取代它的將會是強行嵌入**技術(插入dll,掛接api,程序的動態替換等等),但是這種技術對於編寫者的彙編功底要求很高,涉及大量硬編碼的機器指令,並不是一般的木馬編寫者可以涉足。(暈,我是門都找不到,哪位高手可以指點我一下?)

三、爭奪系統控制權

木馬們並不甘於老是處於防守的地位,他們也會進攻,也會主動出擊。winnt下的溢位型木馬就是這樣的積極者,他們不僅僅簡單的載入、守候、完成命令,而是利用種種系統的漏洞設法使自己成為系統的擁有者-admin,甚至系統的控制者-system。那麼,木馬利用什麼方法能一改過去到處逃亡的面目,從而成為系統的主宰呢?

首當其衝的顯然是登錄檔:多年馳騁登錄檔的歷史使得木馬非常熟悉登錄檔的構造和特點(你呢,你能比木馬更熟悉登錄檔麼)

windows

2000有幾個登錄檔的許可權漏洞,允許非授權使用者改寫admin的設定,從而強迫admin執行木馬程式,這個方法實現起來比較容易,但是會被大多數的防火牆發現。

其次是利用系統的許可權漏洞,改寫admin的檔案、配置等等,在admin允許active desktop的情況下這個方法非常好用,但是對於乙個有經驗的管理員,這個方法不是太有效;

第三個選擇是系統的本地溢位漏洞,由於木馬是在本地執行的,它可以通過本地溢位的漏洞(比如iis的本地溢位漏洞等),直接取得system的許可權。這部分內容在袁哥和很多彙編高手的文章中都有介紹,我就不再贅述了。(偷偷告訴你,其實是我說不出來,我要是能寫出那樣的溢位程式我還用在這裡......)

四、防火牆攻防戰

現在,在個人防火牆如此之流行的今天,也許有人會說:我裝個防火牆,不管你用什麼木馬,在我系統上搞什麼,防火牆設了只出不進,反正你沒法連進來。同樣,對於區域網內的機器,原先的木馬也不能有效的進行控制(難道指望閘道器會給你做nat麼?)但是,城牆從來就擋不住木馬:在古希臘的特洛伊戰爭中,人們是推倒了城牆來恭迎木馬的,而在這個網際網路的時代,木馬仍然以其隱蔽性和欺詐性使得防火牆被從內部攻破。其中**埠型的木馬非常清晰的體現了這一思路。

**埠型木馬分析了防火牆的特性後發現:防火牆對於連入的鏈結往往會進行非常嚴格的過濾,但是對於連出的鏈結卻疏於防範。於是,與一般的木馬相反,**埠型木馬的服務端(被控制端)使用主動埠,客戶端(控制端)使用被動埠,木馬定時監測控制端的存在,發現控制端上線立即彈出埠主動鏈結控制端開啟的主動埠,為了隱蔽起見,控制端的被動埠一般開在80,這樣,即使使用者使用埠掃瞄軟體檢查自己的埠,發現的也是類似 tcp userip:1026 controllerip:80 established的情況,稍微疏忽一點你就會以為是自己在瀏覽網頁。(防火牆也會這麼認為的,我想大概沒有哪個防火牆會不給使用者向外連線80埠吧,嘿嘿)看到這裡,有人會問:那服務端怎麼能知道控制端的ip位址呢?難道控制端只能使用固定的ip位址?哈哈,那不是自己找死麼?一查就查到了。

實際上,這種**埠的木馬常常會採用固定ip的第三方儲存裝置來進行ip位址的傳遞。舉乙個簡單的例子:事先約定好乙個個人主頁的空間,在其中放置乙個文字檔案,木馬每分鐘去get一次這個檔案,如果檔案內容為空,就什麼都不做,如果有內容就按照文字檔案中的資料計算出控制端的ip和埠,**乙個tcp鏈結回去,這樣每次控制者上線只需要ftp乙個ini檔案就可以告訴木馬自己的位置,為了保險起見,這個ip

揭開信貸神秘面紗

貸款信用保險是指保險人對銀行或其他金融機構與企業之間的借貸合同進行擔保,以承保借款人信譽風險的保險。在貸款信用保險中,貸款方 即債權人 是投保人。但保單簽發後,貸款方即成為被保險人。當企業無法歸還貸款時,債權人可以從保險那裡獲得補償。貸款人在獲得保險人的補償後,必須將債權轉讓給保險人,由保險人向借款...

揭開Zookeeper神秘面紗

zookeeper是乙個開源的分布式的,為分布式應用提供協調服務的apache專案。hadoop 和hbase的重要元件。它是乙個為分布式應用 提供一致性服務 的軟體,提供的功能包括 配置維護 網域名稱服務 分布式同步 組服務 等。1 zookeeper 乙個領導者 leader 多個跟隨者 fol...

揭開MVC的神秘面紗

最近參加的高校平台專案中涉及到了 mvc。mvc,有人說是一種設計模式,也有人說是使用者介面層設計架構。那麼 mvc到底是什麼呢?今天我們一起來學習一下。mvc,即model view controller,把乙個應用的輸入 處理 輸出流程按照 model view controller 的方式進行...