安装方法
DLL安装的第一要点就是,要在DLL所在的目录下执行安装命令。切记!!!
1.创建新的服务,调用SVCHOST.EXE加载
安装命令:
rundll32.exe
xxx.dll,InstallSA 要添加的服务名称
安装说明:
如果没有指定服务名,默认将安装新的Irmon服务。
要安装的服务名,必须是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost下
netsvcs值里存在但没有创建的服务名。如图:
服务安装添加后,通过启动服务的方式加载客户端DLL到netsvc这个组所属的svchost.exe进程中去。
特点:
.创建一个标准的微软认证的系统服务,在2K/XP/2003/VISTA/2008平台都具有很好的可安装性和兼容性。
.对于大部分的主动防御系统(如默认卡巴6-8,瑞星等),可以正常通过。
.333版本以后,利用独特的服务启动功能,在宿主服务启动后,将重新停止该服务。但并不影响被控端的运行和工作。
同时将根据客户的行为相应在需要的时候修改该服务的启动类型为非自动方式。 并记录管理员对该服务的修改行为,
显示出最"正常"的服务状态和启动类型。大大提高生存能力和隐蔽性。
2.替换原有的服务,调用SVCHOST.EXE加载
安装命令:
rundll32.exe
xxx.dll,InstallSB 要替换的服务名称
安装说明:
如果没有指定服务名,默认将替换Ntmssvc服务。两种情况
第一种,如果原有的DLL仍处于加载运行状态下,通过替换该服务的ServiceDll来实现服务替换。
替换后服务后,再通过线程插入的方式加载客户端DLL到进程中。不建议采用,容易被HIPS拦截。
第二种,如果原有的DLL未处于加载运行状态下,通过绕开2K/XP/2003系统的系统文件保护功能,
直接替换该系统服务的DLL文件来实现服务替换。替换后,通过直接启动该服务来加载客户端DLL。
强烈建议采用该种方式,替换未运行的服务,而不是已经处于运行状态的服务。
特点:
.由于在2K/XP/2003平台上绕开了文件保护,并替换了系统文件,提供了更强的隐蔽性。
.没有增加任何的启动项目,相对创建新服务的安装方式更具有隐藏性和更强过主动防御的特性,同时又保留了其特点。
3.PE文件IAT表感染加载
安装命令:
rundll32.exe xxx.dll,InstallPE 要感染的PE文件 [quiet/reboot]
安装说明:
如果没有指定EXE文件名,默认感染conime.exe。
感染后,默认通过线程插入的方式加载客户端DLL到被感染的进程。
而下次机器重新启动后,该DLL就成为该进程必需的DLL而随之启动。
也可以通过指定以下两个不同的附加参数来实现特定的安装方式:
quiet: 安静模式,感染完毕后,不执行线程插入。只有重启计算机后才会生效。
reboot: 重启模式,感染完毕后,不执行线程插入。直接重启计算机。
可感染绝大部分的WINDOWS系统级进程和用户级进程。但不是所有的EXE都有足够的IAT剩余空间来提供修改。
修改成功后文件大小不变,并可绕开WINDOWS的文件保护和WINXP(SP2)/WIN2003(SP1) 的文件执行保护。
但各OS的情况并不相同,需要区别对待.且某些系统进程虽然可以感染成功,但是可能导致系统无法正常启动进入。
如:smss.exe
csrss.exe(切记!)
已知系统进程感染情况表:
[WIN2K]
lsass.exe termsrv.exe conime.exe
spoolsv.exe
[WINXP(sp2)]
services.exe lsass.exe spoolsv.exe conime.exe
[WIN2003(sp1)]
services.exe wins.exe snmp.exe
conime.exe
特点:
病毒加载技术,具有超强的隐蔽性和过主动防御的特性。
4.随机安装未安装的新服务,调用SVCHOST.EXE加载
安装命令:
rundll32.exe xxx.dll,InstallRSA
安装说明:
自动收集系统中未安装的由svchost.exe加载的并属于netsvc组的服务。并随机从中选择一个的服务进行安装。
服务安装添加后,通过启动服务的方式加载客户端DLL到netsvc这个组所属的svchost.exe进程中去。
特点:
相对比创建新服务的安装方式更具有随机性,同时又保留了其特点。
5.随机替换原有的未启动的服务,调用SVCHOST.EXE加载
安装命令:
rundll32.exe xxx.dll,InstallRSB
安装说明:
自动收集系统中未启动的由svchost.exe加载的并属于netsvc组的服务。并随机从中选择一个服务进行替换。
通过直接替换该DLL文件来实现服务替换。替换后,直接同过直接启动该服务来加载客户端DLL。
特点:
相对创建新服务和替换原服务的安装比方式具有更强的随机性和过主动防御的特性。
6.
根据OS智能进行PE文件IAT表感染
安装命令:
rundll32.exe xxx.dll,InstallSPE 要感染的PE文件 [quiet/reboot]
特点:
在InstallPE的基础上,实现了根据不同操作系统条件的智能安装。
7.
通用安装方式
安装命令:
rundll32.exe xxx.dll,InstallRD
特点:
通过写注册表启动项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\windows\currentversion\Run启动。
需要登陆系统才实现启动;安全性较低;过HIPS能力弱;通用型好,理论上可支持windows9x至今的所有32位或64位Windows操作系统。
8.
ActiveX安装方式
安装命令:
rundll32.exe xxx.dll,InstallAX
特点:
通过写注册表ActiveX UID启动,启动后重新删除ActiveX UID以达到再次自启动的目的。
需要登陆系统才实现启动;安全性较高;过HIPS能力好;通用型好,理论上可支持windows9x至今的所有Windows操作系统。
9.线程注入法
安装命令:
rundll32.exe
xxx.dll,InstallRT 要注入的进程名称
安装说明:
该方法主要用于测试和辅助目的,通过线程插入方式临时加载客户端DLL到目标进程中。
特点:
系统重启后或宿主进程结束后,客户端DLL将被释放。
卸载方法
1-6对应了以上的安装方法的卸载方法,除方法7外,其他卸载方法都需要重新启动系统才能生效。
同时,由于方法7的客户端DLL强制卸载的不稳定性,容易导致进程或系统崩溃,不建议使用。
1.
rundll32.exe
xxx.dll,UnintallSA 要删除的服务
2.
rundll32.exe
xxx.dll,UnintallSB 要修复的服务
3.
rundll32.exe
xxx.dll,UninstallPE 要修复的被感染EXE文件(或DLL文件)
4.
rundll32.exe xxx.dll,UnintallRSA
5.
rundll32.exe xxx.dll,UnintallRSB
6.
rundll32.exe xxx.dll,UnintallSPE
7.
rundll32.exe xxx.dll,UnintallRD
8.
rundll32.exe xxx.dll,UnintallAX
9.
rundll32.exe
xxx.dll,UnintallRT 要卸载客户端DLL的进程
[注意要点]
1.下面所有的安装命令对大小写敏感,切记!目前提供9种安装方式,以适应不同的安装环境和安装需求。
2.32位系统和64位系统支持的安装方式基本相同,但不同Windows版本支持的安装方式不尽相同。PE感染目前仅适用于32位平台。
3.64位系统下,如果是32位的客户端,将以WOW64方式运行,仅支持InstallRD InstallSA InstallRSA安装方式。
3.InstallRT安装方式用于测试,重启后失效,并没有实际安装。InstallRD InstallAX需要登陆系统才能生效。
4.32位的VISTA/2008/Win7系统,不支持SB RSB方式;RT测试方式只适用于用户级进程;PE感染方式只适用于非系统文件;
5.免费版本不支持InstallRSA InstallSB InstallRSB InstallPE InstallSPE InstallAX等高级安装方式。
6.不管是DLL还是EXE客户端,最终都是通过RUNDLL32.EXE调用DLL本身内封装的不同的安装函数实现安装。
7.安装时将生成xinstall.log为安装日志的输出文件。可在生成被控端的时候决定是否输出该安装日志文件。
8.Vista以后的OS,由于安全框架的变动,设计系统文件的安装方式的重要前提是必须"以管理员身份运行",并获得UAC的许可。
[补充说明]
1.版本331以后,增加了在控制端对被控端进行智能判断并直接卸载的功能。建议直接在控制端使用该功能进行卸载。
2.卸载后,被控端自动下线。但必须重起才能彻底生效,在重起前,不要使用相同的安装方式重复安装!
3. 603版本后,增加了Windows(64Bit)版本的支持,可支持生成纯粹的64位客户端。不再需要以32Bit的客户端以WOW64方式运行。