cmaedu.comdll,注入dll的黑客程序

hacker2年前黑客155

cmaedu.com

DLL注入是干什么的?

cmaedu.com所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。 DLL注入在黑客技术中也叫做进城插入技术,一些木马、盗号插件、破坏性病毒为了能够随系统启动或者伪装为系统进程,会插入系统的DLL文件并调用其中封装的函数,例如键盘截取就利用了DLL注入并且调用了HOOK钩子机制 详细例子: hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程 PROCESS_VM_OPERATION | //允许远程VM操作 PROCESS_VM_WRITE, //允许远程VM写 FALSE, dwRemoteProcessId ) 由于我们后面需要写入远程进程的内存地址空间并建立远程线程,所以需要申请足够的权限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。 如果进程打不开,以后的操作就别想了。进程打开后,就可以建立远线程了,不过别急,先想想这个远线程的线程函数是什么?我们的目的是注入一个DLL。而且我们知道用LoadLibrary可以加载一个DLL到本进程的地址空间。于是,自然会想到如果可以在目标进程中调用LoadLibrary,不就可以把DLL加载到目标进程的地址空间了吗?对!就是这样。远线程就在这儿用了一次,建立的远线程的线程函数就是LoadLibrary,而参数就是要注入的DLL的文件名。(这里需要自己想一想,注意到了吗,线程函数ThreadProc和LoadLibrary函数非常相似,返回值,参数个数都一样) 还有一个问题,LoadLibrary这个函数的地址在哪儿?也许你会说,这个简单,GetProcAddress就可以得出。于是代码就出来了。 char *pszLibFileRemote="my.dll"; PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"); CreateRemoteThread( hRemoteProcess, NULL, 0, pfnStartAddr, pszLibFileRemote, 0, NULL); 但是不对!不要忘了,这是远线程,不是在你的进程里,而pszLibFileRemote指向的是你的进程里的数据,到了目标进程,这个指针都不知道指向哪儿去了,同样pfnStartAddr这个地址上的代码到了目标进程里也不知道是什么了,不知道是不是你想要的LoadLibraryA了。但是,问题总是可以解决的,Windows有些很强大的API函数,他们可以在目标进程里分配内存,可以将你的进程中的数据拷贝到目标进程中。因此pszLibFileRemote的问题可以解决了。 char *pszLibFileName="my.dll";//注意,这个一定要是全路径文件名,除非它在系统目录里;原因大家自己想想。 //计算DLL路径名需要的内存空间 int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(char); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名缓冲区 pszLibFileRemote = (char *) VirtualAllocEx( hRemoteProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE); //使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间 iReturnCode = WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL); OK,现在目标进程也认识pszLibFileRemote了,但是pfnStartAddr好像不好办,我怎么可能知道LoadLibraryA在目标进程中的地址呢?其实Windows为我们解决了这个问题,LoadLibraryA这个函数是在Kernel32.dll这个核心DLL里的,而这个DLL很特殊,不管对于哪个进程,Windows总是把它加载到相同的地址上去。因此你的进程中LoadLibraryA的地址和目标进程中LoadLibraryA的地址是相同的(其实,这个DLL里的所有函数都是如此)。至此,DLL注入结束了。

cmaedu.com

注入DLL这么解除

DLL注入木马是目前网络上十分流行的木马形式,它就像是一个寄生虫,木马以DLL文件的形式,寄宿在某个重要的系统进程中,通过宿主来调用DLL文件,实现远程控制的功能。这样的木马嵌入到系统进程中可以穿越防火墙,更让人头疼的是,用杀毒软件进行查杀,杀软即使报警提示发现病毒,但是也无法杀掉木马病毒文件,因为木马DLL文件正被宿主调用而无法删除。下面我们把杀软放到一边,通过专用工具及其手工的方法来清除DLL木马。

cmaedu.com一、清除思路

1、通过系统工具及其第三方工具找到木马的宿主进程,然后定位到木马DLL文件。

2、结束被木马注入的进程。

cmaedu.com3、删除木马文件。

cmaedu.com4、注册表相关项的清除。

二、 清除方法

cmaedu.com1、普通进程DLL注入木马的清除

cmaedu.com有许多DLL木马是注入到“iexplore.exe”和“explorer.exe”这两个进程中的,对于注入这类普通进程的DLL木马是很好清除掉的。

