每个人都能看懂的网络攻防
提示:文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身经历过的网络攻击(建议大家认真看完,这篇文章会刷新你对网络攻防的认知)
前言
在世界人口近80亿的地球上,每天尚且发生数以百万计的抢劫打架斗殴事件,网络更是如此,网络攻防战几乎每时每刻都在发生。
如果说打架斗殴枪击事件离我们还很远,那网络攻防战在你打开手机的时候就开始了!博主能力有限,暂不谈网络攻防具体操作实现过程,我们用通俗易懂的语言一块聊聊——神秘的“网络攻防”
每当听到“网络攻防”这个名词,有没有一瞬间觉得很神秘?脑海中是否下意识的出现身穿黑色连衣帽的黑客中黑入某机构网站的场景?
其实它并没有想象中的那么神秘,接下来我们一块唠唠常见的几种常见的网络攻防技术
一、SQL注入
SQL注入是一种非常常见的一种数据库攻击手段,我们平时用的所有网站,软件都会用到数据库,只要有数据库存在的地方就可能存在 SQL 注入漏洞。
比如某大学学生通过SQL注入篡改期末成绩,某男子入侵某网站窃取大量用户信息等等
简单来说就好比你养了一只名叫“拆家”的哈士奇,有天你在卧室突然头晕倒地,并喊道:“拆家,快找人帮忙!!!”。小哈听到后找到拆迁队一块把房子拆了。
这句话本身没有问题,哈士奇接收到的信息也符合逻辑,只是这句话的关键字恰好和哈士奇词库中的命令相匹配,导致事情发展逐渐离谱。
言归正传
SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的目的。
而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中(比如说SELECT、DROP等等)提交到后端服务器,后端服务器如果未做输入安全校验,直接将变量取出进行数据库查询,则极易中招。
举个简单的SQL注入例子
对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样:
select name,[...]from t_user whereid=$id
其中,$id就是前端提交的用户id,那前端的请求如果是这样:
GET xx/userinfo?id=1%20or%201=1
请求参数id转义后就是1 or 1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:
select name,[...]from t_user whereid=1or1=1
最终结果就是把用户表中的所有数据全部查出,已经达到了攻击者泄露数据的目的。
上面只是一个非常简单的注入示例,在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多,攻击者攻击的位置也复杂的多,不过原理是一致的。复杂度提升产生的攻击效果可想而知。
二、XSS 攻击
XSS全称是跨站脚本攻击(Cross Site Scripting),为了和重叠样式表CSS区分,换了另一个缩写XSS。
简单来说就是某饭店要进一批酸菜,张三在送货车快到饭店的时候,偷偷上车把原来的酸菜换成了“老坛酸菜”,随后老坛酸菜”被放入饭店仓库。此后只要有人来饭店吃酸菜鱼,就会被“美味”攻击,让用户毫不知情的踩坑
XSS攻击的核心是将可执行的前端脚本代码(一般为JavaScript)植入到网页中,通常指的是通过利用网页开发时留下的漏洞,注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
这些恶意网页程序通常是JavaScript,但也存在Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML代码。一旦攻击成功后,攻击者可能得到一些用户或管理员权限(权限上不封顶)
那我们来聊聊攻击者是如何办到的呢?
一般XSS攻击分为两种:反射型和存储型
1.反射型
攻击者将JS代码作为请求参数放置URL中,诱导用户点击,落入陷阱
比如这个,攻击者首先将JS代码作为请求参数放置URL中,诱导用户点击
http://localhost:8080/test?name=<script>alert("嗨害嗨,你已经被攻击了!")</script>
等用户点击后,该JS就会作为请求参数传给Web服务器后端。如果后端服务器没有很完善的检查过滤,就会简单处理后放入网页正文中返回给浏览器,等浏览器解析返回的网页后,用户已经中招了!
2.存储型
上面反射型攻击脚本直接经服务器,转手后返回浏览器触发执行
存储型和它的区别在于能够将攻击脚本入库存储,在后面进行查询时,再将攻击脚本渲染进网页,返回给浏览器触发执行。
举个例子
XSS攻击就好比攻击者在某网页论坛中回复一个帖子,帖子中包含JS脚本,回帖提交服务器后,就会存储至数据库。
其他网友查看这个帖子后,后台会自动查询该帖子的回帖内容,然后构建出完整网页,返回浏览器。此时,该网友浏览器渲染返回的网页已经中招!该网友的浏览器已经变成了靶子,后面的事情就不用多说了,可以想象这种攻击是多么防不胜防。
三、CSRF 攻击
CSRF攻击,全称是跨站请求伪造(Cross-site request forgery),它可以利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。
我保证绝大多数90,00后都遇到过CSRF攻击,具体CSRF攻击是什么?我先挖个坑,大家接着往下看
我记得上初中的时候,QQ空间经常会看到这样的说说:
“今天是马化腾的生日,转发这条说说到10个群免费赠送一个月VIP。”
“转发这条说说,免费领取一年黄钻/红钻/蓝钻/粉钻。”
“大家好,我是易烊千玺,这是我的QQ号******,欢迎各位小伙伴加我QQ。”*
上大学后,QQ邮箱又会收到这样的邮件
发件人:“教务处”
内容为:“**##大学##系2022年上学期期末考试成绩单”或者“##大学2022年下学期课程安排**”等,这些邮件中还很默契的都放一个链接
即便是现在,玩QQ的都遇到过,莫名其妙的收到陌生人发来的一份在线共享文档,内容为:“**##年下半年四六级成绩报告**”;
还有你QQ列表中那些被盗号的朋友是不是总会发些链接给你,点开以后发现手机卡死了。
近几年新闻报道的链接诈骗数不胜数,家里的爷爷奶奶,爸爸妈妈,甚至七大姑八大姨微信发给你的“点开链接并转发10个群即可领取100元现金红包”等等…
这些只是CSRF攻击的冰山一角,那CSRF攻击到底是什么呢?
CSRF(跨站域请求伪造)攻击虽然只是一种极为普通的攻击方式,但是它覆盖面极广,而且大部分人防范意识薄弱,导致它流行了10多年,仍然经久不衰。
它核心思想在于,用户在打开A网站的情况下,如果在Tab页面打开了被CSRF攻击过的恶意网站B,那此时在B页面的“唆使”下,用户自身浏览器会发起一个对网站A的HTTP请求。
这么一听好像也没什么厉害的,普普通通,但是CSRF攻击最致命的一点是:这个HTTP请求不是用户的主动意图,而是B网页“唆使”的,如果是一个危害较大的请求操作(比如发邮件?删数据?伪造信息贷款?等等)那就麻烦了。
其次,因为在攻击之前用户已经打开了A网站,浏览器会存有A网站下发的Cookie或其他用于身份认证的信息,这次被“唆使”的请求,将会自动带上这些信息,导致A网站后端分不清楚这是否是用户真实的意愿还是“伪请求”。
随着用户被“唆使”时间的延长,这些类似蠕虫的恶意请求会一步一步挖空你的信息,严重的可能引导A网站直接转账。
这也就不难理解为何很多被CSRF攻击到的人明明什么都没做,只是点开了链接,钱就失踪了。
四、DDoS 攻击
DDoS全称是分布式拒绝服务攻击(Distributed Denial of Service),属于是最没技术含量但攻击起来最让人头疼的一种。攻击者不断地提出服务请求,让合法用户的请求无法及时处理,这是 DoS 攻击。
而DDoS 攻击是攻击者使用多台计算机或者计算机集群进行 DoS 攻击
说简单点,就是一个人去饭店吃饭,点了99999999999+个菜,然后这个人跑了,厨师还在忙活着,结果厨师累死了。
虽然听起来很无脑,甚至有些好笑,但不得不承认它确实是很厉害。
世界上第一个计算机病毒Morris的原理就与DDOS攻击类似,资源耗尽导致服务器死机。
此后,消耗资源的攻击的思维首次被一名黑客应用于邮件,导致当时多达数万份邮件停滞。
2007年在爱沙尼亚战争中首次大规模使用DDOS攻击,导致爱沙尼亚一整个国家在互联网上销声匿迹。
2008年的格鲁吉亚战争,DDOS攻击又导致该国网络全线瘫痪。
而在2018年,一境外黑客组织发动了迄今为止世界上规模最大的DDOS攻击,攻击目标是GitHub。在攻击最高峰时,此攻击以每秒1.3Tbps的速率传输流量,以每秒1.269亿的速率发送数据包。幸运的是,GitHub的DDoS保护机制让GitHub安全人员快速防御,有效的阻止了这次大规模攻击。
技术从来都是一柄双刃剑,分布式技术既可以用来提供高可用的服务,也能够被攻击者用来进行大规模杀伤性攻击。攻击者不再局限于单台计算机的攻击能力,转而通过成规模的网络集群发起拒绝服务攻击。这种规模攻击足以让一个国家网络受到毁灭性打击。
五、DNS劫持
当今互联网流量中,以HTTP/HTTPS为主的Web服务产生的流量占据了绝大部分,比如抖音、快手、爱奇艺、优酷等等更为突出。Web服务发展如此迅猛,这背后离不开一个默默无闻的大功臣就是域名解析系统DNS。
如果没有DNS,我们上网需要记忆每个网站的IP地址而不是他们的域名,这简直是灾难,好在DNS默默在背后做了这一切,我们只需要记住一个域名,剩下的交给DNS来完成吧。
也正是因为其重要性,别有用心的人自然是不会放过它,DNS劫持技术又被发明了出来。
看到这是不是想吐槽一句:怎么什么东西都能当网络攻击手段啊?
没错,所以我们更要了解这些内容,提高自身的防范意识,我们接着说DNS劫持。
DNS提供服务最初是用来将域名转换成IP地址,然而在早期协议的设计中并没有太多考虑其安全性,所以对于查询方的我们来说会产生诸多疑问:
我去请求的真的是一个DNS服务器吗?
确定不是别人冒充的?
查询的结果有没有被人篡改过?
这个IP真是这个网站的吗?
遗憾的是DNS协议中没有机制去保证能回答这些问题,因此DNS劫持现象非常泛滥,从用户在地址栏输入一个域名的那一刻起,一路上的凶险防不胜防,好比唐僧独自去西天取经,简直就是小母牛坐电线——牛X带闪电。
后来,为了解决这个问题,出现了DNSSEC技术,一定程度上可以解决上面的部分问题。但限于一些方面的原因,这项技术并没有大规模使用,尤其在国内,鲜有部署应用。
再后来,以阿里、腾讯等头部互联网厂商为首开始推出了httpDNS服务,来了一招釜底抽薪,虽然这项技术的名字中还有DNS三个字母,但实现上和原来但DNS已经是天差地别,通过这项技术让DNS变成了在http协议之上的一个应用服务。所以现在国内网站基本很少会遇到DNS劫持的事件。
六、JSON 劫持
JSON是一种轻量级的数据交换格式,而劫持就是对数据进行窃取(或者应该称为打劫、拦截比较合适)。恶意攻击者通过某些特定的手段,将本应该返回给用户的JSON数据进行拦截,转而将数据发送回给恶意攻击者。
如果说前面那几个哥们是把你打劫的啥都不剩,那JSON劫持就看起来“温柔”许多,它只打劫那些敏感信息或者有价值的数据。JSON漏洞主要被攻击者用在受害者不知不觉中窃取他们的隐私数据,常常被一些 APT 组织采用进行信息收集和钓鱼的工作( 也称水坑攻击 )
简单来说就是小偷进到张三家里,他不会傻到把沙发柜子搬走,他选择拿金属探测仪扫描,只带金属类的东西,拿相对价值最高的东西走。
那有人就好奇,对攻击者来说有用的信息无非就是姓名,手机号,身份证号,email邮箱,以及一些网站的登录名和密码,还能有什么呢?
没错,甚至可以是 CSRF Token 信息,前面谈过CSRF攻击,一定还有印象吧,可以说CSRF Token 就是防御的CSRF攻击的屏障,从内部瓦解才是最令人恐怖的。
七、暴力破解
这个名字,是不是比前面几个熟悉多了,暴力破解听名字也猜得出来原理很简单。它一般针对密码而言,弱密码(Weak Password)很容易被别人(对你很了解的人等)猜到或被破解工具暴力破解。具体了解可以去看看我前面发的密码学的博文。
总结
本文旨在用一些通俗易懂的大白话来聊网络攻防,科普的同时帮助大家增强网络防范的意识。这些例子是我对网络攻防的一些理解,可能不是很精准,但大方向没错。
同时我想让更多非本专业的朋友们能了解网络攻击到底是什么,抛开定型化认知壁垒,它并没有想象的那么神秘,网络攻防就在我们身边,提高防范意识,才能在互联网中保护自己,保护家人。
若文章内容描述有误,请大家指正!
版权归原作者 九芒星# 所有, 如有侵权,请联系我们删除。