﻿# 如何查出目錄中有哪些「詭異」的檔案 ( 系統、隱藏、唯讀 )

當一台伺服器被植入木馬過後，不只系統管理者會開始緊張，對於主機的一些奇奇怪怪的檔案也會開始特別敏感。木馬程式經常會對程式檔案加上一些特殊的屬性，例如：**系統檔案屬性(System file attribute)**、**隱藏檔案屬性(Hidden file attribute)**與**唯讀檔案屬性(Read-only file attribute)**等。

在 Windows 作業系統中，預設並不會顯示設有「隱藏檔案屬性」的檔案，除非你開啟下圖標示 1 的選項才看的到。但就算你開了這個選項，若檔案被設定「系統檔案屬性」的話，你也一樣看不到，除非你將下圖標示 2 的地方勾選拿掉才看的到，但一般來說不會特別關閉這個選項。

![資料夾選項](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5712da0525a0a31ee51c-image_3.png) 

設定了這些屬性可以有效隱匿檔案的存在，甚至於可以把檔案標記「唯讀檔案屬性」讓檔案沒那麼輕易被刪除，以真正達到「木馬」的功效。

在一般網站目錄下，照常理來說若出現有標記「系統檔案屬性」的檔案，那就應該要高度懷疑為什麼有這些檔案存在了，這時我們就可以利用 Windows 的命令提示字元內建的 [attrib](http://technet.microsoft.com/en-us/library/cc754186.aspx) 指令，可顯示與變更檔案屬性，用法如下：

```
C:\>attrib /?
顯示或變更檔案屬性。

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:][path][filename]
       [/S [/D]]

  +   設定屬性。
  -   清除屬性。
  R   唯讀檔案屬性。
  A   保存檔案屬性。
  S   系統檔案屬性。
  H   隱藏檔案屬性。[drive:][path][filename]
      指定一個或一個以上的檔案給 attrib 處理。
  /S  處理目前的資料夾及所有子資料夾中相
      符的檔案。
  /D  一併處理資料夾。
```

假設我們的網站安裝在 C:\\Inetpub\\wwwroot 目錄下，就可以用以下指令查出所有檔案的屬性：

```
C:\>attrib /s /d c:\Inetpub\wwwroot\*
A          C:\Inetpub\wwwroot\css\style.css
A  SHR     C:\Inetpub\wwwroot\scripts\backdoor.aspx
A          C:\Inetpub\wwwroot\scripts\jquery-1.2.6-min.js
           C:\Inetpub\wwwroot\css
A          C:\Inetpub\wwwroot\index.htm
           C:\Inetpub\wwwroot\scripts
```

從上例可知，有個檔案叫做 backdoor.aspx 同時被標記了 S (系統), H (隱藏) 與 R (唯讀) 屬性，若看到這些「詭異」的檔案，請務必小心。

如果我只要顯示出所有被標記「系統檔案屬性」的檔案，就必須搭配 [Findstr](http://technet.microsoft.com/en-us/library/cc732459.aspx) 指令進行篩選，預設來說 [Findstr](http://technet.microsoft.com/en-us/library/cc732459.aspx) 指令支援 [Regular expression](http://en.wikipedia.org/wiki/Regular_expression) ( [正則表達式](http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F) )，所以你可以用以下指令進行篩選：

1\. 找出所有含有 **系統檔案屬性** (**S**) 的檔案

```
attrib /d /s C:\Inetpub\wwwroot\* | findstr "^...S"
```

2\. 找出所有含有 **隱藏檔案屬性** (**H**) 的檔案

```
attrib /d /s C:\Inetpub\wwwroot\* | findstr "^....H"
```

3\. 找出所有含有 **唯讀檔案屬性** (**R**) 的檔案

```
attrib /d /s C:\Inetpub\wwwroot\* | findstr "^.....R"
```

4\. 找出所有同時含有 **系統檔案屬性** (**S**) , **隱藏檔案屬性** (**H**) 與 **唯讀檔案屬性** (R) 的檔案 (最詭異的檔案)

```
attrib /d /s C:\Inetpub\wwwroot\* | findstr "^...SHR"
```

建議每天或每週定時執行這個指令用以進行例行性的系統安全查核，即便這樣不見得可以真正查出有問題的檔案或程式，但至少也能找出一些**看起來有風險**的檔案，防止再次遭受木馬侵襲。

**相關連結**

-   [Using ATTRIB, CHKDSK, or DIR Command to Locate Files](https://web.archive.org/web/20130619003011/http://support.microsoft.com/kb/89727/en-us)
-   [Microsoft DOS attrib command](http://www.computerhope.com/attribhl.htm)
-   [attrib](http://technet.microsoft.com/en-us/library/cc754186.aspx)
-   [Findstr](http://technet.microsoft.com/en-us/library/cc732459.aspx)
