前言
本项目旨在为应急响应提供全方位辅助,以便快速解决问题。结合自身经验和网络资料,形成检查清单,期待大家提供更多技巧,共同完善本项目。愿大家在应急之路一帆风顺。
图片皆来源于网络,如有侵权请联系删除。
一、应急响应综合
应急响应类型
-
Web入侵
- 挂马、网页篡改(如博彩和黑帽SEO)、植入Webshell、黑链、暗链等
-
主机入侵
- 病毒木马、勒索软件、远控后门、系统异常、RDP爆破、SSH爆破、主机漏洞、数据库入侵等
-
网络攻击
- DDoS攻击、DNS劫持、ARP欺骗等
-
路由器/交换机异常
- 内网病毒、配置错误等
初步信息收集
-
客户属性
- 如名称、区域、领域等
-
入侵范围
- 如主机数量、网段等
-
入侵现象
- 如CPU过高、勒索界面、异常网络链接、安全设备告警等
-
客户需求
- 是否要求溯源、是否要求协助修复等
整体分析流程
相关工具/资源
theLSA/hack-er-tools: emergency response toolkit (github.com)
可疑域名后缀
- .ru:俄罗斯,盛产黑客。
- .ws:东萨摩亚,易申请,难追踪注册者。
- .cc:科科斯群岛,易申请,难追踪注册者。
- .pw:帕劳,易申请,难追踪注册者。
- .bz:伯利兹,易申请,难追踪注册者。
- .su:苏联,虽已解体,但仍与黑产有关。
- .bw:伯兹瓦纳,易申请,难追踪注册者。
- .gw:几内亚比绍,易申请,难追踪注册者。
- .ms:蒙塞拉特岛,易申请,难追踪注册者。
- .mz:莫桑比克,易申请,难追踪注册者。
这些域名后缀通常被用于注册可疑的域名,因其易于获取且难以追踪注册者,可能被黑客或不法分子滥用。
常见动态域名提供商
杂项
-
收集信息:
- 操作系统版本及补丁情况
- 数据库版本
- 中间件/服务器信息
- 网络拓扑图
- 受害范围与影响程度
- 处置情况及采取的措施
- 提取的日志类型(主机日志、安全设备日志、数据库日志等)
-
确保亲自求证,以眼见为实,以耳听为虚。
相关项目
Bypass007/Emergency-Response-Notes: 应急响应实战笔记,一个安全工程师的自我修养。 (github.com)
二、web应急响应
各中间件/服务器日志默认存放位置
-
IIS:
- Windows:
C:\WINDOWS\system32\LogFiles
- Windows:
-
Apache:
- Linux:
/usr/local/apache/logs/
- Windows:
apache/logs/
- Linux:
-
Tomcat:
- 配置文件:
conf/logging.properties
- 日志文件:
logs/catalina.xx.log
logs/host-manager.xx.log
logs/localhost.xx.log
logs/manager.xx.log
- 主要记录系统启动、关闭日志、管理日志和异常信息。
- 配置文件:
-
WebLogic:
- 日志位置:
domain_name/servers/server_name/logs/
- 日志文件:
server_name.log
:服务器启动和停止日志access.log
:安装在该服务器之上的应用程序的 HTTP 访问日志
- 日志位置:
-
JBoss:
- 日志位置:
LOG4J配置默认Deploy/conf/
- 示例:
jboss/server/default/conf/jboss-log4j.xml
- 日志位置:
这些信息有助于在应急响应情况下迅速定位和检查关键日志文件。
webshell排查
1)整站打包用WebShell扫描工具扫描
使用专门的WebShell扫描工具,对整个网站进行扫描,以便检测和清除任何潜在的WebShell文件或代码。
相关文章:36-4 PHP 代码审计基础-CSDN博客
2)使用命令行进行关键字搜索
在Linux环境下,通过命令行查找包含特定关键字的PHP文件:
find /var/www/ -name "*.php" -print0 | xargs -0 egrep -H 'assert|phpspy|c99sh|milw0rm|eval|\(gunerpress|\(base64_decoolcode|spider_bc|shell_exec|passthru|\(\$_POST\[|eval \(str_rot13|\.chr\(|\$\{"_P|eval\(\$_R|file_put_contents\(\.\*\$\_|base64_decode'
这条命令会递归搜索 /var/www/
目录下所有的 .php
文件,并查找包含指定关键字的行。
3)特定路径下搜索eval($_POST
在指定目录(例如 /app/website/
)下,搜索包含 eval($_POST
的内容:
grep -i -r 'eval($_POST' /app/website/*
4)递归查找包含eval($_POST
的文件
递归查找指定目录(例如 /app/website/
)下所有文件,查找包含 eval($_POST
的行:
find /app/website/ -type f | xargs grep 'eval($_POST'
这些命令和步骤有助于发现和清除WebShell,其中关键是通过关键字搜索检测到可能的恶意代码。
数据库排查
MySQL 日志
-
错误日志
- 默认开启,文件名格式为
hostname.err
。 - 位置:通常在 MySQL 数据目录,记录数据库错误信息。
- 示例:
hostname.err
- 默认开启,文件名格式为
-
查询日志
- 记录用户的所有操作,一般情况下默认关闭。
- 文件名:
general_log_file
- 常见于潜在的恶意操作(如
getshell
攻击)检测。 - 示例:
general_log_file
-
慢查询日志
- 记录执行时间超过指定时间的查询语句。
- 文件名:
slow_query_log_file
- 有助于检测可能导致性能问题或安全漏洞的慢查询操作。
- 示例:
slow_query_log_file
-
事务日志
- 文件名通常是
ib_logfile0
等。 - 用于事务的持久化和恢复,一般直接操作较少。
- 文件名通常是
-
二进制日志
- 记录修改数据或可能引起数据改变的 MySQL 语句。
- 文件名类似
mysql-bin.000001
,在数据目录中。 - 对于数据库复制和恢复非常重要。
MSSQL 日志
- 错误日志
- 使用
exec xp_readerrorlog
命令读取。 - 位置:Object Explorer -> Management -> SQL Server Logs -> View Logs。
- 示例路径(SQL Server 2008):
R2\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG
- 使用
其他检查点(Misc)
-
异常文件检查
- 检查
mysql\lib\plugin
目录下的异常文件。
- 检查
-
异常存储过程
- 检查
select * from mysql.func
查询结果,查看是否存在异常的存储过程。
- 检查
-
MSSQL 存储过程
- 检查
xp_cmdshell
等存储过程的使用情况。
- 检查
-
异常登录
- 监视数据库日志,注意异常的登录尝试。
-
数据库弱口令
- 检查数据库用户的密码强度,避免使用弱口令。
-
MySQL 相关命令
- 使用如下命令查看日志配置和状态:
show global variables like '%log%'; show global variables like '%gene%'; show master status;
- 使用如下命令查看日志配置和状态:
-
其他
- 检查
mysqld
配置文件,通常是my.cnf
,确保日志配置符合安全最佳实践。
- 检查
这些指南将有助于管理员或安全专家检测和应对数据库安全问题,保护数据库免受恶意攻击和意外操作的影响。
三、linux应急响应
文件
- 查看文件列表
ls -alt
- 查找72小时内新增的文件
find / -ctime -72h
- 查看最近10个文件
ls -alt | head -n 10
- 查找24小时内被修改的JSP文件
find ./ -mtime 0 -name "*.jsp"
- 根据特定日期反推变更的文件
ls -al /tmp | grep "Feb 27"
- 查找权限为777的文件(示例为.jsp文件)
find / -type f -name "*.jsp" -perm 0777
- 分析隐藏文件(以.xxx为例)
find / -type f -name ".*.xxx"
- 检查sshd文件是否包含IP信息
strings /usr/bin/.sshd | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
- 查找特定时间内被修改的文件
find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime 0
- 查找24小时内访问过的文件
find /tmp -iname "*" -atime 1 -type f
- 命令目录
/usr/bin /usr/sbin
日志
/var/log/目录下常见日志文件及其功能:
- wtmp:记录用户登录、注销、系统启动和关闭等信息。使用命令
last
查看。 - lastlog:记录每个用户最后一次登录的信息。使用命令
lastlog
查看。 - secure:包含系统认证信息,如 SSH、FTP 登录尝试及其结果。也记录了许多其他应用程序的输入、帐号和密码。使用命令
cat /var/log/secure
或grep "Accepted" /var/log/secure
查看登录成功的记录。 - cron:记录与定时任务相关的日志信息。使用命令
cat /var/log/cron
查看。 - message:系统启动后的信息和错误日志,也包括整体系统信息。使用命令
cat /var/log/message
查看。 - apache2/access.log:Apache HTTP Server 的访问日志,记录所有访问该服务器的请求。使用命令
cat /var/log/apache2/access.log
查看。 - faillog:记录登录系统失败的账户信息。使用命令
cat /var/log/faillog
查看。
- xferlog(通常指vsftpd.log):记录 VSFTPD FTP 服务器的文件传输日志。使用命令
cat /var/log/xferlog
查看。 - 查看登录成功的IP地址的示例命令:
# 这个命令我执行,没有回显
grep 'Accepted' /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
# 建议换这个
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'
- 查看登录失败的IP地址的示例命令:
grep 'Failed' /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
- 监控日志文件变化的命令:
tail -n 400 -f demo.log
其他命令示例:
查找包含ERROR的行数:
grep -c 'ERROR' demo.log
查看爆破尝试次数最多的IP:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
这些命令和日志文件可以帮助系统管理员监控和分析系统的安全性和运行状态。
用户
-
last: 显示用户登录历史记录。
-
/etc/shadow: 存储加密的用户密码以及相关设置。
-
uptime: 显示系统运行时间和当前用户数。
-
/etc/sudoers: 记录授权使用sudo命令的用户列表和权限。
-
/etc/passwd: 包含系统用户的基本信息,如用户名、UID等。
-
查看UID为0的帐号:
awk -F: '$3 == 0 {print $1}' /etc/passwd
-
查看能够登录的帐号:
grep -E "/bin/bash$" /etc/passwd | cut -d: -f1
-
awk '/$1|$6/{print $1}' /etc/shadow: 查看/etc/shadow文件中的用户名和其它相关信息。
-
lastlog: 显示系统中所有用户最近一次登录的信息。
-
lastb: 显示用户的错误登录列表。
-
more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)": 查看sudo配置文件中具有ALL=(ALL)权限的用户列表,排除注释和空行。
-
who: 查询utmp文件并报告当前登录的每个用户。
-
w: 查询utmp文件并显示当前系统中每个用户及其所运行的进程信息。
-
users: 打印当前登录的用户,每个用户名对应一个登录会话。
端口
netstat -anpt
自启动
-
~/.bashrc: 用户的bash shell启动时执行的脚本文件,对单个用户有效。
-
/etc/rc.local: 系统启动时自动运行的脚本文件,已过时,不建议使用。
-
/etc/init.d: 存放系统服务启动脚本的目录,用于管理系统级别的启动和关闭。
-
chkconfig: 用于管理系统服务的命令行工具。
-
chkconfig --list | grep "3:on|5:on": 查看在运行级别3和5下开启的服务列表。
-
/etc/init.d/rc.local: rc.local文件在/etc/init.d/目录下的符号链接,曾用于启动脚本。
-
/etc/rc.local: 同样是一个过时的系统启动脚本文件,通常在某些旧版Linux发行版中仍然存在。
-
/etc/init.d/ 开机启动项: 指所有在系统启动时自动执行的服务和脚本,位于/etc/init.d/目录下。
-
/etc/cron*: 定时任务相关的目录和文件,用于执行定期执行的作业任务。
这些是管理和配置Linux系统自启动和定时任务的主要文件和命令。
计划任务
-
crontab -l: 查看当前用户的cron任务列表。
-
crontab /etc/cron*: 编辑或查看系统中的cron任务,通常用于管理全局cron任务。
-
crontab -u root -l: 查看root用户的cron任务列表。
-
cat /etc/crontab: 显示系统范围的cron任务配置文件内容。
-
ls /etc/cron.*: 列出cron任务相关的目录和文件。
-
/var/spool/cron/*: 包含每个用户的cron作业文件。
-
/etc/crontab: 系统范围的cron任务配置文件。
-
/etc/cron.d/*: 包含特定应用程序的cron任务文件。
-
/etc/cron.daily/*: 每天执行的cron任务脚本。
-
/etc/cron.hourly/*: 每小时执行的cron任务脚本。
-
/etc/cron.monthly/*: 每月执行的cron任务脚本。
-
/etc/cron.weekly/*: 每周执行的cron任务脚本。
-
/etc/anacrontab: anacron系统的配置文件,用于处理延迟执行任务。
-
/var/spool/anacron/*: anacron的任务执行目录。
-
/var/log/cron*: cron任务的日志文件。
这些是管理和配置Linux系统中计划任务的主要目录、文件和命令。
杂项
-
stat: 显示文件或文件系统的详细信息,包括文件权限、所有者、大小、修改时间等。
-
echo $PATH: 显示当前用户的环境变量PATH,列出可执行文件的搜索路径。
-
./rpm -Va > rpm.log: 检查系统安装的软件包中文件的完整性,将结果输出到rpm.log文件。
-
kill -9: 强制终止进程,使用SIGKILL信号,通常作为最后手段使用。
-
chattr -i: 设置文件或目录为非不可修改状态。
-
rm: 删除文件或目录。
-
setfacl: 设置文件访问控制列表(ACL)。
-
getfacl: 获取文件的访问控制列表(ACL)。
-
lsattr: 显示文件或目录的扩展属性。
-
ssh: 远程登录和执行命令的工具。
-
chmod: 修改文件或目录的权限。
-
find / -perm -004000 -type f: 查找具有设置了设置用户ID (setuid) 和设置组ID (setgid) 标志的文件。
-
chattr +i: 设置文件或目录为不可修改(immutable)。
-
chmod 000: 去除文件或目录的所有执行权限。
-
echo $LD_PRELOAD: 查看当前设置的预加载库路径。
SSH 后门快速判断步骤:
-
检查SSH版本:
ssh -V
-
查看sshd文件的详细信息:
stat /usr/sbin/sshd
-
使用strings命令检查sshd文件是否包含可能的后门信息:
strings /usr/sbin/sshd | egrep '[1-9]{1,3}.[1-9]{1,3}.'
-
监控sshd进程的文件读写操作以发现可疑行为:
ps axu | grep sshd | grep -v grep strace -o aa -ff -p <sshd_pid> grep open aa* | grep -v -e No -e null -e denied | grep WR
这些命令和步骤涵盖了在系统管理和安全审计中常见的操作和检查点。
四、windows应急响应
图片来源:Windows应急响应常识 - 0x4D75 - 博客园 (cnblogs.com)
文件
-
最近使用的文件和下载文件:
C:\Documents and Settings\Administrator\Recent
C:\Documents and Settings\Default User\Recent
%UserProfile%\Recent
这些路径包含了用户最近使用的文件和浏览器下载的文件。可以根据日期排序来查找最近活动的文件。
-
下载目录:
- 通常是浏览器默认下载文件的存储位置,可在浏览器设置中查找。
-
回收站文件:
- 查看回收站中删除的文件,可能包含有价值的信息或者删除记录。
-
程序临时文件:
- 可能存储在系统的临时文件夹中,如
C:\Windows\Temp\
或%Temp%
目录下。
- 可能存储在系统的临时文件夹中,如
-
历史文件记录:
- 操作系统和应用程序可能会记录文件打开、保存和编辑的历史记录,需要根据具体应用程序查找。
-
应用程序打开历史:
- 不同的应用程序可能会有记录用户操作的功能,例如文档编辑器或者特定工具软件。
-
搜索历史:
- 操作系统和应用程序通常会记录用户的搜索历史,可以在相关设置中查找或者通过日志文件查看。
-
快捷方式(LNK):
- 可能包含文件的访问路径和使用记录,可以在文件资源管理器中查看属性。
-
临时目录:
- 可能存储在系统临时文件夹或者用户临时文件夹中,如
C:\Windows\Temp\
或%Temp%
目录。
- 可能存储在系统临时文件夹或者用户临时文件夹中,如
-
操作系统版本相关的路径:
- 在不同版本的Windows操作系统中,用户文件和临时文件存储的路径可能有所不同,需要根据具体操作系统版本调整路径。
-
开始-运行,输入%UserProfile%\Recent:
- 这是一个快捷方式,可以直接打开当前用户的最近文件夹。
根据这些信息,你可以通过查找这些路径和设置来分析最近的文件活动、下载记录以及可能的异常文件或活动。
日志
1. 服务器日志
- FTP连接日志和HTTPD事务日志:
- 存放路径:%systemroot%\system32\LogFiles\
- IIS日志格式:默认使用W3C扩展格式。
2. 操作系统日志
- 登录成功的所有事件:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM c:\Security.evtx WHERE EventID=4624"
- 指定登录时间范围的事件:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM c:\Security.evtx WHERE TimeGenerated>'2018-06-19 23:32:11' AND TimeGenerated<'2018-06-20 23:34:00' AND EventID=4624"
- 提取登录成功的用户名和IP:
LogParser.exe -i:EVT -o:DATAGRID "SELECT EXTRACT_TOKEN(Message, 13, ' ') AS EventType, TimeGenerated AS LoginTime, EXTRACT_TOKEN(Strings, 5, '|') AS Username, EXTRACT_TOKEN(Message, 38, ' ') AS LoginIP FROM c:\Security.evtx WHERE EventID=4624"
- 登录失败的所有事件:
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM c:\Security.evtx WHERE EventID=4625"
- 提取登录失败用户名进行聚合统计:
LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message, 13, ' ') AS EventType, EXTRACT_TOKEN(Message, 19, ' ') AS Username, COUNT(EXTRACT_TOKEN(Message, 19, ' ')) AS Times, EXTRACT_TOKEN(Message, 39, ' ') AS LoginIP FROM c:\Security.evtx WHERE EventID=4625 GROUP BY Message"
3. 系统历史开关机记录
- 开关机事件记录:
LogParser.exe -i:EVT -o:DATAGRID "SELECT TimeGenerated, EventID, Message FROM c:\System.evtx WHERE EventID=6005 OR EventID=6006"
工具和命令解释
- LogParser.exe:用于从Windows事件日志文件中查询和提取数据的工具。
- EventID:每种事件类型在Windows事件日志中都有一个唯一的EventID,用于准确筛选特定类型的事件。
- EXTRACT_TOKEN:在LogParser查询中用于从事件消息中提取特定信息字段的函数。
这些命令和路径可以帮助您有效地查找和分析服务器和操作系统日志中的特定事件类型和相关信息。
工具安装:日志分析工具Log Parser详细安装-CSDN博客
工具使用:日志分析工具logParser的使用-腾讯云开发者社区-腾讯云 (tencent.com)
账户
新增用户
- 在Windows上,使用命令
net user <username> <password> /add
添加新用户,重点检查新增的账号。
弱口令
-
弱口令是指容易被破解的密码,应该使用复杂、长且包含多种字符类型的密码来增强安全性。
管理员对应键值
-
管理员用户在注册表中的路径:
HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users
。
查看账户变化
-
使用
lusrmgr.msc
可以管理本地用户和组,并查看账户变化历史。
列出当前登录账户
-
net user
命令可以列出当前登录的用户账户。
列出当前系统所有账户
-
使用
wmic UserAccount get
命令可以列出当前系统中所有的用户账户。
查看管理员组成员
-
net localgroup administrators
命令用于查看本地管理员组的成员。
隐藏/克隆账户
-
克隆账户通常会涉及到修改注册表中的特定键值。一个示例键值是
HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users
,用于管理账户。
D盾查杀
-
D盾是一种安全工具,用于检测和清除系统中的恶意软件和安全漏洞。
日志 - 登录时间/用户名
- 您可以通过操作系统的事件日志,如Security事件日志,来查看登录时间和相关的用户名信息。
进程
查看进程及其服务信息
tasklist /svc | findstr pid
:列出所有进程及其服务,并查找包含 "pid" 的行。netstat -ano
:显示网络状态和当前正在运行的进程及其 PID。tasklist /svc
:列出所有正在运行的进程及其服务。findstr
:在输出中查找指定的字符串模式。
使用WMIC获取进程和服务信息
wmic process | find "ProcessId" > proc.csv
:通过WMIC获取进程列表,并将包含 "ProcessId" 的行保存到 proc.csv 文件中。Get-WmiObject -Class Win32_Process
:使用PowerShell获取系统中所有进程的详细信息。Get-WmiObject -Query "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 | Format-List -Property PSComputerName, Name, ExitCode, ProcessID, StartMode, State, Status
:- 查询指定计算机(Server01 和 Server02)上名为 "WinRM" 的服务的详细信息,并以列表形式显示计算机名、服务名、退出代码、进程ID、启动模式、状态和状态。
进程的安全性和性能监控
- 没有签名验证信息的进程
- 没有描述信息的进程
- 进程的属主
- 进程的路径是否合法
- CPU或内存资源占用长时间过高的进程
其他实用工具和命令
msinfo32
:系统信息工具,可用于查看系统硬件和软件配置。wmic process get caption,commandline /value
:获取进程名称和命令行参数。wmic process where caption="svchost.exe" get caption,commandline /value
:获取指定进程名称为 "svchost.exe" 的进程的名称和命令行参数。wmic service get name,pathname,processid,startname,status,state /value
:获取服务的名称、路径、进程ID、启动账户、状态和状态。wmic process get CreationDate,name,processid,commandline,ExecutablePath /value
:获取进程的创建日期、名称、进程ID、命令行和可执行路径。wmic process get name,processid,executablepath | findstr "7766"
:查找进程名为 "7766" 的进程的名称、进程ID和可执行路径。
端口
netstat -ano
- CLOSED:无连接活动或正在进行。
- LISTEN:监听状态,服务端正在等待客户端的连接请求。
- SYN_RECV:服务端收到了一个连接请求(SYN),正在等待确认。
- SYN_SENT:客户端发送了一个连接请求(SYN),正在等待服务端的确认。
- ESTABLISHED:连接已经建立,数据可以传输。
- FIN_WAIT1:请求关闭连接,正在等待对方发送关闭请求。
- FIN_WAIT2:连接正在关闭,等待对方的关闭请求确认。
- TIME_WAIT:连接已经关闭,等待足够的时间以确保远程端接收到连接关闭的消息。
- CLOSE_WAIT:远程端已经关闭连接,本地端正在等待关闭连接。
- LAST_ACK:本地端已经发送了关闭连接请求,等待远程端的确认。
- CLOSING:双方同时尝试关闭连接,但仍在进行中。
- UNKNOWN:无法识别的端口状态,可能由于系统或网络问题。
自启动
注册表路径:
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run:系统启动时所有用户都会运行的程序。
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce:系统启动时运行一次的程序。
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run:通过组策略配置的自启动项。
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run:当前用户登录时运行的程序。
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce:当前用户登录时运行一次的程序。
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx:扩展的RunOnce配置。
文件系统路径:
- (ProfilePath)\Start Menu\Programs\Startup:用户个人设置中启动菜单中的程序。
工具和命令:
-
msconfig:系统配置实用程序,用于管理启动项和服务。
- 使用msconfig可以在“启动”选项卡中查看和管理系统启动时加载的程序。
-
gpedit.msc:组策略编辑器,可用于管理通过组策略设置的自启动项。
其他位置:
- 开始 > 所有程序 > 启动:包含当前用户登录时自动启动的程序的文件夹路径。
计划任务
文件系统路径:
- **C:\Windows\System32\Tasks**:包含系统级别的计划任务。
- **C:\Windows\SysWOW64\Tasks**:64位Windows系统上用于32位应用程序的任务计划路径。
- **C:\Windows\tasks**:另一个可能包含计划任务的路径,但通常不是主要的系统任务计划存储位置。
命令和工具:
-
schtasks:命令行工具,用于创建、删除、查询、更改计划任务。
- 可以通过命令行来管理计划任务,如创建、修改和删除任务等操作。
-
taskschd.msc:任务计划程序管理器,用于通过图形用户界面管理计划任务。
- 可以直观地查看和管理计划任务,包括创建、编辑和删除任务等。
-
at:命令行工具,用于一次性安排计划任务执行某项工作。
控制面板路径:
- 开始 > 设置 > 控制面板 > 任务计划:在控制面板中可以访问和管理计划任务。
- 提供了一个图形化界面来管理和配置计划任务,适合不熟悉命令行的用户使用。
注册表
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
- 用户配置文件列表,包括用户的注册表配置信息。
-
*HKLM\SAM\Domains\Account*
- SAM数据库中的账户信息,包括本地用户账户。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\system
- 系统策略设置,可能包含系统安全策略配置。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Active Setup\Installed Components
- Active Setup组件安装信息,用于初始化用户环境。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths
- 应用程序路径设置,包含注册的应用程序路径信息。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
- Windows登录过程配置,如自动登录设置等。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Security Center\Svc
- 安全中心服务相关配置,用于检查系统安全状态。
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths
- 用户最近输入的文件路径记录,可能包含用户活动追踪信息。
-
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
- 用户最近运行的程序记录,用于查看用户活动。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\StartMenu
- 开始菜单配置,可能包含启动项设置。
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
- 会话管理器配置,用于管理系统会话和进程。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders
- 用户文件夹路径设置,用于确定用户文件夹位置。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ShellExtensions\Approved
- 扩展名注册表项,用于注册Shell扩展和插件。
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\AppCertDlls
- 应用程序认证DLL列表,用于加载应用程序认证DLL。
-
HKEY_LOCAL_MACHINE\Software\Classes\exefile\shell\open\command
- 可执行文件的打开命令配置,用于检查可执行文件的执行路径。
-
HKEY_LOCAL_MACHINE\BCD00000000
- 启动配置数据的注册表分支,用于管理系统启动配置。
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
- 本地安全权限子系统(LSA)配置,用于管理安全策略和权限。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects
- 浏览器辅助对象的注册表设置,用于管理浏览器插件和辅助工具。
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
- 64位Windows系统上的浏览器辅助对象设置。
-
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions
- Internet Explorer浏览器扩展设置,用于管理IE浏览器的扩展功能。
-
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions
- Internet Explorer扩展的注册表设置,用于管理IE浏览器的扩展功能。
-
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Internet Explorer\Extensions
- 64位Windows系统上的Internet Explorer扩展设置。
-
*HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run*
- 系统启动时自动运行的程序配置。
-
HKEY_CLASSES_ROOT\exefile\shell\open\command
- 可执行文件的打开命令设置,用于确定可执行文件的执行路径。
服务
运行 对话框中输入
services.msc
杂项
-
查看指定时间范围包括上传文件夹的访问请求:
findstr /s /m /I “UploadFiles” *.log
关键信息是 x.js:
findstr /s /m /I “x.js” *.asp
-
根据关键字搜索 shell.asp 文件:
for /r d:\ %i in (shell.asp) do @echo %i
-
显示系统环境变量:
set
-
显示系统信息:
systeminfo
-
匹配 IP 地址的正则表达式:
((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))).){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
-
建议安装的安全软件:
- 360
- 小A
- 瑞星
- 腾讯管家
- 金山
- 火绒
五、网络层应急响应
DDOS 攻击类型判断与特征
SYN 类攻击判断:
- 服务器 CPU 占用率异常高。
- 大量 SYN_RECEIVED 状态的网络连接。
- 网络恢复后,服务器负载瞬间增高,断开后负载迅速降低。
UDP 类攻击判断:
- 服务器 CPU 占用率异常高。
- 网卡每秒接收大量数据包。
- 网络 TCP 状态正常。
CC 类攻击判断:
- 服务器 CPU 占用率异常高。
- Web 服务器出现 Service Unavailable 提示。
- 大量 ESTABLISHED 状态的网络连接,单个 IP 可达数十至上百个连接。
- 用户无法正常访问网站,或访问过程非常缓慢。软重启后短暂恢复正常,几分钟后再次不可访问。
常见攻击类型与防御建议:
- ICMP Flood: 大流量攻击,可通过防火墙屏蔽 ICMP 包。
- SYN Flood: 使用 SYN Cookies、SYN Cache 等防御机制,调整 TCP 半开连接队列和重试策略。
- UDP Flood: 增加带宽、使用 CDN、关闭不必要的 UDP 服务等防御。
- CC 攻击: 使用 WAF、限制单 IP 连接数、优化服务器性能等防御策略。
- 慢速连接攻击: 使用请求速率限制、连接超时机制等防御手段。
- Slowloris 攻击: 优化服务器并发连接设置,使用反代服务缓解攻击。
- DNS 放大攻击: 关闭递归查询、限制 DNS 请求频率等防御手段。
- NTP Flood、SSDP Flood 等: 封禁不必要的服务、使用近源清洗等方式缓解攻击效果。
通用防御建议:
- 使用 DDoS 防火墙、流量清洗服务、CDN 加速等硬防护措施。
- 优化网络架构、采用负载均衡技术分流流量。
- 设置防火墙规则、限制单 IP 请求频率,保护关键网络设备免受攻击。
详细参考资料可查阅:浅谈 DDoS 攻击与防御 - 奇妙的 Linux 世界
2024/8/6 20:35:57
ARP欺骗攻击
定义和特征: ARP攻击针对以太网地址解析协议(ARP),通过欺骗局域网内设备,使其误认为攻击者控制的MAC地址是合法网关的MAC地址,从而导致网络通信被篡改或中断。
- 攻击方式: 欺骗局域网内设备,使其将攻击者的MAC地址错误地映射为合法网关的MAC地址。
- 特征: 网络通信异常,可能出现断流或数据包丢失情况。
检测方法:
- 观察局域网中大量的ARP通信。
- 使用命令
arp -a
查看本地ARP缓存,检查是否存在异常条目。
防御措施:
- 配置防火墙,限制ARP请求和响应。
- 实施MAC地址绑定,限制每个端口只能绑定指定的MAC地址。
DNS劫持攻击
定义和特征: DNS劫持是指攻击者控制了DNS服务器或在数据包传输过程中篡改DNS响应,将用户意图访问的域名解析到恶意或非授权的IP地址。
- 攻击方式: 攻击者篡改DNS响应,将合法域名解析为非法IP地址。
- 特征: 用户访问合法网站时跳转到不明网站,或看到与预期不符的内容。
防御措施:
- 使用可信赖的DNS服务器,如Google DNS、OpenDNS等。
- 采用HTTPS协议,通过加密通信确保数据完整性。
- 向相关部门(如工信部、运营商)投诉恶意DNS服务器或劫持行为。
HTTP劫持(内容劫持)
定义和特征: HTTP劫持指攻击者在用户与网站交互过程中,篡改或注入未经授权的内容,例如弹出广告窗口或修改网页内容。
- 攻击方式: 插入恶意JavaScript或DOM操作,改变网页显示或行为。
- 特征: 用户在正常网站浏览过程中看到未预期的内容或行为。
防御措施:
- 使用HTTPS协议,通过加密通信保护数据完整性。
- 向工信部或运营商报告恶意HTTP劫持行为,协助封锁攻击源。
这些防御措施能够有效减少或防止对网络和用户造成的各种安全威胁。
参考资料
- https://www.hi-linux.com/posts/50873.html
- https://www.cnblogs.com/zdz8207/p/10729294.html
六、交换机/路由器应急响应
交换机负载过高(CPU 100%)
常见原因:
- 线路老化:导致信号衰减、不稳定,增加交换机处理负担。
- 端口接错:如千兆/百兆速率不匹配、存在环路,造成数据包循环。
- 内网病毒蠕虫:大量恶意流量或扫描活动导致交换机处理过载。
- 业务变动:例如新业务上线或流量突增,超出交换机处理能力。
- PBR(策略路由):复杂的路由策略导致CPU频繁处理路由决策。
- 广播风暴:异常广播包导致交换机广播处理负担剧增。
现象:
- 丢包:因交换机处理能力不足而导致数据包丢失。
- 延时较大:响应时间增加,影响网络通信效率。
交换机排查常用命令
- show process cpu:显示CPU使用率及详细进程信息。
- show platform health:查看交换机整体健康状态。
- show interface | include protocol | rate | broadcasts:检查各接口的协议、流量速率和广播包数量。
- show ip traffic:显示IP流量统计信息。
- monitor session 1 source interface cpu:将CPU流量镜像到监视会话。
- monitor session 1 destination interface <具体接口>:指定监视流量的目的接口。
- show platform cpu packet statistics:显示CPU处理的数据包统计信息。
路由器常用命令
- enable:进入特权模式。
- configure terminal:进入全局配置模式。
- line console 0:进入控制台口。
- line vty 0 4:进入虚拟终端。
- interface s0/0:进入Serial接口配置模式。
- no shutdown:激活当前接口。
- ip address:设置IP地址。
- interface f0/0.1:进入子接口配置模式。
- copy running-config startup-config:保存当前配置到启动配置。
- show version:显示路由器版本信息。
- show running-config:显示当前路由器完整配置。
- show run interface serial 0:显示Serial 0接口的配置。
- show interface serial 0:显示Serial 0接口的状态信息。
- show controllers serial 0:显示Serial 0接口的控制器信息。
- show cdp neighbor:显示CDP邻居设备信息。
- show cdp entry *:显示指定CDP邻居的详细信息。
- show cdp interface s0:显示Serial 0接口的CDP邻居信息。
- show ip route:显示路由表。
- show run:显示当前配置。
这些命令可以帮助管理员诊断和解决交换机和路由器遇到的各种问题,确保网络稳定和安全运行。
杂项
在Cisco Cat4k 系列交换机上,有两个关键的管理进程:Cat4k Mgmt HiPri 和 Cat4k Mgmt LoPri。它们的作用是在交换机处理高负荷时有效管理和分配 CPU 时间。
-
Cat4k Mgmt HiPri:
- 作用:处理高优先级的进程。
- 原理:当某个进程占用 CPU 时间超过预定的 CPU 分配时间时,Cat4k Mgmt HiPri 进程会接管这个进程,确保高优先级任务能够及时得到处理。这通常发生在需要即时响应或处理紧急任务的情况下。
-
Cat4k Mgmt LoPri:
- 作用:处理低优先级的进程。
- 原理:当在Cat4k平台上的某个进程占用 CPU 超出了应分配的 CPU 时间时,Cat4k Mgmt LoPri 进程会接管这个进程。这样可以确保其他更重要的任务或进程也能得到足够的 CPU 时间,防止系统资源被某个单独的进程过度消耗。
总结:Cat4k Mgmt HiPri 和 Cat4k Mgmt LoPri 进程的存在和工作原理,有效地管理了交换机中不同优先级进程的 CPU 使用,确保高优先级任务能够优先得到处理,同时避免低优先级进程占用过多 CPU 资源影响整体性能。
相关资料
- https://www.cisco.com/c/zh_cn/support/docs/switches/catalyst-3750-series-switches/68461-high-cpu-utilization-cat3750.html
- https://blog.51cto.com/2825930/2286871
- https://blog.51cto.com/2825930/2286867
- www.voidcn.com/article/p-ynqudrjf-wr.html
- blog.sina.com.cn/s/blog_4ca83f8301015357.html