簡單用WebGL做出來的
http://www.youtube.com/watch?v=HPi1XFOKbuM
Friday, October 22, 2010
Sunday, September 26, 2010
Monday, September 20, 2010
AccessSandBox 基於Windows權限設計的SandBox
AccessSandBox為一個透過控制SandBox中程序(Process)的權限,來達到隔離的效果。
它不像一般SandBox是透過模擬一個環境來隔離程序,它是透過控制了程序的權限,讓程序只能在電腦中的特定範圍(受控制範圍)中活動,如果有惡意行為的話,因為權限不足而無法對電腦進行破壞。
由於是透過Windows的權限設計,所以AccessSandBox本身並不需要任何的驅動程式,也不需進Ring0,僅透過安裝一個Service跟呼叫Windows權限相關API來進行控制。
它不像一般SandBox是透過模擬一個環境來隔離程序,它是透過控制了程序的權限,讓程序只能在電腦中的特定範圍(受控制範圍)中活動,如果有惡意行為的話,因為權限不足而無法對電腦進行破壞。
由於是透過Windows的權限設計,所以AccessSandBox本身並不需要任何的驅動程式,也不需進Ring0,僅透過安裝一個Service跟呼叫Windows權限相關API來進行控制。
目前的設計分成三種權限控制的層級:
- High Level:高度限制程序的權限,包括 降低Integrity Level為Low 、程序的UI權限將受到控制
- Normal Level:一般權限控制,程序的UI權限將受到控制
- Low Level:程序的UI權限將不會受到控制
High Level
Normal Level
Low Level
Friday, September 17, 2010
使用LogonUser + CreateProcessAsUser 執行擁有不同Logon SID的程式
這是三個月前的一個瓶頸,在今天終於解決了。
Windows在User登入後,會建立Logon SID這個群組,加入一些關於程式之間互動的權限(例如PROCESS_TERMINATE),並且所有在登入後所執行的程式都會被強迫加入這個群組,使城市之間可以做一些基本互動。
但是在某些狀況下,我們並不希望該程式能和其他程式互動,所以希望它能不要或是加入不同的Logon SID來隔離。因此透過登入另一個帳戶並執行程式,似乎是個不錯的方法。
一開始使我測試CreateProcessWithLogonW 來達成這樣的效果,結果發現它雖然會使用另一個帳戶執行程式,但是卻使用當前帳戶的Logon SID,並沒有達成目的。
+
這兩天,我突然想到如果結合LogonUser + CreateProcessAsUser 或許可以。
在呼叫CreateProcessAsUser時,必須在LocalSystem帳戶下才有足夠權限(不然會有1314錯誤),所以必須寫一個Service。
在Service中,先呼叫LogonUser取得別的帳戶的Token,接著必須設定Token中的SessionId(SetTokenInformation) 因為Service中的SessionId預設是0,一般使用者是不可見的,必須設定成當前使用者的SessionId。Window Station "WinSta0"和Desktop "Default"也必須設好權限讓LogonUser所登入的帳戶有權限存取。最後即可透過CreateProcessAsUser執行新程式,加入的也會是個不同LogonSID。
程式碼片段:
void test(){
HANDLE hToken;
DWORD SessionId;
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
printf("%08x\n",LogonUser(L"xxxxx",
L"",
L"xxxxx",
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
&hToken));
SessionId=1;
printf("%08x\n",SetTokenInformation(hToken,TokenSessionId,&SessionId,sizeof(DWORD)));
memset(&sInfo,0,sizeof(STARTUPINFO));
sInfo.cb=sizeof(STARTUPINFO);
sInfo.lpDesktop=L"WinSta0\\Default";
printf("%08x\n",CreateProcessAsUser(hToken,
L"F:\\Test.exe",
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&sInfo,
&pInfo));
printf("%08x\n",GetLastError());
return;
}
Windows在User登入後,會建立Logon SID這個群組,加入一些關於程式之間互動的權限(例如PROCESS_TERMINATE),並且所有在登入後所執行的程式都會被強迫加入這個群組,使城市之間可以做一些基本互動。
但是在某些狀況下,我們並不希望該程式能和其他程式互動,所以希望它能不要或是加入不同的Logon SID來隔離。因此透過登入另一個帳戶並執行程式,似乎是個不錯的方法。
一開始使我測試CreateProcessWithLogonW 來達成這樣的效果,結果發現它雖然會使用另一個帳戶執行程式,但是卻使用當前帳戶的Logon SID,並沒有達成目的。
+
這兩天,我突然想到如果結合LogonUser + CreateProcessAsUser 或許可以。
在呼叫CreateProcessAsUser時,必須在LocalSystem帳戶下才有足夠權限(不然會有1314錯誤),所以必須寫一個Service。
在Service中,先呼叫LogonUser取得別的帳戶的Token,接著必須設定Token中的SessionId(SetTokenInformation) 因為Service中的SessionId預設是0,一般使用者是不可見的,必須設定成當前使用者的SessionId。Window Station "WinSta0"和Desktop "Default"也必須設好權限讓LogonUser所登入的帳戶有權限存取。最後即可透過CreateProcessAsUser執行新程式,加入的也會是個不同LogonSID。
從下面兩張圖可以看到Test.exe擁有跟其他程式不同的Logon SID
程式碼片段:
void test(){
HANDLE hToken;
DWORD SessionId;
STARTUPINFO sInfo;
PROCESS_INFORMATION pInfo;
printf("%08x\n",LogonUser(L"xxxxx",
L"",
L"xxxxx",
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
&hToken));
SessionId=1;
printf("%08x\n",SetTokenInformation(hToken,TokenSessionId,&SessionId,sizeof(DWORD)));
memset(&sInfo,0,sizeof(STARTUPINFO));
sInfo.cb=sizeof(STARTUPINFO);
sInfo.lpDesktop=L"WinSta0\\Default";
printf("%08x\n",CreateProcessAsUser(hToken,
L"F:\\Test.exe",
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&sInfo,
&pInfo));
printf("%08x\n",GetLastError());
return;
}
Sunday, September 12, 2010
Security Desktop 防止鍵盤側錄
這是最近在關於Windows Desktop部分的研究成果,寫了一個小工具
它透過建立一個特殊權限設定的Desktop,執行在這個桌面下的程式,在預設桌面中的鍵盤側錄程式是無法側錄的
它透過建立一個特殊權限設定的Desktop,執行在這個桌面下的程式,在預設桌面中的鍵盤側錄程式是無法側錄的
執行畫面
AKLT測試
測試通過
測試通過
SpyShelter Keylogger測試
測試通過
Sunday, August 29, 2010
使用Volume Shadow Copy Service Bypass COMODO 進行檔案複製
Volume Shadow Copy Service(以下簡稱VSS) 是Windows提供的一種Snapshot服務。
在分割區(Volume)透過VSS 建立Snapshot後,往後可以進行還原動作。
另外VSS也提供將Snapshot映射的機制,所以使用者可以存取Snapshot中的檔案。
因此可以利用此特性,繞過COMODO 的檔案存取過濾,存取到被禁止的檔案。
在分割區(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']
即可解決
原因出在Google App Engine在Response中預設會加入Cache-Control:no-cache標頭
導致IE瀏覽器下載失敗(資料其實已經下載到電腦了,只是無法跳出下載視窗)
可能是因為no-cache告知瀏覽器不要緩存該網頁資料,導致檔案下載到暫存資料夾後,被刪除
只要在回復函式中加入
del self.response.headers['Cache-Control']
即可解決
Subscribe to:
Posts (Atom)

























