0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Shell脚本在 Linux 服务器寻找攻击证据

Android编程精选 来源:Android编程精选 作者:Android编程精选 2022-10-09 14:24 次阅读

使用 Shell 脚本在 Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数攻击也留下踪迹。当然,这些踪迹也可通过 Shell 脚本等方法来隐藏。

寻找攻击证据就从攻击者留下的这些痕迹开始,如文件的修改日期。每一个 Linux 文件系统中的每个文件都保存着修改日期。系统管理员发现文件的最近修改时间,便提示他们系统受到攻击,采取行动锁定系统。然而幸运的是,修改时间不是绝对可靠的记录,修改时间本身可以被欺骗或修改,通过编写Shell 脚本,攻击者可将备份和恢复修改时间的过程自动化。

操作步骤

第一步:查看和操作时间戳

多数 Linux 系统中包含一些允许我们快速查看和修改时间戳的工具,其中最具影响的当数 “Touch”,它允许我们创建新文件、更新文件/文件组最后一次被 “touched” 的时间。

touchfile

若该文件不存在, 运行上面的命令将创建一个名为 “file” 的新文件;若它已经存在,该命令将会更新修改日期为当前系统时间。我们也可以使用一个通配符,如下面的字符串。

touch*

这个命令将更新它运行的文件夹中的每个文件的时间戳。在创建和修改文件之后,有几种方法可以查看它的详细信息,第一个使用的为 “stat” 命令。

statfile

30f6b2e6-4574-11ed-96c9-dac502259ad0.jpg

运行 stat 会返回一些关于文件的信息,包含访问、修改或更新时间戳。针对一批文件可使用 ls 参数查看各文件的时间戳,使用 “-l” 或者 “long”,该命令会列出文件详细信息,包含输出时间戳。

ls–l

31193e56-4574-11ed-96c9-dac502259ad0.jpg

现在就可以设置当前时间戳并查看已经设置的时间戳,也可使用 touch 来定义一个自定义时间戳,可使用 “d” 标志,用 yyyy-mm-dd 格式定义日期,紧随其后设置时间的小时、分钟及秒,如下:

touch -d"2001-01-01 2000"file

通过 ls 命令来确认修改信息:

ls-lfile

31662f36-4574-11ed-96c9-dac502259ad0.jpg

这种方法适用于修改个别时间戳,对于隐藏服务器上的操作痕迹,这个方法不太奏效,可以使用 shell 脚本将该过程自动化。

步骤二:组织 Shell 脚本

在开始编写脚本之前需要考虑清楚需要执行哪些过程。为了在服务器上隐藏痕迹,攻击者需要将文件夹的原始时间戳写入一个文件,同时能够在我们进行任何修改设置之后还能回到原始文件。

这两个不同的功能会根据用户的输入或者参数的不同而触发,脚本会根据这些参数执行相应的功能,同时我们需要有一种方法来处理错误。根据用户的输入将会进行三种可能的操作:

没有参数——返回错误消息;

保存时间戳标记——将时间戳保存到文件中;

恢复时间戳标记——根据保存列表恢复文件的时间戳。

我们可以使用嵌套语句 if/or 语句来创建脚本,也可以根据条件将每个函数分配给自己的 “if” 语句,可选择在文本编辑器或者 nano 中开始编写脚本。

步骤三:开始脚本

从命令行启动 nano 并创建一个名为 “timestamps.sh” 的脚本,命令如下:

nano timestamps.sh

然后进行下列命令:

