声明:
本文的学习内容来源于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 的命令行工具和开发环境。
五、常用命令
- cd:显示当前目录的名称或将其更改
cd C:\Users
切换到用户目录
-
cmd:打开另一个 Windows 命令解释程序窗口
cmd
打开新的命令行窗口
-
copy:将至少一个文件复制到另一个位置
copy C:\file.txt D:\backup\file.txt
-
del:删除至少一个文件
del C:\file.txt
删除指定文件
-
dir:显示一个目录中的文件和子目录
dir C:\Windows
列出 Windows 目录中的内容
-
echo:显示消息,或者将命令回显打开或关闭
echo Hello, World!
在命令行中显示文本
-
erase:删除一个文件或多个文件
erase C:\file.txt
删除指定文件
-
find:在一个或多个文件中搜索一个文本字符串
find "text" file.txt
搜索文件中的 “text”
-
findstr:在多个文件中搜索字符串
findstr "error" *.log
在所有日志文件中查找 “error”
-
mkdir:创建一个目录
mkdir C:\NewFolder
创建新文件夹
-
more:逐屏显示输出
more file.txt
分屏显示文件内容
-
move:将一个或多个文件从一个目录移动到另一个目录
move C:\file.txt D:\
将文件移动到 D 盘
-
ren:重命名文件命令
ren oldname.txt newname.txt
重命名文件
-
rmdir:删除目录
rmdir C:\NewFolder
删除目录
-
type:显示文本内容
type file.txt
显示文件内容
-
attrib:显示或修改文件扩展名关联
attrib +r file.txt
将文件设为只读
-
bcdedit:设置启动数据库中的属性以控制启动加载
bcdedit /set {default} bootmenupolicy legacy
-
icacls:显示或修改文件的访问控制列表(ACL)
icacls file.txt /grant User:F
给用户赋予完全控制权限
-
chcp:显示或设置活动代码页数
chcp 65001
设置 UTF-8 编码
-
comp:比较两个或两套文件的内容
comp file1.txt file2.txt
比较两个文件的内容
-
date:显示或设置日期
date
显示当前日期
-
diskpart:显示或配置磁盘分区属性
diskpart
进入磁盘管理工具
-
doskey:编辑命令行,撤回 Windows 命令
doskey /history
查看命令历史
-
driverquery:显示当前设备驱动程序状态和属性
driverquery
列出系统中的所有驱动程序
-
fc:比较两个文件集并显示它们之间的不同
fc file1.txt file2.txt
比较文件内容
-
for:为一组文件中的每个文件运行一个指定命令
for %i in (*.txt) do echo %i
列出所有 txt 文件
-
fsutil:显示或配置文件系统属性
fsutil dirty query C:
检查磁盘是否脏
-
ftype:显示或修改文件扩展名关联使用的文件类型
ftype txtfile="notepad.exe %1"
设置 txt 文件默认程序
-
gpresult:显示计算机或者用户的组策略信息
gpresult /R
显示组策略结果
-
mklink:创建符号链接和硬链接
mklink /D LinkName TargetFolder
创建目录链接
-
openfiles:显示远程用户通过文件共享打开的本地文件
openfiles /query
查询打开的文件
-
path:为可执行文件显示或者设置搜索路径
path
显示当前路径设置
-
set:显示、设置或删除 Windows 环境变量
set PATH=C:\NewPath;%PATH%
修改路径
-
sc:显示或配置服务(后台进程)
sc query
列出所有服务状态
-
schtasks:安排一台计算机上运行命令和程序
schtasks /create /sc daily /tn TaskName /tr "command"
创建任务
-
shutdown:允许通过本地或远程方式正确关闭计算机
shutdown /s /t 0
立即关机
-
start:启动单独的窗口以运行指定的程序或命令
start notepad.exe
打开记事本
-
systeminfo:显示计算机的特定属性和配置
systeminfo
显示系统信息
-
tasklist:显示包括服务在内的所有当前运行的任务
tasklist
列出所有运行进程
-
taskkill:终止正在运行的进程或应用程序
taskkill /im notepad.exe
结束记事本进程
-
tree:树状图
tree C:\
显示目录树状结构
-
time:显示或设置系统时间
time
显示当前时间
-
tracert:网络路径追踪
tracert www.google.com
跟踪到指定网站的网络路径
六、文件导航系统
-
返回驱动根目录:
cd \
切换到驱动器的根目录。c:\windows\web>cd\
-
返回上级目录:
cd ..
返回当前目录的上一级。c:\windows>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
- /TW:指定显示文件的修改时间(Write time)
/T
参数用于指定要显示的时间类型。W
表示使用 “Write time”(文件的修改时间)作为显示的时间。- 其他选项包括
/T:C
(创建时间)和/T:A
(上次访问时间)。
- **/OD:按照时间顺序(日期)排序文件,默认从最旧到最新
/O
参数用于指定排序方式。D
表示按照日期排序(Date),即时间顺序。- 通过
/O:-D
可以反向排序,从最新到最旧。
- /TW:指定显示文件的修改时间(Write time)
七、系统标准目录
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
。
这些修改仅在当前命令提示符会话中生效,关闭命令提示符后恢复为原始设置。