zoukankan      html  css  js  c++  java
  • “DLL劫持”技术的经典“LPK劫持者”木马!

    《LPK劫持者》

    “.exe”可执行程序曾遭“威金”病毒的洗劫,导致全盘应用程序被病毒恶意捆绑感染,中了此毒很是麻烦、无奈,而且拥有数百个变种,相信大家对这类蠕虫病毒并不陌生。然而,一直被“.exe”可执行程序加载的“.dll”动态链接库程序也难逃厄运。
    近日,我在互联网上捕捉到了一个既全盘感染“.exe”可执行程序又全盘劫持“.dll”动态链接库程序的木马病毒,这就是“LPK劫持者”木马。首次发现时间是2010年12月初,不过直到2011年2月份左右这个木马才正式活跃了起来。
    该木马全盘劫持“.dll”动态链接库程序是不是和全盘感染“.exe”可执行程序的方式是否一样呢?请看下文。

    《“LPK劫持者”全盘破坏“.exe”可执行程序和恶意劫持动态链接库程序“lpk.dll”》

    病毒名称:“LPK劫持者”木马;
    病毒别称(江民科技)“通犯”变种rnn;
    病毒类型:木马;
    病毒长度:133,120 字节;
    病毒 MD5:7e6a61267592dd8afb9e2799b23f7cbd
    危害等级:★★★★☆
    感染系统:Windows 系统;
    病毒样本:
    附上“LPK劫持者”的木马样本,请在下载后24小时内删除。木马样本仅供学习参考使用,不得破坏他人计算机等非法用途,如有后果请自负,本人不承担任何法律责任!
    附件:“LPK劫持者”木马样本.rar
    “LPK劫持者”木马入侵受害者计算机后,首先会给自己创建主体程序和随机启动的服务项。木马主体程序是一个随机命名的程序“fwpfsp.exe”,它被创建到“C:\WINDOWS\system32”系统目录下,木马程序的图标竟然伪装《360安全卫士》的主程序图标,真不要脸啊。

    然后在“C:\WINDOWS\system32”系统目录下再创建两个木马动态链接库程序“hra32.dll”和“hra33.dll”,然后将它们插入到木马主体进程“fwpfsp.exe”去运行。

    给木马主体程序“fwpfsp.exe”创建一个随机命名的服务项来随机自动启动,本次测试创建的木马服务项的名称是“Nationalkdu”。

    之后“LPK劫持者”木马将自身“fwpfsp.exe”复制到用户临时文件“C:\Documents and Settings\Administrator(受害者的用户名)\Local Settings\Temp”目录下并重命名为“hrl*.tmp”,再调入到内存中去运行。“hrl*.tmp”运行后,会弹出标题名为“AntiVirus”的窗体,内存中有几个“hrl*.tmp”运行就会弹出几个来。“AntiVirus”英文翻译过来是“杀毒软件”的意思,由于该木马本来模仿的就是《360安全卫士》的主程序图标。所以懂英语的受害者在不知情的情况下,还以为这是《360安全卫士》的弹窗。

    PS:
    “*”代表数字依次按照数学顺序排列,例如“hrl1.tmp”、“hrl2.tmp”、“hrl3.tmp”……
    由于受害者每次重启计算机后,随机启动的木马服务运行木马主体程序“fwpfsp.exe”之后,都会将自身“fwpfsp.exe”复制到用户临时文件“C:\Documents and Settings\Administrator(受害者的用户名)\Local Settings\Temp”目录下并按照数学顺序将其重命名为“hrl*.tmp”再去执行它们,然后“hrl*.tmp”运行后便会结束木马的主体进程“fwpfsp.exe”。想到这,各位也都应该明白了为什么“LPK劫持者”木马会创建“hrl*.tmp”来运行自己了。
    一般每次重启计算机后“LPK劫持者”木马都会调用两个“hrl*.tmp”到内存中去运行,例如受害者本次重启计算机后检测到上次创建的两个病毒程序“hrl1.tmp”和“hel2.tmp”,那么第二次创建的两个病毒程序就是“hrl3.tmp”和“hrl4.tmp”。所以长时间未清理临时文件的情况下,日积月累,用户临时文件的文件夹目录下会出现大量的“hrl*.tmp,占用硬盘空间。

    “LPK劫持者”木马程序“hrl*.tmp”运行后,会开启“8090”端口连接黑客服务器将用户隐私信息发送给黑客,而且随时接受黑客的命令下载其它的病毒和木马,在“命令提示符”里面输入DOS命令“NETSTAT /A /N”查看木马开启的端口和连接黑客服务器的IP地址。

    还会破坏受害者的计算机,最明显的破坏行为就是全盘破坏“.exe”可执行程序和全盘恶意劫持动态链接库程序“lpk.dll”。
    调用 MS-DOS 操作系统 程序“fine.exe”使用DOS命令全盘查找扩展名为“.exe”的可执行程序程序,在系统临时文件“C:\WINDOWS\Temp”目录下创建一个名称为“IRA***.tmp”的文件夹,“***”为随机数字,本次文件名是“IRA910.tmp”。然后将找到后的“.exe”可执行程序复制到该文件夹目录下,对其注入恶意代码,再把已注入恶意代码的“.exe”可执行程序放回原有目录下覆盖正常的“.exe”可执行程序。
    通过《eXeScope》这个软件工具查看对比一下某个应用软件的主程序“.exe”被“LPK劫持者”木马破坏的前后!很明显,被“LPK劫持者”木马破坏的“.exe”可执行程序都被恶意添加了一个名称为“.adate”的段。

    并在这些“.exe”可执行程序的当前目录下创建一个名称为“lpk.dll”的木马动态链接库程序。为什么在每个应用程序的文件夹目录下创建一个木马的“lpk.dll”呢?这就是“DLL劫持”技术。

    因为“LPK劫持者”木马利用了 Windows 系统 的运行规则,将众多应用程序运行时需要加载的系统动态链接库程序“lpk.dll”伪装创建在这些应用程序的安装目录下。如果在运行某个程序时,这个程序存在“DLL劫持漏洞”,也就是没有设计“lpk.dll”动态链接库程序的指定系统加载路径:“%SystemRoot%\system32\lpk.dll”,那么 Windows 操作系统 的默认搜索方式会先将当前目录下木马的动态链接库程序“lpk.dll”插入到进程中运行,再去“C:\WINDOWS\system32”系统目录下搜索系统的动态链接库程序“lpk.dll”插入到进程中运行。
    这是 Windows 操作系统 DLL动态链接库程序的加载顺序:“1.应用程序所在目录 =》2.当前工作目录 =》3.系统目录 =》4.Windows目录 =》5.环境变量指定的目录”。
    “LPK劫持者”木马在每个应用程序的安装目录下都创建了木马动态链接库程序“lpk.dll”,也就是说全盘哪个文件夹目录下存在“.exe”可执行程序就存在木马动态链接库程序。“lpk.dll”文件属性均为“只读”、“系统”和“隐藏”的文件属性,文件大小均是“130 KB”。也就是说,感染“LPK劫持者”木马计算机只要打开某个应用软件就会重新释放“LPK劫持者”木马。
    “LPK劫持者”木马除了全盘劫持“lpk.dll”动态链接库程序之外,还会调用 MS-DOS 操作系统 程序“fine.exe”使用DOS命令全盘查找扩展名为“.rar”和“.zip”压缩文件,在系统临时文件“C:\WINDOWS\Temp”目录下创建一个名称为“IRA***.tmp”的文件夹,“***”为随机数字,本次文件名是“IRA818.tmp”。并向压缩包内恶意添加木马动态链接库程序“lpk.dll”,就是恶意利用《WinRAR》压缩软件的“rar.exe”将木马动态链接库程序“lpk.dll”压缩添加到“.rar”和“.zip”压缩文件中,这也解释了为什么感染“LPK劫持者”木马后会出现大量的“rar.exe”进程。然后将已被恶意添加木马动态链接库程序“lpk.dll”的“.rar”和“.zip”压缩文件放回原有目录下覆盖正常的“.rar”或“.zip”压缩文件。这样以后受害者解压缩某些应用软件的同时也会把“lpk.dll”一起解压缩出来,再运行这个软件后同样会重新释放“LPK劫持者”木马。

    这是感染“LPK劫持者”木马后的“任务管理器”进程截图,会出现大量的“fine.exe”和“cmd.exe”还有“hrl*.tmp”进程。

    被“LPK劫持者”木马全盘感染的“.exe”可执行程序并不是像“威金”病毒那样将自身捆绑到程序中运行后会重新释放病毒,而是注入一种破坏命令代码,就是诺在当前目录下检测不到木马动态链接库程序“lpk.dll”就不运行。所以,当把木马在某些应用软件安装目录下恶意添加的木马动态链接库“lpk.dll”删掉后,这个应用软件的主程序“.exe”打开后将不运行-----无响应。

    《“LPK劫持者”木马解决方案》

    第一步:
    由于“LPK劫持者”木马在系统目录下都恶意添加了“lpk.dll”劫持,造成了运行某些系统工具都有可能程序释放“LPK劫持者”木马。例如在“C:\WINDOWS”系统目录下就恶意添加了木马动态链接库程序“lpk.dll”,所以默认随机启动运行的“explorer.exe”就会重新释放“LPK劫持者”木马,可以说“explorer.exe”反面上来讲也就变成了“LPK劫持者”木马的开机启动项。系统程序“explorer.exe”只是一个例子,如果受害者的计算机设置了多款应用软件随机自动运行,那么这些应用软件反面上来讲就都成了“LPK劫持者”木马的开机启动项。
    这怎么办?不用怕,微软提供了指定“DLL劫持”的防范措施。
    开始菜单-----运行 输入:“regedit.exe”(双引号去掉),调出“注册表编辑器”。依次展开至分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs”,可以看到子项“KnownDLLs”分支下有多个系统动态链接库程序。

    鼠标右键子项“KnownDLLs”菜单中选择“新建(N)”-----“字符串值(S)”,将其命名为“lpk”,“数值数据”设置为“lpk.dll”,确定。

    退出“注册表编辑器”,务必重启一下计算机。
    这样,一些需要加载“lpk.dll”的应用程序运行时会从系统目录下查找“lpk.dll”并加载,而不再会因为 Windows 操作系统 DLL动态链接库程序的加载顺序从当前目录下查找“lpk.dll”并加载了。
    利用这个方法也可以防止其它“.dll”动态链接库程序遭“DLL劫持”!例如2009年初发现的“猫癣”木马同2010年末发现的“LPK劫持者”木马的行为一样,只不过该木马是全盘劫持动态链接库程序“usp10.dll”,导致当初重装系统也无法解决“猫癣”木马。为了防止“猫癣”木马通过全盘劫持“usp10.dll”死灰复燃,可以在注册表分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs”下添加一个名称为“usp10.dll”的键值项。
    PS:
    采用内核 Windows NT 5.1 系列的操作系统默认情况下只有少数关键的“.dll”系统动态链接库程序在此子项下,而自从 Windows Vista 操作系统下采用 NT 6.1 内核的 Windows 7.0 操作系统下面此子项已经相当齐全,所以在 Windows 7.0 操作系统下发生“DLL劫持”的概率要比 Windows NT/2000/XP 操作系统下要小很多。
    如图,这是 Windows 7.0 操作系统的注册表分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs”右侧窗口截图。

    第二步:
    按“Ctrl + Alt + Del”键调出“任务管理器”,在里面结束“fwpfsp.exe”(不存在就跳过此步骤)和“hrl*.tmp”一系列的木马进程,“*”代表数字。
    第三步:
    使用《超级兔子》或者《Windows 优化大师》清理系统临时文件,主要目的是一键删除“LPK劫持者”木马在用户临时文件“C:\Documents and Settings\Administrator(受害者的用户名)\Local Settings\Temp”目录下创建的所有名称为“hrl*.tmp”的一系列木马程序,“*”代表数字。
    删除“C:\WINDOWS\system32”系统目录下的木马主体程序“fwpfsp.exe”。
    删除木马服务项,开始菜单-----运行 输入:“regedit.exe”(双引号去掉),调出“注册表编辑器”。依次展开至“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root”分支下面找到名称为“LEGACY_NATIONALKDU”的子项,鼠标右键子项“LEGACY_NATIONALKDU”菜单中选择“删除(D)”。这时,删除子项“LEGACY_NATIONALKDU”会弹出“删除项时出错”的对话框。

    这是因为这个注册表分支在“权限”上被限制了只能访问而不能删除的操作。鼠标右键子项“LEGACY_NATIONALKDU”菜单中选择“权限(P)...”。

    安全……把子项“LEGACY_NATIONALKDU”下面所有用户权限的“完全控制”打上勾,确定,再删除子项“LEGACY_NATIONALKDU”。

    返回注册表五大预定义项,重新依次展开至“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services”分支下面找到名称为“Nationalkdu”的子项,鼠标右键子项“Nationalkdu”菜单中选择“删除(D)”。如图,可以很清楚看到木马服务项“Nationalkdu”指向“C:\WINDOWS\system32”系统目录下的木马主体程序“fwpfsp.exe”。

    退出“注册表编辑器”,务必重启一下计算机。
    第四步:
    “LPK劫持者”木马在每个应用程序安装目录下都恶意添加创建的木马动态链接库程序“lpk.dll”,怎么办?一个一个删除岂不是太麻烦?干脆有人全盘格式化重装系统了。
    千万不要全盘格式化重装系统,使用一个DOS命令就能彻底地全盘删除“LPK劫持者”木马在全盘应用程序安装目录下以及其子目录下恶意添加创建的木马动态链接库程序“lpk.dll”。
    开始菜单----运行 输入:“cmd.exe”(双引号去掉),在“命令提示符”的黑色窗口里面输入DOS命令:DEL /F /S /A /Q *:\lpk.dll

    PS:
    “*”代表驱动器磁盘分区的盘符,上面的截图是删除“LPK劫持者”木马在C盘所有文件夹目录下恶意添加创建的“lpk.dll”,有几个驱动器磁盘分区就按照上述方法做几次。例如删除“LPK劫持者”木马在D、E、F盘所有文件夹目录下恶意添加创建的“lpk.dll”,可以分别输入DOS命令“DEL /F /S /A /Q D:\lpk.dll”、“DEL /F /S /A /Q E:\lpk.dll”、“DEL /F /S /A /Q F:\lpk.dll”(双引号去掉)。
    “LPK劫持者”木马并没有恶意替换“C:\WINDOWS\system32”系统目录下正常的系统动态链接库程序“lpk.dll”,那么使用DOS命令删除会不会也把“C:\WINDOWS\system32”系统目录下的正常的系统动态链接库程序“lpk.dll”删除掉呢?不用担心,因为系统动态链接库程序“lpk.dll”是某些系统服务启动后需要加载的重要文件之一,由于正在被这些系统服务调用运行中,所以删除时会提示“拒绝访问”。

    第五步:
    除了系统目录下一些系统程序“.exe”未被“LPK劫持者”木马破坏之外,其它被木马破坏的“.exe”可执行程序可以通过覆盖重装这些应用软件即可解决问题。目前还没有一款杀毒软件能把“LPK劫持者”木马在“.exe”可执行程序中注入的恶意代码剥离出来,不知道《卡巴斯基》能不能恢复被破坏的“.exe”可执行程序,可以先试试。

  • 相关阅读:
    深入理解 Java中的 流 (Stream)
    算法学习
    编译Opencv的GPU,利用CUDA加速
    【linux】【windows】查看你想访问的电脑Ip 和 端口是否 通畅
    【docker】centos7 上拉取docker镜像,一直拉取不到,报错:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while w
    【mybatis】标签条件中判断入参属性值是否包含子字符串
    【java】Java多线程总结之线程安全队列Queue【转载】
    【spring boot】【redis】spring boot 集成redis的发布订阅机制
    【spring boot】spring boot 基于redis pipeline 管道,批量操作redis命令
    【java】java删除文件delete和deleteOnExit 方法的区别,为什么调用deleteOnExit无效?
  • 原文地址:https://www.cnblogs.com/swordzj/p/2334818.html
Copyright © 2011-2022 走看看