(白大大的应急响应笔记!!!)
应急响应
基本概念
网络安全应急响应是指针对已经发生或可能发生的安全事件进行监控、分析、协调、处理、保护资产安全。网络安全应急响应主要是为了人们对网络安全有所认识、有所准备,以便在遇到突发网络安全事件时做到有序应对、妥善处理.
在发生确切的网络安全事件时,应急响应实施人员应及时采取行动,限制事件扩散和影响的范围,防范潜在的损失与破坏。实施人员应协助用户检查所有受影响的系统,在准确判断安全事件原因的基础上,提出基于安全事件的整体解决方案排除系统安全风险,并协助追查事件来源,协助后续处置。
应急响应工作主要包括以下两方面。
第一,未雨绸缪,即在事件发生前先做好准备。例如,开展风险评估,制订安全计划,进行安全意识的培训,以发布安全通告的方法进行预警,以及各种其他防范措施。
第二,亡羊补牢,即在事件发生后采取的响应措施,其目的在于把事件造成的损失降到最小。这些行动措施可能来自人,也可能来自系统。例如,在发现事件后采取紧急措施,进行系统备份、病毒检测、后门检测、清除病毒或后门、隔离、系统恢复、调查与追踪、入侵取证等一系统操作。
以上两方面的工作是相互补充的。
首先,事前的计划和准备可为事件发生后的响应动作提供指导框架,否则,响应动作很可能陷入混乱,毫无章法的响应动作有可能引起更大的损失
其次,事后的响应可能会发现事前计划的不足,从而使我们吸取教训,进一步完善安全计划。因此,这两方面应该形成一种正反馈的机制,逐步强化组织的安全防范体系。
PDCERF(6阶段)方法
PDCERF方法最早于1987年提出,该方法将应急响应流程分成准备阶段、检测阶段、抑制阶段、根除阶段、恢复阶段、总结阶段。根据应急响应总体策略为每个阶段定义适当的目的,明确响应顺序和过程.
但是,PDCERF方法不是安全事件应急响应的唯一方法。在实际应急响应过程中不一定严格存在这6个阶段,也不一定严格按照这6个阶段的顺序进行。但它是目前适用性较强的应急响应通用方法。
准备阶段以预防为主。
准备阶段
主要检测事件是已经发生的还是正在进行的
主要工作涉及识别机构、企业的风险,建立安全政策,建立协作体系和应急制度。按照安全政策配置安全设备和软件,为应急响应与恢复准备主机。依照网络安全措施,进行一些准备工作,例如,扫描、风险分析、打补丁等。如有条件且得到许可,可建立监控设施,建立数据汇总分析体系,制定能够实现应急响应目标的策略和规程,建立信息沟通渠道,建立能够集合起来处理突发事件的体系
检测阶段
主要检测事件是已经发生的还是正在进行中的,以及事件产生的原因确定事件性质和影响的严重程度,以及预计采用什么样的专用资源来修复。选择检测工具,分析异常现象,提高系统或网络行为的监控级别,估计安全事件的范围。通过汇总,查看是否发生了全网的大规模事件,从而确定应急等级及其对应的
一般典型的事故现象包括:
(1)账号被盗用;
(2)骚扰性的垃圾信息;
(3)业务服务功能失效;
(4)业务内容被明显篡改;
(5)系统崩溃、资源不足
抑制阶段
主要任务是限制攻击/破坏波及的范围,同时也是在降低潜在的损失所有的抑制活动都是建立在能正确检测事件的基础上的,抑制活动必须结合检测阶段发现的安全事件的现象、性质、范围等属性,制定并实施正确的抑制策略
抑制策略通常包含以下内容:
(1)完全关闭所有系统;
(2)从网络上断开主机或断开部分网络:
(3)修改所有的防火墙和路由器的过滤规则;
(4)封锁或删除被攻击的登录账号;
(5)加强对系统或网络行为的监控:
(6)设置诱饵服务器进一步获取事件信息
(7)关闭受攻击的系统或其他相关系统的部分服务。
根除阶段
根除阶段的主要任务是通过事件分析找出根源并彻底根除,以避免攻击者再次使用相同的手段攻击系统,引发安全事件。并加强宣传,公布危害性和解决办法,呼吁用户解决终端问题。加强监测工作,发现和清理行业与重点部门问题。
恢复阶段
主要任务是把被破坏的信息彻底还原到正常运作状态。确定使系统恢复正常的需求内容和时间表,从可信的备份介质中恢复用户数据打开系统和应用服务,恢复系统网络连接,
一般来说,要想成功地恢复被破坏的系统,需要干净的备份系统,编制并维护系统恢复的操作手册,而且在系统重装后需要对系统进行全面的安全加固。
总结阶段
主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生。基于入侵的严重性和影响,确定是否进行新的风险分析,给系统和网络资产制作一个新的目录清单。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。
总结阶段的工作主要包括以下3方面的内容:
(1)形成事件处理的最终报告:
(2) 检查应急响应过程中存在的问题,重新评估和修改事件响应过程;
(3) 评估应急响应人员相互沟通在事件处理上存在的缺陷,以促进事后进行更有针对性的培训。
应急响应-用户信息排查
在服务器被入侵后,攻击者可能会建立相关账户(有时是隐藏或克隆账户)方便进行远程控制。
攻击者会采用的方法主要有如下几种:
1、直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似)
2、激活一个系统中的默认账户,但这个账户是不经常使用的
3、建立一个隐藏账户(在Windows系统中,一般在账户名称最后加$)
无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。
windows账户排查
1、命令行方法
1)在命令行中输入net user可直接收集用户账户信息
net user
若需查看某个账户的详细信息,可在命令行中输入
net user username
2)查看系统中的用户信息
wmic useraccount get name,SID
2、图形界面方法
1)打开[计算机管理]窗口,单击[本地用户和组]中的[用户] 选项,可查看隐藏账户,名称以$结尾的为隐藏账户。
也可以在命令行中输入
lusrmgr.msc
直接打开图形界面,查看是否有新增/可疑的账户。
2)打开[注册表编辑器]窗口,选择[HKEY_LOCAL_MACHINE]下的[SAM]选项,为为该项添加[使用可从此对象继承的权限项目替换所有子对象的权限项目]权限,使当前用户拥有SAM的读取权限,添加权限完成后按[F5]键,刷新后即可访问子项并查看用户信息,然后继续选择[SAM]–[Domains][Account]–[Users] --[Names] 查看是否有异常的账户。
Linux账户排查
1)查看系统所有用户信息
查看系统所有用户信息可以在命令行中输入
cat /etc/passwd
//各项由冒号隔开,分别表示“用户名”“密码加密”“用户ID”“用户组ID”“注释”“用户主目录”“默认登录shell”。
查询的用户信息中,表示账户状态为可登录最后显示
bin/bash
表示账户状态为不可登录,显示
sbin/nologin
2)分析超级权限账户
在命令行中输入
awk -F: '($3=="0") {print $1}' /etc/passwd
//(该命令会读取 `/etc/passwd` 文件中的账户信息,并将相应行的内容以 `:` 分隔符进行分割,然后判断第三个字段是否为 0,并最终输出该行的第一个字段,即账户名。)
可查询可登录账户UID为0的账户。root是UID为0的可登录账户,如果出现其他为0的账户,就要重点排查。
3)查看可登录的账户
查看可登录的账户在命令行中输入
cat /etc/passwdlgrep /bin/bash
4)查看用户错误的登录信息
查显示用户错误的登录列表,包括错误的登录方法、IP地址、时间等,在命令行中输入
lastb
5)查看所有用户最后的登录信息
查看系统中所有用户最后的登录信息,在命令行中输入
lastlog
6)查看用户最近登录信息
last
可查看用户最近登录信息(数据源为var/log/wtmp、/var/log/btmp、/var/log/utmp)。其中,wtmp存储登录成功的信息btmp存储登录失败的信息、utmp存储当前正在登录的信息。
7)查看当前用户登录系统情况
查看当前用户登录系统情况,在命令行中输入
who
8)查看空口令账户
查看是否存在空口令账户,在命令行中输入
awk -F: '($2==""){print $1}' /etc/shadow
应急响应-计划任务排查
由于很多计算机都会自动加载“任务计划”,“任务计划”也是恶意病毒实现持久化驻留的一种常用手段,因此在应急响应事件排查时需要进行排查。
windows计划任务排查
任务计划是Windows系统的一个预置实现某些操作的功能,利用这个功能还可实现自启动的目的,获取任务计划的方法有以下几种。
1)打开[计算机管理]窗口,选择[系统工具]中[任务计划程序] 中的[任务计划程序库]选项,可以查看任务计划的名称、状态、触发器等详细信息
2)在命令行中输入
schtasks
可获取任务计划的信息,该命令是一个功能更为强大的超级命令行计划工具,它含有[at] (在较旧的系统中才可以用)命令行工具中的所有功能,获取任务计划时要求必须是本地Administrators组的成员
linux计划任务排查
在Linux系统中,任务计划也是维持权限和远程下载恶意软件的一种手段。一般有以下两种方法可以查看任务计划。
分 时 日期 月份 星期*%
0* * /1 *
101 * * *
1)查看当前的任务计划,在命令行中输入
crontab-l
也可以指定用户进行查看,如输入命令
crontab-u root-l
可查看root用户的任务计划,以确是否有后门木马程序启动相关信息
2)查看etc目录下的任务计划文件。一般在Linux
系统中的任务计划文件是以cron开头的,可以利用正则表达式的筛选出etc目录下的所有以cron开头的文件,具体表达式为/etc/cron
应急响应-进程排查
进程 (Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。无论是在Windows系统还是Linux系统中,主机在感染恶意程序后,恶意程序都会启动相应的进程,来完成相关的恶意操作。
windows进程排查
对于Windows系统中的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程) 及程序加载的DLL。对于进程的排查,一般有如下
几种方法。
1)通过[任务管理器]
查看比较直观的方法是通过[任务管理器]查看可疑程序。但是需要在打开[任务管理器] 窗口后,添加[命令行]和[映射路径名称]等进程页列,以方便获取更多进程信息
2)使用[tasklist] 命令进行排查
显示运行在计算机中的所有进程,可查看进程的映像名称、PID、会话名等信息
tasklist
[tasklist] 命令并添加特定参数,还可以查看每个进程提供的服务,如添加svc参数,可以显示每个进程和服务的对应情况
查询进程加载的恶意进程输入
tasklist/m
如果要想查询特定DLL的调用情况,可以使用命令
tasklist/m DLL名称
3)使用[netstat]命令进行排查
可显示网络连接的信息,包括活动的TCP连接路由器和网络接口信息,相关参数如下。
netstat
a:显示所有连接和侦听端口。
b:显示在创建每个连接或侦听端口时涉及的可执行程序。
-n:以数字形式显示地址和端口号。
-0:显示拥有的与每个连接关联的进程ID。
-p proto:显示proto指定的协议的连接。
常见的网络状态说明如下
LISTENING:侦听状态。
ESTABLISHED:建立连接。
CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断。
在排查过程中,一般会使用
netstat -ano l findstr "ESTABLISHED"
命令查看目前的网络连接,定位可疑的ESTABLISHED。
4)使用[wmic]命令进行查询
(1)对进程情况进行查询
wmic process
以csv格式来显示进程的名称、父进程ID、进程ID。
wmic process get name,parentprocessid,processid/format: csv
其他类似命令如下。
wmic process get ExecutablePath,processid/format: csv//命令表示以csv格式来显示进程路径、进程ID信息。
wmic process get name,ExecutablePath,processid,parentprocessid/format: csv | findstr/| "appdata"//命令表示以csv格式来显示进程的名称、进程路径、进程ID、父进程ID信息。
wmic process where processid=[PID] get parentprocessid //命令表示以PID的值作为条件来获取其父进程的PID情况。
wmic process where processid=[PID] get commandline //命令表示以PID的值作为条件来获取其命令行。
wmic process where name="malware.exe" call terminate //命令是指删"malwareexe"恶意程序的进程。
wmic process where processid=[PID] delete//命令是指删除PID为某值的进程
linux进程排查
最基本的ps查看进程 -t:当前终端下运行的进程 -e:查看所有运行的进程 最常用的是:列出所有进程及其完整命令行
ps -aux
查看网络连接命令,可分析可疑端口、可疑IP地址、可疑PID及程序进程。
netstat
根据PID的值,查看其对应的可执行程序。
Is -alt/proc/PID
查看进程所打开的文件。
Isof -p PID
对于挖矿进程的排查,可使用[top] 命令查看相关资源占用率较高的进程,之后进行定位。
top
nmap 命令:该命令是一个常用的端口扫描工具,可以用来扫描指定主机的开放端口。使用
nmap -p 端口号 IP地址
命令可以查看某个特定 IP 地址的端口信息
应急响应-服务排查
服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。服务非常适合在服务器上使用,通常在为了不影响在同一台计算机上工作的其他用户,且需要长时间运行功能时使用。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。
windows服务排查
打开[运行]对话框,输入[services.msc] 命令,可打开[服务]窗口,查看所有的服务项,包括服务的名称、描述、状态等.
linux服务排查
查看所有服务的状态
service --status-all
也可以使用下面这个命令进行查看
systemctl | more
查看服务是否开机自启动
systemctl list-unit-files
应急响应-文件痕迹排查
在应急响应排查的过程中,由于大部分的恶意软件、木马、后门等都会在文件维度上留下痕迹,因此对文件痕迹的排查必不可少。一般,可以从以下几方面对文件痕迹进行排查:
(1)对恶意软件常用的敏感路径进行排查
(2)在确定了应急响应事件的时间点后,对时间点前后的文件进行排查
(3)对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数、文件权限特征等。
windows文件痕迹排查
1.敏感目录
在Windows系统中,恶意软件常会在以下位置驻留。
(1) temp (tmp) 相关目录。有些恶意程序释放子体 (即恶意程序运行时投放出的文件)一般会在程序中写好投放的路径,由于不同系统版本的路径有所差别,但是2文件的路径相对统一,因此在程序中写好的路径一般是临时目录。对敏感目录进行的检查,一般是查看临时目录下是否有异常文件。
(2)对于一些人工入侵的应急响应事件,有时入侵者会下载一些后续攻击的工具Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹。
(3)查看用户Recent文件。Recent文件主要存储了最近运行文件的快捷方式,可通过分析最近运行的文件,排查可疑文件。一般,Recent文件在Windows系统中的存储位置如下:
C:\Documents and Settings\Administrator (系统用户名)\Recent
C:\Documents and Settings \Default User \Recent.
1.范围排查
时间点查找应急响应事件发生后,需要先确认事件发生的时间点,然后排查时间点前、后的文件变动情况,从而缩小排查的范围。
(1)可列出攻击日期内新增的文件,从而发现相关的恶意软件。在Windows系统中,可以在命令行中输入[forfiles] 命令,查找相应文件
例如: 对2020/2/12后的exe新建文件进行搜索
forfiles /m *.exe /d +2020/2/12 /s /p c:/c"cmd /c echo @path @fdate@ftime"
(2) 对文件的创建时间、修改时间、访问时间进行排查。对于人工入侵的应急响应事件,有时攻击者会为了掩饰其入侵行为,对文档的相应时间进行修改,以规避一些排查策略。例如,攻击者可能通过“菜刀类”工具改变修改时间。因此,如果文件的相关时间存在明显的逻辑问题,就需要重点排查了,极可能是恶意文件。
Linux文件痕迹排查
1)敏感目录
Linux系统常见的敏感目录如下
(1)/tmp目录和命令目录**/usr/bin/usr/sbin**等经常作为恶意软件下载目录及相关文建被替换的目录
(2)此外,~/.ssh及**/etc/ssh**也经常作为一些后门配置的路径,需要重点检查
2)时间点查找
通过列出攻击日期内变动的文件,可发现相关的恶意软件。通过[find] 命令可对某一时间段内增加的文件进行查找。以下为常用的[find] 命令。
find
find: 在指定目录下查找文件。
-mtime-n+n:按文件更改时间来查找文件,-n指n天以内,+n指n天前
atime-n+n:按文件访问时间来查找文件,-n指n天以内,+n指n天前。
-ctime-n+n:按文件创建时间来查找文件,-n指n天以内,+n指n天前。
3)特殊文件Linux
系统中的恶意文件存在特定的设置、特定的关键字信息等。Linux系统中的几种特殊文件类型可以按照以下方法进行排查。
(1)特殊权限文件查找
查找777权限的文件:
find /tmp -perm 777
(2) 对系统命令进行排查。
[ls]和 [ps] 等命令很可能被攻击者恶意替换,所以可以使用
Is-alt/bin
查看命令目录中相关系统命令的修改时间,从而进行排查。
也可以使用
ls-alh/bin
查看相关文件的大小,若明显偏大,则文件很可能被替换。
(3) 排查SUID程序,
即对于一些设置了SUID权限的程序进行排查,可以使用
find / -type f -perm -04000
应急响应-日志分析
windows排查
1)日志概述
在Windows系统中,日志文件包括: 系统日志、安全性日志及应用程序日志对于应急响应工程师来说这三类日志需要熟练掌握,其位置如下。
在Windows 2000 专业版/Windows XP/Windows Server 2003 (注意日志文件的后缀名是evt)系统中:
系统日志的位置为C:WINDOWS\System32\config SysEvent.evt;
安全性日志的位置为C:WINDOWS\System32\config SecEvent.evt;
应用程序日志的位置为C:WINNT System32\config AppEvent.evt。
在Windows Vista/Windows 7/Windows 8/Windows 10/Windows Server 2008及以上版本系统中:
系统日志的位置为%SystemRoot% System32Winevt\LogslSystem.evtx;
安全性日志的位置为%SystemRoot%\System32\Winevt\Logs\Security.evtx;
应用程序日志的位置为%SvstemRoot%\Svstem3Winevt\LogslApplication.evtx。
(1)系统日志。
系统日志主要是指Windows系统中的各个组件在运行中产生的各种事件。这些事件一般可以分为:系统中各种驱动程序在运行中出现的重大问题、操作系统的多种组件在运行中出现的重大问题及应用软件在运行中出现的重大问题等。这些重大问题主要包括重要数据的丢失、错误,以及系统产生的崩溃行为等。
(2) 安全性日志。
安全性日志与系统日志不同,安全性日志主要记录了各种与安全相关的事件。构成该日志的内容主要包括:各种登录与退出系统的成功或不成功的信息:对系统中各种重要资源进行的各种操作,如对系统文件进行的创建、删除、更改等操作。
(3)应用程序日志
应用程序日志主要记录各种应用程序所产生的各类事件。例如,系统中SQL Server数据库程序在受到暴力破解攻击时,日志中会有相关记录,该记录中包含与对应事件相关的详细信息。
2)日志常用事件ID
Windows系统中的每个事件都有其相应的事件ID,下图是应急响应中常用的事件ID,其中旧版本指Windows 2000专业版/Windows XP/Windows Server 2003,新版本指WindowsVista/Windows 7/Windows 8/Windows 10/Windows Server 2008等。
事件ID(旧版本) | 事件ID(新版本) | 描述 | 事件日志 |
---|---|---|---|
528 | 4624 | 成功登录 | 安全 |
529 | 4625 | 失败登录 | 安全 |
680 | 4776 | 成功/失败的账户认证 | 安全 |
624 | 4720 | 创建用户 | 安全 |
636 | 4732 | 添加用户到启用安全性的本地组中 | 安全 |
632 | 4728 | 添加用户到启用安全性的全局组中 | 安全 |
2934 | 7030 | 服务创建错误 | 系统 |
2944 | 7040 | IPSEC服务的启动类型已从禁用更改为自动启动 | 系统 |
2949 | 7045 | 服务创建 | 系统 |
成功/失败登录事件提供的有用信息之一是用户/进程尝试登录(登录类型),Windows系统将此信息显示为数字,下图是数字及其对应说明。
数字 | 登录类型 | 描述 |
---|---|---|
2 | Interactive | 用户登录到本机 |
3 | Network | 如果网络共享,或使用 net use 访问网络共享、使用 net view 查看网络共享,那么用户或其他计算机从网络登录到本机 |
4 | Batch | 批处理登录类型,无须用户干预 |
5 | Service | 服务控制管理器登录 |
7 | Unlock | 用户解锁主机 |
8 | NetworkClcartext | 用户从网络登录到此计算机,用户密码用非哈希的形式传递 |
9 | NewCredentials | 进程或线程克隆了其当前令牌,但为出站连接指定了新凭据 |
10 | Remotelnteractive | 使用终端服务或远程桌面连接登录 |
11 | CachedInteractive | 用户使用本地存储在计算机上的凭据登录计算机《域控制器可能无法验证凭据),如果主机不能连接域控,以前使用域账户登录过这台主机,那么再登录就会产生这样的日志 |
12 | CachedRemotelnteractive | 与 Remotelnteractive 相同,内部用于审计 |
13 | CachedUnlock | 登录尝试解锁 |
下图是常用启动事件相关日志事件ID对应的描述
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
---|---|---|---|---|
关机初始化失败 | 1074 | 警告 | User32 | User32 |
Windows关闭 | 13 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
Windows启动 | 12 | 信息 | 系统 | Microsoft-Windows-Kernel-General |
日志被清除相关日志事件ID对应的描述.
事件 | 事件ID | 事件级别 | 事件日志 | 事件来源 |
---|---|---|---|---|
事件日志服务关闭 | 1100 | 信息 | 安全 | Microsoft-Windows-EventLog |
事件日志被清楚 | 104 | 信息 | 系统 | Microsoft-Windows-EvetLog |
事件日志被清楚 | 1102 | 信息 | 安全 | Microsoft-Windows-EventLog |
Linux排查
lastb: 查看登录失败的用户信息,读取/var/log/btmp
last: 查看用户成功登录信息,读取/var/log/wtmp
lastlog:查看用户最后登录系统时间,读取/var/log/lastlog