Windows应急响应(持续更新)
Windows应急响应
基本命令:
获取Ip地址
ipconfig /all
: 显示Windows主机的详细IP地址信息,包括IP地址、子网掩码、默认网关等。ipconfig /release
: 释放当前网络接口的IP地址。 释放IP地址是指将之前分配给网络接口的IP地址返回给网络,使得该IP地址可以被其他设备使用。ipconfig /flushdns
: 清除DNS解析器的缓存。ipconfig /renew
: 更新网络接口的IP地址。
/all /flushdns 用得比较多
ipconfig
命令主要用于显示本地计算机的网络配置信息,包括本地IP地址(局域网IP)、子网掩码、默认网关等。这些信息对于诊断本地网络问题非常有用,但它们并不直接显示公网IP地址(即外部IP地址),因为公网IP地址是分配给互联网服务提供商(ISP)的路由器的,而不是直接分配给单个计算机的。 可以用搜索引擎在线查看自己的公网IP
获取端口信息
netstat -an
: 显示所有端口的开放情况和网络连接状态,包括TCP和UDP端口。监听端口是指计算机或服务器上的网络端口,它处于等待状态,准备接受来自其他计算机的连接请求。
状态的含义:
- LISTENING:表示端口正在监听传入的连接请求。这是服务端端口的常见状态,表示服务正在等待客户端的连接。
- ESTABLISHED:表示端口已经建立了连接,数据可以在这个连接上传输。
- CLOSE_WAIT:表示远程主机已经关闭了连接,但本地主机还没有关闭。这可能意味着本地应用程序没有正确地关闭连接。
- TIME_WAIT:表示连接已经关闭,但端口仍然保留一段时间,以确保所有数据包都已经传输完成。这是TCP连接正常关闭后的一个状态。
例如
1
TCP 127.0.0.1:54533 127.0.0.1:61587 ESTABLISHED
以上代表 在本地计算机上,有一个服务或应用程序正在c++使用端口54533,它与本机上的另一个服务或应用程序(使用端口61587)建立了一个TCP连接。这个连接是活动的,可以进行数据传输。由于两个地址都是
127.0.0.1
,这表明通信是在本地计算机内部进行的,而不是跨越网络的。还有这个:c++
1
TCP 100.100.1.6:59865 23.43.50.170:443 ESTABLISHED
外网服务器并不是直接与我们的内网IP地址建立连接,而是与我们的公网IP地址建立连接,然后通过NAT技术与我们的内网IP地址通信。这就是为什么我们看到的是内网IP地址与外网服务器建立连接的原因,实际上是通过路由器的公网IP地址进行的
netstat -ano
: 显示所有端口的开放情况,包括TCP/UDP协议信息、端口号和进程号。netstat -anvb
: 显示所有端口的开放情况,包括进程名、进程ID(PID)、端口所用协议、调用的可执行组件以及相应的组件和第三方进程的系统路径。
获取服务信息
在Windows系统中,很多第三方程序是通过后台服务来运行的。如果攻击者能够获取这些服务的信息,尤其是服务名称,他们可能会利用已知的漏洞来提升权限或进行其他恶意行为。
- 关闭安全软件:获取服务信息还可以帮助攻击者关闭杀毒软件、防火墙或其他安全防护进程,从而降低系统的防御能力。
- 查看服务状态:使用
net start
命令可以查看系统中所有已经启动的服务。这个命令会列出所有当前正在运行的服务,包括它们的名字和状态。 - 停止服务:通过
net stop service_name
命令,可以停止指定的服务。这可能被用于关闭关键的安全服务或系统服务。 - 启动服务:通过
net start service_name
命令,可以启动指定的服务。这可能被用于恢复被关闭的服务,或者启动恶意服务。
获取进程信息
通过tasklist /svc
命令获取运行的进程名称,服务和PID
也可以通过 在命令行敲入msinfo32
获取更详细的信息
或者输入到一个文本文件
1 | start /wait msinfo32.exe /report "F:\viusal studio document\应急响应\2024-11-20.txt" /categories swenv+SWEnvRunningTasks |
命令结构拆解
**
start
**:用于启动一个新窗口来运行程序或命令。/wait
:告诉命令提示符等待所启动的程序运行结束后,才返回控制权到当前窗口。msinfo32.exe:Windows的系统信息工具,可以用来收集和显示关于硬件、软件、驱动程序以及其他系统信息的报告。
**
/report
**:指定将系统信息保存为报告文件。路径:
1
"F:\viusal studio document\应急响应\2024-11-20.txt"
- 这是报告保存的目标路径。路径中带有空格,需要用双引号括起来。
**
/categories
**:指定要包含在报告中的类别。**
swenv
**:代表软件环境(Software Environment)。SWEnvRunningTasks
:代表运行任务(Running Tasks)。swenv+SWEnvRunningTasks
:表示生成的软件环境信息中只包含当前运行的任务。
还要获取其他信息直接用Chatgpt生成对应代码得了
用户管理命令:
Windows操作系统中,系统访问通常通过用户命令实现 很多漏洞利用和提权需要获取 system 权限,以便添加管理员用户账户到系统中。
用户管理可以通过 Control面板 操作,或者**cmd
** 命令进行
以下记得关闭360等杀软…
添加用户到管理员组
1 | net user temp Tt@#Hh%2019 /add & net localgroup Administrators temp /Add |
添加名为 temp
的用户,密码为 Tt@#Hh%2019
,并将用户 temp
添加到管理员组。
查看系统管理员用户组:
1 | net localgroup Administrators |
加入远程桌面用户组:
1 | net localgroup "Remote Desktop Users" temp /add |
注意: Windows 家庭版不支持 远程桌面主机功能,也就是说它不能作为远程桌面的目标被连接。
查看用户信息:
1 | net user temp |
可以查询到上次登录的时间,还有具体这个用户属于哪些本地用户组
激活用户
1 | net user temp /active:yes |
查看本地策略组:
直接在任务栏搜索:lusrmgr.msc
,注意家庭版是没有这个玩意的
用户管理命令
修改用户密码:
1 | net user [账户] [密码] |
管理和查看全部用户情况
1 | net user |
查看操作系统进程情况:
1 | tasklist |
查看远程目标操作系统的进程情况,目标主机要开启RPC服务
1 | tasklist /s xxx.xxx.xxx.xxx /u [用户名] /p [密码] |
比较离奇的是我能连上远程桌面,但是不能使用上面命令,一直说密码错误,我真的....
查看本地系统中某进程调用了某DLL模块文件的具体信息,和远程查看目标主机
1 | tasklist /m shell32.dll |
使用筛选器查找指定进程:
1 | 使用筛选器查找指定进程: |
• 列出系统中正在运行的非“SYSTEM”状态的所有进程:ne:不等于,eq:等于
Windows自带的终止进程的程序
taskkill
1 | taskkill /im 360tray.exe /f |
查看操作系统详细配置信息:
1 | systeminfo |
显示本地计算机及其操作系统的详细配置信息,包括:操作系统配置、安全信息、产品ID和硬件属性,如RAM、磁盘空间、网卡和KB补丁信息等。
查看远程的:
1 | systeminfo /s 192.168.1.6 /u administrator /p root |
whoami 以及 whoami /all,查看到当前用户的所有权限和角色的信息。
局域网内所有连接的主机:
对应的是网卡的地址
查询登录本机的所有用户:
• query user
对于本地用户,通常显示控制台(console
)。对于远程桌面用户,显示的是远程连接的终端设备( rdp-tcp#2 )
1 | C:\> query user |
打开Windows管理工具包和组件的常用应急响应命令:
在Windows应急时,经常出现,诸如各种驱动丢失、系统工具的快捷方式被感染等情况,此时要排查系统问题,需要熟练掌握常用Windows应急命令:
• (1)compmgmt.msc,计算机管理;
• (2)gpedit.msc,组策略;
• (3)services.msc,管理和查看本地服务设置情况;
• (4)control,打开控制面板;
• (5)eventvwr,打开事件查看器(含日志);可结合利用Log Parser日志工具分析Windows的安全日志,查找账户的登录时间和位置等信息。
• (6)taskmgr,任务管理器;
• (7)secpol.msc,本地安全策略;
• (8)msconfig,系统配置(含启动项);
• (9)regedt32/regedit,注册表编辑器;
• (10)certmgr.msc,证书管理实用程序;
• (11)lusrmgr.msc,本地用户和用户组管理器;
• (12)taskschd.msc,计划任务管理器。
检查最近打开的文件
1 | UserProfile%\Recent |
操作系统帐户角色权限:
Windows操作系统的帐户
本地系统帐户:Local System Account
1.本地系统账户是一个内置的、高权限账户,主要用于支持操作系统的正常运行。 无法直接以系统账户登录计算机,也不能以普通用户的身份直接调用它。只有操作系统核心组件或运行在系统权限下的服务能够使用该账户。系统账户主要用于服务和进程运行时需要完全访问系统资源的场景。
例如Smss.exe Csrss.exe Lsass.exe Winlogon.exe等
2.系统帐户,是内部帐户,不显示在用户管理器(lusrmgr.msc)中,不能添加到任何组,并且不能把用户权限分配给它
3.系统帐户上NTFS文件系统卷的文件管理,在安全性(security)菜单的权限部分中显示
4.默认,系统帐户授予对NTFS卷上所有文件的完全控制
- 运行在本地系统帐户中的服务可以通过利用其计算机帐户,在同一个域林中的其他机器上自动获得身份认证。
本地管理员帐户:Local Administrator Account
管理员帐户(管理员组)和系统帐户有相同的文件权限,但他们具有相同的文件权限
网络服务帐户:network service account
1.用来供给给,既希望利用计算机帐户来向网络上其他机器认证身份,但是,又不需要Administrator组的所属权,这样的服务身份来呗使用
2.只能访问少量的注册表键,文件夹和文件
3.赋予少量特权,限制能力范围,不可以加载设备驱动或者打开任意进程
本地服务帐户:local service account
非常低的权限,仅够访问本地资源,类似于普通用户。 主要用途: 用于运行不需要访问远程网络资源的服务。 例如本地打印机后台处理程序
它们的能力和权限,都比系统帐户少
不要求本地系统帐户能力和权限的Windows内置服务,都需要运行在适当的服务帐户下。
提权操作:原来是用本地服务帐户登录的
可以选择用本地系统帐户登录,相当于提权(但是万一被攻破了,Hacker拿到的就是System权限)
Windows操作系统的角色
- Administrators:管理员,拥有对计算机或域的完全不受限制的访问权限。
- Users:普通用户,设计用来防止用户进行有意或无意的系统范围的更改,但允许运行大部分应用程序。
- Guests:来宾访客,拥有与用户组成员同等的访问权限,但来宾账户的限制更多。
- Hyper-V Administrators:虚拟化管理员,拥有对Hyper-V所有功能的完全且不受限制的访问权限。
- IIS_IUSRS:Web服务,用于Internet信息服务的内置组。
- Power Users:超级管理员,包括高级用户以向下兼容,拥有有限的管理权限。
- Remote Desktop Users:远程桌面使用,被授予远程登录的权限。
- Performance Monitor Users:性能监视,可以从本地和远程访问性能计数器数据。
Windows操作系统的权限
- 安全标识符 :每个用户和系统实体,用于信任决策,都被赋予一个SID。
- 访问令牌: 用于验证用户身份和权限的令牌。
- 安全描述符: 描述对象的安全信息,包括所有权和访问控制列表。
- 访问控制管理 (权限): 管理系统中对象的访问权限。
- 特权: 提供额外权限的特殊权利
安全标识符 (SID)
- 定义: 每个用户和系统实体,用于信任决策,都被赋予一个SID。
- 唯一性: SID是唯一的,并且有多种不同的形式,贯穿实体的整个生命周期。
- 标识方式: Windows使用SID而不是账户名称来全局标识用户。
- 应用范围: 用户、用户组、域用户组、本地计算机、域、域成员、服务等都有SID。
- 长度和格式: SID的长度可变,格式为
S-Revision Level-Authority Value-Relative Identifier
。
SID格式详解
- Revision Level: 结构版本号,用于标识SID的版本。
- Authority Value: 48位,标识符机构值,用于识别颁发SID的机构。
- Relative Identifier: 可变数量的32位子机构值或相对标识符,用于进一步区分SID。
1 | C:\Users\xxxx>wmic useraccount get name,sid |
访问令牌的组成
- 用户帐号SID:标识特定用户的安全标识符,用于验证用户身份。
- 所属组SID:用户所属的所有安全组的SID,这些组的权限会累加到用户账户上。
- 会话SID:标识当前登录会话的SID,用于区分不同的登录会话。
- 权限列表:用户或其对应用户组所拥有的权限列表,包括对文件、注册表、进程等资源的访问权限。
- 权限或组成员身份的限制:对用户权限或组成员身份的限制条件,这些条件可以进一步细化权限的分配。
- 低权限运行标志:支持以较低权限身份运行的标志,这有助于提高系统的安全性,防止恶意软件获取过高的权限。
访问令牌的作用:
- 身份验证:验证用户身份,确保只有授权用户才能访问系统资源。
- 权限控制:控制用户对系统资源的访问权限,如文件、注册表、进程等。
- 安全隔离:通过不同的SID和权限设置,实现不同用户和组之间的安全隔离。
- 会话管理:管理用户的登录会话,确保会话的安全性和完整性。
打开Process Explore,双击某一行,转到Security,可以查看一个程序的安全属性
可以看BUILTIN后面跟着是哪个组,比如这个DWM-1就是属于Users组的
当你看到进程(比如 dwm.exe)没有 BUILTIN\Administrators Deny
的标识时,实际上这意味着 dwm.exe 在当前的执行上下文下并没有直接受到来自该组的拒绝权限。也就是说它并没有显式地请求或要求以管理员身份运行。
安全描述符: 描述对象的安全信息,包括所有权和访问控制列表。
安全描述符由以下几个部分组成:
a. 所有者
- 定义: 所有者是对象的拥有者,拥有对对象的最高权限,包括修改对象的权限和安全描述符本身。
- 权限: 所有者可以更改对象的权限设置,包括添加或删除访问控制列表(ACL)。
b. 自主访问控制列表
定义: 定义了哪些用户或组可以访问对象,以及他们可以执行的操作(如读取、写入、执行等)。
访问控制项(Access Control Entries, ACE): DACL由一系列的ACE组成,每个ACE指定一个用户或组的访问权限。ACE可以是允许(Allow)或拒绝(Deny)访问的规则。
权限冲突:
允许权限累积:如果一个用户属于多个组,且这些组的权限都是 允许 访问某个资源(如文件夹),那么这些允许权限会被累积。例如,属于Administrators
组和Users
组的用户,Administrators
组允许修改文件,Users
组允许读取文件,那么最终该用户就既可以读取也可以修改文件。拒绝权限优先:如果存在显式的拒绝权限,那么拒绝权限会覆盖所有允许权限。即便该用户属于其他组,并且这些组有权限访问资源,**”拒绝” 权限始终优先**。例如,如果
Everyone
组的权限设置为拒绝访问某个文件,而该用户属于Administrators
组,并且Administrators
组允许访问该文件,那么最终该用户会被拒绝访问,因为 拒绝权限优先。
用icacls
命令查看权限
如果是拒绝写,会是这样:
1 | C:\example\file.txt BUILTIN\Users:(DENY)(W) |
c. 系统访问控制列表
- 定义: SACL用于定义哪些安全事件(如访问尝试、更改等)应该被记录在安全审计日志中。
- 审计: SACL允许系统管理员监控和记录对对象的访问和更改,这对于安全分析和合规性检查非常重要。
有个小插曲
我把一个exe的权限users组只给了读取和写入,结果发现右键管理员启动不了,甚至不会弹UAC,也就是不会获取到管理员权限(我是在user),但是管理员启动的cmd可以启动这个程序
应该是因为 在这种情况下,尽管你右键点击并选择“以管理员身份运行”,操作系统并不会执行程序,因为它认为该程序本身可能没有执行权限,导致没有弹出 UAC。
不过加一个读取和执行的权限,就可以弹UAC了,也就可以申请到管理员执行
只有完全控制才不会弹安全控制
1:03:09