文章目录
一、自学网络安全学习的误区和陷阱
1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习
我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多
一般人如果想要把编程学好再开始学习网络安全往往需要花费很长时间,容易半途而废。而且学习编程只是工具不是目的,我们的目标不是成为程序员。建议在学习网络安全的过程中,哪里不会补哪里,这样更有目的性且耗时更少
2.不要把深度学习作为入门第一课
很多人都是冲着要把网络安全学好学扎实来的,于是就很容易用力过猛,陷入一个误区:就是把所有的内容都要进行深度学习,但是把深度学习作为网络安全第一课不是个好主意。原因如下:
【1】深度学习的黑箱性更加明显,很容易学的囫囵吞枣
【2】深度学习对自身要求高,不适合自学,很容易走进死胡同
3.不要收集过多的资料
网上有很多关于网络安全的学习资料,动辄就有几个G的材料可以下载或者观看。而很多朋友都有“收集癖”,一下子购买十几本书,或者收藏几十个视频
网上的学习资料很多重复性都极高而且大多数的内容都还是几年前没有更新。在入门期间建议“小而精”的选择材料,下面我会推荐一些自认为对小白还不错的学习资源,耐心往下看
二、学习网络安全的一些前期准备
1.硬件选择
经常会问我“学习网络安全需要配置很高的电脑吗?”答案是否定的,黑客用的电脑,不需要什么高的配置,只要稳定就行.因为黑客所使用的一些程序,低端CPU也可以很好的运行,而且不占什么内存.还有一个,黑客是在DOS命令下对进行的,所以电脑能使用到最佳状态!所以,不要打着学习的名义重新购买机器…
2.软件选择
很多人会纠结学习黑客到底是用Linux还是Windows或者是Mac系统,Linux虽然看着很酷炫,但是对于新人入门并不友好。Windows系统一样可以用虚拟机装靶机来进行学习
至于编程语言,首推Python,因为其良好的拓展支持性。当然现在市面上很多网站都是PHP的开发的,所以选择PHP也是可以的。其他语言还包括C++、Java…
很多朋友会问是不是要学习所有的语言呢?答案是否定的!引用我上面的一句话:学习编程只是工具不是目的,我们的目标不是成为程序员
(这里额外提一句,学习编程虽然不能带你入门,但是却能决定你能在网络安全这条路上到底能走多远,所以推荐大家自学一些基础编程的知识)
3.语言能力
我们知道计算机最早是在西方发明出来的,很多名词或者代码都是英文的,甚至现有的一些教程最初也是英文原版翻译过来的,而且一个漏洞被发现到翻译成中文一般需要一个星期的时间,在这个时间差上漏洞可能都修补了。而且如果不理解一些专业名词,在与其他黑客交流技术或者经验时也会有障碍,所以需要一定量的英文和黑客专业名词(不需要特别精通,但是要能看懂基础的)
比如说:肉鸡、挂马、shell、WebShell等等
三、自学网络安全学习路线
重点内容
电子邮件欺骗及防御技术
5.5 DNS欺骗及防御技术
5.6 Web欺骗及防御技术
一、电子邮件欺骗及防御技术
1、电子邮件欺骗的原理
攻击者使用电子邮件欺骗有三个目的:
第一,隐藏自己的身份。
第二,如果攻击者想冒充别人,他能假冒那个人的电子邮件。
第三,电子邮件欺骗能被看作是社会工程的一种表现形式。
一个邮件系统的传输包含用户代理(User Agent)、传输代理(Transfer Agent)及投递代理(Delivery Agent)三大部分。
用户代理是一个用户端发信和收信的程序,负责将信件按照一定的标准包装,然后送到邮件服务器,将信件发出或由邮件服务器收回。传输代理则负责信件的交换和传输,将信件传送至适当的邮件服务器。再由投递代理将信件分发至最终用户的邮箱。
在正常的情况下,邮件会尽量将发送者的名字和地址包括进邮件头信息中,但是,有时候,发送者希望将邮件发送出去而不希望收件者知道是谁发的,这种发送邮件的方法称为匿名邮件。
实现匿名的一种最简单的方法,是简单地改变电子邮件软件里的发送者的名字,但通过邮件头的其它信息,仍能够跟踪发送者。
另一种比较彻底的匿名方式是让其他人发送这个邮件,邮件中的发信地址就变成了转发者的地址了。现在因特网上有大量的匿名转发者(或称为匿名服务器)。
2、利用相似的电子邮件地址
这主要是利用人们的大意心理。
攻击者找到一个受害者熟悉的名字。有了这个名字后,攻击者注册一个看上去像受害者熟悉的名字的邮件地址。这样收信人很可能会回复这个邮箱发来信,这样攻击者就有得到想要信息的可能性。
可以通过利用相似的电子邮件地址来进行欺诈。欺诈者可能会创建一个与某个真实电子邮件地址类似的虚假电子邮件地址,例如将真实地址的一个字母或数字稍微变化,以此来误导接收者。这种欺诈手段被称为“域名欺诈”,欺诈者可能使用类似的域名来冒充信任的网站或组织,进而诱骗用户提供个人信息或敏感资料。因此,用户需要仔细检查电子邮件地址以确认其真实性,并且避免通过电子邮件提供敏感信息。
3、直接使用伪造的Email地址
SMTP协议(即简单邮件传输协议)有着一个致命的缺陷:它所遵循过于信任的原则,没有设计身份验证系统。 SMTP建立在假定人们的身份和他们所声称一致的基础之上,没有对邮件发送者的身份进行验证。
这使得人们可以随意构造发件人地址来发送邮件。下页我们通过修改邮件客户端软件的设置来示例这一点。
我不建议直接使用伪造的Email地址,因为这可能会涉及到欺诈或欺骗行为,违反相关法律法规。此外,使用伪造的Email地址也可能导致你无法收到对方的回复或者被归类为垃圾邮件,降低你的信任度。如果你需要保护隐私,可以考虑使用匿名的Email服务,比如ProtonMail、Tutanota等。
对于那些没有设置SMTP身份验证功能的邮件服务器,例如右图所示的Outlook邮件客户软件就不需要做相应的设置,当用户使用邮件客户软件发出电子邮件时,发送邮件服务器不会对发件人地址进行验证或者确认,因此攻击者能够随意指定他想使用的所有地址,而这些地址当然会作为邮件源出现在收件人的信中。
4、电子邮件欺骗的防御
做为互联网用户,必须时刻树立风险意识,不要随意打开一个不可信任的邮件。
此外,下面介绍几种防范方法分别从这几个方面入手:
邮件接收者
做为邮件接收者来说,用户需要合理配置邮件客户端,使每次总能显示出完整的电子邮件地址,而不是仅仅显示别名,完整的电子邮件地址能提供一些迹象表明正在发生一些不平常的事情。
用户应该注意检验发件人字段,不要被相似的发信地址所蒙蔽。
邮件发送者
做为邮件发送者来说,如果你使用foxmail或者outlook之类的邮件客户端,你必须保护好这些邮件客户端,防止他人对客户端的设置进行修改。
邮件服务器
对于邮件服务器提供方来说,采用的SMTP身份验证机制。
原来使用SMTP协议发送邮件的时候并不需要任何验证,身份欺骗极易实现。现在将POP协议收取邮件需要用户名/密码验证的思想移至到SMTP协议,发送邮件也需要类似的验证。绝大多数邮件服务提供商都是采用的这种做法,通常是使用与接收邮件相同的用户名和密码来发送邮件。
采用这种方法之后,虽然SMTP协议安全性的问题仍然无法从根本上得到解决,但是电子邮件欺骗已经变得不像过去那么容易了。
邮件加密
还有一种可能的解决方法是使用公钥加密,其中应用最广泛的就是PGP邮件加密。
PGP (Pretty Good Privacy) 是一个可以让您的电子邮件拥有保密功能的程序。藉此你可以将你的邮件加密 ,一旦加密后,邮件看起来是一堆无意义的乱码 。PGP 提供了极强的保护功能,即使是最先进的解码分析技术也无法解读加密后的文字。
PGP 加密与解密不像其它传统加密的方式,而是以公钥密码学为基础的。
二、DNS欺骗及防御技术
1、DNS工作原理
DNS的全称是Domain Name Server即域名服务器,当一台主机发送一个请求要求解析某个域名时,它会首先把解析请求发到自己的DNS服务器上。
DNS的功能是提供主机名字和IP地址之间的转换信息。
DNS服务器里有一个“DNS缓存表”,里面存储了此DNS服务器所管辖域内主机的域名和IP地址的对应关系。
DNS(Domain Name System)是互联网中最重要的组成部分之一,它允许人们使用易于记忆的域名来访问互联网上的网站,而不是使用 IP 地址。
DNS 的工作原理可以概括为下列几步:
-
用户在浏览器中输入一个域名,比如www.google.com。
-
然后浏览器会向本地 DNS 服务器发送请求,询问该域名对应的 IP 地址。
-
如果本地 DNS 服务器中缓存有该域名对应的 IP 地址,则直接返回该 IP 地址给浏览器。
-
如果本地 DNS 服务器中没有缓存该域名对应的 IP 地址,则会向更上一级的 DNS 服务器发送请求。
-
这个请求会一层层地向上转发,直到找到一个能够返回该域名对应的 IP 地址的 DNS 服务器。
-
最终,该 IP 地址会通过本地 DNS 服务器返回给浏览器,浏览器便可以使用该 IP 地址访问网站。
总之,DNS的作用就是把域名映射到IP地址。每一个DNS服务器都会把自己无法解析的域名请求传递给上一级DNS服务器,直到找到能够解析为止。这样DNS系统就用树形结构连接在一起了。
2、DNS域名解析过程
上图中有三台主机:客户主机、nipc.com域DNS服务器和dhs.com域DNS服务器。其中nipc.com域DNS服务器直接为客户主机提供DNS服务。下面对这四个过程进行解释。
1)客户主机软件(例如Web浏览器)需要对www.dhs.com进行解析,它向本地DNS服务器(nipc.com域)发送域名解析请求,要求回复www.dhs.com的IP地址;
2) 由于本地DNS服务器的数据库中没有www.dhs.com的记录,同时缓存中也没有记录,所以,它会依据DNS协议机器配置向网络中的其他DNS服务器提交请求。这个查询请求逐级递交,直到dhs.com域的真正权威DNS服务器收到请求(这里省略了寻找dhs.com域DNS服务器的迭代过程,假定本地DNS服务器最终找到了所需要的信息);
3) dhs.com域DNS服务器将向nipc.com域DNS服务器返回IP查询结果(假定为1.2.3.4);
4) nipc.com域的本地DNS服务器最终将查询结果返回给客户主机浏览器,并将这一结果存储到其DNS缓存当中,以便以后使用。在一段时间里,客户主机再次访问www.dhs.com时,就可以不需要再次转发查询请求,而直接从缓存中提取记录向客户端返回IP地址了。
经过上面几步,客户主机获得了它所期待的www.dhs.com网站的IP地址,这样整个域名解析过程就结束了。
3、DNS欺骗的原理及实现步骤
有了对DNS服务器进行欺骗的可能,攻击者怎样伪造DNS应答信息就成了问题的焦点。
目前有两种可能情况下的实现办法:
攻击者可以控制本地的域名服务器
攻击者无法控制任何DNS服务器
DNS欺骗,也叫DNS劫持,是一种攻击手段,其原理是篡改DNS服务器的解析结果,使得用户访问的网站被重定向到恶意网站或者被截获,从而达到攻击的目的。
DNS欺骗的实现步骤如下:
-
攻击者通过某种手段获取目标用户的IP地址。
-
攻击者将自己的计算机设置成DNS服务器,并将自己的DNS服务器IP地址伪装成真正的DNS服务器IP地址。
-
当目标用户访问某个网站时,其计算机会向DNS服务器发起请求,请求解析该网站的IP地址。
-
攻击者的DNS服务器收到请求后,会伪装成真正的DNS服务器,返回一个虚假的IP地址给目标用户的计算机。
-
目标用户的计算机会将该虚假IP地址缓存下来,并使用它去连接该网站。
-
攻击者的DNS服务器会拦截目标用户的请求,并将其重定向到攻击者指定的网站或者截获该请求数据。
需要注意的是,为了实现DNS欺骗,攻击者需要在目标用户的网络环境中,即使用同一网络连接或通过中间人攻击等方式。因此,用户可以通过使用加密协议、更新操作系统和应用程序等措施来防范DNS欺骗攻击。
4、DNS欺骗的局限性及防御
在配置DNS服务器的时候注意:
使用最新版本DNS服务器软件并及时安装补丁;
关闭DNS服务器的递归功能:DNS服务器利用缓存中的记录信息回答查询请求或是DNS服务器通过查询其它服务器获得查询信息并将它发送给客户机,这两种查询方式称为递归查询,这种查询方式容易导致DNS欺骗。
限制区域传输范围:限制域名服务器做出响应的地址、限制域名服务器做出响应的递归请求地址、限制发出请求的地址;
限制动态更新;
采用分层的DNS体系结构。
三、Web欺骗及防御技术
1、Web欺骗的概念
Web站点给用户提供了丰富多彩的信息,Web页面上的文字、图画与声音可以给人深刻的印象。在计算机世界中,我们往往都习惯各类图标、图形,代表各类不同的含义。
人们往往还会在事件的时间先后顺序中得到某种暗示。如果在单击银行的网页时username对话框同时出现了,用户自然会认为应该输入在该银行的账户与口令。如果你在单击了一个文档链接后,立即开始了下载,那么你很自然地会认为该文件正从该站点下载。然而,以上的想法不一定总是正确的。
由于攻击者可以观察或者修改任何从受害者到Web服务器的信息,同样地,也控制着从Web服务器发至受害者的返回数据,这样攻击者就有发起攻击的可能性。
攻击者能够监视被攻击者的网络信息,记录他们访问的网页和内容。当被攻击者填完一个表单并发送后,这些数据将被传送到Web服务器,Web服务器将返回必要的信息,但不幸的是,攻击者完全可以截获并使用这些信息。
2、Web欺骗的工作原理
Web欺骗能够成功的关键是在受害者和真实Web服务器之间插入攻击者的Web服务器,这种攻击常被称为“中间人攻击(man-in-the-middle)”。
Web欺骗可以通过以下方式进行:
-
伪造网站:攻击者通过伪造类似于真实网站的网站来获取用户的敏感信息。这种伪造网站的技术被称为“钓鱼”。
-
伪造电子邮件:攻击者可以发送伪造的电子邮件,伪装成合法的邮件来引导用户进入欺骗网站。
-
恶意软件:攻击者可以通过恶意软件感染用户的计算机,并收集敏感信息。
-
社会工程:攻击者可以使用社会工程技术,通过网络或电话与用户交流,诱导他们泄露敏
3、Web欺骗的防御
防范Web欺骗的方法:
配置网络浏览器使它总能显示目的URL,并且习惯查看它。
检查源代码,如果发生了URL重定向,就一定会发现。不过,检查用户连接的每一个页面的源代码对普通用户来说是不切实际的想法。
使用反网络钓鱼软件。
禁用JavaScript、ActiveX或者任何其他在本地执行的脚本语言。
确保应用有效和能适当地跟踪用户。无论是使用cookie还是会话ID,都应该确保要尽可能的长和随机。
培养用户注意浏览器地址线上显示的URL的好习惯。培养用户的安全意识和对开发人员的安全教育。
Web欺骗是指利用互联网或网站等技术手段,欺骗用户点击或输入关键信息,从而达到非法获取用户信息、资金或控制用户设备等目的的行为。为了防止Web欺骗,可以采取以下措施:
1.使用HTTPS:使用加密协议HTTPS可以保护用户信息,防止被窃取或篡改。
2.安装安全软件:安装杀毒软件、防火墙等安全软件能够防止恶意软件或木马等恶意代码的攻击。
3.更新软件和浏览器:及时更新软件和浏览器可以修复已知的漏洞,防止黑客利用漏洞攻击。
4.警惕不明链接:不要轻易点击不明链接,尤其是来自不认识的人或网站的链接。
5.设置强密码:设置强度高的密码可以极大地增加密码破解的难度。
6.使用多因素认证:使用多种身份验证方式,如手机验证码、指纹识别等,可以提高账户的安全性。
7.多重备份数据:定期备份数据可以防止一些Ransomware攻击,也可以避免数据丢失。