Windows註冊表修改實例完全手冊-4

 

5.防範******(適用範圍:Windows 9x/Me/NT/2000/XP)
  註冊表中有些參數,設置合適的話可以防範一些***技術的***。DoS(拒絕服務)***是一種常見的******方式,其中SYN淹沒***是DoS中比較常見的。我們在這裏給出一個防範SYN***的設置方法。
  (1)減小等待SYN-ACK包的時間
  TCP在發送SYN-ACK包後,首先等待3秒鐘,如果仍然沒有迴應,則將時間加大一倍,從3秒增大到6秒,再重發一次SYN-ACK,然後繼續等待迴應。重發的次數定義在註冊表中的一個雙字節值項TcpMaxConnectResponseRetransmissions 裏,該值項位於註冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip\Parameters中。默認值爲3,表示重發次數爲3次,先等待3秒後發送一次,然後等待6秒後發送一次,然後等待12秒發送一次,最後等待24秒,如果仍然接收不到迴應,不再繼續發送SYN-ACK,而是清除此次連接,並釋放所有資源。這樣總共經過了45秒鐘。值爲2表示重發次數爲2次,總共的耗費時間爲21秒,值爲1表示重發次數爲1次,總共的耗費時間爲9秒。0表示不重發SYN-ACK,耗費時間爲3秒。耗費時間越短,SYN***造成的影響就相應的要小一些。此值項的默認值爲3次。如果系統容易受到SYN淹沒***,可以將此值項修改爲2。 (2)增大NetBT的連接塊增加幅度和最大數目
  NetBT(基於TCP/IP的NetBIOS)使用139號TCP端口,一般用在微軟網絡中,例如文件和打印服務。在建立連接時,如果BetBT發現可用的連接塊數目小於2個,會自動的再分配可用連接塊。
  NetBT每次增加的連接塊的數目定義在註冊表中的雙字節值項BacklogIncrement中,該值項位於註冊表項註冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\NetBt\Parameters下。默認值爲3,最小值爲1,最大值位20。增大此值可以在有衆多連接時提升性能。每個連接塊消耗87個字節。
  NetBT最多可以使用的連接塊的數目定義在註冊表項中雙字節值項MaxConnBackLog中,默認爲1000個,最大值可以取到40000個。可以適當的增大此參數的值以允許更多的同時連接。
  (3)配置動態Bakclog(適用於Windows NT/2000/XP)
  對於使用Sockets的Windows服務,如FTP,可以通過配置動態Backlog來提升在網絡繁忙時的性能。使用動態Bakclog,系統會預先分配一定的資源用於建立連接,這樣就省去了給連接分配資源的時間和CPU消耗。如果需要再增加資源,可以一次性的增加若干個連接所需的資源空間。
  在註冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters中新建下面的雙字節值項:
  EnableDynamicBacklog,該值項的默認值爲0,表示是否允許動態Backlog。默認值爲0。對於網絡繁忙或者易遭受SYN***的系統,建議設置爲1,表示允許動態Backlog。
  MinimumDynamicBacklog,該值項的默認值爲0,表示動態Backlog分配的自由連接的最小數目。當自由連接數目低於此數目時,將自動的分配自由連接。默認值爲0,對於網絡繁忙或者易遭受SYN***的系統,建議設置爲20。
  MaximumDynamicBacklog,該值項的默認值爲0,表示定義最大"準"連接的數目。"準"連接包括自由連接和半連接。對於網絡繁忙或者易遭受SYN***的系統,應該設置此值,大小取決於內存的多少。一般來說,每32M內存最大可以增加5000個。
  DynamicBacklogGrowthDelta,該值項的默認值爲5,表示定義每次增加的自由連接數目。對於網絡繁忙或者易遭受SYN***的系統,建議設置爲10。
  (4)啓用SYN淹沒***保護特性(適用於Windows 2000/XP)
  Windows 2000/XP針對SYN淹沒***提供了一個叫做SYN淹沒***保護的特性。當出現了SYN淹沒***的徵兆時,Windows 2000/XP自動降低對那些無法確認的連接請求的響應時間。
  在註冊表項HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中新建下面的雙字節值項:
  SynAttackProtect,該值項的默認值爲0,表示定義是否允許SYN淹沒***保護特性。保證該值爲1,表示允許啓用SYN淹沒***保護特性。
  TcpMaxConnectResponseRetransmissions,該值項的默認值爲3,表示定義了對於連接請求迴應包的重發次數。如果該值爲1,則SYN淹沒***不會有效果,但是這樣會造成連接請求失敗機率的升高。SYN淹沒保護特性只有在該值大小大於或等於2時纔會被啓用。該值的默認值爲3。
  以上兩個值項定義了是否允許SYN淹沒***保護。下面三個值項則定義了激活SYN淹沒***保護特性的條件。當滿足下面三個值項定義的條件之一時,系統會自動激活SYN淹沒***保護。
  TcpMaxHalfOpen,該值項的默認值爲100或者500,表示定義了能夠處於SYN_RECEIVED狀態的TCP連接的數目。由於SYN淹沒***通常會造成大量的SYN_RECEIVED狀態的TCP連接,因此保護特性將該值作爲SYN淹沒***發生的一個徵兆。當處於SYN_RECEIVED狀態的TCP連接的數目超過該值項的定義時,系統認爲SYN淹沒***發生了,自動啓用保護特性。
  對於Windows 2000 Server,該值項默認值爲100。對於Windows 2000 Professional,該值項默認值爲500。Professional之所以比Server的值高,是因爲Professional通常不用作服務器,也就不會受到SYN淹沒***。
  TcpMaxHalfOpenRetried,該值項的默認值爲80或者40,表示定義了在重新發送連接請求後,仍然處於SYN_RECEIVED狀態的TCP連接的數目。當這種狀態的TCP連接的數目超過該值項的定義時,系統認爲SYN淹沒***發生了,自動啓用保護特性。
  對於Windows 2000 Server,該值項默認值爲80。對於Windows 2000 Professional,該值項默認值爲400。
  TcpMaxPortsExhausted,該值項的默認值爲5,表示定義了系統拒絕連接請求的次數。當系統保留的連接端口都被使用掉時,系統將拒絕所有的連接請求。SYN淹沒***通常會發生這種情況,因此保護特性將該值作爲SYN淹沒***發生的一個徵兆。當被拒絕的連接請求的數目超過該值項的定義時,系統認爲SYN淹沒***發生了,自動啓用保護特性。
