Linux应急

Linux应急响应

0x01 Linux日志分析理论

前言

      Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。

1.日志简介

​ 日志默认存放位置:/var/log/

​ 查看日志配置情况:more /etc/rsyslog.conf

路径说明
/var/log/messages记录 Linux 内核消息及各种应用程序的公共日志信息
/var/log/cron记录 crond 计划任务产生的事件信息
/var/log/dmesg记录 Linux 操作系统在引导过程中的各种事件信息
/var/log/maillog记录进入或发出系统的电子邮件活动
/var/log/lastlog记录每个用户最近的登录事件
/var/log/secure记录用户认证相关的安全事件信息
/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件
/var/log/btmp记录失败的、错误的登录尝试及验证事件

比较重要的几个日志

登录失败记录:/var/log/btmp //lastb

最后一次登录:/var/log/lastlog //lastlog

登录成功记录:/var/log/wtmp //last

登录日志记录:/var/log/secure

目前登录用户信息:/var/run/utmp //w、who\users

2.日志分析技巧

常用的shell命令:

Linux下常用的shell命令如:find、grep 、egrep、awk、sed

grep -C 5 foo file //显示file文件里匹配foo字符串所在行以及上下5行
grep -B 5 foo file	显示foo及前5行内容 
grep -A 5 foo file	显示foo及后5行内容
grep -rn "hello,world!"	//查找当前目录中所有包含"hello,world!"的所有文件。
-r 递归查找
-n 显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
cat srarch_file | tail -n +1000 | heaf -n 2000
#从第1000行开始,显示2000行。(显示1000~2999行)
find /etc -name "filename" #在etc中查找文件
find /* -name "*filename*" #查找包含任意filename的文件路径
cat /etc/passwd | awk -F ':' '{print $1}'
#awk -F参数指定分隔符为':',$0显示所有、$1显示以':'分割后的第一个字符串,以此类推。
系统日志分析技巧
  1. /var/log/secure
#定位有多少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 "$1\n";}' | uniq -c | sort -nr
#登录成功的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}'
#添加用户日志
[root@bogon test]# grep "useradd" /var/log/secure 
Feb 26 21:34:01 bogon useradd[75619]: new group: name=test1, GID=1001
Feb 26 21:34:01 bogon useradd[75619]: new user: name=test1, UID=1001, GID=1001, home=/home/test1, shell=/bin/bash
#删除用户日志
grep "userdel" /var/log/secure 
Feb 26 21:38:08 bogon userdel[75717]: delete user 'test1'
Feb 26 21:38:08 bogon userdel[75717]: removed group 'test1' owned by 'test1'
Feb 26 21:38:08 bogon userdel[75717]: removed shadow group 'test1' owned by 'test1'
#su切换用户日志
grep "su:" /var/log/secure
Feb 26 21:39:25 bogon su: pam_unix(su:session): session opened for user root by root(uid=0)
Feb 26 21:39:32 bogon su: pam_unix(su:session): session opened for user admin by root(uid=0)
Feb 26 21:40:25 bogon su: pam_unix(su:session): session opened for user admin by root(uid=0)
Feb 26 21:41:25 bogon sudo:   admin : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/grep su: /var/log/secure
Feb 26 21:41:35 bogon sudo:   admin : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/grep su: /var/log/secure
Feb 26 21:41:44 bogon su: pam_unix(su:session): session opened for user root by root(uid=1000)
#sudo授权执行日志
grep "sudo" /var/log/secure
Feb 26 21:41:25 bogon sudo:   admin : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/grep su: /var/log/secure
Feb 26 21:41:35 bogon sudo:   admin : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/grep su: /var/log/secure
Feb 26 21:43:56 bogon sudo:    root : TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=list

软件安装、升级、卸载日志:/var/log/yum.log

[root@bogon admin]# more /var/log/yum.log 
Feb 26 19:19:18 Installed: tree-1.6.0-10.el7.x86_64
Feb 26 19:19:26 Updated: 2:vim-common-7.4.629-8.el7_9.x86_64
Feb 26 19:19:26 Updated: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
Feb 26 21:48:59 Updated: wget-1.14-18.el7_6.1.x86_64
Feb 26 21:49:35 Updated: libgcc-4.8.5-44.el7.x86_64
Feb 26 21:49:35 Updated: libquadmath-4.8.5-44.el7.x86_64
Feb 26 21:49:35 Updated: libstdc++-4.8.5-44.el7.x86_64
Feb 26 21:49:36 Updated: libstdc++-devel-4.8.5-44.el7.x86_64
Feb 26 21:49:36 Updated: libgfortran-4.8.5-44.el7.x86_64
Feb 26 21:49:36 Updated: libgomp-4.8.5-44.el7.x86_64
Feb 26 21:49:36 Updated: cpp-4.8.5-44.el7.x86_64
Feb 26 21:49:38 Updated: gcc-4.8.5-44.el7.x86_64
Feb 26 21:49:38 Updated: libquadmath-devel-4.8.5-44.el7.x86_64
Feb 26 21:49:38 Updated: gcc-gfortran-4.8.5-44.el7.x86_64
Feb 26 21:49:39 Updated: gcc-c++-4.8.5-44.el7.x86_64

0x02Linux应急排查

1.检查账号安全

  1. 用户信息文件/etc/passwd

    root:x:0:0:root:/root:/bin/bash
    account:password:UID:GID:GECOS:directory:shell
    用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
    注意:无密码只允许本机登陆,远程不允许登陆
    
  2. 影子文件/etc/shadow

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

    awk -F: '$3==0{print $1}' /etc/passwd
    
  4. 查询可以远程登录的帐号信息

    awk '/\$1|\$6/{print $1}' /etc/shadow
    
  5. sudo权限检查

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

    more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
    
  6. 多余账号检查(删除不必要的账户)

    禁用或删除多余及可疑的帐号
    1.usermod -L user    禁用帐号,帐号无法登录,/etc/shadow第二栏为!开头
    2.userdel user       删除user用户
    3.userdel -r user    将删除user用户,并且将/home目录下的user目录一并删除
    

2.检查历史命令

通过.bash_history查看帐号执行过的系统命令
#root的历史命令
/root/.bash_history
打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令

为历史的命令增加登录的IP地址、执行命令时间等信息

#1.保存1万条命令
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

#2.在/etc/profile的文件尾部添加如下行数配置信息:
### ### jiagu history xianshi### ### ### 
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
### ### ###  jiagu history xianshi ### ### ### #

#3.source /etc/profile让配置生效
生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile

历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的添加的记录。

3.检查端口进程

使用netstat 网络连接命令,分析可疑端口、IP、PID
[root@bogon ~]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      678/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1789/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1365/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1361/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1714/master         
tcp        0      0 192.168.1.209:43086     89.187.187.14:443       TIME_WAIT   -                   
tcp        0      0 192.168.1.209:55890     192.168.1.170:4444      ESTABLISHED 1373/./etc/sysconfi 
tcp6       0      0 :::111                  :::*                    LISTEN      678/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1365/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1361/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1714/master  

查看下pid所对应的进程文件路径。

#ls -l /proc/$PID/exe
[root@bogon ~]# ls -l /proc/1373/exe
lrwxrwxrwx. 1 root root 0 228 17:35 /proc/1373/exe -> /etc/sysconfig/msfhell.elf
或者
#file /proc/$PID/exe($PID 为对应的pid 号)
[root@bogon ~]# file /proc/1373/exe
/proc/1373/exe: symbolic link to `/etc/sysconfig/msfhell.elf'

使用ps命令,分析进程

#ps aux | grep pid
[root@bogon ~]# ps aux | grep 1373
root       1373  0.0  0.0   1720   728 ?        Rl   17:33   0:00 ./etc/sysconfig/msfhell.elf
root       2707  0.0  0.3 642792 13736 ?        Sl   17:35   0:00 /usr/libexec/gsd-keyboard
root       3393  0.0  0.0 112724   980 pts/0    S+   17:38   0:00 grep --color=auto 1373
#或	ps -elf
#使用树形图展示	pstree -aup
#实时显示进程情况	top	

4.检查开机启动项

开机启动项隐藏方法

方法一:使用chkconfig命令添加开机启动项:

[root@bogon ~]# cp msfhell.elf /etc/sysconfig/.msfshell.elf && chmod +x /etc/sysconfig/.msfshell.elf
#将木马存放在任意目录命名前加'.'设置为隐藏文件(ls -la命令可以看到隐藏文件)。
#新建启动shell文件,并且赋予执行权限,利用chkconfig命令添加启动项
[root@bogon ~]# echo -e '#!/bin/bash'"\n"'#chkconfig:2345 80 90'"\n\t"'#description:shell'"\n"'./etc/sysconfig/.msfshell.elf' >/etc/init.d/shell && chmod +x shell && chkconfig --add shell && chkconfig shell on
#使用chkconfig --list命令,我们可以看到开机启动项已经添加成功
[root@bogon ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

msf            	0:关	1:关	2:开	3:开	4:开	5:开	6:关
netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
shell          	0:关	1:关	2:开	3:开	4:开	5:开	6:关
vmware-tools   	0:关	1:关	2:开	3:开	4:开	5:开	6:关
#reboot重启机器msf上线成功
#清除chkconfig启动项方法
[root@bogon ~]# chkconfig msf off
[root@bogon ~]# chkconfig --del msf
[root@bogon ~]# chkconfig shell off
[root@bogon ~]# chkconfig --del shell 

启动脚本必须含有以下参数

###启动shell脚本文件说明###

#!/bin/sh	
//指定以什么方式运行该脚本
#chkconfig: 2345 80 90	
//2345为默认启动级别(linux启动级别为0-7) 80含义为启动时脚本执行优先级	90含义为停止运行优先级 (范围0-100,数字越大,优先级越低)
    #description:auto_run	
    //auto_run 可以是任意名字,即软连接后的文件名

注意debin系列系统(如:ubuntu)配置参数不同,排查思路相同

方法二:利用chkconfig规则,手动配置启动项

#第一步还是将文件写入init.d目录中
[root@bogon ~]# echo -e '#!/bin/bash'"\n"'#chkconfig:2345 80 90'"\n\t"'#description:shell'"\n"'./etc/sysconfig/.msfshell.elf' >/etc/init.d/shell
#或者使用nohup使脚本在后台运行
[root@bogon ~]# echo -e '#!/bin/bash'"\n"'#chkconfig:2345 80 90'"\n\t"'#description:shell'"\n"'nohup ./etc/sysconfig/.msfshell.elf' >/etc/init.d/shell
#第二步配置软连接
配置软链接需要注意,查看启动的运行等级,我这里运行等级为5,就配置软链接到rc.5.d目录中。
[root@bogon init.d]# runlevel
N 5
软连接含义:第一位(S为启动,K为结束)第二位(数字为运行级别,与shell中保持一致) 第三位 (名字,与shell中保持一致)
[root@bogon init.d]# ln -sv /etc/iniit.d/shell /etc/rc.d/rc5.d/S80shell

#Linux 运行级别0-10代表不同的系统状态,常用的系统状态有:
0. 关机级别
1. 系统启动级别(单用户模式)
2. 系统关机级别(shutdown)
3. 完全多用户级别
4. 无网络服务级别
5. X11多用户图形界面级别
6. 重新启动级别
7. 后台运行级别
8. 安全模式
9. 开发者模式
10. 内核调试模式

方法三:配置rc.local实现开机自启

#在/etc/rc.local文件中配置命令,将执行木马文件写入rc.local最后
[root@bogon ~]# echo 'cd /root && nohup ./msfshell.elf&' >> /etc/rc.local
#在.bashrc文件实现启动后门
[root@bogon ~]# echo 'cd /root && nohup ./msfshell.elf&' >> /root/.bashrc
启动项排查方法
开机启动配置文件
1./etc/rc.local
2./etc/rc.d/rc[0~6].d
启动项文件:
1.more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/
#依据以上入侵思路
1.排查/etc/rc.d/rc*.d/目录是否存在可以连接文件
2.排查/etc/init.d/目录是否存在可以脚本
3.排查/etc/rc.local目录是否有可疑文件
4.排查环境初始化文件中是否有后门命令,如:用户目录下的.bashrc文件,.bash_profile等文件

Linux初始化文件说明

  1. /etc/profile

    全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

  2. /ect/bashrc

    Ubuntu没有此文件,与之对应的是/ect/bash.bashrc 它也是全局(公有)的 bash执行时,不管是何种方式,都会读取此文件。

  3. ~/.profile

    若bash是以login方式执行时,读取/.bash_profile,若它不存在,则读取/.bash_login,若前两者不存在,读取~/.profile。

    另外,图形模式登录时,此文件将被读取,即使存在/.bash_profile和/.bash_login。

  4. ~/.bash_login

    若bash是以login方式执行时,读取/.bash_profile,若它不存在,则读取/.bash_login,若前两者不存在,读取~/.profile。

  5. ~/.bash_profile

    Unbutu默认没有此文件,可新建。

    只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。

  6. ~/.bashrc

    当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。

  7. ~/.bash_logout

    注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。

5.检查定时任务

1、利用crontab创建计划任务

基本命令
1.crontab -l 列出当前用户计划任务
crontab -u username	指定用户
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
	crontab -l -u admin	查看admin用户的计划任务
	使用crontab sysstat 可以载入某个文件中的计划任务 (crontab 跟文件名)
如:* * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
或者:echo '* * * * * echo "hello world" >> /tmp/test.txt' >/var/spool/cron/root	利用写文件的方式直接写入cron

2.在/etc/crontab文件写入计划任务

#在crontab文件写入计划任务必须注意格式 (计划任务时间  启动计划任务的用户  需要执行的command)
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*  *  *  *  *  root  echo "123qwe" >> /tmp/123.txt

2、利用anacron实现异步定时任务调度

使用案例
每天运行 /home/backup.sh脚本:

[root@bogon ~]# vim /etc/anacrontab 
#编辑内容为:
   @daily 10 example.daily /bin/bash /home/backup.sh

#当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

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

/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/*

小技巧:

  1. more /etc/cron.daily/* 查看目录下所有文件

总结:

​ 排查计划任务时,检查crontab有无计划任务,检查/etc/cron*是否有新增计划任务,关注/var/spool/cron/* 与/var/spool/anacron/*。

6.检查服务

方法一:利用systemd服务启动脚本

1.测试shell脚本如下

#!/bin/bash
while true
do
  #打印hello world ,sleep 1 是每隔一秒打印一次
  echo hello world >> /tmp/hello.log
  #打印当前系统时间
  echo $(date +%Y%m%d-%H%M%S)
  sleep 1
done

2.创建service文件

文件必须位于/etc/systemd/system/目录下,我们起名为shell.service

Unit中一般分三个部分【Unit/Service/Install】

Unit中主要是对服务的说明

​ 里面有两个参数:

​ Description(用于描述服务)

​ After(用于描述服务启动的依赖);
Sevice中主要是设置运行参数

​ 里面参数的意思:

​ ExecStart (服务的具体运行命令)

​ Restart = always(进程时服务意外故障的时候可以自动重启的模式)

​ Type = simple(表示其余选项均为系统默认);
Install中主要是服务安装的相关设置。

[Unit]
Description = shell daemon
 
[Service]
ExecStart = /opt/shell.sh
Restart = always
Type = simple
 
[Install]
WantedBy = multi-user.target

3.把Unit添加进Service

list-unit-files --type 是列出所有启动文件

[root@localhost ~]# systemctl list-unit-files --type=service |grep shell
shell.service                                 disabled

5、启动服务

[root@localhost ~]# systemctl enable hello     # 开机自动启动on
此时参数中的enable换成disable就是禁止开启自动启动
[root@localhost ~]# systemctl start hello   # 单次开机启动
此时参数中的start换成stop就是停止服务
[root@localhost ~]# systemctl status hello   #运行状态确认

6.查看脚本启动情况

[root@localhost ~]# systemctl enable shell
Created symlink from /etc/systemd/system/multi-user.target.wants/shell.service to /etc/systemd/system/shell.service.
[root@localhost ~]# systemctl start shell
[root@localhost ~]# cat /tmp/shell.service.log 
hello world
#查看脚本运行状态
[root@localhost ~]# systemctl status shell
● shell.service - shell daemon
   Loaded: loaded (/etc/systemd/system/shell.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2023-03-02 22:31:41 CST; 5min ago
 Main PID: 6165 (shell.sh)
    Tasks: 2
   CGroup: /system.slice/shell.service
           ├─6165 /bin/bash /opt/shell.sh
           └─7097 sleep 1

3月 02 22:36:32 localhost.localdomain shell.sh[6165]: 20230302-223632
3月 02 22:36:33 localhost.localdomain shell.sh[6165]: 20230302-223633
3月 02 22:36:34 localhost.localdomain shell.sh[6165]: 20230302-223634
3月 02 22:36:35 localhost.localdomain shell.sh[6165]: 20230302-223635
3月 02 22:36:36 localhost.localdomain shell.sh[6165]: 20230302-223636
3月 02 22:36:37 localhost.localdomain shell.sh[6165]: 20230302-223637
3月 02 22:36:38 localhost.localdomain shell.sh[6165]: 20230302-223638
3月 02 22:36:39 localhost.localdomain shell.sh[6165]: 20230302-223639
3月 02 22:36:40 localhost.localdomain shell.sh[6165]: 20230302-223640
3月 02 22:36:41 localhost.localdomain shell.sh[6165]: 20230302-223641
#至此结束,停止脚本
[root@localhost ~]# systemctl stop shell
方法二:利用chkconfig命令(上文已详细说明)
1.chkconfig  --list  查看服务自启动状态,可以看到所有的RPM包安装的服务
2.ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
1.chkconfig --list | grep "3:启用\|5:启用"
英文环境
1.chkconfig --list | grep "3:on\|5:on"
源码包安装的服务
查看服务安装位置 ,一般是在/user/local/
1.service httpd start
搜索/etc/rc.d/init.d/ 查看是否存在

7.检查异常文件

1、查看敏感目录

​ 如:/tmp目录下的文件,同时注意隐藏文件夹,以“…”为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
可以使用find命令来查找,如:

find /opt -iname “*” -atime 1 -type f 
找出 /opt目录下 一天前访问过的文件
-atime 1	查找一天前
-atime -1	查找一天内

3、针对可疑文件可以使用stat进行创建修改时间。

[root@localhost ~]# stat /opt/shell.sh 
  文件:"/opt/shell.sh"
  大小:204       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:902482      硬链接:1
权限:(0777/-rwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2023-03-02 22:31:41.387571743 +0800
最近更改:2023-03-02 22:19:25.875267953 +0800
最近改动:2023-03-02 22:24:30.081485907 +0800
创建时间:-

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值