学习《计算机网络安全》《网络安全技术及应用(第3版)》
主要的网络攻击技术,包括针对口令的攻击、缓冲区溢出攻击、拒绝服务攻击、木马攻击、SQL注入攻击、社会工程学攻击
针对口令的攻击
常见的弱口令
(1)连续或相同的数字串、字母串等组合。
(2)常用语、常用词汇或特殊数字等组合。
(3)密码与用户名相同或相近等。
口令破解
口令扫描、Sniffer密码嗅探、暴力破解、社会工程学(即通过欺诈手段获取)以及木马程序或键盘记录程序等
有关系统用户账号密码口令的破解主要是基于密码匹配的破解方法,最基本的方法有两个,即穷举法和字典法。
常见的密码破解和审核工具例如破解Windows平台口令的L0phtCrack、WMICracker、SMBCrack、SAMInside、CNIPC NT弱口令终结者;
商用的工具:Elcomsoft公司的Adanced NT Security Explorer和Proactive Windows Security Explorer、Winternals的Locksmith等;
用于UNIX平台的有John the Ripper等;
Bruter软件支持包括FTP、SSH在内的十多种不同应用场景的暴力破解;
Advanced ZIP Password Recovery软件破解ZIP加密后的文件;
一般Windows操作系统的口令保护文件存于系统盘下Windows\System32\config中,其名为SAM。
口令破解的防护
应加强口令强度,防止口令被穷举法和字典法猜测出。
对策:
(1)口令长度不小于8位,并由字母、数字、特殊符号等不少于3种的字符组成。
(2)对系统的登录次数进行限定,超过限定登录错误次数,即锁定账户。
(3)避免使用简单、常用、易记忆的字符串作为口令。
(4)避免不同的系统使用相同或相近的口令。
(5)要定期或不定期修改口令。
缓冲区溢出攻击
缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串。但是绝大多数程序都会假设数据长度总是与所分配的存储空间匹配,这就为缓冲区溢出埋下隐患。
缓冲区溢出攻击原理
操作系统所使用的缓冲区又称为堆栈。在各个操作进程之间,指令被临时存储在堆栈当中,堆栈也会出现缓冲区溢出。当一个超长的数据进入缓冲区时,超出部分就会被写入其他缓冲区,其他缓冲区存放的可能是数据、下一条指令的指针,或者是其他程序的输出内容,这些内容都将被覆盖或破坏。可见一小部分数据或者一条指令的溢出就可能导致一个程序或者操作系统崩溃。第一个缓冲区溢出攻击——Morris蠕虫,曾造成了全世界6000多台网络服务器瘫痪。
C语言常用的strcpy、sprintf、strcat等函数都非常容易导致缓冲区溢出问题。
缓冲区溢出攻击的目的在于扰乱具有某些特权的程序的功能,这样可以使得攻击者取得程序的控制权。如果该程序具有足够的权限,那么整个主机就被控制了。一般而言,攻击者攻击root程序,然后执行类似“exec(sh)”的执行代码来获得root权限的shell。一般有两个操作:在程序的地址空间里安排适当的代码;通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。
缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的最终目的就是希望系统能执行这块可读写内存中已经被蓄意设定好的恶意代码。
按照冯·诺依曼存储程序原理,程序代码是作为二进制数据存储在内存的,同样程序的数据也在内存中,因此直接从内存的二进制形式上是无法区分哪些是数据、哪些是代码的,这也为缓冲区溢出攻击提供了可能。
进程地址空间分布的简单表示,如下图
代码存储了用户程序的所有可执行代码,在程序正常执行的情况下,程序计数器(PC指针)只会在代码段和操作系统地址空间(内核态)内寻址。
数据段内存储了用户程序的全局变量、数据等。
栈空间存储了用户程序的函数栈帧(包括参数、局部数据等),实现函数调用机制,它的数据增长方向是低地址方向。
堆空间存储了程序运行时动态申请的内存数据等,数据增长方向是高地址方向。
除了代码段和受操作系统保护的数据区域,其他的内存区域都可能作为缓冲区,因此缓冲区溢出的位置可能在数据段,也可能在堆、栈段。
如果程序的代码有软件漏洞,恶意程序会“指挥”程序计数器从上述缓冲区内取指,执行恶意程序提供的数据代码。
栈的主要功能是实现函数调用。因此在介绍栈溢出原理之前,需要弄清楚函数调用时栈空间发生了怎样的变化。每次函数调用时,系统会把函数的返回地址(函数调用指令后紧跟指令的地址)、一些关键的寄存器值保存在栈内,函数的实际参数和局部变量(包括数据、结构体、对象等)也会保存在栈内。这些数据统称为函数调用的栈帧,而且每次函数调用都会有个独立的栈帧,这也为递归函数的实现提供了可能。
函数栈帧例子:
- 定义了一个简单的函数function,它接受一个整型参数,做一次乘法操作并返回。
- 调用function(0)时,arg参数记录了值0入栈,并将call function指令下一条指令的地址0x00bd16f0保存到栈内,然后跳转到function函数内部执行。
- 因为函数内需要用ebp保存函数栈帧基址,因此先保存ebp原来的值到栈内,然后将栈指针esp内容保存到ebp。(每个函数定义都会有函数头和函数尾代码。)
- 函数返回前需要做相反的操作——将esp指针恢复,并弹出ebp。
函数内正常情况下无论怎样使用栈,都不会使栈失去平衡。
- “sub esp,44h”指令为局部变量开辟了栈空间,例如ret变量的位置。
- 理论上,function只需要再开辟4B空间保存ret即可,但是编译器开辟了更多的空间。
- 函数调用结束返回后,函数栈帧恢复到保存参数0时的状态,为了保持栈帧平衡,需要恢复esp的内容,使用“add esp,4”将压入的参数弹出。
之所以会有缓冲区溢出的可能,主要是因为栈空间内保存了函数的返回地址。
该地址保存了函数调用结束后后续执行的指令的位置,对于计算机安全来说,该信息是很敏感的。如果有人恶意修改了这个返回地址,并使该返回地址指向了一个新的代码位置,程序便能从其他位置继续执行。
图给出的代码是无法进行溢出操作的,因为用户没有插入程序的机会。但是实际上很多程序都会接受用户的外界输入,尤其是当函数内的一个数组缓冲区接受用户输入的时候,一旦程序代码未对输入的长度进行合法性检查,缓冲区溢出便有可能出现。
比如能够溢出的函数:
void fun(unsigned char *data)
{
unsigned char buffer[BUFF_LEN];
strcpy(char*)buffer,char*)data) //溢出点
}
这个函数是一段典型的栈溢出代码。
在使用不安全的strcpy库函数时,系统会盲目地将data的全部数据复制到buffer指向的内存区域。
buffer的长度是有限的,一旦data的数据长度超过BUFF_LEN,便会产生缓冲区溢出。
由于栈是低地址方向增长的,因此局部数组buffer的指针在缓冲区的下方。
当把data的数据复制到buffer内时,超过缓冲区区域的高地址部分数据会“淹没”原本的其他栈帧数据。
下图表示了缓存区溢出的情况:
根据“淹没”数据的内容不同,可能会产生以下情况。
- 淹没了其他的局部变量。如果被淹没的局部变量是条件变量,那么可能会改变函数原本的执行流程。这种方式可以用于破解简单的软件验证。
- 淹没了ebp的值。修改了函数执行结束后要恢复的栈指针,将会导致栈帧失去平衡。
- 淹没了返回地址。这是栈溢出原理的核心所在,通过淹没的方式修改函数的返回地址,使程序代码执行“意外”的流程。
- 淹没参数变量。修改函数的参数变量也可能改变当前函数的执行结果和流程。
- 淹没上级函数的栈帧,情况与上述4点类似,只不过影响的是上级函数的执行。当然这里的前提是保证函数能正常返回,即函数地址不能被随意修改。
如果在data本身的数据内就保存了一系列的指令的二进制代码,一旦栈溢出修改了函数的返回地址,并将该地址指向这段二进制代码的真实位置,那么就完成了基本的溢出攻击行为。
通过计算返回地址内存区域相对于buffer的偏移,并在对应位置构造新的地址指向buffer内部二进制代码的真实位置,便能执行用户的自定义代码。
如图表示基本栈溢出攻击:
这段既是代码又是数据的二进制数据被称为shellcode,因为攻击者希望通过这段代码打开系统的shell,以执行任意的操作系统命令——如下载病毒、安装木马、开放端口、格式化磁盘等恶意操作。
上述过程虽然理论上能完成栈溢出攻击行为,但是实际上很难实现。操作系统每次加载可执行文件到进程空间的位置都是无法预测的,因此栈的位置实际是不固定的,通过硬编码覆盖新返回地址的方式并不可靠。为了能准确定位shellcode的地址,需要借助一些额外的操作,其中最经典的是借助跳板的栈溢出方式。
根据前文所述,函数执行后,栈指针esp会恢复到压入参数时的状态,即data参数的地址。
如果在函数的返回地址填入一个地址,该地址指向的内存保存了一条特殊的指令jmp esp——跳板,那么函数返回后,会执行该指令并跳转到esp所在的位置——即data的位置,如图借助跳板的栈溢出攻击,可以将缓冲区再多溢出一部分,淹没data这样的函数参数,并在这里放上想要执行的代码。这样,无论程序被加载到哪个位置,最终都会回来执行栈内的代码。
借助于跳板的确可以很好地解决栈帧移位(栈加载地址不固定)的问题,但是跳板指令从哪里找呢?
在Windows操作系统加载的大量dll中,包含了许多这样的指令,如kernel32.dll和ntdll.dll,这两个动态链接库是Windows程序默认加载的。如果是图形化界面的Windows程序还会加载user32.dll,它也包含了大量的跳板指令。而且更“神奇”的是,Windows操作系统加载dll时一般都是固定地址,因此这些dll内的跳板指令的地址一般都是固定的。可以离线搜索出跳板执行在dll内的偏移,并加上dll的加载地址,便得到一个适用的跳板指令地址。
缓冲区溢出攻击防范
有几种基本的方法可以保护缓冲区免受缓冲区溢出的攻击和影响
- 通过操作系统使得缓冲区不可执行操作,从而阻止攻击者植入攻击代码。
- 强制写正确的代码。(应该意思是开发人员就注意这一点,从根本上解决这个问题)
- 利用编译器的边界检查来实现缓冲区的保护。这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是相对而言代价比较大。
- 在程序指针失效前进行完整性检查。
上这些方法不能使得所有的缓冲区溢出失效,但能阻止绝大多数的缓冲区溢出攻击。另外,对于操作系统已有的基于缓冲区溢出的漏洞,最好的方法是给系统打补丁。
拒绝服务攻击
Denial of Service,简称DoS,造成DoS攻击的行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。
拒绝服务攻击原理
常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。
连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。
常用攻击手段有:SYN Flood、WinNuke、死亡之Ping、ICMP/SMURF、Finger炸弹、Land攻击、Ping洪流、Rwhod、Teardrop、TARGA3、UDP攻击等。
书中以SYN Flood攻击为例,详细介绍这种典型的DoS攻击:
SYN Flood是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。
SYNFlood攻击利用了TCP协议中的三次握手(Three-way Handshake),如图:
- 攻击者向受害服务器发送一个包含SYN标志的TCP报文,SYN(Synchronize)即同步报文。同步报文会指明客户端使用的端口以及TCP连接的初始序号。这时同受害服务器建立了第一次握手。
- 受害服务器在收到攻击者的SYN报文后,将返回一个SYN+ACK的报文,表示攻击者的请求被接受,同时TCP序号被加一,ACK(Acknowledgment)即确认,这样就同受害服务器建立了第二次握手。
- 攻击者也返回一个确认报文ACK给受害服务器,同样TCP序列号被加一,到此一个TCP连接完成,三次握手完成。
SYN Flood攻击的具体原理:
TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成)。
这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30s~2min);
一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。
即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。
如果服务器的TCP/IP栈不够大,最后的结果往往是堆栈溢出崩溃——即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬正常客户的请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况就称作:服务器端受到了SYN Flood攻击(SYN洪水攻击)
拒绝服务攻击主要是利用了系统的一些漏洞。漏洞利用拒绝服务攻击是一种利用漏洞造成软件不能正常运行的攻击方式。这种拒绝服务不依赖大量傀儡机,也不需要发送大量访问请求,而仅仅是利用目标节点软件的安全漏洞,通过精心构造恶意数据包,造成目标节点软件不能有效运行。
分布式拒绝服务攻击
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击是一种资源耗尽型攻击,通常也被称作洪水攻击。
利用分布于网络上的大量节点向同一目标节点发起的引起目标节点资源被大量消耗而不能正常对外提供服务的网络攻击方式。
分布式拒绝服务攻击主要是指那些借助外界的平台,如客户或者是服务器本身,把不同的计算机系统联合在一起,对其进行攻击,进而加倍地增强拒绝攻击的成果。一般情况,攻击者将分布式拒绝服务攻击的主控程序安装在一个用于控制的计算机上,将受控程序安装部署在因特网的多台计算机上。主控程序可以与受控程序进行通信并控制受控程序的行为,当主控程序发送特定的指令时,受控程序即可根据指令发动攻击。
DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。这种攻击方式有以下几种:
- 通过使网络过载来干扰甚至阻断正常的网络通信。
- 通过向服务器提交大量请求,使服务器超负荷。
- 阻止某一用户访问服务器。
- 阻断某服务与特定系统或个人的通信。
分布式拒绝服务攻击的步骤如下:
第1步:攻击者使用扫描工具扫描大量主机以寻找潜在入侵目标;
第2步:黑客设法入侵有安全漏洞的主机并获取控制权。这些主机将被用于放置后门、守护程序甚至是客户程序;
第3步:黑客在得到入侵计算机清单后,从中选出满足建立网络所需要的主机,放置已编译好的守护程序,并对被控制的计算机发送命令;
第4步:黑客发送控制命令给主机,准备启动对目标系统的攻击;
第5步:主机发送攻击信号给被控制计算机开始对目标系统发起攻击;
第6步:目标系统被无数伪造的请求所淹没,从而无法对合法用户进行响应,DDoS攻击成功。
DDoS攻击的效果是非常明显的,由于整个过程是自动化的,攻击者能够在5s钟内入侵一台主机并安装攻击工具。也就是说,在短短的一小时内可以入侵数千台主机,并使某一台主机可能要遭受1000MB/s数据量的攻击,这一数据量相当于1.04亿人同时拨打某公司的一部电话号码。
分布式反射拒绝服务攻击
分布式反射拒绝服务攻击(DRDoS:Distributed Reflection Denial of Service)是一种较新的资源耗尽型拒绝服务攻击。
与分布式拒绝服务攻击使用伪造源IP地址不同,分布式反射拒绝服务攻击的来源IP地址全是真实地址,这些真实的网络节点本身并没有安全漏洞,而是利用TCP三次握手来实现的。
首先,攻击者通过控制的傀儡机使用受害者IP地址作为源地址向任意处于活动状态的网络节点(如核心路由器、域名服务器、大型网站等)发送带有SYN标记的数据包,也就是TCP三次握手的第一步;
处于活动状态的网络节点接收到伪造源IP地址的数据包后,将会按照协议要求向受害者进行应答,发送带有SYN、ACK标记的应答数据包。当攻击者使用大量傀儡机同时发起攻击时,即完成了一次分布式反射拒绝服务攻击。
分布式反射拒绝服务攻击最典型的攻击是Smurf攻击:
第一步:攻击者向被利用网络A的广播地址发送一个ICMP协议的“echo”请求数据报,该数据报源地址被伪造成10.254.8.9。
第二步:网络A上的所有主机都向该伪造的源地址返回一个“echo”响应,造成该主机服务中断。
拒绝服务攻击的防范
现在的拒绝服务攻击很多都是利用工具自动化完成的。
攻击者控制某些主机不停地发送大量数据包给某服务器,造成服务器资源耗尽,一直到主机崩溃。CC主要是用来消耗服务器资源的。每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,模拟多个用户(多少线程就是多少用户)不停地访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU负荷长时间处于100%,永远都有处理不完的连接,直至网络拥塞,正常的访问被中止。
拒绝服务攻击通常是很难防范的,不过也有一些防护措施:
1.加强用户的安全防范意识,关闭不必要的网络接口,降低因个人疏忽造成的不安全因素,安装防范功能较强的软件,对计算机做定时的安全扫描工作;
2.增加安全防范手段,了解和掌握可以有效地防治安全漏洞的软件,使用一些专门的漏洞检查工具进行问题的检测,如网络测试仪、流量测试仪等,及时地找出修复漏洞的方法和措施,减少不必要的损失。
3.正确运用安全防范工具,及时地使用网络检测软件对不安全因素进行检测,使用那些专门检测网络安全隐患的软件,定期进行检测。
木马攻击
特洛伊木马(trojan horse)简称“木马”
木马的工作原理
特洛伊木马程序可以直接侵入用户的计算机并进行破坏,它常被伪装成工具程序或者游戏等诱使用户打开带有木马程序的邮件附件或从网上直接下载,一旦用户打开了这些邮件的附件或者执行了这些程序之后,它们就会在计算机系统中隐藏一个可以在启动时悄悄执行的程序。这种远程控制工具可以完全控制受害主机,危害极大。
木马程序一般包括两个部分::客户端和服务器端。
服务器端安装在被控制的计算机中,它一般通过电子邮件或其他手段让用户在其计算机中运行,以达到控制该用户计算机的目的。
客户端程序是控制者所使用的,用于对受控的计算机进行控制。
服务器端程序和客户端程序建立起连接就可以实现对远程计算机的控制了。
木马运行时,首先服务器端程序获得本地计算机的最高操作权限,当本地计算机连入网络后,客户端程序可以与服务器端程序直接建立起连接,向服务器端程序发送各种基本的操作请求,并由服务器端程序完成这些请求,也就实现对本地计算机的控制了。
因为木马发挥作用必须要求服务器端程序和客户端程序同时存在,所以必须要求本地机器感染服务器端程序。服务器端程序是可执行程序,可以直接传播,也可以隐含在其他的可执行程序中传播,但木马本身不具备繁殖和自动感染的功能。
木马的分类
1.远程访问型木马
2.密码发送型木马
3.键盘记录型木马
4.毁坏型木马
5.FTP型木马
木马常用欺骗法和隐藏方式
木马要运行通常是非常困难的,因为通常杀毒软件可以把大多数木马杀掉,所以木马要用欺骗的方法运行。
木马常用欺骗法和隐藏方式:
(1)捆绑欺骗:如把木马服务端和某个游戏捆绑成一个文件在邮件中发给别人。
(2)危险下载点:攻破一些下载站点后,下载几个下载量大的软件,捆绑上木马,再悄悄放回去让别人下载;或直接将木马改名上传到FTP网站上,等待别人下载。
(3)文件夹惯性单击:把木马文件伪装成文件夹图标后,放在一个文件夹中,然后在外面再套三四个空文件夹。
(4)zip伪装:将一个木马和一个损坏的zip包捆绑在一起,然后指定捆绑后的文件显示为zip图标。
(5)网页木马法:即通常所说的“网页挂马”。在网页上放置木马程序,等客户运行网页时,木马就自动运行了。
通常木马攻击成功后,需要将自己隐藏起来,以备下次再攻击。
常用的木马隐藏方法如下:
在任务栏中隐藏。
在任务管理器中隐形。
悄无声息地启动,如启动组、win.ini、system.ini、注册表等。
注意自己的端口(是检查自己的端口的意思吗)。
伪装成驱动程序及动态链接库,如Kernel32.exe,sysexlpr.exe等。
木马攻击的危害非常大,木马攻击的防范:
(1)不要随意打开来历不明的邮件。现在许多木马都是通过邮件来传播的,当用户收到来历不明的邮件时请不要打开,应尽快删除。同时要加强邮件监控系统,拒收垃圾邮件。
(2)不要随意下载来历不明的软件。最好是在一些知名的网站下载软件,不要下载和运行那些来历不明的软件。在安装软件之前最好用杀毒软件查看其是否含有病毒,然后进行安装。
(3)及时修补漏洞并关闭可疑的端口。一些木马都是通过漏洞在系统上打开端口留下后门,以便上传木马文件和执行代码。因此,在把漏洞修补上的同时,需要对端口进行检查,把可疑的端口关闭。
(4)尽量少用共享文件夹。如果必须共享文件夹,则最好设置账号和密码保护。Windows系统默认情况下将目录设置成共享状态,这是非常危险的,最好取消默认共享。
(5)运行实时监控程序。在上网时最好运行反木马实时监控程序和个人防火墙,并定时对系统进行病毒检查。
(6)经常升级系统和更新病毒库。经常关注微软和杀毒软件厂商网站上的安全公告,这些网站通常都会及时地将漏洞、木马和更新公布出来,并在第一时间发布补丁和新的病毒库等。
(7)安装防火墙。通过防火墙禁止访问不该访问的服务端口,使用NAT隐藏内部网络结构。
SQL注入攻击
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面上的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。
SQL注入可以分为平台层注入和代码层注入。
前者由不安全的数据库配置或数据库平台的漏洞所致;
后者主要是由于程序员对输入未进行细致的过滤,从而执行了非法的数据查询。
SQL注入的产生原因通常表现在:
- 不当的类型处理;
- 不安全的数据库配置;
- 不合理的查询集处理;
- 不当的错误处理;
- 转义字符处理不合适;
- 多个提交处理不当。
SQL注入攻击会导致的数据库安全风险包括刷库、拖库、撞库。SQL注入一般存在于形如
HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。需要进行必要的字符过滤。
SQL注入攻击属于数据库安全攻击手段之一,可以通过数据库安全防护技术实现有效防护,数据库安全防护技术包括:数据库漏扫、数据库加密、数据库防火墙、数据脱敏、数据库安全审计系统。
社会工程学攻击
典型的社会工程攻击方法:
(1)伪造电子邮件、短信通知、网站:攻击者利用或模仿银行、政府等可信机构或目标干系人,发送伪造电子邮件或消息,进行诈骗或种植木马。例如一般人很难辨别www.icbc.com和www.icbc.com.cn这两个网站到底哪个是中国工商银行网站。
(2)诱饵及跨站钓鱼攻击:利用人们对最新电影、热门信息或超低折扣等的高关注度,结合应用系统跨站安全漏洞进行钓鱼攻击,将用户从真正的可信任的商务站点,引导到恶意页面。
(3)假冒技术支持服务:冒充技术服务公司的技术人员,要求受害人登录到某个地址或者提出通过远程接入提供技术支持。
(4)冒充名人或领导:这种方式主要是骗取钱财。
网络攻击的防范
(自检)
(1)操作系统勤打补丁,同时启用Windows自动升级功能。现在许多病毒、木马就是利用Windows操作系统的漏洞进行传播的,而微软也会不定期发布相应的补丁程序进行补救。
(2)下载软件及驱动程序应该到官方网站或知名大网站下载,不到一些陌生或是不知名的网站下载,并且最好下载官方版本,不随意使用第三方修改过的版本。
(3)安装软件之前最好先进行病毒扫描,另外在安装过程中将每一个步骤都看仔细,不能随意地一路按〈Enter〉键。
(4)不浏览非法网站,不安装任何网站的插件。对于使用Windows操作系统的朋友,应该将所有弹出窗口禁止,这样不仅可以免去弹出窗口的干扰,而且可有效地避免一不小心就安装了某个插件。
(5)不打开陌生人的邮件,不随意打开陌生人邮件中的附件。使用邮件客户端程序时最好不要使用Outlook,至少也要打补丁。
(6)使用即时通信软件如QQ、MSN等,不随意单击对方发过来的网址,也不要随便接收文件,即使接收了,在打开之前也要进行病毒扫描。
(7)在网络中(特别是一些论坛中),尽量避免泄露本单位信息,如单位名称和Email地址等。
(8)不要随便执行文件。
(9)密码设置得不要太简单,至少8位(数字、字母和符号组合),最好15位以上(很难破)。关闭文件共享。
(10)不要使用系统默认值;安装防病毒软件,并经常更新。
(11)计算机里不存储涉密信息。
网络安全威胁的主要种类
网络安全技术的缺陷
防火墙、入侵检测技术和防病毒技术被称为网络安全技术的三大主流。传统的安全“老三样”为网络安全建设起到了重要作用,却具有一定局限性、缺陷和问题:用户在系统中安装了防火墙后,却难以避免垃圾邮件、病毒传播和拒绝服务的侵扰。入侵检测技术在提前预警、精确定位、实时交互、整体性、漏报误报率和全局管理等方面存在着先天不足。计算机病毒防范技术滞后于实际的发生各种新病毒及繁衍变异,而且内网的安全还包括安全策略的执行、外来非法侵入、补丁更新及合规管理等。
网络协议本身缺陷
由于网络协议本身的缺陷及网络应用层服务存在着多种安全隐患, IP 层通信也存在着易欺骗性,系统和网络易被监视及其他风险。其次, TCP 和用户数据报协议 UDP 服务的认证只对主机地址,而不对指定用户。而且,网络的用户名及密码等信息容易被监视和窃取,当登陆远程主机账户时,如果传输的重要信息不加密,很容易被黑客窃取。
网络数据库安全性
数据的安全性主要是防止数据库被故意地破坏和非法地存取; 数据的完整性主要是防止数据库中存在不符合语义的数据,且防止由于错误信息的输入、输出而造成无效操作和错误结果; 并发控制主要是在多个用户程序并行存取数据时,保证数据的一致性。