1、1. 简述网页木马的四个工作过程木马的工作过程可分为四部分:木马的植入、木马的安装、木马的运行和木马的自启动。 (以灰鸽子木马程序为例)1)木马的植入网页木马就是一个由黑客精心制作的含有木马的 HTML 网页,因为MS06014 漏洞存在,当用户浏览这个网页时就被在后台自动安装了木马的安装程序。所以黑客会千方百计的诱惑或者欺骗人们去打开他所制作的网页,进而达到植入木马的目的。不过随着人们网络安全意识的提高,这种方法已经很难欺骗大家了。还有一种方法就是通过 标签,在一个正常网站的主页上链接网页木马。浏览者在浏览正常的网站主页时,iframe 语句就会链接到含有木马的网页,网页木马就被悄悄植入了。
2、这种方法就是大家经常说的“挂马” ,而中了木马的主机通常被幽默的称作“肉鸡” 。 “挂马”因为需要获取网站管理员的权限,所以难度很大。不过他的危害也是十分巨大的,如果黑客获得了一个每天流量上万的知名网站的管理员权限并成功“挂马” ,那试想他会有多少“肉鸡” 。2)木马的安装木马的安装在木马植入后就被立即执行。当网页木马植入后,木马会按照通过网页木马脚本中指向的路径下载木马服务端安装程序,并根据脚本中的设定对安装程序进行重命名。通常会重新命名一个与系统进程相近的名字来迷惑管理员,使安装过程及其留下的痕迹不通过细心查看不易被发觉。安装程序下载完成后,自动进行安装。生成可执行文件 C:W.ini,并
3、修改注册表生成名为 windows XP Vista 的系统服务。其中 .ini 就是木马服务器程序隐藏在背后的主谋。3)木马的运行木马服务器安装完成后就会立刻连接网络寻找其客户端,并与其建立连接。这时木马程序会将自己的进程命名为 IEXPLORE.EXE,此进程与 Windows 的IE 浏览器进程同名,同样是为了迷惑管理员来伪装自己。当木马服务端与客户端建立连接后,客户端就如同拥有了管理员权限一样,可随意对“肉鸡”进行任何操作。4)木马的自启动木马安装时生成系统服务 Windows XP Vista。Windows XP Vista 的可执行文件路径:“C:WINDOWSH.ini。 ”描
4、述:“灰鸽子服务端程序,远程监控管理。 ”启动类型:“自动。 ”很明显可以看出灰鸽子是通过此系统服务执行 .ini 文件来自启动木马服务器。存在于系统目录下的H.ini 文件被设置成一个隐藏的受保护的操作系统文件,很难被人发现。2.简述 iframe 标签的作用,并给一个 iframe 挂马的例子。iframe 也叫浮动帧标签,它可以把一个 HTML 网页嵌入到另一个网页里实现“画中画”的效果。例如:被嵌入的网页可以控制宽、高以及边框大小和是否出现滚动条等。如果把宽(width) 、高(height)都设置为 0,代码插入到首页后,首页不会发生变化,但是嵌入的网页实际上已经打开。3.什么是缓冲
5、区缓冲区是内存中存放数据的地方,是程序运行时计算机内存中一个连续的数据块,它保存了给定类型的数据。为了不用太多的内存,一个能动态分配变量的程序在系统运行时才决定给它们分配多少内存。4.什么是缓冲区溢出攻击通过向程序的缓冲区(堆、栈等)中写入超出其长度的数据,造成缓冲区溢出。缓冲区的溢出可以破坏程序执行流程,使程序转向执行其它指令。利用缓冲区溢出可以达到攻击主机的目的。5.简述避免缓冲区溢出的基本方法目前有四种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响。分别是:编写正确的代码,非执行的缓冲区,数组边界检查,程序指针完整性检查1)编写正确的代码C 和 C+语言注重效率而忽视正确性的特性,导致众
6、多源代码漏洞,现在已经开发了一些工具和技术来帮助程序员编写安全正确的程序。如用 grep 来搜索源代码中容易产生漏洞的库的调用等,通过人为随机地产生一些缓冲区溢出来寻找代码的安全漏洞。还有一些静态分析工具用于侦测缓冲区溢出的存在,这些工具都为程序员能够编写正确代码提供了方便。2)非执行的缓冲区通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不可能执行被植入被攻击程序输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。我们不可能使得所有程序的数据段不可执行,因为很多系统为实现更好的性能和功能,往往在数据段中动态地放入可执行的代码,但是我们可以让堆栈数据段不可执行,这样就可以最大限度地保证
7、了程序的兼容性和安全性。3)数组边界检查对于数组操作,只要数组不能被溢出,溢出攻击也就无从谈起。为了实现数组边界检查,则所有的对数组的读写操作都应当被检查以确保对数组的操作在正确的范围内。最直接的方法是检查所有的数组操作,如采用 Richard Jones 和 Paul Kelly 开发了一个 gcc 的补丁。但是这种完全的检查要付出很大的性能代价,使程序执行变慢。4)程序指针完整性检查程序指针完整性检查和边界检查有略微的不同。与防止程序指针被改变不同,程序指针完整性检查在程序指针被引用之前检测到它的改变。因此,即便一个攻击者成功地改变程序的指针,由于系统事先检测到了指针的改变,因此这个指针将不会被使用。与数组边界检查相比,这种方法不能解决所有的缓冲区溢出问题;采用其他的缓冲区溢出方法就可以避免这种检测。但是这种方法在性能上有很大的优势,而且兼容性也很好。