如果DLL文件是注入到“iexplore.exe”进程中,此进程就是IE浏览进程,那么可以关掉所有IE窗口和相关程序,然后直接找到DLL文件进行删除就可以了。如果是注入到“explorer.exe”进程中,那么就略显麻烦一些,因为此进程是用于显示桌面和资源管理器的。当通过任务管理器结束掉“explorer.exe”进程时,桌面无法看破到,此时桌面上所有图标消失掉,“我的电脑”、“网上邻居”等所有图标都不见了,也无法打开资源管理器找到木马文件进行删除了。怎么办呢?

这时候可以在任务管理器中点击菜单“文件”→“新任务运行”,打开创建新任务对话框,点击“浏览”挖通过浏览对话框就可以打开DLL文件所在的路径。然后选择“文件类型”为“所有文件”,即可显示并删除DLL了

cmaedu.com提示:如果你熟悉命令行(cmd.exe)的话,可以直接通过命令来清除,如:

cmaedu.comtaskkill /f /im explorer.exe

del C:\\Windows\\System32\\test.dll

cmaedu.comstart explorer.exe

cmaedu.com第一行是结束explorer.exe,第二回是删除木马文件test.dll,第三行是重启explorer.exe

2、使用IceSword卸载DLL文件调用

如果木马是插入了“svchost.exe”之类的关键进程中,就不能指望进程管理器来结束进程了,可能需要一些附加的工具卸载掉某个DLL文件的调用。

cmaedu.comIceSword的功能十分强大,可以利用它卸载掉已经插入到正在运行的系统进程中的DLL文件。在IceSword的进程列表显示窗口中,右键点击DLL木马宿主进程,选择弹出菜单中的“模块信息”命令打开DLL模块列表对话窗口。选择可疑的模块后,点击“卸载”按钮即可将DLL木马进程中删除掉了。

cmaedu.com如果提示不能卸载的话,可以点击“强行解除”按钮,从进程中强行删除该DLL调用。这时候就可以从“模块文件名”栏中,得到DLL文件文件的路径,然后到文件夹中将DLL木马彻底删除掉。

3、SSM终结所有DLL木马

许多木马都是注入到系统里关键进程中的,比如“svchost.exe”、“smss.exe”、“winlogon.exe”进程,这些进程使用普通方式无法结束,使用特殊工具结束掉进程或卸载掉进程中的DLL文件后,却又很可能造成系统崩溃无法正常运行等。例如一款著名的木马PCShare是注入“winlogon.exe”进程中的,该进程是掌握Windows登录的,在使用IceSword卸载时系统立刻异常重启,更本来不及清除dll文件,在重启后dll木马再次被加载。

对于这类dll木马,必须在进程运行之前阻止dll文件的加载。阻止dll文件加载要用到一个强大的安全工具“System Safety Monitor”(简称SSM)。SSM是由俄罗斯出品的一款系统监控软件,通过监视系统特定的文件和程序,达到保护系统安全的目的。这款软件功能非常强大,可以很好地配合防火墙和杀毒软件更好地保护系统的安全。

cmaedu.com运行SSM,在程序界面中选择“规则”选项卡,右键点击中间规则列表空白处,选择“新增”命令。弹出文件浏览窗口,选择浏览文件类型为“库文件”,在其中选择指定文件路径“C:\\Windows\\system32\\rejoice.dll”。确定后,即可将DLL木马文件添加到规则列表中,然后在界面下方的“规则”下拉列表中选择“阻止(F2)

黑客技巧系列之如何注册DLL或OCX文件

下面介绍这个方法 注册DLL文件:打开HKEY_CLASSES_ROOR\Dllfile,新建项shell,再其下新建Register。你会发现Register就是右键弹出的菜单名,再在其下建command,修改其“默认值”为Regsvr32 %1 反注册DLL文件:打开HKEY_CLASSES_ROOR\Dllfile,新建项shell,再其下新建Unregister,再在其下建command,修改其“默认值”为Regsvr32 %1 /u。 注册和反注册OCX文件打开HKEY_CLASSES_ROOR\OCXfile,然后其它的方法和上面的一样的了。 右击一个OCX或DLL试试看,出现了我们想要的Register和Unregister菜单项。 Activex注册和反注册工具——Regsvr32 使用过Activex的人都知道,Activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的Activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在Windows的system文件夹下有一个regsvr32.exe的程序,它就是Windows自带的Activex注册和反注册工具。它的用法为: regsver32详解 regsvr32 [/s] [/n] [/i(:cmdline)] dllname 其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。 参数有如下意义: /u——反注册控件 /s——不管注册成功与否,均不显示提示框 /c——控制台输出 /i——跳过控件的选项进行安装(与注册不同) /n——不注册控件,此选项必须与/i选项一起使用 如笔者要注册一amovie.ocx控件,则打入regsvr32 amovie.ocx即可,要反注册它时只需使用regsvr32 /u amovie.ocx就行了。 QUOTE:regsvr32 /s APIINEX.dll 注册DLL文件 regsvr32 /s /u APIINEX.dll 卸载DLL文件 regsvr32 Shortcut.ocx 注册ocx文件 regsvr32 /u Shortcut.ocx 卸载ocx文件 /s .dll,.ocx 注册成功后不显示提示信息。 /u .dll,.ocx 卸载 可把注册控件的命令放入批处理文件中。 直接把注册信息注入注册表。

