Windows应急响应

一、查看系统是否存在多余的特权、隐藏账户

lusrmgr.msc

二、注册表排查影子账户

regedit进入注册表,找到路径HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\User,排查可疑账户。

三、检查系统自启动文件夹

1.检查系统自启动文件夹

shell:startup 直接跳转自启动文件夹

2.任务管理器-启动

四、进程注入排查

进程注入通常不会被杀毒软件发现,此处可以用火绒剑、TCPviewProcess monitor等进程监测工具排查,这里以火绒剑为例:

火绒可以查杀未免杀的木马程序,却不可以动态查杀进程注入等木马的存在,所以需要打开火绒剑的进程监控,可以看到被注入的进程会有规律的外连一个地址,且这个规律取决于攻击者设置的回连时间间隔。

五、可疑端口排查

netstat -ano ##查看系统端口占用情况

tasklist | findstr "PID"

#发现可疑外连情况后,使用命令tasklist | findstr "PID"或根据最后一列PID号,从任务管理器中查看本地文件等详细信息。

注意:当得知是哪个exe的时候,可以采用三种方法获取程序路径
1.msinfo32
软件环境-正在运行的任务

2.everything

直接查找文件名,有局限性,everything需要安装,同时若原先有everything,其安装的everything不一定能够搜索全盘,在快速定位的时候检查菜单栏-搜索

3.任务管理器

4.wmic命令

1
`wmic process get name,executablepath,processid|findstr PID`

无论是使用命令行工具还是编写脚本,通过PID查找程序所在位置的原理都是先确定程序名称,然后再根据程序名称查找位置。因此,确呆程序名称正确无误非常重要。

六、木马查杀

使用D盾河马webshell查杀webshell专杀工具,并根据传件时间等排查恶意脚本内容

七、检查隐藏文件

更改设置,点击组织-文件夹和搜索选项

八、日志审计

eventvwr 打开系统日志

Windows大多数版本默认不开启登录失败日志记录,建议手动检查日志审核是否开启,并适当增加日志存储容量与日志记录时间。

控制面板-管理工具-本地安全策略

此图为未开审核记录

1.系统日志

系统日志记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。

系统日志存储位置(也可以直接点开winodws日志-系统):

%SystemRoot%\System32\Winevt\Logs\System.evtx

2.应用程序日志

应用程序日志包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。

应用程序日志存储位置(也可以直接点开winodws日志-应用程序):

%SystemRoot%\System32\Winevt\Logs\Application.evtx

3.安全日志

安全日志记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、账号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

安全日志存储位置(windows日志-安全):

%SystemRoot%\System32\Winevt\Logs\Security.evtx

除了修改设置保留全部审核日志外,还应该知道常用的日志类型所对应的ID号。

这里列举一部分应急响应出现频率较高的ID

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
4608 ----- Windows正在启动
4609 ----- Windows正在关闭
4624 ----- 帐户已成功登录
4625 ----- 帐户无法登录
4626 ----- 用户/设备声明信息
4627 ----- 集团会员信息。
4634 ----- 帐户已注销
4698 ----- 已创建计划任务
4699 ----- 计划任务已删除
4700 ----- 已启用计划任务
4701 ----- 计划任务已禁用
4702 ----- 计划任务已更新
4720 ----- 已创建用户帐户
4722 ----- 用户帐户已启用
4723 ----- 尝试更改帐户的密码
4724 ----- 尝试重置帐户密码
4725 ----- 用户帐户已被禁用
4726 ----- 用户帐户已删除
4738 ----- 用户帐户已更改
4739 ----- 域策略已更改
4740 ----- 用户帐户已被锁定
4741 ----- 已创建计算机帐户
4742 ----- 计算机帐户已更改
4743 ----- 计算机帐户已删除
4768 ----- 请求了Kerberos身份验证票证(TGT)
4769 ----- 请求了Kerberos服务票证
4770 ----- 更新了Kerberos服务票证
4771 ----- Kerberos预身份验证失败
4772 ----- Kerberos身份验证票证请求失败
4773 ----- Kerberos服务票证请求失败
4944 ----- Windows防火墙启动时,以下策略处于活动状态
4945 ----- Windows防火墙启动时列出了规则
4946 ----- 已对Windows防火墙例外列表进行了更改。增加了一条规则
4947 ----- 已对Windows防火墙例外列表进行了更改。规则被修改了
4948 ----- 已对Windows防火墙例外列表进行了更改。规则已删除
4949 ----- Windows防火墙设置已恢复为默认值
4950 ----- Windows防火墙设置已更改
5024 ----- Windows防火墙服务已成功启动
5025 ----- Windows防火墙服务已停止

总结

前期准备:

1.U盘

2.火绒剑安装包

