网页挂马排查思路
第一步:定位恶意代码位置
挂马代码通常被注入到网站的静态页面或数据库中
- 查看网站源代码:
- 比对原始文件:从备份中恢复网站的原始文件,然后与当前服务器上的文件进行比对。使用
diff
或Beyond Compare
等工具可以快速找出被修改过的文件 - 查找可疑关键字:在网站所有文件中搜索一些可疑的 HTML 标签或 JavaScript 代码,例如:
<script>
标签指向外部可疑域名<iframe>
标签,通常是display:none
或宽高为0,用于隐藏恶意页面eval
、document.write
等可能用于动态加载恶意脚本的函数
- 比对原始文件:从备份中恢复网站的原始文件,然后与当前服务器上的文件进行比对。使用
- 检查数据库:如果网站内容是动态生成的,攻击者可能会修改数据库中的字段(如文章内容、广告位),注入恶意代码
- 检查数据库备份:将数据库备份恢复到本地进行分析,与当前数据库进行比对
- 搜索恶意代码:在数据库的
content
、description
等字段中搜索<script>
、<iframe>
等关键字。
- 分析日志文件:
- Web日志:检查 Web 服务器的访问日志(
access.log
),看是否有异常的POST
请求,这可能与数据库注入有关 - 操作系统日志:检查操作系统的事件日志,看是否有异常的登录或文件修改记录
- Web日志:检查 Web 服务器的访问日志(
第二步:分析恶意代码行为
找到恶意代码后,不要立即删除,而是先分析它的行为。这有助于我们了解攻击的完整链条
- 代码解密:挂马代码通常会经过混淆或加密,以逃避检测。你需要对代码进行解密,以还原其真实功能
- 行为分析:
- 下载木马:恶意代码是否会从某个URL下载并执行可执行文件?
- 漏洞利用:它是否利用了浏览器或插件(如 Flash、Java)的漏洞?
- 数据窃取:它是否会窃取用户数据(如登录凭据)并发送到攻击者的服务器?
- 威胁情报查询:将恶意代码中出现的域名、IP 地址或文件哈希值提交到威胁情报平台进行查询,了解其是否与已知的恶意活动相关
第三步:清除与加固
在完成分析后,就可以进行清除和加固工作
- 清除恶意代码:
- 删除文件:彻底删除被注入恶意代码的文件,并从备份中恢复
- 修复数据库:删除数据库中被注入的恶意内容
- 漏洞修复:
- 程序漏洞:如果挂马是通过Web应用漏洞(如SQL注入、文件上传)实现的,需要立即修复这些漏洞
- 补丁升级:升级操作系统、Web服务器、网站程序和插件到最新版本,以修补已知的安全漏洞
- 权限收紧:
- 最小权限原则:Web 服务器进程(如Nginx、Apache)应以低权限用户运行,限制其对文件系统的写权限
- 文件权限:对网站目录和文件设置严格的读写权限,防止被再次修改