一直就想寫這篇東西了,只是上班時說要上班,不寫,回家後又忙著玩游戲,丟一邊去了。現在只好不務正業的開寫了,希望頭兒不會知道我的blog。哈哈 在很久之前就對HTML的病毒很感興趣了,很好奇怎麼能遠程向本地不經過允許就能下載可執行文件的,只是一直沒機會搞得到ASP的原碼,所以不才敢斷章取義的去作什麼分析。最近一次聽一朋友說他看一個網頁時病毒防火牆提示有病毒,叫我小心(先感謝一下他先),我閃了一下念頭,就打開FlashGet把那個病毒首頁下了下來。 稍微看了一下發現在首頁代碼的下面幾行裡有一個隱含的浮動幀。其引用的URL地址並不是本地的,感覺應該是了,然後再次動用FlashGet下了下來。居然發現放病毒的空間不支持ASP,下下來的ASP文件是源文件。這樣興趣來了,三下五除二的把所有病毒的相關文件都下了下來。 由於這個病毒很簡單,所以我也只摘抄了一些片段而以,如果實在感興趣的話,不防去找一個有病毒的網頁瞅瞅,不過,不要用IE去看,要用FlashGet等下載工具下載下來,再用記事本打開,不然中招了可不要來找我,好了正文開始。 真正的病毒有三個文件,一個是引導文件,一個是下載文件,第三個是激活文件。 第一個引導文件 關鍵部分是: 這個作用是將下載和激活兩個文件當作該頁的對象來引用並運行,這個也是病毒文件能夠在本地進行感染的關鍵地方,在引用的文件裡居然能夠無阻礙的引用客戶端的Action組件,唉唉,這就是那把刀啊。 第二個是下載exe病毒文件 然後是怎麼將exe下載下來,而不彈出下載的提示框呢。這個是收下載文件來完成的任務。 該病毒的作法是在服務器端用Microsoft.XMLHTTP組件和response.contenttype = "image/gif"將病毒文件以圖片格式下載到客戶端的網頁緩存裡(這裡是很簡單的Get/BinaryWrite操作,就不詳細說了)。 第三個是激活 感覺激活的過程很巧妙,病毒是先用fso在c:\下生成一個hta文件,將激活過程寫到這個文件裡。然後再用WScript.Shell來運行這個文件。這樣,激活過程中需要大權限的操作(比如:寫注冊表操作)就沒問題了。 具體操作過程是這樣的。將在網頁緩存目錄裡的病毒文件移動到系統文件目錄,然後改名為win.exe。再往注冊表裡寫入自啟動的鍵,使得病毒能在系統重啟後自動啟動,然後刪除hta文件,完成感染和激活。 這就是病毒的基本運行過程(依照慣例病毒破壞部分就不提了),但是這個對我們有什麼用呢,其實這種病毒我是很討厭的,但是,其下載exe和激活過程還是有可利用的地方的。比如:你作的系統必須要客戶端下載一些組件並激活後才能使用的,這種操作面對了解的人當然是不成問題,但是如果你面對的是那種網絡是什麼都還沒搞清林的用戶時,我估計系統還沒開始使用你的電話就要打爆了。如果借用種方式,在對方允許的情況下自動下載組件,並自動激活,那就省事多了,是吧。 不過,這種方式對小形文件是很方便,如果要下載1m以上的文件..那就要考慮多線程下載的操作了,當然這個不是這篇文章的范圍了。以後有機會再說說用ASP+XML實現WEB多線程上傳多線程下載的方法吧。