3.TCPviewer

4.everything

排查思路:

1.检查是否存在隐藏账户、黑客用户 (命令查询、注册表查看)

2.检查启动项

3.可疑进程查找 (命令行netstat anotcpview查看)

4.可疑的进程根据PID,查找对应程序名

5.查找程序存储的所在位置

6.检查隐藏文件设置是否打开,并检查当前目录、以及最近recent目录下的所有文件

7.木马查杀

8.根据ID查询系统安全日志事件,查看登录事件、程序报错事件等

快速溯源

1、根据 PID 查找文件路径

wmic process get name,executablepath,processid|findstr 4820

2、根据 PID 查找文件

ls -l /proc/$PID/exe 或 file /proc/$PID/exe 查看下 pid 所对应的进程文件路径

3、定位有多少 IP 在爆破主机的 root 帐号:

grep “Failed password for root” /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr | more

4、定位有哪些 IP 在爆破:

grep “Failed password” /var/log/secure|grep -E -o “(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9] [0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)”|uniq -c

5、爆破用户名字典是什么?

grep “Failed password” /var/log/secure|perl -e ‘while($_=<>){ /for(.*?) from/; print “$1\n”;}’|uniq -c|sort -nr

6、登 录 成 功 的 IP 有 哪 些 :

grep “Accepted “ /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr | more

7、登 录 成 功 的 日 期 、 用 户 名 、 IP:

grep “Accepted “ /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’

Windows 安全基线排查脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
@echo off&setlocal enabledelayedexpansion

rem %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

cd /d "%~dp0"

title windows基线检查 日期:%date% %time%

rem mode con cols=500 lines=9999

Rem '/*========获取本机的IP地址=========*/

for /f "tokens=2 delims=:" %%b in ('ipconfig^|findstr /i "ip"') do set IP=%%b

echo 本机IP是: %IP%

echo 当前时间是: %date% %time%

systeminfo

echo.

echo.

echo #####查看账户net user#####

echo.

net user

echo.

echo.

echo ########查看用户组########

echo.

net Localgroup

echo.

echo.

echo ########查看admin组#######

echo.

Net Localgroup administrators 2>1

Net Localgroup superman 2>1

Rem '/*========获取策略组文件=========*/

secedit /export /cfg secedit.inf /quiet

echo.

echo.

echo #########密码策略#########

echo.

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "MinimumPasswordAge"') do echo 密码最短使用期限: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "MaximumPasswordAge"') do (echo 密码最长使用期限: %%i

goto pc)

:pc

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "MinimumPasswordLength"') do echo 密码长度最小值: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "PasswordComplexity"') do echo 密码必需符合复杂性要求: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "PasswordHistorySize"') do echo 强制密码历史: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "ClearTextPassword"') do echo 用可还原的加密来储存密码: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "RequireLogonToChangePassword"') do echo 下次登陆必需更改密码: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "ForceLogoffWhenHourExpire"') do echo 强制密码过期: %%i

echo.

echo.

echo #######帐户锁定策略#######

echo.

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "LockoutBadCount"') do echo 帐户锁定阀值: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "ResetLockoutCount"') do echo 帐户锁定时间: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "LockoutDuration"') do echo 重置账户锁定计数器: %%i

echo.

echo.

echo #######net accounts#######

echo.

net accounts

echo.

echo.

echo #########审核策略#########

echo.

echo 注:参数0未审核;参数1成功;参数2失败;参数3成功、失败

echo.

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditPolicyChange"') do echo 审核策略更改: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditLogonEvents"') do echo 审核登录事件: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditObjectAccess"') do echo 审核对象访问: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditProcessTracking"') do echo 审核进程跟踪: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditDSAccess"') do echo 审核目录服务访问: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditPrivilegeUse"') do echo 审核特权使用: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditSystemEvents"') do echo 审核系统事件: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditLogonEvents"') do echo 审核帐户登录事件: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "AuditAccountManage"') do echo 审核帐户管理: %%i

echo.

echo.

echo #########安全选项#########

echo.

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "NewAdministratorName"') do echo 帐户:重命名系统管理员帐户: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "EnableAdminAccount"') do echo 帐户:管理员帐户状态: %%i

for /f "delims=" %%i in ('type secedit.inf^|findstr /i "EnableGuestAccount"') do echo 帐户:来宾帐户状态: %%i #0 已禁用;1已启用

for /f "tokens=8 delims=\" %%i in ('type secedit.inf^|findstr /i "DontDisplayLastUserName"') do echo 交互式登录:登录时不显示用户名: %%i #4,0 没有定义;4,1 已启用

for /f "tokens=7 delims=\" %%i in ('type secedit.inf^|findstr /i "ClearPageFileAtShutdown"') do echo 关机:清除虚拟内存页面文件: %%i #4,0 已禁用;4,1 已启用

