3.黑客攻击与防范技术(下)--wjf


1 黑客攻击与防范技术(下) 中科院计算所教育 2 漏洞扫描是一种最常见的攻击模式, 用于探测系统和网络漏洞,如获取系统 和应用口令,嗅探敏感信息,利用缓存 区溢出直接攻击等。 针对某一类型的漏洞,都有专门的攻 击工具。另外,也有一些功能强大综合 扫描工具,针对系统进行全面探测和漏 洞扫描。 漏洞扫描和攻击概述 3 口令破解 • 弱口令扫描 • 暴力穷举 ˆ完全取决于机器的运算速度 • 字典破解 ˆ大大减少运算的次数,提高成功率 • 密码监听 ˆ通过嗅探器监听网络中的数据包 • 社会工程学 • 木马和键盘记录程序 4 常见弱口令 • !@#$% !@#$%^ !@#$%^& !@#$%^&* *** • @@@ 000000 00000000 0007 007 007007 • 0246 111 123 1234 12345 123456 1234567 • 12345678 123456789 1a2b3c 1p2o3i 1q2w3e • 1qw23e 1sanjose 2004 2222 369 4444 4runner • 54321 654321 777 7777 888888 911 99999999 • a12345 a1b2c3 a1b2c3d4 aaa aaaaaa abby abc • abc123 abcd abcd1234 abcde abcdef abcdefg • access access action active adam adg • adm admin Admin admin123 admin123456 • administrator Administrator administrator123 5 常见弱口令 • administrator123456 administratorpasswd adminpasswd adminpwd asdf asdfg asdfgh • asdfjkl asdfjkl; bill bin daemon doc fgh free • freedom fuck fuckyou god guest hacker job • kim love loveyou lp morris mp3 mypass • mypass123 mypc mypc123 newpass nice • nobody parol pass passwd Passwd password • Password pentium pizza planet playboy ppp • pw123 pwd qwerty root rose sex sexy shit • shotgun sos spirit spring sprite ssssss • storm super superman support sys telecom • temp test test1 test123 upload warez xxx • xxxx ytrewq zxcvb zxcvbnm 6 口令破解 • 弱口令扫描 ˆ流光 ˆNAT ˆCNIPC NT • 暴力穷举/字典破解 ˆWMICracker ˆSMBCrack • 实例 7 针对口令破解攻击的防范措施 • 安装入侵检测系统,检测口令破解行为 • 安装安全评估系统,先于入侵者进行模拟 口令破解,以便及早发现弱口令并解决 • 提高安全意识,避免弱口令 8 网络嗅探破解口令 • 以太网采用了CSMA/CD技术,由于使用了广播 机制,所以,所有与网络连接的工作站都可以看 到网络上传递的数据 • 如果两台主机进行通信的信息没有加密,只要使 用某些网络监听工具,例如,Sniffer Pro, NetXray,tcpdump ,Dsniff等就可以轻而易举地 截取包括口令、帐号等敏感信息。 9 网络嗅探破解口令 • 共享信道 ˆ广播型以太网 • 协议不加密 ˆ口令明文传输 10 以太网络的工作原理 —载波侦听/冲突检测(CSMA/CD, carrier sense multiple access with collision detection)技术 9载波侦听:是指在网络中的每个站点都具有同 等的权利,在传输自己的数据时,首先监听信 道是否空闲 • 如果空闲,就传输自己的数据 • 如果信道被占用,就等待信道空闲 9而冲突检测则是为了防止发生两个站点同时监 测到网络没有被使用时而产生冲突 11 以太网卡的工作模式 —网卡的MAC地址(48位) 9 通过ARP来解析MAC与IP地址的转换 9 用ipconfig/ifconfig可以查看MAC地址 —正常情况下,网卡应该只接收这样的包 9 MAC地址与自己相匹配的数据帧 9 广播包 —网卡完成收发数据包的工作,两种接收模式 9 混杂模式:不管数据帧中的目的地址是否与自己的地 址匹配,都接收下来 9 非混杂模式:只接收目的地址相匹配的数据帧,以及 广播数据包(和组播数据包) —为了监听网络上的流量,必须设置为混杂模式 12 共享网络和交换网络 —共享式网络 9通过网络的所有数据包发往每一个主机 9最常见的是通过HUB连接起来的子网 —交换式网络 9通过交换机连接网络 9由交换机构造一个“MAC地址-端口”映射表 9发送包的时候,只发到特定的端口上 13 应用程序抓包的技术 —UNIX系统提供了标准的API支持 9Packet socket 9BPF —Windows平台上通过驱动程序来获取数据 包 9驱动程序 9WinPcap 14 Packet socket —设置混杂(promiscuous)模式 9用ioctl()函数可以设置 —不同的UNIX或者Linux版本可能会有不同 的函数调用,本质上 9打开一个socket(或者通过open打开一个设备) 9通过ioctl()或者setsockopt()设置为混杂模式 9示例 15 BPF(Berkeley Packet Filter) —BSD抓包法 9 BPF是一个核心态的组件,也是一个过滤器, 9 Network Tap,接收所有的数据包 9 Kernel Buffer,保存过滤器送过来的数据包 9 User buffer,用户态上的数据包缓冲区 —BPF是一种比较理想的抓包方案 9 在核心态,所以效率比较高, 9 但是,只有少数OS支持(主要是一些BSD操作系统) —Libpcap(一个抓包工具库)支持BPF 9 Libpcap是用户态的一个抓包工具 9 Libpcap几乎是系统无关的 16 BPF和libpcap 17 关于libpcap —用户态下的数据包截获 —系统独立的API接口,C语言接口 —广泛应用于: 9网络数据收集 9安全监控 9网络调试 —支持过滤机制,BPF —http://www.tcpdump.org/pcap.htm 18 Windows平台下的抓包技术 —内核本身没有提供标准的接口 —通过增加一个驱动程序或者网络组件来访 问内核网卡驱动提供的数据包 9在Windows不同操作系统平台下有所不同 —不同sniffer采用的技术不同 9WinPcap是一个重要的抓包工具,它是 libpcap的Windows版本 19 WinPcap —WinPcap包括三个部分 9 第一个模块NPF(Netgroup Packet Filter),是一个虚 拟设备驱动程序文件。它的功能是过滤数据包,并把 这些数据包原封不动地传给用户态模块,这个过程中 包括了一些操作系统特有的代码 9 第二个模块packet.dll为win32平台提供了一个公共的 接口。不同版本的Windows系统都有自己的内核模块 和用户层模块。Packet.dll用于解决这些不同。调用 Packet.dll的程序可以运行在不同版本的Windows平 台上,而无需重新编译 9 第三个模块 Wpcap.dll是不依赖于操作系统的。它提 供了更加高层、抽象的函数。 20 WinPcap和NPF 21 Windows的网络结构 — NDIS(Network Driver Interface Specification,网络 驱动接口规范)描述了网络驱动与底层网卡之间的接口规 范,以及它与上层协议之间的规范 — NPF作为一个核心驱动程序而提供的 22 WinPcap的优势 —提供了一套标准的抓包接口 9 与libpcap兼容,可使得原来许多UNIX平台下的网络 分析工具快速移植过来 9 便于开发各种网络分析工具 —除了与libpcap兼容的功能之外,还有 9 充分考虑了各种性能和效率的优化,包括对于NPF内 核层次上的过滤器支持 9 支持内核态的统计模式 9 提供了发送数据包的能力 —http://winpcap.polito.it/ 23 发送数据包——Libnet —利用Libnet构造数据包并发送出去 —关于Libnet 9 支持多种操作系统平台 9 提供了50多个API函数,功能涵盖 • 内存管理(分配和释放)函数 • 地址解析函数 • 各种协议类型的数据包构造函数 • 数据包发送函数(IP层和链路层) • 一些辅助函数,如产生随机数、错误报告等 24 使用Libnet的基本过程 —数据包内存初始化 —网络接口初始化 —构造所需的数据包 —计算数据包的校验和 —发送数据包 —关闭网络接口 —释放数据包内存 libnet_init_packet(…); libnet_open_raw_sock(…); libnet_build_ip(…); libnet_build_tcp(…); libnet_do_checksum(…); libnet_write_ip(…); libnet_close_raw_sock(…); libnet_destroy_packet(…); 25 Sniffer的反措施 —合理的网络分段,在网络中使用网桥和 交换机;相互信任的主机处于同一网段 —使用加密技术传送敏感数据,如SSH —为了防止ARP欺骗,使用永久的ARP缓 存条目 —如何检测处于混杂模式的节点? 26 检测处于混杂模式的节点 — 网卡和操作系统对于是否处于混杂模式会有一些不同的 行为,利用这些特征可以判断机器是否运行在混杂模式 下。 — 检测手段 • Linux内核的特性:正常情况下,只处理本机MAC 地址或者以太广播地址的包。在混杂模式下,许多 版本的Linux内核只检查 数据包中的IP地址以确定 是否送到IP堆栈。因此,可以构造无效以太地址而 IP地址有效的ICMP ECHO请求,看机器是否返回 应答包(混杂模式),或忽略(非混杂模式)。 • Windows 9x/NT:在混杂模式下,检查一个包是否 为以太广播包时,只看MAC地址前八位是否为 0xff。 27 检测处于混杂模式的节点 9根据网络和主机的性能 • 根据响应时间:向本地网络发送大量的伪造数据 包,然后,看目标主机的响应时间,首先要测得一 个响应时间基准和平均值 —L0pht的AntiSniff产品,参考它的技术文档 28 一些sniffer工具 —buttsniffer,netmon,netxray, sniffer pro, ethereal,analyzer, windump(tcpdump的windows版本)。 —dsniff,linux_sniffer,snort,tcpdump, sniffit,ethereal 29 Windump 30 • 一个使用sniffer分析网页监控的例子 31 应用层介绍应用层介绍 „简单邮件传输协议 (SMTP) „文件传输协议(FTP) „超文本传输协议(HTTP) „远程连接服务标准协议 (Telnet) „域名系统(DNS) DNS Telnet HTTP FTP SMTP 32 DNSDNS报文报文 33 应用层的安全防护应用层的安全防护 ƒ 实施强大的基于用户的身份认 证 ƒ 实施数据加密,访问控制的理 想位置 ƒ 加强数据的备份和恢复措施 ƒ 对资源的有效性进行控制,资 源包括各种数据和服务 34 文件传输协议(FTP) • 主要的威胁 ˆ塞满整个硬盘空间 ˆ用户名及密码明文传输 • 防范措施 ˆ仅允许匿名登录 ˆFTP服务放在其他分区中 35 TelnetTelnet ƒ Telnet本身的缺陷是 • 没有口令保护 • 传输数据没有认证过程 • 没有完整性检查 • 传送的数据都没有加密 36 SMTPSMTP •Simple Mail Transfer Protocol(SMTP) ˆ用TCP进行的邮件交换是由报文传送代理 MTA(Message Transfer Agent)完成的。 两个MTA之间用NVT ASCII进行通信,客户 向服务器发出命令,服务器用数字应答码 和可选的字符串进行响应 37 简单邮件传输协议 ˆ主要威胁: € mail flood €sending viruses and Trojan €username leak €spam ˆ防护措施 €Anti-viruses gateway €使用安全的SMTP 软件 €培训 email 用户 €anti-spam 38 认证例子:263的邮件登录 39 认证例子:sina的邮件登录 40 电子邮件欺骗 • 为什么要进行电子邮件欺骗 ˆ隐藏发件人的身份,例如匿名信 ˆ骗取敏感信息 • 电子邮件欺骗的方法 ˆ与现实邮局进行比较 ˆ基本邮件协议没有认证机制 ˆ发信可以要求认证 41 电子邮件欺骗 • 使用类似的邮件地址 ˆ发信人使用被假冒者的名字注册一个账号,然 后给目标发送一封正常的信 他(她)能识 别吗? 我是你的上司XX,请 把XXX发送给我 我在外面度假,请送 到我的个人信箱 解决:使用数字签名 42 电子邮件欺骗 • 直接连到SMTP服务器上发信 ˆtelnet连到SMTP服务器的25端口,然后发送 命令,常用的命令为: €Helo、Mail from、 Rcpt to、 Data、 Quit €发件人、电子邮件地址等信息,都是一些字段的值: From: MAIL FROM: RCPT TO: 43 电子邮件保护措施 ˆ查看完整的电子邮件头部信息 €多数邮件系统允许用户查看邮件从源地址到 目的地址经过的所有主机 ˆ邮件服务器的验证 ™Smtp服务器验证发送者的身份。 ™验证接收方的域名与邮件服务器的域名 是否相同(如果是自己的用户,可以发往 别处,如果不是,则不relay)。 ™有的也验证发送者的域名是否有效,通 过反向DNS解析。 ˆ注意一个内部用户冒充另一个内部用户发送邮 件 44 客户端安全 • 使用ssl • 是用PGP • 追查IP 45 foxmail 46 ctrl-I 47 outlook 48 邮件选项 49 超文本传输协议HTTP • 主要威胁 ˆ恶意的active X or Java applet ˆExtended applications(Java,CGI,ASP..) • 防范措施 ˆSecure HTTP 和SSL ˆ安全级别设置 ˆASP的安全 50 浏览器骚扰 51 针对浏览器骚扰的防范措施 ¾ 使用IE Security等工具保护浏览器。 ¾ 因为修改注册表设置都是用的JavaScript脚本语言, 所以只需禁用它即可。但这种脚本语言应用广泛,所 以建议在IE的设置中将脚本设为“提示”。 ¾ 对使用Win2000的用户,只需在“控制面板”→ “管理 工具” →“服务”中禁用Remote Registry Service服 务,这样,网页也无法来修改用户的注册表了,但可 能会影响其他应用。 ¾ 很多杀毒软件具备Script Blocking功能,将通过IE 修改注册表的代码定义为Trojan.Offensive予以拦 截。 ¾ 使用IE6.0,可以防止网页对注册表的恶意修改。 52 Web欺骗 • 何谓Web欺骗? ˆ创造一个Web站点的映像,使得用户的 连接被接入到Hacker的服务器,达到欺 骗网络用户的目的。 • 为什么会受到Web欺骗? ˆ监控网络用户; ˆ窃取帐户信息; ˆ损坏网站形象; ˆ失效SSL连接(使用过期的证书)。 53 Web欺骗 • Web是建立在应用层上的服务,直接面向 Internet用户 • Web欺骗的根源 ˆ由于Internet的开放性,任何人都可以建立自己的Web 站点 ˆWeb站点名字(DNS域名)可以自由注册,按先后顺序 ˆ并不是每个用户都清楚Web的运行规则 • Web欺骗的形式 ˆ使用相似的域名 ˆCross-Site Scripting 54 Web欺骗 • 使用相似的域名 ˆ注册一个与目标公司或者组织相似的域名,然 后建立一个欺骗网站,骗取该公司用户的信 任,以得到这些用户的信息 ˆ例如:使用www.whitehouse.com来混淆 www.whitehouse.gov 55 Web欺骗 • Cross-Site Scripting(跨站脚本攻击) ˆ交互网站或者服务提供网站可能存在这种漏洞 ˆ攻击产生的根源 €网站提供交互时可使用HTML代码,用户可上传恶 意脚本代码 ˆ攻击方式(以一个论坛网站为例) €攻击者在签名档里添加一个链接,内容是把用户的 cookie发送到攻击者的邮箱中去 €攻击者发送一个消息,吸引其他用户来看 €用户浏览攻击者留下的信息,浏览器自动执行攻击 者的脚本 €攻击者接收到用户的cookie,然后可以伪装成用户 进行其他恶意行为 56 Web欺骗 • 防止Web欺骗-使用相似的域名 ˆ注意观察URL地址栏的变化 ˆ不要信任不可靠的URL信息 ˆ你是不是相信自己? €许多人根据自己的猜测去在浏览器地址栏中写下要 访问的网址 • 防止Web欺骗-Cross-Site Scripting ˆ网站不允许使用HTML语言,不允许使用脚本程序 €过于严格没有必要 €对特殊字符的过滤,注意黑客的对策:采用另一种 字符表达方式来逃避过滤,例如%20 57 IIS的unicode漏洞 • 如果存在该漏洞,使用浏览器,就可进行攻击, 输入: http://x.x.x.x/scripts/..%c0%af../winnt/system 32/cmd.exe?/c+dir 就可列出服务器硬盘目录。 相当于执行了cmd /c dir 当然也可运行net命令。 • 不同语言版本中,不同的代码,如上面是英文 win2000,对于中文win2000,用%c1%1c,起到/ 的作用。 58 IIS+ASP:问题出奇的多 • idc&ida漏洞 • .htr漏洞 • NT Site Server Adsamples漏洞 • .printer漏洞 • Unicode漏洞 • Webdav漏洞 • Null.htw漏洞 • IIS HACK漏洞 • webhits.dll & .htw漏洞 • ISM.DLL漏洞 • ... 59 对IIS服务进行安全配置 • (1)将IIS安装在和系统不同的分区,使得IIS漏洞 引起的安全问题尽可能不要影响破坏,如果已安 装IIS,建议卸载重装。 • (2)更改Web服务主目录。右键单击“默认Web站 点→属性→主目录→本地路径”,将“本地路径”指 向其他目录。默认的根目录在 inetpub\wwwroot。将这个默认目录删掉。 60 • (3)将默认生成的众所周知的目录删掉,如 IIShelp,IISAdmin,IISSamples,_vti_bin, Scripts,MSADC等等,以免给攻击者留下机 会。 • (4) 删除不必要的IIS扩展名映射。右键单击“默认 Web站点”,选→属性→主目录→应用程序设置-> 配置”,打开应用程序窗口,去掉不必要的应用程 序映射。如不用其他映射,只保留.asp即可。 或依情况保留shtm,shtml,stm这几种格式。 对IIS服务进行安全配置 61 • (5)站点→属性→web站点→启用日志记 录,建议日志路径设在和web主目录不同 的分区,以增加攻击者读取日志的难度。 日志文件的权限:administrator和system 为完全控制,everyone为只读。 对IIS服务进行安全配置 62 • (6) web主目录中的文件和目录,通过右键 点“属性”设置权限,静态文件允许读,不 许写,ASP脚本文件、exe程序允许执行, 但拒绝读、写;所有文件和目录要将 everyone用户组的权限设为只读。 对IIS服务进行安全配置 63 • (7)可以考虑在站点→属性→web站点 →TCP端口中,修改端口,不使用众所周 知的端口80。 • (8)可以考虑在站点→属性→web站点→目 录安全性中,在IP地址和域名限制中,允 许或拒绝特定IP发来的web请求。 对IIS服务进行安全配置 64 • 如果有机密性需求,可以考虑使用SSL加 密。 • 图省事的话,可以使用微软提供的IIS lockdown工具。 对IIS服务进行安全配置 65 域名系统(DNS) • Domain Name System(DNS) ˆ主要威胁 €Obtain zone files €DNS spoof/poison ˆ防范措施 €Firewall blocks out zone transfer €Accept zone transfer only from specific hosts ˆ 背景知识:DNS的zone file 有变动后, name server 管理者就 增加一个序列号,slave会对比序列号以决定是否要再 copy 一次,即 zone transfer。 66 DNS欺骗 •• 攻击复杂,使用简单攻击复杂,使用简单 •• RSA SecurityRSA Security网站曾被成功攻击网站曾被成功攻击 •• DNSDNS欺骗原理欺骗原理 ˆˆIPIP与域名的关系与域名的关系 ˆˆDNSDNS的域名解析的域名解析 ˆˆRand Port to DNSRand Port to DNS’’s 53s 53 67 DNS欺骗原理 Hack.bupt.com /ns.bupt.com ns.bupt.com /ns.internet.net www.rsa.com ns.bupt.com ns.internet.net 请问com的权威服务器 ns.bupt.com ns.internet.net 22.1.2.3 ns.bupt.com 22.1.2.3 请问rsa.com的子网DNS ns.bupt.com 22.1.2.3 199.6.6.1 ns.bupt.com 199.6.6.1 www.rsa.com的ip地址 ns.bupt.com 199.6.6.1 199.6.6.5 Hack.bupt.com ns.bupt.com 200.122.106.51 1: 2: 3: 4: 5: 6: 7: 8: Hacker 68 应用层协议安全问题小结 • 应用层协议本身存在的主要问题是信息明 文传输,包括如FTP、Telnet登录验证帐号 和密码都是明文,攻击者可以通过网络嗅 探获取有价值信息,以备下一步攻击之用, 此外应用层协议的许多威胁来自于低层协 议的安全性问题。 69 应用层安全措施 • 安全协议:SSH ,S-HTTP, SET • 应用层的安全服务实际上是最灵活的处理单 个文件安全性的手段 ,可以实施细粒度的 安全控制 • 可能的方法:对每个应用(及应用协议)分别 进行修改;实施强大的基于用户的身份认 证 ;实施数据加密 ;访问控制 ;数据的备 份和恢复措施 ;对资源的有效性进行控 制。 • 应用层安全的解决目前往往依赖于网络层、 操作系统、数据库的安全 70 TCP/IP各层次与安全服务 TCP/IP 协议层 安全服务 网络接口 互联网层 传输层 应用层 对等实体鉴别 - Y Y Y 数据源鉴别 - Y Y Y 访问控制服务 - Y Y Y 连接保密性 Y Y Y Y 无连接保密性 Y Y Y Y 选择域保密性 - - - Y 流量保密性 Y Y - Y 有恢复功能的连接完整性 - - Y Y 无恢复功能的连接完整性 - Y Y Y 选择域连接完整性 - - - Y 无连接完整性 - Y Y Y 选择域非连接完整性 - - - Y 源发方不可否认 - - - Y 接收方不可否认 - - - Y 71 缓冲区溢出攻击 十年来最大的安全问题 通过向程序的缓冲区写超出其长度的内容,造 成缓冲区的溢出,从而破坏程序的堆栈,使程序 转而执行其它指令,以达到攻击的目的。这种攻 击可以使得一个匿名的Internet用户有机会获得 一台主机的部分或全部的控制权。 72 缓冲区溢出历史 ˆ1988年的Morris蠕虫病毒,放倒了6000 多台机器:利用UNIX服务finger中的缓冲 区溢出漏洞来获得访问权限,得到一个 shell ˆ1996年前后,开始出现大量的Buffer Overflow攻击,因此引起人们的广泛关注 ˆ源码开放的操作系统首当其冲 ˆ随后,Windows系统下的Buffer Overflows也相继被发掘出来 73 缓冲区溢出技术基础 • 进程的内存空间示意图 ˆStack ˆHeap ˆBss ˆData ˆText 74 缓冲区溢出技术基础 int func(int a, int b){ int ret= a + b; return ret; } int main(int argc, char* argv[ ]) { int result = func(1, 2); printf("Hello World!\n"); return 0; } 2 1 Ret-add pre-ebp ret … … Stack frame 75 缓冲区溢出技术基础 • EIP、EBP、ESP指针 2 1 Ret-add pre-ebp ret … … Stack frame ebp 恢复到调用func前的栈 参数压栈 保存pre-ebp 76 缓冲区溢出技术基础 • 产生缓冲区溢出的原因 ˆ在C语言中,指针和数组越界不保护是Buffer overflow的根源,而且,在C语言标准库中就 有许多能提供溢出的函数,如strcat(), strcpy(), sprintf(), vsprintf(), bcopy(), gets() 和scanf() ˆ通过指针填充数据 ˆ不好的编程习惯 77 栈溢出 #include #include char shellcode[] = "\xeb\x1f\x……"; char large_string[128]; int main(int argc, char **argv){ 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 < (int) strlen(shellcode); i++) large_string[i] = shellcode[i]; strcpy(buffer, large_string); return 0; } para1 para2 Return add Buffer (96bytes) i long_ptr 高地址 低地址 shellcodebuffer Ret-add Stack frame 78 堆溢出 • 在.data、.bss和heap中溢出的情形,都称 为heap overflow,这些数据区的特点是: 数据的增长由低地址向高地址 • 比较少引起人们的关注,原因在于 ˆ比栈溢出难度更大 ˆ需要结合其他的技术,比如 €函数指针改写 €Vtable改写 €Malloc库本身的漏洞 79 缓冲区溢出目的 • 溢出之后,让程序执行我们指定的代码 • 由于这段代码往往不能太长,所以需要精心设 计,并且充分利用系统中现有的函数和指令 • 对于不同的操作系统 ˆLinux/Unix,尽可能地得到一个shell(最好是 root shell) ˆWindows,一个可以远程建立连接的telnet会 话 80 缓冲区溢出过程 • 过程 €找到有漏洞的程序,如在输入非正常字符串 的时候,出现异常。 €或者从程序中找漏洞,用好的反汇编工具, 加上耐心。 ™以一个特定的字符串作为线索,跟踪到 strcpy这样的函数,看是否有边界检查 ˆ编写shellcode ˆ编写试验程序,直到成功 ˆ示例 81 ShellCode代码的特点 • 本地shellcode: ˆ最简单的做法是调用CreateProcess创 建一个进程,执行cmd.exe ˆUnix下:shellcode.c #include int main() { char *name[2]; name[0] = "/bin/sh"; name[1] = NULL; execve(name[0], name, NULL); _exit(0); } 82 ShellCode代码的特点 • 远程shellcode: ˆ在远程机器上执行一个网络服务程序, 打开一个socket端口,等待客户程序来 连接。 ˆ当客户程序连接上之后,为客户建立一 个cmd.exe进程,并且把客户的输入输 出与cmd.exe的输入输出联系起来,于 是客户就有了一个远程shell 83 避免缓冲区溢出 • 编程的问题都可以在开发阶段防止,事实 上,并没有这么简单 ˆ有些开发人员没有意识到问题的存在 ˆ有些开发人员不愿意使用边界检查,因为会影 响效率和性能 ˆ另一方面,许多遗留下来的代码还很多 • 在开发过程中,尽量使用带有边界检查的 函数版本,或者自己进行越界检查 84 避免缓冲区溢出 • 作为用户,应该怎么做来避免缓冲区溢 出? • 关闭端口或服务。管理员应该知道自己的 系统上安装了什么,并且哪些服务正在运 行 • 漏洞一公布,大的厂商就会及时提供补丁 • 在防火墙上过滤特殊的攻击包 • 以所需要的最小权限运行软件 85 著名的缓冲区溢出介绍 • Outlook缓冲区溢出 ˆOutlook处理电子邮件的方法有一个漏洞 ˆ攻击者发送一个带有畸形头信息的电子邮件 ˆ使受害计算机瘫痪或者在上面运行任意代码, 建立后门 ˆ攻击使在邮件头信息里放入过量信息 ˆ很难被检测 86 著名的缓冲区溢出介绍 • Linuxconf缓冲区溢出 ˆ带有GUI界面的管理员工具 ˆ运行在98端口,允许通过Web远程访问 ˆ意味着程序必须处理头信息来获得需要的信息 ˆ在HTTP头信息中插入过量的信息,导致计算 机缓冲区溢出 ˆ不允许远程访问98端口 87 著名的缓冲区溢出介绍 • IIS缓冲区溢出 ˆIIS:windows系统上最不安全的服务 ˆISAPI提供对管理脚本(.ida文件)和Inernet数据 (.idq)查询的支持 ˆ向idq.dll发送一个过量的变量 €GET /null.ida? [buffer]=X HTTP/1.1 ˆ一些具体的攻击方法没有公开 ˆCode Red蠕虫利用了这一IIS漏洞 ˆIIS安全 88 著名的缓冲区溢出介绍 • Windows XP UPNP缓冲区溢出 ˆ通用即插即用功能,打开5000端口,HTTP格式 ˆ缓冲区溢出,取得一个系统级Shell • SSL-Too-Open ˆ当系统打开HTTP服务和SSL服务时 €通过SSL溢出一个和启动HTTP服务器帐号权限相 等的Shell ˆ如果使用root帐号启动WEB服务,攻击者就取 得root权限 89 综合扫描 • 安全扫描审计 ˆ分类 €网络安全扫描 €系统安全扫描 ˆ优点 €较全面检测流行漏洞 €降低安全审计人员的劳动强度 €防止最严重的安全问题 ˆ缺点 €无法跟上安全技术的发展速度 €只能提供报告,无法实际解决 €可能出现漏报和误报 90 市场部 工程部 router 开发部 ServersFirewall 综合扫描器的使用 91 几款著名的扫描器 • ISS Internet Scanner 优点:报告功能强大,漏洞检查集完备,可用性 很好。 平台:Windows NT URL:Http://www.iss.net • SAINT 以SATAN为基础的网络安全扫描工具。 平台:UNIX URL:Http://www.wwwdsi.com 92 扫描器产品介绍 • Nessus 由Renaud编写的开放源码项目。 • 优点:采用分布式结构引擎具有极大弹 性,可扩展性强,漏洞库较全面。 • 平台:UNIX • URL:Http://www.nessus.org • 演示 93 漏洞利用周期图表 入侵者着眼 新的漏洞 自动扫描安全 漏洞工具发布 自动扫描安全漏 洞工具广泛流传 入侵者采用公 布的攻击代码 简陋的漏洞 攻击代码发布 资深黑客 发现漏洞 94 漏洞攻击的防范措施 •安装防火墙,禁止访问不该访问的服务端口,使用 NAT隐藏内部网络结构 •安装入侵检测系统,检测漏洞攻击行为 •安装安全评估系统,先于入侵者进行模拟漏洞攻击, 以便及早发现漏洞并解决 •提高安全意识,经常给操作系统和应用软件打补丁 95 特洛伊木马程序可以直接侵入用户的电脑并进 行破坏,它常被伪装成工具程序或者游戏等诱使用 户打开带有木马程序的邮件附件或从网上直接下载 ,一旦用户打开了这些邮件的附件或者执行了这些 程序之后,它们就会在计算机系统中隐藏一个可以 在启动时悄悄执行的程序。这种远程控制工具可以 完全控制受害主机,危害极大。 Windows下: Netbus、subseven、BO、冰河、网络神偷等 UNIX下: Rhost ++、Login后门、rootkit等 木马概述 96 • 对木马程序而言,它一般包括两个部分:客户端和服务 器端。 • 客户端程序是控制者所使用的,用于对受控的计算机进 行控制。服务器端程序和客户端程序建立起连接就可以 实现对远程计算机的控制了。 • 木马运行时,首先服务器端程序获得本地计算机的最高 操作权限,当本地计算机连入网络后,客户端程序可以 与服务器端程序直接建立起连接,并可以向服务器端程 序发送各种基本的操作请求,并由服务器端程序完成这 些请求,也就实现对本地计算机的控制了。 • 木马本身不具备繁殖性和自动感染的功能。 木马组成 97 木马分类 • 远程访问型木马是现在最广泛的特洛伊木马,它可以 访问受害人的硬盘,并对其进行控制。这种木马用起来 非常简单,只要某用户运行一下服务端程序,并获取该 用户的IP地址,就可以访问该用户的计算机。这种木马 可以使远程控制者在本地机器上做任意的事情,比如键 盘记录、上传和下载功能、截取屏幕等等。 • 密码发送型木马的目的是找到所有的隐藏密码,并且 在受害者不知道的情况下把它们发送到指定的信箱。 • 键盘记录型木马非常简单的,它们只做一种事情,就 是记录受害者的键盘敲击,并且在LOG文件里做完整的 记录。这种木马随着系统的启动而启动,知道受害者在 线并且记录每一件事。 98 木马常用欺骗法 •• 捆绑欺骗:如把木马服务端和某个游戏捆绑成一捆绑欺骗:如把木马服务端和某个游戏捆绑成一 个文件在邮件中发给别人个文件在邮件中发给别人 ;; •• 危险下载点:攻破一些下载站点后,下载几个下危险下载点:攻破一些下载站点后,下载几个下 载量大的软件,捆绑上木马,再悄悄放回去让别载量大的软件,捆绑上木马,再悄悄放回去让别 人下载人下载 ;或直接将木马改名上载到;或直接将木马改名上载到FTPFTP网站上,网站上, 等待别人下载;等待别人下载; •• 文件夹惯性点击:把木马文件伪装成文件夹图标文件夹惯性点击:把木马文件伪装成文件夹图标 后,放在一个文件夹中,然后在外面再套三四个后,放在一个文件夹中,然后在外面再套三四个 空文件夹;空文件夹; •• zipzip伪装:将一个木马和一个损坏的伪装:将一个木马和一个损坏的zipzip包捆绑在包捆绑在 一起,然后指定捆绑后的文件为一起,然后指定捆绑后的文件为zipzip图标;图标; 99 木马常用欺骗法 •• 木马隐藏方式:木马隐藏方式: ˆˆ文件隐藏,伪装,如如文件隐藏,伪装,如如Kernl32.dllKernl32.dll,, sysexlpr.exesysexlpr.exe 等。等。 ˆˆ在任务管理器中隐形。在任务管理器中隐形。 ˆˆ悄无声息地启动,如在悄无声息地启动,如在win.iniwin.ini、、 system.inisystem.ini、注册表等处设置;、注册表等处设置; ˆˆ怎样察看启动时加载的进程?怎样察看启动时加载的进程?工具工具 100 一种获取口令的攻击 • 改变登录程序到一个后门程序,它捕获用户口 令,由于后门象正常的登录程序一样的工作,因 此用户不能辨别出来。 • 在UNIX环境中想查看当前用户的PATH,可以用set 或env命令来查看,普通用户的PATH会像这样 PATH=/bin:/usr/bin:/usr/local/bin:/usr/bin/ X11,对于想执行不在这些目录下的命令时,用户 需要打./,如#./configure; • 如果有些系统管理员为了省事,在自己的路径中 加了一个”.”,可能会造成严重的问题。 G. Mark Hardy 101 实例 • 一个黑客取得了一个普通用户的权限,编 写一个类似su这样的程序来骗得管理员的 超级用户密码。源代码su.c。 $gcc –o su su.c $cp su /tmp $su Password:[不可见的密码] su: incorrect Password • 这时我们可以到/tmp/下看到刚才输入的密码已被 存到/tmp/catchpass这个文件中了。 102 针对木马攻击的防范措施 •安装防火墙,禁止访问不该访问的服务 端口,使用NAT隐藏内部网络结构 •安装防病毒软件 •提高安全意识,尽量避免使用来历不明 的软件 103 此类攻击耗尽服务器的计算资源或存储 资源或带宽资源,使得系统没有剩余的资源 给其他用户可用。 Flooding攻击:发送垃圾数据来阻塞服务 如SYN (Synchronize) Flooding攻击, 利用 TCP 实现中的漏洞(有限的缓存)来阻塞外 来的连接请求。是当前最流行的DoS与DDoS(分布 式拒绝服务攻击)的方式之一。 Denial of Service (DoS) 104 SYN-Flooding攻击 •建立TCP连接的标准过程为三次握手。 •假设一个用户向服务器发送了SYN报文后突然死机或掉线, 那么服务器在发出SYN+ACK应答报文后是无法收到客户端 的ACK报文的(第三次握手无法完成)。 •这种情况下服务器端一般会重试(再次发送SYN+ACK给客 户端)并等待一段时间后丢弃这个未完成的连接,这段时间 的长度称为SYN 超时,一般来说这个时间是分钟的数量级 (大约为30秒到2分钟)。 •如果攻击者大量模拟这种情况,服务器端将为了维护一个非 常大的半连接列表而消耗非常多的资源:数以万计的半连 接,简单的保存并遍历也会消耗非常多的CPU时间和内存。 •服务器忙于伪造的TCP连接请求而无暇理睬客户的正常请 求。 105 SYN (我可以和你连接吗?) ACK | SYN(可以,请确认!) ACK (确认连接) 发起方 应答方 正常的三次握手建立通讯的过程 SYN-Flooding攻击 106 SYN-Flooding攻击 攻击者 受害者 攻击者伪造源地址进行SYN请求 不能建立正常的连接 其它正常用户得不到响应 SYN (我可以和你连接吗?) ACK | SYN(可以,请确认!) ??? 107 正常tcp connect 攻击者 受害者 大量的tcp connect 这么多 需要处 理? 不能建立正常的连接 正常tcp connect 正常tcp connect 正常tcp connect 正常tcp connect 正常用户 正常tcp connect SYN-Flooding攻击 108 SYN Defender 攻击者 目标 攻击者伪造源地址进行SYN请求好像不 管用了 其它正常用户能够得到响应 SYN ACK | SYN ??? SYN ACK ACK | SYN 109 SYN proxy 攻击者 目标 攻击者伪造源地址进行SYN请求好像不 管用了 其它正常用户能够得到响应 SYN ??? ACK | SYN 110 一种DoS攻击 • chargen服务:UDP/TCP端口19。 UDP chargen server若收到一个包,就会回一个 包回去;而TCP chargen server若发现与 client的连接存在,就会不断的发送封包给 client,直到连接中断。RFC864。 111 一种DoS攻击 $telnet 140.0.0.0 19 Trying 140.0.0.0... Connected to haydn.ntu.edu.tw. Escape character is '^]'. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno ^C^] Connection closed. 112 用tcp chargen进行DoS • 使得Client端连接一个URL,在html里置放自动会Load(使用 Java/Script)之http://CHARGEN_HOST:19/之URL,则此主 机就会疯狂的向CHARGEN_HOST主机抓取大量的资料.而 CHARGEN_HOST可以使用扫描技术来获得。 • 最终可以让browser收到大量的封包而消耗大量的内存。 • 攻击强度: 1)win2000的client端IE,每秒钟会被消耗超过1MB的虚拟内 存,数百秒之后,client反应迟钝,VM都被用光,然後Win2000 会增大VM的大小,就会将C盘整个占满。 2)client如果使用http proxy,则proxy server也会被拖垮。 113 • 对策:关掉不必要的TCP/IP服务(如 chargen),或者对防火墙进行配置阻断来 自Internet的对这些服务的请求都可以防范 chargen flood攻击。 114 Teardrop攻击 • 泪滴也是一种常见的拒绝攻击方式,它利用的 是系统在实现时的一个错误,即攻击特定的IP协 议栈实现片段重组代码存在的缺陷,会造成系统 的死机或重新启动。 • 网络分组穿越不同的网络时,有时候需要根据 网络最大传输单元MTU来把它们分割成较小的 片。 • 早期的Linux系统在处理IP分片重组问题时,尽 管对片段是否过长进行检查,但对过短的片段却 没有进行验证,所以导致了泪滴形式的攻击。 115 Teardrop攻击 ™ 在 linux(2.0内核)中有以下处理:当发现有位置重合时 (offset2
还剩149页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

Mr.Dangerous

贡献于2014-10-28

下载需要 5 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf