14.1 网络应对措施
- 网络行为的基本属性:IP地址、TCP与UDP端口、域名,以及流量内容等,网络和安全设备可以利用它们,来提供网络应对措施
- 根据IP、端口:防火墙和路由器可以限制对网络的访问
- 配置DNS服务器:将一些已知的恶意域名重定向到恶意主机(sinkhole)
- 配置代理服务器:检测或阻止访问某些域名
- 基于内容的网络应对措施:IDS(网络特征码匹配)、IPS、电子邮件和web代理
- IDS:检测恶意流量
- IPS:检测恶意流量并进一步防御恶意流量在网络中传输
- 在原始环境中观察恶意代码
- 在静态或动态分析之前,挖掘恶意代码在原始环境中产生的日志、 报警以及网络包
- 真实网络的优势:
- 捕获的数据最准确
- 些恶意代码会检测试验环境
- 实际流量包含受感染的主机和C&C服务器两端的信息,实验环境中分析者通常只能获得一端的数据
- 被动监控流量不会被攻击者检测到:操作安全性
- 捕获的数据最准确
- 恶意行为的痕迹
- 举例:
- 发起一个www.badsite.com的DNS请求
- 然后对DNS记录中返回IP地址80端口进行了一次HTTP GET请求
- 30秒后,在没有做DNS查询的情况下,它试图向一个指定IP地址发出指令
- 有了3个潜在的恶意行为痕迹:
- 一个域名和对应IP地址
- 一个独立IP地址
- 一个带有URI与内容的HTTP GET请求(恶意代码有时在请求头里藏信息)
- 利用搜索引擎或威胁情报,可能会发现这个恶意代码在多久前被创建,什么时候第一次被检测到,如何传播,谁可能是它的编写者,以及攻击者的目标可能是什么
- 没有找到任何信息也有一些指导意义,因为这可能暗示着它们可能是一个针对性攻击,或者是一 个新的恶意代码
- 举例:
- OPSEC=操作安全性
- OPSEC:用来描述防止敌方获取敏感信息的过程
- 当调查恶意代码的过程中采取某些行动时,会告诉编写者你已经识别出了恶意代码,甚至会向攻击者透露个人隐私
- IP归属地
- 特殊的DNS请求
…
- 攻击者确定调查活动的方法
- 发送带有特定连接的鱼叉式网络钓鱼邮件,观察从期望地理区域之外的访问尝试
- 设计一个利用方式记录感染情况,在博客评论中创建一个经过编码的连接,从而有效的创建一个私人但可以公开访问的感染审计记录。
- 在恶意代码中嵌入一个未使用的域名,观察对这个域名的解析,只有调查人员才会访问
- 如果攻击者意识到自己正在被调查,他们可能会改变策略, 从而消失得无影无踪。
14.2 安全的调查在线攻击者
- 最安全的选择是完全不使用互联网去调查攻击,但是这往往是不切实际的。如果你使用互联网, 则应该使用间接的方法,来逃避攻击者潜在的关注。
- 间接性策略
- 使用代理服务器,例如Tor或基于Web的匿名器
- 可以帮助保护隐私,到那时常提供试图隐藏的线索,可能会引起攻击者怀疑
- 使用一个专门的虚拟机来研究
- 通过蜂窝网络、SSH或VPN连接隐藏具体位置,将连接通过远程基础设施来进行隧道传输
- 使用一个临时的云机器
- 如亚马逊AWS、腾讯云、新浪等云计算服务器
- 通过搜索引擎或网站
- 注意:查询一个搜索引擎未收录的域名,可能会触发搜索引擎对该域名的爬虫活动;点击结果甚至缓存资源,仍然可能会激活网站上的二级链接
- 使用代理服务器,例如Tor或基于Web的匿名器
- 获取IP地址和域名信息
- 互联网领域的两个基本要素:IP地址和域名
- 恶意代码也和正常网络流量一样使用DNS
- 当一个域名被注册后,注册信息,如域名、名字服务器、相关的一些日期以及注册域名机构的联系人信息,都被存储在域名注册机构;域名黑名单中包活I地址和域名的映射以及IP地址的地理信息
- 工具:whois 和dig
- 缺点:会暴露你的IP地址
- 网站基本信息查询的优点:
- 自动化递归查询
- 可以提供一层匿名性
- 经常基于历史信息或其他来源的查询信息
- 有时候不同服务器在域名注册机构中注册的域名相同
- whois.domaintools.com
- DNS历史记录
- 反向IP查询,能提供指向单个IP地址的多个域名信息
- 反向whois查询(查询基于联系人信息的元数据)
- RobTex
- 找到指向单个IP地址的多个域名信息
- 检查黑名单
- BFK DNS Logger
- 通过被动DNS监测收集数据,更加隐蔽
14.3 基于内容网络应对措施
- 基于IP地址和域名:价值是短暂的,因为攻击者善于快速地在不同地址或域名间进行变换。
- 基于内容的特征:往往更有价值并且作用更加持久, 因为它们使用更多基础特征,来识别恶意代码
- 入侵检测系统依赖于特知识库:检测率、误报率
- 使用Snort进行入侵检测(对网络通信数据进行检测)
- 基于规则的检测,可以使用的标识为:
- TCP或IP头
- 负载大小
- 连接状态 (如:ESTABLISHED)
- 负载内容
- 规则由一系列的元素(规则选项)连接在一起,只有这些元素均为真,规则才会被触发
- 例:
- flow:established,to_client:选择服务器到客户端方向TCP单向会话数据包来检查
- desize:200:选择负载为200字节的数据包
- 通过User-Agent来阻止HTTP通信 的Snort 规则
本地IP的任意端口连接到远端服务器的http端口: alert tcp $HOME_NET(指定内部IP地址范围) any -> $EXTERNAL_NET(指定外部IP地址范围) $HTTP_PORTS(解析HTTP流量的端口) (msg:”TROJAN Malicious User- Agent”; content:”|0d 0a|User-Agent\: Wefa7e”; classtype:trojan-activity; sid:2000001; rev:1;)
- 基于规则的检测,可以使用的标识为:
- snort规则组成:
- 规则头部:规则动作(警告、协议、源IP和目的IP、源端口和目的端口)
- 规则选项:决定规则是否应该报警的元素,被检查元素按序评估,所有元素为真规则才执行
- content:“|”表示16进制的开始和结束,|0d 0a|表示HTTP头部之间的换行’\r\n’
- 规则参考:
- 逐个函数完全的分析代码
- 针对上面的例子,多次运行上述恶意代码出现了这些 User-Agent 字符串
- 提出新的检测规则
- 匹配在We之后的四个字母数字字符
- []:表示可能字符的集合
- {}:表示可能字符的个数
- 十六进制字节符号:\xHH
- 额外的关键字
- 去除误报
- !:这条规则只有在描述的内容不存在时才会触发
- 提出新的检测规则
14.5 了解攻击者的意图
- 设计一个特征生成策略时,要试图 理解攻击者的意图
- 站在攻击者的角度:不容易更改的、不容易发现的
- 把恶意代码和正常流量混淆
- 努力更新软件,与当前系统兼容
- 经验法则
- 专注属于两端之间的协议元素
- 寻找客户端和服务器端共同使用的协议元素,根据这些元素创建特征
- 更改两端对攻击者而言更难一些
- 专注于已知的任何协议元素作为秘钥的部分
- 一些硬编码的协议组件会被作为密钥使用
- 如使用User-Agent识别僵尸网络流量
- 同样,绕开这类特征,攻击者需要修改两端的代码
- 确定流量中不太明显的协议元素
- 这将不太可能被其他人使用。但草率的防御者可能泄 漏信息给攻击者
- 防止攻击者回应另一个防御者时让你的特征过时,需要尝试确定其他防御者可能还没有注意到的恶意操作,要开发出健壮的特征
- 专注属于两端之间的协议元素