泷羽sec专题课笔记--windows命令讲解-- sc / net 控制服务

  本笔记为 泷羽sec 《红队全栈课程》学习笔记,课程请可自行前往B站学习,课程/笔记主要涉及网络安全相关知识、系统以及工具的介绍等,请使用该课程、本笔记以及课程和笔记中提及工具的读者,遵守网络安全相关法律法规,切勿进行违法违规违纪的操作。

写在最前面的话,我们为什么要学习网络安全这门技术:

  • 维护国家安全

  防范网络攻击:网络安全威胁已成为国家安全的重要挑战。学习网络安全有助于识别和防范来自国内外的网络攻击,防止敌对势力通过网络手段窃取敏感信息、破坏关键基础设施或干扰社会正常运作。
  保护关键基础设施:现代社会高度依赖网络技术,金融系统、交通网络、电力供应等关键基础设施都依赖于稳定的网络环境。掌握网络安全知识有助于保护这些基础设施免受网络攻击,确保国家的正常运转。

  • 促进经济发展

  保障数字经济安全:数字经济已成为国家经济增长的重要引擎。通过学习网络安全,可以保障数字经济的健康发展,防止数据泄露和网络犯罪对经济活动的干扰。
  增强国际竞争力:在全球化的背景下,网络安全技术水平直接影响国家的国际竞争力。掌握先进的网络安全技术和策略,有助于提升国家在全球数字经济中的地位。

  • 提升社会稳定

  防范社会风险:网络犯罪和网络恐怖主义对社会稳定构成严重威胁。学习网络安全有助于及时发现和应对这些风险,维护社会的和谐与稳定。
  保护公民权益:网络安全直接关系到公民的隐私权和信息安全。通过学习网络安全,可以更好地保护公民的合法权益,增强公众对政府和企业的信任。

  • 推动科技进步

  创新安全技术:网络安全领域的技术创新不断推动信息技术的进步。学习网络安全有助于推动新技术的研发和应用,提升国家在科技领域的整体实力。
  促进国际合作:网络安全是全球性问题,需要各国共同努力应对。通过学习网络安全,可以参与国际网络安全合作,共同制定国际标准和规范,提升全球网络安全水平。

  • 强化法治建设

  完善法律法规:学习网络安全有助于推动和完善相关法律法规的制定和实施,确保网络安全工作有法可依、有章可循。
  提升执法能力:掌握网络安全知识可以提升执法部门的网络侦查和取证能力,有效打击网络犯罪,维护法律权威。

  • 培养专业人才

  构建人才梯队:网络安全领域需要大量高素质的专业人才。通过系统学习和培训,可以培养出一批具备专业知识和实战经验的网络安全专家,为国家的网络安全事业提供坚实的人才保障。

  总之,学习网络安全不仅是个人职业发展的需要,更是维护国家安全、促进经济发展、保障社会稳定和推动科技进步的重要手段。通过不断提升网络安全意识和能力,我们可以更好地应对日益复杂的网络安全挑战,为实现国家的长期稳定和发展贡献力量。


 系列课程视频详见泷羽sec 的小破站主页 传送门 ==> 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 约1小时8分钟左右开始


一、Windows 安装 telnet 服务

  演示系统为安装在 VMware 中的 Win8 ,以安装服务 Telnet 为例:

  由于 Telnet 协议明文传输信息容易泄密,所以一些新版本的 Windows 不再默认安装 Tenlet 服务端和客户端,需要自行手工添加,也可能有些版本的 Windows 不再提供 Telnet 服务。


  另外请注意,建议是在虚拟机中搭建试验环境进行调试,请勿在工作环境/生产环境操作。


  打开控制面板==>程序和功能==>启用或关闭 Windows 功能:

  我们可以用下面的命令直接打开“控制面板”:

control

  也可以用下面的命令直接打开“程序和功能”:

appwiz.cpl

  还可以用下面的命令直接打开“启用或关闭 Windows 功能”:

OptionalFeatures

  找到 Telnet 服务端,勾上,点确认,然后等其安装完毕。

  我们检查下 telnet 服务器有没有装好,打开任务管理器(Ctrl+Shift+Esc,或者 taskmgr 命令 ),下图左已经可以看到名称为 TlntSvr 描述为 Telnet 的服务已经出现,只不过现在的状态是“已停止”,我们鼠标右键可以打开服务(也可以用 services.msc )。

