文章目录
一、自学网络安全学习的误区和陷阱
1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习
我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而且实际向安全过渡后可用到的关键知识并不多
一般人如果想要把编程学好再开始学习网络安全往往需要花费很长时间,容易半途而废。而且学习编程只是工具不是目的,我们的目标不是成为程序员。建议在学习网络安全的过程中,哪里不会补哪里,这样更有目的性且耗时更少
2.不要把深度学习作为入门第一课
很多人都是冲着要把网络安全学好学扎实来的,于是就很容易用力过猛,陷入一个误区:就是把所有的内容都要进行深度学习,但是把深度学习作为网络安全第一课不是个好主意。原因如下:
【1】深度学习的黑箱性更加明显,很容易学的囫囵吞枣
【2】深度学习对自身要求高,不适合自学,很容易走进死胡同
3.不要收集过多的资料
网上有很多关于网络安全的学习资料,动辄就有几个G的材料可以下载或者观看。而很多朋友都有“收集癖”,一下子购买十几本书,或者收藏几十个视频
网上的学习资料很多重复性都极高而且大多数的内容都还是几年前没有更新。在入门期间建议“小而精”的选择材料,下面我会推荐一些自认为对小白还不错的学习资源,耐心往下看
二、学习网络安全的一些前期准备
1.硬件选择
经常会问我“学习网络安全需要配置很高的电脑吗?”答案是否定的,黑客用的电脑,不需要什么高的配置,只要稳定就行.因为黑客所使用的一些程序,低端CPU也可以很好的运行,而且不占什么内存.还有一个,黑客是在DOS命令下对进行的,所以电脑能使用到最佳状态!所以,不要打着学习的名义重新购买机器…
2.软件选择
很多人会纠结学习黑客到底是用Linux还是Windows或者是Mac系统,Linux虽然看着很酷炫,但是对于新人入门并不友好。Windows系统一样可以用虚拟机装靶机来进行学习
至于编程语言,首推Python,因为其良好的拓展支持性。当然现在市面上很多网站都是PHP的开发的,所以选择PHP也是可以的。其他语言还包括C++、Java…
很多朋友会问是不是要学习所有的语言呢?答案是否定的!引用我上面的一句话:学习编程只是工具不是目的,我们的目标不是成为程序员
(这里额外提一句,学习编程虽然不能带你入门,但是却能决定你能在网络安全这条路上到底能走多远,所以推荐大家自学一些基础编程的知识)
3.语言能力
我们知道计算机最早是在西方发明出来的,很多名词或者代码都是英文的,甚至现有的一些教程最初也是英文原版翻译过来的,而且一个漏洞被发现到翻译成中文一般需要一个星期的时间,在这个时间差上漏洞可能都修补了。而且如果不理解一些专业名词,在与其他黑客交流技术或者经验时也会有障碍,所以需要一定量的英文和黑客专业名词(不需要特别精通,但是要能看懂基础的)
比如说:肉鸡、挂马、shell、WebShell等等
三、自学网络安全学习路线
重点内容
端口扫描原理与防范
网络钓鱼原理与防范
Web安全防范基础
一、网络扫描
1、网络主机扫描
主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。
传统的主机扫描技术利用ping命令向目标主机发送ICMP数据包,数据包内包含Echo Request标记,并等待目标主机回复包含Echo Reply标记的ICMP数据包。如果能收到回复,则表明目标系统可达(同时说明目标主机存活在网络中),否则表明目标系统已经不可达,或发送的数据包被过滤掉。这种基于ICMP Echo Request和Echo Reply标记的扫描方式的优点是简单、所有操作系统都支持,但缺点在于这类数据包很容易被防火墙过滤而无法收到Echo Reply包。
另一种效率更高的利用ICMP协议进行扫描的方式,可以通过并行发送,同时探测多个目标主机,称为ICMP Sweep扫描。
2、主机端口扫描
当确定了目标主机存活后,就可以使用端口扫描技术,探测目标主机的开放端口,包括网络协议和各种应用监听的端口。端口扫描技术主要包括以下三类。
●开放扫描。开放扫描是指扫描过程会尝试建立一个TCP连接,若目标端口处于监听状态,则会进行完整的TCP三次握手的动作。
●半开放扫描。半开放扫描分为TCP SYN扫描、TCP间接扫描两种方式。TCP SYN扫描的实现原理是,扫描器向目标主机端口发送TCP SYN报文。如果应答是RST包,那么说明端口是关闭的,如果应答中包含SYN和ACK包,说明目标端口处于监听状态,此时再向目标主机发送一个RST报文给目标机从而停止建立TCP连接。
●隐蔽扫描。隐蔽扫描能有效的避免对方入侵检测系统和防火墙的检测,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。隐蔽扫描主要有TCP FIN扫描、TCP Xmas扫描、TCP Null扫描、分段扫描几种方式。
二、IP欺骗攻击
1、IP欺骗攻击原理
IP欺骗利用Unix系统中,主机之间的正常信任关系。
假设有两台主机HostA和HostB,上面各有一个帐户Tomy,在使用中会发现,在HostA上操作需要登录HostA上的相应帐户Tomy,在HostB上操作则必须用HostB的帐户Tomy登录,主机HostA和HostB把Tomy当做两个互不相关的用户,这不够方便。
为了简化操作,可以在主机HostA和HostB中建立起两个帐户的相互信任关系。在HostA和HostB上Tomy的 home目录中创建.rhosts文件。从主机HostA上,在用户Tomy的home目录中用命令:
echo “HostB Tomy” > ~/.hosts
即可建立HostA与HostB间的信任关系,这时,你从主机HostB上,你就能毫无阻碍的使用任何以r开头的远程调用命令,如rlogin、rsh、rcp等,而无需输入口令验证就可以直接登录到HostA上。
HostA和HostB之间的信任关系是基于IP址而建立起来的,那么如能够冒充HostB的IP,就可以使用rlogin登录到HostA,而不需任何口令验证。这就是IP欺骗的基本理论依据。
IP欺骗攻击最困难的地方在于预测A的ISN。攻击难度虽然大,但在某些情况下成功的可能性也很大。例如,入侵者控制了一台由A到B之间的路由器(假设称为Z),则A发网到B的所有数据,Z都可以看到,包括A发出TCP报文中的ISN,此时攻击显然明显下降。
2、IP欺骗攻击防范
对于来自网络外部的IP欺骗攻击,防范方法很简单,只需要在局域网的出口路由器上加一个访问控制规则,禁止外部向内部网络的声称来自于网络内部的数据包即可。
对于来自局域网外部的IP欺骗攻击的防范则可以使用出口防火墙完成,原理类似出口路由器的设置。但是对于来自内部网络的攻击通过设置防火墙则毫无作用。此时应注意内部网络的路由器是否支持多个接口。如果路由器支持内部网络子网的两个或多个接口,则必须提高警惕,因为它很容易受到IP欺骗,这也正是为什么Web服务器放在防火墙外面更加安全的原因。
通过对信息包的监控来检查IP欺骗攻击是非常有效的方法,使用netlog等信息包检查工具对信息的源地址和目的地址进行验证,如果发现了信息包来自两个以上的不同地址,则说明系统有可能受到了IP欺骗攻击,有来自于防火墙外的入侵企图。
三、网络钓鱼攻击
1、网络钓鱼攻击原理
网络钓鱼属于社会工程学攻击的一种,简单的描叙就是通过伪造信息获得受害者的信任并且响应,由于网络信息是呈爆炸性增长的,人们面对各种各样的信息往往难以辨认真伪,依托网络环境进行钓鱼攻击是一种非常可行的攻击手段。
网络钓鱼从攻击角度上分为两种形式:
一种是通过伪造具有“概率可信度”的信息来欺骗受害者,这里提到了“概率可信度”这个名词,从逻辑上说就是有一定的概率使人信任并且响应,从原理上说,攻击者使用“概率可信度”的信息进行攻击,这类信息在概率内正好吻合了受害者的信任度,受害者就可能直接信任这类信息并且响应。
另外一种则是通过“身份欺骗”信息来进行攻击,攻击者必须掌握一定的信息,利用人与人之间的信任关系,通过伪造身份,使用这类信任关系伪造信息,最终使受害者信任并且响应。
一些可以被用作网络钓鱼的Web攻击技术:
●URL编码结合钓鱼技术
浏览器除了支持ASC II码字符的URL,还支持ASC II码以外的字符,同时支持对所有的字符进行编码。 URL编码就是是将字符转换成16进制并在前面加上“%”前缀,比如我们将google的域名后缀.cn进行URL编码得到:
http://www.google%2E%63%6E
其中,“.cn”这三个字符就是以每个字符的16进制形式加上“%”前缀,浏览器和服务端都能够正常支持。
钓鱼攻击者常用的攻击伎俩就是混淆URL,通过利用相似的域名和内容来骗取受害者的信任
●Web漏洞结合钓鱼技术
近年来,XSS漏洞开始成为Web漏洞中的一个大热门,XSS漏洞的特性就是能够在网页中插入javascript代码运行。
javascript几乎能做任何事情,传统的XSS漏洞攻击可能是直接获取客户端和服务端的会话,可能是制作Web蠕虫攻击整个Web服务,除利用XSS漏洞针对Web服务进行直接攻击的风险之外,XSS漏洞还能被用作钓鱼攻击。
当钓鱼攻击者利用网站的Web漏洞进行钓鱼,网站管理员到这里应该意识到问题的严重性,这类钓鱼攻击并不是针对网站的Web服务业务进行攻击,而是利用网站的信任度对网站所有的用户进行攻击。
●浏览器漏洞结合钓鱼技术
浏览器的地址栏欺骗漏洞和跨站脚本漏洞可以实现完美的钓鱼攻击,地址栏欺骗漏洞实现的效果就是攻击者可以在真实的URL地址下伪造任意的网页内容,跨站脚本漏洞实现的效果是可以跨域名跨页面修改网站的任意内容,当我们访问一个URL返回给却是攻击者可以控制的内容,如果这里伪造是一个钓鱼网页内容,普通用户将无从分辨真伪。
2、网络钓鱼攻击防范
网络钓鱼攻击防范主要分为两个方面:
一个方面是对钓鱼攻击利用的资源进行限制,一般钓鱼攻击所利用的资源是可控的,如Web漏洞是Web服务提供商可以直接修补的,邮件服务商可以使用域名反向解析邮件发送服务器提醒用户是否收到匿名邮件。利用即时通信软(QQ、MSN等)件传播的钓鱼URL链接是即时通信服务提供商可以封杀的。
另外一个方面是不可控制的行为,比如浏览器漏洞,用户必须及时打上操作系统补丁、应用程序补丁,以防御攻击者直接使用客户端软件漏洞发起的钓鱼攻击,各个安全软件厂商也可以提供修补客户端软件漏洞的功能。同时各大网站应保护所有用户的隐私,及时提醒所有的用户防止钓鱼,提高用户的安全意识,从两个方面积极防御钓鱼攻击。
四、Web安全
1、Web安全威胁
当前的Web应用面临的威胁主要有以下特征:
●Web威胁的目标是敏感数据和攫取利益。
面对来势汹汹的Web威胁,绝大多数企业并没有真正意识到其中的危机。一方面,恶意网站以600%的年增长速度在迅速增加;另一方面,77%带有恶意代码的Web网站是被植入恶意代码的合法网站。
●传统防护手段难以防范Web应用安全威胁。
对付Web威胁,传统的防护模式是否能够有效化解呢?答案是否定的。越来越多的Web攻击者将合法网站做目标,77%带有恶意代码的Web网站是被植入恶意攻击代码的合法网站,甚至某些知名网站也有网页被挂马的案例。
●Web安全+防信息泄露是企业自我保护的基本条件
Web2.0改变了企业使用Internet的方式。通过诸如Facebook和Twitter之类的网站,员工可以自己创建内容并迅速与数千人分享。这些网站中的内容是动态的,传统的安全系统无法控制。为了在工作中使用Web2.0,企业需要采用新的方式来保护重要信息。
2、Web安全防范基础
只有先弄明白了自己的站点是如何被攻击的,才可能能设法保护它们。Web应用安全防范的基本要求,就是定期对自己管理的网站进行“渗透测试(Penatration Test)”。
渗透测试与攻击者对网站进行攻击的过程非常相似,不同之处主要在于,渗透测试的目的是发现网站的缺陷、漏洞以及时处理和修补,而恶意攻击的目的是为了破坏网站的正常运行或为了经济利益等盗取相关信息及数据。
全面、系统的渗透测试操作,被称为安全评估。
Web站点安全评估的具体实施涉及到四个最关键的因素,它们是安全评估人员、评估工具、评估方法和评估对象。
●安全评估人员。安全评估人员,应当包括Web站点所有者、管理员及安全评估实施人员。安全评估实施人员的技术和经验,以及工作态度在一定程度上决定了评估的效果和可信性。
●安全评估工具。安全评估工具需要根据所要评估的具体对象来选择,不同的评估对象,所使用的评估工具是不相同的。
●安全评估方法。安全评估方法就是具体的安全评估实施方式,它主要涉及到下列五个具体的方面:由外向内测试、模拟攻击测试、真实攻击测试、社会工程攻击测试
●评估对象。评估对象就是指评估过程中具体的评估实施目标,包括Web服务器主机操作系统、Web应用程序框架、数据库系统及网络基础设施等。