VC++下剖析駭客軟體隱蔽程式的手段

來源:互聯網
上載者:User
 一、引言

隨著電腦網路的不斷髮展,駭客技術也日益成為一支不可忽視的技術力量,儘管多數駭客的攻擊目標以伺服器為主,對大多數的互連網使用者的直接危害並不大。但有一類稱為"特洛伊木馬"的駭客程式可以通過欺騙等手段在普通網路使用者端安裝木馬的服務端,使使用者的電腦在上網時留有後門,而駭客則可以通過這個後門對被感染的電腦隨心所欲地進行監視、破壞。顯然這種黑軟對於普通網路使用者的危害是非常嚴重的。

此類黑軟仍然屬於應用程式,其本質是基於通訊端的網路通訊程式。因此駭客能成功攻擊被感染電腦的一個非常必要的先決條件就是此時被攻擊方已經有木馬程式的服務端在運行。由於木馬程式是一種惡意程式,能在被攻擊者沒有察覺的情況下悄悄啟動運行為攻擊者開啟後門,故顯然不能象其他程式一樣堂而皇之的顯示在工作列和工作清單中,否則會立即為使用者所察覺而將其關閉,也就失去了為攻擊者提供後門的作用。本文下面就針對其隱藏程式的機理展開討論。

二、程式在工作列中的隱藏原理

程式在工作列的隱藏比較簡單,首先要保證程式主介面的隱藏,一般是通過修改應用程式類的初始化執行個體函數InitInstance()的ShowWindow()語句的SW_SHOW參數為SW_HIDE來實現的。主介面隱藏的同時工作列雖然也會消失,但在程式啟動時會閃一下,因此需要修改程式的擴充屬性。一種方法是SDK的寫法,即直接利用GetWindowLong()擷取到當前的擴充屬性然後通過邏輯運算去掉原有的WS_EX_APPWINDOW屬性,並新添加一個WS_EX_TOOLWINDOW屬性,這樣系統會將其認為是一個工具條視窗而不會再在工作列中加以顯示。最後需要將修改過的擴充屬性通過SetWindowLong()函數將其寫回。這兩個函數的聲明分別如下:

LONG GetWindowLong(HWND hWnd,int nIndex);
LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);

另一種很簡便的是MFC的寫法:在程式架構類的預建立視窗函數裡通過直接對CREATESTRUCT結構對象的邏輯操作而將程式屬性進行改變:

cs.style=WS_POPUP;
cs.dwExStyle|=WS_EX_TOOLWINDOW;

這兩種寫法雖然表現形式各不相同,其本質都是一樣的。

三、程式在工作清單中的隱藏原理

工作清單(Ctrl+Alt+Del時彈出的對話方塊)顯示了當前系統正在啟動並執行一些應用程式,如果實現了上一步,雖然在工作列看不見程式,但有經驗的使用者可以通過觀察工作清單而發現一些值得懷疑的應用程式而在此將其關閉。所以大多數黑軟也都通過較複雜的手段實現了自身在工作清單中的隱藏,使被發現的機會大大降低。

在Win9x中,一般每個應用程式都要通過一個API(應用程式介面)函數RegisterServiceProcess()向系統申請註冊成為一個服務進程,並且也是通過這個函數登出其服務進程來結束這個服務進程的運行。如果一個進程註冊為一個服務進程,通過Ctrl+Alt+Del就可以在工作清單裡看見該進程的標題。而如果一個進程運行了但沒有向系統申請註冊成為服務進程那麼就不會在工作清單裡顯示。黑軟也正是利用這個原理使自身在運行時能在工作清單中實現隱藏。該函數存放於系統核心Kernel32.dll中,具體聲明如下:

DWORD RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);

其第一個參數指定為一個服務進程的進程標識,如果是0則註冊當前的進程;第二個參數指出是註冊還是登出當前的進程,其狀態分別為:RSP_SIMPLE_SERVICE和RSP_UNREGISTER_SERVICE。黑軟一般是在程式啟動初始化時首先從Kernel32.dll動態串連庫中將RegisterServiceProcess()函數載入到記憶體,然後再通過該函數將程式從工作清單中隱藏:

//從Kernel32.dll中載入RegisterServiceProcess()
HMODULE m_hKernel=::GetModuleHandle("Kernel32.DLL");
RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,"RegisterServiceProcess");
m_rsp(::GetCurrentProcessId(),1);//此時為隱藏,當第二個參數為0時顯示

另外,還有一部分黑軟是通過ShowWindowAsync()函數啟動一個新的線程來顯示一個新視窗的。該函數的原形為:

BOOL ShowWindowAsync(HWND hWnd,int nCmdShow);

而黑軟正是鑽了該函數的第二個參數可以設定表單顯示狀態的空子,在設定成SW_HIDE時就可以使目標表單(黑軟)從工作清單中隱藏。

小結:以上就是Win9x下的駭客程式所具備的一些準系統,在此基礎上我們可以藉助於其實現技巧來編寫出一些諸如後台監控之類的公用程式。並且可以通過對駭客類軟體的隱藏機理的分析能使廣大使用者對此類黑軟採取一些必要的措施,通過加強防範來使自己的損失防患於未然。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.