加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

发布时间:2018-08-16 06:13:16 所属栏目:业界 来源:FreeBuf
导读:技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 使用Shell脚本在Linux服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数攻击也留下踪迹。当然,这些踪迹也可通过Shell脚本等方

然后使用“ls”命令列出所有文件和它的修改时间,可将其输出到另一个程序,如sed,以帮助我们稍后清理这个输入。

  1. ls –l 

通常会出现下面的显示结果:

  1. -rw-r--r-- 1 user user 0 Jan 1 2017 file 

为了保存时间戳,我们只需要年、月、日及文件名,下面命令可以清除“Jan”之前的信息:

  1. ls -l file | sed 's/^.*Jan/Jan/p' 

这样显示的就是我们程序需要的信息,只是需要修改月份格式为数字格式:

  1. ls -l file | sed 's/^.*Jan/01/p' 

将所有月份都替换为数字:

  1. ls -l | sed -n 's/^.*Jan/01/p;s/^.*Feb/02/p;s/^.*Mar/03/p;s/^.*Apr/04/p;s/^.*May/05/p;s/^.*Jun/06/p;s/^.*Jul/07/p;s/^.*Aug/08/p;s/^.*Sep/09/p;s/^.*Oct/10/p;s/^.*Nov/11/p;s/^.*Dec/12/p;' 

在一个文件夹中运行我们会看到如下图所示的结果:

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

然后将输出结果通过“>>”发送到名为“timestamps”的文件中:

  1. do echo $x | ls -l | sed -n 's/^.*Jan/01/p;s/^.*Feb/02/p;s/^.*Mar/03/p;s/^.*Apr/04/p;s/^.*May/05/p;s/^.*Jun/06/p;s/^.*Jul/07/p;s/^.*Aug/08/p;s/^.*Sep/09/p;s/^.*Oct/10/p;s/^.*Nov/11/p;s/^.*Dec/12/p;' >> timestamps 

至此,脚本的前两个操作就完成了,显示结果如下图:

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

下面可用“-s”标示测试脚本,用cat检查保存的信息:

  1. ./timestamps.sh –s 
  2.  
  3. cat timestamps 

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

步骤五:恢复文件的时间戳

在保存好原始时间戳后,需要恢复时间戳让别人觉察不到文件被修改过,可使用下面命令:

  1. if $1 = "-r" ; then 
  2. fi 

然后使用下面命令,转发文本文件的内容,并一行一行运行:

  1. cat timestamps |while read line 
  2. do 
  3. done 

然后再分配一些变量让文件数据的使用更简单:

  1. MONTH=$(echo $line | cut -f1 -d ); 
  2. DAY=$(echo $line| cut -f2 -d ); 
  3. FILENAME=$(echo $line | cut -f4 -d ); 
  4. YEAR=$(echo $line | cut -f3 -d ) 

虽然这四个变量在保存的时间戳文件中是一致的,但是如果时间戳是在过去一年中发生的,它只会显示时间而不是年份。如果需要确定当前年份,我们可以分配为写脚本的年份,也可以从系统中返回年份,使用cal命令可以查看日历。

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

然后检索第一行,只让显示想要得年份信息:

  1. CURRENTYEAR=$(cal | head -1 | cut -f6- -d | sed 's/ //g') 

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

定义了所有变量之后可以使用“if else”语句,根据格式化的日期更新文件的时间戳,使用touch语法:

  1. touch -d "2001-01-01 20:00:00" file 

由于每个时间都包含冒号,因此可使用下面的“ifelse”语句完成操作,整体操作如下图所示:

  1. if [ $YEAR == *:* ]; then 
  2. touch -d $CURRENTYEAR-$MONTH-$DAY $YEAR:00 $FILENAME; 
  3. else 
  4. touch -d ""$YEAR-$MONTH-$DAY"" $FILENAME; 
  5. fi 

使用 Shell 脚本掩盖 Linux 服务器上的操作痕迹

步骤六:使用脚本

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读