Linux环境黑客入侵应急与排查

1 目录文件分析

1.1 系统用户排查

黑客往往取得服务器控制权限后会添加系统用户,达到持续控制服务器的目的。

筛选用户ID=0(root用户) 或者 用户ID>=500(新建用户)的用户,可以快速查看是否有异常系统用户。

cat /etc/passwd | awk -F : '{if($3==0||$3>=500){print}}'

黑客也可能新建passwd shadow文件存用户信息,所以需要查看是否存在多余的passwd

ls -ls /etc/passw*

ls -ls /etc/shado*

1.2 操作命令记录

黑客控制服务器后,通常会使用bash shell操作命令控制服务器

history 查看当前用户的历史命令

如果黑客使用history -c 将历史命令进行清除,可以查看宿主目录下的.bash_history文件进行查看。

cat /用户名/.bash_history 查看指定用户的历史命令。

1.3 敏感目录文件

检查下LInux系统下敏感的目录,通常恶意程序会在权限大的目录写入文件,-l 显示文件详细信息 -a 显示隐藏文件,-t 按时间进行排序。

ls --alt /tmp/ 存放所用用户的临时文件

ls --alt /var/tmp/ 存放所用用户的临时文件

ls -alt /etc/init.d/ 存放服务启动脚本命令

ls -alt /bin 存放开机相关的命令

ls -alt /usr/bin 存放普通用户使用的命令

ls -alt sbin 存放管理员用户使用的命令

ls -alt /usr/sbin 存放网络服务器命令

ls -alt /boot 存放启动和内核相关的文件

1.4 文件修改时间

Linux文件系统每个文件都有三种时间戳:

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。

修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。

变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

stat 文件名 该命令可以查看文件生成的时间,对溯源排查起关键作用。

常常查看以下两个文件的时间可以判断系统安装的时间,如果文件没有被删除系统不会使用到这两个文件。

stat lost+found

stat /root/anaconda-ks.cfg

2 网络行为排查

2.1 重要辅助站点

1.https://www.virustotal.com/ , 国外知名安全站点,需翻墙,可查询文件MD5、IP、域名、URL是否恶意,也可上传文件进行病毒扫描。

2.https://x.threatbook.cn/ , 国内威胁情报站点,可查询文件MD5、IP、域名、URL是否恶意,也可上传文件进行病毒扫描。

3.http://beian.cndns.com/,国内站点备案查询,所有有企业备案的国内站点可认为是可信站点。

4.http://www.alexa.com/,全球站点排行查询,top100万的站点可认为是可信站点(国外站点没有备案这一说法)。

5.Google与Baidu等搜索引擎,输入文件MD5/IP/域名,有时候可以查询到对应病毒信息。

2.2 网络连接排查

使用命令 netstat -antop 查看当前的网络连接,排查可疑的服务、端口,外连的IP。

如发现netstat定位出的pid有问题,可再通过 ps -aux |grep pid 可以进一步查看进程信息。

并且可以进入虚拟文件目录查找该进程的可执行文件,使用ls proc/pid grep -i exe命令,或者 file /proc/pid/exe

lsof -i -PnR 查看网络通信情况,是否存在异常连接,并结合威胁情报分析。

2.3 网络流量分析

流量分析可以使用tcpdump,主要分析下当前主机访问了哪些域名、URL、服务,或者有哪些外网IP在访问本地主机的哪些端口、服务和目录,又使用了何种协议等等。

例如,使用tcpdump观察到,主机访问了sjb555.3322.org这种动态域名,即可粗略猜测这是一个C&C服务器。

tcpdump -i eth0 port 53 -vv

3 命令篡改分析

3.1 rpm命令校验

通常系统中了病毒,病毒会修改系统自带的命令,例如: top ls ps pstree netstat lsof ss sshd ssh等等,达到反侦察的目的,所以需要检验下以上命令是否被修改替换。

rpm -V -a 查看所有被修改过的rpm包

rpm -V -f /bin/ls 确认ls 命令是否被替换过,没有任何输出代表没有被替换过。

