進階應用

TWIDS可依據snort規則過濾本機封包,同時監控封包傳輸頻率,因此您可自行設計snort語法的過濾規則來保護您的電腦。

1. 防護本機電腦,避免成為DoS或Spam的攻擊機。預設下列兩項規則置入TWIDS.rules內: 
# 下例定義本機10秒內對外發出100個SYN封包則予以警告
alert tcp $HOME_NET any -> $EXTERNAL_NET !HTTP_PORTS (msg:"Possible TCP DoS"; flags:S, FRPU21; threshold: type threshold, track by_dst, count 100, seconds 10; sid:88800001;)
#下例為本機在60秒內不可送出10個SMTP要求寄信RCPT的封包
alert tcp $HOME_NET any -> $EXTERNAL_NET 25 (msg:"Possible Spammer"; content:"rcpt to:"; nocase; threshold: type threshold, track by_src, count 10, seconds 60; sid:88800002;)
# 上述 Seconds及Count 兩項參數決定判斷資安事件的頻率,您可視情況自行定義調整。
# 避免成為攻擊機則將 alert 改為 drop 將封鎖攻擊封包傳送

2. 監控您的電腦是否對外提供服務 (找出暗地提供服務的木馬程式)。預設下列規則置入TWIDS.rules內: 

#本例為找出本機與外部電腦進行TCP三向交握成功的記錄
 alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Possible TCP Services from my PC"; flags:SA, FRPU21; sid:88800003;) 

3. 作為實體防火牆過濾及阻擋功能:Action由alert改為drop:

# 本例為關閉所有外部網路至本機的遠端桌面連線服務
drop tcp $EXTERNAL_NET any -> $HOME_NET 3389 (msg:"Deny remote desktop services from outside"; sid:88800004;)

4. 找出本機異常網路封包傳輸 / 限定特定網路服務伺服器:

# 本例為找出PC到不是本機設定的DNS主機查詢服務,如需限制服務則改為 drop 即可
# 請先至TWIDS.vars檔案,加入定義 DNS_SERVER  [您的DNS IP] 即可
alert tcp $HOME_NET any -> !$DNS_SERVERS 53 (msg:"Suspicious DNS Server qurey"; sid:88800005;)
alert udp $HOME_NET any -> !$DNS_SERVERS 53 (msg:"Suspicious DNS Server qurey"; sid:88800006;)
 
5.作為個人電腦網路傳輸的鑑識工具:

# PC對外發出建立連線需求的稽核記錄
alert tcp $HOME_NET any -> $EXTERNAL_NET ! [$HTTP_PORTS,443] (msg:"Network Forensic Used";  flags:S, FRPU21; sid:9999999;)

6.管制電腦網頁登入或不當網頁瀏覽:

drop tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"Deny http login"; content:"login"; nocase; http_uri; sid:88800011;) 
drop tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"Deny to improper website"; content:"xxx.com"; nocase; http_uri; sid:88800012;) 


     效能實測


我們觀察同一台家用PC,在安裝TWIDS前後的網路傳輸速度,來測試本軟體使用網路卡驅動程式耗損的網路頻寬數據。
以2012/06/16日取得ET及Snort的可接收規則數 1947 筆進行即時封包過濾。

1. 2012/6/16日共取得規則數 (ET+Snort) 為 2161 筆,TWIDS 1.6版可接收 1947 筆規則,佔 90% 防護規則數。
2. 我們以測速軟體進行測速,為避免真實網路運作出現異常情況,我們以同一部電腦各觀察10次的傳輸數據記錄平均後,比對結果如下:
    2-1. 使用 Hinet自行開發測速軟體 http://speed.hinet.net/drspeed/
    2-2. 連線至台灣大學測速網站測速  http://speed.cc.ntu.edu.tw/    

根據觀察,在平日實際運作情況下,其使用的防護規則2000筆左右,TWIDS網路卡過濾程式約耗損 3至5%的頻寬損耗,效能良好。
            



