1:远程攻击的几个阶段
1) 准备阶段 确定攻击目的——收集信息——服务分析——系统分析——漏洞分析
2) 攻击阶段 破坏型攻击(现成的工具,难度低) / 入侵型攻击(获得权限,难度比较大)
3) 善后阶段 留后门 / 擦除痕迹(修改日志、替换系统程序)
2:扫描与防御技术
1) 扫描是把双刃剑
对系统管理者而言,可以了解网络的安全配置和正在运行的应用服务,及时发现系统和网络中可能的安全漏洞和错误配置,客观评估网络风险等级,增强对系统和网络的管理和维护
对攻击者而言,扫描是绝大多数网络攻击的第一步,利用它来查找网络上有漏洞的系统,收集信息,为后续攻击做准备
2) 扫描类型
Ping / 端口扫描 / 漏洞扫描(基于漏洞库、基于模拟攻击)
3) 端口扫描技术
a) TCP connect()不需要特权,但留下大量连接和错误记录,很容易被发现;端口开启则成功返回,否则返回-1
b) TCP SYN 半连接,需要超级用户权限来调用专门的系统调用;端口开启则返回SYN/ACK,否则返回RST
c) TCP FIN 秘密扫描,需要超级用户权限且只对特定的操作系统有用;端口开启则无回复,否则返回RST
d) UDP 需要超级用户权限,且不可靠;端口开启则无回复,否则返回ICMP不可达
e) FTP代理扫描 PORT/LIST命令;端口开启则返回150和226,否则返回425 can't build daa connection: Connection refused
f) OS指纹识别 主动协议栈 / 被动协议栈(TTL / window size / df / tos)
4) 常用的扫描器
SATAN / ISS Internet Scanner / Nessus / Nmap / X-Scan
5) 扫描的防御
a) 端口扫描检测工具ProtectX / Winetd / Port Sentry
b) 个人防火墙
c) 日志审计
d) 修改Banner,隐藏主机信息用户正常连接时服务器提供的提示信息
总的来说,进制不必要的服务、屏蔽敏感信息、合理配置防火墙和IDS、及时安装系统补丁
3:网络嗅探与防御
1) 共享式网络下的嗅探技术
共享式网络:任何一个节点都会接收到在信道中传输的数据帧,节点如何处理该数据帧,取决于数据帧的真实目的地址和节点网卡的接收模式
网卡的接收模式:一般模式(广播、组播、直接) / 混杂模式【网卡对数据帧中的目的MAC地址不加任何检查,全部接收】
数据包的处理过程:链路层(MAC地址匹配)——网络层(IP地址匹配)——传输层(端口匹配)
原理:有一个直接与网卡驱动程序接口的驱动模块,作为网卡驱动与上层应用的“中间人”,它将网卡设置成混杂模式,并将接收到的数据发送给上层应用,由上层应用来决定是上传该数据包还是丢弃
嗅探软件开发库:基于UNIX系统的开发库LibPcap,基于Windows系统的开发库WinPcap
2) 交换式网络下的嗅探技术
交换式网络:用交换机或者其他非广播式交换设备建成的局域网,这些设备根据收到的数据帧中的MAC地址来决定数据帧应发向交换机的哪个端口
a) 溢出攻击——大量MAC地址错误数据帧,导致交换机中的MAC地址与端口映射表溢出,从而退化成广播方式来转发数据包
b) ARP欺骗——IP地址和MAC地址间的转换协议(在下面会详说)
3) 防御
a) 通用手段
安全的网络拓扑结构——构造合理的网络分段
会话加密——数据通道加密(SSH/SSL/VPN)、数据内容加密
注意重点区域的安全防范——网关、交换机、路由器等地方
b) 共享式网络下
检测混杂模式网卡
i:网络和主机响应时间测试——骤然增加目标地址不是本地的网络通信流量,处于混杂模式的网卡响应时间数量级变化较大
ii:ARP检测——伪造ARP请求报文,目的地址不是广播地址,发送给网络上的各个节点;某个主机响应这个ARP请求,则说明该节点处于混杂模式
检测通信丢包率——网络结构正常的情况下,数据丢包率高说明有网卡处于混杂模式
检测网络带宽异常——某台机器长时间占用了较大的带宽,说明该网卡处于混杂模式
c) 交换式网络下
不要把网络安全信任关系建立在单一的IP或MAC基础上,而是IP-MAC关系上
使用静态ARP或IP-MAC对应表代替动态的,并禁止自动更新,使用手动更新
定期检查ARP请求,探测ARP欺骗
4:口令破解与防御
1) 口令破解方式
词典攻击——根据用户信息建立用户可能使用的口令的词典文件,利用词典文件进行猜测
强行攻击——破解时间长
组合攻击——在使用词典单词的基础上,在单词后面串接几个字母和数字进行攻击
其它攻击——社会工程学、偷窥、搜索垃圾箱、口令蠕虫、特洛伊木马、网络嗅探、重放
2) 口令破解器
口令产生器、口令加密模块、口令比较模块
3) 口令破解的防御
使用强口令——每45天换一次、至少包含10个字符、至少包含一个字母一个数字一个特殊符号、字母数字符号混合、不包含词典中的单词、不重复使用之前的五个口令、至少使用10天、设定口令登陆限制次数
针对存放口令信息的系统——防止口令信息的未授权泄露、修改和删除(对内容进行加密,隐藏原始信息,使其不可读)
一次性口令——挑战响应机制,口令并么有在网络上传输
口令管理策略
5:欺骗攻击与防御
1) IP欺骗与防御
简单的IP地址变化——无法接收返回的数据包,盲目飞行攻击,只能进行拒绝服务攻击
源路由攻击——指定宽松的源站线路(指明返回的数据包需要经过的IP地址清单,如果需要,可以经过除这些地址意外的地址),并将自己的IP列在地址清单中
利用UNIX系统间的信任关系
TCP会话劫持(一般在网络流量高峰期进行【可供选择的会话多,且不容易被发向】)
过程:发现攻击目标——确认动态会话——猜测序列号(随着传输字节数递增)——使客户主机下线(拒绝服务攻击)——接管会话
防御:
对基本的IP欺骗——出口/入口过滤、禁止使用源路由、不使用信任关系
会话劫持攻击——加密、安全协议
2) ARP欺骗与防御
局域网内通信(主机中的ARP缓存表)、局域网间通信(主机中的ARP缓存表,网关的ARP缓存表)
缺陷:主机收到ARP应答包,不验证而直接更新本地的ARP缓存表中的原有信息
防御:IP-MAC地址绑定、静态ARP缓存、使用ARP服务器、使用ARP欺骗防护软件
3) DNS欺骗与防御
当你访问某域名,需要知道IP——进行域名解析——本地DNS服务器——更高层DNS服务器(直到返回解析结果)
怎样伪造DNS应答消息?一种可能是控制了某个域名服务器,在该服务器的缓存中去添加记录,让攻击目标的域名指向攻击者的欺骗IP,但这种可能性很低;一般攻击者是控制该服务器所在网络的某台主机,并可以监听该网络中的通信情况,对该DNS服务器进行欺骗攻击,在此之前,我们要知道:DNS数据通过UDP传输,端口53,而一个DNS服务器可能同时进行多个解析,这时怎么区分不同的解析过程,主要是DNS报文格式头部的ID域,这个ID号机位DNS欺骗攻击的关键所在
看一个例子,就能比较好的理解该过程:假设攻击主机X(IP为1.2.3.4),所在网络有DNS服务器B,首先它向该DNS服务器请求解析一个域名Y,DNS返回域名Y的IP地址,同时携带一个ID号,假设为666;此时,攻击主机X再向DNS请求解析另外一个域名Z,DNS服务器没有该域名的IP,会向更高层的DNS服务器C请求解析,在DNS服务器C返回解析结果之前,攻击主机X伪造成DNS服务器C的IP,并将DNS报文头部中的ID置为666/667/668,同时将解析结果置为其自己的IP,并将解析结果发送给DNS服务器B;则DNS服务器B里会增加一个记录,域名Z与攻击主机X的IP对应的记录,在以后其它主机向DNS服务器B请求解析Z,就会重定向到攻击主机X
局限:攻击者不能替换缓存中已存在的记录(只能增加)、缓存刷新问题(有效期过了就得重新进行欺骗攻击)
防御:使用最新的DNS服务器软件、关闭DNS服务器的递归功能、限制动态更新、采用分层的DNS体系结构
4) 其它的欺骗攻击:Email欺骗、Web欺骗
6:拒绝服务攻击与防御
概念:利用网络安全防护措施不足导致用户不能或者不敢继续使用正常服务的攻击手段
分类:滥用合理的服务请求【针对目标主机,消耗目标主机资源】、制造高流量无用数据【针对网络,占用网络带宽】、利用传输协议缺陷【导致目标主机崩溃】、利用服务程序的漏洞【导致服务处理错误而拒绝服务】
典型技术:Ping of Death / 泪滴 / IP欺骗 / UDP洪水 / SYN洪水
分布式拒绝服务攻击——控制分布在网络各处的数百甚至数千傀儡主机【肉机】,发动它们同时攻击目标;工具有Trinoo/TFN/Stacheldrcht/Trinity
防御:优化网络和路由结构、保护主机系统安全、安装入侵检测系统、借助扫描工具
7:缓冲区溢出攻击与防御
概念:向固定长度的缓冲区中写入超出其预先分配长度的内容,造成缓冲区中数据的溢出,从而覆盖缓冲区相邻的内存空间
特点:隐蔽性【在被发现之前,程序员一般不会意识到自己的程序存在漏洞】【被植入的攻击代码一般很短,执行时间非常短,很难在执行过程中被发现】【漏洞存在于防火墙内部的主机上,攻击者可以在防火墙内部取得不被允许或者没有权限的控制权】【攻击具有随机性和不可预测性】
程序运行时系统开辟的内存:.text--.data--.bss--heap--stack--命令行参数及环境变量,从左到右为地地址到高地址,有几个需要注意的问题
1) 代码段(.text),存放程序的机器码以及只读数据,一般标记为只读,对该区的读写会导致段错误
2) 数据段(.data/.bss),存放已初始化的数据段以及未初始化的数据段,编译时分配
3) 堆(heap),位于BSS内存段的上边,用于存储程序运行时分配的变量
4) 栈(stack),用于存储函数调用时的临时信息的结构
5) 堆和栈的区别,分配和管理方式不同【堆由程序员控制,栈由编译器自动管理】、产生碎片不同【堆会造成大量的碎片,效率低】、生长方向不同【堆从低地址往高地址生长,栈由高地址往低地址生长】
6) 函数调用时,计算机的一系列操作:首先将指令寄存器EIP入栈,作为程序的返回地址(RET);然后将基址寄存器EBP入栈,指向当前函数栈的底部;再把当前的栈指针ESP复制到EBP,作为新的基地址;最后为本地变量的动态存储分配留出空间,并把ESP减去适当的值
缓冲区溢出的类型
1) 栈溢出,根据上面函数调用时的操作,当给本地变量赋予的值超过其存储空间,将覆盖邻近区域的内存,导致栈溢出
2) 堆溢出,动态分配的内存,在赋值时超过其分配的长度,会覆盖相邻位置的内存
3) BSS溢出,全局或静态的未初始化变量,同样的往变量写入超过其长度的数据,会覆盖相邻位置的内存
缓冲区溢出攻击的过程:在程序的地址空间里安排适当的代码——将控制流程转移到攻击代码【函数指针、激活记录(覆盖RET)、长跳转缓冲区】
植入代码的构造类型:NSR型(适合于缓冲区大的情况,往前跳转到shellcode),RNS型(适合于缓冲区小的情况,往后跳转到shellcode),AR型(必须事先将shellcode放置在环境变量中,应用受到限制)
防御:源码级保护方法(程序员自身、代码审计工具)、运行期保护方法、阻止攻击代码执行(设置数据段地址空间的属性为不可执行【非执行的缓冲区技术】)
8:Web攻击与防御技术
主要的四种动态网页技术及时及其安全问题
1) CGI(通用网关接口):未验证用户输入参数、使用路径信息填充PATH_INFO或其它环境变量
2) ASP(Active Service Pages)——允许脚本语言与HTML一起编写程序;主要工作环境是微软的IIS应用程序结构,跨平台性差
3) JSP(JavaServer Pages)——用Java语言作为脚本语言;能运行在任何安装了JVM的环境中,跨平台性好
上面两个安全问题主要是源代码泄露,以下操作都会导致该问题:在程序后面添加特殊符号、通过.bak文件扩展名获得ASP文件源代码、code.asp(用于查看其它.asp文件的源代码)
4) PHP(Hypertext Preprocessor)——支持几乎所有流行的数据库和操作系统,兼容性强,扩展性强
主要漏洞:全局变量未初始化漏洞(用户可以通过给服务器传参来跳过验证机制)、文件上传功能(PHP自动支持文件上载,在解析之前已经将文件临时存储在服务器上,且使用四个全局变量来描述该文件,若用户通过传参的方式来给这四个全局变量赋值,则可能使服务器处理其他文件【如passwd敏感文件】而不是这个上载的文件)
PHP应合理配置:禁止为用户输入创建全局变量、设置安全模式、禁止显示错误信息
5)IIS服务器的安全问题:.ida和idq漏洞(暴露文件在web服务器上的物理路径)、Unicode目录遍历漏洞(用户通过构造适当的Unicode字符"\"和"/"等,可以遍历磁盘上的目录)、缓冲区溢出漏洞
Web页面盗窃以及防御
主要手段:逐页手动扫描、自动扫描
防御:提高web页面代码质量、监视访问日志中快速增长的GET请求(自动扫描)、在Web站点上设置garbage.cgi(自动扫描)、及时修补安全漏洞
跨站脚本攻击(XSS)以及防御
主要攻击对象:登陆网站的用户,而不是Web服务器本身
两个条件:一个存在XSS漏洞的Web应用程序(没有对用户的输入进行有效验证,而又轻易地将它们返回给客户端)、用户点击链接或者访问某一页面
SQL注入以及防御
概念——通过提交精心设计的数据库查询代码,根据网页的返回结果来获知网站的敏感信息
防御:对用户提交的数据和输入参数进行严格的过滤、为Web程序建立受限的连接,只能访问特定的数据库、摒弃动态SQL语句(从根本上阻断SQL注入)
网页验证码技术
防止用户使用程序自动进行提交注入,防止暴力破解、恶意灌水等
基于两个假设:用户可以收到并了解验证码、攻击者的自动程序无法了解验证码
常见的几种验证码:文本验证码(安全性差)、手机验证码(用户可能无法收到短信)、邮件验证码(邮件可能被淹没或过滤)、图片验证码(目前也受到极大威胁)
9:木马攻击与防御技术
概念——一段能实现有用的或必须的功能的程序,但是同时还完成一些不为人知的功能(木马与病毒最根本的区别就是病毒有很强的传染性而木马没有)
分类:破坏型、密码发送型、远程访问型、键盘记录木马、DoS攻击木马、代理木马、FTP木马、程序杀手木马(针对监控软件)、反弹端口木马
特点:有效性(能与控制端建立某种有效联系)、隐蔽性(木马的生命)、顽固性(有效清除木马的难易程度)、易植入性、自动运行、自动恢复(多个备份,相互恢复)
攻击步骤:植入木马——木马自动加载运行并很好隐藏自己——实现一些攻击者感兴趣的功能
1) 植入技术:主动植入(本地植入【网吧等环境】,远程植入【利用系统漏洞或第三方软件漏洞】)、被动植入(利用Email附件,网页浏览,移动存储设备,其它可执行程序)
2) 自动加载技术:修改系统启动时运行的批处理文件、修改系统文件、修改系统注册表、添加系统服务、修改文件关联属性、利用系统自动运行的程序
3) 隐藏技术:伪隐藏(使用与windows系统进程或其它正在运行的进程非常相似的进程名、伪造进程列表);真隐藏(替换Windows系统中的DLL文件、将木马程序嵌入到正在运行的进程中)
4) 监控技术:客户端/服务器端模式建立与攻击者之间的联系——获取目标机器信息、记录用户事件、远程操作
流行的木马:Back Orifice / SubSeven / 冰河木马
防御:
1) 木马的检测:端口扫描和连接检查、检查系统进程、检查.ini文件/注册表/服务、监视网络通信
2) 木马的清除和善后:先关闭木马进程再删除注册表项(防止木马的自动恢复)【不同的木马有不同的清除方法】、处理遗留问题(说得好泛)
10:计算机病毒
网络蠕虫——可以通过网络进行自我复制的恶意程序
逻辑炸弹——嵌在合法程序中的、只有当特定的事件出现或在某个特殊的逻辑条件下才会进行破坏行为的一组程序代码
陷门——一个程序模块中未被登记的秘密入口
典型的计算机病毒:
DoS病毒:引导型病毒,文件型病毒的传染机制——可执行文件的加载过程,通过中断首先将可执行程序加载到内存中,然后从第一条指令处开始执行,病毒通常会修改可执行文件头的参数,使其先执行病毒代码,再转去执行真正的代码,这洋就完成了传染的工作
Win32 PE病毒:重定位(病毒无法知道自己会感染host程序的什么地方,从而变量/常量的地址也无法知道,菏泽就需要进行重定位);获取API函数地址(Win32 PE依赖于Windows API);文件搜索(利用Windows API提供的接口);感染文件(添加新节、附加在最后一个节上、分散插入到PE文件空隙中、覆盖某些非常用数据、压缩某些数据或代码以腾出空间)
宏病毒:利用宏语言的功能将自己复制并且繁殖到其它数据文档里;特性(与平台无关,可以正确打开和理解word文件的平台都可能感染、采用高级程序语言编写,不需了解太多底层机制和硬件原理、依赖应用程序解释,获得宏病毒的同时也就获得病毒的源程序【与传统病毒以二进制形式存在不同】)
脚本病毒:编写简单、破坏力大、感染力强,病毒变种多、病毒生产机容易实现(可以按照用户的要求进行配置,以生成特定病毒的“机器”)
HTML病毒:在HTML文件中用于非法修改或破坏用户计算机配置的HTML代码,通过ActiveX控件调用系统函数如RegWrite()修改用户计算机的注册表等
蠕虫:与计算机病毒的区别(蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的机器上;计算机病毒是一段代码,能把自身加到其它程序包括操作系统上,但不能独立运行,需要宿主程序运行来激活它);最大的区别在于主动性和独立性(计算机病毒的传染是被动的,需要借助用户的行为,而蠕虫主要利用计算机系统的漏洞进行传播,搜索到网络中存在可利用漏洞的计算机后就主动进行攻击,传播过程不需要人为干预);传播过程——扫描(探测漏洞)、攻击(建立传输通道)、复制
常用防病毒软件:Symantec Norton AntiVirus、卡巴斯基反病毒软件、瑞星杀毒软件、金山毒霸、江民、McAfee VirusScan、F-Secure AntiVirus、BitDefender
11:典型防御技术
密码学技术——通信双方按约定的法则进行信息特殊变换的一种重要保密手段
1) 对称密码(通信双方使用同一个密钥对消息进行加解密)DES/IDEA、
2) 非对称密码(将传统密码的密钥分为加密密钥和解密密钥)Diffie-Hellman/RSA/ElGamal/椭圆曲线密码体制
3) 单向哈希函数(单向函数是一种易于正向计算,但很难反向计算的函数;哈希函数把一个值x映射到另外一个值y,y属于一个有固定数量值(少于x集合)的集合
身份认证——验证一个主体身份的真实性或证实某事是否属实的过程
1) 基于口令的认证(口令在网络上传输,可能被窃听,且可能受到重放攻击)
2) 基于地址的认证(一个主机存储着可以访问本机的其他主机的账号信息,只要确认了对方的主机地址,就可以利用本地的信息进行用户认证,而不需要将口令在网上传输【问题:攻击者掌握了其中一台主机,且这台主机被其他主机信任,则其他主机也就相当于被攻破了)
3) 基于生理特征的认证(指纹识别、视网膜识别、发音识别等技术,一个重要衡量标志是识别率)
4) Kerberos认证(基于可信赖第三方的认证协议【认证服务器、票据授予服务器】,用户只需输入一次身份认证信息,就可以凭借此验证获得的票据访问多个服务)
5) 公钥基础设施PKI(两个用户进行通信,发送方从证书库中获得接收方的公钥,利用该公钥对信息进行加密,发送出去,只有拥有相应的私有密钥的用户才能对该消息进行解密)
防火墙——位于两个(或多个)网络间实施网间访问控制的一组组件的集合,内部和外部网络之间的所有网络数据流必须经过防火墙,只有符合安全策略的数据流才能通过防火墙,防火墙自身对渗透免疫
1) 包过滤防火墙:静态包过滤(事先定义好过滤规则,对每一个数据包都进行信息提取和过滤匹配,过滤负载较重,容易造成网络访问的瓶颈);动态包过滤(动态设置包过滤规则)
2) 代理服务器型防火墙:在主机上运行代理的服务程序,直接对特定的应用层进行服务
3) 电路级网关
4) 混合型防火墙
防火墙产品:Checkpoint FireWall-1、东软NetEye、天融信网络卫士、NetScreen
入侵检测系统——能及时检测出恶意入侵的系统,是一种主动防御技术(基于主机的入侵检测系统、基于网络的入侵检测系统)
主要产品:Snort、ISS RealSecure、Watcher
虚拟专用网技术——利用接入服务器、路由器及VPN专用设备、采用隧道技术以及加密、身份认证等方法,在公用的广域网上构建专用网络的技术
日志和审计——在文件系统的i基础上,加入文件系统更改的记录
主要审计工具:Swatch/PslogList