应急响应-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),获得cmdeval()cmd字符串当作操作系统命令执行。Webshell就是指JSP、ASP、PHP等编程语言(网页脚本)的程序,一般带有命令执行、文件操作等功能。通过Web服务器来通信和调用,并具有shell的功能,称为Webshell。
在这里插入图片描述

Webshell分类

基于编程语言

理论上只要是编程语言都可以,只要实现相应的Web框架就行。

基于文件大小/提供的功能多少

  • 大马
  • 小马
  • 一句话木马

Webshell 检测方法

  • 基于流量:通过流量还原数据包,并对HTTP数据包中的字符串做正则匹配
  • 基于文件:
    • 计算文件的哈希值,创建Webshell样本hash库
    • 检测文件属性(创建时间、文件权限等)
  • 基于日志:分析日志中进行了什么可疑行为,溯源Webshell

二、常规处置方法

  1. 入侵时间确定
    • Webshell 文件的创建时间 —> 攻击的时间范围(根据此时间进行溯源分析、追踪攻击者活动路径)
  2. Web日志分析
    • 重点关注入侵时间前后的日志记录,寻找攻击路径、所利用的漏洞
  3. 漏洞分析
    • 通过日志中发现的问题,针对攻击者的活动路径,排查网站存在的漏洞,进行分析
  4. 漏洞复现
    • 对发现的漏洞进行复现,还原攻击者的活动路径
  5. 漏洞修复
    • 清除Webshell,修复存在的漏洞

三、技术指南

1、初步预判

1)事件表现:植入webshell,系统可能出现的异常现象
- 网页被篡改
- 安全设备告警2)判断Webshell事件发生时间
- 根据异常现象发生能时间,结合Webshell创建时间,定位事件发生的时间段
3)判断系统架构(定位系统可能存在的漏洞)
项目内容
服务器Windows、Linux等
CMSJeecms、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\temp
    • C:\users\Administrator\AppData\Local\temp
  • recent 相关目录
    • C:\Documents and Settings\Administrator\recent
    • C:\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系统未使用,保留
运行级别5X11 控制台,登陆后进入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.local
  • cat /etc/rc.local
  • ls -alt /etc/init.d

任务计划

有空再写

文件排查

5、系统日志

6、流量分析

案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS中的position属性有哪些值,并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ static⭐ relative⭐ absolute⭐ fixed⭐ sticky⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…

通达OA SQL注入漏洞【CVE-2023-4166】

通达OA SQL注入漏洞【CVE-2023-4166】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

新的 Python URL 解析漏洞可能导致命令执行攻击

Python URL 解析函数中的一个高严重性安全漏洞已被披露&#xff0c;该漏洞可绕过 blocklist 实现的域或协议过滤方法&#xff0c;导致任意文件读取和命令执行。 CERT 协调中心&#xff08;CERT/CC&#xff09;在周五的一份公告中说&#xff1a;当整个 URL 都以空白字符开头时&…

gitlab修改远程仓库地址

目录 背景&#xff1a; 解决&#xff1a; 1.删除本地仓库关联的远程地址&#xff0c;添加新的远程仓库地址 2.直接修改本地仓库关联的远程仓库地址 3.打开.git隐藏文件修改远程仓库地址 4.拉取代码报错(git host key verification failed) 背景&#xff1a; 公司搬家&#…

image has dependent child images

问题&#xff1a;很多none的镜像无法被删除 解决过程&#xff1a; 1、通过 docker image prune -f 提示可删除为 0 2、直接进行删除报错&#xff1a; docker rmi 8f5116cbc201Error response from daemon: conflict: unable to delete 8f5116cbc201 (cannot be forced) - im…

银河麒麟安装php7.1.33

银河麒麟V10兼容CentOS 8 安装过程与CentOS类似。 TencentOS3.1安装PHPNginxredis测试系统_乐大师的博客-CSDN博客 可以参考之前我写的文章。 不过有2个细节不同&#xff0c;下面说下。 问题1&#xff1a;编译错误提示“error:off_t undefined” 解决方法&#xff1a; 编…

宋浩线性代数笔记(五)矩阵的对角化

本章的知识点难度和重要程度都是线代中当之无愧的T0级&#xff0c;对于各种杂碎的知识点&#xff0c;多做题复盘才能良好的掌握&#xff0c;良好掌握的关键点在于&#xff1a;所谓的性质A与性质B&#xff0c;是谁推导得谁~

Ubuntu22.04复现SHADEWACHER(手动安你就慢了)

因为我是打算跑TC数据集&#xff0c;所以跳过audit安装。 我的Ubuntu使用的是清华源。 1. Parser Setup 1.1 g apt install g1.2 neo4j Ubuntu22.04换什么源都会导致无法定位软件包&#xff0c;添加neo4j的官方源又会导致不信任的源。 22.04以下的版本&#xff0c;直接用命…

