網(wǎng)站建設(shè)定制自動(dòng)檢測(cè)網(wǎng)站木馬系統(tǒng)
- 編輯:admin -木馬是網(wǎng)站開發(fā)者與網(wǎng)站管理員所煩惱卻難以清除的木馬,在當(dāng)前,還沒有一個(gè)殺毒軟件或者是檢測(cè)軟件能夠準(zhǔn)確的標(biāo)記出木馬的位置并將其清除,所以開發(fā)一套自動(dòng)檢測(cè)asp木馬的軟件很有意義,可以為管理員對(duì)網(wǎng)站的維護(hù)節(jié)約大量的時(shí)間和精力.這樣的軟件應(yīng)該被大多數(shù)網(wǎng)站管理員所接受并使用,這套系統(tǒng)為網(wǎng)站的安全性增添了一項(xiàng)保障.

木馬是網(wǎng)站開發(fā)者與網(wǎng)站管理員所煩惱卻難以清除的木馬,在當(dāng)前,還沒有一個(gè)殺毒軟件或者是檢測(cè)軟件能夠準(zhǔn)確的標(biāo)記出木馬的位置并將其清除,所以開發(fā)一套自動(dòng)檢測(cè)asp木馬的軟件很有意義,可以為管理員對(duì)網(wǎng)站的維護(hù)節(jié)約大量的時(shí)間和精力.這樣的軟件應(yīng)該被大多數(shù)網(wǎng)站管理員所接受并使用,這套系統(tǒng)為網(wǎng)站的安全性增添了一項(xiàng)保障.
假如一套網(wǎng)站維護(hù)的很好,卻被插入了很多有害代碼,對(duì)瀏覽者造成危害,或者對(duì)該網(wǎng)站的用戶造成損失,那這么絕對(duì)不是一套好的網(wǎng)站.但是如果花費(fèi)大量的時(shí)間在大量的網(wǎng)頁(yè)文件中找出小小的木馬文件或者僅僅是一句簡(jiǎn)單的有害語(yǔ)句,基本是不可能的.而自動(dòng)檢測(cè)系統(tǒng)則大大簡(jiǎn)化了這個(gè)過(guò)程,通過(guò)簡(jiǎn)單的操作,進(jìn)行簡(jiǎn)單的掃描,可以定位并給出使用者可能得被感染的文件(由于軟件并不等于人,所以不能否認(rèn)會(huì)出現(xiàn)失誤,所以需要使用者進(jìn)行最后判斷),對(duì)于每一個(gè)網(wǎng)站管理員來(lái)說(shuō)是必要的.
正文:軟件系統(tǒng)應(yīng)該具有的特點(diǎn)是:準(zhǔn)確,必須準(zhǔn)確的掃描出可能含有危險(xiǎn)代碼的文件;快速,不能花費(fèi)管理員大量的時(shí)間;簡(jiǎn)單,管理員只需要經(jīng)過(guò)簡(jiǎn)單的點(diǎn)擊就可以使程序運(yùn)行.
下面將圍繞這三個(gè)特性研究這套軟件的實(shí)現(xiàn).
簡(jiǎn)單性:程序有一個(gè)設(shè)置掃描目錄的控件,此控件在程序運(yùn)行時(shí)自動(dòng)顯示上次掃描目錄;
設(shè)置一個(gè)開始掃描按鈕以使使用者快速開始;為了更好的精確定位,還需要加入兩個(gè)設(shè)置參數(shù)的文本框,分別是一級(jí)密碼和二級(jí)密碼;為了靈活使用加密強(qiáng)度,增加加密次數(shù)選擇框;為了使信息更精確,加入過(guò)濾設(shè)置選擇框(僅僅簡(jiǎn)單的選擇項(xiàng)+一個(gè)用來(lái)存放臨時(shí)信息的輸入框即可);再有就是一個(gè)篩選按鈕(掃描結(jié)束進(jìn)行篩選).這些控件的作用在下文提到.
這樣的設(shè)置可以使使用者以簡(jiǎn)單的操作或得很好的使用效果,我們的最終目的是找出角落里的木馬,而使操作最簡(jiǎn)化、資源占用最小化.
快速:占用大量的資源和執(zhí)行時(shí)間,是每個(gè)軟件都不應(yīng)該有的.似乎效率和任務(wù)量成反比,但在此程序中,卻有所變化,如果要處理大量數(shù)據(jù),進(jìn)行大量運(yùn)算(這在查找木馬中是必須的,需要進(jìn)行運(yùn)算密匙,在下文將提到),而要執(zhí)行速度很快,使高級(jí)語(yǔ)言與匯編語(yǔ)言結(jié)合是一個(gè)不錯(cuò)的方法,所以此程序應(yīng)該在必要的地方(如大量使用得函數(shù))以使用匯編代碼.
如果要使程序執(zhí)行速度快,內(nèi)聯(lián)函數(shù)也應(yīng)該使用,內(nèi)聯(lián)函數(shù)可以使重復(fù)使用量大的函數(shù)得到很高的運(yùn)算速度,因此,以一定的程序體積來(lái)?yè)Q取執(zhí)行效率,還是比較明智的.
內(nèi)聯(lián)函數(shù)與匯編語(yǔ)言的結(jié)合使用可以提高程序的執(zhí)行效率,可以縮短程序執(zhí)行時(shí)間,提高速度.
準(zhǔn)確:這是此系統(tǒng)的核心部分,沒有準(zhǔn)確性一切都是空談.如何使定位準(zhǔn)確呢?這里采用標(biāo)記的方法.即把每個(gè)本地文件標(biāo)記一個(gè)自定義的特殊的字符,在檢測(cè)時(shí)只要比較每個(gè)文件中的特殊字符,就可以定位木馬文件.
由于這種機(jī)制,字符的設(shè)置顯得很重要,設(shè)置一個(gè)難以辨識(shí)的、每個(gè)文件中都不相同的字符是必須的.如果每個(gè)字符都不相同,使用文件名與使用者定義密碼結(jié)合是一個(gè)解決思路,先取得文件名,在加上用戶定義的密碼進(jìn)行特定運(yùn)算,組成特定字符插入到此文件中;在檢測(cè)時(shí),如果特定字符與運(yùn)算字符不同或者未發(fā)現(xiàn)特定字符,可以定位此文件被修改過(guò),而且是未授權(quán)的修改,那么基本就是木馬了.為什么說(shuō)基本呢?因?yàn)樘囟ㄗ址赡苁欠欠ㄈ肭终咝薷牡?企圖迷惑管理員,但是入侵者有耐心修改的文件,我想管理員也一定有耐心將他修改回來(lái),畢竟,這種文件是少數(shù)的.為了保證對(duì)這種INSERT型木馬的精確定位,在計(jì)算特殊字符時(shí),還需要加入文件體積.這樣,不管入侵者修改了什么地方,都可以被定位.這這種運(yùn)算方式是可選的,并且是可設(shè)置選擇規(guī)律的.為了防止入侵者的惡意迷惑管理員,這個(gè)需要加入一個(gè)規(guī)律的設(shè)置,如果是入侵者惡意修改文件體積,那么體積的大小,和修改時(shí)間,應(yīng)該是有規(guī)律的(至少修改的時(shí)間會(huì)限定在幾天之內(nèi),這個(gè)時(shí)間看你掃描頻率,在此期間的修改程度和掃描精確度隨著掃描頻率的升高而升高),只要進(jìn)行篩選,就可以略過(guò)這些惡意迷惑的修改,并進(jìn)行恢復(fù).如果加上這些惡意修改可能略過(guò)一些INSERT木馬,怎么辦呢?此時(shí)就要在此進(jìn)行篩選了,為了迷惑管理員,入侵者不會(huì)把其他文件都INSER木馬,所以只要篩選出代碼中的無(wú)規(guī)律項(xiàng),留下的應(yīng)該就是木馬.為什么說(shuō)應(yīng)該呢?因?yàn)槿肭终呖赡芗尤胍恍┱5恼Z(yǔ)句,例如asp中的,這樣,既有規(guī)律,又更改了文件體積,而且沒有影響特征字符.但是,我們的軟件總是會(huì)比他高一籌,我們?cè)俅魏Y選,過(guò)濾掉那些預(yù)定為安全語(yǔ)句的文件,只留下帶有未經(jīng)安全允許的,有規(guī)律的,符合語(yǔ)法的文件,這些文件應(yīng)該為數(shù)不多,管理員可以自己判斷.
上面的內(nèi)容可以看出,檢測(cè)層層深入,每次掃描計(jì)算量很大,導(dǎo)致程序的執(zhí)行時(shí)間過(guò)長(zhǎng),但是我們的inline函數(shù)和匯編的結(jié)合使用,彌補(bǔ)了這一缺點(diǎn).這樣,我們的程序很有效率.
特定字符的設(shè)定也極其重要.必須是與每個(gè)文件相關(guān)的,可以重新計(jì)算的,每個(gè)文件的特定字符是不同的.前面已經(jīng)提到,特定字符的組成部分應(yīng)該是:使用者定義一級(jí)密匙+使用者定義二級(jí)密匙+文件體積+文件名.然而,計(jì)算方式是會(huì)被入侵者知道的,所以加密方式必須合理,以使入侵者即便得到加密原理,也不能解密.我們先把文件名+體積+一級(jí)密碼組合.組合方式有六種:文件名體積一級(jí)密碼、文件名一級(jí)密碼體積、體積文件名一級(jí)密碼、體積一級(jí)密碼文件名、一級(jí)密碼體積文件名、一級(jí)密碼文件名體積.這個(gè)方式由使用者選擇.然后我們使用二級(jí)密碼進(jìn)行逐個(gè)加密,二級(jí)密碼應(yīng)該設(shè)置的合適,它的設(shè)置應(yīng)該對(duì)照于組合的密碼的長(zhǎng)度,二級(jí)密碼最好設(shè)置為組合字符長(zhǎng)度的1/5-1/4,不是1/5,也不是1/4,而在其之間,這樣,密碼長(zhǎng)度合適,而且加密次數(shù)也達(dá)到4、5次,而且,加密時(shí)兩個(gè)字符串沒有同時(shí)結(jié)束.這樣加密就有了強(qiáng)度.
加密的過(guò)程很簡(jiǎn)單,組合字符串與二級(jí)密碼相互相加,當(dāng)二級(jí)密碼到結(jié)尾時(shí),以二級(jí)密碼的第一個(gè)字符開始與二級(jí)密碼結(jié)尾時(shí)組合字符的字符的下一個(gè)字符開始繼續(xù)加密,一直到組合字符串的結(jié)束,當(dāng)然,為了使密匙更強(qiáng)大,使用者可以定義加密的次數(shù),二次或者更多.比如組合字符串是:index305abcdefghig(文件名+體積+一級(jí)密碼),二級(jí)密碼是:1234那么加密次數(shù)為1的加密結(jié)果為:jpgiy539bdfhfhjlji.把這個(gè)特定字符放入文件中,檢測(cè)時(shí)以重新計(jì)算出的結(jié)果與預(yù)先放置的對(duì)比,如果正確,就篩選掉,如果錯(cuò)誤,就選擇進(jìn)行下一步處理.入侵者通過(guò)這個(gè)字符串要計(jì)算出一級(jí)密碼和二級(jí)密碼是很難的,需要大量的時(shí)間.而且,一級(jí)密碼和二級(jí)密碼的長(zhǎng)度是未定的,就算得到成百上千個(gè)這樣的字符串和對(duì)應(yīng)的文件,解密也需要大量的時(shí)間,而這段時(shí)間可能超過(guò)幾個(gè)月,甚至超過(guò)年.在這段時(shí)間里,密碼已經(jīng)更換過(guò),所以安全性非常棒!
我們加密的過(guò)程不太復(fù)雜,但是計(jì)算量很大.由定義的密碼和文件信息組合成密匙,放入文件,以檢測(cè)文件的改動(dòng);同時(shí)為了防止入侵者的惡意迷惑,還進(jìn)行了幾次篩選,把虛假信息大量篩選掉.匯編語(yǔ)言和高級(jí)語(yǔ)言的結(jié)合及inline函數(shù)的使用,大大彌補(bǔ)了程序執(zhí)行效率的問題.為使用者節(jié)約大量資源和時(shí)間.




