搶先了解最易被黑客利用的注冊表位置
[ 2007-03-25 03:24:09 | 作者: sun ]
現在人們總會遇到這樣地情況,某天打開自己mail中的一個附件,因為那個mail的地址和自己一個同事的地址很像,因此沒有多考慮就將附件下載打開了。不想這個附件是個病毒,它讓自己的機器變的很慢,殺毒之后也沒有太大作用。
其實,病毒、木馬、和一些惡意軟件,往往都會對Widnows的注冊表下毒手,雖然破壞形式不盡相同,但是經過分析它們的破壞手法并非無規律可循。這里列出了一些用戶系統中被易被修改的系統設置和注冊表項。建議再換用其他木馬專殺工具試一下,并再針對以下注冊表鍵值進行檢查,看看是否有被改動過的跡象。
系統設置文件
對于Widnows 9X系統,常見的是病毒修改可能會更改autoexec.bat,只要在其中加入執行病毒程序文件的語句即可在系統啟動時自動激活病毒。*更改drive:\windows\win.ini或者system.ini文件。病毒通常會在win.ini的“run=”后面加入病毒自身的文件名,或者在system.ini文件中將“shell=”更改。
注冊表鍵值
目前,只要新出的蠕蟲/特洛伊類病毒一般都有修改系統注冊表的動作。它們修改的位置一般有以下幾個地方:
在系統啟動時自動執行的程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\
在系統啟動時自動執行的系統服務程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
在系統啟動時自動執行的程序,這是病毒最有可能修改/添加的地方
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
HKEY_CLASSES_ROOT\exefile\shell\open\command
說明:此鍵值能使病毒在用戶運行任何EXE程序時被運行,以此類推,..\txtfile\.. 或者 ..\comfile\.. 也可被更改,以便實現病毒自動運行的功能。
另外,有些健值還可能被利用來實現比較特別的功能:
有些病毒會通過修改下面的鍵值來阻止用戶查看和修改注冊表:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools =
為了阻止用戶利用.REG文件修改注冊表鍵值,以下鍵值也會被修改來顯示一個內存訪問錯誤窗口。
例如:Win32.Swen.B 病毒 會將缺省健值修改為:
HKCR\regfile\shell\open\command\(Default) = "cxsgrhcl.exe showerror"
通過對以上地方的修改,病毒程序主要達到的目的是在系統啟動或者程序運行過程中能夠自動被執行,已達到自動激活的目的。
其實,病毒、木馬、和一些惡意軟件,往往都會對Widnows的注冊表下毒手,雖然破壞形式不盡相同,但是經過分析它們的破壞手法并非無規律可循。這里列出了一些用戶系統中被易被修改的系統設置和注冊表項。建議再換用其他木馬專殺工具試一下,并再針對以下注冊表鍵值進行檢查,看看是否有被改動過的跡象。
系統設置文件
對于Widnows 9X系統,常見的是病毒修改可能會更改autoexec.bat,只要在其中加入執行病毒程序文件的語句即可在系統啟動時自動激活病毒。*更改drive:\windows\win.ini或者system.ini文件。病毒通常會在win.ini的“run=”后面加入病毒自身的文件名,或者在system.ini文件中將“shell=”更改。
注冊表鍵值
目前,只要新出的蠕蟲/特洛伊類病毒一般都有修改系統注冊表的動作。它們修改的位置一般有以下幾個地方:
在系統啟動時自動執行的程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\
在系統啟動時自動執行的系統服務程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
在系統啟動時自動執行的程序,這是病毒最有可能修改/添加的地方
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\
HKEY_CLASSES_ROOT\exefile\shell\open\command
說明:此鍵值能使病毒在用戶運行任何EXE程序時被運行,以此類推,..\txtfile\.. 或者 ..\comfile\.. 也可被更改,以便實現病毒自動運行的功能。
另外,有些健值還可能被利用來實現比較特別的功能:
有些病毒會通過修改下面的鍵值來阻止用戶查看和修改注冊表:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools =
為了阻止用戶利用.REG文件修改注冊表鍵值,以下鍵值也會被修改來顯示一個內存訪問錯誤窗口。
例如:Win32.Swen.B 病毒 會將缺省健值修改為:
HKCR\regfile\shell\open\command\(Default) = "cxsgrhcl.exe showerror"
通過對以上地方的修改,病毒程序主要達到的目的是在系統啟動或者程序運行過程中能夠自動被執行,已達到自動激活的目的。
通過系統權限法清理dll木馬
[ 2007-03-25 03:23:55 | 作者: sun ]
相信大家對Dll木馬都是非常熟悉了,它確實是個非常招人恨的家伙。它不像普通的exe木馬那樣便于識別和清理,這個家伙的隱蔽性非常強。它可以嵌入到一些如rundll32.exe、svchost.exe等正常的進程中去,讓你找不到。即使找到了也難以清除,因為正常的進程正在調用它嘛。
我用的是Mcafee的殺毒軟件,比如說它現在報告:
defds.dll:C:\ Documents and Settings\Administrator\Local Settings\ Temp\ defds.dll刪除失敗
fdgeg.com:C:\Windows\ime\fdgeg.com刪除失敗
那么可以知道defds.dll應該是個dll木馬,我們可以通過冰刃icesword來查看系統的進程,找到調用該dll文件的進程。比如說是notepad.exe 我們可以先嘗試著終止該進程。該進程如果終止后過不了多久又重新運行(而我并沒有運行記事本),那么我們可以判定fdgeg.com就是notepad.exe的的守護進程。當它發現它所監視的notepad.exe進程被終止后會立刻將notepad.exe重新啟用。
現在我們可以:我的電腦-----工具----文件夾選項-----查看,在高級設置的選項下去掉“簡單文件共享”的鉤子(我的電腦是XP操作系統,NTFS磁盤格式)
然后到C:\Windo0ws\ime下找到fdgeg.com,右鍵選擇屬性。在屬性中選擇”安全”,單擊”高級”,在彈出的窗口中使“從父項繼承那些可以應用到子對象的權限項目,包括那些在此明確定義的項目”不被選中。再在彈出的窗口中單擊”刪除”,再依次單擊”確定”。這樣就沒有任何用戶可以使fdgeg.com工作了。
通過icesword終止notepad.exe,然后到C:\Documents and Settings\Administrator\Local Settings\Temp中刪除defds.dll。然后到C:\Windows\ime中再找到fdgeg.com 右鍵屬性,在屬性中選擇”安全”,單擊”高級”,在彈出的窗口中選中“從父項繼承那些可以應用到子對象的權限項目,包括那些在此明確定義的項目”,然后刪除它即可。最后別忘了在注冊表的啟動項中將這個dll木馬刪除。
這樣,我們就徹底將這個討厭的dll木馬從我們的電腦中清除了。
安全技巧之用ZoneAlarm判斷是否中木馬
[ 2007-03-25 03:23:44 | 作者: sun ]
現在的木馬真是越來越難防了,尤其是經過免殺處理的木馬,一不小心就中招。
鼎鼎大名的ZoneAlarm防火墻大家用過沒有,暫且不說它強大的功能,本人在使用一段時間后還發現了一點點其他的功能。
ZoneAlarm啟動后會在托盤有一個圖標,沒通信的時候就是一個標志,有通信的時候就換成一個通信量的指示表,綠色為表示接收到的數據量,紅色為從本機發出去的數據量。
利用這個通信量的衡量表,就可以實現系統的監控功能。大家知道,木馬的服務端要與入侵者的木馬控制端建立通信。當然,既然通信就有數據交換。木馬要通風報信,就必須得向服務端發出數據,這時,紅色的指示表就會飆升(有一個前提,就是在網絡平靜的情況下,就是說電腦沒有通信操作。比如說,沒有網頁下載的動作。象我,開了幾個網站,打開完后,通信量指示表就再也沒指示了)。好吧,開始做實驗,事實是最好的證據。在自己電腦運行了鴿子服務端,然后通過控制端進行操做。進行讀取驅動器,查看系統進程等操作。看!紅色的格子開始亮了,而且通信量也比平時大,尤其是查看屏幕或視頻語音堅控后,紅色的指示表飆升至滿格!而且一直持續!
如果你沒對系統進行網絡操作,而指示燈一直在閃的話,就該好好查下了。此法也可以用用于3389端口——假如3389忘了關。
雕蟲小技,一點點小聰明,只是大家沒發現而已。
推薦:十類千萬不能使用的密碼
[ 2007-03-25 03:23:33 | 作者: sun ]
在信息技術普遍應用的時代,密碼已經成為驗證身份的主要手段,但有些密碼千萬不能使用。
1、密碼和用戶名相同
如:用戶名和密碼都是123456789。幾乎所有盜取密碼的人,都會以用戶名作為破解密碼的突破口。
2、密碼為用戶名中的某幾個鄰近的數字或字母
如:用戶名為test000001,密碼為test或000001。如果您的用戶名是字母和數字組合,如:test000001,那么別人要盜取您的密碼時,肯定會以用戶名中的字母或數字來試密碼。
3、密碼為連續或相同的數字
如123456789、1111111等。幾乎所有黑客軟件,都會從連續或相同的數字開始試密碼。如:先試111、111......到9999999999,然后再試123、321、234、1234......如果您的密碼是111111、123456或654321,甚至用不著黑客軟件也能在片刻試出。
4、密碼為連續或相同的數字
如abcdefg、jjjjjjj等。字母雖然比數字多,但是先試相同的字母如aaaaa,再試連續的字母如abcde,黑客軟件所用時間也不會太多。
5、將用戶名顛倒或加前后綴作為密碼
如用戶名為test,密碼為test123、aaatest、tset等。以用戶名test為例,黑客軟件在嘗試使用test作為密碼之后,還會試著使用諸如test123、test1、tset、tset123等作為密碼,只要是你想得到的變換方法,黑客軟件也會想得到,它破解這種口令,幾乎不需要時間。
6、使用姓氏的拼音作為密碼
在不少黑客軟件中,百家姓往往都被一一列出,并放在字典的前列。只需片刻即可破解您的密碼。以姓氏或姓名的拼音作為密碼還存在一種危險:想盜您密碼的人如果探聽到您的真實姓名,就很有可能用您姓名中的拼音組合來試密碼。
7、使用自己或親友的生日作為密碼
由于表示月份的只有1~12可以使用,表示日期的也只有1-31可以使用,表示日期的肯定19xx或xx,因此表達方式只有100×12×31×2=74400種,即使考慮到年月日共有六種排列順序,一共也只有74400×6=446400種。按普通計算機每秒搜索3~4萬種的速度計算,破解您的密碼最多只需10秒。
8、使用常用英文單詞作為密碼
黑客軟件一般都有一個包含10萬~20萬個英文單詞及相應組合的字典庫。如果您的密碼在這個庫中,那么即使字典庫中有20萬單詞,再考慮到一些DES(數據加密算法)的加密運算,每秒搜索1800個,也只需要110秒。
9、使用8位以下的數字作為密碼
數字只有10個,8位數字組成方式只有10的8次方=100,000,000種,按普通計算機每秒搜索3~4萬種的速度計算,黑客軟件只需要不到3小時就可以破解您的密碼。
10、使用5位以下的小寫字母加數字作為口令
小寫字母加數字一共36位,組合方式只有36的5次方=60466176種可能性,按普通的計算機每秒搜索3~4萬種的速度計算,黑客軟件只需要25分鐘就可以破解密碼。
1、密碼和用戶名相同
如:用戶名和密碼都是123456789。幾乎所有盜取密碼的人,都會以用戶名作為破解密碼的突破口。
2、密碼為用戶名中的某幾個鄰近的數字或字母
如:用戶名為test000001,密碼為test或000001。如果您的用戶名是字母和數字組合,如:test000001,那么別人要盜取您的密碼時,肯定會以用戶名中的字母或數字來試密碼。
3、密碼為連續或相同的數字
如123456789、1111111等。幾乎所有黑客軟件,都會從連續或相同的數字開始試密碼。如:先試111、111......到9999999999,然后再試123、321、234、1234......如果您的密碼是111111、123456或654321,甚至用不著黑客軟件也能在片刻試出。
4、密碼為連續或相同的數字
如abcdefg、jjjjjjj等。字母雖然比數字多,但是先試相同的字母如aaaaa,再試連續的字母如abcde,黑客軟件所用時間也不會太多。
5、將用戶名顛倒或加前后綴作為密碼
如用戶名為test,密碼為test123、aaatest、tset等。以用戶名test為例,黑客軟件在嘗試使用test作為密碼之后,還會試著使用諸如test123、test1、tset、tset123等作為密碼,只要是你想得到的變換方法,黑客軟件也會想得到,它破解這種口令,幾乎不需要時間。
6、使用姓氏的拼音作為密碼
在不少黑客軟件中,百家姓往往都被一一列出,并放在字典的前列。只需片刻即可破解您的密碼。以姓氏或姓名的拼音作為密碼還存在一種危險:想盜您密碼的人如果探聽到您的真實姓名,就很有可能用您姓名中的拼音組合來試密碼。
7、使用自己或親友的生日作為密碼
由于表示月份的只有1~12可以使用,表示日期的也只有1-31可以使用,表示日期的肯定19xx或xx,因此表達方式只有100×12×31×2=74400種,即使考慮到年月日共有六種排列順序,一共也只有74400×6=446400種。按普通計算機每秒搜索3~4萬種的速度計算,破解您的密碼最多只需10秒。
8、使用常用英文單詞作為密碼
黑客軟件一般都有一個包含10萬~20萬個英文單詞及相應組合的字典庫。如果您的密碼在這個庫中,那么即使字典庫中有20萬單詞,再考慮到一些DES(數據加密算法)的加密運算,每秒搜索1800個,也只需要110秒。
9、使用8位以下的數字作為密碼
數字只有10個,8位數字組成方式只有10的8次方=100,000,000種,按普通計算機每秒搜索3~4萬種的速度計算,黑客軟件只需要不到3小時就可以破解您的密碼。
10、使用5位以下的小寫字母加數字作為口令
小寫字母加數字一共36位,組合方式只有36的5次方=60466176種可能性,按普通的計算機每秒搜索3~4萬種的速度計算,黑客軟件只需要25分鐘就可以破解密碼。
防止外部數據提交的腳本
[ 2007-03-25 03:23:21 | 作者: sun ]
提交時可能會有人修改Script從本地提交,這樣存在安全提交的問題,所以應該要求從服務器斷路徑提交,其他地址提交無效:
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black
bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=“font:9pt Verdana“>"
response.write "你提交的路徑有誤,禁止從站點外部提交數據請不要亂該參數!"
response.write "</td></tr></table></center>"
response.end
end if
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<br><br><center><table border=1 cellpadding=20 bordercolor=black
bgcolor=#EEEEEE width=450>"
response.write "<tr><td style=“font:9pt Verdana“>"
response.write "你提交的路徑有誤,禁止從站點外部提交數據請不要亂該參數!"
response.write "</td></tr></table></center>"
response.end
end if
木馬各種隱藏技術披露
[ 2007-03-25 03:23:09 | 作者: sun ]
雖然沒有絕對的安全,但如果能知已知彼,了解木馬的隱藏手段,對于木馬即使不能百戰百勝,也能做到及時發現,使損失最小化。那么,木馬究竟是如何躲在我們的系統中的呢?
最基本的隱藏:不可見窗體+隱藏文件
木馬程序無論如何神秘,但歸根究底,仍是Win32平臺下的一種程序。Windows下常見的程序有兩種: 1.Win32應用程序(Win32 Application),比如QQ、Office等都屬于此行列。
2.Win32控制臺程序(Win32 Console),比如硬盤引導修復程序FixMBR。
其中,Win32應用程序通常會有應用程序界面,比如系統中自帶的“計算器”就有提供各種數字按鈕的應用程序界面。木馬雖然屬于Win32應用程序,但其一般不包含窗體或隱藏了窗體(但也有某些特殊情況,如木馬使用者與被害者聊天的窗口),并且將木馬文件屬性設置為“隱藏”,這就是最基本的隱藏手段,稍有經驗的用戶只需打開“任務管理器”,并且將“文件夾選項”中的“顯示所有文件”勾選即可輕松找出木馬,于是便出現了下面要介紹的“進程隱藏”技術。
第一代進程隱藏技術:Windows 98的后門
在Windows 98中,微軟提供了一種能將進程注冊為服務進程的方法。盡管微軟沒有公開提供這種方法的技術實現細節(因為Windows的后續版本中沒有提供這個機制),但仍有高手發現了這個秘密,這種技術稱為RegisterServiceProcess。只要利用此方法,任何程序的進程都能將自己注冊為服務進程,而服務進程Windows 98中的任務管理器中恰巧又是不顯示的,所以便被木馬程序鉆了空子。
要對付這種隱藏的木馬還算簡單,只需使用其他第三方進程管理工具即可找到其所在,并且采用此技術進行隱藏的木馬在Windows 2000/XP(因為不支持這種隱藏方法)中就得現形!中止該進程后將木馬文件刪除即可。可是接下來的第二代進程隱藏技術,就沒有這么簡單對付了。
第二代進程隱藏技術:進程插入
在Windows中,每個進程都有自己的私有內存地址空間,當使用指針(一種訪問內存的機制)訪問內存時,一個進程無法訪問另一個進程的內存地址空間,就好比在未經鄰居同意的情況下,你無法進入鄰居家吃飯一樣。比如QQ在內存中存放了一張圖片的數據,而MSN則無法通過直接讀取內存的方式來獲得該圖片的數據。這樣做同時也保證了程序的穩定性,如果你的進程存在一個錯誤,改寫了一個隨機地址上的內存,這個錯誤不會影響另一個進程使用的內存。 你知道嗎——進程(Process)是什么
對應用程序來說,進程就像一個大容器。在應用程序被運行后,就相當于將應用程序裝進容器里了,你可以往容器里加其他東西(如:應用程序在運行時所需的變量數據、需要引用的DLL文件等),當應用程序被運行兩次時,容器里的東西并不會被倒掉,系統會找一個新的進程容器來容納它。
一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁盤寫入文件,另一個則接收用戶的按鍵操作并及時做出反應,互相不干擾),在程序被運行后中,系統首先要做的就是為該程序進程建立一個默認線程,然后程序可以根據需要自行添加或刪除相關的線程
1.進程插入是什么
獨立的地址空間對于編程人員和用戶來說都是非常有利的。對于編程人員來說,系統更容易捕獲隨意的內存讀取和寫入操作。對于用戶來說,操作系統將變得更加健壯,因為一個應用程序無法破壞另一個進程或操作系統的運行。當然,操作系統的這個健壯特性是要付出代價的,因為要編寫能夠與其他進程進行通信,或者能夠對其他進程進行操作的應用程序將要困難得多。但仍有很多種方法可以打破進程的界限,訪問另一個進程的地址空間,那就是“進程插入”(Process Injection)。一旦木馬的DLL插入了另一個進程的地址空間后,就可以對另一個進程為所欲為,比如下文要介紹的盜QQ密碼。
2.木馬是如何盜走QQ密碼的
普通情況下,一個應用程序所接收的鍵盤、鼠標操作,別的應用程序是無權“過問”的。可盜號木馬是怎么偷偷記錄下我的密碼的呢?木馬首先將1個DLL文件插入到QQ的進程中并成為QQ進程中的一個線程,這樣該木馬DLL就赫然成為了QQ的一部分!然后在用戶輸入密碼時,因為此時木馬DLL已經進入QQ進程內部,所以也就能夠接收到用戶傳遞給QQ的密碼鍵入了,真是“家賊難防”啊!
3.如何插入進程
(1)使用注冊表插入DLL
早期的進程插入式木馬的伎倆,通過修改注冊表中的[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]來達到插入進程的目的。缺點是不實時,修改注冊表后需要重新啟動才能完成進程插入。
(2)使用掛鉤(Hook)插入DLL
比較高級和隱蔽的方式,通過系統的掛鉤機制(即“Hook”,類似于DOS時代的“中斷”)來插入進程(一些盜QQ木馬、鍵盤記錄木馬以Hook方式插入到其他進程中“偷雞摸狗”),需要調用SetWindowsHookEx函數(也是一個Win32 API函數)。缺點是技術門檻較高,程序調試困難,這種木馬的制作者必須具有相當的Win32編程水平。
你知道嗎——什么是API
Windows中提供各種功能實現的接口稱為Win32 API(Application Programming Interface,即“應用程序編程接口”),如一些程序需要對磁盤上的文件進行讀寫,就要先通過對相應的API(文件讀寫就要調用文件相關的API)發出調用請求,然后API根據程序在調用其函數時提供的參數(如讀寫文件就需要同時給出需要讀寫的文件的文件名及路徑)來完成請求實現的功能,最后將調用結果(如寫入文件成功,或讀取文件失敗等)返回給程序。
(3)使用遠程線程函數(CreateRemoteThread)插入DLL
在Windows 2000及以上的系統中提供了這個“遠程進程”機制,可以通過一個系統API函數來向另一個進程中創建線程(插入DLL)。缺點很明顯,僅支持Windows 2000及以上系統,在國內仍有相當多用戶在使用Windows 98,所以采用這種進程插入方式的木馬缺乏平臺通用性。
木馬將自身作為DLL插入別的進程空間后,用查看進程的方式就無法找出木馬的蹤跡了,你能看到的僅僅是一些正常程序的進程,但木馬卻已經偷偷潛入其中了。解決的方法是使用支持“進程模塊查看”的進程管理工具(如“Windows優化大師”提供的進程查看),木馬的DLL模塊就會現形了。
不要相信自己的眼睛:恐怖的進程“蒸發”
嚴格地來講,這應該算是第2.5代的進程隱藏技術了,可是它卻比前幾種技術更為可怕得多。這種技術使得木馬不必將自己插入到其他進程中,而可以直接消失!
它通過Hook技術對系統中所有程序的進程檢測相關API的調用進行了監控,“任務管理器”之所以能夠顯示出系統中所有的進程,也是因為其調用了EnumProcesses等進程相關的API函數,進程信息都包含在該函數的返回結果中,由發出調用請求的程序接收返回結果并進行處理(如“任務管理器”在接收到結果后就在進程列表中顯示出來)。
而木馬由于事先對該API函數進行了Hook,所以在“任務管理器”(或其他調用了列舉進程函數的程序)調用EnumProcesses函數時(此時的API函數充當了“內線”的角色),木馬便得到了通知,并且在函數將結果(列出所有進程)返回給程序前,就已將自身的進程信息從返回結果中抹去了。就好比你正在看電視節目,卻有人不知不覺中將電視接上了DVD,你在不知不覺中就被欺騙了。
所以無論是“任務管理器”還是殺毒軟件,想對這種木馬的進程進行檢測都是徒勞的。這種木馬目前沒有非常有效的查殺手段,只有在其運行前由殺毒軟件檢測到木馬文件并阻止其病毒體的運行。當時還有一種技術是由木馬程序將其自身的進程信息從Windows系統用以記錄進程信息的“進程鏈表”中刪除,這樣進程管理工具就無法從“進程鏈表”中獲得木馬的進程信息了。但由于缺乏平臺通用性而且在程序運行時有一些問題,所以沒有被廣泛采用。
你知道嗎——什么是Hook
Hook是Windows中提供的一種用以替換DOS下“中斷”的一種系統機制,中文譯名為“掛鉤”或“鉤子”。在對特定的系統事件(包括上文中的特定API函數的調用事件)進行Hook后,一旦發生已Hook的事件,對該事件進行Hook的程序(如:木馬)就會收到系統的通知,這時程序就能在第一時間對該事件做出響應(木馬程序便搶在函數返回前對結果進行了修改)。
毫無蹤跡:全方位立體隱藏
利用剛才介紹的Hook隱藏進程的手段,木馬可以輕而易舉地實現文件的隱藏,只需將Hook技術應用在文件相關的API函數上即可,這樣無論是“資源管理器”還是殺毒軟件都無法找出木馬所在了。更令人吃驚的是,現在已經有木馬(如:灰鴿子)利用該技術實現了文件和進程的隱藏。要防止這種木馬最好的手段仍是利用殺毒軟件在其運行前進行攔截。
跟殺毒軟件對著干:反殺毒軟件外殼
木馬再狡猾,可是一旦被殺毒軟件定義了特征碼,在運行前就被攔截了。要躲過殺毒軟件的追殺,很多木馬就被加了殼,相當于給木馬穿了件衣服,這樣殺毒軟件就認不出來了,但有部分殺毒軟件會嘗試對常用殼進行脫殼,然后再查殺(小樣,別以為穿上件馬夾我就不認識你了)。除了被動的隱藏外,最近還發現了能夠主動和殺毒軟件對著干的殼,木馬在加了這種殼之后,一旦運行,則外殼先得到程序控制權,由其通過各種手段對系統中安裝的殺毒軟件進行破壞,最后在確認安全(殺毒軟件的保護已被瓦解)后由殼釋放包裹在自己“體內”的木馬體并執行之。對付這種木馬的方法是使用具有脫殼能力的殺毒軟件對系統進行保護。
你知道嗎——什么是殼
顧名思義,你可以很輕易地猜到,這是一種包在外面的東西。沒錯,殼能夠將文件(比如EXE)包住,然后在文件被運行時,首先由殼獲得控制權,然后釋放并運行包裹著的文件體。很多殼能對自己包住的文件體進行加密,這樣就可以防止殺毒軟件的查殺。比如原先殺毒軟件定義的該木馬的特征是“12345”,如果發現某文件中含有這個特征,就認為該文件是木馬,而帶有加密功能的殼則會對文件體進行加密(如:原先的特征是“12345”,加密后變成了“54321”,這樣殺毒軟件當然不能靠文件特征進行檢查了)。脫殼指的就是將文件外邊的殼去除,恢復文件沒有加殼前的狀態。
最基本的隱藏:不可見窗體+隱藏文件
木馬程序無論如何神秘,但歸根究底,仍是Win32平臺下的一種程序。Windows下常見的程序有兩種: 1.Win32應用程序(Win32 Application),比如QQ、Office等都屬于此行列。
2.Win32控制臺程序(Win32 Console),比如硬盤引導修復程序FixMBR。
其中,Win32應用程序通常會有應用程序界面,比如系統中自帶的“計算器”就有提供各種數字按鈕的應用程序界面。木馬雖然屬于Win32應用程序,但其一般不包含窗體或隱藏了窗體(但也有某些特殊情況,如木馬使用者與被害者聊天的窗口),并且將木馬文件屬性設置為“隱藏”,這就是最基本的隱藏手段,稍有經驗的用戶只需打開“任務管理器”,并且將“文件夾選項”中的“顯示所有文件”勾選即可輕松找出木馬,于是便出現了下面要介紹的“進程隱藏”技術。
第一代進程隱藏技術:Windows 98的后門
在Windows 98中,微軟提供了一種能將進程注冊為服務進程的方法。盡管微軟沒有公開提供這種方法的技術實現細節(因為Windows的后續版本中沒有提供這個機制),但仍有高手發現了這個秘密,這種技術稱為RegisterServiceProcess。只要利用此方法,任何程序的進程都能將自己注冊為服務進程,而服務進程Windows 98中的任務管理器中恰巧又是不顯示的,所以便被木馬程序鉆了空子。
要對付這種隱藏的木馬還算簡單,只需使用其他第三方進程管理工具即可找到其所在,并且采用此技術進行隱藏的木馬在Windows 2000/XP(因為不支持這種隱藏方法)中就得現形!中止該進程后將木馬文件刪除即可。可是接下來的第二代進程隱藏技術,就沒有這么簡單對付了。
第二代進程隱藏技術:進程插入
在Windows中,每個進程都有自己的私有內存地址空間,當使用指針(一種訪問內存的機制)訪問內存時,一個進程無法訪問另一個進程的內存地址空間,就好比在未經鄰居同意的情況下,你無法進入鄰居家吃飯一樣。比如QQ在內存中存放了一張圖片的數據,而MSN則無法通過直接讀取內存的方式來獲得該圖片的數據。這樣做同時也保證了程序的穩定性,如果你的進程存在一個錯誤,改寫了一個隨機地址上的內存,這個錯誤不會影響另一個進程使用的內存。 你知道嗎——進程(Process)是什么
對應用程序來說,進程就像一個大容器。在應用程序被運行后,就相當于將應用程序裝進容器里了,你可以往容器里加其他東西(如:應用程序在運行時所需的變量數據、需要引用的DLL文件等),當應用程序被運行兩次時,容器里的東西并不會被倒掉,系統會找一個新的進程容器來容納它。
一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁盤寫入文件,另一個則接收用戶的按鍵操作并及時做出反應,互相不干擾),在程序被運行后中,系統首先要做的就是為該程序進程建立一個默認線程,然后程序可以根據需要自行添加或刪除相關的線程
1.進程插入是什么
獨立的地址空間對于編程人員和用戶來說都是非常有利的。對于編程人員來說,系統更容易捕獲隨意的內存讀取和寫入操作。對于用戶來說,操作系統將變得更加健壯,因為一個應用程序無法破壞另一個進程或操作系統的運行。當然,操作系統的這個健壯特性是要付出代價的,因為要編寫能夠與其他進程進行通信,或者能夠對其他進程進行操作的應用程序將要困難得多。但仍有很多種方法可以打破進程的界限,訪問另一個進程的地址空間,那就是“進程插入”(Process Injection)。一旦木馬的DLL插入了另一個進程的地址空間后,就可以對另一個進程為所欲為,比如下文要介紹的盜QQ密碼。
2.木馬是如何盜走QQ密碼的
普通情況下,一個應用程序所接收的鍵盤、鼠標操作,別的應用程序是無權“過問”的。可盜號木馬是怎么偷偷記錄下我的密碼的呢?木馬首先將1個DLL文件插入到QQ的進程中并成為QQ進程中的一個線程,這樣該木馬DLL就赫然成為了QQ的一部分!然后在用戶輸入密碼時,因為此時木馬DLL已經進入QQ進程內部,所以也就能夠接收到用戶傳遞給QQ的密碼鍵入了,真是“家賊難防”啊!
3.如何插入進程
(1)使用注冊表插入DLL
早期的進程插入式木馬的伎倆,通過修改注冊表中的[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]來達到插入進程的目的。缺點是不實時,修改注冊表后需要重新啟動才能完成進程插入。
(2)使用掛鉤(Hook)插入DLL
比較高級和隱蔽的方式,通過系統的掛鉤機制(即“Hook”,類似于DOS時代的“中斷”)來插入進程(一些盜QQ木馬、鍵盤記錄木馬以Hook方式插入到其他進程中“偷雞摸狗”),需要調用SetWindowsHookEx函數(也是一個Win32 API函數)。缺點是技術門檻較高,程序調試困難,這種木馬的制作者必須具有相當的Win32編程水平。
你知道嗎——什么是API
Windows中提供各種功能實現的接口稱為Win32 API(Application Programming Interface,即“應用程序編程接口”),如一些程序需要對磁盤上的文件進行讀寫,就要先通過對相應的API(文件讀寫就要調用文件相關的API)發出調用請求,然后API根據程序在調用其函數時提供的參數(如讀寫文件就需要同時給出需要讀寫的文件的文件名及路徑)來完成請求實現的功能,最后將調用結果(如寫入文件成功,或讀取文件失敗等)返回給程序。
(3)使用遠程線程函數(CreateRemoteThread)插入DLL
在Windows 2000及以上的系統中提供了這個“遠程進程”機制,可以通過一個系統API函數來向另一個進程中創建線程(插入DLL)。缺點很明顯,僅支持Windows 2000及以上系統,在國內仍有相當多用戶在使用Windows 98,所以采用這種進程插入方式的木馬缺乏平臺通用性。
木馬將自身作為DLL插入別的進程空間后,用查看進程的方式就無法找出木馬的蹤跡了,你能看到的僅僅是一些正常程序的進程,但木馬卻已經偷偷潛入其中了。解決的方法是使用支持“進程模塊查看”的進程管理工具(如“Windows優化大師”提供的進程查看),木馬的DLL模塊就會現形了。
不要相信自己的眼睛:恐怖的進程“蒸發”
嚴格地來講,這應該算是第2.5代的進程隱藏技術了,可是它卻比前幾種技術更為可怕得多。這種技術使得木馬不必將自己插入到其他進程中,而可以直接消失!
它通過Hook技術對系統中所有程序的進程檢測相關API的調用進行了監控,“任務管理器”之所以能夠顯示出系統中所有的進程,也是因為其調用了EnumProcesses等進程相關的API函數,進程信息都包含在該函數的返回結果中,由發出調用請求的程序接收返回結果并進行處理(如“任務管理器”在接收到結果后就在進程列表中顯示出來)。
而木馬由于事先對該API函數進行了Hook,所以在“任務管理器”(或其他調用了列舉進程函數的程序)調用EnumProcesses函數時(此時的API函數充當了“內線”的角色),木馬便得到了通知,并且在函數將結果(列出所有進程)返回給程序前,就已將自身的進程信息從返回結果中抹去了。就好比你正在看電視節目,卻有人不知不覺中將電視接上了DVD,你在不知不覺中就被欺騙了。
所以無論是“任務管理器”還是殺毒軟件,想對這種木馬的進程進行檢測都是徒勞的。這種木馬目前沒有非常有效的查殺手段,只有在其運行前由殺毒軟件檢測到木馬文件并阻止其病毒體的運行。當時還有一種技術是由木馬程序將其自身的進程信息從Windows系統用以記錄進程信息的“進程鏈表”中刪除,這樣進程管理工具就無法從“進程鏈表”中獲得木馬的進程信息了。但由于缺乏平臺通用性而且在程序運行時有一些問題,所以沒有被廣泛采用。
你知道嗎——什么是Hook
Hook是Windows中提供的一種用以替換DOS下“中斷”的一種系統機制,中文譯名為“掛鉤”或“鉤子”。在對特定的系統事件(包括上文中的特定API函數的調用事件)進行Hook后,一旦發生已Hook的事件,對該事件進行Hook的程序(如:木馬)就會收到系統的通知,這時程序就能在第一時間對該事件做出響應(木馬程序便搶在函數返回前對結果進行了修改)。
毫無蹤跡:全方位立體隱藏
利用剛才介紹的Hook隱藏進程的手段,木馬可以輕而易舉地實現文件的隱藏,只需將Hook技術應用在文件相關的API函數上即可,這樣無論是“資源管理器”還是殺毒軟件都無法找出木馬所在了。更令人吃驚的是,現在已經有木馬(如:灰鴿子)利用該技術實現了文件和進程的隱藏。要防止這種木馬最好的手段仍是利用殺毒軟件在其運行前進行攔截。
跟殺毒軟件對著干:反殺毒軟件外殼
木馬再狡猾,可是一旦被殺毒軟件定義了特征碼,在運行前就被攔截了。要躲過殺毒軟件的追殺,很多木馬就被加了殼,相當于給木馬穿了件衣服,這樣殺毒軟件就認不出來了,但有部分殺毒軟件會嘗試對常用殼進行脫殼,然后再查殺(小樣,別以為穿上件馬夾我就不認識你了)。除了被動的隱藏外,最近還發現了能夠主動和殺毒軟件對著干的殼,木馬在加了這種殼之后,一旦運行,則外殼先得到程序控制權,由其通過各種手段對系統中安裝的殺毒軟件進行破壞,最后在確認安全(殺毒軟件的保護已被瓦解)后由殼釋放包裹在自己“體內”的木馬體并執行之。對付這種木馬的方法是使用具有脫殼能力的殺毒軟件對系統進行保護。
你知道嗎——什么是殼
顧名思義,你可以很輕易地猜到,這是一種包在外面的東西。沒錯,殼能夠將文件(比如EXE)包住,然后在文件被運行時,首先由殼獲得控制權,然后釋放并運行包裹著的文件體。很多殼能對自己包住的文件體進行加密,這樣就可以防止殺毒軟件的查殺。比如原先殺毒軟件定義的該木馬的特征是“12345”,如果發現某文件中含有這個特征,就認為該文件是木馬,而帶有加密功能的殼則會對文件體進行加密(如:原先的特征是“12345”,加密后變成了“54321”,這樣殺毒軟件當然不能靠文件特征進行檢查了)。脫殼指的就是將文件外邊的殼去除,恢復文件沒有加殼前的狀態。
解決ASP(圖像)上傳漏洞的方法
[ 2007-03-25 03:22:57 | 作者: sun ]
經常聽說的ASP上傳漏洞,即是將一些木馬文件修改后綴名(修改為圖像文件后綴),進行上傳。
針對此情況使用下列函數進行辨別:
<%
'******************************************************************
'CheckFileType 函數用來檢查文件是否為圖片文件
'參數filename是本地文件的路徑
'如果是文件jpeg,gif,bmp,png圖片中的一種,函數返回true,否則返回false
'******************************************************************
const adTypeBinary=1
dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
function CheckFileType(filename)
on error resume next
CheckFileType=false
dim fstream,fileExt,stamp,i
fileExt=mid(filename,InStrRev(filename,".")+1)
set fstream=Server.createobject("ADODB.Stream")
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFile filename
fstream.position=0
select case fileExt
case "jpg","jpeg"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=jpg(i) then CheckFileType=true else CheckFileType=false
next
case "gif"
stamp=fstream.read(6)
for i=0 to 5
if ascB(MidB(stamp,i+1,1))=gif(i) then CheckFileType=true else CheckFileType=false
next
case "png"
stamp=fstream.read(4)
for i=0 to 3
if ascB(MidB(stamp,i+1,1))=png(i) then CheckFileType=true else CheckFileType=false
next
case "bmp"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=bmp(i) then CheckFileType=true else CheckFileType=false
next
end select
fstream.Close
set fseteam=nothing
if err.number<>0 then CheckFileType=false
end function
%>
那么在應用的時候
CheckFileType(server.mappath("cnbruce.jpg"))
或者
CheckFileType("F:/web/164/images/cnbruce.jpg"))
反正即是檢測驗證本地物理地址的圖像文件類型,返回 true 或 false值
所以這個情況應用在圖像上傳中,目前的辦法是先允許該“偽圖像”文件的上傳,接著使用以上的自定義函數判斷該文件是否符合圖像的規范,若是木馬偽裝的圖像文件則FSO刪除之,比如:
file.SaveAs Server.mappath(filename) '保存文件
If not CheckFileType(Server.mappath(filename)) then
response.write "錯誤的圖像格式"
Set fso = CreateObject("Scripting.FileSystemObject")
Set ficn = fso.GetFile(Server.mappath(filename))
ficn.delete
set ficn=nothing
set fso=nothing
response.end
end if
則是先將文件上傳,接著立馬使用自定義函數判斷文件圖像類型的吻合性,FSO做出刪除該文件的操作。
ASP上傳漏洞還利用"\0"對filepath進行手腳操作
http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=635
針對這樣的情況可使用如下函數
function TrueStr(fileTrue)
str_len=len(fileTrue)
pos=Instr(fileTrue,chr(0))
if pos=0 or pos=str_len then
TrueStr=true
else
TrueStr=false
end if
end function
接著就可判斷后再做文件的上傳
if TrueStr(filename)=false then
response.write "非法文件"
response.end
end if
file.SaveAs Server.mappath(filename)
所以,在Blog中的一文:(ASP)文件系統之化境無組件(v2.0)上傳
關于upfile.asp的全新內容如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="upload.inc"--> <html> <head> <title>文件上傳</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> </head> <body> <% on error resume next dim upload,f_folder,file,formPath,iCount,filename,fileExt,filesizemin,filesizemax '****************************************************************** 'CheckFileType 函數用來檢查文件是否為圖片文件 '參數filename是本地文件的路徑 '如果是文件jpeg,gif,bmp,png圖片中的一種,函數返回true,否則返回false '****************************************************************** const adTypeBinary=1 dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8) dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D) dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47) dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61) function CheckFileType(filename) CheckFileType=false dim fstream,fileExt,stamp,i fileExt=mid(filename,InStrRev(filename,".")+1) set fstream=Server.createobject("ADODB.Stream") fstream.Open fstream.Type=adTypeBinary fstream.LoadFromFile filename fstream.position=0 select case fileExt case "jpg","jpeg" stamp=fstream.read(2) for i=0 to 1 if ascB(MidB(stamp,i+1,1))=jpg(i) then CheckFileType=true else CheckFileType=false next case "gif" stamp=fstream.read(6) for i=0 to 5 if ascB(MidB(stamp,i+1,1))=gif(i) then CheckFileType=true else CheckFileType=false next case "png" stamp=fstream.read(4) for i=0 to 3 if ascB(MidB(stamp,i+1,1))=png(i) then CheckFileType=true else CheckFileType=false next case "bmp" stamp=fstream.read(2) for i=0 to 1 if ascB(MidB(stamp,i+1,1))=bmp(i) then CheckFileType=true else CheckFileType=false next end select fstream.Close set fseteam=nothing if err.number<>0 then CheckFileType=false end function function TrueStr(fileTrue) str_len=len(fileTrue) pos=Instr(fileTrue,chr(0)) if pos=0 or pos=str_len then TrueStr=true else TrueStr=false end if end function filesizemin=100 filesizemax=200*1024 set upload=new upload_5xSoft '建立上傳對象 f_folder=upload.form("upfilefolder") '********************************列出所有上傳文件*************************************************** For each formName in upload.objFile set file=upload.file(formName) If file.filesize>0 then '********************************檢測文件大小*************************************************** If file.filesize<filesizemin Then response.write "你上傳的文件太小了 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" ElseIf file.filesize>filesizemax then response.write "文件大小超過了 "&filesizemax&"字節 限制 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" End If '********************************檢測文件類型**************************************************** fileExt=ucase(right(file.filename,4)) uploadsuc=false Forum_upload="RAR|ZIP|SWF|JPG|PNG|GIF|DOC|TXT|CHM|PDF|ACE|MP3|WMA|WMV|MIDI|AVI|RM|RA|RMVB|MOV|XLS" Forumupload=split(Forum_upload,"|") for i=0 to ubound(Forumupload) if fileEXT="."&trim(Forumupload(i)) then uploadsuc=true exit for else uploadsuc=false end if next if uploadsuc=false then response.write "文件格式不正確 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" response.end end if '********************************建立文件上傳的目錄文件夾**************************************** Set upf=Server.CreateObject("Scripting.FileSystemObject") If Err<>0 Then Err.Clear response.write("您的服務器不支持FSO") response.end End If f_type= replace(fileExt,".","") f_name= year(now)&"-"&month(now) If upf.FolderExists(Server.MapPath(f_folder&"/"&f_type&"/"&f_name))=False Then If upf.FolderExists(Server.MapPath(f_folder&"/"&f_type))=False Then If upf.FolderExists(Server.MapPath(f_folder))=False Then upf.CreateFolder Server.MapPath(f_folder) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) Else upf.CreateFolder Server.MapPath(f_folder&"/"&f_type) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) End If Else upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) End If End If f_ftn=f_folder&"/"&f_type&"/"&f_name Set upf=Nothing '********************************保存上傳文件至文件夾***************************************** randomize ranNum=int(90000*rnd)+10000 filename=f_ftn&"/"&day(now)&"-"&ranNum&"-"&file.filename if TrueStr(filename)=false then response.write "非法文件" response.end end if if file.filesize>filesizemin and file.filesize<filesizemax then file.SaveAs Server.mappath(filename) '保存文件 if f_type="JPG" or f_type="GIF" or f_type="PNG" then If not CheckFileType(Server.mappath(filename)) then response.write "錯誤的圖像格式 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" Set fso = CreateObject("Scripting.FileSystemObject") Set ficn = fso.GetFile(Server.mappath(filename)) ficn.delete set ficn=nothing set fso=nothing response.end end if response.write "<script>parent.cn_bruce.cn_content.value+=''</script>" ElseIf f_type="ZIP" or f_type="RAR" or f_type="DOC" or f_type="TXT" then response.write "<script>parent.cn_bruce.cn_content.value+='"&filename&"'</script>" 'ElseIf else response.write "<script>parent.cn_bruce.cn_content.value+=' "&filename&" '</script>" end if iCount=iCount+1 end if set file=nothing end if next set upload=nothing '刪除此對象 response.write (iCount&" 個文件上傳成功! <a href=# onclick=history.go(-1)>繼續上傳</a>") %> </body> </html>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
另外,請各位調試是否具有上傳漏洞:
http://www.164.cc/2006/upf/
針對此情況使用下列函數進行辨別:
<%
'******************************************************************
'CheckFileType 函數用來檢查文件是否為圖片文件
'參數filename是本地文件的路徑
'如果是文件jpeg,gif,bmp,png圖片中的一種,函數返回true,否則返回false
'******************************************************************
const adTypeBinary=1
dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
function CheckFileType(filename)
on error resume next
CheckFileType=false
dim fstream,fileExt,stamp,i
fileExt=mid(filename,InStrRev(filename,".")+1)
set fstream=Server.createobject("ADODB.Stream")
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFile filename
fstream.position=0
select case fileExt
case "jpg","jpeg"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=jpg(i) then CheckFileType=true else CheckFileType=false
next
case "gif"
stamp=fstream.read(6)
for i=0 to 5
if ascB(MidB(stamp,i+1,1))=gif(i) then CheckFileType=true else CheckFileType=false
next
case "png"
stamp=fstream.read(4)
for i=0 to 3
if ascB(MidB(stamp,i+1,1))=png(i) then CheckFileType=true else CheckFileType=false
next
case "bmp"
stamp=fstream.read(2)
for i=0 to 1
if ascB(MidB(stamp,i+1,1))=bmp(i) then CheckFileType=true else CheckFileType=false
next
end select
fstream.Close
set fseteam=nothing
if err.number<>0 then CheckFileType=false
end function
%>
那么在應用的時候
CheckFileType(server.mappath("cnbruce.jpg"))
或者
CheckFileType("F:/web/164/images/cnbruce.jpg"))
反正即是檢測驗證本地物理地址的圖像文件類型,返回 true 或 false值
所以這個情況應用在圖像上傳中,目前的辦法是先允許該“偽圖像”文件的上傳,接著使用以上的自定義函數判斷該文件是否符合圖像的規范,若是木馬偽裝的圖像文件則FSO刪除之,比如:
file.SaveAs Server.mappath(filename) '保存文件
If not CheckFileType(Server.mappath(filename)) then
response.write "錯誤的圖像格式"
Set fso = CreateObject("Scripting.FileSystemObject")
Set ficn = fso.GetFile(Server.mappath(filename))
ficn.delete
set ficn=nothing
set fso=nothing
response.end
end if
則是先將文件上傳,接著立馬使用自定義函數判斷文件圖像類型的吻合性,FSO做出刪除該文件的操作。
ASP上傳漏洞還利用"\0"對filepath進行手腳操作
http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=635
針對這樣的情況可使用如下函數
function TrueStr(fileTrue)
str_len=len(fileTrue)
pos=Instr(fileTrue,chr(0))
if pos=0 or pos=str_len then
TrueStr=true
else
TrueStr=false
end if
end function
接著就可判斷后再做文件的上傳
if TrueStr(filename)=false then
response.write "非法文件"
response.end
end if
file.SaveAs Server.mappath(filename)
所以,在Blog中的一文:(ASP)文件系統之化境無組件(v2.0)上傳
關于upfile.asp的全新內容如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="upload.inc"--> <html> <head> <title>文件上傳</title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> </head> <body> <% on error resume next dim upload,f_folder,file,formPath,iCount,filename,fileExt,filesizemin,filesizemax '****************************************************************** 'CheckFileType 函數用來檢查文件是否為圖片文件 '參數filename是本地文件的路徑 '如果是文件jpeg,gif,bmp,png圖片中的一種,函數返回true,否則返回false '****************************************************************** const adTypeBinary=1 dim jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8) dim bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D) dim png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47) dim gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61) function CheckFileType(filename) CheckFileType=false dim fstream,fileExt,stamp,i fileExt=mid(filename,InStrRev(filename,".")+1) set fstream=Server.createobject("ADODB.Stream") fstream.Open fstream.Type=adTypeBinary fstream.LoadFromFile filename fstream.position=0 select case fileExt case "jpg","jpeg" stamp=fstream.read(2) for i=0 to 1 if ascB(MidB(stamp,i+1,1))=jpg(i) then CheckFileType=true else CheckFileType=false next case "gif" stamp=fstream.read(6) for i=0 to 5 if ascB(MidB(stamp,i+1,1))=gif(i) then CheckFileType=true else CheckFileType=false next case "png" stamp=fstream.read(4) for i=0 to 3 if ascB(MidB(stamp,i+1,1))=png(i) then CheckFileType=true else CheckFileType=false next case "bmp" stamp=fstream.read(2) for i=0 to 1 if ascB(MidB(stamp,i+1,1))=bmp(i) then CheckFileType=true else CheckFileType=false next end select fstream.Close set fseteam=nothing if err.number<>0 then CheckFileType=false end function function TrueStr(fileTrue) str_len=len(fileTrue) pos=Instr(fileTrue,chr(0)) if pos=0 or pos=str_len then TrueStr=true else TrueStr=false end if end function filesizemin=100 filesizemax=200*1024 set upload=new upload_5xSoft '建立上傳對象 f_folder=upload.form("upfilefolder") '********************************列出所有上傳文件*************************************************** For each formName in upload.objFile set file=upload.file(formName) If file.filesize>0 then '********************************檢測文件大小*************************************************** If file.filesize<filesizemin Then response.write "你上傳的文件太小了 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" ElseIf file.filesize>filesizemax then response.write "文件大小超過了 "&filesizemax&"字節 限制 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" End If '********************************檢測文件類型**************************************************** fileExt=ucase(right(file.filename,4)) uploadsuc=false Forum_upload="RAR|ZIP|SWF|JPG|PNG|GIF|DOC|TXT|CHM|PDF|ACE|MP3|WMA|WMV|MIDI|AVI|RM|RA|RMVB|MOV|XLS" Forumupload=split(Forum_upload,"|") for i=0 to ubound(Forumupload) if fileEXT="."&trim(Forumupload(i)) then uploadsuc=true exit for else uploadsuc=false end if next if uploadsuc=false then response.write "文件格式不正確 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" response.end end if '********************************建立文件上傳的目錄文件夾**************************************** Set upf=Server.CreateObject("Scripting.FileSystemObject") If Err<>0 Then Err.Clear response.write("您的服務器不支持FSO") response.end End If f_type= replace(fileExt,".","") f_name= year(now)&"-"&month(now) If upf.FolderExists(Server.MapPath(f_folder&"/"&f_type&"/"&f_name))=False Then If upf.FolderExists(Server.MapPath(f_folder&"/"&f_type))=False Then If upf.FolderExists(Server.MapPath(f_folder))=False Then upf.CreateFolder Server.MapPath(f_folder) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) Else upf.CreateFolder Server.MapPath(f_folder&"/"&f_type) upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) End If Else upf.CreateFolder Server.MapPath(f_folder&"/"&f_type&"/"&f_name) End If End If f_ftn=f_folder&"/"&f_type&"/"&f_name Set upf=Nothing '********************************保存上傳文件至文件夾***************************************** randomize ranNum=int(90000*rnd)+10000 filename=f_ftn&"/"&day(now)&"-"&ranNum&"-"&file.filename if TrueStr(filename)=false then response.write "非法文件" response.end end if if file.filesize>filesizemin and file.filesize<filesizemax then file.SaveAs Server.mappath(filename) '保存文件 if f_type="JPG" or f_type="GIF" or f_type="PNG" then If not CheckFileType(Server.mappath(filename)) then response.write "錯誤的圖像格式 [ <a href=# onclick=history.go(-1)>重新上傳</a> ]" Set fso = CreateObject("Scripting.FileSystemObject") Set ficn = fso.GetFile(Server.mappath(filename)) ficn.delete set ficn=nothing set fso=nothing response.end end if response.write "<script>parent.cn_bruce.cn_content.value+=''</script>" ElseIf f_type="ZIP" or f_type="RAR" or f_type="DOC" or f_type="TXT" then response.write "<script>parent.cn_bruce.cn_content.value+='"&filename&"'</script>" 'ElseIf else response.write "<script>parent.cn_bruce.cn_content.value+=' "&filename&" '</script>" end if iCount=iCount+1 end if set file=nothing end if next set upload=nothing '刪除此對象 response.write (iCount&" 個文件上傳成功! <a href=# onclick=history.go(-1)>繼續上傳</a>") %> </body> </html>
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
另外,請各位調試是否具有上傳漏洞:
http://www.164.cc/2006/upf/
SNMP網絡安全性配置指南
[ 2007-03-25 03:22:44 | 作者: sun ]
如何在Windows Server 2003中為“簡單網絡管理協議”(SNMP)服務配置網絡安全性呢?SNMP服務起著代理的作用,它會收集可以向SNMP管理站或控制臺報告的信息。您可以使用SNMP服務來收集數據,并且在整個公司網絡范圍內管理基于 Windows Server 2003、Microsoft Windows XP和Microsoft Windows 2000的計算機。
通常,保護SNMP代理與SNMP管理站之間的通信的方法是:給這些代理和管理站指定一個共享的社區名稱。當SNMP管理站向SNMP服務發送查詢時,請求方的社區名稱就會與代理的社區名稱進行比較。如果匹配,則表明SNMP管理站已通過身份驗證。如果不匹配,則表明SNMP代理認為該請求是“失敗訪問” 嘗試,并且可能會發送一條SNMP陷阱消息。
SNMP消息是以明文形式發送的。這些明文消息很容易被“Microsoft網絡監視器”這樣的網絡分析程序截取并解碼。未經授權的人員可以捕獲社區名稱,以獲取有關網絡資源的重要信息。
“IP安全協議”(IP Sec)可用來保護SNMP通信。您可以創建保護TCP和UDP端口161和162上的通信的IP Sec策略,以保護SNMP事務。
創建篩選器列表
要創建保護SNMP消息的IP Sec策略,先要創建篩選器列表。方法是:
單擊開始,指向管理工具,然后單擊本地安全策略。
展開安全設置,右鍵單擊“本地計算機上的IP安全策略”,然后單擊“管理IP篩選器列表和篩選器操作”。
單擊“管理IP篩選器列表”選項卡,然后單擊添加。
在IP篩選器列表對話框中,鍵入SNMP消息(161/162)(在名稱框中),然后鍵入TCP和UDP端口161篩選器(在說明框中)。
單擊使用“添加向導”復選框,將其清除,然后單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像。匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型”框中,選擇UDP。在“設置IP協議端口”框中,選擇“從此端口”,然后在框中鍵入161。單擊“到此端口”,然后在框中鍵入161。
單擊確定。
在IP篩選器列表對話框中,選擇添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。選中“鏡像、匹配具有正好相反的源和目標地址的數據包”復選框。
單擊協議選項卡。在“選擇協議類型框中,單擊TCP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入161。單擊“到此端口”,然后在框中鍵入161。
單擊確定。
在IP篩選器列表對話框中,單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像,匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型”框中,單擊UDP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入162。單擊“到此端口”,然后在框中鍵入162。
單擊確定,在IP篩選器列表對話框中,單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像。匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型框中,單擊TCP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入162。單擊“到此端口”,然后在框中鍵入162。
單擊確定 在IP篩選器列表對話框中單擊確定,然后單擊“管理IP篩選器列表和篩選器操作”對話框中的確定。
創建IPSec策略
要創建IPSec策略來對SNMP通信強制實施IPSec,請按以下步驟操作:
右鍵單擊左窗格中“本地計算機上的IP安全策略”,然后單擊創建IP安全策略。
“IP安全策略向導”啟動。
單擊下一步。
在“IP安全策略名稱”頁上的名稱框中鍵入Secure SNMP。在說明框中,鍵入Force IPSec for SNMP Communications,然后單擊下一步。
單擊“激活默認響應規則”復選框,將其清除,然后單擊下一步。
在“正在完成IP安全策略向導”頁上,確認“編輯屬性”復選框已被選中,然后單擊完成。
在安全“NMP屬性”對話框中,單擊使用“添加向導”復選框,將其清除,然后單擊添加。
單擊IP“篩選器列表”選項卡,然后單擊SNMP消息(161/162)。
單擊篩選器操作選項卡,然后單擊需要安全。
單擊身份驗證方法選項卡。默認的身份驗證方法為Kerberos。如果您需要另一種身份驗證方法,則請單擊添加。在新身份驗證方法屬性對話框中,從下面的列表中選擇要使用的身份驗證方法,然后單擊確定:
ActiveDirectory默認值(KerberosV5協議)
使用此字符串(預共享密鑰)
在新規則屬性對話框中,單擊應用,然后單擊確定。
在SNMP“屬性”對話框中,確認SNMP“消息(161/162)”復選框已被選中,然后單擊確定。
在“本地安全設置”控制臺的右窗格中,右鍵單擊安全SNMP規則,然后單擊指定。
在所有運行SNMP服務的基于Windows的計算機上完成此過程。SNMP管理站上也必須配置此IPSec策略。
通常,保護SNMP代理與SNMP管理站之間的通信的方法是:給這些代理和管理站指定一個共享的社區名稱。當SNMP管理站向SNMP服務發送查詢時,請求方的社區名稱就會與代理的社區名稱進行比較。如果匹配,則表明SNMP管理站已通過身份驗證。如果不匹配,則表明SNMP代理認為該請求是“失敗訪問” 嘗試,并且可能會發送一條SNMP陷阱消息。
SNMP消息是以明文形式發送的。這些明文消息很容易被“Microsoft網絡監視器”這樣的網絡分析程序截取并解碼。未經授權的人員可以捕獲社區名稱,以獲取有關網絡資源的重要信息。
“IP安全協議”(IP Sec)可用來保護SNMP通信。您可以創建保護TCP和UDP端口161和162上的通信的IP Sec策略,以保護SNMP事務。
創建篩選器列表
要創建保護SNMP消息的IP Sec策略,先要創建篩選器列表。方法是:
單擊開始,指向管理工具,然后單擊本地安全策略。
展開安全設置,右鍵單擊“本地計算機上的IP安全策略”,然后單擊“管理IP篩選器列表和篩選器操作”。
單擊“管理IP篩選器列表”選項卡,然后單擊添加。
在IP篩選器列表對話框中,鍵入SNMP消息(161/162)(在名稱框中),然后鍵入TCP和UDP端口161篩選器(在說明框中)。
單擊使用“添加向導”復選框,將其清除,然后單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像。匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型”框中,選擇UDP。在“設置IP協議端口”框中,選擇“從此端口”,然后在框中鍵入161。單擊“到此端口”,然后在框中鍵入161。
單擊確定。
在IP篩選器列表對話框中,選擇添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。選中“鏡像、匹配具有正好相反的源和目標地址的數據包”復選框。
單擊協議選項卡。在“選擇協議類型框中,單擊TCP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入161。單擊“到此端口”,然后在框中鍵入161。
單擊確定。
在IP篩選器列表對話框中,單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像,匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型”框中,單擊UDP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入162。單擊“到此端口”,然后在框中鍵入162。
單擊確定,在IP篩選器列表對話框中,單擊添加。
在“源地址”框(位于顯示的IP篩選器屬性對話框的地址選項卡上)中,單擊“任意IP地址”。在“目標地址”框中,單擊我的IP地址。單擊“鏡像。匹配具有正好相反的源和目標地址的數據包”復選框,將其選中。
單擊協議選項卡。在“選擇協議類型框中,單擊TCP。在“設置IP協議”框中,單擊“從此端口”,然后在框中鍵入162。單擊“到此端口”,然后在框中鍵入162。
單擊確定 在IP篩選器列表對話框中單擊確定,然后單擊“管理IP篩選器列表和篩選器操作”對話框中的確定。
創建IPSec策略
要創建IPSec策略來對SNMP通信強制實施IPSec,請按以下步驟操作:
右鍵單擊左窗格中“本地計算機上的IP安全策略”,然后單擊創建IP安全策略。
“IP安全策略向導”啟動。
單擊下一步。
在“IP安全策略名稱”頁上的名稱框中鍵入Secure SNMP。在說明框中,鍵入Force IPSec for SNMP Communications,然后單擊下一步。
單擊“激活默認響應規則”復選框,將其清除,然后單擊下一步。
在“正在完成IP安全策略向導”頁上,確認“編輯屬性”復選框已被選中,然后單擊完成。
在安全“NMP屬性”對話框中,單擊使用“添加向導”復選框,將其清除,然后單擊添加。
單擊IP“篩選器列表”選項卡,然后單擊SNMP消息(161/162)。
單擊篩選器操作選項卡,然后單擊需要安全。
單擊身份驗證方法選項卡。默認的身份驗證方法為Kerberos。如果您需要另一種身份驗證方法,則請單擊添加。在新身份驗證方法屬性對話框中,從下面的列表中選擇要使用的身份驗證方法,然后單擊確定:
ActiveDirectory默認值(KerberosV5協議)
使用此字符串(預共享密鑰)
在新規則屬性對話框中,單擊應用,然后單擊確定。
在SNMP“屬性”對話框中,確認SNMP“消息(161/162)”復選框已被選中,然后單擊確定。
在“本地安全設置”控制臺的右窗格中,右鍵單擊安全SNMP規則,然后單擊指定。
在所有運行SNMP服務的基于Windows的計算機上完成此過程。SNMP管理站上也必須配置此IPSec策略。
安全雜談之個人電腦防黑的安全準則
[ 2007-03-25 03:22:34 | 作者: sun ]
在這個網絡時代,每個人都可以輕易地從網絡上得到各種簡單易用的黑客工具,于是,眾多“黑客”就誕生了。這些人多半是一些無所事事的網蟲,天生就有破壞的欲望。于是無聊+表現欲促使他們拿著從網上找來的各種“炸彈”之類的東西開始在浩大的網絡中尋找可以炫耀一下自己本事的獵物。當你在網絡上沖浪,或是正在同別人聊天時,機器突然死機了或是藍屏了,網頁不能瀏覽了,QQ登錄不上去了,這時你就該想想自己是不是中毒了,或是被黑了。那么為防止我們的個人電腦被黑客攻擊,我們使用電腦時該遵循些什么樣的安全準則呢?
密碼安全準則
不要使用簡單的密碼。不要簡單地用生日、單詞或電話號碼作為密碼,密碼的長度至少要8個字符以上,包含數字、大、小寫字母和鍵盤上的其他字符混合。對于不同的網站和程序,要使用不同口令,以防止被黑客破譯。要記錄好你的ID和密碼以免忘記,但不要將記錄存放在上網的電腦里。不要為了下次登錄方便而保存密碼;還有,要經常更改密碼和不要向任何人透露您的密碼。
電子郵件安全準則
不要輕易打開電子郵件中的附件,更不要輕易運行郵件附件中的程序,除非你知道信息的來源。要時刻保持警惕性,不要輕易相信熟人發來的E-mail就一定沒有黑客程序,如Happy99就會自動加在E-mail附件當中。不要在網絡上隨意公布或者留下您的電子郵件地址,去轉信站申請一個轉信信箱,因為只有它是不怕炸的。在E-mail客戶端軟件中限制郵件大小和過濾垃圾郵件;使用遠程登錄的方式來預覽郵件;最好申請數字簽名;對于郵件附件要先用防病毒軟件和專業清除木馬的工具進行掃描后方可使用。
IE的安全準則
對于使用公共機器上網的網民,一定要注意IE的安全性。因為IE的自動完成功能在給用戶填寫表單和輸入Web地址帶來一定便利的同時,也給用戶帶來了潛在的泄密危險,最好禁用IE的自動完成功能。IE的歷史記錄中保存了用戶已經訪問過的所有頁面的鏈接,在離開之前一定要清除歷史記錄;另外IE的臨時文件夾(\Windows\Temporary Internet Files)內保存了用戶已經瀏覽過的網頁,通過IE的脫機瀏覽特性或者是其他第三方的離線瀏覽軟件,其他用戶能夠輕松地翻閱你瀏覽的內容,所以離開之前也需刪除該路徑下的文件。還要使用具有對Cookie程序控制權的安全程序,因為Cookie程序會把信息傳送回網站,當然安裝個人防火墻也可對Cookie的使用進行禁止、提示或啟用。
聊天軟件的安全準則
在使用聊天軟件的時候,最好設置為隱藏用戶,以免別有用心者使用一些專用軟件查看到你的IP地址,然后采用一些針對IP 地址的黑客工具對你進行攻擊。在聊天室的時候,還要預防Java炸彈,攻擊者通常發送一些帶惡意代碼的HTML語句使你的電腦打開無數個窗口或顯示巨型圖片,最終導致死機。你只需禁止Java腳本的運行和顯示圖像功能就可以避免遭到攻擊了,但這時你就沒法訪問一些交互式網頁了,這需要你個人權衡。
防止特洛伊木馬安全準則
不要太容易信任別人,不要輕易安裝和運行從那些不知名的網站(特別是不可靠的FTP站點)下載的軟件和來歷不明的軟件。有些程序可能是木馬程序,如果你一旦安裝了這些程序,它們就會在你不知情的情況下更改你的系統或者連接到遠程的服務器。這樣,黑客就可以很容易進入你的電腦。筆者并不是讓大家不信任來自Internet的任何東西,因為即使是很大的網站,都有可能遭到黑客的破壞。對于此類軟件,即使通過了一般反病毒軟件的檢查也不要輕易運行,要用如Cleaner等專門的黑客程序清除軟件檢查,并且需要提醒大家注意的是這些軟件的病毒庫文件要經常更新。同時不要讓他人隨意在您的計算機上安裝軟件。另外如果是購買二手電腦,不要購買或者使用那些曾經受過入侵,但仍未清理過硬盤的二手電腦。因為這樣很可能為黑客提供了入侵你的電腦的機會,最好是重新格式化硬盤,并重裝操作系統。
定期升級你的系統
很多常用的程序和操作系統的內核都會發現漏洞,某些漏洞會讓入侵者很容易進入到你的系統,這些漏洞會以很快的速度在黑客中傳開。如近期流傳極廣的尼姆達病毒就是針對微軟信件瀏覽器的弱點和Windows NT/2000、IIS的漏洞而編寫出的一種傳播能力很強的病毒。因此,用戶一定要小心防范。軟件的開發商會把補丁公布,以便用戶補救這些漏洞。建議用戶訂閱關于這些漏洞的郵件列表,以便及時知道這些漏洞后打上補丁,以防黑客攻擊。當然最好使用最新版本的瀏覽器軟件、電子郵件軟件以及其他程序,但不要是測試版本。
安裝防火墻
不要在沒有防火墻的情況下上網沖浪。如果你使用的是寬帶連接,例如ADSL或者光纖,那么你就會在任何時候都連上Internet,這樣,你就很有可能成為那些鬧著玩的黑客的目標。最好在不需要的時候斷開連接,如可以在你的電腦上裝上防黑客的防火墻——一種反入侵的程序作為你的電腦的門衛,以監視數據流動或是斷開網絡連接。如Lockdown2000 、ZoneAlarm、天網或者其他的一些個人防火墻軟件。另外如瑞星、江民、金山公司的最新版殺毒軟件都附有防火墻,可以起到殺毒、防黑的雙重功效,值得信賴。
禁止文件共享
局域網里的用戶喜歡將自己的電腦設置為文件共享,以方便相互之間資源共享,但是如果你設了共享的話,就為那些黑客留了后門,這樣他們就有機可乘進入你的電腦偷看你的文件,甚至搞些小破壞。建議在非設共享不可的情況下,最好為共享文件夾設置一個密碼,否則公眾以及你的對手將可以自由地訪問你的那些共享文件。
如果你在上網時遵守了以上這些準則的話,就可以在一定程度上保證個人電腦的安全,避免黑客的攻擊。
熊貓燒香病毒超強分析(手工查殺方法)
[ 2007-03-25 03:22:23 | 作者: sun ]
本文介紹了熊貓燒香病毒、熊貓燒香病毒變種的查殺方法,及熊貓燒香病毒的手動清除方案。提供了病毒進程為spoclsv.exe和FuckJacks.exe變種的解決方案,和熊貓燒香病毒專殺工具。
在動手查殺熊貓燒香病毒之前,強烈建議先注意以下四點:
1.本文包含兩種熊貓燒香病毒變種的描述,請注意查看病毒癥狀,根據實際情況選用不同的查殺方法。
2.對于被熊貓燒香病毒感染的.exe可執行文件,推薦先備份,再修復!
3.找回被熊貓燒香病毒刪除的ghost(.gho)文件,請使用EasyRecovery Pro。.gho文件所在分區進行的寫操作越少,找回來的幾率越大。
4.對計算機了解不多的用戶,請在專家指導下清除熊貓燒香病毒。
熊貓燒香病毒變種一:病毒進程為“spoclsv.exe”
這是“熊貓燒香”早期變種之一,特別之處是“殺死殺毒軟件”,最惡劣之處在于感染全盤.exe文件和刪除.gho文件(Ghost的鏡像文件)。
最有“靈感”的一招莫過于在所有htm/html/asp/php/jsp/aspx文件末尾添加一段代碼來調用病毒。目前所有專殺工具及殺毒軟件均不會修復此病毒行為。需要手動清除病毒添加的代碼,且一定要清除。否則訪問了有此代碼的網頁,又會感染。
其他老一點的“熊貓燒香”spoclsv變種的病毒行為比此版本少。就不再單獨列出。
病毒描述:
“武漢男生”,俗稱“熊貓燒香”,這是一個感染型的蠕蟲病毒,它能感染系統中exe,com,pif,src,html,asp等文件,它還能中止大量的反病毒軟件進程并且會刪除擴展名為gho的文件,(.gho為GHOST的備份文件),使用戶的系統備份文件丟失。被感染的用戶系統中所有.exe可執行文件全部被改成熊貓舉著三根香的模樣。
被感染的程序(實際圖)
以下是熊貓燒香病毒詳細行為和解決辦法:
熊貓燒香病毒詳細行為:
1.復制自身到系統目錄下:
%System%\drivers\spoclsv.exe(“%System%”代表Windows所在目錄,比如:C:\Windows)
不同的spoclsv.exe變種,此目錄可不同。比如12月爆發的變種目錄是:C:\Windows\System32\Drivers\spoclsv.exe。
2.創建啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"svcshare"="%System%\drivers\spoclsv.exe"
3.在各分區根目錄生成病毒副本:
X:\setup.exe
X:\autorun.inf
autorun.inf內容:
[AutoRun]
OPEN=setup.exe
shellexecute=setup.exe
shell\Auto\command=setup.exe
4.使用net share命令關閉管理共享:
cmd.exe /c net share X$ /del /y
cmd.exe /c net share admin$ /del /y
5.修改“顯示所有文件和文件夾”設置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrentVersion
\Explorer\Advanced\Folder\Hidden\SHOWALL]
"CheckedValue"=dword:00000000
6.熊貓燒香病毒嘗試關閉安全軟件相關窗口:
天網
防火墻
進程
VirusScan
NOD32
網鏢
殺毒
毒霸
瑞星
江民
黃山IE
超級兔子
優化大師
木馬清道夫
木馬清道夫
QQ病毒
注冊表編輯器
系統配置實用程序
卡巴斯基反病毒
Symantec AntiVirus
Duba
Windows任務管理器
esteem procs
綠鷹PC
密碼防盜
噬菌體
木馬輔助查找器
System Safety Monitor
Wrapped gift Killer
Winsock Expert
游戲木馬檢測大師
超級巡警
msctls_statusbar32
pjf(ustc)
IceSword
7.嘗試結束安全軟件相關進程以及Viking病毒(威金病毒)進程:
Mcshield.exe
VsTskMgr.exe
naPrdMgr.exe
UpdaterUI.exe
TBMon.exe
scan32.exe
“%System%\system32\spoclsv.exe”是系統文件。(目前看來沒有出現插入該系統進程的變種,不排除變種的手法變化。)
查看當前運行spoclsv.exe的路徑,可使用超級兔子魔法設置。
2. 刪除病毒文件:
%System%\drivers\spoclsv.exe
請注意區分病毒和系統文件。詳見步驟1。
3. 刪除病毒啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"svcshare"="%System%\drivers\spoclsv.exe"
4. 通過分區盤符右鍵菜單中的“打開”進入分區根目錄,刪除根目錄下的病毒文件:
X:\setup.exe
X:\autorun.inf
5. 恢復被修改的“顯示所有文件和文件夾”設置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Explorer\Advanced\Folder\Hidden\SHOWALL]
"CheckedValue"=dword:00000001
6. 修復或重新安裝被破壞的安全軟件。
7.修復被感染的程序,可用專殺工具進行修復。
金山熊貓燒香病毒專殺工具
安天熊貓燒香病毒專殺工具
江民熊貓燒香病毒專殺工具
瑞星熊貓燒香病毒專殺工具
8. 恢復被修改的網頁文件,可以使用某些編輯網頁的工具替換被添加文字為空。機器上有htm/html/asp/php/jsp/aspx等網頁文件,一定要刪除此段代碼。有危險代碼的網頁一但發布到網頁可能會感染其他用戶。
以下是數據安全實驗室提供的信息與方法。
病毒描述:
含有病毒體的文件被運行后,病毒將自身拷貝至系統目錄,同時修改注冊表將自身設置為開機啟動項,并遍歷各個驅動器,將自身寫入磁盤根目錄下,增加一個Autorun.inf文件,使得用戶打開該盤時激活病毒體。隨后病毒體開一個線程進行本地文件感染,同時開另外一個線程連接某網站下載ddos程序進行發動惡意攻擊。
病毒基本情況:
[文件信息]
病毒名: Virus.Win32.EvilPanda.a.ex$
大小: 0xDA00 (55808), (disk) 0xDA00 (55808)
SHA1 : F0C3DA82E1620701AD2F0C8B531EEBEA0E8AF69D
殼信息: 未知
危害級別:高
病毒名: Flooder.Win32.FloodBots.a.ex$
大 小: 0xE800 (59392), (disk) 0xE800 (59392)
SHA1 : B71A7EF22A36DBE27E3830888DAFC3B2A7D5DA0D
殼信息: UPX 0.89.6 - 1.02 / 1.05 - 1.24
危害級別:高
病毒行為:
Virus.Win32.EvilPanda.a.ex$ :
1、病毒體執行后,將自身拷貝到系統目錄:
%SystemRoot%\system32\FuckJacks.exe
2、添加注冊表啟動項目確保自身在系統重啟動后被加載:
鍵路徑:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:FuckJacks
鍵值:"C:Windows\system32\FuckJacks.exe"
鍵路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:svohost
鍵值:"C:Windows\system32\FuckJacks.exe"
3、拷貝自身到所有驅動器根目錄,命名為Setup.exe,并生成一個autorun.inf使得用戶打開該盤運行病毒,并將這兩個文件屬性設置為隱藏、只讀、系統。
C:autorun.inf 1KB RHS
C:setup.exe 230KB RHS
4、關閉眾多殺毒軟件和安全工具。
5、連接*****.3322.org下載某文件,并根據該文件記錄的地址,去www.****.com下載某ddos程序,下載成功后執行該程序。
6、刷新bbs.qq.com,某QQ秀鏈接。
7、循環遍歷磁盤目錄,感染文件,對關鍵系統文件跳過,不感染Windows媒體播放器、MSN、IE 等程序。
Flooder.Win32.FloodBots.a.ex$ :
1、病毒體執行后,將自身拷貝到系統目錄:
%SystemRoot%\SVCH0ST.EXE(注意文件名中的“0”是數字“零”,不是字母“o”)
%SystemRoot%\system32\SVCH0ST.EXE(注意文件名中的“0”是數字“零”,不是字母“o”)
2、該病毒后下載運行后,添加注冊表啟動項目確保自身在系統重啟動后被加載:
鍵路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:Userinit
鍵值:"C:Windows\system32\SVCH0ST.exe"
3、連接ddos2.****.com,獲取攻擊地址列表和攻擊配置,并根據配置文件,進行相應的攻擊。
配置文件如下:
www。victim.net:3389
www。victim.net:80
www。victim.com:80
www。victim.net:80
1
1
120
50000
解決方案:
1. 斷開網絡
2. 結束病毒進程:%System%\FuckJacks.exe
3. 刪除病毒文件:%System%\FuckJacks.exe
4. 右鍵點擊分區盤符,點擊右鍵菜單中的“打開”進入分區根目錄,刪除根目錄下的文件:
X:\autorun.inf
X:\setup.exe
5. 刪除病毒創建的啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"FuckJacks"="%System%\FuckJacks.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"svohost"="%System%\FuckJacks.exe"
6. 修復或重新安裝反病毒軟件
7. 使用反病毒軟件或專殺工具進行全盤掃描,清除恢復被感染的exe文件。也可用以下的手動方法恢復文件。
手動恢復中毒文件(在虛擬機上通過測試,供參考)
1.在清除病毒文件的同時不刪除%SYSTEM%下面釋放FuckJacks.exe的這個文件,即執行之前的步驟1、2、4、5。
2.打開“運行”輸入“gpedit.msc”打開組策略-本地計算機策略-Windoes設置-安全設置-軟件限制策略-其它規則。在其它規則上右鍵選擇-新散列規則-打開新散列規則窗口
3.在文件散列上點擊瀏覽找到%SYSTEM%下面釋放FuckJacks.exe文件。安全級別選擇-不允許的。確定后重啟。
4.重啟后可以雙擊運行已經被熊貓感染的程序。運行程序后該FuckJacks.exe文件會在注冊表里的Run鍵下建立啟動項(不會有問題的)。
5.雙擊運行被感染的程序已經恢復原來樣子了。全部回復后,用SREng把FuckJacks.exe在注冊表里的啟動項刪除即可!
在動手查殺熊貓燒香病毒之前,強烈建議先注意以下四點:
1.本文包含兩種熊貓燒香病毒變種的描述,請注意查看病毒癥狀,根據實際情況選用不同的查殺方法。
2.對于被熊貓燒香病毒感染的.exe可執行文件,推薦先備份,再修復!
3.找回被熊貓燒香病毒刪除的ghost(.gho)文件,請使用EasyRecovery Pro。.gho文件所在分區進行的寫操作越少,找回來的幾率越大。
4.對計算機了解不多的用戶,請在專家指導下清除熊貓燒香病毒。
熊貓燒香病毒變種一:病毒進程為“spoclsv.exe”
這是“熊貓燒香”早期變種之一,特別之處是“殺死殺毒軟件”,最惡劣之處在于感染全盤.exe文件和刪除.gho文件(Ghost的鏡像文件)。
最有“靈感”的一招莫過于在所有htm/html/asp/php/jsp/aspx文件末尾添加一段代碼來調用病毒。目前所有專殺工具及殺毒軟件均不會修復此病毒行為。需要手動清除病毒添加的代碼,且一定要清除。否則訪問了有此代碼的網頁,又會感染。
其他老一點的“熊貓燒香”spoclsv變種的病毒行為比此版本少。就不再單獨列出。
病毒描述:
“武漢男生”,俗稱“熊貓燒香”,這是一個感染型的蠕蟲病毒,它能感染系統中exe,com,pif,src,html,asp等文件,它還能中止大量的反病毒軟件進程并且會刪除擴展名為gho的文件,(.gho為GHOST的備份文件),使用戶的系統備份文件丟失。被感染的用戶系統中所有.exe可執行文件全部被改成熊貓舉著三根香的模樣。
被感染的程序(實際圖)
以下是熊貓燒香病毒詳細行為和解決辦法:
熊貓燒香病毒詳細行為:
1.復制自身到系統目錄下:
%System%\drivers\spoclsv.exe(“%System%”代表Windows所在目錄,比如:C:\Windows)
不同的spoclsv.exe變種,此目錄可不同。比如12月爆發的變種目錄是:C:\Windows\System32\Drivers\spoclsv.exe。
2.創建啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"svcshare"="%System%\drivers\spoclsv.exe"
3.在各分區根目錄生成病毒副本:
X:\setup.exe
X:\autorun.inf
autorun.inf內容:
[AutoRun]
OPEN=setup.exe
shellexecute=setup.exe
shell\Auto\command=setup.exe
4.使用net share命令關閉管理共享:
cmd.exe /c net share X$ /del /y
cmd.exe /c net share admin$ /del /y
5.修改“顯示所有文件和文件夾”設置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrentVersion
\Explorer\Advanced\Folder\Hidden\SHOWALL]
"CheckedValue"=dword:00000000
6.熊貓燒香病毒嘗試關閉安全軟件相關窗口:
天網
防火墻
進程
VirusScan
NOD32
網鏢
殺毒
毒霸
瑞星
江民
黃山IE
超級兔子
優化大師
木馬清道夫
木馬清道夫
QQ病毒
注冊表編輯器
系統配置實用程序
卡巴斯基反病毒
Symantec AntiVirus
Duba
Windows任務管理器
esteem procs
綠鷹PC
密碼防盜
噬菌體
木馬輔助查找器
System Safety Monitor
Wrapped gift Killer
Winsock Expert
游戲木馬檢測大師
超級巡警
msctls_statusbar32
pjf(ustc)
IceSword
7.嘗試結束安全軟件相關進程以及Viking病毒(威金病毒)進程:
Mcshield.exe
VsTskMgr.exe
naPrdMgr.exe
UpdaterUI.exe
TBMon.exe
scan32.exe
“%System%\system32\spoclsv.exe”是系統文件。(目前看來沒有出現插入該系統進程的變種,不排除變種的手法變化。)
查看當前運行spoclsv.exe的路徑,可使用超級兔子魔法設置。
2. 刪除病毒文件:
%System%\drivers\spoclsv.exe
請注意區分病毒和系統文件。詳見步驟1。
3. 刪除病毒啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"svcshare"="%System%\drivers\spoclsv.exe"
4. 通過分區盤符右鍵菜單中的“打開”進入分區根目錄,刪除根目錄下的病毒文件:
X:\setup.exe
X:\autorun.inf
5. 恢復被修改的“顯示所有文件和文件夾”設置:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Explorer\Advanced\Folder\Hidden\SHOWALL]
"CheckedValue"=dword:00000001
6. 修復或重新安裝被破壞的安全軟件。
7.修復被感染的程序,可用專殺工具進行修復。
金山熊貓燒香病毒專殺工具
安天熊貓燒香病毒專殺工具
江民熊貓燒香病毒專殺工具
瑞星熊貓燒香病毒專殺工具
8. 恢復被修改的網頁文件,可以使用某些編輯網頁的工具替換被添加文字為空。機器上有htm/html/asp/php/jsp/aspx等網頁文件,一定要刪除此段代碼。有危險代碼的網頁一但發布到網頁可能會感染其他用戶。
以下是數據安全實驗室提供的信息與方法。
病毒描述:
含有病毒體的文件被運行后,病毒將自身拷貝至系統目錄,同時修改注冊表將自身設置為開機啟動項,并遍歷各個驅動器,將自身寫入磁盤根目錄下,增加一個Autorun.inf文件,使得用戶打開該盤時激活病毒體。隨后病毒體開一個線程進行本地文件感染,同時開另外一個線程連接某網站下載ddos程序進行發動惡意攻擊。
病毒基本情況:
[文件信息]
病毒名: Virus.Win32.EvilPanda.a.ex$
大小: 0xDA00 (55808), (disk) 0xDA00 (55808)
SHA1 : F0C3DA82E1620701AD2F0C8B531EEBEA0E8AF69D
殼信息: 未知
危害級別:高
病毒名: Flooder.Win32.FloodBots.a.ex$
大 小: 0xE800 (59392), (disk) 0xE800 (59392)
SHA1 : B71A7EF22A36DBE27E3830888DAFC3B2A7D5DA0D
殼信息: UPX 0.89.6 - 1.02 / 1.05 - 1.24
危害級別:高
病毒行為:
Virus.Win32.EvilPanda.a.ex$ :
1、病毒體執行后,將自身拷貝到系統目錄:
%SystemRoot%\system32\FuckJacks.exe
2、添加注冊表啟動項目確保自身在系統重啟動后被加載:
鍵路徑:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:FuckJacks
鍵值:"C:Windows\system32\FuckJacks.exe"
鍵路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:svohost
鍵值:"C:Windows\system32\FuckJacks.exe"
3、拷貝自身到所有驅動器根目錄,命名為Setup.exe,并生成一個autorun.inf使得用戶打開該盤運行病毒,并將這兩個文件屬性設置為隱藏、只讀、系統。
C:autorun.inf 1KB RHS
C:setup.exe 230KB RHS
4、關閉眾多殺毒軟件和安全工具。
5、連接*****.3322.org下載某文件,并根據該文件記錄的地址,去www.****.com下載某ddos程序,下載成功后執行該程序。
6、刷新bbs.qq.com,某QQ秀鏈接。
7、循環遍歷磁盤目錄,感染文件,對關鍵系統文件跳過,不感染Windows媒體播放器、MSN、IE 等程序。
Flooder.Win32.FloodBots.a.ex$ :
1、病毒體執行后,將自身拷貝到系統目錄:
%SystemRoot%\SVCH0ST.EXE(注意文件名中的“0”是數字“零”,不是字母“o”)
%SystemRoot%\system32\SVCH0ST.EXE(注意文件名中的“0”是數字“零”,不是字母“o”)
2、該病毒后下載運行后,添加注冊表啟動項目確保自身在系統重啟動后被加載:
鍵路徑:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
鍵名:Userinit
鍵值:"C:Windows\system32\SVCH0ST.exe"
3、連接ddos2.****.com,獲取攻擊地址列表和攻擊配置,并根據配置文件,進行相應的攻擊。
配置文件如下:
www。victim.net:3389
www。victim.net:80
www。victim.com:80
www。victim.net:80
1
1
120
50000
解決方案:
1. 斷開網絡
2. 結束病毒進程:%System%\FuckJacks.exe
3. 刪除病毒文件:%System%\FuckJacks.exe
4. 右鍵點擊分區盤符,點擊右鍵菜單中的“打開”進入分區根目錄,刪除根目錄下的文件:
X:\autorun.inf
X:\setup.exe
5. 刪除病毒創建的啟動項:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"FuckJacks"="%System%\FuckJacks.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"svohost"="%System%\FuckJacks.exe"
6. 修復或重新安裝反病毒軟件
7. 使用反病毒軟件或專殺工具進行全盤掃描,清除恢復被感染的exe文件。也可用以下的手動方法恢復文件。
手動恢復中毒文件(在虛擬機上通過測試,供參考)
1.在清除病毒文件的同時不刪除%SYSTEM%下面釋放FuckJacks.exe的這個文件,即執行之前的步驟1、2、4、5。
2.打開“運行”輸入“gpedit.msc”打開組策略-本地計算機策略-Windoes設置-安全設置-軟件限制策略-其它規則。在其它規則上右鍵選擇-新散列規則-打開新散列規則窗口
3.在文件散列上點擊瀏覽找到%SYSTEM%下面釋放FuckJacks.exe文件。安全級別選擇-不允許的。確定后重啟。
4.重啟后可以雙擊運行已經被熊貓感染的程序。運行程序后該FuckJacks.exe文件會在注冊表里的Run鍵下建立啟動項(不會有問題的)。
5.雙擊運行被感染的程序已經恢復原來樣子了。全部回復后,用SREng把FuckJacks.exe在注冊表里的啟動項刪除即可!

