应急响应-Webshell
文章目录
- 一、Webshell概述
- 什么是Webshell
- Webshell分类
- 基于编程语言
- 基于文件大小/提供的功能多少
- Webshell 检测方法
- 二、常规处置方法
- 三、技术指南
- 1、初步预判
- 2、 Webshell排查
- 3、Web日志分析(查找攻击路径及失陷原因)
- 4、系统排查
- 4.1 Windows
- 4.2 Linux
- 5、系统日志
- 6、流量分析
- 案例
一、Webshell概述
什么是Webshell
shell的概念源于操作系统,就是一个解析字符串命令并执行的程序。为了动态执行某些功能,编程语言一般会提供一些函数,将用户输入的字符串解析为语言代码,或解析为操作系统命令。典型的PHP一句话木马:
<?phpeval($_GET['cmd']);
?>
通过网络IO(socket API),获得cmd,eval()将cmd字符串当作操作系统命令执行。Webshell就是指JSP、ASP、PHP等编程语言(网页脚本)的程序,一般带有命令执行、文件操作等功能。通过Web服务器来通信和调用,并具有shell的功能,称为Webshell。

Webshell分类
基于编程语言
理论上只要是编程语言都可以,只要实现相应的Web框架就行。
基于文件大小/提供的功能多少
- 大马
- 小马
- 一句话木马
Webshell 检测方法
- 基于流量:通过流量还原数据包,并对HTTP数据包中的字符串做正则匹配
- 基于文件:
- 计算文件的哈希值,创建Webshell样本hash库
- 检测文件属性(创建时间、文件权限等)
- 基于日志:分析日志中进行了什么可疑行为,溯源Webshell
二、常规处置方法
- 入侵时间确定
- Webshell 文件的创建时间 —> 攻击的时间范围(根据此时间进行溯源分析、追踪攻击者活动路径)
- Web日志分析
- 重点关注入侵时间前后的日志记录,寻找攻击路径、所利用的漏洞
- 漏洞分析
- 通过日志中发现的问题,针对攻击者的活动路径,排查网站存在的漏洞,进行分析
- 漏洞复现
- 对发现的漏洞进行复现,还原攻击者的活动路径
- 漏洞修复
- 清除Webshell,修复存在的漏洞
三、技术指南
1、初步预判
1)事件表现:植入webshell,系统可能出现的异常现象
- 网页被篡改
- 安全设备告警2)判断Webshell事件发生时间
- 根据异常现象发生能时间,结合Webshell创建时间,定位事件发生的时间段
3)判断系统架构(定位系统可能存在的漏洞)
| 项目 | 内容 |
|---|---|
| 服务器 | Windows、Linux等 |
| CMS | Jeecms、Wordpress、Drupal、TRS WCM、Phpcms、Dedecms等 |
| 中间件 | Tomcat、IIS、Apache、WebLogics、JBoss、Websphere、Jetty等 |
| 框架 | Struts2、Thinkphp、Spring、Shiro、Fastjson等 |
| 数据库 | MySQL |
| 脚本语言 | ASP、PHP、JSP等 |
| 业务架构 | 前端网页是否是后端通过FTP上传的 等 |
2、 Webshell排查
Windows:D盾、河马
Linux:河马、常用搜索命令

3、Web日志分析(查找攻击路径及失陷原因)
Windows下常见的中间件/Web服务器/HTTP服务器/Web容器默认日志路径

Linux下的路径

常用日志检索的命令:

4、系统排查
攻击者上传Webshell之后,往往还会执行进一步操作,如提权、添加用户、写入系统后门等,实现持久化驻留。因此还需要做系统排查。
4.1 Windows
到了系统排查这一步,其实是利用操作系统提供的相关组件与配置信息,查找攻击者的痕迹。在Win10里,Windows提供的相关工具在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools都有相应快捷方式,打开到文件所在目录,这些工具几乎都在C:\Windows\system32目录下。其他版本的,请自行百度

在Windows Server 2019下,按win键,直接搜索“管理工具”,

用户信息排查
- 用户排查:
net user查看用户信息 (看不到隐藏用户)net user username查看某个账户的详细信息
- 隐藏用户排查
- 打开【计算机管理】->【本地用户和组】(家庭版无该组件)
进程排查
- 进程名称(异常、不常见的名称要注意)
- 进程的路径、CPU占用信息
服务排查
- 服务说到底就是进程。比较新的Windows可以直接在任务管理器中看到服务

- 我们可以在【系统信息】->【软件环境】->【服务】下,看到服务的启动情况及其对应启动文件
网络连接排查
netstat -ano-->查看当前网络连接情况,定位可疑的ESTABLISHED连接
启动项
可以在按win键搜【系统配置】,也可以在命令行输msconfig,下图为我新装的win server 2019

计划任务
任务计划日志通常存放在C:\Windows\System32\Tasks目录,可以直接打开系统的【任务计划程序】进行查看

