认证
大多数用户认证基于以下三个方面考虑:
- 用户已知的消息
- 用户已有的消息
- 用户是谁
使用口令认证
计算基启动顺序可以被改变,通过USB接口启动的检测优先于从硬盘启动的检测。计算机持有者此时插入安装有完整操作系统USB设备,计算机便会从USB中的操作系统启动,而不是本机硬盘上的操作系统启动。计算机一旦启动起来,其原有的硬盘责备挂起(UNIX)或被映射为D盘驱动器(Windows)
因此,绝大多数BIOS都允许用户设置密码以控制对BIOS配置程序修改,在密码的保护下,只有计算机的真正拥有着才开业修改计算机启动顺序。
使用talnet攻击或端口扫描速度很快,但它只适用于攻击Internet上的计算机和telnet连接。
一旦骇客进入系统并成为超级用户,则可能安装一个叫包探测器的软件,该软件可以检查所有在网上进出的特定的信息包。其中之一是查看哪些人从系统上远程登陆到别的计算机,特别是作为超级用户登陆。还可可以从进入一个安全级别较低的计算机入手,不断地闯入安全性能更高的系统里。
这一技巧是将每一个口令同一个叫做“盐”的n伪随机数相关联。无论何时只要口令改变,随机数就改变。
通过单项散列链,可以对口令进行递归运算生成新的口令。
内部攻击
防止登陆欺骗的唯一使用的办法是将登陆序列与用户程序不能捕捉的键组合起来。Windows为此目的采用了Ctrl-Alt-Dek.如果用户坐在终端前按该组合键,则当前用户就会被注销然后重新启动登陆顺序。没有任何办法可以跳过这一步。
利用代码漏洞
不论哪种方法,攻击者的程序总是要在目标机器中允许,而该机器的所有者对该恶意程序一无所知。
缓冲区溢出攻击
没有任何一个C编译器可以做到数组边界检查。
C语言函数库的gets函数可以吧(位置大小的)由变量读入定常的缓冲区里,但并不校验是否一处,这样就很容易受到攻击。
绝大多数系统安全问题都与缓冲区溢出漏洞有关,而这类漏洞很难被修复,因为已有的大量的C代码都没有对缓冲区溢出进行检查。
对付这类攻击的办法是修改代码,显示地检查用户输入的所有变量的长度,从而避免把长字符串放入定长缓冲里。
格式化字符串攻击
print(s)。
程序从键盘输入的不是一个简单的字符串,而是一个格式化字符串,因此任何格式化标识符都会起作用,特别是%n。总共之前打印了多少字符,并将这个数字保存到printf下一个将要使用的参数中。
打印一个格式化字符串可能导致内存被重写,这就为覆盖栈中printf函数的返回地址提供了一种方法通过重写这个返回地址,可以使得函数在printf函数返回时调到任何位置。这种攻击方式叫做格式化字符串攻击。
采用定长字符数组也很容易遭受缓冲区溢出攻击。
返回libc攻击
这种攻击在栈不能被执行的同时也能奏效。
这种攻击的本质是欺骗strcpy函数将恶意程序(通常是共享的)复制到数据段并在那里执行。
在strcpy中,栈指针将会指向一个伪造的返回地址。
整数溢出攻击
由于这种溢出不会被检测,因此可能被用作攻击的手段。一种方式就是给程序传入两个合法的(但是非常大的)参数,它们的和或成绩将导致溢出。
代码注入攻击
使得目标程序执行它所不期望的代码是一种攻击形式
权限提升攻击
恶意软件
闪存可以在程序的控制下被i重写(以便生产者可以方便地休整期错误)。恶意软件向内存中随机地写入垃圾数据,使得电脑无法启动。如果山村在电脑插槽中,那么就要换一个新的内存。如果在母版上,那么需要换整个母版。
特洛伊木马
病毒
共事者病毒:病毒不感染程序,但是程序执行时病毒也执行。(病毒能够改变连接的目标,并指向病毒本身。当用户双击目标时,病毒就会运行,运行完毕之后病毒有会启动正常的目标程序)
有相当多的病毒把自己附在正常程序里,在病毒发作时可以让原来的程序正常工作。
有些病毒将自己隐藏在段中间,叫做空腔病毒。
内存主流病毒总是驻留在内存中(RAM),要么隐藏在内存上端,要么藏在下端的终端变量里。典型的内存驻留病毒通过把陷阱或中断向量中的内容复制到任意变量中之后,将自身的地址防止其中,俘获陷阱或中断向量,从而将该陷阱或中断指向病毒。
引导扇区病毒
设备驱动程序被寄生病毒感染,则在每次启动时被光明正大的载入。而且,当驱动程序运行在核心态下,一旦被家在就会调用病毒,从而给病毒获取系统调用的陷阱向量的机会。
宏程序是解释指向而不是便一致性,但解释指影响其运行速度而不影响其执行效果。
最具移植性但病毒 源代码病毒。
蠕虫
从技术上将,蠕虫包含了两部分程序,引导程序和蠕虫本身。引导程序是在被攻击的计算机上编译运行。一旦发作,它就在源计算机和宿主机上连接。上传病毒主题并运行,然后查看是否能连接到其他计算机上。
间谍软件
一种主要的感染途径是下载驱动,仅仅访问网页就可能感染间谍软件。首先,网页将浏览器导向一个可执行文件,当浏览器访问该文件时,会弹出一个对话框让用户运行或保存。
rookit
rookit是一个程序或一些程序和文件的集合,它试图隐藏其死神的存在,即使被感染主机的拥有者以及决定对齐定位或删除。
防御
防火墙
防火墙有两种基本的类型,硬件防火墙和软件防火墙。有局域网需要保护的公司通常选择硬件防火墙,而家庭个人的用户通常选择软件防火墙。
防火墙根据一些规则来配置,这些规则描述什么是允许的,什么是不允许的。防火墙的管理者可以修改这些操作。
反病毒和抑制反病毒技术
病毒扫描器
通过数据库来存放已知的病毒。
每次复制都发生异变的病毒叫做多形态病毒。这种能够交换机器码指令而不影响程序功能的代码叫做变异引擎。
完整性检查程序
对所有干净的可执行文件计算一个校验和。
行为检查程序
病毒避免
代码签名
一种被广泛运用的方式是数字签名,
囚禁
基于模型的入侵检测
基于静态模型的入侵检测。
使用这种方法的时候,必须直到这么模型(系统调用图)。最直接的方式就是让编译器产生它并让程序的作者签名的同时附上它的证书。
模仿攻击可以破解这一方法
封装移动代码
沙盒法
解释
使用解释运行的代码比编译运行的代码的好处在于,每一条指令在执行前都由解释器进行检查。