网络安全应急响应技术实战指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 文件痕迹排查

在应急响应排查的过程中,由于大部分的恶意软件、木马、后门等都会在文件维度上留下痕迹,因此对文件痕迹的排查必不可少。一般,可以从以下几方面对文件痕迹进行排查:

(1)对恶意软件常用的敏感路径进行排查;

(2)在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;

(3)对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数、文件权限特征等。

1.Windows系统

1)敏感目录

在Windows系统中,恶意软件常会在以下位置驻留。

(1)各个盘下的temp(tmp)相关目录。有些恶意程序释放子体(即恶意程序运行时投放出的文件)一般会在程序中写好投放的路径,由于不同系统版本的路径有所差别,但是临时文件的路径相对统一,因此在程序中写好的路径一般是临时目录。对敏感目录进行的检查,一般是查看临时目录下是否有异常文件。图2.4.1通过临时目录发现可疑程序svchost.exe。

img

图2.4.1 通过临时目录发现可疑程序svchost.exe

(2)对于一些人工入侵的应急响应事件,有时入侵者会下载一些后续攻击的工具。Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹。如图2.4.2所示,是在排查浏览器下载文件时发现的恶意样本。

img

图2.4.2 排查浏览器下载文件时发现的恶意样本

(3)查看用户Recent文件。Recent文件主要存储了最近运行文件的快捷方式,可通过分析最近运行的文件,排查可疑文件。一般,Recent文件在Windows系统中的存储位置如下:

C:\Documents and Settings\Administrator(系统用户名)\Recent;

C:\Documents and Settings\Default User\Recent。

如图2.4.3所示,是打开Recent文件后看到的内容。

img

图2.4.3 Recent文件内容

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

可以在【运行】对话框中输入【%SystemRoot%\Prefetch\】命令,打开Prefetch文件夹。之后排查该文件夹下的文件,如图2.4.4所示。

img

图2.4.4 排查Prefetch文件夹下的文件

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

img

图2.4.5 Amcache.hve文件

2)时间点查找

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

(1)可列出攻击日期内新增的文件,从而发现相关的恶意软件。在Windows系统中,可以在命令行中输入【forfiles】命令,查找相应文件,命令的参数情况如图2.4.6和图2.4.7所示。

img

图2.4.6 命令参数情况1

img

图2.4.7 命令参数情况2

【forfiles】命令的使用方法如图2.4.8所示。使用【forfiles/m *.exe/d+2020/2/12/s/p c:\ /c "cmd/c echo @path @fdate @ftime" 2>null】命令就是对2020/2/12后的exe新建文件进行搜索。在输入此命令后,找到了oskjwyh28s3.exe文件。

img

图2.4.8 【forfiles】命令的使用方法

还可以根据文件列表的修改日期进行排序,查找可疑文件。当然也可以搜索指定日期范围内的文件夹及文件,如图2.4.9所示。

img

图2.4.9 搜索文件

(2)对文件的创建时间、修改时间、访问时间进行排查。对于人工入侵的应急响应事件,有时攻击者会为了掩饰其入侵行为,对文档的相应时间进行修改,以规避一些排查策略。例如,攻击者可能通过“菜刀类”工具改变修改时间。因此,如果文件的相关时间存在明显的逻辑问题,就需要重点排查了,极可能是恶意文件。如图2.4.10所示,文件的修改时间为2015年,但创建时间为2017年,存在明显的逻辑问题,这样的文件就需要重点进行排查。

img

图2.4.10 文件的相关时间存在明显的逻辑问题

3)Webshell

在应急响应过程中,网站是一个关键的入侵点,对Webshell(网站入侵的脚本工具)的查找可以通过上述方法进行筛选后再进一步排查。还可以使用D盾、HwsKill、WebshellKill等工具对目录下的文件进行规则查询,以检测相关的Webshell。这里以使用D盾为例,通过扫描文件,可以直接发现可疑文件,如图2.4.11所示。

