记一次在线客服系统用户遭勒索,索要茶水费事件的 Windbg 分析与应对
本文记录了几个月前,客户在使用在线客服系统过程中,遭到勒索威胁,索要茶水费 的事件。经过应对,快速的化解了攻击威胁,并继续安全使用至今。
讲故事
威胁次日,收到报警,服务器 CPU 使用率持续超过 80%。连接服务器后发现 CPU 占用率 100%。查看进程,客服系统后台服务占用了 CPU。
重新启动客服系统后台进程 ,CPU 占用率恢复正常。查看网络监控数据并没有大的网络流量流入流出,初步推测是对客服系统所使用的通信端口的攻击行为。
更换系统所使用的监听端口后继续观察。
晚间,再次收到 CPU 使用率报警,查看发现依然是客服系统后台服务 100% 占用了 CPU。重启服务后恢复正常。几小时后,我远程服务器查看,发现 CPU 占用率稳定在 50%,看来攻击者为了避免引起我的注意,改进了攻击手段,降低了攻击强度。
相同的版本,部署在我的客户的服务器上运行的环境则是一切正常,持续运行了两周没有任何异常情况,而且客户正式使用的环境,使用强度比我的演示环境要大的多。
Windbg 分析
在我第一次发现问题,更换端口,消停两次之后,再次发生的攻击行为,看起来是和我杠上了。
首先,在攻击行为发生时,创建客服系统后台服务的 Dump 文件,注意区分 x86 和 x64。
安装 WinDbg 或 WinDbg Priview ,Windows 10 推荐使用 WinDbg privew,使用 WinDbg 打开 Dump 文件。
第一次打开时,会自动下载所需的 PDB 文件,等待下载完成后,即可加载调试信息,如下图:

执行 reload 命令
执行 loadby sos clr 命令
执行 !tp 命令
显示出 CPU 占用率 51%。

- 接下来,我们要找到造成 CPU 占用具体的线程和位置,使用 !runaway 命令。定位到线程 41 长时间占用 CPU。

- 使用命令 ~41s 进入线程。接着使用 !clrstack 命令显示调用堆栈。
如图,根据调用堆栈显示的信息,非常明确的指示出,Socket 端口接收数据时,大量占用了 CPU。

结合系统的其它日志,判断攻击者通过连接 TCP 端口,高强度,大量的发送垃圾数据,导致服务器 CPU 高负荷运行,企图拖垮服务器。明确攻击位置和原因之后,就好办了,在 Socket 端口连接和监听时,加入安全反制的机制,重新部署上线。
不久,抓到了一个国内 IP ,此 IP 发起了攻击行为,系统自动切断了连接并拉黑了此 IP 地址。随后的几天中,攻击者使用了国外代理发起攻击行为,先后抓到了两个不同国家的 IP,使用相同的方式发起攻击行为。虽然攻击者切换了国外代理,但最初的国内 IP 已经暴露。
攻击者使用了一个位于荷兰的 IP ,再次发起攻击,服务器在识别到攻击行为后,几秒钟内切断了连接,并拉黑攻击 IP。


免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com
视频实拍:演示升讯威在线客服系统在网络中断,直接禁用网卡,拔掉网线的情况下,也不丢消息,不出异常。
https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53
客服端

访客端

