2024-09-21 14:36:00 +08:00
# 信息收集与系统攻击
2024-10-04 14:45:42 +08:00
> **一、信息收集**<br>
> <span style="color:blue;">理解</span>信息收集的概念及公开渠道信息收集、网络服务信息收集的方式及防御措施。
>
> **二、缓冲区溢出攻击**<br>
> <span style="color:blue;">理解</span>缓冲区溢出的基本概念及危害;<br>
> <span style="color:blue;">理解</span>缓冲区溢出攻击的技术原理及防御措施。
2024-09-21 14:36:00 +08:00
### 一、信息收集
2024-10-04 14:45:42 +08:00
#### 1、信息收集的概念
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
1. **信息收集的概念**
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
- 情报学中一个领域
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
2. **传统的信息收集**
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
- 案例:著名的照片泄密案
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
![image-20241004141400419 ](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20241004141400419.png )
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
> 日本情报专家据此解开了中国当时最大的石油基地 - 大庆油田的秘密<br>
> 1、他们根据照片上王进喜的衣着判断, 只有在北纬46度至48度的区域内, 冬季才有可能穿这样的衣服, 因此推断大庆油田位于齐齐哈尔与哈尔滨之间; <br>
> 2、通过照片中王进喜所握手柄的架式, 推断出油井的直径; <br>
> 3、从王进喜所站的钻井与背后油田间的距离和井架密度, 推断出油田的大致储量和产量。<br>
> 有了如此多的准确情报,日本人迅速设计出适合大庆油田开采用的石油设备。当中国政府向世界各国征求开采大庆油田的设备方案时,日本人一举中标。庆幸的是,日本当时是出于经济危机,根据情报分析结果,向我国高价推销炼油设施,而不是用于军事战略意图。
2024-09-21 14:36:00 +08:00
2024-10-04 14:45:42 +08:00
3. ** < span style = "color:red;" > 互联网时代的信息收集</ span > **
- 信息技术的发展使得数据大量被生产出来
4. **收集哪些信息**
- < span style = "color:red;" > 目标系统的信息系统相关资料</ span >
- 域名、网络拓扑、操作系统、应用软件、相关脆弱性
- < span style = "color:red;" > 目标系统的组织相关资料</ span >
- 组织架构及关联组织
- 地理位置细节
- 电话号码、邮件等联系方式
- 近期重大事件
- 员工简历
- 其他可能< span style = "color:red;" > 令攻击者感兴趣的任何信息</ span >
#### 2、信息收集的方法
1. **公开信息收集 - 搜索引擎**
- 快速定位
- 某开源软件`xxxx.jsp`脚本存在漏洞, Google 搜索`xxxx.jsp`可以找到存在此脚本的Web网站。
- 信息挖掘
- 定点采集
> Google搜索 `.doc+website` 挖掘信息
- 隐藏信息
> `.mdb`、`.ini`、`.txt`、`.old`、`.bak`、`.001`.…...
- 后台入口
2. **网络信息收集**
- 正常服务( 如whois)
- 系统功能
- Ping
- tracert
3. **系统及应用信息收集**
- 服务旗标
- 欢迎信息
- 端口扫描
- TCP/IP协议指纹识别
#### 3、信息收集与分析的防范
1. **公开信息收集防御**
- 信息展示最小化原则,不必要的信息不要发布
2. **网络信息收集防御**
- 部署网络安全设备( IDS、防火墙等)
- 设置安全设备应对信息收集( 阻止ICMP)
3. **系统及应用信息收集防御**
- 修改默认配置(旗标、端口等)
- 减少攻击面
### 二、缓冲区溢出攻击
#### 1、缓冲区溢出攻击原理
缓冲区溢出攻击利用编写不够严谨的程序,通过向程序的缓冲区写入超过预定长度的数据,造成缓存的溢出,从而破坏程序的堆栈,导致程序执行流程的改变。
#### 2、缓冲区溢出的危害
- 最大数量的漏洞类型
- 漏洞危害等级高
#### 3、缓冲区溢出基础
1. **堆栈概念**
- 一段连续分配的内存空间
2. **堆栈特点**
- 后进先出
- 堆栈生长方向与内存地址方向相反
3. **指针**
- 指针是指向内存单元的地址
4. **寄存器**
- 暂存指令、数据和位址
- ESP( 栈顶)
- EBP( 栈底)
- EIP( 返回地址)
#### 4、缓冲区溢出简单示例
- 程序作用:将用户输入的内容打印在屏幕上
```
Buffer.c
#include < stdio.h >
int main()
{
char name[8];
printf("Please input your name:");
gets(name);
printf("you name is: %s!", name);
return 0;
}
```
这段程序的功能是显示输人的用户名称。在程序中, 用于存放用户输人名称的变量name长度定义为8位, 由于程序缺少必要的输入长度校验, 当用户的输入值超过8位时, printf (" you name is : %s! ", name)执行时会导致一个缓存溢出。例如输入用户姓名为“aaaaaaaaaaaaaaaaaaaaaaaa”时, 由于输人值超过name定义的长度( 程序申请缓冲区) , 当程序将用户输人值保存到name的地址空间时, 会继续向内存后续地址空间写入其余输入内容, 进而覆盖了程序栈中存储的返回地址( EIP) , 如图9-6所示。
![image-20241004144200293 ](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20241004144200293.png )
程序在需要调用返回地址时, 把EIP中存储的“aaaa”的ASCII码0x61616161作为下一条指令地址, CPU会试图执行0x61616161处的指令, 而由于该内存并非运行程序所能访问, 因此这个操作会被系统拒绝, 因此产生错误, 如图9-7所示。
![image-20241004144249294 ](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20241004144249294.png )
#### 5、缓冲区溢出攻击过程
- 如果可精确控制内存跳转地址,就可以执行指定代码,获得权限或破坏系统。
![image-20241004144357860 ](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20241004144357860.png )
#### 6、缓冲区溢出的防范
1. **用户**
- 补丁
- 防火墙
2. **开发人员**
- 编写安全代码,对输入数据进行验证
- 使用相对安全的函数
3. **系统**
- 缓冲区不可执行技术
- 虚拟化技术
2024-09-21 14:36:00 +08:00