【玄机】第一章 应急响应-webshell查杀

首先我们先了解一下什么是webshell

WebShell 应急响应是指在发现系统中存在 WebShell 后,迅速采取一系列措施来识别、隔离、清除威胁,并恢复系统安全的过程。WebShell 是一种恶意脚本,通常由攻击者上传到 Web 服务器上,用于远程控制服务器、执行命令、窃取数据或进一步渗透网络。

WebShell 的特点

  1. 隐蔽性:WebShell 通常伪装成正常的 Web 文件(如 PHP、ASP、JSP 文件),以避免被管理员发现。

  2. 远程控制:攻击者可以通过 Web 浏览器或工具远程访问 WebShell,执行命令或操作文件。

  3. 持久性:WebShell 通常会被设置为在服务器重启后仍然存在,以便攻击者可以长期控制服务器。

WebShell 应急响应的步骤

  1. 确认 WebShell 的存在

    • 使用安全工具(如杀毒软件、Web 应用防火墙)扫描 Web 目录,查找可疑文件。

    • 检查 Web 服务器的访问日志,寻找异常请求或文件上传记录。

  2. 隔离受感染的系统

    • 将受感染的服务器从网络中隔离,防止攻击者进一步渗透或扩散威胁。

    • 如果无法立即隔离,可以暂时关闭 Web 服务或限制访问。

  3. 分析 WebShell

    • 检查 WebShell 文件的创建时间、修改时间和访问时间,确定攻击的时间线。

    • 分析 WebShell 的功能,了解攻击者可能执行的操作。

  4. 清除 WebShell

    • 删除 WebShell 文件,并确保服务器上没有其他恶意文件。

    • 检查系统配置文件(如 .htaccessweb.config),确保没有被篡改。

  5. 修复漏洞

    • 确定攻击者是如何上传 WebShell 的,修复相关的漏洞(如文件上传漏洞、SQL 注入漏洞)。

    • 更新 Web 应用程序和服务器软件,确保没有已知的安全漏洞。

  6. 恢复系统

    • 从备份中恢复受影响的文件,确保系统恢复到安全状态。

    • 重新启动 Web 服务,并监控系统以确保没有异常活动。

  7. 加强安全措施

    • 实施更强的访问控制策略,限制对 Web 目录的写入权限。

    • 定期扫描 Web 目录,查找可疑文件。

    • 使用 Web 应用防火墙(WAF)来检测和阻止恶意请求。

了解了什么是webshell后我们直接来看题目

解题方法

1.1 静态检测

我们可以通过查找特定后缀的文件来进行初步排查,例如:.asp.php.jsp.aspx 等。然后,进一步在这些文件中搜索特定的特征码或危险函数,例如 exec()eval()system() 等。

优点:这种方法快速且方便,对于已知的 WebShell 检测准确率较高,且部署简单,只需一个脚本即可完成。

缺点:存在较高的漏报率和误报率,无法检测到零日漏洞(0day)类型的 WebShell,且容易被攻击者绕过。

1.2 动态检测

WebShell 在执行时会表现出一些动态特征。我们可以将这些特有的 HTTP 请求和响应特征加入入侵检测系统(IDS)中,以检测所有的 HTTP 请求。例如,如果 WebShell 执行系统命令,通常会启动特定的进程,如在 Linux 下启动 bash,在 Windows 下启动 cmd

1.3 日志检测

使用 WebShell 通常不会在系统日志中留下记录,但会在网站的 Web 日志中留下访问数据和提交记录。通过分析大量的日志文件,可以建立请求模型来检测异常行为。例如,如果一个通常只有 GET 请求的页面突然出现了 POST 请求并且返回代码为 200,这可能是 WebShell 活动的迹象。

2.工具排查

这里就不展示了,因为在比赛中会有断网的现象(当然也可以用D盾就是了)。

想了解的可以直接看玄机靶场-应急响应webshell查杀_哔哩哔哩_bilibili

第一题

开启环境后,用xhell连接

web题目一般都在/var/www/html中

我们直接进去看看

上面说了webshell一般文件类似,所以我们可以直接查看php文件

