一個典型的蠕蟲病毒有兩個功能型部件:傳播和破壞,流行的蠕蟲病毒(計算機愛好者,學(xué)習(xí)計算機基礎(chǔ),電腦入門,請到本站,我站同時提供計算機基礎(chǔ)知識教程,計算機基礎(chǔ)知識試題供大家學(xué)習(xí)和使用),大都是利用操作系統(tǒng)或者應(yīng)用程序的漏洞(以弱口令和溢出最為常見),但常常并不會對宿主機造成“致命”的破壞。這兩個特點使蠕蟲病毒比普通電腦病毒傳播得更快,影響力更大。一般來說,單一的蠕蟲病毒只針對某種特定的漏洞進行攻擊,所以一旦這種漏洞得到大范圍修補,病毒也就沒有了生存空間。
更新這種設(shè)計,我把傳播部件拆分開來:把掃描、攻擊和破壞腳本化,主程序則負責解析這些腳本。例如針對FTP弱口令進行掃描,我們可以定義如下腳本:
UID = Is cript-0A21-2331-X #隨機唯一編號
USING TCP;
PORT 21;
SEND “USER anonymous”;
SEND CRLF;
SEND “PASS 計算機基礎(chǔ)知識)/Upfiles/BeyondPic/dnaq/2009-09/20090928154848416.gifstyle=”cursor: pointer”” alt=””點此在新窗口瀏覽圖片”” onmousewheel=””return bbimg(this)”” onload=””javascript:resizepic(this)”” border=””0″”/>fake@nothing.com”
SEND CRLF;
IF (FIND “200”) RESULT OK;
NEXT;
解析了這段腳本后(我想這種腳本是很容易讀懂的),我們再定義一系列的過程,把我們的蠕蟲體Upload上去,一次完整的傳播動作就完成了。如果是溢出漏洞,為了簡單起見我們可以采集遠程溢出的數(shù)據(jù)包,然后修改IP地址等必要數(shù)據(jù),再轉(zhuǎn)發(fā)溢出數(shù)據(jù)包進行溢出(這種情況下要實現(xiàn)connect-back就不容易了,不過這些具體問題就待有心人去研究吧),例如:
USING RAW;
IP OFFSET AT 12;
SEND “x1AxB2xCC” ……
主程序在完成傳播后留下一個后門,其他宿主機可以通過這個后門與本地的蠕蟲病毒同步傳播腳本,這樣每次有新的漏洞產(chǎn)生,宿主機的傳播方式可以很快地得到升級。我們當然不會僅滿足于這樣一個蠕蟲程序,掃描/攻擊腳本的傳播過程也是需要仔細處理的。
我們希望適應(yīng)力(Fitness)最強的腳本得到廣泛的應(yīng)用(看起來有點類似 蟻群算法 和 GA),所以我們要求得每個個體的Fitness,當它和另一個體取得聯(lián)系的時候就可以決定誰的傳播腳本將取代另一個:
Fitness = Number of host infected / Number of host scanned
但也不能僅憑Fitness就修改傳播腳本,我個人覺得一個合適的概率是75%,20%的機會保持各自的傳播腳本,剩下的5%則交換腳本。這樣在維持每種腳本都有一定生存空間的情況下使適應(yīng)性最好的個體得到更多的傳播機會,同時,一些在某種網(wǎng)絡(luò)環(huán)境下適應(yīng)性不強的腳本也有機會嘗試不同的網(wǎng)絡(luò)環(huán)境。
”
上一條:QQ安全三大紀律八項注意