Thursday, January 19, 2012

Plextor 128GB M2P

外包裝




打開盒子




SSD本體




裝於筆電上,由於晶片組是HM55,需經過調整才能發揮完全效能

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\5d76a2ca-e8c0-402f-a133-2158492d58ad]
更改 Attributes 為 0
變更進階電源設定,處理器閒置停用改為停用閒置

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\intelppm]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Processor]
Start改為4

測試平台:
Acer 4745G
SATA2 Intel RST 11.0.0.1032
Windows 7 64bit

調整前(C槽為安裝作業系統分割區)



調整後(並且在C槽安裝一些軟體和系統更新後測試)

Thursday, December 30, 2010

用Intel VT作系統防護

大概前一個月就有這個想法利用Intel VT技術抵抗Rootkit

從Intel的文件(VMX的部分)看來,VT技術可以建立一個Non-Root狀態

進入Non-Root狀態前,就可以對這個狀態進行很多設定,例如無法關閉中斷還有設定各種觸發事件

在進入Non-Root後,就算是Ring0還是無法主動離開Non-Root,並且受到前面設定的限制因此可以用來保護像是SSDT表等等系統重要部分不被竄改

過要實現它,我必須得直接實機測試(虛擬機中沒VT支援),所以需要很多時間來重開電腦(一直BSOD)

大概等比較有空時再來實現看看

Friday, October 22, 2010

Sunday, September 26, 2010

AccessSandBox 新增Log功能

新的Log功能可以記錄在Sandbox中執行程式的行為
主要包含 檔案操作、登錄檔操作、Handle操作和程序的建立與終止

Monday, September 20, 2010

AccessSandBox 基於Windows權限設計的SandBox

AccessSandBox為一個透過控制SandBox中程序(Process)的權限,來達到隔離的效果。

它不像一般SandBox是透過模擬一個環境來隔離程序,它是透過控制了程序的權限,讓程序只能在電腦中的特定範圍(受控制範圍)中活動,如果有惡意行為的話,因為權限不足而無法對電腦進行破壞。

由於是透過Windows的權限設計,所以AccessSandBox本身並不需要任何的驅動程式,也不需進Ring0,僅透過安裝一個Service跟呼叫Windows權限相關API來進行控制。


目前的設計分成三種權限控制的層級:
  1. High Level:高度限制程序的權限,包括 降低Integrity Level為Low 、程序的UI權限將受到控制
  2. Normal Level:一般權限控制,程序的UI權限將受到控制
  3. 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。

從下面兩張圖可以看到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,執行在這個桌面下的程式,在預設桌面中的鍵盤側錄程式是無法側錄的

執行畫面

AKLT測試

測試通過

Zemana Keylogger測試

測試通過

SpyShelter Keylogger測試

測試通過