什么是社会工程学攻击
利用任性弱点(本能反应、贪婪、易于信任等)进行欺骗获取利益的攻击方法
社会工程学的危险
永远有效的攻击方法
人是最不可控的因素
人性的弱点(Robert B Cialdini)
信任权威
忍心共同爱好
获取好处后报答
期望守信
期望社会认可
短期资源的渴望
......
中奖通知
欠费电话
催叫房租
......
直接用于攻击
正面攻击(直接索取)
建立信任
利用同情、内疚和胁迫
......
简介用于攻击
口令破解中的社会工程学利用
网络攻击中的社会工程学利用
注:讲师可以根据自己的经验替换后门课件中的三个案例,只要能说清楚社会工程学攻击即可
凯文-米特尼克
世界著名黑客(世界第一黑客)
1995年16岁时被捕入狱,2000年保释
记者采访:你最擅长的技术是什么
回答:社会工程学,技术会过时的,只有社会工程学永远不会
凯文米特尼克所著《欺骗的艺术》
载入吉尼斯世界纪录大全
《欺骗的艺术》中的经典案例
操盘手讲每天交 攻击者看到后, 伪装成电汇室人
易密码写在纸片 → 伪装成银行职员 → 员,询问麦克.汉
上,贴在电脑屏 (国际部麦克.汉 森,获取装好信
幕旁 森),要求转账 息
↓
完成诈骗过程 ← 重新要求转账
安全意识培训
知道什么是社会工程学攻击
社会工程学攻击利用什么
建立相应的安全响应应对措施
构建完善的技术防御体系
有效的安全管理体系和操作流程
注意保护个人隐私
保护生日、年龄、email邮箱地址、手机号码、家庭电脑号码等信息
欺骗攻击(Spoofing)是指通过伪造源于可信任地址的数据包以使一台机器认证另一台技术的复杂技术
IP欺骗(IP Spoofing)
ARP欺骗(ARP Spoofing)
DNS欺骗(DNS Spoofing)
......
电子欺骗是一类攻击方式统称!
原理
两台主机之前通过认证产生信任关系后,在链接过程中就不会要求严格的认证
IP欺骗是一系列步骤构成的攻击
确认攻击目标 → 使要冒充主机 → 猜正确的序数
无法响应追
↓
进行会话 ← 冒充受信主机
严格设置路由策略:拒绝来自网上,并声明源于本地地址的包
使用最新的系统和软件,避免会话序号被猜出
使用抗IP欺骗功能的产品
严密监视网络,对攻击进行报警
ARP协议(地址解析协议)
ARP用于将IP地址解析MAC地址的协议
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>cd/
C:\>arp -a
接口: 192.168.1.104 --- 0xc
Internet 地址 物理地址 类型
192.168.1.1 f0-eb-d0-22-46-b4 动态
192.168.1.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态
接口: 192.168.23.1 --- 0x12
Internet 地址 物理地址 类型
192.168.23.254 00-50-56-ff-e0-32 动态
192.168.23.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态
接口: 192.168.33.1 --- 0x13
Internet 地址 物理地址 类型
192.168.33.254 00-50-56-fc-9b-35 动态
192.168.33.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
224.0.0.252 01-00-5e-00-00-fc 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态
ARP协议实现特点
ARP协议特点:无状态,无需请求可以应答
ARP实现:ARP缓存
C:\>arp -s
显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
-a 通过询问当前协议数据,显示当前 ARP 项。
如果指定 inet_addr,则只显示指定计算机
的 IP 地址和物理地址。如果不止一个网络
接口使用 ARP,则显示每个 ARP 表的项。
-g 与 -a 相同。
-v 在详细模式下显示当前 ARP 项。所有无效项
和环回接口上的项都将显示。
inet_addr 指定 Internet 地址。
-N if_addr 显示 if_addr 指定的网络接口的 ARP 项。
-d 删除 inet_addr 指定的主机。inet_addr 可
以是通配符 *,以删除所有主机。
-s 添加主机并且将 Internet 地址 inet_addr
与物理地址 eth_addr 相关联。物理地址是用
连字符分隔的 6 个十六进制字节。该项是永久的。
eth_addr 指定物理地址。
if_addr 如果存在,此项指定地址转换表应修改的接口
的 Internet 地址。如果不存在,则使用第一
个适用的接口。
示例:
> arp -s 157.55.85.212 00-aa-00-62-c6-09.... 添加静态项。
> arp -a .... 显示 ARP 表。
使用静态APR缓存
使用三层交换设备
IP与MAC地址绑定
ARP防御工具
ip欺骗:最难和最关键的是猜目标的序号规则
arp欺骗:ip-mac:中间人攻击:CAIN,WINCAP,LIBNET
导致目标主机无法访问网络
最有效的防御方法:使用静态的ARP缓存表,ip+mac:静态绑定
DNS(域名解析协议)
用于将域名解析成IP地址
www.cisphome.cn? www.cisphome.cn?
客户机 ─────────→ DNS服务器 ─────────→ 其他DNS
←───────── ←─────────
1.1.1.1 1.1.1.1
我不知道,我问问其他DNS服务器
收到我会缓存
www.cisphome.cn?
客户机 ─────────→ DNS服务器 我的缓冲中有记录,我告诉你!
←─────────
1.1.1.1
┌───┐ ┌───┐
│Qid=22│ │Qid=22│
└───┘ └───┘
↓ ↓
www.cisphome.cn? www.cisphome.cn?
客户机 ─────────→ DNS服务器 ─────────→ 其他DNS
←───────── ←─────────
2.2.2.2 1.1.1.1
我不知道,我问问其他DNS服务器
收到我会缓存
www.cisphome.cn?
客户机 ─────────→ DNS服务器 我的缓冲中有记录,我告诉你!
←─────────
2.2.2.2
DNS服务器
使用新版本的DNS软件
安全设置对抗DNS欺骗
关闭DNS服务递归功能
限制域名服务器作出响应的地址
限制域名服务器作出响应的递归请求地址
限制发出请求的地址
应用服务器
用户自主标识
DNS欺骗
域名--ip;
dns劫持:www.baidu.com--www.sina.com
银行的钓鱼
DNS中毒:wwwyoutube.com --不存在的ip
什么是拒绝服务
拒绝服务式攻击(Denial of Service),顾名思义就是被攻击的系统无法正常进行服务的攻击方式。
拒绝服务攻击方式
利用系统、协议或服务的漏洞
利用TCP协议实现缺陷
利用操作系统或应用软件的漏洞
目标系统服务资源能力
利用大量数据挤占网络宽带
利用大量请求消耗系统性能
混合型
SYN Flood
UDP Flood
Teardrop
Ping of death
Smurf
Land
...
拒绝服务式一类攻击方式的统称!
理解SYN Flood需要的基础知识:建立TCP链接的三次握手过程
│ SYN(ISN) │
│━━━━━━━━━━→│
│ ACK(ISN+1) │
│←━━━━━━━━━━│
│ SYN(ISN) │
│━━━━━━━━━━→│
│ ACK(ISN+1) │
客户┈┈┈│┈┈┈┈┈┈┈┈┈┈┈│┈┈┈服务器
│ │
│ │
│ │
│ │
原理
伪造虚假地址连接请求,消耗主机连接数
(syn) Hello ,I'm 2.2.2.2
1.1.1.1 ────────────────→ ?
(syn+ack) I'm ready I' m waiting......
┌─────────────
2.2.2.2 ←──┘
(syn) Hello ,I'm 2.2.2.2 I' m waiting......
1.1.1.1 ────────────────→ ? I' m waiting......
(syn) Hello ,I'm 2.2.2.2 I' m waiting......
1.1.1.1 ────────────────→ I' m waiting......
原理
利用UDP协议实现简单、高效,形成流量冲击
实现方式
大量UDP小包冲击应用服务器(DNS、Radius认证等)
利用系统服务形成流量(Echo chargen)
利用正常UDP服务发送大流量形成网络拥塞
原理
构造错误的分片信息,系统重组分片数据时,内存计算错误,导致协议崩溃
C:\cd ddos20
C:\ddos20>xdox www.gooann.com 80
X-DOS v1.0 - command line d.o.s tool
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
Scanning www.gooann.com 80 ...
Remote host: www.gooan.com (223.7.8.143)
Local address: 10.168.1.1
DOS mode: SYN FLOOD
Port count: 1
Thread count: 10
............................................................................................
...
管理防御
业务连续性极好(组织共同承担,应对DoS攻击)
协调机制(运营商、公安部门、专家团队)
技术防御
安全设备(防火墙、抗DoS设备)
增强网络宽带
自身强壮性(风险评估、补丁、安全加固、资源控制)
监测防御
应急响应(建构监测体系)
堆栈概念
一段连续分配的内存空间
堆栈特点
后进先出
堆栈生长方向与内存地址方向相反
指针
指针是指向内存单元的地址
寄存器
暂存指令、数据和位址
ESP(栈顶)、EBP(栈底)、EIP(返回地址)
由于返回地址已经被覆盖,函数执行返回地址时会将覆盖内容当作返回地址,然后试图执行相应地址的指
令,从而产生错误。
内存底部
内存顶部 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
name xxx EIP XXX
[cispcisp] [ ] [ ] [ ]
name XXX EIP XXX
[aaaaaaaa] [aaaa] [aaaa] [aaaa]
由于输入的name超过了定义变量的长度(8位),堆栈中预计的位置无法容纳,只好向内存顶部继续写
'a' ,由于堆栈的生长方向与内存的生长方向相反,用户输入 'a' 覆盖了堆栈底部EBP和ret。程序在返
回时,将EBP中的 'aaaa' 的ASCII码: 0x61616161作为返回地址,试图执行0x61616161处指令,导致错
误,形成一次堆栈溢出。
用户
补丁
防火墙
开发人员
编写安全代码,对输入数据进行验证
使用相对安全的函数
系统
缓冲区不可执行技术
虚拟化技术
脚本安全基础
WEB应用开发脚本:ASP、PHP、JSP等
脚本的优势:
交互性:
自动更新:
因时因人而变:
脚本安全风险
注入攻击
跨站脚本
......
如果可精确控制内存跳转地址,就可以执行指定代码,获得权限或破坏系统
寻找程序漏洞 → 编制缓冲区溢出程序 → 精确控制跳转地址
↓
获得系统权限或 ← 执行设定的代码
破坏系统
sql注入:
1.产生原因:程序对用户输入的特殊字符没有进行过滤
<scr<script>ipt>
<script src=a.js>
2.判断注入点:
www.xx.com/a.jsp?id=1
and 1=1 页面返回正常
and 1=2 页面返回错误
3.万能口令:用户名:'or'='or'
select * from admin where username='$username' and password='$password'
select * from admin where username=''or'='or'' and password='1111111'
4.注入工具:AD,domain,hsi,sqlmap,pangolin
5.防火墙无法防御:http80
6.防御:安全编码:WAF: web app fw
select * from admin where user='admin' and pwd='ABCDEFG'
select * from admin where user='admin' or pwd='123' or '1=1'
数据库信息收集
数据检索
操作数据库
增加数据
删除数据
更改数据
操作系统
借助数据库某些功能(例如:SQLServer的内置存储过程XP_CMDShell)
防御的对象:所有外部传入数据
用户的输入
提交的URL请求中的参数部分
从cookie中得到的数据
其他系统传入的数据
防御的方法
白名单:限制传递数据的格式
黑名单:过滤
过滤特殊字串:upadate、insert、delete等
开发时过滤特殊字符:单引号、双引号、斜杠、反斜杠、冒号、空字符等的字符
部署防SQL注入系统或脚本
跨站脚本攻击原理
跨站脚本(Cross Site Scropting, Css)是由于程序员没有对用户提交的变量中的HTML代码进行过
滤转换,等浏览器下载页面时,脚本可被执行,攻击者可以利用用户和服务器之间的信任关系实现恶意攻
击
<scirpt>arlet()</script>
敏感信息泄露
账号劫持
Cookie欺骗
拒绝服务
钓鱼
......
某论坛为了实现特效,支持脚本提交脚本
跨站脚本安全问题和特定更复杂,这使得对跨站脚本漏洞的防范难度更大
不允许脚本运行
对所有脚本进行严格过滤
知识子域:后门设置与防范
理解攻击者设置系统后门的常用方法
理解针对后门的防范措施
后门可以作什么
方便下次直接进入
监控用户所有行为、隐私
完全控制用户主机
后门设置的类型
账号后门
现有管理账号密码/新建账号/升级现有账号权限
普通账号shell设置Setuid
漏洞后门
木马(rookit)
脚本后门
账号后门
管理员账号:定期更换密码
定期检查系统是否有多余账号和具有管理员权限的账号
检查Linux系统中的Setuid程序
漏洞后门
补丁
木马后门
杀毒软件
系统检查:服务、进程、端口
完整性校验
脚本后门
安全脚本备份
网页防篡改
清除/改写日志
日志存放路径
例如:IIS访问日志位置
%WinDir%\System32\LogFiles\W3SVC1\exyymmdd.log
修改系统日期
删除 中间文件
删除创建的用户
日期 时间 (确定攻击的时间)
源IP (确定攻击者IP)
请求方法 (部分情况下要关注post操作)
请求链接 (查找链接中特殊字符串)
状态代码 (了解操作的结果)
关注超长的记录
http协议对URL长度没有限制
一般网站正常情况下不需要太长的URL
关注记录中的非正常编码
录入红色代码蠕虫攻击会形成如下记录
关注日志请求链接中的关键字
cmd、select、xp_cmdshell、Post等
信息收集与分析
基于人性弱点的攻击:密码破解、社会工程学
基于系统及协议缺陷的攻击:拒绝服务、电子欺骗
基于软件开发缺陷的攻击:缓冲区溢出、SQL注入、跨站脚本
后门与日志分析