本站源码全部测试通过,配有前台及后台演示图,绿色安全,希望能对大家有所帮助!
  • 首 页
  • VPS/云主机
  • 交流论坛
  • 记一次被DDoS敲诈的历程
    时间:2019-06-30 08:48 来源:开源之家 作者:转载大师

    0×01 背景

    之前一个蜀国的朋友业务被DDOS攻击,业务服务被机房断网,客户单流失有经济损失,这篇具体说的就是这件事情。

    背景是这样,一个朋友网站业务被DDoS了,先是威胁要800元RMB,然后又转成提供DDOS的服务,然后又变成了DDOS培训, 又变成了卖DDOS软件,最后又变成了DDOS高防测试提供者,最后到警察叔叔那里,报警立案成功的故事。

    采用高仿系统对于防护ddos问题当然有效,但也要注意误拦行为对用户订单的影响。每个公司的具体情况是不一样的,解决问题也要有具体的针对性,比如当机房不是自己的,路由防火墙设备不是自己控制的,无法从类似设备上取得第一手流量信息时(如果能用SNMP),如何处理。当CDN是第三方提供,不能进行黑名单阻断设置等各种情况下,又如何处理。

    0×02 来自黑客的威胁

    就在这几天,一个朋友传来了他被DDoS的消息,正在搬砖中看到他发的消息,说他们的客服收到到0118号客人的威胁信息,说要马上干掉你们。

    记一次被DDoS敲诈的历程

    这位朋友可能见过大场面的人,这点威胁就能吓倒他吗, 太天真了。

    大家可看看下面这个图。

    记一次被DDoS敲诈的历程

    看到上面这个流量激增你们也能看出来,之后服务器真的就挂了,真的挂了,挂了。

    记一次被DDoS敲诈的历程

    这位朋友默默的看了眼高仿的价格,这个价格再次击穿了他的心里防线。 我买,我买, 我买不起。买不起是开玩笑,但这也太贵了。

    不过这个时候这位朋友想起来了,客服留言中的那个黑客微信联系方式, 先加个微信会会这位朋友。

    内容太长,大概的意思是说, 对方要800块钱,并且还能帮助搞其它竞争对手。这位朋友的回答就比较艺术了,没钱,要钱向老板要去。

    0×03 常见流量攻击的形式

    到这了,我们插入一段技术内容,流量攻击的几种常见形式。

    到7层的攻击

    1.大量肉鸡产生的CC(ChallengeCollapsar)。

    2.向WEB服务端口发送的大量的,巨型垃圾包(其实也不是很大,单条1MB以上)。

    到4层的攻击

    3.TCP sync攻击,每次第一次tcp握手就跑,纯撩闲式的方式。

    除了sync方式攻击,其它的两种,都可以达到7层,形成WEB服务日志。

    第1种和第2种,我们都可以看到nginx日志,大post的垃圾请求有一个问题是,发送的请求数据,可能都不符合HTTP规范。

    比较粗爆的请求,可以通过下面简单的方法, 加入到nginx.conf配置中,进行非http请求的协议数据的过滤。

    1.限定请求方法:

    if ($request_method !~ ^(GET|HEAD)$ ) {

     return 444;

    }

    2.限定主机名:

    if ($host !~* xxx\.com$) 

    { return 444;

    }

    0×04 WAF防护

    我们的服务有很多都是用nginx、openresy、tengine搭建的,所以用nginx lua做WAF防护也是一件很正常的事, 看看下面的配置就能知道这位朋友用的是那个WAF了吧。

    记一次被DDoS敲诈的历程

    用LUA写CC的安全策略是一个相对很便捷的过程。

    记一次被DDoS敲诈的历程

    威胁请求产生了大量的501和444。

    记一次被DDoS敲诈的历程

    命中了策略后,产生了对应的命中日志。

    记一次被DDoS敲诈的历程

    就算我们明确知道攻击源,要进行拦截也是有问题的,我们在服务器上部署了WAF,但前端服务还有CDN和LVS,可以在后端分析出威胁,但不能在这些设备上进行ip block阻断。

    并且,这位朋友的日志分析还没有应用到大数据层面,在手动分析日志阶段, 这样分析和响应速度很难和WAF协同工作。

    但就算WAF可以拦截一部分威胁,当小规模的机房和服务器还是有带宽上限的,一旦请深求拥堵带宽大于这个上限,还是一样无响应。

    并且有机房根本没有阻断功能,只有报警功能,一般带宽被占满,业务就会被机房业断网。

    记一次被DDoS敲诈的历程

    0×05 左右互博

    攻击是消停了,可是这位朋友感觉还是不对, 要不就模拟一下自己DDoS自己机吧。

    记一次被DDoS敲诈的历程

    拿起心爱的GO开撸:

    package main

    import (

    "fmt"

    "io"

    "io/ioutil"

    "net/http"

    "os"

    "time"

    "strconv"

    )

    func main() {

    start := time.Now()

    ch := make(chan string)

    var count int64 = 1

    times,_ := strconv.ParseInt(os.Args[1],10,64)

    url := os.Args[2]

    for count = 0; count <= times; count++ {

    go fetch(url, ch, count) // start a goroutine

    }

    for count = 0; count <= times; count++ {

    fmt.Println(<-ch) // receive from channel ch

    }

    fmt.Printf("%.2fs elapsed\n", time.Since(start).Seconds())

    }

    func fetch(url string, ch chan<- string,count int64) {

    start := time.Now()

    resp, err := http.Get(url)

    if err != nil {

    ch <- fmt.Sprint(err) // send to channel ch

    return

    }

    nbytes, err := io.Copy(ioutil.Discard, resp.Body)

    resp.Body.Close() // don't leak resources

    if err != nil {

    ch <- fmt.Sprintf("while reading %s: %v", url, err)

    return

    }

    secs := time.Since(start).Seconds()

    ch <- fmt.Sprintf("%7d %.2fs %7d %s",count, secs, nbytes,url)

    }

    0×06 采用高防

    朋友这段自创的GO就是模拟产生大量的GET请求。结果朋友发现自己针对自己的,服务也一样抗不住,有反正都是造成拥塞,干脆就用WRK得了,就模拟正常的HTTP请求就行。

    wrk -c1000-t10 -d10 --latency https://127.0.0.1:8080 /find

    结果一样扛不住,还得找那个哥哥聊聊。

    记一次被DDoS敲诈的历程

    结果这个发起DDoS的哥们,从攻击改成培训了, 传授相关技术培训费1200,上手快,时间段,经济效益高,但是犯法,这个不能干!

    记一次被DDoS敲诈的历程

    朋友先给200人家不要,不过有新情况, 不但可以培训,还可以卖软件,黑产现在都这么会做生意了吗,这么多才多艺。

    记一次被DDoS敲诈的历程

    0×07 取证报官

    朋友一看,请救兵吧,高防还是得买,然后报官,这时候就得去找警察叔叔。

    前行100米和警察叔叔友好交流,和警察叔叔聊了一下,发现了一个问题。

    800元也够不到5000元啊,但是警察叔叔让回去收集证据了。

    0×08 高防测试

    这位朋友最后还是找到一家公司提供高防服务,希望在自动切换以外,可以手动切换到高仿。

    因为有很多的域名接入,在测试阶段发现,接入高仿以后,貌似有很多的正常流量和CDN的流理被清洗掉了,这样一天下来掉了很多单的销量。因为还是在测试阶段,还需要进一步的测试确认和加白。

    用户->CDN->高仿->服务。

    上了高防护了好不好用啊,这朋友想问问DDoS的朋友,接收不接收测试的活。

    记一次被DDoS敲诈的历程

    到这个,就想问一句,抗DDOS的硬盘能不能也给来一块。

    持续一段时间的攻击来了,但是服务貌似应该没挂。

    0×09 立案成功

    记一次被DDoS敲诈的历程

    文章的最后就是,这位朋友成功的立案了,还是警察叔叔给力, 能不能抓到威胁要800元的朋友要看后续。

    0×10 学习安全技术

    这位朋友高仿也上了,也立案了,利用间歇时间赶紧抓紧间学习安全知识, 上Freebuf找公开课看,安全技术书到用时方恨少。有人问安全有什么用,像这位朋友如果服务被攻击,每天会丢失的订单,订单的成本应该远远不是800元这个金额。

    0×11 高防外的可能方案

    实际上,因为我们这位蜀国朋友的服务不在自建机房,实际上机房的具体报警策略,机房提供商不会给被服务者提供的,当机房中的某个IP流量过大,就可能触发流量报警,甚至后续的断网。

    假设整个网络结点的抽象结构是下面这样:

    机房网络设备-> 防火墙->CDN->WAF->WEB服务

    1.什么做不到

    1.1 不能在机房和CDN层面时行拦截

    那机房网络设备、防火墙是没法干预的,拦截策略也是不知道的。

    就算我们自己从WEB服务中分析出异常的访问, 也没有办法在机房设备上拦截。 如果CDN提供商也不支持IP封禁接口,也不能在cdn上进行拦截。

    1.2 不能过滤80和443以外的流量

    在这位朋友的网格结构中没有提到LVS等负载的情况, 这样的话,就不具备LVS过滤80和443端口以外数据的能力。

    2.什么能做到

    实际的WAF和业务服务器这位朋友是可以操作的,如果可以4层流量中取得HTTP日志,可在4层阶段让日志落地。但实际如果在WAF结果之前都不能做拦截动作, 就只能直接在7层通过Openresty解析出HTTP数据和日志再做分析,这样那个效率高,具体看情况。

    2.1 做日志分析

    Openresty落地的HTTP日志都是可以分析,如是不是通过大流量的网络聚合日志,一般的ELK对单个WEB日志的数据就可以分析,分析出威胁可疑的IP,发现其中的集团攻击行为,也可以与威胁情报库碰撞,发现异常被控肉机等。

    2.2 停止域名解析

    因为网站多域名解析的设计,可以在机房断网之前,停止被攻击的域名解析。一个域名停制解析不会大面积影响订单。这样就需要找到一个报警阀值,这个值与机房断网的阀值相关,当WAF分析出可能会造成机房断网的那个极限量时,就提前触发停止域名解析。

    3.期望能做到什么

    期望第三方CDN可以提供IP拦截接口,期望高仿支持接口手动切换高仿。

    期待这位朋友,在沉迷于网络安全技术学习的同时,不在被攻击困扰。

    作者: 糖果LUA 公众号:糖果的实验室


    转载请注明来源:记一次被DDoS敲诈的历程
    本文永久链接地址:https://www.enboo.cn/jianzhanjiaocheng/wordpressjiaocheng/15527.html
    本文标签:

    版权声明:
    —— 本文内容由互联网用户自发贡献, 本站不拥有所有权, 不承担相关法律责任, 如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 :
    —— 2225329841@qq.com 举报, 并提供相关证据, 一经查实, 本站将立刻删除涉嫌侵权内容。

    开源之家广告栏目A
    开源之家广告栏目B
    开源之家广告栏目C
    在线客服
    客服微信

    扫一扫......加客服微信