第14章 恶意代码的网络特征
1. 网络应对措施
网络行为的基本属性包括IP地址、TCP与UDP端口、域名,以及流量内容等,网络和安全设备可以利用它们,来提供网络应对措施。根据IP地址和端口,防火墙和路由器可以限制对网络的访问。
配置DNS服务器,可以将一个已知的恶意域名重定向到内部主机,这被称为sinkhole技术。配置代理服务器,可以检测或者阻止访问某些域名。
在原始环境中观察代码
真实环境捕获的信息将提供恶意应用程序真实行为的最佳视图,而恶意代码可以被编程,以加入探测实验环境的能力。
活跃恶意代码的真实场景信息能够提供独特的视角,来加快分析过程。真实流量提供了恶意代码在两个端点(客户端和服务器端)之间的通信信息,然而,在实验环境里,分析者通常只能获取其中一端的信息。而分析恶意代码如何接收内容(也就是解析例程),比起分析恶意代码如何产生内容,往往会更具挑战性。因此,双向的样本流量可以帮助分析师加快恶意代码解析例程的分析进度。
此外,当你被动地查看信息时,不存在泄露给攻击者分析活动的风险。
恶意行为的痕迹
OPSEC=操作安全性
OPSEC是政府和军方的一个术语,用来描述防止敌方获取敏感信息的过程。
2.安全地调查在线攻击者
间接性策略
一种间接策略是使用某些旨在提供匿名的服务或者机制,例如Tor,一个开放的代理,或者基于Web的匿名器。
另一种策略是使用专门的机器来研究,通常是虚拟机。
隐藏专用机器的具体位置的方法
- 使用匿名的蜂窝连接。
- 通过安全shell(SSH)或者一个虚拟私有网络(VPN),将你的连接通过远程的基础设施来进行隧道传输。
- 使用运行在云服务中的一个临时远程机器,例如亚马逊的弹性计算云(亚马逊EC2)。
获取IP地址和域名信息
Domain Tools(http://www.domaintools.com/)
这个网站提供了whois历史记录的查询,能够进行反向IP查询,来显示所有解析成某个特定IP地址的域名,以及反向whois查询。反向whois查询允许基于联系人信息的元数据,来进行whois记录查询。
RobTex(http:/www.robtex.com/)
这个网站能提供指向单个IP地址的多个域名信息,另外也集成其他一些有价值的信息
BFK DNS logger(http://www.bfk.de/bfk_dnslogger_en.htm/)
这个网站使用被动DNS监测信息。
3. 基于内容的网络应对措施
使用Snort进行入侵检测
Snort是最流行的入侵检测系统之一。Snort被用来生成网络特征或者规则,这些规则由一系列元素(被称作是规则选项)连接在一起,而只有这些元素均为真时,规则才会被触发。主要的规则选项被分为:识别内容元素的规则选项(在Snort系统术语中被称为负载规则选项),以及内容无关的规则选项(称作非负载规则选项)。非负载规则选项的例子中包括某些特定标志位,TCP或IP头中的特定值,以及包负载的大小。
Snort规则关键字描述
深入观察
4. 结合动态和静态分析技术
过度分析的危险
恶意代码分析深入级别
在众目睽睽下隐藏
- 攻击者模拟现有的协议
- 攻击者利用现有的基础设施
- 利用客户端发出的信令
理解周边代码
网络行为有两种类型:发送数据和接收数据。分析发送出去的数据通常比较容易,因为无论恶意代码何时运行,它都会产生出便于分析的样本。
寻找网络操作代码
了解网络内容的来源
特征生成中最有价值的元素是恶意代码中的硬编码数据。恶意代码发送的网络流量是从一组有限数据源中构造的。创建出有效特征,需要对每一块网络内容的数据来源有所了解。
下面是一些基本的数据源:
- 随机数据(例如调用生成伪随机值函数所返回的数据)。
- 来源于标准网络库的数据(例如调用HTTPSendRequest创建的GET请求)。
- 来源于恶意代码的硬编码数据(例如一个硬编码的User-Agent字符串)。
- 关于主机及其配置信息的数据(例如主机名,根据系统时钟的当前时间、CPU速率等)。
- 从其他来源接收的数据,例如远程服务器或者文件系统(例如,服务器发送的用于加密的随机数、本地文件,以及键盘记录器捕获信息等)。
硬编码数据 vs. 临时数据
与使用高层网络API(如COM接口)相比,恶意代码使用低层网络API(如Winsock)时,需要更多手动生成的内容来模仿常见流量。更多的手动生成内容就意味着更多的硬编码数据,从而增加了恶意代码编写者犯错误的可能性,你可以利用这些错误来生成网络特征。
确定和利用编码步骤
创建特征
分析解析例程
针对多个元素
5. 了解攻击者的意图
利用攻击者的弱点
- 专注属于两端之间的协议元素
- 专注于已知的任何协议元素作为密钥的部分
- 确定流量中不太明显的协议元素