Windows应急响应
一、查看系统是否存在多余的特权、隐藏账户
lusrmgr.msc
二、注册表排查影子账户
regedit进入注册表,找到路径HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\User,排查可疑账户。
三、检查系统自启动文件夹
1.检查系统自启动文件夹
shell:startup 直接跳转自启动文件夹
2.任务管理器-启动
四、进程注入排查
进程注入通常不会被杀毒软件发现,此处可以用火绒剑、TCPview、Process 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 ano或tcpview查看)
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
|