文件排查
攻击想进一步扩大战果,就要上传一些远控木马等恶意文件。我们需要排查相关敏感目录,确定是否存在异常文件。
- temp相关目录
C:\Windows\tempC:\users\Administrator\AppData\Local\temp
- recent 相关目录
C:\Documents and Settings\Administrator\recentC:\Documents and Settings\Default User\recent
重点查看攻击时间范围内的文件,比如在非系统System32和Syswow64目录下的svchost.exe文件基本为恶意文件,.ps1为Powershell文件,可以直接编辑查看。
4.2 Linux
用户排查
cat /etc/passwd,是否有未知用户- 重点分析
UID为 0 的用户

进程排查 ps aux, 优先关注CPU、内存占用比较高的进程

-
根据PID,使用
ls -alh /proc/PID,查看其对应可执行程序,或使用lsof -p PID。 -

-
lsof -i:port,查看指定端口对应的可执行程序 -

-
查看隐藏进程,需下载
unhide工具 -
查看系统运行的服务
systemctl --type service
网络连接
netstat -anp,优先关注对外连接的进程,或连接高危端口的进程
netstat 命令详解


启动项
Linux中,系统启动内核挂载跟文件系统,然后启动并运行一个init程序,init 是非内核进程中第一个被启动运行的,PID为1。init 读取其配置文件来进行初始化工作,init 的配置文件如下
| 操作系统 | 配置文件 |
|---|---|
| CentOS 5 | /etc/inittab |
| CentOS 6 | /etc/inittab、/etc/init/*.conf |
| CentOS 7 | /etc/systemd/ststem、/usr/lib/systemd/system |
init 进程的会运行开机启动程序,Linux 为不同的场合分配不同的开机启动程序,有称为“运行级别”(runlevel)
| 运行级别 | 说明 |
|---|---|
| 运行级别0 | 系统停机状态,系统默认运行级别不能为0,否则不能正常启动 |
| 运行级别1 | 单用户工作状态,root 权限,用于系统维护,禁止远程登录 |
| 运行级别2 | 多用户状态(没有NFS) |
| 运行级别3 | 完全的多用户状态(有NFS),登陆后进入控制台命令行模式 |
| 运行级别4 | 系统未使用,保留 |
| 运行级别5 | X11 控制台,登陆后进入GUI模式 |
| 运行级别6 | 系统正常关闭并重启,系统默认运行级别不能为6,否则将不能正常启动 |
7个运行级别对应7个目录,在/et/c/rc[0-6].d,里面的软链接,真实文件都在/etc/rc.d/init.d(内核较新或者不同发行版目录会有差异)。init.d目录通常存放一些脚本,类似Windows中的注册表;rc.local文件会在用户登陆前读取,每次系统启动时都会执行一次。(内核较新的都用systemd,这些文件会舍弃,下图是rc.local文件的内容)
关于systemd

cat /etc/init.d/rc.localcat /etc/rc.localls -alt /etc/init.d
定时任务
crontab可以设置定时任务,直接用crontab -e编辑的是用户级别的定时任务,保存在/var/spool/cron/crontabs/{user}下,/etc/crontab是系统级别的定时任务;/etc下还有cron.daily等周期性执行脚本。
crontab -l,查看当前用户的定时任务,检查是否有后门木马程序启动相关信息ls /etc/cron*查看 etc 目录下系统及定时任务相关文件
文件排查
ls -al查看隐藏文件find / -mtime 0查看最近24小时内修改过的文件stat filename查看文件的修改、创建、访问时间ls -alh /tmp查看 tmp 目录文件ls -alh /root/.ssh查看是否存在恶意 ssh 公钥
5、系统日志
6、流量分析
案例
相关文章:
应急响应-Webshell
文章目录 一、Webshell概述什么是WebshellWebshell分类基于编程语言基于文件大小/提供的功能多少 Webshell 检测方法 二、常规处置方法三、技术指南1、初步预判2、 Webshell排查3、Web日志分析(查找攻击路径及失陷原因)4、系统排查4.1 Windows4.2 Linux …...
【调整奇数偶数顺序】
调整奇数偶数顺序 1.题目 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 2.题目分析 这道题首先用到的方法是冒泡排序的思想,首先通过冒泡排序…...
Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
1 Ubuntu临时IP设置2 Ubuntu静态IP设置3 多个网卡IP设置4 关闭、启动网卡前提是Linux下的网络桥接不能用,不能通过识别网卡来添加IP地址,只能通过静态写死的方式去设置IP 对于CentOS版本下的静态IP的配置可以参考这篇 Linux系统静态IP配置(CentOS) 1 Ubuntu临时IP设置 Li…...
2023-08-11 LeetCode每日一题(矩阵对角线元素的和)
2023-08-11每日一题 一、题目编号 1572. 矩阵对角线元素的和二、题目链接 点击跳转到题目位置 三、题目描述 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1࿱…...
Github 80 个键盘快捷键和一些搜索技巧的备忘清单
文章目录 键盘快捷键站点范围的快捷方式资料库源代码编辑源码浏览注释问题和拉取请求列表问题和拉取请求拉取请求的变化项目板通知网络图 搜索技巧范围搜索文件路径完全符合布尔运算符基于仓库的条件基于 issue 的条件基于用户的条件 参考网址 键盘快捷键 站点范围的快捷方式 …...
神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法
概念 逻辑回归是一种用于分类问题的机器学习算法,而梯度下降是优化算法,用于更新模型参数以最小化损失函数。在逻辑回归中,我们使用梯度下降算法来找到最优的模型参数,使得逻辑回归模型能够更好地拟合训练数据。 逻辑回归中的梯…...
npm ERR! cb.apply is not a function
当NPM版本过低导致 npm ERR! cb.apply is not a function 1. win r 打开运行,输入%appdata% 2. 删除 npm 和 npm-cache 文件夹 3. 执行npm cache clean --force命令 如果还不行,就执行卸载Node.js重新安装。...
iShot Pro for Mac 2.3.9最新中文版
iShot Pro是一款非常优秀的Mac截图软件,软件非常易于操作,主页面还设置了学习教程,可以轻松玩转软件所有功能,并且功能非常强大,不仅可以实现多种截图方式,还可以进行标注、贴图、取色、录屏、录音、OCR识别…...
FiboSearch Pro – Ajax Search for WooCommerce 商城AJAX实时搜索插件
FiboSearch Pro是最受欢迎的WooCommerce 产品搜索插件。它为您的用户提供精心设计的高级 AJAX 搜索栏,并提供实时搜索建议。默认情况下,WooCommerce 提供非常简单的搜索解决方案,没有实时产品搜索,甚至没有 SKU 搜索。FiboSearch&…...
k8s dns 解析service异常
查看kube-dns日志 for p in $(kubectl get pods --namespacekube-system -l k8s-appkube-dns -o name); \ do kubectl logs --namespacekube-system $p; done k8s教程(service篇)-总结_阿甘兄的技术博客_51CTO博客...
P6464 [传智杯 #2 决赛] 传送门
[P6464 传智杯 #2 决赛] 传送门 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 问题描述:增加一个传送门,求最小的任意点对间距离和最小值。 思路: n很小,100左右。又要求各个点对之间的距离,dijkstra、spfa不行…...
如何通过CSS选择器选择一个元素的子元素?如何选择第一个子元素和最后一个子元素?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 选择一个元素的子元素⭐ 选择第一个子元素和最后一个子元素⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…...
智能家居(2)---串口通信(语音识别)控制线程封装
封装语音线程(语音通过串口和主控设备进行交流)实现对智能家居中各种灯光的控制 mainPro.c(主函数) #include <stdio.h> #include "controlDevice.h" #include "inputCommand.h" #include <pthread.h>struct Devices …...
MySql主从复制1032错误(Slave_IO_Running: Yes Slave_SQL_Running: No)
MySql主从复制1032错误(Slave_IO_Running: Yes Slave_SQL_Running: No) Slave_IO_Running: Yes Slave_SQL_Running: No报错: Last_SQL_Error: Could not execute Delete_rows event on table hr.test; Can’t find record in ‘test’, Erro…...
毕业论文格式设置总结
毕业论文格式 一般每个学校都有一些自己的论文格式,不过也有一些是没有很详细的。 1、总体格式 论文标题:https://www.cnrencai.com/lunwen/lunwengeshi/870479.html?ivk_sa1024320u论文格式:https://wenku.baidu.com/view/c96a82ea432891…...
7-3 整数四则运算
本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B 结果”顺序输出和、差、积、商。 输入样例: 3 2输出样例: 3 2 5 3 - …...
React 全栈体系(一)
第一章 React入门 一、React简介 1. 是什么? 是一个将数据渲染为HTML视图的开源JavaScript库。 2. 谁开发的? 由Facebook开源 3. 为什么要学? 原生JavaScript操作DOM繁琐,效率低(DOM-API 操作 UI) 使…...
SpringBoot代理访问本地静态资源400 404
SpringBoot代理访问静态资源400 404 背景:pdf文件上传到linux服务器上,使用SpringBoot代理访问问题:访问过程中可能会出现400、404问题 前提:保证有文件,并且文件路径正确 SpringBoot如何配置静态资源代理࿰…...
Java导出数据到Excel
系列文章目录 文章目录 系列文章目录前言一、为什么需要导出数据到Excel?二、使用Java导出数据到Excel的步骤1.添加依赖2.编写导出逻辑3.运行测试总结前言 当今数据处理的场景中,Excel仍然是一个不可或缺的工具,用于存储、分析和共享数据。在Java应用程序中,有时候需要将数…...
IDEA常用设置与maven项目部署
目录 前言 一、Idea是什么 二、Idea的优点 三、Idea的常用设置 主题设置 设置鼠标悬浮提示 忽略大小写提示 自动导包 取消单行显示Tabs 设置字体 配置类文档注释信息模版 设置文件编码 设置自动编译 水平或者垂直显示代码 快捷方式改成eclipse 设置默认浏览器…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
