【入侵检测】Linux机器中马排查思路

admin 2022年2月23日23:11:57评论230 views字数 17101阅读57分0秒阅读模式

【入侵检测】Linux机器中马排查思路

1、应急响应处置注意事项

【入侵检测】Linux机器中马排查思路

【入侵检测】Linux机器中马排查思路

注意事项 

1、结束恶意进程前,确保采集好必要数据,如截图,经过客户同意后再进行结束进程 

2、涉及密码登录的行为,尽可能由客户自行输入,除非客户主动提供,应急工作结束后提醒客户修改密码

3、应将恶意文件进行备份,再提供原恶意文件路径,由客户进行删除操作

4、拍照、截图、提取数据到移动设备或远程设备时,必须经过客户同意

5、禁止擅自修改、删除服务器文件,如必要则需经客户同意,对原文件备份再进行操作

6、禁止擅自拖取、保存服务器数据库、源代码、附件、密码本等敏感文件

7、禁止擅自在事件服务器进行文件下载或从移动设备拷贝文件到事件服务器,必须经过客户同意

8、报告输出时,部分敏感信息应进行打码处理

 

【入侵检测】Linux机器中马排查思路

2、Linux应急处置思路

【入侵检测】Linux机器中马排查思路

【入侵检测】Linux机器中马排查思路

登录堡垒机->查看可疑文件->查看可疑进程->查看可疑端口->寻找木马文件->攻击IP->查看日志操作->定位漏洞缺陷->提供修复意见紧急修复漏洞->完成溯源报告。

【入侵检测】Linux机器中马排查思路

3、文件排查

【入侵检测】Linux机器中马排查思路

        ls 用来显示目标列表

-a 显示所有档案及目录(ls 内定将档案名或目录名称为“.”的视为影藏,不会列出);-C 多列显示输出结果。这是默认选项;-l 以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;-t 用文件和目录的更改时间排序;

3.1查看 tmp 目录下的文件 

ls –alt

3.2 按时间排序查看指定目录下文件 

ls -alt | head -n 10

Linux 文件时间戳中,ls 命令默认列出的时间为“修改时间”(Modify time),攻击者可以对该时间进行伪造。

其中,

【入侵检测】Linux机器中马排查思路

Change Time 是最新的修改时间戳(包括文件属性、内容修改时间),该时间戳无法直接通过系统工具进行伪造。

Access Time:简写为 atime,表示文件的访问时间。当文件内容被访问时,更新这个时间。

Modify Time:简写为 mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。

Change Time:简写为 ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks 数。

3.3 重点关注以下目录中是否存在恶意脚本

