应急响应-Webshell

文章目录

  • 一、Webshell概述
    • 什么是Webshell
    • Webshell分类
      • 基于编程语言
      • 基于文件大小/提供的功能多少
    • Webshell 检测方法
  • 二、常规处置方法
  • 三、技术指南
    • 1、初步预判
    • 2、 Webshell排查
    • 3、Web日志分析(查找攻击路径及失陷原因)
    • 4、系统排查
      • 4.1 Windows
      • 4.2 Linux
    • 5、系统日志
    • 6、流量分析
  • 案例


一、Webshell概述

什么是Webshell

shell的概念源于操作系统,就是一个解析字符串命令并执行的程序。为了动态执行某些功能,编程语言一般会提供一些函数,将用户输入的字符串解析为语言代码,或解析为操作系统命令。典型的PHP一句话木马

<?php
	eval($_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

定时任务
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、流量分析

案例

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter 二次开发 函数助手 AES加解密

Jmeter 二次开发 函数助手 AES加解密 1. 环境准备2. 关键技术说明2.1 离线导包2.2 示例代码 3. 代码包4. 结果演示 1. 环境准备 IDE &#xff1a;IntelliJ IDEA 2021.1.1 x64JAVA环境 &#xff1a;jdk1.8.0_251离线导包&#xff1a;导入Jmeter安装目录下lib/ext下的ApacheJmet…

【使用群晖远程链接drive挂载电脑硬盘】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基础上提出的,用于通过一个HDFS路径来访问多个NameSpace,同时与ViewFs搭配的技术是client-side mount table(这个就是具体的规则配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 总的来说ViewFs的其实就是一个中间层,用于去连接不…

药品最新研究信息查询系统

查找最新药物研究进展信息在患者治疗选择、医疗实践、科学研究、药物监管和政策制定、教育和学术研究等方面都具有重要的应用价值。它可以为各个领域的人员提供最新的科学依据和决策支持&#xff0c;促进医学领域的发展和提高医疗质量。 但在查找药物最新研究进展信息时通常需要…

08 - 追加commit和修改最新的commit message

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 追加提交2. 修改最新的commit message 1. 追加提交 将改动追加到上一次的commit 现在我已经修改了Readme文件并且已经add、commit操作&#xff0c;但是还没有push到远程仓库&#x…

Kafka 什么速度那么快

批量发送消息 Kafka 采用了批量发送消息的方式&#xff0c;通过将多条消息按照分区进行分组&#xff0c;然后每次发送一个消息集合&#xff0c;看似很平常的一个手段&#xff0c;其实它大大提升了 Kafka 的吞吐量。 消息压缩 消息压缩的目的是为了进一步减少网络传输带宽。而…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]&#xff1a;SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度&#xff0c;该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

【数据结构】 链表简介与单链表的实现

文章目录 ArrayList的缺陷链表链表的概念及结构链表的分类单向或者双向带头或者不带头循环或者非循环 单链表的实现创建单链表遍历链表得到单链表的长度查找是否包含关键字头插法尾插法任意位置插入删除第一次出现关键字为key的节点删除所有值为key的节点回收链表 总结 ArrayLi…

p5.js 渐变填充的实现方式

theme: smartblue 本文简介 p5.js 作为一款艺术类的 canvas 库&#xff0c;对颜色方面的支持是挺下功夫的&#xff0c;比如本文要介绍的渐变方法。 lerpColor() 要实现渐变效果&#xff0c;可以使用 lerpColor() 方法。 lerpColor 的作用是混合两个颜色以找到一个介于它们之间的…

Llama 2免费托管及API提供

Llama 2 是 Meta 最新的文本生成模型&#xff0c;目前其性能优于所有开源替代方案。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、强大的Llama 2 它击败了 Falcon-40B&#xff08;之前最好的开源基础模型&#xff09;&#xff0c;与 GPT-3.5 相当&#xff0c;仅低…

Springboot 在 redis 中使用 Guava 布隆过滤器机制

一、导入SpringBoot依赖 在pom.xml文件中&#xff0c;引入Spring Boot和Redis相关依赖 <!-- Google Guava 使用google的guava布隆过滤器实现--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><vers…

UniApp 制作高德地图插件

1、下载Uni插件项目 在Uni官网下载Uni插件项目&#xff0c;并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…

redis — 基于Spring Boot实现redis延迟队列

1. 业务场景 延时队列场景在我们日常业务开发中经常遇到&#xff0c;它是一种特殊类型的消息队列&#xff0c;它允许把消息发送到队列中&#xff0c;但不立即投递给消费者&#xff0c;而是在一定时间后再将消息投递给消费者。延迟队列的常见使用场景有以下几种&#xff1a; 在…

学点Selenium玩点新鲜~,让分布式测试有更多玩法

前 言 我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具&#xff0c;而 Selenium Grid 是 Selenium 中的一大组件&#xff0c;通过它能够实现分布式测试&#xff0c;能够帮助团队简单快速在不同的环境中测试他们的 Web 应用。 分布式执行测试其实并不是一…

LSTM模型

目录 LSTM模型 LSTM结构图 LSTM的核心思想 细胞状态 遗忘门 输入门 输出门 RNN模型 LRNN LSTM模型 什么是LSTM模型 LSTM (Long Short-Term Memory)也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象.同时LS…

考研算法第46天: 字符串转换整数 【字符串,模拟】

题目前置知识 c中的string判空 string Count; Count.empty(); //正确 Count ! null; //错误c中最大最小宏 #include <limits.h>INT_MAX INT_MIN 字符串使用发运算将字符加到字符串末尾 string Count; string str "liuda"; Count str[i]; 题目概况 AC代码…

QT多屏显示程序

多屏显示的原理其实很好理解&#xff0c;就拿横向扩展来说&#xff1a; 计算机把桌面的 宽度扩展成了 w1&#xff08;屏幕1的宽度&#xff09; w2(屏幕2的宽度) 。 当一个窗口的起始横坐标 > w1&#xff0c;则 他就被显示在第二个屏幕上了。 drm设备可以多用户同时打开&am…

STM32定时器TIM控制

一、CubeMX的设置 1、新建工程&#xff0c;进行基本配置 2、配置定时器TIM2 1&#xff09;定时器计算公式&#xff1a;&#xff08;以下两条公式相同&#xff09; Tout ((ARR1) * PSC1)) / Tclk TimeOut ((Prescaler 1) * (Period 1)) / TimeClockFren Tout TimeOut&…

WordPress更换域名后-后台无法进入,网站模版错乱,css失效,网页中图片不显示。完整解决方案(含宝塔设置)

我在实际解决问题时用到了 【简单暴力解决方案】的《方法一&#xff1a;修改wp-config.php》 和 【简单暴力-且特别粗暴-的解决方案】 更换域名时经常遇到的几个问题&#xff1a; 1、更换域名后&#xff0c;后台无法进入 2、更换域名后&#xff0c;网站模版错乱&#xff0c;c…

第 4 章 链表(1)

4.1链表(Linked List)介绍 链表是有序的列表&#xff0c;但是它在内存中是存储如下 小结: 链表是以节点的方式来存储,是链式存储每个节点包含 data 域&#xff0c; next 域&#xff1a;指向下一个节点.如图&#xff1a;发现链表的各个节点不一定是连续存储.链表分带头节点的链…