發信人: chjong@csie.nctu.edu.tw (=?big5?Q?=C1=E9=A9=F7=BF=AB?= Chang-Ha) 日期: Mon, 27 May 2002 08:20:20 +0000 (UTC) 標題: [文件]Windows平台下輸出入設備之控管 信群: tw.bbs.comp.security 看板: 來源: :24048, chjong@ccbsd7.csie.nctu.edu.tw 組織: Computer Science & Information Engineering NCTU 作者 =========================================== 鍾昌翰 chjong@csie.nctu.edu.tw 本文可自由散布於各種媒體 標題 =========================================== Windows平台下輸出入設備之控管 本文 =========================================== 對於資訊較敏感的電腦環境,對於輸出入設備的控管,會是一個值得討論的問題。在早期 時這種電腦就會以無磁碟機工作站的形式存在,沒有軟碟機裝置於上,則資訊就無法透過 軟碟傳出去。但是隨著USB及其他的儲存裝置(如大姆哥,IEEE 1394硬碟,Smart Card)的 應用,資訊可以借由這些界面輕易的傳送出去。雖然在某些場合可以直接在硬體上將這些 輸出入裝置予以關閉使用(例如使用矽膠將孔封住或是將IC拔除)。但是這並不是一個可以 廣泛使用的方法,尤其當某些設備是標準的應用而無法拔除(例如USB滑鼠)。以作業系統 的角度來看這個問題,可以借由至少三種方法來達到近似同樣的功能。這裡討論是以 Windows平台上以可以輕易以現有程式改出來為考量。以下皆考量如何防止當惡意使用者 載入某Driver以達到使用USB/IEEE1394等儲存裝置。 Registry: 若在Windows上想要增加Driver,除了舊式的去增加INI檔的內容之外 (Windows 3.1),通常會在Registry增加登錄,裡面會說明了Driver所使用的檔案及參數。 因此可以經由修改一些Registry的監視軟體(如www.sysinternals.com的Regmon程式), 就可以達到防止這種惡意的Driver進駐Windows系統 Driver:但是除了增加Registry的登錄可以將Driver加進Windows系統之外,某些Windows 的元件,也提供了使用其API可以動態的增加Driver的功能,例如NDIS或者TAPI等等。對 於這種的惡意Driver,可以借由撰寫一使用同一界面之Driver,監控目前所使用的 Drivers。若當有新的Driver加入,就能夠有所警訊。 System Call Wrapper:其可以攔到system call裡有關I/O動作,因此若使用System Call Wrapper去將有關USB的IO攔掉(若USB的IO有特別的目錄或是Device ID) 應該就可以了。 本方法應該比寫Driver快,因為System call層次比Driver高。 但若是已採用了以上的方法去限制輸入或輸出,入侵者要怎麼竊取資料呢?一個可行的方 法是入侵者從鍵盤輸入執行檔。而執行檔可以借由如鍵盤的LED顯示燈將資訊傳遞出來。 首先遇到的問題是如何從鍵盤輸入執行檔。可以將要執行的機械碼轉換成同意的,而且可 以用鍵盤輸入的機械碼。相關的技術在病毒變體引擎的資料可以找到,或是可以以Turning Machine這種Formal Language方式去推導。若恰巧這台電腦具有Script Language的功能, 則也可以用Script Language寫一個程式,其幫助輸入完整惡意機械碼程式。概念上類似編 譯器的設計。若想要用鍵盤的LED來輸出大量資訊,應該可以用類似光纖的原理,製作一個 可以讀取LED訊號的小電腦(亦或甚拿MD來修改),然後用程式控制LED的明暗,則資訊就可 以此方式偷竊。 -- "There is no security vulnerability, until you find it" ◇ 鍾昌翰, Chang-Han Jong chjong@csie.nctu.edu.tw ◇ .