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端口。

    监听端口是指计算机或服务器上的网络端口,它处于等待状态,准备接受来自其他计算机的连接请求。

    1732070741549

    状态的含义

    • 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系统中,很多第三方程序是通过后台服务来运行的。如果攻击者能够获取这些服务的信息,尤其是服务名称,他们可能会利用已知的漏洞来提升权限或进行其他恶意行为。

  1. 关闭安全软件:获取服务信息还可以帮助攻击者关闭杀毒软件、防火墙或其他安全防护进程,从而降低系统的防御能力。
  2. 查看服务状态:使用 net start 命令可以查看系统中所有已经启动的服务。这个命令会列出所有当前正在运行的服务,包括它们的名字和状态。
  3. 停止服务:通过 net stop service_name 命令,可以停止指定的服务。这可能被用于关闭关键的安全服务或系统服务。
  4. 启动服务:通过 net start service_name 命令,可以启动指定的服务。这可能被用于恢复被关闭的服务,或者启动恶意服务。

获取进程信息

通过tasklist /svc命令获取运行的进程名称,服务和PID

1732073347773

也可以通过 在命令行敲入msinfo32获取更详细的信息

1732073397055

或者输入到一个文本文件

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

可以查询到上次登录的时间,还有具体这个用户属于哪些本地用户组

1732089686112

激活用户

1
net user temp /active:yes

查看本地策略组:

直接在任务栏搜索:lusrmgr.msc,注意家庭版是没有这个玩意的

1732088355191

用户管理命令

修改用户密码:

1
net user [账户] [密码]

管理和查看全部用户情况

1
net user

查看操作系统进程情况:

1
tasklist

查看远程目标操作系统的进程情况,目标主机要开启RPC服务

1
tasklist /s xxx.xxx.xxx.xxx /u [用户名] /p [密码]

比较离奇的是我能连上远程桌面,但是不能使用上面命令,一直说密码错误,我真的....

查看本地系统中某进程调用了某DLL模块文件的具体信息,和远程查看目标主机

1
2
tasklist /m shell32.dll
tasklist /m rundll32.dll /s 192.168.1.6 /u administrator /p root

使用筛选器查找指定进程:

1
2
使用筛选器查找指定进程:
tasklist /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running

• 列出系统中正在运行的非“SYSTEM”状态的所有进程:ne:不等于,eq:等于

Windows自带的终止进程的程序

taskkill

1
2
3
taskkill /im 360tray.exe /f
tasklist | findstr "notepad
taskkill /pid 10924

查看操作系统详细配置信息:

1
systeminfo

显示本地计算机及其操作系统的详细配置信息,包括:操作系统配置、安全信息、产品ID和硬件属性,如RAM、磁盘空间、网卡和KB补丁信息等。

查看远程的:

1
systeminfo /s 192.168.1.6 /u administrator /p root

whoami 以及 whoami /all,查看到当前用户的所有权限和角色的信息。

1732108600608

局域网内所有连接的主机:

对应的是网卡的地址

1732108627538

查询登录本机的所有用户:

• query user

1732108719420

