声明:
本文的学习内容来源于B站up主“泷羽sec”的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
一、简介
微软Windows操作系统,俗称”Windows“,是由微软开发的一系列操作系统。Windows 是全球广泛使用的操作系统,具有广泛的兼容性和丰富的功能,使其成为个人计算机、企业系统和服务器的首选。Windows 系统的特性包括图形用户界面(GUI)、多任务处理、虚拟内存和丰富的应用程序支持等。Windows 家族版本涵盖从普通用户使用的 Windows 10/11 到服务器使用的 Windows Server 系列。
对于网络安全红队来说,学习 Windows 至关重要。原因在于:
- 主流目标系统:大多数企业使用 Windows 系统,因此红队成员需要了解其内部结构、文件系统、服务和常见配置,便于识别潜在的攻击路径和漏洞。
- 权限提升与持久化:了解 Windows 用户管理、权限控制、注册表及组策略等功能,红队可更高效地进行权限提升和持久化。
- 常见攻击手段:许多 Windows 专用的攻击手段(如 Pass-the-Hash、Kerberos 攻击)在企业网络中很常见。掌握 Windows 平台有助于红队进行更深入的攻击测试。
- 防御规避:Windows 系统自带许多安全防护机制,如 Windows Defender、UAC 等。理解这些机制能帮助红队找到规避策略,提高攻击成功率。
学习 Windows 系统不仅能提高对潜在攻击面的认识,还能帮助红队在攻防演练中设计更有效的策略。
二、Linux和Window区别
1. 文件系统
- Linux:采用 FHS(Filesystem Hierarchy Standard)目录结构,块设备挂载到目录下(所有内容都是文件)。
- Windows:以驱动器盘符(如 C:)作为起始,或通过目录挂载分区。
2. 路径格式
-
Linux:路径以
/
开始,区分大小写,使用左斜线/
。
-
Windows:路径以
\
分隔,不区分大小写,使用右斜线\
。
3. 系统配置
- Linux:使用
/etc
和/proc
目录存储配置信息。
在 Linux 系统中,/etc
和/proc
目录分别用于存储和管理系统配置信息。/etc
包含各种系统配置文件,例如网络、用户和服务配置,而/proc
是一个虚拟文件系统,用于动态反映系统和内核的状态(如 CPU 和内存信息)。 - Windows:通过注册表存储配置信息。
Windows 使用注册表(Registry)来集中管理系统和应用程序的配置信息,注册表包含一系列键值对结构,存储系统、应用程序和用户设置。
三、Windows 的四种 Shell 接口
- GUI:图形化用户界面,操作简单。
- cmd:命令行用户界面,包含一组预定义命令。
- wmic:基于 WBEM 的微软实现,从 21H1 版本开始已被弃用,被 PowerShell 替代。
- PowerShell:自动化脚本框架,支持 .NET 架构。
四、WSL
WSL(Windows Subsystem for Linux)是一个在 Windows 系统上运行 Linux 环境的子系统,主要特性包括:
- Linux 内核兼容性:WSL 提供了与 Linux 内核的兼容层,允许用户在 Windows 上直接运行 Linux 二进制文件(ELF 格式),无需额外的虚拟机或双系统。
- 支持多种 Linux 发行版:用户可以在 Microsoft Store 中安装多种 Linux 发行版,如 Ubuntu、Debian、Fedora 等,并在不同发行版之间切换。
- 与 Windows 深度集成:WSL 允许 Linux 与 Windows 文件系统互相访问,可以在 Linux 终端中访问 Windows 文件,也可以在 Windows 上编辑 Linux 文件。
- 开发友好:对于开发人员,WSL 支持许多 Linux 工具和包管理器,使其成为在 Windows 上开发 Linux 应用或进行跨平台开发的理想工具。
- WSL 2 提供更好的性能:WSL 2 引入了真正的 Linux 内核(在虚拟机中运行),极大地提升了文件系统性能和系统兼容性,接近原生 Linux 的体验。
WSL 的出现让用户在不离开 Windows 环境的情况下,享受 Linux 的命令行工具和开发环境。
五、文件导航系统
- 切换到
d
盘
d:
- 进入当前目录
cd .
- 返回驱动根目录:
cd \
切换到驱动器的根目录。
c:\windows\web>cd \
- 返回上级目录:
cd ..
返回当前目录的上一级。
c:\windows>cd ..
- 进入文件夹
cd 文件夹
- 大小写不敏感:Windows 命令行不区分大小写。
c:\>TYPE "spaces in title.txt"
使用 type
命令显示文件内容,即使文件名包含空格或大小写不同。
- 查看系统隐藏文件:
dir /A
列出目录中的隐藏文件。
c:\users>dir /A
- 搜索文件名:
dir /S 文件名
在当前目录及子目录中搜索指定文件名。
c:\>dir /S flag.txt
- 最近编辑的文件:
dir /TW /OD
按修改日期排序列出文件,最近编辑的文件会在最后显示。
c:\>dir /TW /OD
- **/T**W:指定显示文件的修改时间(Write time)
- `/T` 参数用于指定要显示的时间类型。
- `W` 表示使用 "Write time"(文件的修改时间)作为显示的时间。
- 其他选项包括 `/T:C`(创建时间)和 `/T:A`(上次访问时间)。
- **/OD:按照时间顺序(日期)排序文件,默认从最旧到最新
- `/O` 参数用于指定排序方式。
- `D` 表示按照日期排序(Date),即时间顺序。
- 通过 `/O:-D` 可以反向排序,从最新到最旧。
六、系统标准目录
C盘下的一些目录
-
PerfLogs:存储 Windows 性能日志信息。
-
Program Files
-
32 位系统:存储 32 位程序。
-
64 位系统:存储 64 位程序。
-
Program Files (x86)(仅在 64 位系统上存在):存储 32 位版本程序。
-
ProgramData:隐藏目录,包含全局程序数据,所有登录用户都可以访问这些数据。
-
Users:包含用户主目录(所有登录过的用户)。
-
Users\Public:用户间共享文件,所有用户都有权访问。
-
Users\[username]\AppData:隐藏子目录,存储用户应用程序数据和设置。
-
Windows\System、System32、SysWOW64:存储动态链接库文件(DLL)和 Windows API 的核心文件。
-
System32:用于存储 64 位系统文件(在 64 位系统上)。
-
SysWOW64:用于存储 32 位系统文件(在 64 位系统上)。
-
C:\Documents and Settings:早期 Windows 版本(如 Windows XP、Windows Server 2003)的主目录,用于存储用户数据和设置。
七、系统及环境
1. 系统信息查询
- systeminfo:显示系统的详细信息,包括操作系统版本、内存、网络配置等。
systeminfo
- msinfo32:打开系统信息窗口,提供图形化的系统信息视图。
msinfo32
2. 环境变量查看
- 使用
echo
命令查看特定的环境变量:
echo %username% // 输出当前用户名
echo %path% // 输出 PATH 环境变量
echo %temp% // 输出临时文件目录
echo %userprofile%// 输出用户主目录
- 使用
set
命令列出所有环境变量:
set
- 使用
set p
查看名称以p
开头的变量:
set p
3. 永久修改环境变量
- 使用
setx
命令可以永久设置环境变量。 - 示例:将
var1
设置为brand1
setx var1 brand1
- 示例:在远程主机上设置环境变量
setx /s host1 /u domain\user /p pass var1 brand1
- 示例:将当前
PATH
添加到自定义路径
setx /s hopst1 /u domain\user /p pass mypath %path%
4. 环境变量存储位置
- 环境变量信息存储在注册表路径:
HKEY_CURRENT_USER\Environment
5. 使用 set
命令临时修改环境变量
可以使用 set
命令来临时设置或修改环境变量。例如:
set PATH=C:\newpath;%PATH%
上面的命令将 C:\newpath
添加到当前会话的 PATH
变量的开头。
- 添加临时路径:
set PATH=C:\myprogram;%PATH%
这将会在当前会话中,将 C:\myprogram
添加到 PATH
环境变量的开头。
- 创建一个新的环境变量:
set MYVAR=Hello
创建一个名为 MYVAR
的临时环境变量,值为 Hello
。
- 修改现有环境变量:
set TEMP=C:\newtemp
将 TEMP
环境变量临时指向 C:\newtemp
。
这些修改仅在当前命令提示符会话中生效,关闭命令提示符后恢复为原始设置。
八、常见端口对应服务
端口 | 服务 | 备注 |
---|---|---|
21 | ftp | 缓存溢出、暴力破解 |
23 | telnet | 远程连接工具弱口令爆破 |
80 | web | |
80-89 | web | |
443 | ssl | 心脏滴血漏洞以及一些web漏洞测试 |
445 | smb | |
1433 | mssql | |
1521 | oracle | |
2082/2083 | 主机管理登录系统 | 国外用的较多 |
2222 | da虚拟主机管理系统登录 | 国外用的较多 |
3128 | squid代理默认端口 | 内网漫游 |
3306 | mysql | |
3312/3311 | kangle主机管理系统登录 | |
3389 | 远程桌面 | |
5432 | postgreSQL | |
5900 | vnc | |
6379 | redis | 未授权登录 |
7001/7002 | weblogic | 默认弱口令、反序列化 |
7778 | 主机控制面板登录 | |
8000-9090 | 一些常见的web端口 | 有些运维喜欢把管理后台开在这些非80端口上面 |
8080 | tomcat、wdcp主机管理系统 | 默认弱口令 |
8080、8089、9090 | jboss | 反序列化 |
8083 | vestacp主机管理系统 | 国外用的较多 |
8649 | ganglia | |
8888 | 宝塔 主机管理默认端口 | |
10000 | virtuamin/webadmin 服务器虚拟机管理系统 | |
11211 | memcache | 未授权访问 |
27017/27018 | mongodb | 未授权访问 |
28017 | mongodb统计系统页面 |