应急响应-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 设置默认浏览器…...
Blender插件使用指南:GI-Model-Importer建模工具详解
Blender插件使用指南:GI-Model-Importer建模工具详解 【免费下载链接】GI-Model-Importer Tools and instructions for importing custom models into a certain anime game 项目地址: https://gitcode.com/gh_mirrors/gi/GI-Model-Importer 欢迎来到GI-Mode…...
避坑指南:R语言中XGBoost回归建模的5个常见错误与SHAP分析的正确姿势
避坑指南:R语言中XGBoost回归建模的5个常见错误与SHAP分析的正确姿势 在数据科学领域,XGBoost因其出色的预测性能而广受欢迎,而SHAP(Shapley Additive Explanations)则为模型解释提供了强大的数学基础。然而࿰…...
别让SDF警告淹没你!芯片后仿真中那些‘不起眼’却至关重要的VCS编译选项详解
别让SDF警告淹没你!芯片后仿真中那些‘不起眼’却至关重要的VCS编译选项详解 当数字IC设计进入后仿真阶段,工程师们常常会陷入海量警告信息的泥潭。特别是当SDF(Standard Delay Format)文件反标时产生的各类警告,往往…...
VS2019项目配置全解析:从附加库到包含目录的实战指南
1. VS2019项目配置基础概念解析 刚接触VS2019时,我完全被各种配置选项搞晕了。特别是当需要引入第三方库时,附加库、包含目录这些概念简直让人抓狂。记得第一次配置OpenCV项目,光是让编译器找到头文件就折腾了大半天。后来才发现,…...
5个高效图像压缩技巧:MozJPEG优化实践指南
5个高效图像压缩技巧:MozJPEG优化实践指南 【免费下载链接】mozjpeg Improved JPEG encoder. 项目地址: https://gitcode.com/gh_mirrors/mo/mozjpeg MozJPEG作为一款优秀的开源压缩库,是网页开发者和图像优化工作者的必备图像优化工具。它基于li…...
从Google Drive下载文件的终极解决方案:gdrivedl实战指南
从Google Drive下载文件的终极解决方案:gdrivedl实战指南 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 你是否曾经遇到过这样的情况:需要从Google Drive下载一个大文件…...
针对C++开源项目的AI工具讲解。我将它们分为两大类,便于理解
以下是针对C开源项目的AI工具讲解。我将它们分为两大类,便于理解: C开发者使用AI工具来提升开源项目开发效率(代码补全、调试、重构、文档生成等)。用C开发的开源AI工具/框架(这些工具本身是C开源项目,常用…...
Python 学习笔记:学习路线图规划
1989 年的圣诞节期间,时任荷兰数学和计算机科学研究学会(CWI)研究员的 Guido van Rossum[1] 决定基于 ABC 语言设计并实现一门新的脚本编程语言,最初目的是用于替代 Unix shell 和部分 C 程序,以承担 Amoeba 分布式操作…...
用STM32F103C8T6和NRF24L01自制遥控器,从硬件选型到代码调试的完整避坑指南
STM32F103C8T6与NRF24L01遥控器开发实战:从硬件设计到软件调试的全流程解析 在创客和嵌入式开发领域,无线遥控系统一直是热门话题。无论是机器人控制、无人机飞行还是智能家居应用,稳定可靠的遥控器都是不可或缺的核心组件。本文将详细介绍如…...
突破抢票难题:DamaiHelper自动化抢票工具全攻略
突破抢票难题:DamaiHelper自动化抢票工具全攻略 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper DamaiHelper是一款基于Python开发的大麦网自动化抢票工具,通过浏览器自动化…...