二、 sc 对于 windows 服务的应用

  接下来,我们使用sc(Service Control)命令是Windows操作系统中的命令行工具,用于管理服务,可以创建、删除、配置及控制Windows服务的属性和配置。

1、sc query 查询单个服务

  我们可以用 sc query tlntsvr 来查看 telnet 服务

C:\Windows\system32>sc query tlntsvr

SERVICE_NAME: tlntsvr
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

2、sc query 枚举服务

  我们可以用 sc query 命令来枚举出所有 Running 中的服务,也可以加上参数来枚举出包括未 Running 的所有状态的服务,比如使用 sc query state= all ,可以查询 state 状态为 all 也就是所有的服务,注意 state 和等号之间不能有空格,而等号和 all 之间必须有个空格,以下命令因为输入有误导致报错;

C:\Users\admin\Desktop>sc query state = all   # stat和等号之间空格会导致参数无效

错误:  无效选项

描述:
        SC 是用于与服务控制管理器和服务进行通信的命令行程序。
用法:
        sc <server> [command] [service name] <option1> <option2>...
(……信息较长未全部展示……)

C:\Windows\system32>sc query state=all   # 没有空格也会出错
[SC] EnumQueryServicesStatus:OpenService 失败 1060:

指定的服务未安装。

  因 sc query state= all 枚举结果较多会超出 CMD 默认缓冲区大小,我们可以把它重定向到一个文本文件再查看,也可以调整 CMD 的缓冲区大小以便更好地获得输出效果。

(信息较多未全部展示)

SERVICE_NAME: TlntSvr
DISPLAY_NAME: Telnet
        TYPE               : 10  WIN32_OWN_PROCESS  
        STATE              : 1  STOPPED 
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

(信息较多未全部展示)

3、CMD 调整缓冲区(如需)

  CMD 窗口左上角图标右键或右键选属性,点布局调整缓冲区高度,请根据自己windows系统服务的数量,自行测试下需要缓冲区高度大概是多少,一般一个服务输出的结果约9-10行。

  调整后就可以看到原本缓冲区中未保存的输出信息。

c:\Users\admin\Desktop>sc query state= all

SERVICE_NAME: AeLookupSvc
DISPLAY_NAME: Application Experience
        TYPE               : 20  WIN32_SHARE_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

SERVICE_NAME: ALG
DISPLAY_NAME: Application Layer Gateway Service
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

(……信息较长未全部展示……)

  下图中为 Telnet 服务,我们可以看到 Telnet  的 Display_name 为 Telnet ,Service_name  为 TlntSvr (Telnet Server 的缩写),此时我们可以回想到任务管理器( Taskmgr )中 Telnet 服务的名称为 TlntSvr ,描述为 Telnet ,状态 State 为已停止(Stopped)。

4、sc qc 查询服务配置

  我们使用 sc qc tlntsvr 得到如下结果,其中 start_type 编号4为禁用状态,如果是手动的话,该值会变成:3   DEMAND_START,如果是手动(延迟启动)则会变成:

  如果我们在服务里调整启动类型,那么对应的关系详见下图,下图用了sc qc 加上管道符和 findstr 过滤了输出结果:

5、sc config 修改启动类型

  我们可以使用 sc config 修改服务项,可以加上 /? 或者 help 进行查看:

C:\>sc config /?
描述:
        在注册表和服务数据库中修改服务项。
用法:
        sc <server> config [service name] <option1> <option2>...

选项:
注意: 选项名称包括等号。
      等号和值之间需要一个空格。
 type= <own|share|interact|kernel|filesys|rec|adapt>
 start= <boot|system|auto|demand|disabled|delayed-auto>
 error= <normal|severe|critical|ignore>
 binPath= <BinaryPathName to the .exe file>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <依存关系(以 / (斜杠) 分隔)>
 obj= <AccountName|ObjectName>
 DisplayName= <显示名称>
 password= <密码>

  我们试着调整下 tlntsvr 的 start_type 为 demand(手动),注意这个时候 cmd 必须是管理员身份允许,否则会出错。