查看html目录下的的php并没有发现答案,那么就只能在html的子目录下,这里用find定位一下php文件的位置

find ./ type f -name "*.php" 

 可以看到很多的PHP文件,我们总不能一个一个去看吧

所以我们了解一下可疑函数

可疑函数调用

  • WebShell 通常会使用一些危险的函数来执行系统命令或代码,如:

    • PHPeval()system()exec()shell_exec()passthru()assert()base64_decode()

    • ASPExecute()Eval()CreateObject()

    • JSPRuntime.getRuntime().exec()

编码和解码

  • WebShell 经常使用编码和解码技术来隐藏其真实意图,如 Base64 编码:

    • 示例eval(base64_decode('encoded_string'));

文件操作

  • WebShell 可能会包含文件操作函数,用于读取、写入或修改文件:

    • PHPfopen()fwrite()file_get_contents()file_put_contents()

    • ASPFileSystemObject

网络操作

  • WebShell 可能会包含网络操作函数,用于与远程服务器通信:

    • PHPfsockopen()curl_exec()file_get_contents('http://...')

    • ASPWinHttp.WinHttpRequest

定位可疑文件

我们可以尝试定位一些特殊的后缀文件,例如:.asp.php.jsp.aspx

命令列如:

find /var/www/html -type f -name "*.jsp" | xargs grep "exec("
find /var/www/html -type f -name "*.php" | xargs grep "eval("
find /var/www/html -type f -name "*.asp" | xargs grep "execute("
find /var/www/html -type f -name "*.aspx" | xargs grep "eval("

由于我们前面已经查找知道了这题是php文件,那么只用php的命令就好了

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

查找前要先退到root的根目录下

我们直接去查看这三个文件就好了

这里就找到了第一题的答案

flag{027ccd04-5065-48b6-a32d-77c704a5e26d}


第二题

这里看到工具的shell

我们就去分析一下gz.php的代码

  1. @session_start();:启动会话,用于在脚本中启用会话管理。

  2. @set_time_limit(0);:设置脚本的最大执行时间为无限制,防止脚本因执行时间过长而被终止。

  3. @error_reporting(0);:关闭错误报告,避免在脚本执行过程中显示错误信息。

  4. function encode($D, $K) {...}:定义一个名为 encode 的函数,接受两个参数 $D 和 $K。该函数可能用于对数据进行加密或解密,通常使用异或操作或其他简单的加密算法。

  5. $payloadName$key 和 $data:定义变量用于存储会话变量名、密钥和从 php://input 流中读取的数据。

  6. if ($data != false) {...}:检查是否成功从 php://input 读取数据,如果读取成功则执行后续代码。

  7. if (isset($_SESSION[$payloadName])) {...}:检查会话变量 $payloadName 是否已设置。

  8. if (strpos($payload, "getBasicsInfo") == false) {...}:检查 $payload 变量中是否包含字符串 "getBasicsInfo"

  9. eval($payload);:如果 $payload 包含 "getBasicsInfo" 字符串,则执行 $payload 中的 PHP 代码。

  10. echo encode(@run($data), $key);:如果 $data 包含 "getBasicsInfo" 字符串,则执行 @run($data) 函数,并将结果编码后输出。

 看下来只有前三句比较不一样,查了资料后发现是哥斯拉

哥斯拉病毒是一种Java后门木马,通常用于攻击并控制Web服务器。特征就包括:

  1. @session_start(); - 开启一个会话。
  2. @set_time_limit(0); - 设置脚本执行时间为无限。
  3. @error_reporting(0); - 关闭所有错误报告。

所以我们找到它的github地址进行MD5加密即可; 

https://github.com/BeichenDream/Godzilla

第二题的答案就出来了

flag{39392DE3218C333F794BEFEF07AC9257}

第三题

既然说黑客隐藏shell了,那我们肯定需要用到命令ls -la进行查找

ls -la 是一个非常有用的命令,可以帮助您查看当前目录下的所有文件和目录的详细信息,包括权限、所有者、大小和修改时间等。通过这个命令,您可以更好地管理和监控文件系统中的内容。

