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地址发出指令
        14.1.jpg
      • 有了3个潜在的恶意行为痕迹:
      1. 一个域名和对应IP地址
      2. 一个独立IP地址
      3. 一个带有URI与内容的HTTP GET请求(恶意代码有时在请求头里藏信息)
    • 利用搜索引擎或威胁情报,可能会发现这个恶意代码在多久前被创建,什么时候第一次被检测到,如何传播,谁可能是它的编写者,以及攻击者的目标可能是什么
    • 没有找到任何信息也有一些指导意义,因为这可能暗示着它们可能是一个针对性攻击,或者是一 个新的恶意代码
  • OPSEC=操作安全性
    • OPSEC:用来描述防止敌方获取敏感信息的过程
    • 当调查恶意代码的过程中采取某些行动时,会告诉编写者你已经识别出了恶意代码,甚至会向攻击者透露个人隐私
      • IP归属地
      • 特殊的DNS请求
    • 攻击者确定调查活动的方法
      • 发送带有特定连接的鱼叉式网络钓鱼邮件,观察从期望地理区域之外的访问尝试
      • 设计一个利用方式记录感染情况,在博客评论中创建一个经过编码的连接,从而有效的创建一个私人但可以公开访问的感染审计记录。
      • 在恶意代码中嵌入一个未使用的域名,观察对这个域名的解析,只有调查人员才会访问
    • 如果攻击者意识到自己正在被调查,他们可能会改变策略, 从而消失得无影无踪。

14.2 安全的调查在线攻击者

  • 最安全的选择是完全不使用互联网去调查攻击,但是这往往是不切实际的。如果你使用互联网, 则应该使用间接的方法,来逃避攻击者潜在的关注。
  • 间接性策略
    • 使用代理服务器,例如Tor或基于Web的匿名器
      • 可以帮助保护隐私,到那时常提供试图隐藏的线索,可能会引起攻击者怀疑
    • 使用一个专门的虚拟机来研究
      • 通过蜂窝网络、SSH或VPN连接隐藏具体位置,将连接通过远程基础设施来进行隧道传输
    • 使用一个临时的云机器
      • 如亚马逊AWS、腾讯云、新浪等云计算服务器
    • 通过搜索引擎或网站
      • 注意:查询一个搜索引擎未收录的域名,可能会触发搜索引擎对该域名的爬虫活动;点击结果甚至缓存资源,仍然可能会激活网站上的二级链接
  • 获取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)
      • 负载内容
    • 规则由一系列的元素(规则选项)连接在一起,只有这些元素均为真,规则才会被触发
      14.2.jpg
    • 例:
    1. flow:established,to_client:选择服务器到客户端方向TCP单向会话数据包来检查
    2. desize:200:选择负载为200字节的数据包
    3. 通过User-Agent来阻止HTTP通信 的Snort 规则
      14.3.jpg

      本地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、源端口和目的端口)
    • 规则选项:决定规则是否应该报警的元素,被检查元素按序评估,所有元素为真规则才执行
      14.4.jpg
      • content:“|”表示16进制的开始和结束,|0d 0a|表示HTTP头部之间的换行’\r\n’
  • 规则参考:
  • 逐个函数完全的分析代码
  • 针对上面的例子,多次运行上述恶意代码出现了这些 User-Agent 字符串
    14.5.jpg
    • 提出新的检测规则
      14.6.jpg
      • 匹配在We之后的四个字母数字字符
      • []:表示可能字符的集合
      • {}:表示可能字符的个数
      • 十六进制字节符号:\xHH
    • 额外的关键字
      14.7.jpg
    • 去除误报
      14.8.jpg
      • !:这条规则只有在描述的内容不存在时才会触发

14.5 了解攻击者的意图

  • 设计一个特征生成策略时,要试图 理解攻击者的意图
  • 站在攻击者的角度:不容易更改的、不容易发现的
    • 把恶意代码和正常流量混淆
    • 努力更新软件,与当前系统兼容
  • 经验法则
    • 专注属于两端之间的协议元素
      • 寻找客户端和服务器端共同使用的协议元素,根据这些元素创建特征
      • 更改两端对攻击者而言更难一些
    • 专注于已知的任何协议元素作为秘钥的部分
      • 一些硬编码的协议组件会被作为密钥使用
      • 如使用User-Agent识别僵尸网络流量
      • 同样,绕开这类特征,攻击者需要修改两端的代码
    • 确定流量中不太明显的协议元素
      • 这将不太可能被其他人使用。但草率的防御者可能泄 漏信息给攻击者
      • 防止攻击者回应另一个防御者时让你的特征过时,需要尝试确定其他防御者可能还没有注意到的恶意操作,要开发出健壮的特征