C:\>sc config tlntsvr start=disabled   # 非管理员情况下
[SC] OpenService 失败 5:

拒绝访问。


C:\>sc config tlntsvr start=demand     # 管理员情况下
[SC] ChangeServiceConfig 成功


C:\>sc qc tlntsvr                      # 使用 sc qc 检查下,start_type 已经变成了手动
[SC] QueryServiceConfig 成功

SERVICE_NAME: tlntsvr
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\System32\tlntsvr.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Telnet
        DEPENDENCIES       : RPCSS
                           : TCPIP
                           : seclogon
        SERVICE_START_NAME : NT AUTHORITY\LocalService

  系统的服务界面内检查下,如果服务的窗口还是打开着,外面看上去还是禁用,但是点属性可以看到,实际已经变成手动了。

6、sc start / stop / pause 开启 / 停止 / 暂停服务

sc start tlntsvr

sc stop tlntsvr

sc pause tlntsvr

  使用这条命令的时候,CMD 也必须有管理员权限,我们结合 sc query 命令同步查看下

  注意这些命令在使用的时候应该使用服务的 service_name ,而不是 display_name ,所以下面的命令是错误的,因为我们通过上面一长串的学习,知道了 telnet 的 service_name 是 tlntsvr。

C:\>sc start telnet
[SC] StartService: OpenService 失败 1060:

指定的服务未安装。

三、net 对于 windows 服务的运用

  net 命令是功能强大的以命令行方式执行的工具。它包含了管理网络环境、服务、用户、登陆等大部分重要的管理功能。但是 net 命令对服务的支持比较简单,主要为以下几条命令。

  • 启动服务net start <service-name>  # 注意这里都是 service_name 

  • 停止服务net stop <service-name>

  • 暂停服务net pause <service-name>

  • 继续服务net continue <service-name>

  • 查询服务:使用 net start 显示所有已启动的服务列表,但不能单独查询某个服务的状态    # 注意这里显示的是 display_name

  接下来,我们使用 net 命令开启、关闭、暂停 telnet 服务,试试。

C:\>net start tlntsvr      # 开启 telnet 服务
Telnet 服务正在启动 .
Telnet 服务已经启动成功。


C:\>net start | findstr -i telnet    # 这里用服务的 display_name 过滤
   Telnet

C:\>net stop tlntsvr       # 这里关闭下 telnet 服务
Telnet 服务正在停止.
Telnet 服务已成功停止。


C:\>net start | findstr -i telnet     # 再用 netstart 查看下,已经找不到telnet了

C:\>sc query tlntsvr | findstr -i state  # 我们用sc query 验证下,的确是stop状态
        STATE              : 1  STOPPED

  另外值得注意的是,如果 start_type 为 disabled 也就是禁用状态的话,无论是 sc start / net start 都无法启动服务。

  关于 net start 命令显示已启动服务列表,该条命令显示的是 display_name ,我们可以同步用 sc query 命令并过滤出 display_name 后对比下,net start 是按 display_name 排序,sc query 默认是按 service_name 排序,所以顺序上两者有些差异,但实际结果是一样的,右图的:Windows Audio Endpoint Builder 和 Windows Audio 服务,我们可以在下下图看到。

  另外我们在下图也看到了 ,net start 查询到的 tlntsvr 服务的确是显示了它的 display_name ,也就是 telnet ,而不是 service_name 也就是 tlntsvr。

四、sc 和 net 对于服务的对比

  总结下 sc 和 net 两条命令对笔,其中 sc 的部分命令本文未复现。

功能sc 命令net命令
启动服务sc start <service-name>net start <service-name>
停止服务sc stop <service-name>net stop <service-name>
暂停服务sc pause <service-name>net pause <service-name>
继续服务sc continue <service-name>net continue <service-name>
查询服务状态sc query <service-name>不支持
配置服务sc config <service-name> <options>不支持
创建服务sc create <service-name> <options>不支持
删除服务sc delete <service-name>不支持
设置服务失败动作sc failure <service-name> <options>不支持
显示所有已启动服务sc query (需要另外过滤)net start (显示的是display_name)

  最后,除了 sc 和 net 外,powershell 也有对应的命令可以操作服务,本文暂略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值