做第一题的时候,我们查看到了三个可疑文件,gz.php不是隐藏的就排除掉了

在查找.Mysqli.php时发现ls查看不了,只有用ls -la 才看到

题目说了要MD5加密

/var/www/html/include/Db/.Mysqli.php

用MD5加密后得到第三题的答案

flag{AEBAC0E58CD6C5FAD1695EE4D1AC1919}

第四题

什么是不死马

不死马(也称为“不死后门”或“持久化后门”)是一种恶意软件或攻击技术,旨在确保攻击者即使在系统重启或管理员采取某些清理措施后,仍然能够保持对受感染系统的访问权限。这种技术通常用于维持对目标系统的长期控制,即使系统管理员尝试清除恶意软件或修复漏洞。

不死马的特点

  1. 持久性:不死马通过多种机制确保在系统重启后仍能重新激活。

  2. 隐蔽性:不死马通常会隐藏自己的存在,避免被管理员或安全工具检测到。

  3. 多样性:不死马可以通过多种方式实现持久化,例如修改系统启动项、注册表、计划任务等。

常见的不死马技术

  1. 修改启动项

    • 在 Linux 系统中,修改 /etc/rc.local 或 /etc/init.d/ 中的脚本。

    • 在 Windows 系统中,修改注册表启动项(如 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run)。

  2. 创建计划任务

    • 在 Windows 系统中,创建计划任务以定期执行恶意代码。

    • 在 Linux 系统中,使用 cron 任务来实现类似的功能。

  3. 隐藏文件或进程

    • 使用 rootkit 技术隐藏恶意文件或进程,使其不易被检测到。

  4. 利用合法服务

    • 将恶意代码注入到合法的系统服务或进程中,利用这些服务的自动启动特性来实现持久化。

  5. 修改系统二进制文件

    • 替换或修改系统的关键二进制文件(如 lsps 等),使其在运行时加载恶意代码。

检测和清除不死马

  1. 使用安全工具

    • 使用反病毒软件或 rootkit 检测工具(如 chkrootkitrkhunter)扫描系统。

  2. 检查启动项和计划任务

    • 在 Linux 系统中,检查 /etc/rc.local/etc/init.d/ 和 cron 任务。

    • 在 Windows 系统中,检查注册表启动项和计划任务。

  3. 监控系统日志

    • 检查系统日志(如tail -f /var/log/apache2/access.log tail -f /var/log/nginx/access.log)以发现异常活动。

  4. 文件完整性检查

    • 使用工具(如 tripwire)检查系统文件的完整性,发现被修改的文件。

我们到日志中去看看

我们看一下access.log文件

cat access.log

这里看到top.php有危险函数

继续往下看可以看到这个文件的路径

这里解释一下phpinfo() 

phpinfo() 是 PHP 中的一个内置函数,用于输出关于 PHP 配置的详细信息。这个函数会生成一个包含大量信息的 HTML 页面,显示 PHP 的版本、加载的扩展、服务器信息、环境变量、PHP 配置选项(php.ini 设置)等。

phpinfo() 输出的信息通常包括以下部分:

  1. PHP 版本:当前 PHP 的版本号。

  2. 服务器信息:Web 服务器(如 Apache、Nginx)的版本和配置。

  3. PHP 环境:PHP 的环境变量(如 $_SERVER$_ENV)。

  4. PHP 配置php.ini 文件中的配置选项。

  5. 加载的扩展:当前 PHP 环境中加载的所有扩展模块。

  6. HTTP 头信息:请求的 HTTP 头信息。

  7. PHP 许可证信息:PHP 的许可证信息

phpinfo() 会暴露大量关于服务器和 PHP 配置的信息,可能会被攻击者利用。因此,在生产环境中应避免公开 phpinfo() 的输出。 
这里我们去查看一下top.php文件看我们的推测有没有问题

看到跟我们猜的没错,这也是不死马的格式

我们拿到路径用MD5加密一下

/var/www/html/wap/top.php

加密后就得到第四题的答案

flag{EEFF2EABFD9B7A6D26FC1A53D3F7D1DE}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值