#!/bin/bash
if[$#-eq 0];then
echo“Use asave (-s) or restore (-r) parameter.”
exit1
fi

31835f70-4574-11ed-96c9-dac502259ad0.jpg

在 nano 中按下 Ctrl + O 保存这个文件,通过 chmod 命令将它标记为可运行的脚本。

chmod +xtimestamps.sh

然后运行脚本,测试无参数时返回错误信息的功能。如果脚本返回我们的 echo 语句,我们就可以继续下一个条件了。

./timestamps.sh

31aaad32-4574-11ed-96c9-dac502259ad0.jpg

步骤四:将时间戳写入文件

定义 if 语句的条件,“-s” 表示执行保存功能:

if[$1="-s"] ;then
fi

当然,需要检查计划保存的时间戳文件是否存在,如果存在,我们可以删除它(名为 timestamps 的文件),避免重复或错误的输入,使用下面的命令:

rm-f timestamps;

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

ls–l

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

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

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

ls-lfile| sed's/^.*Jan/Jan/p'

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

ls-lfile| sed's/^.*Jan/01/p'

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

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;'

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

31c5cc98-4574-11ed-96c9-dac502259ad0.jpg

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

doecho $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

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

31e0e140-4574-11ed-96c9-dac502259ad0.jpg

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

./timestamps.sh–s
cattimestamps

3202fbc2-4574-11ed-96c9-dac502259ad0.jpg

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

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

if$1="-r"; thenfi

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

cattimestamps |whilereadlinedodone

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

MONTH=$(echo$line| cut -f1 -d );
DAY=$(echo$line| cut -f2 -d );
FILENAME=$(echo$line| cut -f4 -d );
YEAR=$(echo$line| cut -f3 -d )

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

3220c9b8-4574-11ed-96c9-dac502259ad0.jpg

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

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

3248d9f8-4574-11ed-96c9-dac502259ad0.jpg

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

touch -d"2001-01-01 2000"file

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

if[$YEAR== *:* ];then
touch -d$CURRENTYEAR-$MONTH-$DAY$YEAR:00$FILENAME;
else
touch -d""$YEAR-$MONTH-$DAY""$FILENAME;
fi

3268f076-4574-11ed-96c9-dac502259ad0.jpg

步骤六:使用脚本

使用的命令主要有以下几个:

./timestamps.sh–s  保存文件时间戳
touch -d “2050-10-1210:00:00″ *  修改目录下的所有文件时间戳
ls–a 确认修改的文件
./timestamps.sh–r  恢复文件原始时间戳

最后可以再次运行 “ls -a” 来查看文件的时间戳是否和之前备份的时间戳一致,整个的脚本就执行完成了,如下图所示:

328f8696-4574-11ed-96c9-dac502259ad0.jpg

总结

该脚本只是用来清除攻击服务器之后遗留的一些痕迹。为了隐藏痕迹,黑客在针对服务器实施具体的攻击时,必须仔细考虑使用的每一个方法,以及入侵服务器之后如何隐藏自己的痕迹。

通过上面的介绍我们了解到,时间戳也是 “会撒谎的”,因此系统管理员必须意识到他们的许多日志和保护措施是可以被操纵的,虽然看起来好像没有异常。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10942

    浏览量

    206545
  • 服务器
    +关注

    关注

    12

    文章

    8014

    浏览量

    82211
  • 字符串
    +关注

    关注

    1

    文章

    544

    浏览量

    20087
  • Shell脚本
    +关注

    关注

    0

    文章

    33

    浏览量

    7911

原文标题:【黑客技能】如何掩盖 Linux 系统上的操作痕迹?

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux Shell脚本入门到实战详解

    Linux Shell脚本入门到实战详解
    发表于 02-17 15:03 460次阅读

    嵌入式Linux入门(五、Shell脚本编程上:认识Shell脚本

    大家好,是矜辰所致,嵌入式 Linux入 门第五课,本课开始简单学习一下 Shell 脚本编程。
    的头像 发表于 07-13 16:10 960次阅读
    嵌入式<b class='flag-5'>Linux</b>入门(五、<b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>编程上:认识<b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>)

    Linux shell脚本分享

    今天浩道跟大家分享几个Linux运维中常用到的shell脚本
    发表于 07-18 09:53 446次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>分享

    100个Linux Shell脚本总结

    不知道大家有没有发现,会编写shell脚本的运维,工资不会低,并且他的工作会很轻松!今天浩道跟大家分享每一个Linux运维应知必会的100个shell
    的头像 发表于 12-05 09:28 444次阅读

    为你的 Linux 服务器加把锁

    3 亿多次攻击尝试的美国国家安全局(NSA)。但是攻击脚本根本不在乎你是谁。它只是不断的检查寻找网络中存在已知漏洞的服务器
    发表于 12-31 11:01

    面对外部恶意攻击网站,高防服务器如何去防御攻击

    络恶意攻击,极大提高网络安全而降低由于网络恶意攻击带来的风险。目前,高防服务器骨干节点上都设置了各种防御手段,能够无视CC攻击、防御DDO
    发表于 05-07 17:00

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

    使用 Shell 脚本Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数
    的头像 发表于 02-09 15:23 2982次阅读

    如何利用Shell脚本掩藏Linux服务器使用痕迹

    使用 Shell 脚本Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数
    的头像 发表于 02-13 13:21 3104次阅读

    如何创建和执行一个简单的Linux shell脚本

     如果您愿意要尝试更长的shell脚本,请将下面的shell脚本(并附加为PDF和ODT文件)复制到文本编辑器中,保存,使其可执行并运行。当您了解更多
    的头像 发表于 11-06 17:28 1.3w次阅读

    Linuxshell脚本执的4种方式

    Linuxshell脚本的执行通常有4种方式,分别为工作目录执行,绝对路径执行,sh执行,shell环境执行。
    发表于 05-23 09:28 794次阅读
    <b class='flag-5'>Linux</b>中<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>执的4种方式

    Linux系统命令及shell脚本实践指南

    Linux系统命令及shell脚本实践指南资料下载。
    发表于 06-01 14:47 27次下载

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    通过Shell脚本掩盖Linux系统上的操作痕迹

    使用 Shell 脚本Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数
    的头像 发表于 04-03 10:43 374次阅读

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

    使用 Shell 脚本Linux 服务器上能够控制、毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数
    的头像 发表于 05-23 09:15 426次阅读
    使用<b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>掩盖<b class='flag-5'>Linux</b>上的操作痕迹

    Linux Shell脚本经典案例分享

    ​ 作为一名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell脚本都有“心结”,要么觉得自己写出来不好
    发表于 06-16 14:03 491次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享