网络安全应急响应 - 02 - 服务排查与文件痕迹排查


服务排查

服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。服务非常适合在服务器上使用,通常在为了不影响在同一台计算机上工作的其他用户,且需要长时间运行功能时使用。

Windows

打开【运行】对话框,输入【services.msc】命令,可打开【服务】窗口,查看所有的服务项,包括服务的名称、描述、状态等。

Linux

在命令行中输入【chkconfig --list】命令,可以查看系统运行的服务

其中,0、1、2、3、4、5、6表示等级,具体含义如下:
1表示单用户模式;
2表示无网络连接的多用户命令行模式;
3表示有网络连接的多用户命令行模式;
4表示不可用;
5表示带图形界面的多用户模式;
6表示重新启动。

使用【service --status-all】命令,可查看所有服务的状态。

文件痕迹排查

由于大部分的恶意软件、木马、后门等都会在文件维度上留下痕迹。
一般,可以从以下几方面对文件痕迹进行排查:
(1)对恶意软件常用的敏感路径进行排查;
(2)在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;
(3)对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数、文件权限特征等。

Windows

1)敏感目录
(1)各个盘下的 temp(tmp)相关目录

有些恶意程序释放子体(即恶意程序运行时投放出的文件)一般会在程序中写好投放的路径,由于不同系统版本的路径有所差别,但是临时文件的路径相对统一,因此在程序中写好的路径一般是临时目录。

对敏感目录进行的检查,一般是查看临时目录下是否有异常文件。

(2)Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹。

(3)查看用户 Recent 文件
Recent文件主要存储了最近运行文件的快捷方式,可通过分析最近运行的文件,排查可疑文件。

一般,Recent文件在Windows系统中的存储位置如下:
C:\Documents and Settings\Administrator(系统用户名)\Recent
C:\Documents and Settings\Default User\Recent

(4)预读取文件夹查看
Prefetch是预读取文件夹,用来存放系统已访问过的文件的预读取信息,扩展名为pf。
可以在【运行】对话框中输入【%SystemRoot%\Prefetch\】命令,打开Prefetch文件夹,之后排查该文件夹下的文件。

自动创建Prefetch文件夹,是为了加快系统启动的进程。Windows系统利用“预读取”技术,在实际用到设备驱动程序、服务和shell程序之前装入它们。这种优化技术也被用到应用软件上,系统对每个应用软件的前几次启动情况进行分析,然后创建一个描述应用需求的虚拟“内存映像”,并把这些信息保存到 Windows\Prefetch 文件夹中。一般,在Windows 7系统中可以记录最近128个可执行文件的信息,在 Windows 8 到 Windows 10 系统中可以记录最近1024个可执行文件。一旦建立了映像,之后应用软件的装入速度可大幅提升。Prefetch文件夹的位置为%SystemRoot%\Prefetch\

另外,Amcache.hve 文件也可以查询应用程序的执行路径、上次执行的时间及SHA1值。Amcache.hve文件的位置为%SystemRoot%\appcompat\Programs\,可以在【运行】对话框中输入【%SystemRoot%\appcompat\Programs\】命令,打开 Amcache.hve 所在文件夹。

2)时间点查找
应急响应事件发生后,需要先确认事件发生的时间点,然后排查时间点前、后的文件变动情况,从而缩小排查的范围。

(1)可列出攻击日期内新增的文件,从而发现相关的恶意软件
在Windows系统中,可以在命令行中输入【forfiles】命令,查找相应文件。
使用【forfiles /m *.exe /d +2022/5/29 /s /p c:\ /c "cmd /c echo @path @fdate @ftime" 2>null】命令就是对2022/5/29后的exe新建文件进行搜索。

(2)对文件的创建时间、修改时间、访问时间进行排查
如果文件的相关时间存在明显的逻辑问题,就需要重点排查。

3)Webshell
可以使用D盾、HwsKill、WebshellKill等工具对目录下的文件进行规则查询,以检测相关的Webshell。

Linux

1)敏感目录
Linux系统常见的敏感目录如下:
(1)/tmp目录、命令目录/usr/bin /usr/sbin等经常作为恶意软件下载目录及相关文件被替换的目录。
(2)~/.ssh/etc/ssh经常作为一些后门配置的路径,需要重点检查。

2)时间点查找
(1)通过列出攻击日期内变动的文件,可发现相关的恶意软件
通过【find】命令可对某一时间段内增加的文件进行查找。
以下为常用的【find】命令:

find:在指定目录下查找文件。
-type b/d/c/p/l/f:查找块设备、目录、字符设备、管道、符号链接、普通文件。
-mtime -n +n:按文件更改时间来查找文件,-n指n天以内,+n指n天前。
-atime -n +n:按文件访问时间来查找文件,-n指n天以内,+n指n天前。
-ctime -n +n:按文件创建时间来查找文件,-n指n天以内,+n指n天前。

使用命令【find / -ctime 0 -name "*.sh"】,可查找一天内新增的sh文件;
使用命令【ls -alt | head -n 10】查看排序后前10行的内容。

(2)对文件的创建时间、修改时间、访问时间进行排查
使用【stat】命令可以详细查看文件的创建时间、修改时间、访问时间,若修改时间距离应急响应事件日期接近,有线性关联,说明可能被篡改。

3)特殊文件
(1)特殊权限文件查找
查找777权限的文件,使用命令【find /tmp -perm 777】。

(2)Webshell查找
Webshell的排查可以通过分析文件、流量、日志进行,基于文件的命名特征和内容特征,相对操作性较高。
通过分析文件的方法进行查找,可以从Webshell中常出现的一些关键字着手,对文件进行初筛,缩小排查的范围。

(3)对系统命令进行排查
【ls】和【ps】等命令很可能被攻击者恶意替换。
可以使用【ls -alt /bin】命令,查看命令目录中相关系统命令的修改时间,从而进行排查。
可以使用【ls -alh /bin】命令,查看相关文件的大小,若明显偏大,则文件很可能被替换。

(4)Linux的后门检测
使用第三方查杀工具(如chkrootkit、rkhunter)进行查杀。

chkrootkit:用来监测 rootkit 是否被安装到当前系统中。可以使用【chkrootkit -q | grep INFECTED】命令检测并筛选出存在infected(存在系统后门)的内容。
rkhunter:可以进行系统命令(Binary)检测,包括MD5校验、rootkit检测、本机敏感目录检测、系统配置检测、服务及套件异常检测、第三方应用版本检测等

(5)排查SUID程序
对于一些设置了SUID权限的程序进行排查,可以使用【find / -type f -perm -04000 -ls -uid 0 2>/dev/null】命令。