前排提示:文章同样适用于非专业的朋友们,全文通俗化表达,一定能找到你亲身经历过的网络攻击(建议大家认真看完,这篇文章会刷新你对网络攻防的认知)
前言
在世界人口近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攻击到的人明明什么都没做,只是点开了链接,钱就失踪了。
当你打开手机,在搜索栏输入你想搜索的内容,按下回车的那一刻开始,你的上网信息已经汇报给网络管理者(注:属于合法行为,官方只收集你的网址,对你进行上网保护)
但并不是所有人都这么做,更多的情况是攻击者会监控你的一举一动,获取你的个人信息后转卖给某些非法组织或非法盈利机构。但这种类型的网站也很好分辨,细心的人会发现,有些网址开头是http,有些是https。
http是超文本传输协议,简单来说就是用明文的方式传输数据。
https是安全套结字层超文本传输协议,即加密传输数据。
所以当你在http开头的网站上输入支付密码、身份证号、银行卡等等重要信息的时候,攻击者通过截获明文数据,这些内容将直接泄漏给攻击者。
就好比你在银行ATM机存钱的时候,输入卡号和密码的同时被ATM机明文广播。
尽管细思极恐,但绝不是在夸大其辞,在网络攻击者看来,只是输入几行命令那么简单的事。
不过目前大部分网站都已经采用https加密传输协议,除了某些境外的“学习网站”和少数标记为广告的网站仍在采用http协议(具体原因不用我多说了吧)
四、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邮箱,以及一些网站的登录密码,还能有什么呢?
Cookies,简单来说就是攻击者登录你的账号不一定要用密码登录,也可以借助Cookies直接进入账户。
除此之外,它甚至可以是 CSRF Token 信息,前面谈过CSRF攻击,一定还有印象吧,可以说CSRF Token 就是防御的CSRF攻击的屏障,从内部瓦解才是最令人恐怖的。
七、暴力破解
这个名字,是不是比前面几个熟悉多了,暴力破解听名字也猜得出来原理很简单。它一般针对密码而言,弱密码(Weak Password)很容易被别人(对你很了解的人等)猜到或被破解工具暴力破解。具体了解可以去看看我前面发的密码学的博文。
总结
本文旨在用一些通俗易懂的大白话来聊网络攻防,科普的同时帮助大家增强网络防范的意识。这些例子是我对网络攻防的一些理解,可能具体细节不是很精准,但整体思路是对的。
同时我想让更多非本专业的朋友们能了解网络攻击到底是什么,抛开定型化认知壁垒,它并没有想象的那么神秘,网络攻防就在我们身边,提高防范意识,才能在互联网中保护自己,保护家人。
网络安全为啥突然“火”了?
随着网络空间成为第五空间、社会基础产业全面互联网化,网络安全(或称广义的信息安全)面临的威胁越来越大,对网络安全的人才需求也呈现出井喷趋势。
即使目前很多人可以自学成才,“网络空间安全”也成为一级学科,但根据《第十一届网络空间安全学科专业建设与人才培养研讨会》得出的结论,“我国网络空间安全人才年培养规模在3万人左右,已培养的信息安全专业人才总量不足10万,离目前需要的70万差距巨大。”另据智联招聘和360互联网安全中心联合调研统计,2018年上半年,网络安全人才需求规模指数较2017年上半年同比增长了44.9%。
我国网络安全整体投入不高。网络安全建设方面,国内网络安全投入占信息化的投入比例大概不到百分之3%,而欧美等发达国家均在10%以上,甚至有的超过了15%。我们无论是在投资规模,应对网络安全的认知等方面,我们与国外差距非常大。这与我们数字化依赖程度相比,还是一个非常大的反差。
据腾讯安全《2017上半年互联网安全报告》显示,近年我国高校教育培养的信息安全专业人才仅3万余人,而网络安全人才总需求量则超过70万人,缺口高达95%。
01 什么是网络安全
网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。
无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透,也有 Web 防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。
02 怎样规划网络安全
如果你是一个安全行业新人,我建议你先从网络安全或者Web安全/渗透测试这两个方向先学起,一是市场需求量高,二则是发展相对成熟入门比较容易。
值得一提的是,学网络安全,是先网络后安全;学Web安全,也是先Web再有安全。
安全不是独立存在的,而是建立在其他技术基础之上的上层应用技术。脱离了这个基础,就很容易变成纸上谈兵,变成“知其然,不知其所以然”,在安全的职业道路上也很难走远。
如果你是原本从事网工运维,那么可以选择网络安全方向入门;如果你原本从事程序开发,推荐选择Web安全/渗透测试方向入门.当然学到一定程度、或者有了一定工作经验,不同方向的技术耦合会越来越高,各个方向都需要会一点。
根据以上网络安全技能表不难看出,网络安全需要接触的技术还远远很多,常见的技能需要学习:外围打点能力、钓鱼远控能力、域渗透能力、流量分析能力、漏洞挖掘能力、代码审计能力等。
【----帮助网安学习,以下所有学习资料免费领!】
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)
03网络安全的知识多而杂,怎么科学合理安排?
下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!
初级网工
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。
8、超级网工
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。感兴趣的童鞋可以研究一下,不懂得地方可以【点这里】加我耗油,跟我学习交流一下。
网络安全学习路线&学习资源
扫描下方卡片可获取最新的网络安全资料合集(包括200本电子书、标准题库、CTF赛前资料、常用工具、知识脑图等)助力大家提升进阶!
结语
网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。
特别声明:
此教程为纯技术分享!本书的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失!!!