- 可以追踪正在访问网站或使用 APP 的所有访客,收集他们的浏览情况,使客服能够主动出击,施展话术,促进成单。
访* 客端在 PC 支持所有新老浏览器。包括不支持 WebSocket 的 IE8 也能正常使用。 - 移动端支持所有手机浏览器、APP、各大平台的公众号对接。
- 支持访客信息互通,可传输访客标识、名称和其它任意信息到客服系统。
- 具备一线专业技术水平,网络中断,拔掉网线,手机飞行模式,不丢消息。同类软件可以按视频方式对比测试。
- bilibili 视频:https://www.bilibili.com/video/BV1pK4y1N7UP?t=22
希望能够打造: 开放、开源、共享。努力打造 .net 社区的一款优秀开源产品。
钟意的话请给个赞支持一下吧,谢谢~
记一次在线客服系统用户遭勒索,索要茶水费事件的 Windbg 分析与应对的更多相关文章
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
近段时间利用业余时间开发了一套在线客服系统,期间遇到过大大小小不少问题,好在都一一解决,最终效果也还可以,打算写一个系列的文章把开发过程详细的记录下来. 希望能够和更多的开发人员互相交流学习,也希望有 ...
- Linux + .net core 开发升讯威在线客服系统:首个经过实际验证的高性能版本
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...
- 使用 WPF + Chrome 内核实现 在线客服系统 的复合客服端程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署免费下载:https://docs.sh ...
- .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...
- .net core 和 WPF 开发升讯威在线客服系统:使用本地IP数据库实现访客来源快速定位,支持国外
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署:https://kf.shengxun ...
- 开发升讯威在线客服系统启示录:怎样编写堪比 MSDN 的用户手册
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com 文章目 ...
- .net core 和 WPF 开发升讯威在线客服系统:调用有道翻译接口实现实时自动翻译的方法
业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程. 我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免 ...
- 1个程序员单干之:怎样给我的升讯威在线客服系统编写堪比 MSDN 的用户手册
本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com 视频实 ...
- 详解升讯威在线客服系统前端 JavaScript 脚本加密技术(1)
我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户.对我来说,只要能获得用户的认可,就是我最大的动力. 这段时间有几个技术小伙伴问了我一个有意思的问题:"你的前端脚本是 ...
- Vue在线客服系统【开源项目】
1. 项目介绍 一个基于Vue2.0的在线客服系统. 技术栈包含:Vue.VueX.Vue Router.Element UI. 2. 功能介绍 项目包含了2个模块:客服端和访客端. 2.1 客服端功 ...
随机推荐
- 助力618-Y的混沌实践之路
一.写在前面 1.混沌是什么? 混沌工程(Chaos Engineering)的概念由 Netflix 在 2010 年提出,通过主动向系统中引入异常状态,并根据系统在各种压力下的行为表现确定优化策略 ...
- [golang]使用gopsutil获取系统信息
前言 在python中有个psutil库用于获取系统信息,而go语言也有一个类似的库--gopsutil,功能差不多. 项目地址:https://github.com/shirou/gopsutil ...
- form 表单恢复初始数据
1 表单数据的保存和恢复方法 1.1 前端数据保存方法 在前端,我们可以使用两种方法来保存表单数据:LocalStorage 和 Cookie. 使用 LocalStorage 保存数据:LocalS ...
- Stable Diffusion基础:ControlNet之人体姿势控制
在AI绘画中精确控制图片是一件比较困难的事情,不过随着 ControlNet 的诞生,这一问题得到了很大的缓解. 今天我就给大家分享一个使用Stable Diffusion WebUI + OpenP ...
- 不重启Docker能添加自签SSL证书镜像仓库吗?
应用背景 在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker. 那么,不重启Do ...
- DesignPattern-part1
title: "modern C++ DesignPattern-Part1" date: 2018-04-03T16:06:33+08:00 lastmod: 2018-04-0 ...
- 银河麒麟使用kickstart二次打包制作安装镜像ISO
系统:银河麒麟 V10 SP2 服务器:百信恒山 TS02F-F30 安装方式:服务器挂载ISO镜像进行安装 1.安装 mkisofs 软件包: #yum install genisoimage 2. ...
- 使用MySQL存储过程提高数据库效率和可维护性
MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数.存储过程可以大幅提高数据库的性能.安全性和可维护性.本文将详细介绍MySQL存储过程的使用. ...
- git升级编译安装
一.删除旧版本git 方法一. yum remove git -y (centos环境) apt-get remove git -y (Ubuntu环境) 方法二. which git [root@p ...
- 如何在Nuxt3.0中使用MongoDB数据库
如何在Nuxt3.0中使用MongoDB数据库 一.介绍 Nuxt.js 是一个基于 Vue.js 的开源框架,用于构建服务端渲染 (Server-Side Rendering, SSR) 或静态生成 ...