rpm -V -f /bin/ps 确认ls 命令是否被替换过,没有任何输出代表没有被替换过。

注意:该方法只适用于redhat系列的操作系统

3.2 校验文件MD5值

使用md5sum工具计算出文件的md5值与干净系统对应文件的md5值进行比较。

4 系统启动项排查

4.1 排查启动项

黑客为了保持病毒能够开机启动、登录启动或者定时启动,通常会有相应的启动项,

/etc/init.d/rc.local

/etc/rc.local

/etc/rc.d/rc0.d

/etc/rc.d/rc1.d

/etc/rc.d/rc2.d

...

4.2 排查启动服务

chkconfig --list |grep on 检查自启服务

4.3 定时或计划任务

任务计划:查看当前的任务计划有哪些,是否有后门木马程序启动相关信息

crontab --l -u root

cat /var/spool/cron/*

cat /etc/crontab

cat /etc/cron.d/*

cat /etc/cron.daiy/*

cat /etc/cron.weekly/*

cat /etc/cron.monthly/*

5 日志分析

5.1 登录日志

/var/log/secure 记录所有相关的登录日志,包含ssh登录日志

last 用来列出目前与过去登录系统的用户相关信息

lastb 显示登录失败的日志

tail -f /var/log/secure 实时监控登录日志

5.2 系统日志

/var/log/message 记录所有系统报错异常日志

/var/log/boot.log 记录系统开机日志

/var/log/dmesg 记录系统开机时内核产生的日志

/var/log/cron 记录计划任务执行日志

6 Linux有用命令

6.1 查找命令

which ls 查找命令所在位置

locate ls 模糊查找文件,基于数据库速度快

find 【文件路径】 【条件】 【动作】 速度慢,可以基于文件属性就行查找

find / -name "pass*"支持通配符

find / -iname 不区分大小写

find / -user root 根据文件宿主查找文件

find / -perm -010 查找具有写权限的文件

find / -type d 查看目录

6.2 lsof命令

lsof 用于查看指定进程文件或者目录打开的情况

lsof -c 进程名称 显示指定进程打开的文件

lsof -p pid 显示指定进程id打开的文件

lsof +d /tmp 显示tmp目录下文件被打开的情况

lsof +D /tmp 递归显示tmp目录下被打开的文件情况

lsof -i:80 显示监听80端口的进程

6.3 strings命令

strings -a -n 60 /xmrig.exe 扫描二进制文件中连续60个字符的字符串,可以看到该程序是门罗币挖矿程序,过滤出来帮助文档和钱包地址。

6.4 字符串处理

grep: 行提取命令 eg: grep "/bin/sh" /etc/passwd -n -v "root"

-i 忽略大小写

-n 显示行号

-v "root" 取反

cut: 列提取命令 eg: cut -d ":" -f 1,2 /etc/passwd

-d ":" 指定分隔符,默认制表符为分隔符

-f 列号 截取指定列

awk '条件1{动作1} 条件2{动作2}' 文件名 awk列提命令

eg:awk '{ printf $1 "\t" $2 "\n"} ' student.txt

1、print 会自动输出换行符\n printf不会输出\n

2、$0 存储文件名,$1 $2 $3 变量依次每列数据

3、BEGIN{FS=":"} 指定分隔符: 或者 -F : 指定分隔符

条件:

1、一般用关系表达式作为条件,eg: BEGIN END

2、x>10

动作:

1、格式化输出 printf

2、流程控制语句

统计命令wc: wc [选项] 文件名 eg: wc -l /etc/passwd

选项:

-l 只统计行数

-w 只统计单词数

-m 只统计字符数

相关推荐
Koi慢热几秒前
路由基础(全)
linux·网络·网络协议·安全
传而习乎11 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
我们的五年20 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
IT果果日记42 分钟前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教44 分钟前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd2 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
明明跟你说过2 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
Komorebi.py3 小时前
【Linux】-学习笔记05
linux·笔记·学习