本文章是從"瑞星社區反病毒論壇"轉載而來:以下是原始網址...
http://61.145.118.180/gate/big5/downloa ... fz&id=7050
後門!相信這個詞語對您來說一定不會陌生,它的危害不言而喻,但隨著人們的安全意識逐步增強,又加上殺毒軟體的“大力支援”,使傳統的後門無法再隱藏自己,任何稍微有點電腦知識的人,都知道“查端口”“看進程”,以便發現一些“蛛絲馬跡”。所以,後門的編寫者及時調整了思路,把目光放到了動態鏈結程式庫上,也就是說,把後門做成DLL文件,然後由某一個EXE做為載體,或者使用Rundll32.exe來啟動,這樣就不會有進程,不開端口等特點,也就實現了進程、端口的隱藏。本文以“DLL的原理”“DLL的清除”“DLL的防範”為主題,並展開論述,旨在能讓大家對DLL後門“快速上手”,不再恐懼DLL後門。好了,進入我們的主題。
一,DLL的原理
1,動態鏈結程式庫
動態鏈結程式庫,全稱:Dynamic Link Library,簡稱:DLL,作用在於為應用程式提供擴展功能。應用程式想要調用DLL文件,需要跟其進行“動態鏈結”;從編程的角度,應用程式需要知道DLL文件導出的API函數方可調用。由此可見,DLL文件本身並不可以運行,需要應用程式調用。正因為DLL文件運行時必須插入到應用程式的記憶體模組當中,這就說明了:DLL文件無法刪除。這是由於Windows內部機製造成的:正在運行的程式不能關閉。所以,DLL後門由此而生!
2,DLL後門原理及特點
把一個實現了後門功能的代碼寫成一個DLL文件,然後插入到一個EXE文件當中,使其可以執行,這樣就不需要佔用進程,也就沒有相對應的PID號,也就可以在任務管理器中隱藏。DLL文件本身和EXE文件相差不大,但必須使用程式(EXE)調用才能執行DLL文件。DLL文件的執行,需要EXE文件載入,但EXE想要載入DLL文件,需要知道一個DLL文件的入口函數(既DLL文件的導出函數),所以,根據DLL文件的編寫標準:EXE必須執行DLL文件中的DLLMain()作為載入的條件(如同EXE的mian())。做DLL後門基本分為兩種:1)把所有功能都在DLL文件中實現;2)把DLL做成一個啟動文件,在需要的時候啟動一個普通的EXE後門。
常見的編寫方法:
(1),只有一個DLL文件
這類後門很簡單,只把自己做成一個DLL文件,在註冊表Run鍵值或其他可以被系統自動載入的地方,使用Rundll32.exe來自動啟動。Rundll32.exe是什麼?顧名思意,“執行32位的DLL文件”。它的作用是執行DLL文件中的內部函數,這樣在進程當中,只會有Rundll32.exe,而不會有DLL後門的進程,這樣,就實現了進程上的隱藏。如果看到系統中有多個Rundll32.exe,不必驚慌,這證明用Rundll32.exe啟動了多少個的DLL文件。當然,這些Rundll32.exe執行的DLL文件是什麼,我們都可以從系統自動載入的地方找到。
現在,我來介紹一下Rundll32.exe這個文件,意思上邊已經說過,功能就是以命令行的方式調用動態鏈結程式庫。系統中還有一個Rundll.exe文件,他的意思是“執行16位的DLL文件”,這裡要注意一下。在來看看 Rundll32.exe使用的函數原型:
Void CALLBACK FunctionName (
HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow
);
其命令行下的使用方法為:Rundll32.exe DLLname,Functionname [Arguments]
DLLname為需要執行的DLL文件名;Functionname為前邊需要執行的DLL文件的具體引出函數;[Arguments]為引出函數的具體參數。
(2),替換系統中的DLL文件
這類後門就比上邊的先進了一些,它把實現了後門功能的代碼做成一個和系統匹配的DLL文件,並把原來的DLL文件改名。遇到應用程式請求原來的DLL文件時, DLL後門就啟一個轉發的作用,把“參數”傳遞給原來的DLL文件;如果遇到特殊的請求時(比如客戶端),DLL後門就開始,啟動並運行了。對於這類後門,把所有操作都在DLL文件中實現最為安全,但需要的編程知識也非常多,也非常不容易編寫。所以,這類後門一般都是把DLL文件做成一個“啟動”文件,在遇到特殊的情況下(比如客戶端的請求),就啟動一個普通的EXE後門;在客戶端結束連接之後,把EXE後門停止,然後DLL文件進入“休息”狀態,在下次客戶端連接之前,都不會啟動。但隨著微軟的“數字簽名”和“文件恢復”的功能出臺,這種後門已經逐步衰落。
提示:
在WINNTsystem32目錄下,有一個dllcache文件夾,
握著你的"手"來清除DLL後門
MSFT相關
前往
- Software
- ↳ CodeCharge Studio
- ↳ CodeCharge
- ↳ DemoCharge
- ↳ SuperPDF
- ↳ 551einv
- ↳ E3進銷存
- 程式語言
- ↳ PHP
- ↳ CodeLobster PHP Edition
- ↳ Yii
- ↳ CodeIgniter
- ↳ Phalcon
- ↳ Symfony
- ↳ FuelPHP
- ↳ Zend Framework 2
- ↳ laravel
- ↳ WordPress
- ↳ ASP.NET/C#
- ↳ ASP/VBScript
- ↳ JSP
- ↳ Java Servlets
- ↳ ColdFusion
- ↳ Perl
- ↳ Java Script
- ↳ jQuery
- ↳ HTML + CSS
- ↳ jQuery
- ↳ nodejs
- ↳ VB6
- ↳ Git
- ↳ App Inventor 2
- ↳ bash
- ↳ C++/ VC/ OpenCV
- ↳ OpenCV
- ↳ go
- ↳ cordova
- ↳ python
- ↳ Xamarin
- ↳ Assembly
- 資料庫
- ↳ MySQL
- ↳ PostgreSQL
- ↳ ORACLE
- ↳ Access
- ↳ SQL Server
- ↳ SQLite
- ↳ MariaDB
- ↳ Mongodb
- 作業系統
- ↳ Linux
- ↳ Ubuntu
- ↳ CentOS
- ↳ Mint
- ↳ Mandriva
- ↳ Debian
- ↳ Red Hat Enterprise Linux
- ↳ Oracle Linux
- ↳ Fedora
- ↳ Kali Linux
- ↳ OpenSUSE
- ↳ Elementary OS
- ↳ Microsoft
- ↳ Server 2008 R2
- ↳ Server 2012 R2
- ↳ Server 2012
- ↳ 8
- ↳ 10
- ↳ System Center 2016
- ↳ NOVELL
- ↳ FreeBSD
- ↳ VMware
- ↳ VirtualBox
- ↳ Mac OS X
- ↳ Solaris
- ↳ iOS
- ↳ Android
- ↳ Cloud
- ↳ OpenStack
- ↳ Docker
- ↳ Proxmox VE
- ↳ CloudReady
- ↳ chrome
- 網頁伺服器
- ↳ apache
- ↳ tomcat
- ↳ nginx
- ↳ IIS
- ↳ JBoss
- ↳ weblogic
- ↳ WebHosting
- 硬體
- ↳ 硬體及週邊
- ↳ RouterOS
- ↳ LEGO NXT
- ↳ Arduino
- ↳ MSP430
- ↳ Raspberry Pi
- ↳ OpenERP
- ↳ Storage
- ↳ Server
- ↳ Brocade
- ↳ MODELS
- ↳ FortiGate
- 軟體
- ↳ sublime
- ↳ LibreNMS