/var/spool/cron/*/etc/crontab/etc/cron.d/*/etc/cron.daily/*/etc/cron.hourly/*/etc/cron.monthly/*/etc/cron.weekly//etc/anacrontab/var/spool/anacron/*小技巧:more /etc/cron.daily/*

查看目录下所有文件

3.4 查看历史命令记录文件~/.bash_history

【入侵检测】Linux机器中马排查思路

查找~/.bash_history 命令执行记录,主要分析是否有账户执行过恶意操作

系统;命令在 linux 系统里,只要执行过命令的用户,那么在这个用户的 HOME

目录下,都会有一个.bash_history 的文件记录着这个用户都执行过什么命令

3.5 查看操作系统用户信息文件/etc/passwd

【入侵检测】Linux机器中马排查思路

查找/etc/passwd 文件, /etc/passwd 这个文件是保存着这个 linux 系统所有

用户的信息,通过查看这个文件,我们就可以尝试查找有没有攻击者所创建的用

户,或者存在异常的用户。我们主要关注的是第 3、4 列的用户标识号和组标识

号,和倒数一二列的用户主目录和命令解析程序。一般来说最后一列命令解析程

序如果是设置为 nologin 的话,那么表示这个用户是不能登录的,所以可以结合

我们上面所说的 bash_history 文件的排查方法。首先在/etc/passwd 中查找命令

解释程序不是 nologin 的用户,然后再到这些用户的用户主目录里,找到

bash_history,去查看这个用户有没执行过恶意命令。

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,

其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell

3.6 查看开机启动项内容 

ls -alt /etc/init.d/

/etc/init.d /etc/rc.d/init.d 的软链接

3.7 查看新增文件

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 ./ -mtime 0 -name "*.php"(查找 24 小时内被修改的 php 文件)find / -ctime 2(查找 72 小时内新增的文件)

grep 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

-v 反转查找-E 使用正则表达式选项-n 输出包含匹配字符串的行数--color=auto 标记匹配颜色tail 查看档案的结尾,默认显示最后十行-f 动态显示文件最新追加的内容;

3.8 特殊权限的文件查看

查找 777 的权限的文件 ➜➜➜ find / *.jsp -perm  777 |more

3.9 隐藏的文件(以 "."开头的具有隐藏属性的文件)

ls –ar | grep “^.”

      3.10 用户信息文件/etc/passwd

root:x:0:0:root:/root:/bin/bashaccount:password:UID:GID:GECOS:directory:shell用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell注意:无密码只允许本机登陆,远程不允许登陆

      3.11 影子文件/etc/shadow

root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留.who     查看当前登录用户(tty本地登陆  pts远程登录)w       查看系统信息,想知道某一时刻用户的行为uptime  查看登陆多久、多少用户,负载

【入侵检测】Linux机器中马排查思路

4、进程排查

【入侵检测】Linux机器中马排查思路

 

4.1 使用 top 命令实时动态地查看系统的整体运行情况,

【入侵检测】Linux机器中马排查思路

主要分析 CPU 和内存多的进程,是一个综合了多方信息监测系统性能和运行信息的实用工具

4.2  netstat 网络连接命令,分析可疑端口、可疑 IP、可疑 PID 及程序进程

【入侵检测】Linux机器中马排查思路

netstat 用于显示与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验

本机各端口的网络连接情况。

选项参数:

-a 显示所有连线中的 Socket。-n 直接使用 IP 地址,而不通过域名服务器。-t 显示 TCP 传输协议的连线状况。-u 显示 UDP 传输协议的连线状况。-v 显示指令执行过程。-p 显示正在使用 Socket 的程序识别码和程序名称。-s 显示网络工作信息统计表。netstat –antlp | more

 

a) "Recv-Q"和"Send-Q"指的是接收队列和发送队列。

b) Proto 显示连接使用的协议;RefCnt 表示连接到本套接口上的进程号;Types 显示套接口的类型;

State 显示套接口当前的状态;Path 表示连接到套接口的其它进程使用的路径名。

c) 套接口类型:

-t TCP-u UDP-raw RAW 类型--unix UNIX 域类型--ax25 AX25 类型--ipx ipx 类型--netrom netrom 类型

d)状态说明:

LISTENING 侦听状态ESTABLISHED 建立连接CLOSE_WAIT 对方主动关闭连接或网络异常导致连接中断

4.3 根据 netstat 定位出的 pid,使用 ps 命令,分析进程

-a 代表 all。同时加上 x 参数会显示没有控制终端的进程-aux 显示所有包含其他使用者的行程(ps -aux --sort -pcpu | less 根据 cpt 使用率进行排序)-C 显示某的进程的信息-axjf 以树形结构显示进程-e 显示所有进程。和 -A 相同。-f 额外全格式-t ttylist by tty 显示终端 ID 在 ttylist 列表中的进程 ps aux | grep pid | grep –v grep
【入侵检测】Linux机器中马排查思路

可以使用 lsof -i:1677 查看指定端口对应的程序;

lsof:

lsof(list open files)是一个列出当前系统打开文件的工具。在 linux 环境下,

任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问

网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息。

 

lsof filename 显示打开指定文件的所有进程

lsof -i 用以显示符合条件的进程情况,在终端下输入 lsof 即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

4.4 使用 ls 以及 stat 查看系统命令是否被替换

两种思路:

查看命令目录最近的时间排序

根据确定时间去匹配

ls -alt /usr/bin | head -10ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Jan 15"

4.5 隐藏进程查看

ps -ef | awk '{print}' | sort -n | uniq >1ls /proc | sort -n |uniq >2diff 1 2

【入侵检测】Linux机器中马排查思路

5、系统信息排查

【入侵检测】Linux机器中马排查思路

5.1 查看分析 history 

cat /root/.bash_history

曾经的命令操作痕迹,以便进一步排查溯源。

a) wget 远程某主机(域名&IP)的远控文件;b) 尝试连接内网某主机(ssh scp),便于分析攻击者意图;c) 打包某敏感数据或代码,tar zip 类命令d) 对系统进行配置,包括命令修改、远控木马类,可找到攻击者关联信息

5.2 查看分析用户相关分析

【入侵检测】Linux机器中马排查思路

a) useradd userdel 的命令时间变化(stat),以及是否包含可疑信息

b) cat /etc/passwd 分析可疑帐号,可登录帐号

查看 UID 为 0 的帐号 ➜➜➜ awk -F: '{if($3==0)print $1}' /etc/passwd

查看能够登录的帐号 ➜➜➜ cat /etc/passwd | grep -E "/bin/bash$"

PS:UID 为 0 的帐号也不一定都是可疑帐号,Freebsd 默认存在 toor 帐号,且

uid 为 0.(toor 在 BSD 官网解释为 root 替代帐号,属于可信帐号)

5.3 查看分析任务计划

crontab -u <-l, -r, -e>-u 指定一个用户-l 列出某个用户的任务计划-r 删除某个用户的任务-e 编辑某个用户的任务(编辑的是/var/spool/cron 下对应用户的 cron 文件,也可以直接修改/etc/crontab 文件)l 通过 crontab –l 查看当前的任务计划有哪些,是否有后门木马程序启动相关信息;l 查看 etc 目录任务计划相关文件,ls /etc/cron*

5.4 查看 linux 开机启动程序

查看 rc.local 文件(/etc/init.d/rc.local /etc/rc.local) ls –alt /etc/init.d/ chkconfigchkconfig 是管理系统服务(service)的命令行工具,对开机启动的可疑程序进行更改;设置 service 启动信息:chkconfig name on/off/reset设置 service 运行级别:chkconfig --level levels

5.5 查看系统用户登录信息

【入侵检测】Linux机器中马排查思路

a)使用 lastlog 命令,系统中所有用户最近一次登录信息。

b) 使用 lastb 命令,用于显示用户错误的登录列表;

c) 使用 last 命令,用于显示用户最近登录信息(数据源为/var/log/wtmp,

var/log/btmp);last -10

 

utmp 文件中保存的是当前正在本系统中的用户的信息。

wtmp 文件中保存的是登录过本系统的用户的信息。

/var/log/wtmp 文 件 结 构 和 /var/run/utmp 文 件 结 构 一 样 , 都 是 引 用

/usr/include/bits/utmp.h 中的 struct utmp;

5.6 系统路径分析

echo $PATH 分析有无敏感可疑信息

5.7 开机启动项

系统运行级别示意图:

 

【入侵检测】Linux机器中马排查思路

【入侵检测】Linux机器中马排查思路

查看运行级别命令 runlevel

系统默认允许级别

vi  /etc/inittab

id=3:initdefault  系统开机后直接进入哪个运行级别

开机启动配置文件

/etc/rc.local

/etc/rc.d/rc[0~6].d

例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可

root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。

5.8 指定信息检索

【入侵检测】Linux机器中马排查思路

strings 命令在对象文件或二进制文件中查找可打印的字符串;

分析 sshd 文件,是否包括 IP 信息 strings /usr/bin/.sshd | grep '[1-9]{1,3}.[1-9]{1,3}.'

*PS:此正则不严谨,但匹配 IP 已够用;

根据关键字匹配命令内是否包含信息(如 IP 地址、时间信息、远控信息、木马特征、代号名称)

5.9 查看 ssh 相关目录有无可疑的公钥存在

Redis(6379) 未授权恶意入侵,即可直接通过 redis 到目标主机导入公钥;目录:/etc/ssh ./.ssh/

5.10 查询特权用户特权用户(uid 0)

[root@localhost ~]# awk -F: '$3==0{print $1}' /etc/passwd

5.11 查询可以远程登录的帐号信息

[root@localhost ~]# awk '/$1|$6/{print $1}' /etc/shadow

5.12 root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限

[root@localhost ~]# more /etc/sudoers | grep -v "^#|^$" | grep "ALL=(ALL)"

5.13 禁用或删除多余及可疑的帐号

usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头userdel user       删除user用户userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除

【入侵检测】Linux机器中马排查思路

6、后门排查

【入侵检测】Linux机器中马排查思路

6.1 系统后门排查

6.1.1 chkrootkit

【入侵检测】Linux机器中马排查思路

chkrootkit 是用来监测 rootkit 是否被安装到当前系统中的工具。rootkit ,是一

类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这

类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途

径。所以,我们要用 chkrootkit 来定时监测系统,以保证系统的安全。

下载链接:(www.chkrootkit.org)

chkrootkit 主要功能:

l 检测是否被植入后门、木马、rootkit

l 检测系统命令是否正常

l 检测登录日志

d) chkrootkit 安装:

rpm -ivh chkrootkit-0.47-1.i386.rpm

e) 检测

# chkrootkit –n;如果发现有异常,会报出“INFECTED”字样。

f) 定时检测

chkrootkit 自带的脚本并没有包括定时检测部分,而考虑到该工具的作用。

建议编写一个脚本,并加入计划任务中。并把脚本加入 crontab 中:cp -

p ./chkrootkit.sh /etc/cron.daily/

6.1.2 Rkhunter

【入侵检测】Linux机器中马排查思路

rkhunter 是 Linux 系统平台下的一款开源入侵检测工具,具有非常全面的扫

描范围,除了能够检测各种已知的 rootkit 特征码以外,还支持端口扫描、常用

程序文件的变动情况检查。

rkhunter 主要功能:

l 系统命令(Binary)检测,包括 Md5 校验

l Rootkit 检测

l 本机敏感目录、系统配置、服务及套间异常检测

l 三方应用版本检测

6.1.3 RPM check 检查

【入侵检测】Linux机器中马排查思路

系统完整性也可以通过 rpm 自带的-Va 来校验检查所有的 rpm 软件包,有哪

些被篡改了,防止 rpm 也被替换,上传一个安全干净稳定版本 rpm 二进制到服务

器上进行检查。

./rpm -Va > rpm.log

如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示

出来。输出格式是 8 位长字符串,c 用以指配置文件, 接着是文件名. 8 位字符的

每一个 用以表示文件与 RPM 数据库中一种属性的比较结果 。. (点) 表示测试

通过。.下面的字符表示对 RPM 软件包进行的某种测试失败:

5 MD5 校验码

S 文件尺寸

L 符号连接

T 文件修改日期

D 设备

U 用户

G 用户组

M 模式 e (包括权限和文件类型)

下图可知 ps, pstree, netstat, sshd 等等系统关键进程被篡改了:

6.1.4 Webshell Check

【入侵检测】Linux机器中马排查思路

Webshell 的排查可以通过文件、流量、日志三种方式进行分析,基于文件的

命名特征和内容特征,相对操作性较高,在入侵后排查过程中频率也比较高。

a)Webshell 的排查可以通过可根据 webshell 特征进行命令查找,简单的可使用(当然会存在漏报和误报)

find /var/www/ -name "*.php" |xargs egrep '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'

b)Github 上存在各种版本的 webshell 查杀脚本,各有各的自己的特点,可使用河马 shell 查杀

(shellpub.com)

6.1.5 ➜Clamav

【入侵检测】Linux机器中马排查思路

ClamAV的官方下载地址为:http://www.clamav.net/download.html

安装方式一:

1、安装zlib:

wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gztar -zxvf  zlib-1.2.7.tar.gzcd zlib-1.2.7#安装一下gcc编译环境:yum install gccCFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/make && make install

 

2、添加用户组clamav和组成员clamav:

groupadd clamavuseradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

 

3、安装Clamav

tar –zxvf clamav-0.97.6.tar.gzcd clamav-0.97.6./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlibmakemake install

 

4、配置Clamav

mkdir /opt/clamav/logsmkdir /opt/clamav/updatatouch /opt/clamav/logs/freshclam.logtouch /opt/clamav/logs/clamd.logcd /opt/clamav/logschown clamav:clamav clamd.logchown clamav:clamav freshclam.log

 

5、ClamAV 使用:

 /opt/clamav/bin/freshclam 升级病毒库./clamscan –h 查看相应的帮助信息./clamscan -r /home  扫描所有用户的主目录就使用./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果

综上所述,通过 chkrootkit 、rkhunter、RPM check、Webshell Check 、Clamav等手段得

出以下应对措施:

1.根据进程、连接等信息关联的程序,查看木马活动信息。

2.假如系统的命令(例如 netstat ls 等)被替换,为了进一步排查,需要下载一新的或者从其他未感染的

主机拷贝新的命令。

3.发现可疑可执行的木马文件,不要急于删除,先打包备份一份。

4.发现可疑的文本木马文件,使用文本工具对其内容进行分析,包括回连 IP 地址、加密方式、关键字(以

便扩大整个目录的文件特征提取)等。

6.2 手工 Webshell 排查

【入侵检测】Linux机器中马排查思路

通过文件内容中的危险函数,去找到网站中的 web 后门。最常见的 Webshell

文件内容中常见的恶意函数:

PHPEval、System、assert、……JSPgetRunTime、 FileOutputStream、……ASPeval、execute、 ExecuteGlobal、……➜➜➜find /var/www/html/ -type f -name '*.php'|xargs grep 'eval' |more

 

除了通过 grep 去找 webshell,我们还可以用类似 D 盾之类的 webshell 查杀

工具,把源码拖下来在本机查杀。

有时候黑客在上传完 webshell 后门,获取到自己想要的信息后,就会删除掉

webshell,又或者遇到了一些变形过的 webshell 后门,我们的关键字没有搜索到,

这时候通过文件去找到 webshell 的方法就不适用了。那么这个时候就只能通过

分析 web 日志,来找到黑客的 webshell 文件。直接分析 web 日志的最直接方式

就是通过 web 日志中的特征来判断是否存在恶意的 webshell 后门,比如上面列

表展示的这些常见 webshell 会传递的 get 参数。常见 webshell 后门日志特征如

下:

Darkblade:goaction=loginJspSpy:o=loginPhpSpy:action=phpinfoRegeorg:cmd=connectOther:cmd=

不过这种方式能发现的问题不多,因为很多时候 web 后门接收参数的方式

都是 post,前面说了大部分中间件默认情况下只能记录 get,如果需要记录 post

的话,就需要安装第三方模块。

 

Ps:常规黑客攻击流程,一个黑客通常通过 web 漏洞获取管理员密码进入后台,然后上传 webshell,这

个 webshell 文件在以前的访问记录是没有的,那么我们就可以通过统计每天访客所访问过的动态脚本文件,来列出每天新增加的文件入口的记录,快速查找 webshell 后门,最后我们可以根据统计低频访问的动态脚本文件,来找出可能是 webshell 的文件,因为一般来说 webshell 的访问 ip 只有几个,并且访问的次数也不多,那么根据这个分析模型,我们就可以发现可能是恶意的动态脚本文件。此排查需要懂一点了解编程,作为思路了解。

【入侵检测】Linux机器中马排查思路

7、日志排查

【入侵检测】Linux机器中马排查思路

【入侵检测】Linux机器中马排查思路

Linux 系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,

并可以从中检索出我们需要的信息。大部分 Linux 发行版默认的日志守护进程为syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为

/etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发

送信息。

Linux 系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信

息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到

日志文件中去。完成这个过程的程序就是 syslog。syslog 可以根据日志的类别和

优先级将日志保存到不同的文件中

7.1 Linux日志详介

7.1.1 日志类型

【入侵检测】Linux机器中马排查思路

下面是和排查相关的常见日志类型,但并不是所有的 Linux 发行版都包含这

些类型:

类型 说明

auth 用户认证时产生的日志,如 login 命令、su 命令。

authpriv 与 auth 类似,但是只能被特定用户查看。

console 针对系统控制台的消息。

cron 系统定期执行计划任务时产生的日志。

daemon 某些守护进程产生的日志。

ftp FTP 服务。

kern 系统内核消息。

mail 邮件日志。

mark产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每

行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此

推断系统发生故障的大概时间。

news 网络新闻传输协议(nntp)产生的消息。

ntp 网络时间协议(ntp)产生的消息。

user 用户进程。

7.1.2 日志优先级

【入侵检测】Linux机器中马排查思路

优先级 说明

emerg 紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。

alert 需要立即修复,例如系统数据库损坏。

crit 危险情况,例如硬盘错误,可能会阻碍程序的部分功能。

err 一般错误消息。

warning 警告。

notice 不是错误,但是可能需要处理。

info 通用性消息,一般用来提供有用信息。

debug 调试程序产生的信息。

none 没有优先级,不记录任何日志消息。

7.1.3 常用日志文件

日志目录 作用/var/log/message 包括整体系统信息/var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等/var/log/userlog 记录所有等级用户信息的日志/var/log/cron 记录 crontab 命令是否被正确的执行/var/log/vsftpd.log 记录 Linux FTP 日志/var/log/lastlog 记录登录的用户,可以使用命令 lastlog 查看/var/log/secure 记录大多数应用输入的账号与密码,登录成功与否var/log/wtmp 记录登录系统成功的账户信息,等同于命令 lastvar/log/faillog 记录登录系统不成功的账号信息,一般会被黑客删除

7.1.4 日志配置

【入侵检测】Linux机器中马排查思路

linux 系统日志相关配置文件为/etc/rsyslog.conf(syslog.conf),以下是对配置文

件各项配置;

 

linux 系统日志相关配置文件为/etc/rsyslog.conf(syslog.conf),以下是对配置文

件各项配置;

7.2 基于时间的日志管理

7.2.1 /var/log/wtmp

/var/log/wtmp 是一个二进制文件,记录每个用户的登录次数和持续时间等信息;last 命令last 命令用于显示用户最近登录信息。单独执行 last 命令,它会读取/var/log/wtmp 的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来;-f: <记录文件>:指定记录文件-a:把从何处登入系统的主机名称或 ip 地址,显示在最后一行

7.2.2 /var/run/utmp

【入侵检测】Linux机器中马排查思路

/var/run/utmp 是一个二进制文件,记录当前登录系统的用户信息。可用 who 命

令显示当中的内容,Who 的缺省输出包括用户名、终端类型、登录日期及远程

主机;

7.2.3 /var/log/lastlog(lastlog)

【入侵检测】Linux机器中马排查思路

/var/log/lastlog 记录用户最后登录的时间和登录终端的地址,可使用 lostlog 命

令查看;

7.2.4 /var/log/btmp(lastb)

【入侵检测】Linux机器中马排查思路

/var/log/btmp 记录错误登录的日志,可使用 lostb 查看,有很多黑客试图使用密

码字典登录 ssh 服务,可以使用此日志查看恶意 ip 试图登录次数;

PS:登录日志可以关注 Accepted、Failed password 、invalid 特殊关键字;

7.3 系统日志

【入侵检测】Linux机器中马排查思路

/var/log/secure

安全日志 secure 包含验证和授权方面信息,比如最常用的远程管理协议 ssh,

就会把所有授权信息都记录在这里。所以通过查看该日志,我们就能查看是否有

人爆破 ssh,通过查看存在过爆破记录的 ip 是否有成功登录的行为,我们就能知

道是否有攻击者通过 ssh 暴力破解的方式成功攻击进来了。通过时间的纬度去判

断,可以查看出是机器行为还是人为的,机器登录事件间隔特别密;

主要分析点:是否有 ip 爆破 ssh 成功;

定位有多少 IP 在爆破主机的 root 帐号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的 IP 有哪些:

grep "Accepted " /var/log/ secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

7.4 中间件日志

【入侵检测】Linux机器中马排查思路

Web 攻击的方法多种多样,但是默认情况下 Web 日志中所能记录的内容并不算丰富,最致命的是 web 日志是不会记录 post 内容的,想要从 Web 日志中直接找出攻击者的 webshell 是非常难的,所以一般来说我们的分析思路都是先通过文件的方式找到 webshell,然后再从日志里找到相应的攻击者 ip,再去分析攻击者的整个攻击路径,来回溯攻击者的所有行为;但各种各样的原因,如黑客在入侵完了之后把 webshell 删除了,通过文件搜索的方式找不到 webshell 或者只能通过分析 web 日志去发现 webshell,比如这时候要排查的话,难度会稍大。Web 日志主要分析 access_log,本文以常见的中间件 apache 为例,其他中间件日志格式和分析思路大同小异;Apache 默认自动生成两个日志文件,访问日志 access_log 和 error_log;

【入侵检测】Linux机器中马排查思路

在 url 中视图搜索所有关键词为“union”的请求,可以发现 172.24.123.120在尝试 SQL 注入,类似,通过通过特殊的关键词搜索 web 攻击。如/etc/passwd,alert 等。但单凭 web 日志无法判断攻击者是否攻击成功了,只能知道攻击者在

尝试攻击;

查询访问量前十的 IP 地址:

查询访问量前十的 URL:

统计访问量前十 QPS 的时间点:

【入侵检测】Linux机器中马排查思路

在对 WEB 日志进行安全分析时,可以按照下面两种思路展开,逐步深入,还原整个攻击过程;

1)首先确定受到攻击、入侵的时间范围,以此为线索,查找这个时间范围内可

疑的日志,进一步排查,最终确定攻击者,还原攻击过程;

 

2)一般攻击者在入侵网站后,通常会上传一个后门文件,以方便自己以后访问。

我们也可以以该文件为线索来展开分析;

7.5 数据库日志

【入侵检测】Linux机器中马排查思路

数据库日志以常用的数据库 Mysql 数据库为例。Mysql 数据库有五种日志,错误

日志、查询日志、慢查询日志、更新日志、二进制日志,重点关注查询日志;

查看是否开启查询日志:

查看数据库文件:路径为/var/log/mysql/,记录一次数据库的连接、查询和退出

中间的数据库操作;

在查询语句中搜索所有关键词为“union”的请求,可以发现 172.24.123.120 在

尝试 SQL 注入,类似,通过通过特殊的关键词搜索有无敏感的数据库操作。如

读取/etc/passwd 敏感文件,写 webshsll 等;

7.6 日志分析技巧:

1、定位有多少IP在爆破主机的root帐号:   

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

 爆破用户名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1n";}'|uniq -c|sort -nr

2、登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

 登录成功的日期、用户名、IP

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

 3、增加一个用户kali日志:

Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali, shell=/bin/bashJul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali#grep "useradd" /var/log/secure

4、删除用户kali日志:

Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'# grep "userdel" /var/log/secure

 5su切换用户:

Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)

 sudo授权执行:

sudo -lJul 10 00:43:09 localhost sudo:    good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

【入侵检测】Linux机器中马排查思路

8、其他注意点

【入侵检测】Linux机器中马排查思路

8.1 root邮箱 /var/spool/mail/root

【入侵检测】Linux机器中马排查思路

主要分析点:在该文件的错误信息中寻找一些蛛丝马迹

文件下载记录root/wget-log

var/log/message

ssh登录var/log/secure

8.2 中间件日志(Web日志access_log)

nginx、apacheiistomcat、jboss、weblogic、websphere

8.3 攻击流程思考

【入侵检测】Linux机器中马排查思路

正常情况下攻击者会先去寻找web漏洞,就像我图上的一样,通过一些高危的漏洞,比如Struts2、反序列、SQL注入等等,然后直接获取webshell。

最常见的就是通过寻找一个sql注入点,获取网站后台的管理员账号密码,然后在后台上传一个webshell。

那么这里我们可以思考一下,如果我们要抓到这个攻击者上传的webshell,要怎么做呢?在这个攻击流程里面,攻击者留下了什么东西?有人知道吗?

上面已经写得很清楚了,上传了webshell,那不就是留下了一个脚本文件在服务器上嘛。

所以这里我们的排查思路就应该先从文件开始,利用grep命令搜索常见webshell木马里面可能会用的危险函数,找到webshell,然后再从日志里翻出关于这个webshell的记录,找到访问wenshell的攻击者ip,再去搜索这个攻击者的访问记录,就可以还原整个攻击者做过的动作了。

8.3.1 WEB服务应急思路

【入侵检测】Linux机器中马排查思路

寻找Webshell的方法:

1、文件内容中的恶意函数

PHPJSPASP

2、Web日志中的webshell特征

Web日志中的webshell特征

  Darkblade:goaction=login    JspSpy:o=login    PhpSpy:action=phpinfo    Regeorg:cmd=connect    Other:cmd=

3、贴合Web业务中的url来分析Web日志

贴合Web应用业务url来分析

比如:一些业务系统的url全部都是映射型url,那么这时候我们直接搜索动态脚本文件的后缀:php、jsp等等,基本上找到的就是web后门

4、统计学模型 – 每天新增的动态脚本文件

统计学模型 – 每天新增的动态脚本文件

统计每天新增的文件入口,可以最快速的筛选出最有可能是web后门的动态脚本文件。

 

5、统计学模型 – 低频访问的脚本文件

统计学模型 – 低频访问的脚本文件

一般来说webshell的访问ip只有几个,并且访问的次数也不多,那么根据这个分析模型,我们就可以发现可能是恶意的动态脚本文件

【入侵检测】Linux机器中马排查思路

9、相关处置

【入侵检测】Linux机器中马排查思路

通过网络连接锁定的可疑进程,进行定位恶意程序后删除(kill):kill -9对设定文件不能删除、改名等权限,移除该权限:chattr –i对发现的 webshell 和恶意文件进行删除:rm –rfv

9.0.1 异常状况类型总结

【入侵检测】Linux机器中马排查思路

1、安全设备告警

2、各种千奇百怪的告警,导致无法判断是否有成功攻击的事件

操作系统发现恶意样本、操作系统出现异常

3、被企业级杀毒发现木马,或者主机使用者发现异常

4、流量剧增、访问量剧增

5、企业内部员工账号出现异常或非本人行为如VPN、邮箱等

6、网站被挂黑页、被挂菠菜、发现webshell后门

7、服务器对外或对内发出大量或异常请求

8、内部订单被窃取 、数据库泄露

9、被上级单位或有关部门通告

10、日志或操作记录无故被删

11、公有账号被盗取,如:微信、微博、新闻博客账号等

12、其他,如:恶意刷单等

9.0.2 被成功入侵

【入侵检测】Linux机器中马排查思路

1、安全设备告警

2、设备出现的海量告警中,也有可能包含着服务器被沦陷的问题,不过由于量级太大,所以较难判断

3、操作系统发现恶意样本、操作系统出现异常

4、一般来说是常规中马事件居多

5、企业内部员工账号出现异常或非本人行为

6、可能是黑客获取了内部员工的VPN,直接连入企业内部网络

7、网站被挂黑页、被挂菠菜、发现webshell后门

8、被挂菠菜也有可能是域名被控了,设置了泛解析

9、服务器对外或对内发出大量或异常请求

1、0内部订单被窃取 、数据库泄露

11、被上级单位或有关部门通告

12、日志或操作记录无故被删

9.0.3 感染挖矿、DDOS木马

【入侵检测】Linux机器中马排查思路

 1、如服务器感染挖矿木马、DDOS木马,99%是通过利用秒杀型漏洞进行攻击。

 2、异常特征

 3、CPU使用率持续90%以上

 4、服务器对外发起大量的请求,造成网络延迟或异常

 5、服务器异常重启

 6、分析思路

 7、查看木马样本的运行用户,观察该用户所运行的服务

 8、查看本机开启的服务、端口,并且是否对互联网开放,如判断是否存在redis、weblogic、Struts2、Jboss、SSH等服务,可能存在秒杀型漏洞

 9、分析相应的服务日志,确定入侵方式

9.0.4 服务器木马事件

【入侵检测】Linux机器中马排查思路

1、 异常特征

2、 存在异常文件、木马文件、异常用户、黑客工具

3、 与外网IP存在连接行为,尤其是境外IP地址

4、 分析思路

5、 检查系统开放服务以及端口,分析可能存在漏洞的服务,如最常见的Web

6、 检查系统异常进程、DLL、启动用户权限、启动方式

7、 查看远程登录日志,如Windows安全日志、Linux的Secure日志,如远程登录IP为内网IP,则检查该内网IP服务器

9.0.5 内网渗透事件

【入侵检测】Linux机器中马排查思路

1、异常特征

2、多台服务器异常,特别仅对内网开放的系统

3、异常情况较为一致,如样本MD5、C&C地址一致或非法用户名一致

4、异常访问来源来自内网IP

5、分析思路

6、访谈管理员,服务器之间是否存在密码重用的情况,是否存在弱口令

7、了解业务,梳理服务器开放的服务,优先处理对互联网开放的服务器

8、检查登录日志,查看登录来源IP地址,判定其合法性;如非管理员常用Ip地址登录、非工作时段的登录Ip地址

9、梳理登录日志以及时间线,目标找到第一台受入侵的服务器

10、检查存在容易遭受攻击的服务,查看其相应日志是否存在恶意行为,记录源IP

9.0.6 被扫描、DDOSCC

【入侵检测】Linux机器中马排查思路

1、 异常特征

2、 服务器缓慢甚至无法访问、PING丢包

3、 服务器CPU过高

4、 出口流量异常过高

5、 服务器异常重启

6、 无木马样本文件

7、 处置方式

8、 DDOS:运营商流量清洗、接入CDN并开启同源保护、加大流量带宽

9、 CC:接入CDN进行人机验证、统计URL访问量以及User-Agent辨别异常请求

10、 被扫描:一般判断是否有成功被利用的漏洞

9.0.7 系统命令文件被修改

【入侵检测】Linux机器中马排查思路

1、 异常特征

2、 命令原有的功能异常。

3、 有进程与不认识IP进行链接。

4、 系统打开不认识的端口。

5、 文件大小不正常。

6、 处置方式

7、 使用stat命令查看文件详细信息

8、 找同版本正常的文件回来进行替换

9、 安装busybox,使用busybox命令

10、 系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查rpm -Va > rpm.log,如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串, ``c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。``. (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:

【入侵检测】Linux机器中马排查思路

点击上方蓝字关注我们

【入侵检测】Linux机器中马排查思路

点个在看你最好看

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月23日23:11:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【入侵检测】Linux机器中马排查思路https://cn-sec.com/archives/787242.html

发表评论

匿名网友 填写信息