cmaedu.com

什么是DLL木马

DLL木马DLL 木马揭秘

cmaedu.com相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。什么是“DLL木马”呢?它与一般的木马有什么不同?

一、从DLL技术说起

要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

cmaedu.com时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。

cmaedu.comDLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

二、应用程序接口API

cmaedu.com上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

cmaedu.com三、DLL与木马

cmaedu.comDLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行

虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马技术分析

cmaedu.com到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

cmaedu.com1.木马的主体

cmaedu.com千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。

cmaedu.com如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。

DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

2.动态嵌入技术

Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-

cmaedu.com远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?

cmaedu.com3.木马的启动

有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。

启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。

Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。

注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。

有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

4.其它

到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

六、DLL木马的发现和查杀

cmaedu.com经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。

相关文章

cmaedu.com喜德盛黑客500和黑客700,喜德盛吧黑客500

cmaedu.com喜德盛黑客500和黑客700,喜德盛吧黑客500

买山地自行车 捷安特和美利达,给你看一下。 第一步,要决定购买什么类型的车。 要根据自己预期的用途来购买,一般来说 1是主要上下班用买菜用带人用, 2是主要象目前论坛主流活动类型一样周末的健康...

cmaedu.com天涯论坛被黑客攻破,黑掉天涯论坛的黑客

cmaedu.com天涯论坛被黑客攻破,黑掉天涯论坛的黑客

15年前,那个黑掉阿里内网的“黑客男孩”吴翰清,如今情况怎样? 在人们的印象当中,黑客是一个神秘的存在,实际上他音译过来的单词Hacker,原意上是指热心计算机技术、水平高超的当娘高手,后来包括了那些...

cmaedu.com指纹打卡机,黑客指纹打卡机

cmaedu.com指纹打卡机,黑客指纹打卡机

教你如何破解指纹考勤机 破解指纹考勤机步骤如下:1、用铅笔在白纸的一小块上反复涂抹,直至完全涂黑2、把手洗净擦干,用录过指纹的手指在纸上涂黑处来回涂抹10次,用嘴吹一下手指3、用胶带按压刚才手指按的地...

cmaedu.com去哪儿找黑客,靠谱黑客哪里找

cmaedu.com去哪儿找黑客,靠谱黑客哪里找

哪里有真正的黑客? 也可能在蓝翔!黑客不但是一种行为,更是是一类人,最初与最终是一种精神。网上的黑客服务靠谱不? 想去竞争对手的客户管理系统拿客户资料? 这样的想法靠谱不? 违法的事情最好不要做注:1...

cmaedu.com黑客张三利用软件入侵判断-黑客24小时在线接单网站-黑客张三利用软件

cmaedu.com黑客张三利用软件入侵判断-黑客24小时在线接单网站-黑客张三利用软件

淘乐特购充话费是真的吗 它是在打擦边球,在用概念混淆你。首先你得知道这100元的淘话通卡,卡上的100元不是冲进了你的移动电话费(以移动为例子),而是冲进了一个第三方平台。比如你移动电话办理的业务是月...

cmaedu.com淘宝网站如何防止黑客攻击的,淘宝疑被黑客攻击

cmaedu.com淘宝网站如何防止黑客攻击的,淘宝疑被黑客攻击

这段时间电脑登陆淘宝,无法登陆,老是显示你的网络已经被黑客劫持,请立即修复。这是怎么回事。 是360通知的吗,也许你用了他们认为是一流氓的软件,关闭看看,或者你的电脑真的中毒了,杀毒吧昨天用手机连自家...

评论列表

访客
2022-09-28 20:06:16

一个问题,LoadLibrary这个函数的地址在哪儿?也许你会说,这个简单,GetProcAddress就可以得出。于是代码就出来了。 char *pszLibFileRemote="my.dll"; PTHREAD_START_ROUT

访客
2022-09-28 16:44:04

木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。