第五章 网络攻防技术
信息收集的必要性和内容:
- 必要性
- 攻防对抗(博弈)中:对敌方信息的掌握是关键
- 内容
- 在入侵一个目标系统之前,了解:管理上的安全缺陷和漏洞、网络协议安全缺陷与漏洞、系统安全缺陷与漏洞
- 在入侵实施过程中,掌握:目标网络的内部拓扑结构、目标系统与外部网络的连接方式与链路路径、防火墙的端口过滤与访问控制配置、使用的身份认证与访问控制机制
网络信息收集技术:
- 网络踩点
- 网络扫描
- 网络查点
①网络踩点:
-
网络踩点:了解攻击目标的隐私信息、网络环境和信息安全状况。根据踩点结果,攻击者寻找出攻击目标可能存在的薄弱环节
-
常见手段:Google Hacking、WhoIs服务、DNS查询
-
Google Hacking
-
通过网络搜索引擎查找特定安全漏洞或私密信息的方法
-
常用搜索引擎:www.ZoomEye.org、www.google.com、www.altavista.com、www.dogpile.com
-
Google Hacking客户端软件:Athena、Wikto、SiteDigger
-
搜索关键字实例:
- filetype:xls 身份证号 银行账号 site:edu.cn
- site:www.freebuf.com intitle:远程代码执行漏洞
-
防范措施:
- 将你不希望被别人搜索到的敏感信息从论坛、微博、微信等公共媒体上删除干净
- 发现非预期泄露的敏感信息后,应采取行动进行清除
- 发布信息时,尽量不要出现真实个人信息
- 作为网络管理员,不要轻易在讨论组或技术论坛上发布求助技术帖,因为那样往往会将单位内部网络拓扑结构或路由器配置信息泄露给他人
- 关注中国国家漏洞库CNNVD等安全漏洞信息库发布的技术信息,及时更新软件或操作系统补丁
-
-
WhoIs服务
-
通过查询在互联网的公共数据库中的DNS和IP查询目标DNS注册信息、网络位置和真实地理位置信息
-
包括:
- DNS注册信息WhoIs查询 --> 查询特定域名的3R详细注册信息
- IP WhoIs查询 --> 查询特定IP地址的详细注册信息
-
DNS WhoIs查询
- 查询结果示例:
- 查询一般思路:
-
IP Whois查询
- 查询过程示例:
-
防范措施:
- 及时更新管理性事务 联系人的信息
- 尝试是哟个虚构的人命来作为管理性事务联系人
- 使用域名注册商提供的私密注册服务
-
-
DNS查询如何造成信息泄露风险
- 本来,为了实现DNS数据库容易备份,辅助DNS服务器使用来自主服务器的数据刷新自己的ZONE数据库,且DNS区域传送一般仅限于辅助DNS服务器才能向主服务器发起请求。
- 现在,许多DNS数据库被错误设置为“只要有人发起请求,就向对方提供一个区域数据库的拷贝”
-
防止DNS查询造成信息泄露解决方案
- 对外的DNS服务器配置为禁止DNS区域传送、且服务器不能包含内部网络相关主机的敏感信息
②网络扫描:
- 网络扫描:攻击者通过扫描技术确定目标的操作系统、开放的网络应用服务类型及版本信息,进而找到可能存在的入侵漏洞
- 常见的网络扫描技术:主机扫描、端口扫描、操作系统/网络服务辨识、漏洞扫描
-
主机扫描
-
原理:向目标系统发出特定的数据包,并分析目标系统返回的相应结果(或没有任何行为)的行为
-
常用于主机查询的ICMP报文:
-
如何防范主机扫描:
- 使用诸如Snort入侵检测系统,或者McAfee桌面防火墙工具,来监测主机扫描
- 根据业务需求,仔细考虑允许哪些类型的CMP通信进入网络:
- 利用访问控制列表ACL
- 只允许访问的特定数据包到达指定主机
-
-
端口扫描
-
定义:攻击者通过连接到目标系统的TCP/UDP端口,以确定有哪些服务正处于监听状态
-
常见的端口扫描技术:TCP连接扫描、TCP SYN扫描、TCP FIN扫描、TCP圣诞树扫描、UDP扫描
-
以TCP SYN扫描为例:
-
防范措施:
- 使用类似Snort的网络入侵检测系统对端口扫描进行监测
- 开启防火墙、禁用掉所有不必要的服务(在类UNIX环境下:注释掉/etc/inetd.conf文件里的不必要服务;Windows可以在控制面板里面关闭所有服务)来预防端口扫描
-
-
操作系统/网络服务辨识:利用不同厂家在编写操作系统时的差异以及不同的网络服务在实现应用测协议时的差异
-
示例1:操作系统类型探测——TCP/IP协议栈指纹分析
-
示例2:使用Nmap网络扫描工具
-
防范措施:
- 使用端口扫描监测工具,发现对操作系统的探查活动
- 部署安全的防火墙以保护目标主机
-
-
漏洞扫描
- 何谓安全漏洞:硬件、软件或策略上存在的安全缺陷,利用这些安全缺陷,攻击者能在未授权的情况下访问、控制、甚至破坏目标系统
- 漏洞扫描目的:探测目标网络的特定操作系统、网络服务、应用程序中是否存在已公布安全漏洞
- 针对“漏洞发现”的赏金计划:例如Pwn20wn大赛、黑色产业提供的奖金
- 防范措施:
- 在黑客之前扫描漏洞
- 补丁自动更新和分发:修补漏洞
- 保证所安装软件的来源安全性
- 开启操作系统和应用软件的自动更新机制
- 仔细审查防火墙配置规则
- 开启诸如Snort的网络入侵检测系统
③ 网络查点:
-
查点:对已选择好的攻击目标,发起主动连接和查询,针对性的收集发起实际攻击所需的具体信息内容。例如:目标系统上合法用户账户、错误配置的共享资源、网络服务版本号
-
网络服务旗标抓取:利用客户端工具连接至远程网路服务并观察输入以收集关键信息的技术手段
-
例如:使用telnet查点目标主机的web服务
-
-
通用网络服务查点
-
Windows平台特有网络服务查点
- NETBIOS名字服务查点
- SMB会话查点
- 目录查点
- MSRPC查点
-
针对Windows系统网络查点的防范措施:
- 关闭不必要的服务及端口
- 关闭打印与共享服务
- 不要让主机名暴露用户的身份
- 关闭不必要共享,特别是可写共享
- 关闭默认共享(根盘符$,Asmins1$)
- 限制IPC$默认共享的匿名空连接
Windows系统渗透基础:
①控制注入攻击
- 原理:现代计算机系统遵循冯诺依曼体系结构:没有在内存中严格区分计算机程序的数据和指令
- 攻击者的目标:劫持应用程序控制流来执行目标系统上的任意代码,最终达到远程控制目标的目的 --> 典型的劫持攻击技术:缓冲区溢出、格式化字符串漏洞、整数溢出、指针释放后再次被使用
- 缓冲区溢出攻击:
- 何为缓冲区溢出? 缓冲区溢出是指计算机程序向特定缓冲区填充数据时,缺乏严格的边界检查,导致数据外溢,覆盖了相邻内存空间的合法数据,进而改变了程序的合法执行流程
- 分类(根据缓冲区溢出的内存位置不同):栈溢出、堆溢出
- 举例介绍(栈溢出)
- 定义:栈上的缓冲区变量缺乏安全边界保护所遭受的溢出攻击
- 最常见的栈溢出利用方法:覆盖函数返回地址
- 为什么能被攻击? 在执行函数调用前,程序将返回的下一条指令地址,与函数局部变量、函数调用等将同时保存在栈中
- 如何攻击? 攻击者针对函数返回地址在栈中的存储位置,进行缓冲区溢出,从而改写函数返回地址,当函数调用返回时,程序将跳转到攻击者指定地址,执行恶意指令
②Windows系统渗透攻击
-
Windows系统主要的网络服务程序:NetBIOS网络服务、SMB网络服务、MSRPC网络服务
-
举例介绍(基于Metasploit渗透框架的MS-08067漏洞利用)
-
原理解析:
- 攻击者利用windows操作系统默认开放的SMB服务445端口
- 发送恶意代码到目标主机
- 通过MSRPC接口调用Server服务的一个函数,溢出栈缓冲区,获得远程代码执行权限
- 从而完全控制主机Windows系统主要的网络服务程序
-
Metasploit渗透框架
-
基于Metasploit渗透框架的MS-08067漏洞利用:
-
首先,启动Metasploit控制终端,使用search命令搜索MS-08067漏洞对应的渗透攻击模块
-
其次,使用use命令选择合适的渗透攻击模块
-
接着,使用set payload命令选择适用的攻击负载模块
-
然后,配置攻击模块和攻击负载模块所必需的参数
-
最后,实施渗透攻击过程,成功破解目标系统
-
-
-
远程渗透Windows系统的途径还有:
- 认证欺骗
- 客户端软件漏洞利用
- 设备驱动漏洞利用
-
防范措施:
- 及时更新应用软件、操作系统、硬件设备驱动程序的安全补丁
- 禁用不必要的网络服务
- 使用防火墙来限制对可能存在漏洞的服务的访问
- 强制用户使用强口令并定期更换口令
- 审计与日志
- 使用扫描软件主动发现系统是否存在已知安全漏洞,安装入侵检测/防御系统
- 客户端应用程序尽量使用受限权限,而非管理员或同等级权限的用户登陆因特网
- 运行并及时更新防病毒软件
- 禁用易受攻击的硬件设备
Internet协议安全问题:
- 因特网基本结构
-
网络安全五大属性
- 网络安全CIA属性:机密性、完整性、可用性
- 其他两个补充属性:真实性、不可抵赖性
-
网络攻击的基本模式
-
截获(窃听)
- 嗅探
- 监听
-
篡改
- 数据包篡改
-
中断
- 拒绝服务
-
伪造
- 欺骗
-
-
因特网协议栈层次结构
-
应用层:支持网络应用FTP,SMTP,HTTP等
-
传输层:主机到主机数据传输TCP,UDP
-
网络层:从源到目的地数据报的选路IP,ICMP,BGP等
-
网络接口层:在邻近网络设备之间传输设备PPP,以太网
-
-
协议安全分析
-
网络层协议安全分析——IP源地址欺骗
- 路由器只根据目标IP地址进行路由转发,不对源IP地址做验证
- 任何人都可以使用原始套接字构造任易源IP地址的数据报
- 相应数据报也将被发回伪造的源IP地址
- 通常用于发起匿名Dos攻击
-
传输层协议安全分析(下面分析基于TCP协议安全缺陷引发的TCP RST攻击和TCP会话劫持攻击)
-
创建TCP协议的过程:TCP三次握手
-
TCP报文首部格式
-
- TCP协议安全分析——TCP RST攻击
-
- TCP协议安全分析——会话劫持攻击
-
-
应用层协议安全分析
-
DNS欺诈
-
DoS攻击
-
- DoS攻击分类:
- a. 弱点攻击:攻击者向目标主机上运行的存在安全漏洞的应用程序或者操作系统,发送精心设计的报文,最终使得服务器停止运行,甚至系统崩溃。
- b. 洪泛攻击:攻击者利用僵尸网络,向目标系统生成大量的洪泛分组,导致目标主机的接入链路发生拥塞,使得合法的分组无法到达服务器,或者使得目标主机资源耗尽,停止接受合法用户的连接请求。
-
- 典型拒绝服务攻击技术:
- Ping of Death
- 泪滴(Teardrop)
- IP欺骗Dos攻击
- UDP洪泛
- TCPSYN洪泛:一种基于流量的拒绝式服务攻击
- Land攻击
- ICMP Smurf攻击:使被害主机资源耗尽、崩溃
- Fraggle攻击
- 电子邮件炸弹
- 畸形消息攻击
- Slashdot effect
- WinNuke攻击
-
-
-
TCP/IP网络协议栈攻击防范措施:
- 网络接口层,监测和防御网络威胁,对网关路由器等关键网络节点设备进行安全防护,优化网络设计,增强链路层加密强度。
- 在网络层,采用多种检测和过滤技术来发现和阻断网络中欺骗攻击, 增强防火墙、路由器和网关设备的安全策略,关键服务器使用静态绑定IP-MAC映射表、使用IPsec协议加密通讯等预防机制。
- 传输层加密传输和安全控制机制,包括身份认证和访问。
- 应用层加密,用户级身份认证, 数字签名技术,授权和访问控制技术以及审计、入倾检测。
基本的web安全:
-
web安全攻击分类:
- 跨站脚本攻击(Cross-SiteScripting , XSS)
- SQL注入
- 跨站请求伪造(Cross-SiteRequest Forgey, CSRF)
-
跨站脚本攻击(Cross-SiteScripting , XSS):也称为XSS,指利用网站漏洞从用户那里恶意盗取信息
-
脚本:JavaScript、 VBScript、Activex、Flash、HTML
-
攻击过程:攻击者得到敏感信息→获取更高用户权限→以被攻击者身份执行操作
-
跨站脚本XSS三种类型:
- 反射型XSS攻击原理
- 存储型XSS攻击原理
- DOM-XSS攻击原理
-
防范措施:
- 网站开发者:应用安全国际组织OWASP给网站的建议:对所有来自外部的用户输入进行完备检查;对所有输出到响应页面的数据进行适当的编码,以防止任何已成功注入的脚本在客户浏览器端运行
- 普通用户:在浏览器设置中关闭JavaScript,关闭cookie或设置cookie为只读,提高浏览器的安全等级设置,尽量使用非IE的安浏览器来降低风险
- 个人用户需要增强安全意识,只信任值得信任的站点或内容,不要轻易点击不明链接
-
-
SQL注入:SQL注入是指利用Web应用程序输入验证不完善的漏洞,将一段精心构造的SQL命令注入到后台数据库引擎执行
-
SQL注入危害(包括但不局限于):
- 数据库中存放的用户隐私信息被泄露
- 网页篡改,即通过操作数据库对特定网页进行篡改
- 通过修改数据库一些字段的值,嵌入网马链接,进行挂马攻击
- 数据库的系统管理员帐户被纂
- 服务器被黑客安装后门进行远程控制
- 破坏硬盘数据,瘫痪全系统
-
SQL注入漏洞形成(基本场景)
-
SQL注入主要原因:Web应用程序没有对用户输入进行严格的转义字符过虑和类型检查
-
防范措施:
- 使用类型安全的参数编码机制
- 对来自程序外部的用户输入,必须进行完备检查
- 将动态SQL语句替换为存储过程,预编译SQL或ADO命令对象
- 加强SQL数据库服务器的配置与连接,以最小权限配置原则配置Web应用程序连接数据库 的操作权限,避免将缴感数据明文存放于数据库中
-
-
跨站请求伪造CSRF(Cross-site request forgery)
-
跨站脚本攻击原理:利用web用户身份验证的漏洞——基于Cookies的身份验证只能保证请求发自用户的浏览器,却不 能保证诸求是用户自愿发出的
-
先介绍Cookie:
-
利用cookie发起CSRF的过程:
-
从哪几方面对CSRF攻击进行防御:服务端、客户端、设备端
-
如何防止CSRF攻击:
- 养成良好的上网习惯,能够帮助用户减少CSRF攻击的危害
- 不要轻易点击网络论坛、聊天室、即时通讯工具或电子邮件中出现的链接或图片
- 及时退出已登录账户
- 为计算机系统安装安全防护软件,及时更新特征库和软件升级
- 使用浏览器插件扩展防护
-
社会学攻击(诈骗三十六计):
- 定义:
- 利用人的好奇心、轻信、疏忽、警惕性不高,使用诸如假冒、欺诈、引诱等多种手段,来操纵器执行预期的动作或泄露机密信息的一门艺术与学问
- 攻击目标:
- 首要目的:获得金钱收益
- 次要目的:竞争优势和打击报复
- 攻击形式:信息收集、心理诱导、身份伪造、施加影响
- 信息收集
- 希望获得的信息
- 可能直接导致攻击对象的财产或身份被盗
- 能利用这些信息获取目标组织的薄弱环节
- 向攻击目标发动更有针对性的攻击
- 传统信息收集方法
- 社交网络:
- 因为web搜索引擎是因特网上信息收集的利器,所以社交网络是社会工程学攻击者最喜欢的渠道
- 社交网络是世界上最大的人类信息识别数据库:黑客可通过微博或微信朋友圈等收集某个特定对象的个人信息;黑客可通过分析收集的个人信息及社交媒体上的更新状态获得为私密的信息
- 社交网络:
- 非传统信息收集方法
- 接近目标公司的离职员工或新员工 --> 途径:寒暄套磁、窃听电话、克隆身份卡
- 垃圾搜集:丢弃在垃圾桶里的文件、登机牌、账单等均可能收集到个人敏感信息
- 电话询问 --> 对象:前台、秘书、服务生、客服人员
- 电话公司、房地产公司、银行、医疗服务机构等常常将用户个人信息的非法贩卖
- 希望获得的信息
- 心理诱导:通过涉及一些表时上很呰通且无关的对话,精巧地提取出有价值的信息
- 社会工程学攻击者最常用的诱导技巧:
- 表现自信、控制谈话的主动权、不给对方太多思考的机会
- 抛出诱饵,以寻求更大回报
- 表达出共同兴趣、阿谀奉承,以迎合目标的自我感受
- 社会工程学攻击者最常用的诱导技巧:
- 身份伪造
- 伪装成熟人:获得信任→点击包含恶意软件的链接或附件 --> 骗取金钱
- 伪装成社交网络上的好友
- 冒充某公司内部员工(如网络管理员、网络承包商、软件供应商)
- 施加影响
- 人类常见的心理弱点:
- 从众心理:社会工程学攻击者,利用从众心理,通过提供数据证明数量众多的其他人,已经采取相同动作,进而激励目标执行攻击者预期的行为
- 营造饥饿感及权威的结合利用:①饥饿感经常被应用于在迫使目标受害者决策时营造一种紧迫感,使得受害者没有太多的时间思考决策的合理性与否;②人们总是更愿意相信权威人士的指导和建议
- 利用人类的报答意识:利用人类“投我以木瓜,报之以琼琚”的下意识回报 --> 预先给予小恩小惠 --> 达到让受害者回应相同甚至更高价值的信息或金钱
- 网络钓鱼攻击(社会工程学犯罪常见手段):
- 伪装成可信服务提供者 --> 如:学校、银行、政府机关、医院
- 用急切或命令的口吻要求用户立刻完成指定任务
- 人类常见的心理弱点:
- 防范措施:
- 了解和熟悉社会工程学诈骗
- 对自己的基础信息保持足够的警惕
- 永远不要通过不安全的方式(电话、网上或者闲聊)透露个人、家庭、公司一些看似无关紧要的信息
- 如果涉及到敏感信息,请务必核实对方的身份
- 使用防火墙来保护个人电脑,及时更新杀毒软件,同时提高垃圾邮件过滤器的门槛