如果您覺得ET的防護規則仍然不夠,也可以接收snort官網釋出的防護規則,1.6版已建立自動批次檔案merge-snort.bat
在您的C:\TWIDS目錄內,在您執行merge-snort.bat 之前,需先手動方式操作三個步驟。

1. 請您先向Snort官方網站註冊 (免費) 取得您帳號的oinkcode,並放入C:\TWIDS目錄內的snort-oinkcode.txt內。
  >>  請至 Snort 官網註冊帳號
  >> 取得個人 oinkcode 碼
    >>>  請貼於 C:\TWIDS\snort-oinkcode.txt 檔案內

2. 請下載並安裝 Wget 及 Bsdtar 兩個GNU自由軟體到您的電腦內。

3. 建議將固定不變的自定規則置於 C:\TWIDS\local.rules,如果您沒有下載snort rule的需求可以跳過此步驟。
    (這是避免第4步驟自動下載的snort規則執行檔,會將原先固定的本機規則覆蓋掉)。

4. 這時候您可以執行 C:\TWIDS\merge-snort.bat 試看看是否已成功下載並整合Snort規則檔案。
     如果成功,表示您的TWIDS已經包含ET 和 Snort 兩個機構的防護規則了。

如果您要設定每天固定時間自動執行merge-snort.bat,讓您的電腦每天都可以取得最新的Snort防護檔案,請參考  【 設定Windows 排程自動執行程序 】

研究團體的規則檔案

我們主要引用ET (Emerging Threats機構網站所釋出之最新防治過濾規則,並可每日自動下載取得最新版本進行封包過濾。
另外兩家研究機構則需使用者修改設定更新下載。






此外,我們將固定不變的過濾規則置於TWIDS.rules檔案內。
一旦規則檔案修改後,在一分鐘內,軟體會自動解譯讓TWIDS引擎進行過濾動作。


   軟體過濾引擎主要依據 C:\TWIDS 目錄內的 TWIDS.ini 組態設定檔做為主要的功能設定。
   如果您有接觸過Snort規則語法,可以自行參考或修改TWIDS.var的變數定義。


     軟體在即時封包過濾的運作過程中,會將符合過濾規則的部份記錄於Logs目錄的Events-日期.txt 內,
     而TWIDS引擎本身在編譯與執行時也會產差XSSrv.txt的日誌檔案,這個檔案僅供除錯參考。





使用者可以看到自己電腦內有一個XSSrv.exe的執行程序處於執行狀態,它的工作是每分鐘自
網路卡驅動程式取得過濾警示訊息,並將它記錄於日誌檔案內。另一個是XSAgt.exe執行程序,
它用來做畫面右下角的即時訊息視窗,即每日自動下載規則檔案的工作。這兩個執行程序如果
您逕行中止的話,則日誌檔案、事件顯示、自動下載三項功能會失效;但不會影響封包過濾傳輸
功能,因為過濾功能是由網路卡之驅動程式完成。

雖然核心過濾程式會即時過濾及封鎖封包,但基於執行效能的考量,軟體以每分鐘播報的方式
顯示於軟體視窗上,這無損於核心程式的即時過濾封鎖功能。


TWIDS Supported Options


TWIDS.err 錯誤訊息說明

TWIDS引擎編譯器主要支援下列Snort語法,如編譯錯誤會以代碼方式記錄於Error.log檔案內,使用者可依據行號、錯誤代碼等視情況修改或排除狀況。如遇到不支援的規則行,則TWIDS視為失效,不會強行自我解讀,也不影響其他規則行的讀取過濾。尚未支援的語法部份,將隨著更新版本進行改善。

twids.err




使用限制

TWIDS基於網路卡驅動過濾的原理運作,因此會耗損您使用電腦的頻寬速度,經過我們的測試,在2000條過濾規則的情況下會減少大約5%左右的網路卡傳輸效能,如果您經常使用網路芳鄰等協定在區網內傳輸較大檔案時,請先評估軟體過濾功能對您的影響。
軟體在VMware, Virtualbox等虛擬作業系統運作時,僅提供封包過濾警示,無法使用drop即時封鎖封包。