对于本地用户,通常显示控制台(console)。对于远程桌面用户,显示的是远程连接的终端设备( rdp-tcp#2 )

1
2
3
4
C:\> query user
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
> user1 console 1 Active none 3/1/2024 12:30 PM
user2 rdp-tcp#2 2 Active 00:15:00 3/1/2024 01:00 PM

打开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

1732109390627

1732109397628

操作系统帐户角色权限:

Windows操作系统的帐户

本地系统帐户:Local System Account

1.本地系统账户是一个内置的、高权限账户,主要用于支持操作系统的正常运行。 无法直接以系统账户登录计算机,也不能以普通用户的身份直接调用它。只有操作系统核心组件或运行在系统权限下的服务能够使用该账户。系统账户主要用于服务和进程运行时需要完全访问系统资源的场景。
例如Smss.exe Csrss.exe Lsass.exe Winlogon.exe等

2.系统帐户,是内部帐户,不显示在用户管理器(lusrmgr.msc)中,不能添加到任何组,并且不能把用户权限分配给它

1732151927904

3.系统帐户上NTFS文件系统卷的文件管理,在安全性(security)菜单的权限部分中显示

1732151985512

4.默认,系统帐户授予对NTFS卷上所有文件的完全控制

  1. 运行在本地系统帐户中的服务可以通过利用其计算机帐户,在同一个域林中的其他机器上自动获得身份认证。

本地管理员帐户:Local Administrator Account

管理员帐户(管理员组)和系统帐户有相同的文件权限,但他们具有相同的文件权限

网络服务帐户:network service account

1.用来供给给,既希望利用计算机帐户来向网络上其他机器认证身份,但是,又不需要Administrator组的所属权,这样的服务身份来呗使用

2.只能访问少量的注册表键,文件夹和文件

3.赋予少量特权,限制能力范围,不可以加载设备驱动或者打开任意进程

本地服务帐户:local service account

非常低的权限,仅够访问本地资源,类似于普通用户。 主要用途: 用于运行不需要访问远程网络资源的服务。 例如本地打印机后台处理程序

它们的能力和权限,都比系统帐户少

不要求本地系统帐户能力和权限的Windows内置服务,都需要运行在适当的服务帐户下。

提权操作:原来是用本地服务帐户登录的

1732152578729

可以选择用本地系统帐户登录,相当于提权(但是万一被攻破了,Hacker拿到的就是System权限)

Windows操作系统的角色

1732153664851

  1. Administrators:管理员,拥有对计算机或域的完全不受限制的访问权限。
  2. Users:普通用户,设计用来防止用户进行有意或无意的系统范围的更改,但允许运行大部分应用程序。
  3. Guests:来宾访客,拥有与用户组成员同等的访问权限,但来宾账户的限制更多。
  4. Hyper-V Administrators:虚拟化管理员,拥有对Hyper-V所有功能的完全且不受限制的访问权限。
  5. IIS_IUSRS:Web服务,用于Internet信息服务的内置组。
  6. Power Users:超级管理员,包括高级用户以向下兼容,拥有有限的管理权限。
  7. Remote Desktop Users:远程桌面使用,被授予远程登录的权限。
  8. 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\Users\xxxx>wmic useraccount get name,sid
Name SID
Administrator S-1-5-21-3612690340-2046312669-3754059946-500
DefaultAccount S-1-5-21-3612690340-2046312669-3754059946-503
Guest S-1-5-21-3612690340-2046312669-3754059946-501
xxx S-1-5-21-3612690340-2046312669-3754059946-1000
temp S-1-5-21-3612690340-2046312669-3754059946-1001
WDAGUtilityAccount S-1-5-21-3612690340-2046312669-3754059946-504


whoami -all:
Everyone 已知组 S-1-1-0 必需的组, 启用于默认, 启用的组
NT AUTHORITY\本地帐户和管理员组成员 已知组 S-1-5-114 只用于拒绝的组
BUILTIN\Administrators 别名 S-1-5-32-544 只用于拒绝的组
BUILTIN\Users 别名 S-1-5-32-545 必需的组, 启用于默认, 启用的组
NT AUTHORITY\INTERACTIVE 已知组 S-1-5-4 必需的组, 启用于默认, 启用的组
CONSOLE LOGON 已知组 S-1-2-1 必需的组, 启用于默认, 启用的组
NT AUTHORITY\Authenticated Users 已知组 S-1-5-11 必需的组, 启用于默认, 启用的组
NT AUTHORITY\This Organization 已知组 S-1-5-15 必需的组, 启用于默认, 启用的组
NT AUTHORITY\本地帐户 已知组 S-1-5-113 必需的组, 启用于默认, 启用的组
LOCAL 已知组 S-1-2-0 必需的组, 启用于默认, 启用的组
NT AUTHORITY\NTLM Authentication 已知组 S-1-5-64-10 必需的组, 启用于默认, 启用的组
Mandatory Label\Medium Mandatory Level 标签 S-1-16-8192

访问令牌的组成

  1. 用户帐号SID:标识特定用户的安全标识符,用于验证用户身份。
  2. 所属组SID:用户所属的所有安全组的SID,这些组的权限会累加到用户账户上。
  3. 会话SID:标识当前登录会话的SID,用于区分不同的登录会话。
  4. 权限列表:用户或其对应用户组所拥有的权限列表,包括对文件、注册表、进程等资源的访问权限。
  5. 权限或组成员身份的限制:对用户权限或组成员身份的限制条件,这些条件可以进一步细化权限的分配。
  6. 低权限运行标志:支持以较低权限身份运行的标志,这有助于提高系统的安全性,防止恶意软件获取过高的权限。

访问令牌的作用:

  • 身份验证:验证用户身份,确保只有授权用户才能访问系统资源。
  • 权限控制:控制用户对系统资源的访问权限,如文件、注册表、进程等。
  • 安全隔离:通过不同的SID和权限设置,实现不同用户和组之间的安全隔离。
  • 会话管理:管理用户的登录会话,确保会话的安全性和完整性。

打开Process Explore,双击某一行,转到Security,可以查看一个程序的安全属性

可以看BUILTIN后面跟着是哪个组,比如这个DWM-1就是属于Users组的

1732155176163

当你看到进程(比如 dwm.exe)没有 BUILTIN\Administrators Deny 的标识时,实际上这意味着 dwm.exe 在当前的执行上下文下并没有直接受到来自该组的拒绝权限。也就是说它并没有显式地请求或要求以管理员身份运行。

安全描述符: 描述对象的安全信息,包括所有权和访问控制列表。

安全描述符由以下几个部分组成:

a. 所有者

  • 定义: 所有者是对象的拥有者,拥有对对象的最高权限,包括修改对象的权限和安全描述符本身。
  • 权限: 所有者可以更改对象的权限设置,包括添加或删除访问控制列表(ACL)。

b. 自主访问控制列表

  • 定义: 定义了哪些用户或组可以访问对象,以及他们可以执行的操作(如读取、写入、执行等)。

  • 访问控制项(Access Control Entries, ACE): DACL由一系列的ACE组成,每个ACE指定一个用户或组的访问权限。ACE可以是允许(Allow)或拒绝(Deny)访问的规则。

    1732159064428

  • 权限冲突:
    允许权限累积:如果一个用户属于多个组,且这些组的权限都是 允许 访问某个资源(如文件夹),那么这些允许权限会被累积。例如,属于 Administrators 组和 Users 组的用户,Administrators 组允许修改文件,Users 组允许读取文件,那么最终该用户就既可以读取也可以修改文件。

    拒绝权限优先如果存在显式的拒绝权限,那么拒绝权限会覆盖所有允许权限。即便该用户属于其他组,并且这些组有权限访问资源,**”拒绝” 权限始终优先**。例如,如果 Everyone 组的权限设置为拒绝访问某个文件,而该用户属于 Administrators 组,并且 Administrators 组允许访问该文件,那么最终该用户会被拒绝访问,因为 拒绝权限优先

1732158822103

icacls命令查看权限

1732159193925

如果是拒绝写,会是这样:

1
C:\example\file.txt BUILTIN\Users:(DENY)(W)

c. 系统访问控制列表

  • 定义: SACL用于定义哪些安全事件(如访问尝试、更改等)应该被记录在安全审计日志中。
  • 审计: SACL允许系统管理员监控和记录对对象的访问和更改,这对于安全分析和合规性检查非常重要。

有个小插曲

我把一个exe的权限users组只给了读取和写入,结果发现右键管理员启动不了,甚至不会弹UAC,也就是不会获取到管理员权限(我是在user),但是管理员启动的cmd可以启动这个程序

应该是因为 在这种情况下,尽管你右键点击并选择“以管理员身份运行”,操作系统并不会执行程序,因为它认为该程序本身可能没有执行权限,导致没有弹出 UAC。

1732162900751

不过加一个读取和执行的权限,就可以弹UAC了,也就可以申请到管理员执行

1732163075115

只有完全控制才不会弹安全控制

1:03:09