img

图2.4.11 使用D盾

2.Linux系统

1)敏感目录

Linux系统常见的敏感目录如下。

(1)/tmp目录和命令目录/usr/bin/usr/sbin等经常作为恶意软件下载目录及相关文建被替换的目录。文件名为crloger8的木马下载到/tmp目录下,如图2.4.12所示。

img

图2.4.12 文件名为crloger8的木马下载到/tmp目录下

(2)此外,~/.ssh及/etc/ssh也经常作为一些后门配置的路径,需要重点检查,如图2.4.13所示。

img

图2.4.13 后门配置路径

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文件,如图2.4.14所示。

img

图2.4.14 查找一天内新增的sh文件

在查看指定目录时,也可以对文件时间进行排序,图2.4.15是使用命令【ls-alt|head-n 10】查看排序后前10行的内容。

img

图2.4.15 查看排序后前10行的内容

(2)对文件的创建时间、修改时间、访问时间进行排查。

使用【stat】命令可以详细查看文件的创建时间、修改时间、访问时间,若修改时间距离应急响应事件日期接近,有线性关联,说明可能被篡改。使用【stat commandi.php】命令查询文件commandi.php的时间信息,如图2.4.16所示。

img

图2.4.16 查询文件commandi.php的时间信息

3)特殊文件

Linux系统中的恶意文件存在特定的设置、特定的关键字信息等。Linux系统中的几种特殊文件类型可以按照以下方法进行排查。

(1)特殊权限文件查找。如图2.4.17所示是查找777权限的文件,使用命令【find/tmp-perm 777】,可发现crloger8文件。

img

图2.4.17 特殊权限文件查找

(2)Webshell查找。Webshell的排查可以通过分析文件、流量、日志进行,基于文件的命名特征和内容特征,相对操作性较高。通过分析文件的方法进行查找,可以从Webshell中常出现的一些关键字着手,对文件进行初筛,缩小排查的范围。例如,可使用如图2.4.18所示的语句,其中【find/var/www/-name "*.php"】命令是查找“/var/www/”目录下的所有php文件,【xargs egrep】及之后的命令是查询php文件中是否包含后面的关键字。

img

图2.4.18 语句

除了初筛的方法,还可以使用findWebshell、Scan_Webshell.py等进行扫描排查。

(3)对系统命令进行排查。【ls】和【ps】等命令很可能被攻击者恶意替换,所以可以使用【ls-alt/bin】命令,查看命令目录中相关系统命令的修改时间,从而进行排查,如图2.4.19所示。

img

图2.4.19 查看系统命令修改时间

也可以使用【ls-alh/bin】命令查看相关文件的大小,若明显偏大,则文件很可能被替换,如图2.4.20所示。

img

图2.4.20 查看相关文件大小

(4)Linux的后门检测,可以使用第三方查杀工具(如chkrootkit、rkhunter)进行查杀。chkrootkit工具用来监测 rootkit 是否被安装到当前系统中。rootkit是攻击者经常使用的后门程序。这类后门程序通常非常隐秘、不易被察觉,植入后,等于为攻击者建立了一条能够长时间入侵系统或可对系统进行实时控制的途径。因此,使用chkrootkit工具可定时监测系统,以保证系统的安全。

在使用chkrootkit时,若出现infected,则说明检测出系统后门;若未出现,则说明未检测出系统后门,如图2.4.21所示。也可以使用【chkrootkit-q|grep INFECTED】命令检测并筛选出存在infected的内容。

使用rkhunter可以进行系统命令(Binary)检测,包括MD5校验、rootkit检测、本机敏感目录检测、系统配置检测、服务及套件异常检测、第三方应用版本检测等。排查情况如图2.4.22和图2.4.23所示。

img

图2.4.21 排查情况

img

图2.4.22 排查情况1

img

图2.4.23 排查情况2

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

img

图2.4.24 排查SUID程序