MySQL 根据多字段查询重复数据

MySQL 根据多字段查询重复数据 在实际的数据库应用中&#xff0c;我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能&#xff0c;让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据&#xff0c;并提供…

SIFT 算法 | 如何在 Python 中使用 SIFT 进行图像匹配

介绍 人类通过记忆和理解来识别物体、人和图像。你看到某件事的次数越多,你就越容易记住它。此外,每当一个图像在你的脑海中弹出时,它就会将该项目或图像与一堆相关的图像或事物联系起来。如果我告诉你我们可以使用一种称为 SIFT 算法的技术来教机器做同样的事情呢? 尽管…

C语言——动态内存函数(malloc、calloc、realloc、free)

了解动态内存函数 前言&#xff1a;一、malloc函数二、calloc函数三、realloc函数四、free函数 前言&#xff1a; 在C语言中&#xff0c;动态内存函数是块重要的知识点。以往&#xff0c;我们开辟空间都是固定得&#xff0c;数组编译结束后就不能继续给它开辟空间了&#xff0…

贴吧照片和酷狗音乐简单爬取

爬取的基本步骤 很简单&#xff0c;主要是两大步 向url发起请求 这里注意找准对应资源的url&#xff0c;如果对应资源不让程序代码访问&#xff0c;这里可以伪装成浏览器发起请求。 解析上一步返回的源代码&#xff0c;从中提取想要的资源 这里解析看具体情况&#xff0c;一…

浅谈现代医院手术室IT供配电系统的设计与研究

安科瑞 华楠 &#xff3b;摘要&#xff3d; 随着人们的生活水平的不断提高&#xff0c;医疗条件的不断改善&#xff0c;人们对健康越来越重视同时对医疗条件的要求也越来越高&#xff0c;对医院手术室医疗设施提出了新的要求。以往医院普通手术室状况已不能满足人们的要求&…

腾讯云CVM服务器端口在安全组中打开!

腾讯云服务器CVM端口怎么开通&#xff1f;腾讯云服务器端口是通过配置安全组规则来开通的&#xff0c;腾讯云服务器网以开通80端口为例来详细说下腾讯云轻量应用服务器开启端口的方法&#xff0c;其他的端口的开通如8080、1433、443、3306、8888等端口也适用于此方法&#xff0…

基于Yolov5与LabelMe训练自己数据的图像分割完整流程

基于Yolov5与LabelMe训练自己数据的实例分割完整流程 1. Yolov5配置2. 创建labelme虚拟环境4. 接下来开始使用labelme绘制分割数据集4.1 json to txt4.2 划分数据集(可分可不分) 5. 训练 1. Yolov5配置 参照这边文章&#xff1a; https://blog.csdn.net/ruotianxia/article/de…

okcc对接ASR平台,okcc客户投诉的安全问题

客户投诉: 客户为什么要投诉&#xff1f;实际上分为两种情况&#xff0c;一是客户被冒犯到不能容忍导致的投诉&#xff0c;二是恶意投诉。降低客户被冒犯投诉的概率&#xff0c;无非就是选择客户、规范用语、降低频度&#xff1b;减少恶意投诉&#xff0c;回避是实践证明最有效…

《C语言深度解剖》.pdf

&#x1f407; &#x1f525;博客主页&#xff1a; 云曦 &#x1f4cb;系列专栏&#xff1a;深入理解C语言 &#x1f4a8;吾生也有涯&#xff0c;而知也无涯 &#x1f49b; 感谢大家&#x1f44d;点赞 &#x1f60b;关注&#x1f4dd;评论 C语言深度解剖.pdf 提取码:yunx

KCC@深圳开源读书会即将举办,来与行业大咖面对面交流

KCC&#xff0c;全称 KAIYUANSHE City Community&#xff08;中文&#xff1a;开源社城市社区&#xff09;是由开源社发起&#xff0c;旨在让开源社区在每个城市落地生根的地域性开源组织。 自2023年2月份发起以来&#xff0c;我们已经在南京、上海、深圳、北京、硅谷、新加坡、…

iTOP-3568开发板使用OpenCV处理图像-颜色转换

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程 \04_OpenCV 开发配套资料\05”目录下&#xff0c;如下图所示&#xff1a; cv2.cvtColor()函数功能&#xff1a; 将一幅图像从一个色彩空间转换到另一个色彩空间。 函数原型&#xff1a; cv2.cvt…

日常BUG—— maven编译报错

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 一个maven项目在由于在代码中书写了如下代码&#xff1a; public static ConcurrentMap<…