Linux 分析排查
Linux 系统下一切都是文件,因此对敏感文件的分析是排查的关键。
1. 开机启动项 /etc/init.d
查看开机启动项内容 /etc/init.d/,恶意代码很有可能设置在开机自启动的位置
通过查看最近创建的文件,判断是否是恶意文件
1.1 查看 /etc/init.d
查看相关程序文件
在该路径下的文件,并不一定全是开机自启动
etc/init.d
查看 apache2 的状态
etc/init.d/apache2 status
设置开机启动/不启动
etc/init.d/apache2 stop # 停止正在运行的程序
etc/init.d/apache2 start # 启动 apache2 程序
update-rc.d apache2 disable
update-rc.d apache2 enable
1.2 查看文件
查看指定目录下文件时间顺序的排序
ls -alt | head -n 10
查看文件的详细信息
stat filename
2. 新增文件分析
查看 24 小时内被修改的文件
find ./ -mtime 0 -name "*.php*"
查找 72 小时内新增的文件
find ./ -ctime 2 -name "*.php*"
查看权限为 777 的文件
find ./ -iname "*.php*" -perm 777
注:文件权限为 777,有很大的可疑
3. 网络连接分析
netstat 查看网络连接情况
man netstat # 查看 netstat 的具体用法
netstat -pantl # 查看端口连接情况
4. 进程分析 - 进程对应的文件
查看进程信息
ps aux | grep "22" # 查看包含关键字 22 的信息
lsof -i:端口号 # 也可以实现上一行命令的功能
5. 登录分析
在 Linux 系统中,所有的操作都会被记录到日志中,对于登录也可以查看登录日志信息查看是否有异常登录
通过 last 命令查看
last -i | grep -v 0.0.0.0 # 查看登录日志,grep -v 0.0.0.0 筛选非本地登录
w # 实时查看当前登录的信息
6. 异常用户分析排查
在Linux中,root 用户可以做任何事情,root 用户的 uid=0,gid=0
分析密码文件
cat /etc/passwd
grep "0:0" /etc/passwd # 查看uid,gid为0的用户
awk -F: '$3==0 {print $1}' /etc/passwd # 以: 为分隔符,找到第三个占位符为0的数据,并输出第一个占位符的内容
7. 计划任务排查
在 Linux 系统中,可以使用 crontab 进行计划任务的设定
crontab -e # 用来编辑设定计划任务
crontab -l # 用来查看当前的计划任务
crontab -r # 用来删除计划任务
通过查计划任务,查看是否有一次的计划任务
8. $PATH 变量异常
决定了 shell 将到哪些目录中寻找命令或程序,PATH 的值是一系列目录,当您运行一个程序时,Linux 在这些目录下进行搜寻编译链接
8.1 变量的修改
-
修改
PATH export PATH=$PATH:/usr/locar/new/bin
本次终端中有效,重启后无效。 -
在
/etc/profile
或/home/.bashrc(source~/.bashrc)
才能永久生效
8.2 查看变量
查看是否存在异常文件(恶意代码)
echo $PATH
9. 后门排查 - rkhunter
Rkhunter 的功能
- 系统命令检测,MD5值校验
- Rookit 检测
- 本机敏感目录,系统配置异常检测
Rookit 是 Unix/Linux 的一组工具集,能够隐藏攻击者的行为踪迹,包括恶意程序、文件夹、注册码、网络端口、键盘记录。
rkhunter 的基本使用
rkhunter --check --sk # 进行系统检测,忽略键盘输入
rkhunter -c # check the local system
rkhunter -sk # don't wait for a keypress after each test