echo.

echo.

echo #########检查屏保#########

echo.

echo /*------------------------------------------------------------------------------------*/

echo /*------此处查询ScreenSaveActive、ScreenSaveTimeOut、ScreenSaverIsSecure三个参数------*/

echo /*------ ------*/

echo /*---------------------若仅有ScreenSaveActive,则屏保功能未开启。---------------------*/

echo /*------------------------------------------------------------------------------------*/

echo.

for /f "tokens=3 delims= " %%i in ('reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive^|findstr /i "ScreenSaveActive"') do echo 屏幕保护程序: ScreenSaveActive = %%i #参数1 已开启;参数0 未开启

for /f "tokens=3 delims= " %%i in ('reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut^|findstr /i "ScreenSaveTimeOut"') do echo 屏保时间: ScreenSaveTimeOut = %%i 秒

for /f "tokens=3 delims= " %%i in ('reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure^|findstr /i "ScreenSaverIsSecure"') do echo 在恢复时显示登录屏幕: ScreenSaverIsSecure = %%i #参数1 需口令;参数0 不需口令

echo.

echo.

echo ########远程端口号########

echo.

for /f "tokens=3 delims= " %%i in ('REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber^|findstr /i "PortNumber"') do echo 远程管理端口号: PortNumber = %%i #远程管理端口号,默认0xd3d

echo.

echo.

echo ########已安装软件########

echo.

wmic product get name,version

echo.

echo.

echo #########默认共享#########

echo.

net share

echo.

echo.

echo ########检查防火墙########

echo.

echo ------------------netsh advfirewall show allprofiles------------------

netsh advfirewall show allprofiles

echo.

echo.

echo #########检查服务#########

echo.

net start

echo.

echo.

echo #########检查端口#########

echo.

netstat -ano

echo.

echo.

echo ##########检查IP##########

echo.

ipconfig

echo.

echo.

echo #########文件权限#########

echo.

cacls c:\

cacls c:\windows\system32\cmd.exe

cacls C:\Progra*

cacls c:\windows\system32

cacls C:\Windows\system32\config

cacls c:\windows\SysWOW64

cacls C:\Windows\SysWOW64\config

echo.

echo.

echo #########查看进程#########

echo.

tasklist

echo.

echo.

echo #########硬盘使用#########

echo.

WMIC LOGICALDISK WHERE MEDIATYPE='12' GET DESCRIPTION,DEVICEID,FILESYSTEM,SIZE,FREESPACE

echo.

echo.

echo #########硬盘配额#########

echo.

fsutil quota query c:

echo.

echo.

echo #########查注册表#########

echo.

reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Crashcontrol" |find /i "AutoReboot" 2>1

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" |find /i "NoDriveTypeAutoRun" 2>1

REG query HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\Application /v MaxSize 2>1

REG query HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\System /v MaxSize 2>1

REG query HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\EventLog\Security /v maxsize 2>1

reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v dontdisplaylastusername 2>1

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v ClearPageFileAtShutdown 2>1

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /v displayname /s 2>1

reg query HKLM\SYSTEM\CurrentControlSet\Control\LSA /v RestrictAnonymousSAM 2>1

reg query HKLM\SYSTEM\CurrentControlSet\Control\LSA /v RestrictAnonymous 2>1

reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile /v EnableFirewall 2>1

reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules /v RemoteDesktop-In-TCP ^|find /i "true" 2>1

reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules /v RemoteDesktop-In-TCP ^|find /i "true" 2>1

REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber 2>1

reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure 2>1

reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut 2>1

REG query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /s 2>1

REG query HKEY_local_machine\Software\Microsoft\Windows\CurrentVersion\Run /s 2>1

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /s 2>1

reg query HKEY_current_user\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer /s 2>1

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" |find /i "AutoAdminLogon" 2>1

reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" |find /i "SynAttackProtect" 2>1

reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" |find /i "EnableDeadGWDetect" 2>1

reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" |find /i "KeepAliveTime" 2>1

reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" |find /i "NoNameReleaseOnDemand" 2>1

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" |find /i "PortNumber" 2>1

reg query "HKLM\SYSTEM\CurrentContro1Set\Control\Terminal Server\WinStations\RDP-Tcp" 2>1 |find /i "PortNumber"

reg query "HKLM\System\CurrentControlSet\Services\Tcpip\Parameters" 2>1 |find /i "DefaultTTL"

echo.

echo.

echo ##########组策略##########

echo.

type secedit.inf

rem /*------删除临时文件------*/

del 1

del secedit.inf

echo.

echo.

echo.

echo #########检查结束#########

exit

pause