• 如何把程序手工添加系统服务


    现在很多的木马、后门、蠕虫病毒都是通过修改注册表中的RUN键值来实现自启动。
    但是这种自启动模式不是很隐蔽的,稍微懂点安全的人,一般发现电脑被黑,都会查看RUN键值的。
    于是系统服务便成为了一种相对隐蔽的自启动模式。比如冲击波杀手就采用系统服务来自启动病毒程序。
    现在添加系统服务的工具很多,最典型的就是netservice。但是我们这里讲的是手工添加系统服务,所以工具的使用不在本文的讨论范围之内。
    WINDOWS里的很多东西都是跟注册表息息相关的,系统服务也不例外。

    系统服务跟以下的注册表几个项目相关:

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices

    HKEY_LOCAL_MACHINESYSTEMControlSet001Services

    HKEY_LOCAL_MACHINESYSTEMControlSet002Services
    我们完全可以找到在系统服务中已注册的服务的键值来依样画葫芦。

    在以上任何注册表列中添加一个新项:

    名字是你想要添加系统服务的名字,比如Backdoor。

    在BACKDOOR项下新建一个字符串,数值名称Displayname 数值数据为要添加服务的

    名称Backdoor。
    下面列出一个表,会直观一些:

    名称 类型 数据 备注

    Displayname REG_SZ 想要添加服务的名称 想要添加服务的名称
    Description REG_SZ 服务的描述 服务的描述
    ImagePath REG EXPAND SZ 程序的路径
    Start REG_DWORD 0,2,3,4 2代表自动启动,3代表手动启动服务.4代表禁用服务,0代表系统对底层设备驱动(一般不需要这个)
    ErrorControl REG_DWORD 1
    Type REG_DWORD 10 or 20 一般应用程序都是10,其他的对应20
    ObjectName REG_SZ LocalSystem 显示本地登陆

    注 意:在XP/2003下可以完全手工来添加REG EXPAND SZ类型。在XP/2003下直接修改ImagePath 键值就可以了。但是在WIN2000下却不可以。原因我也不清楚:(。但是在WIN2000下我们写一个REG来直接注册系统服务,这样WIN2000下 添加系统也能很轻松了。这里同样需要注意的是注册表文件里的ImagePath的数值类型必须是HEX(16进制)。可以拿WINHEX来把程序的绝对路 径转换成16进制的。每一个数值用逗号搁开。比如我的ImagePath键值是C:winntnukegroup.exe那就应该转换成:
    63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65(无空格)

    打开记事本,敲入以下内容:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSRVTEST]

    "Type"=dword:00000010

    "Start"=dword:00000002

    "ErrorControl"=dword:00000001

    "ImagePath"=hex(2):63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65

    "DisplayName"="SRVTEST"

    "ObjectName"="LocalSystem"

    "Description"="系统服务测试"

    把以上信息保存为addsrv.reg,我们就可以依靠命令来导入注册表,从而达到添加系统服务的目的。

    我们在命令控制台输入regedit /s addsrv.reg,等机器重新启动,这个服务就被成功添加了。

    但是我在真正实验的时候就遇到困难了。ImagePath的数值是乱码


    怎么想也不明白。但是这时可以把乱码修改成绝对路径了。如果直接把REG信息写成这样
    "ImagePath"=hex(2):C:WINNTNUKEGROUP.EXE

    其他的键值都可以添加,这个键值就不可以了?总之我们可以先添加乱码的ImagePath,然后再修改成C:winntnukegroup.exe 这样也不是不可能的。就是在命令行下来添加就很麻烦了。

    以上是Windows 2000手工添加系统服务的方法,对于Windows 98 注册表结构是不一样的,但是Windows 98仍然可以通过注册表来实现添加系统服务,而且还要更简单一些。

    在项目“HKLM/SOFTWARE/Microsoft/WindowsCurrentVersion/RunServices”下添加一个新字符串数值。

    比如,如果程序的名字叫做“BACKDOOR”,就建立一个名为“BACKDOOR”的字符串数值,然后在数据域中输入执行程序的完整路径。

    手工添加一个系统服务就这么简单,手工删除系统也是一个道理。通过注册表来实现,这里就不多说了。

    -----------------
    Windows服务简介
    服 务控制管理器拥有一个在注册表中记录的数据库,包含了所有已安装的服务程序和设备驱动服务程序的相关信息。它允许系统管理员为每个服务自定义安全要求和控 制访问权限。Windows服务包括四大部分:服务控制管理器(Service Control Manager),服务控制程序(Service Control Program),服务程序(Service Program)和服务配置程序(Service Configuration Program)。
  • 相关阅读:
    【测试平台学习1】 vue使用与启动
    【Devops】 发布一个Python项目(Flask服务后端)到K8S环境
    Spring5源码分析(024)——IoC篇之bean加载:parentBeanFactory和依赖处理
    Spring5源码分析(023)——IoC篇之bean加载:从缓存中获取单例 bean
    Java基础(018):Class.forName和ClassLoader的区别
    Spring5源码分析(022)——IoC篇之bean加载:FactoryBean的用法
    Spring5源码分析(021)——IoC篇之bean加载
    Java基础(017):反射初探
    Java基础(015):泛型
    Java基础(001):关于 short i = 1; i += 1;
  • 原文地址:https://www.cnblogs.com/baoguo/p/1352429.html
Copyright © 2020-2023  润新知