本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程。本产品已经成熟稳定并投入商用。

在线演示环境:https://kf.shengxunwei.com 注意:演示环境仅供演示交流与评估,不保证 7x24 小时可用。

文章目录列表请点击这里


系统公开发表不久之后,遭到了一次来自不明人士的蓄意攻击。(当你努力作一件事的时候,你永远不知道有些人会怎么想)

本篇详细介绍问题的定位和处理过程。

问题发现

21日上午,收到报警,服务器 CPU 使用率持续超过 80%。我尝试远程桌面连接,非常卡,连接服务器后发现 CPU 占用率 100%。查看任务管理器,客服系统后台服务占用了 CPU,

重新启动客服系统后台进程 ,CPU 占用率恢复正常。查看网络监控数据并没有大的网络流量流入流出,初步推测是对客服系统所使用的通信端口的攻击行为。

更换系统所使用的监听端口后继续观察。

23日晚间,再次收到 CPU 使用率报警,查看发现依然是客服系统后台服务 100% 占用了 CPU。重启服务后恢复正常。几小时后,我远程服务器查看,发现 CPU 占用率稳定在 50%,看来攻击者为了避免引起我的注意,改进了工击手段,降低了攻击强度。

相同的版本,部署在我的客户的服务器上运行的环境则是一切正常,持续运行了两周没有任何异常情况,而且客户正式使用的环境,使用强度比我的演示环境要大的多。

在任务管理器里,虽然能看到是客服系统后台服务占用了 CPU,但是无法查看占用的具体原因。

问题定位

在我第一次发现问题,更换端口,消停两次之后,再次发生的攻击行为,看起来是和我杠上了。

  1. 首先,在攻击行为发生时,创建客服系统后台服务的 Dump 文件,注意区分 x86 和 x64。

  2. 安装 WinDbg 或 WinDbg Priview ,Windows 10 推荐使用 WinDbg privew,使用 WinDbg 打开 Dump 文件。

    第一次打开时,会自动下载所需的 PDB 文件,等待下载完成后,即可加载调试信息,如下图:

  3. 执行 reload 命令

  4. 执行 loadby sos clr 命令

  5. 执行 !tp 命令

    显示出 CPU 占用率 51%。

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

  7. 使用命令 ~41s 进入线程。接着使用 !clrstack 命令显示调用堆栈。

    如图,根据调用堆栈显示的信息,非常明确的指示出,Socket 端口接收数据时,大量占用了 CPU。


结合系统的其它日志,判断攻击者通过连接 TCP 端口,高强度,大量的发送垃圾数据,导致服务器 CPU 高负荷运行,企图拖垮服务器。明确攻击位置和原因之后,就好办了,在 Socket 端口连接和监听时,加入安全反制的机制,重新部署上线。

不久,抓到了一个国内 IP ,此 IP 发起了攻击行为,系统自动切换了连接并拉黑了此 IP 地址。随后的几天中,攻击者使用了国外代理发起攻击行为,先后抓到了两个不同国家的 IP,使用相同的方式发起攻击行为。虽然攻击者切换了国外代理,但最初的国内 IP 已经暴露。

28日夜,攻击者使用了一个位于荷兰的 IP ,再次发起攻击,服务器在识别到攻击行为后,几秒钟内切断了连接。


其实我并不认为目前我所做的一点点工作能够对业内其它做同类型软件的企业产生什么影响,我推测发起攻击行为的人只是普通的技术人员。正如我上文说的:当你努力作一件事的时候,你永远不知道有些人会怎么想。

我也没有以某种方式运营这个系统的计划。

在接下来的文章中,我将具体解构服务端程序的结构和设计、客服端程序的结构和设计,敬请关注。

.net core 和 WPF 开发升讯威在线客服与营销系统:(插曲)一次端口攻击行为的分析与应对的更多相关文章

  1. .net core 和 WPF 开发升讯威在线客服与营销系统:背景和产品介绍

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf-m.shengxunwei.com ...

  2. .net core 和 WPF 开发升讯威在线客服与营销系统:系统总体架构

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  3. .net core 和 WPF 开发升讯威在线客服与营销系统:使用 WebSocket 实现访客端通信

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  4. .net core 和 WPF 开发升讯威在线客服与营销系统:使用 TCP协议 实现稳定的客服端

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  5. .net core 和 WPF 开发升讯威在线客服与营销系统:使用线程安全的 BlockingCollection 实现高性能的数据处理

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  6. .net core 和 WPF 开发升讯威在线客服与营销系统:实现对 IE8 的完全完美支持 【干货】

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  7. .net core 和 WPF 开发升讯威在线客服系统:怎样实现拔网线也不丢消息的高可靠通信(附视频)

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 在线演示环境:https://kf.shengxunwei.com 注意 ...

  8. .net core 和 WPF 开发升讯威在线客服系统:把 .Net Framework 打包进安装程序

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 系列文章目录: https://blog.shengxunwei.com/Home/Post/44a3 ...

  9. .net core 和 WPF 开发升讯威在线客服系统:使用本地IP数据库实现访客来源快速定位,支持国外

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程.本产品已经成熟稳定并投入商用. 免费使用 & 私有化部署:https://kf.shengxun ...

随机推荐

  1. C语言编程学习者问答第一期,看看这些问题你出现过吗?

    今天给大家分享我们学习基地的小伙伴遇到的问题,以及正确回答,看看这些问题你遇到过吗~ 1.这张图片文字"第二段"后面的说法是否有问题?   回答: 这是二进制的加法,很多人会误解减 ...

  2. 在HTML中调用打开摄像头

    1 <img src="imgs/qr.png" alt=""> 2 <video src=""></vide ...

  3. Django的下载及命令

    安装 命令行 pip3 install django==1.11.11 测试是否安装成功 django-admin 创建django项目 django-admin startproject 项目名称( ...

  4. 【2020.12.02提高组模拟】球员(player)

    题目 题目描述 老师们已经知道学生喜欢睡觉,Soaring是这项记录保持者.他只会在吃饭或玩FIFA20时才会醒来.因此,他经常做关于足球的梦,在他最近的一次梦中,他发现自己成了皇家马德里足球俱乐部的 ...

  5. Windows平台部署Asp.Net Core应用

    一. 简介 Asp.Net Core 部署方式有两种:依赖框架和独立部署. 1. 框架依赖的部署: 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core. 由于 ...

  6. django 不使用序列化器时进行查询结果序列化

    在app01views中添加 class User1(View): def post(self,request): user=User.objects.all() list=[] for i in u ...

  7. day6(短信验证接口)

    1.注册容联云账号 1.1注册账号 https://www.yuntongxun.com/user/login  1.2登录即可看到开发者账号信息 1.3 添加测试账号 2.使用容联云发送代码测试 ' ...

  8. 第7.14节 Python类中的实例方法详析

    第7.14节 Python类中的实例方法详析 一.    实例方法的定义 在本章前面章节已经介绍了类的实例方法,实例方法的定义有三种方式: 1.    类体中定义实例方法 第一种方式很简单,就是在类体 ...

  9. 记一次MacPro风扇一直转的问题排查

    1.查看CPU占用最高的进程 借助活动监视器,查看CPU占用最高的进程,可以观察到是Chrome浏览器 2.打开Chrome的任务管理器 2.1.查看CPU占用最高的chrome进程 3.分析和结束进 ...

  10. 小程序使用动画时的 px 单位 转 rpx的方法

    借助API wx.getSystemInfoSync(); 通过API可获取的值: // 在 iPhone6 下运行: var systemInfo = wx.getSystemInfoSync(); ...