本笔记为 泷羽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 也有对应的命令可以操作服务,本文暂略。
585

被折叠的 条评论
为什么被折叠?