7.檢查Windows啓動時的程序(適用範圍:Windows 2000/XP)
  在Windows環境下,由於病毒必須獲得CPU的控制權,因此很多病毒都需要在Windows啓動後,自動地運行起來。另一方面,越來越多的病毒採用了高級語言的形式,象宏病毒,採用的是VB語言,本身不能直接由CPU來執行,必須由相關程序解釋執行,因此它們必須在操作系統正常啓動後,才能加載自身,進行病毒傳播。因此說,很多病毒必須在Windows啓動後自動地運行起來,並且是依賴於Windows的自動啓動程序的功能。這是這些病毒的一個特點,也是一大弱點。我們可以根據這個特點,分析Windows啓動時有那些程序自動運行,通過檢查這些程序來防範病毒的侵襲。
  (1)註冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  該項下存放了Windows NT/2000/XP的服務程序。下面的每一個子項對應於一個服務:
  ImagePath值項存放了該服務的程序文件路徑。這些服務都有一個Start值項。值爲0,表示由核心裝載器裝載;值爲1,表示由I/O子系統裝載。Start值爲0和1的,都是非常低級和關鍵的Windows服務,它們必須正常啓動,Windows NT/2000/XP才能繼續啓動。通常病毒不會將自己放在這裏面,因爲這時候WindowsNT/2000/XP只裝載了核心部分,只有最基本的功能。Start值爲2,表示自動啓動,值爲3,表示手工啓動,值爲4,表示禁止啓動。這三類服務,可以在"控制面板"→"管理工具"→"服務"中查看到。
  我們需要檢查的是,那些Start值爲2的服務,其對應的程序文件(ImagePath值項定義)是否可疑。
  (2)註冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\Session Manager
  該項下存放了會話管理器(Smss.exe)的信息。在Windows NT/2000/XP的內核啓動階段,需要啓動該項下定義的幾個程序。在REG_MULTI_SZ類型的值項BootExecute中,定義了會話管理器裝載服務前需要運行的程序。默認值爲AutoCheck autochk *和Dfsinit。該默認值表示運行磁盤檢查程序,以及啓動DFS文件系統的初始化程序。
  我們需要檢查的是,值項BootExecute存放的是否是默認的執行文件,是否還定義了其他的執行程序。
  (3)註冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Userinit
  該值項類型爲字符串值,定義了用戶註冊進入時執行的初始化程序。在用戶註冊時,註冊管理程序(Winlogon)啓動該初始化程序,默認值是Userinit.exe。該程序首先運行註冊腳本,建立網絡連接,然後啓動用戶界面程序(Explorer.exe)。用戶可以替換該初始化程序爲自己的初始化程序(當然,病毒也可以做到)。一般地,用戶自己的初始化程序可以在處理完自己需要進行的工作後,再調用Userinit.exe程序即可。
  我們需要檢查的是,Userinit值項的值是否是Userinit.exe。同時檢查\Winnt\System32下的Userinit.exe文件的大小和時間是否是正常的。
  (4)註冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell
  該值項類型爲字符串值,定義了用戶界面程序,默認值爲Explorer.exe。正常情況下,註冊管理程序(Winlogon)啓動Userinit定義的初始化程序,該初始化程序會啓動用戶界面程序,因此不需要運行Shell值項定義的程序。如果註冊管理程序沒有能成功啓動Userinit定義的初始化程序,則註冊管理程序會過來啓動該Shell值項定義的用戶界面程序。
  我們需要檢查的是, Shell值項的值是否是Explorer.exe。
  (5)註冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\System(適用於Windows NT)
  該值項類型爲字符串值,該值項中存放了安全管理器程序,默認值爲Lsass.exe。安全管理器就是Windows NT啓動時,或者屏幕保護後,要求輸入用戶和密碼的畫面。用戶可以替換該安全管理器程序。
  我們需要檢查的是System值項的值是否是Lsass.exe。
  (6)註冊表項HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\ CurrentVersion\Policies\Explorer\Run
  在該項下可以有若干個字符串類型的值項,每個值項的名稱從1開始,值爲程序或者文檔的名稱。在用戶註冊進入Windows時,該項下定義的程序將被啓動起來。例如該項下有兩個值項,第一個是1,值爲Notepad.exe,第二個是2,值爲C:\readme.doc,則在用戶註冊進入Windows 2000時,系統會首先運行起Notepad.exe程序,然後會使用DOC的關聯程序打開C:\readme.doc文檔。
  我們需要檢查的是,如果定義了自動啓動程序,則查找該程序是哪個軟件對應的,是否爲可疑程序。默認情況下,該註冊表項下應該爲空。
  (7)註冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer\Run
  該項與HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies\Explorer\Run的作用一樣,不同之處在於,由於它位於HKEY_LOCAL_MACHINE下,所以它將應用於所有的用戶。在啓動順序上,系統首先啓動HKEY_LOCAL_MACHINE下的Run中的程序,再去啓動HKEY_CURRENT_USER下Run中的程序。
  (8)註冊表項HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx子項(適用於Windows 9x/Me/NT/2000/XP)
  由於是位於HKEY_CURRENT_USER下,因此該項只適用於當前這個用戶,不適用於其他的用戶。在用戶註冊進入Windows系統時,自動地運行該項下定義的程序或文檔。其中Run子項中定義了每次系統啓動時都需要運行的程序,值項類型是字符串值,值項的名稱是該運行程序的說明,值項的值是程序的名稱;RunOnce子項中定義了只運行一次的程序,在該項下的值項中定義的程序運行起來後,該項下的值項就會被刪除掉,這通常用於程序的安裝過程;RunEx和RunOnceEx的作用和Run、RunOnce是一樣的,是Run、RunOnce的擴充形式。
  (9)註冊表項HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx子項(適用於Windows 9x/Me/NT/2000/XP)
  該項和HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx作用一樣,不同之處在於,由於它位於HKEY_LOCAL_ MACHINE下,所以它將應用於所有的用戶。在啓動順序上,系統首先啓動HKEY_LOCAL_MACHINE下定義的啓動項目,再去啓動HKEY_CURRENT_USER下定義的啓動項目。
  我們需要檢查的是,對於默認情況以外定義的程序,需要檢查其對應的軟件。很多軟件將自動啓動程序放在註冊表中的這個位置。例如Norton Antivirus防毒軟件,就會在註冊表項HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run下新建一個值項NPS Event Checker,值爲C:\PROGRA~1\Navnt\ npscheck.exe。
  下表中列出了默認情況下,Windows系統中Run下的自動運行項目。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章