Target
了解Windows的基本系统信息,常用cmd命令的使用
基础
1. 操作系统简介
- Windows操作系统:由微软开发的一系列操作系统,广泛应用于个人电脑和企业服务器。
2. 攻击者视角
- 攻击者通常从低权限访问开始,需要提升权限或进一步渗透网络,因此理解Windows系统基础知识对于攻防双方都很重要。
-windows最高权限:system
3. 系统配置
- Linux系统配置信息存储在/etc和/proc目录中。
- Windows系统配置信息存储在注册表中。
4. Windows Shell接口
- GUI(Graphical User Interface):图形化用户界面,操作简单直观。
- cmd(Command Prompt):命令行用户接口,包含一组预定义命令。
- WMIC(Windows Management Instrumentation Command-line):基于WBEM(Web-Based Enterprise Management)的实现,用于管理Windows系统,从Windows 21H1版本开始已弃用。
- PowerShell:自动化脚本框架,支持.NET架构,用于任务自动化和配置管理。
5. WSL(Windows Subsystem for Linux)
- 在Windows上运行的Linux子系统,允许用户在Windows环境中运行Linux命令、工具、应用程序。
6. 安全性 - 用户账户控制(UAC):限制应用程序的权限,防止恶意软件获取过多权限。
- Windows Defender:内置的防病毒和反恶意软件工具。
- BitLocker:提供磁盘加密功能,保护数据安全。
7.系统管理
-注册表:存储系统和应用程序的配置信息
-控制面板:提供系统设置和应用程序管理界面
注册表
1. 注册表概述
- Windows注册表是一个包含系统和应用程序配置信息的数据库,它存储在Windows操作系统中。
2. 功能和作用
- 存储硬件配置信息,如设备驱动程序和系统服务。
- 存储应用程序设置,如用户界面偏好和网络连接。
- 存储系统启动和运行所需的关键信息。
3. 结构
- 注册表由键(Key)和值(Value)组成,类似于文件系统中的文件夹和文件。
- 键是分层的,可以包含子键,形成树状结构。
4. 主要部分
- HKEY_CLASSES_ROOT (HKCR):存储文件类型关联和COM对象的信息。
- HKEY_CURRENT_USER (HKCU):存储当前登录用户的配置信息。
- HKEY_LOCAL_MACHINE (HKLM):存储所有用户和计算机的配置信息。
- HKEY_USERS (HKU):存储所有用户账户的配置信息。
- HKEY_CURRENT_CONFIG (HKCC):存储当前硬件配置文件的信息。
5. 注册表编辑器
- regedit.exe:Windows自带的注册表编辑器,允许用户查看和编辑注册表项。
- 注意:不当的编辑可能导致系统不稳定或无法启动。
6. 注册表文件
- 注册表数据存储在Windows目录下的多个文件中,如system.dat、user.dat等。
- 这些文件在系统启动时被加载到内存中。
7. 安全性
- 注册表包含敏感信息,不当的修改可能导致安全风险。
- 可以通过权限设置限制对注册表的访问。
8. 备份和恢复
- 可以备份注册表,以便在出现问题时恢复。
- 使用注册表编辑器或第三方工具进行备份和恢复。
9. 注册表清理
- 随着时间的推移,注册表可能会积累无效或过时的条目。
- 可以使用注册表清理工具来优化和清理注册表。
10. 注册表与系统性能
- 注册表中的无效条目可能会影响系统性能。
- 定期维护注册表有助于保持系统性能。
11. 注册表与软件安装
- 软件安装过程中会向注册表添加条目,以存储其配置信息。
- 卸载软件时,相关注册表条目也应被清理。
12. 注册表与硬件驱动
- 硬件驱动程序的配置信息存储在注册表中。
- 更新或移除硬件时,注册表中的相应条目也会更新。
13. 注册表与系统策略
- 系统管理员可以使用组策略编辑器(gpedit.msc)来配置注册表设置,以控制用户和计算机的行为。
14. 注册表与Windows服务
- Windows服务的配置信息存储在注册表中,控制服务的启动类型和依赖关系。
15. 注册表与环境变量
- 环境变量存储在注册表中,影响系统和应用程序的运行环境。
实操
备份注册表
win+r 输入 regedit 打开注册表编辑器,文件 --》 导出
当更错误更改注册表信息造成计算机某些功能无法正常使用时,可将原先备份好的注册表导入。
新建和修改
创建项之后--》修改--》数值 即可
CMD
1. CMD概述
- CMD(Command Prompt)是Windows操作系统中的命令行解释器,允许用户通过命令行界面与操作系统交互。
2. 功能
- 执行各种命令来管理系统、运行程序、配置网络设置、管理文件和目录等。
3. 启动CMD
- 可以通过搜索“cmd”或“命令提示符”在开始菜单中启动。
- 使用快捷键Win + R,输入“cmd”并按回车键。
4. 命令行界面
- 提供文本界面,用户可以输入命令并接收文本形式的输出。
5. 基本命令
- `dir`:列出当前目录下的文件和文件夹。
- `cd`:更改当前工作目录。
- `copy`:复制文件。
- `move`:移动或重命名文件。
- `del`:删除文件。
- `mkdir`:创建新目录。
- `rmdir`:删除目录。
6. 环境变量
- 允许用户访问操作系统级别的变量,如`PATH`、`TEMP`和`USERPROFILE`。
7. 管道和重定向
- 使用`|`(管道)将一个命令的输出作为另一个命令的输入。
- 使用`>`(重定向)将命令的输出保存到文件中。
- 使用`>>`追加输出到现有文件。
8. 批处理文件
- 使用`.bat`或`.cmd`文件存储一系列命令,可以一次性执行。
- 允许创建自动化脚本,用于执行复杂的任务。
9. 命令别名
- 使用`alias`命令为常用命令创建快捷方式。
10. 命令历史
- 使用上下箭头键可以浏览之前输入的命令。
11. 通配符
- 使用`*`和`?`作为通配符,匹配文件名中的多个字符或单个字符。
12. 权限
- 以管理员身份运行CMD可以执行需要更高权限的命令。
13. 网络命令
- 如`ping`、`ipconfig`、`netstat`等,用于网络诊断和管理。
14. 文件比较
- 使用`fc`命令比较两个文件的内容。
15. 任务自动化
- 可以编写脚本自动执行常规任务,如系统备份、文件同步等。
16. 系统信息
- 使用`systeminfo`命令查看系统详细信息。
17. 任务管理
- 使用`tasklist`和`taskkill`命令查看和管理正在运行的进程。
18. CMD与PowerShell
- CMD和PowerShell都是命令行工具,但PowerShell提供了更高级的功能和面向对象的命令。
19. 安全性
- 通过限制对CMD的访问,可以提高系统的安全性。
- 避免在CMD中运行未知来源的脚本或命令。
20. CMD的局限性
- 与PowerShell相比,CMD的功能和灵活性有限,但在某些情况下,CMD仍然是快速执行简单任务的有效工具。
常用命令详解
都可以用 /? 查看使用说明
1. cd /d [directory] - 更改目录到指定路径
2. copy [source] [destination] - 复制文件到指定位置
3. del /q [file] - 删除文件
4. dir /p - 列出目录内容,分页显示
5. echo [text] - 显示文本信息
6. mkdir [directory] - 创建新目录
7. rmdir /s /q [directory] - 删除目录及其内容
8. move [source] [destination] - 移动或重命名文件
9. cls - 清除屏幕
10. ver - 显示操作系统版本
11. ipconfig /all - 显示所有网络适配器的配置信息
12. ping [address] - 测试网络连接
13. nslookup [hostname] - 查询域名的IP地址
14. netstat -an - 显示所有网络连接和监听端口
15. tasklist - 显示当前运行的进程
16. taskkill /im [processname] - 终止指定进程
17. systeminfo - 显示系统详细信息
18. shutdown /s /t [seconds] - 关闭计算机
19. restart /r /t [seconds] - 重启计算机
20. chkdsk /f - 检查磁盘并修复错误
21. diskpart - 磁盘分区管理工具
22. format [drive:] - 格式化指定驱动器
23. fsutil - 显示或配置文件系统属性
24. robocopy [source] [destination] - 高级文件复制工具
25. xcopy [source] [destination] - 复制文件和目录
26. assoc [.ext] - 查看或更改文件扩展名关联
27. ftype [filename] - 查看或设置文件类型关联
28. sc [create|delete|query] [servicename] - 服务管理
29. schtasks /create - 创建计划任务
30. certmgr.msc - 证书管理器
cmd本身不提供创建文件命令,但可以使用以下方法创建
echo flag{whoami} > flag.txt
help
显示所有预定义命令
[命令] -help
[命令] /? 显示帮助信息
type
用于显示文本内容
type flag.txt //显示内容
type nul > flag.txt //创建新文件
type flag1.txt flag2.txt > flag.txt //合并文件内容
type *.txt //查看当前目录下所有以 .txt 结尾的文件
type flag1.txt > flag2.txt //将文件内容输出到另一个文件
type flag.txt | findstr /I "flag" //不区分大小写在文件中搜索flag
findstr
搜索文本文件中特定字符串
findstr "flag" flag.txt //基本文本搜索
/s //递归搜索
findstr "flag" flag1.txt flag2.txt //多文件搜索
/i //忽略大小写
/n //显示匹配的行号
/C: //匹配字符串
findstr /C:"Kimi" *.txt
会在当前目录下所有.txt
文件中查找包含 "Kimi" 的行,并显示这些行。
find
和 findstr 差不多,但find只能单文件查找且不支持正则
copy
复制一个或多个文件
格式:
copy [source] [destination]
copy flag1.txt ..\flag3.txt //单个文件复制到指定位置
如果目标是现有文件,且源文件和目标文件同名,将覆盖目标文件
copy *.txt D:\flag //利用通配符复制多个文件
copy 1.txt+2.txt 3.txt //合并文件内容
move
move ..\1.txt 4.txt 将上一级的 1.txt 移动到本级并重命名
del
del
命令(也称为 erase
命令)在 Windows 命令提示符(CMD)中用于删除文件
删除单个文件:
- 删除指定的单个文件。
- 格式:
del [filename]
删除多个文件:
- 删除当前目录下符合指定模式的多个文件。
- 格式:
del [filename1] [filename2] ...
使用通配符:
- 删除符合特定模式的文件,如删除所有文本文件。
- 格式:
del *.txt
删除并提示确认:
- 在删除文件之前提示用户确认。
- 格式:
del /p [filename]
强制删除:
- 忽略只读属性,强制删除文件。
- 格式:
del /f [filename]
删除前移动到回收站:
- 将文件删除并移动到回收站,而不是永久删除。
- 格式:
del /s [filename]
删除所有属性的文件:
- 删除具有任何属性的文件。
- 格式:
del /a [filename]
del
命令只能删除文件,不能直接删除目录。要删除目录及其内容,需要使用 rmdir
或 rd
命令。此外,使用 del
命令时要小心,因为删除操作是不可逆的,一旦文件被删除,就无法恢复。
dir
用于显示目录(文件夹)中的文件和子目录列表
基本文件列表:
- 显示当前目录中的文件和子目录。
- 格式:
dir
指定路径:
- 显示指定路径下的文件和子目录。
- 格式:
dir [path]
分页显示:
- 以分页形式显示文件列表,每页之后暂停。
- 格式:
dir /p
显示隐藏文件:
- 显示包括隐藏和系统文件在内的所有文件。
- 格式:
dir /a
递归显示:
- 递归显示所有子目录中的文件。
- 格式:
dir /s
建议 dir /s | more 分页查看
使用通配符:
- 显示符合特定模式的文件。
- 格式:
dir *.txt
dir
命令的参数包括:
/a
:显示所有文件,包括隐藏和系统文件。/d
:按日期排序,而不是默认的文件名排序。/p
:分页显示。/q
:显示文件的所有者。/s
:递归显示所有子目录中的文件。/w
:以宽格式显示,即每行显示多个文件名。
查找文件 dir/s flag.txt
tree
以树状结构显示指定路径下的目录和文件
显示目录树:
tree [drive:][path]
显示指定路径或当前路径的目录树结构。参数
/?: 显示帮助文档
/F:显示每个文件夹中的文件名称。
/a:使用 ASCII 字符绘制树状结构,而不是扩展字符。
tree C:\Users\Administrator /a 比较常用
md和rd
md创建文件夹(等价于 mkdir)
rd删除文件夹
ping -t
一直ping
tasklist 和 taskkill
tasklist //显示进程
taskkill
/F
强制终止进程。/PID process id
指定要终止的进程ID。/IM image name
指定要终止的进程的映像名称。/T
终止指定的进程和由它启动的所有子进程。- taskkill /IM notepad.exe /F 强制结束进程名为 notepad.exe 的进程
打开计算器
查看进程信息
强制结束计算器。(也可以用 /pid 15572)
ver和winver
显示系统版本和弹窗显示系统版本
systeminfo
查看系统详细信息,可用于查看打了哪些补丁,可利用哪些进行提权。
logoff
logoff 命令是 Windows 操作系统中的一个命令行工具,用于注销当前用户并关闭会话。
命令格式:
shutdown
/s //关闭计算机
/r //重启计算机
/a //终止系统关闭计算机
/t xxx //将关闭前的超时时间设置为 xxx 秒
/f 强制关闭正在运行的应用程序而不事先警告用户
shutdown /s /t 0 立即关机
telnet
用于通过 Telnet 协议连接到远程主机。
Telnet 协议是远程登录服务器或主机的协议。
telnet [选项] [主机名/IP地址] [端口号]
使用示例: - 连接到远程主机:`telnet remotehost` - 连接到远程主机的特定端口:`telnet remotehost 23` - 使用详细模式连接:`telnet /v remotehost` - 使用用户名自动登录:`telnet /l username remotehost` 注意事项: - Telnet不是一种安全的协议,因为它以明文形式传输所有数据,包括用户名和密码。因此,它不推荐用于敏感信息的传输。 - 许多现代系统已经禁用了Telnet服务,转而使用更安全的SSH(Secure Shell)协议。 - 在使用Telnet之前,确保远程主机允许Telnet连接,并且你知道正确的登录凭据。
本地查看客户端telnet服务是否打开
控制面板 --》程序--》启用或关闭 windows 功能
打开后即可与远程主机进行连接
arp
ARP 是一种网络层协议,用于将网络层的 IP 地址解析为数据链路层的 MAC 地址。当设备需要发送数据到另一个设备时,如果只知道目标设备的 IP 地址,它将使用 ARP 协议来查询目标设备的 MAC 地址。ARP 协议通过广播请求,目标设备响应其 MAC 地址,从而实现地址解析。
即建立物理机与ip的映射关系
arp /?
arp -a
通过询问当前协议数据,显示当前 ARP 项。
如果指定 inet_addr,则只显示指定计算机
的 IP 地址和物理地址。如果不止一个网络
接口使用 ARP,则显示每个 ARP 表的项。
假设拿到了一台内网机器,通过 -a 查看有哪些主机可用于横向移动,用于发现同一网络有哪些主机
net
NET 是 Windows 系统中用于管理网络服务、用户、本地组等的命令行工具。它包含多个子命令,用于执行不同的网络管理任务
net stop telnet 关闭 telnet服务
net start telnet 开启telnet 服务
net user (查看当前用户)
net user admin 123 /add (添加用户)
net user administrator (查看管理员用户权限)
将admin变成管理员权限==》
net localgroup administrator admin /add (提权)
net user admin (删除用户)
有点问题
netstat
netstat /?
显示协议统计信息和当前 TCP/IP 网络连接。
-a 显示所有连接和侦听端口。
-r 显示路由表。
环境变量
环境变量是操作系统中的一种机制,用于存储有关系统环境的信息。它们是一系列的键值对,其中键是环境变量的名称,值是相应的数据。环境变量可以被操作系统、运行在系统上的应用程序以及用户在命令行中使用。
特点
动态获取信息:应用程序可以在运行时读取环境变量,以获取所需的配置信息,而无需在程序代码中硬编码这些信息。
影响命令搜索路径:环境变量如
PATH
指定了系统在执行命令时搜索可执行文件的目录。... ...
1. 查看当前环境变量:
- 命令:`set`
- 显示当前会话的所有环境变量及其值。2. 设置环境变量(当前会话有效):
- 命令:`set variable_name=variable_value`
- 设置一个环境变量,只对当前CMD会话有效。3. 查看特定环境变量的值:
- 命令:`echo %variable_name%` 比如 echo %path%
- 显示指定环境变量的值。4. 删除环境变量(当前会话有效):
- 命令:`set variable_name=`
- 删除指定的环境变量,使其在当前会话中不再存在。5. 在系统环境变量中添加或修改变量:
- 通过“系统属性”窗口中的“环境变量”按钮进行设置。
- 在“用户变量”区域添加或修改用户级别的环境变量。
- 在“系统变量”区域添加或修改系统级别的环境变量。6. 永久删除系统环境变量:
- 通过“系统属性”窗口中的“环境变量”按钮进行设置。
- 在“用户变量”或“系统变量”区域选择要删除的变量,点击“删除”。7. 导出环境变量到文件:
- 命令:`set > environment_variables.txt`
- 将当前会话的所有环境变量及其值导出到文本文件。8. 从文件导入环境变量:
- 命令:`set /p | set`
- 从标准输入(如文件)导入环境变量设置。9. 使用CMD脚本设置环境变量:
- 在批处理文件(.bat或.cmd)中使用`set`命令设置环境变量,这些变量将在脚本执行期间有效。请注意,通过CMD会话设置的环境变量仅对当前会话有效。要永久设置环境变量,需要通过系统属性中的“环境变量”对话框进行设置,或者在系统启动脚本(如注册表或系统启动批处理文件)中设置。```
系统标准目录
在 Windows 操作系统中,标准目录结构是文件和文件夹的组织方式,它们在系统中扮演着特定的角色。以下是一些常见的 Windows 标准目录及其作用:
- C:\Windows:存放 Windows 操作系统的核心文件,包括系统文件、DLLs、资源和配置文件。
- C:\Program Files:默认的应用程序安装目录,用于存放 64 位应用程序。
- C:\Program Files (x86):用于存放 32 位应用程序的目录,即使在 64 位系统上也是如此。
- C:\ProgramData:存放应用程序共享的数据,这些数据对所有用户都可用。
- C:\Users:包含所有用户账户的文件夹,每个用户都有自己的子文件夹,如“Documents”、“Pictures”、“Desktop”等。
- C:\Users\用户名:代表当前登录用户的主目录,包含用户的个人文件和设置。
- C:\Users\用户名\AppData:存放应用程序数据、缓存和临时文件的隐藏文件夹。
- AppData\Local:存放不需要在用户之间共享的应用程序数据。
- AppData\LocalLow:存放安全性较低的应用程序数据。
- AppData\Roaming:存放需要在用户之间共享的应用程序数据,如设置和配置文件。
- C:\Windows\System32:存放 64 位系统文件和用于运行 Windows 操作系统的 DLLs。
- C:\Windows\SysWOW64:在 64 位系统上,这是存放 32 位系统文件和 DLLs 的目录。
- C:\System Volume Information:一个隐藏的系统文件夹,用于存放系统还原点和卷影复制信息。
- C:\$Recycle.Bin:存放被删除文件的文件夹,直到它们被永久删除或清空回收站。
- C:\Boot:包含启动加载程序的文件。
- C:\Windows\Temp:存放临时文件,这些文件可以被系统或应用程序使用。这些目录是 Windows 系统正常运行的基础,用户在操作时应谨慎,避免删除或修改这些目录中的重要文件。