Sunday, August 29, 2010

使用Volume Shadow Copy Service Bypass COMODO 進行檔案複製

Volume Shadow Copy Service(以下簡稱VSS) 是Windows提供的一種Snapshot服務。
在分割區(Volume)透過VSS 建立Snapshot後,往後可以進行還原動作。

另外VSS也提供將Snapshot映射的機制,所以使用者可以存取Snapshot中的檔案。
因此可以利用此特性,繞過COMODO 的檔案存取過濾,存取到被禁止的檔案。

使用COMODO Firewall進行測試

對C:\a.txt進行保護

VSS.exe為等一下要用的測試程式,設定為禁止存取C:\a.txt

如果直接對C:\a.txt進行複製,會出現拒絕存取的錯誤,確定檔案保護有效了

執行VSS.exe,跳出要存取VSS服務COM的警告訊息,允許

之後就沒詢問了,VSS.exe成功執行

最後可以看到C:\a.txt已經被複製到桌面了

Friday, August 20, 2010

IE從Google App Engine Respnse下載檔案問題 HTTP Cache-Control標頭

今天終於解決IE瀏覽器無法下載XC Google File Service檔案的問題了
原因出在Google App Engine在Response中預設會加入Cache-Control:no-cache標頭
導致IE瀏覽器下載失敗(資料其實已經下載到電腦了,只是無法跳出下載視窗)
可能是因為no-cache告知瀏覽器不要緩存該網頁資料,導致檔案下載到暫存資料夾後,被刪除

只要在回復函式中加入

del self.response.headers['Cache-Control']

即可解決

Sunday, August 8, 2010

XC Google File Service 多檔拖曳 AJAX動態上傳

這個建立在Google App Engine上的免費空間,新增一些特別的支援
目前進度還算不錯,應該快要可以上線了
  1. 多檔拖曳上傳,可以直接將多個檔案拖進瀏覽器(FireFox與Chrome支援)
  2. 檔案選取方塊也可多選上傳
  3. 有資料夾管理設計,可以方便管理大量檔案
 多檔拖曳上傳

一次選擇多檔

支援Unicode,目前測試可支援繁體中文、簡體中文、日文、俄文
使用AJAX上傳,可即時顯示上傳進度

資料夾管理功能

Saturday, July 31, 2010

Javascript XMLHttpRequest 模擬 multipart/form-data 傳送資料

multipart/form-data是一種瀏覽器用來發送Form資料的方法,特別的是,它支援binary code的檔案傳輸

今天試著要用XMLHttpRequest來來模擬multipart/form-data發送資料(因為要上傳檔案)

今天找很久的資料後,決定還是用Wireshark來捕捉一下封包,看看到底是如何運作的
搭配 RFC1867  成功的進行了模擬,上傳資料

 XMLHttpRequest open後,必須先設置header,告訴伺服器你是multipart/form-data

http.setRequestHeader("Content-Type","multipart/form-data; boundary=----1AwOmRxb2KluSNh90S1qesEo")

multipart/form-data; 告訴伺服以multipart/form-data傳送資料
boundary=----1AwOmRxb2KluSNh90S1qesEo 則定義boundary,用來當作分隔字串用的(每個資料都以boundary=XXX 後面那串分隔)

接著設定要傳送的資料

var param=""; 
param+='------1AwOmRxb2KluSNh90S1qesEo\r\n';
param+='Content-Disposition: form-data; name="filedata"\r\n';
param+='\r\n';
param+=data+'\r\n';
param+="------1AwOmRxb2KluSNh90S1qesEo--\r\n"


資料以分隔字串開頭(之後分隔字串前面都加上兩個--,原因還不清楚),用\r\n進行換行(很重要)

接著用Content-Disposition: form-data; name="filedata"\r\n定義欄位名稱
再接一個\r\n後
下一行為你要發為你要發送的欄位資料,後面還是得接\r\n

就這樣一組一組定義欄位跟資料(每組前面記得要有一個前面加--的分隔字串)

最後定義完後,以------1AwOmRxb2KluSNh90S1qesEo--\r\n結尾 
基本上是 -- + 分隔字串 + -- + \r\n

最後用XMLHttpRequest的send方法發送param出去即可

Monday, July 26, 2010

TestFilter-TestMiniFilter Driver載入Rule

為了改善Program複雜度跟強化安全性,今天決定要由Driver來讀取規則檔並且載入規則
一開始便發現到Driver由於是SERVICE_BOOT_START,過早啟動導致系統很多部分都還沒有載入完成,導致讀規則檔有一定難度。後來的將啟動順序改為SERVICE_SYSTEM_START延緩載入(系統也準備的差不多了)

Thursday, July 22, 2010

TestFilter-TestMiniFilter Rule檔讀取和動態載入

修復了兩個本來沒有發現,非常奇怪的Bug

一個是沒有注意到驅動中的Stack有限,宣告了過大的區域變數導致Stack Overflow(之前WinDbg一直顯示問題在一個DbgPrint呼叫,後來拿掉DbgPrint後,真正的Stack Overflow問題才浮現)

一個是漏看了MSDN文件的一小部分,導致FltSendMessage傳入的ReplyLength參數值大於緩衝區的大小,造成緩衝區溢位,也學到了MSDN文件一定要看清楚

Wednesday, July 21, 2010

TestFilter-TestMiniFilter Create Read Write Delete權限過濾+Client部分管理功能

今天完成了Create Read Write Delete四個主要權限過濾
Client則完成了捕捉Filter傳回的Deny事件

在下午增加權限控制時,外面突然下起大雷雨,也發現到,要在每五秒就一個閃電的環境下很難寫程式