污点跟踪

注意: 这些讲座笔记是从 2014 年 6.858 课程网站上发布的笔记上稍作修改的。

安卓安全策略

这篇论文试图解决什么问题?

  • 应用程序可以外泄用户的私人数据并发送到某个服务器。

  • 高层次方法:跟踪哪些数据是敏感的,并防止其离开设备!

  • 为什么安卓权限不够用?

    • 安卓权限控制应用程序是否可以读取/写入数据,或访问设备或资源(例如,互联网)。

    • 使用安卓权限,很难指定关于特定类型数据的策略。 (例子: “即使应用程序有网络访问权限,也不应该能够通过网络发送用户数据”)。

    • Q: 啊哈!如果我们从不安装既读取数据又具有网络访问权限的应用程序呢?

    • A: 这将阻止一些明显的泄漏,但也会破坏许多合法的应用程序! (例子: 电子邮件应用程序)

      • 信息仍然可以通过侧信道泄漏。 (例子: 浏览器缓存泄漏了一个对象是否在过去被获取过)

      • 应用程序可以勾结! (例子: 没有网络权限的应用程序可以将数据传递给具有网络权限的应用程序。)

      • 恶意应用程序可能会欺骗另一个应用程序发送数据。 (例子: 发送一个意图到 Gmail 应用程序?)

安卓恶意软件实际上做了什么?

  • 用位置或 IMEI 进行广告。 (IMEI 是每台设备的唯一标识符。)

  • 窃取凭据:将您的联系人列表、IMEI、电话号码发送到远程服务器。

  • 将您的手机变成一个僵尸,使用您的联系人列表发送垃圾邮件/短信! ‘Sophisticated’ Android malware hits phones

  • 防止数据外泄是有用的,但仅靠污点跟踪是不足以防止设备被黑客攻击的!

TaintDroid 概述

TaintDroid 跟踪敏感信息在系统中传播的过程。

  • TaintDroid 区分信息源和信息汇

    • 源生成敏感数据:例子: 传感器、联系人、IMEI

    • 汇点暴露敏感数据:例子: 网络。

  • TaintDroid 使用 32 位位向量表示污点,因此最多可以有 32 个不同的污点来源。

  • 大致上,污点从赋值的右手边流向左手边。

例子:

int lat = gps.getLatitude();
                // The lat variable is now
                // tainted!

Dalvik VM is a register-based machine,
so taint assignment happens during the
execution of Dalvik opcodes [see Table 1].

   move_op dst src          // dst receives src's taint
   binary_op dst src0 src1  // dst receives union of src0
                            // and src1's taint 

有趣的特殊情况,数组:

 char c = //. . . get c somehow.
   char uppercase[] = ['A', 'B', 'C', . . .];
   char upperC = uppercase[c];
                     // upperC's taint is the
                     // union of c and uppercase's
                     // taint. 
  • 为了最小化存储开销,一个数组接收一个单一的污点标记,其所有元素都具有相同的污点标记。

  • Q: 为什么将数组或 IPC 消息仅关联一个标签是安全的?

  • A: 估计污点应该是安全的。 这可能会导致误报,但不会导致漏报。

  • 另一个特殊情况:本地方法(即,内部 VM 方法如 System.arraycopy(),以及通过 JNI 公开的本地代码)。

    • 问题: 本地代码不经过 Dalvik 解释器,所以 TaintDroid 无法自动传播污点!

    • **解决方案:**手动分析本机代码,提供其污点行为的摘要。

      • 实际上,需要指定如何将参数的污点复制到返回值。

      • **问:**这种扩展效果如何?

      • **答:**作者认为这对内部 VM 函数(例如,arraycopy)效果不错。对于“简单”调用,分析可以自动化—如果只传递整数或字符串,则将输入污点的并集分配给返回值。

  • IPC 消息类似于数组:每个消息与一个污点相关联,该污点是组成部分的污点的并集。

    • 从传入消息中提取的数据被分配为该消息的污点。
  • 每个文件都与一个存储在文件元数据中的单个污点标志相关联。

    • 与数组和 IPC 消息一样,这是一个保守的方案,可能会导致误报。

污点标记在内存中是如何表示的?

  • 五种东西需要有污点标记:

    1. 方法中的局部变量

    2. 方法参数

    3. 对象实例字段

    4. 静态类字段

    5. 数组

  • 基本思想:将变量的标志存储在变量附近。

    • **问:**为什么?

    • **答:**保留空间局部性—这有望改善缓存行为。

    • 对于生活在堆栈上的方法参数和局部变量,立即在变量旁边分配污点标志。

例子:

 .
                 .
        |        .         |
        +------------------+
        |     local0       |
        +------------------+
        | local0 taint tag |
        +------------------+
        |     local1       |
        +------------------+
        | local1 taint tag |
        +------------------+
                 .
                 .
                 .

    _TaintDroid_ uses a similar approach
    for class fields, object fields,
    and arrays -- put the taint tag
    next to the associated data. 

因此,鉴于所有这些,TaintDroid中的基本思想很简单:当敏感数据通过系统流动时标记污点,并在数据试图通过网络离开时发出警报!

作者发现应用程序的各种不当行为:

  • 将位置数据发送给广告商

  • 将用户的电话号码发送到应用服务器

TaintDroid的信息流规则可能导致反直觉/有趣的结果。想象一个应用程序实现自己的链表类。

 class ListNode{
        Object data;
        ListNode next;
    } 

假设应用程序将受污染的值分配给“data”字段。如果我们计算列表的长度,长度值是否受污染?

向链表添加元素涉及:

  1. 分配一个ListNode

  2. 分配给data字段

  3. 修补next指针

请注意,步骤 3不涉及受污染的数据!因此,“next”指针是受污染的,这意味着计算列表中元素数量不会生成受污染的长度值。

TaintDroid的性能开销是多少?

  • 用于存储污点标记的额外内存。

  • 分配额外的 CPU 成本来分配、传播、检查污点标记。

  • 开销似乎适中:内存开销约为 3–5%,CPU 开销为 3–29%

    • 然而,在手机上,用户非常关心电池寿命:29% 的 CPU 性能下降可能是可以接受的,但电池寿命下降 29% 是不好的。

问题和答案

**问:**为什么不在 x86 指令或 ARM 指令级别跟踪污点?

**答:**这太昂贵了,而且误报太多。

  • 例子: 如果内核数据结构被错误地分配了污点,那么污点将错误地流向用户模式进程。这会导致污点爆炸:无法确定哪个状态真正受到敏感数据的影响。

  • 这可能发生的一种方式是如果堆栈指针或断点指针被错误地标记。一旦发生这种情况,污点会迅速扩散:

Q: 污点跟踪似乎很昂贵—我们不能只检查输入和输出以查找已知敏感值吗?

A: 这可能作为一种启发式方法,但对于对手来说很容易绕过它。

  • 有许多编码数据的方式,例如,URL 编码、二进制与文本格式等。

隐式流

如描述的,污点跟踪无法检测隐式流

隐式流发生在一个受污染的值影响另一个变量而不直接分配给该变量时。

 if (imei > 42) {
         x = 0;
     } else {
         x = 1;
     } 

我们可以尝试通过网络泄露 IMEI 的信息,而不是分配给x

隐式流通常是由于受污染的值影响控制流而产生的。

可以尝试通过给程序计数器(PC)分配一个污点标记来捕捉隐式流,更新它与分支测试的污点,并将 PC 的污点分配给 if-else 子句内的值,但这可能会导致很多误报。

例子:

 if (imei > 42) {
         x = 0;
     } else {
         x = 0;
     }

     // The taint tracker thinks that
     // x should be tagged with imei's
     // taint, but there is no information
     // flow! 

应用程序

污点跟踪的有趣应用:跟踪数据副本。

  • 通常希望确保敏感数据(密钥、密码)及时擦除。

  • 如果我们不担心性能,我们可以使用 x86 级别的污点跟踪来查看敏感信息如何在机器中流动。参考

  • 基本思想:创建一个 x86 模拟器,解释完整系统(操作系统+应用程序)中的每个 x86 指令。

  • 您会发现软件通常会保存比必要时间更长的数据。例如,按键数据会保留在:

    • 键盘设备驱动程序的缓冲区

    • 内核的随机数生成器

    • X 服务器的事件队列

    • 用于传递包含按键消息的消息的内核套接字/管道缓冲区

    • 终端应用程序的tty缓冲区

    • 等等…

Tightlip

TaintDroid检测敏感数据泄漏,但需要 Java VM 的语言支持–VM 必须实现污点标记。我们能否在没有受管运行时支持的情况下跟踪敏感信息泄漏?如果我们想要检测遗留的 C 或 C++应用程序中的泄漏怎么办?

  • 一种方法:使用TightLip 系统中引入的双重进程

  • 步骤 1: 定期,Tightlip运行一个守护进程,扫描用户的文件系统,并查找类似邮件文件、文字处理文档等敏感信息。

    • 对于这些文件中的每一个,Tightlip 生成文件的影子版本。影子版本是非敏感的,并包含清洁后的数据。

    • Tightlip 将每种类型的敏感文件与专门的清洁器相关联。 示例: 电子邮件清洁器用等量的虚拟字符覆盖 to: 和 from: 字段。

  • 第二步:在稍后的某个时刻,一个进程开始执行。最初,它不接触任何敏感数据。如果它接触到敏感数据,那么 Tightlip 会生成一个复制者进程。

    • 复制者是原始进程的沙盒版本。

      • 继承大部分状态从原始进程…

      • …但读取清洁后的数据而不是敏感数据

    • Tightlip 让两个进程并行运行,并观察这两个进程所做的系统调用。

    • 如果复制者与原始进程做出相同的系统调用并带有相同的参数,那么很可能输出不依赖于敏感数据。

  • 第三步:如果系统调用发散,复制者试图进行网络调用,Tightlip 将标记潜在的敏感数据泄漏。

    • 在这一点上,Tightlip 或用户可以终止进程,失败网络写入,或执行其他操作。
  • Tightlip 的优点:

    • 适用于传统应用程序

    • 需要对标准操作系统进行轻微更改,以比较系统调用的顺序及其参数

    • 低开销(基本上是运行额外进程的开销)

  • Tightlip 的局限性

    • 清洁器位于受信任的计算基础上。

      • 他们必须捕捉所有敏感数据的实例。

      • 他们还必须生成合理的虚拟数据–否则,复制者可能会在格式不正确的输入上崩溃!

    • 如果复制者从多个来源读取敏感数据,并且发生系统调用分歧,Tightlip 无法判断原因。

分散式信息流控制

TaintDroidTightlip 假设开发人员不提供任何帮助…但如果开发人员愿意在其代码中明确添加污点标签呢?

 int {Alice --> Bob} x;  // Means that x is controlled
                          // by the principal Alice, who
                          // allows that data to be seen
                          // by Bob. 

输入通道: 读取值获取通道的标签。

输出通道: 通道上的标签必须与写入值上的标签匹配。

  • 静态(即编译时)检查可以捕捉许多涉及不当数据流的错误。

    • 粗略地说,标签就像编译器可以推理的强类型。

    • 静态检查比动态检查要好得多:运行时失败(或其缺失)可能是一种隐蔽通道!

  • 更多细节,请参阅Jif paper

垃圾邮件的经济学

注意: 这些讲座笔记略有修改,来自 2014 年 6.858 课程网站

网络攻击的经济学

到目前为止,我们已经处理了安全性的技术方面(缓冲区溢出,同源策略,Tor 等)。

  • 主要关注点: 对手如何破坏系统?我们制定威胁模型,然后尝试使我们的系统对抗该威胁模型。

  • 另一种观点: 为什么攻击者试图破坏我们的安全政策?

    • 一些类型的攻击出于意识形态原因(例如,公民政治抗议;政府审查,Stuxnet)。对于这些类型的攻击,金钱不是主要动机。

      • 让这些攻击变得更困难很难,除了通常“使计算机更安全”。

      • 经济处罚可能涉及威慑,即在犯罪被发现后的处罚。然而,计算机和网络目前的问责制很差。 例子: Stuxnet 是从哪里来的?我们有一些好主意,但我们能在法庭上打赢官司吗?我们应该去哪个法庭?

    • 然而,许多种类的计算机犯罪受到经济动机的驱使(例如,国家支持的工业间谍活动;垃圾邮件)。

  • 要赚钱就得花钱!

    • 攻击者需要建立基础设施来支持攻击。 例子: 用于发动攻击的机器,用于处理非法金融交易的银行。

    • 或许我们可以通过使攻击者的基础设施成本过高来阻止他们? 例子: 如果发送垃圾邮件变得不赚钱,垃圾邮件发送者将停止发送垃圾邮件!

今天的讲座,我们将专注于涉及重要经济因素的攻击。

  • 例子: 在赛里斯,垃圾邮件发送者经常雇用“短信车”。这些车辆拦截手机和手机基站之间的通信。车辆发现电话号码,然后向这些号码发送垃圾短信。一辆车每天可以发送 20 万条短信!

    • 拦截设备成本:~$1,600

    • 每天利润:~$1,600

    • 被抓到罚款:< $5,000`

    • 由于很少被抓到,垃圾车是一项利润丰厚的生意。

      • 此外,赛里斯移动运营商每条垃圾短信都能赚钱,因此运营商有动机继续允许垃圾短信传播。

      • 运营商定义特殊的“106 前缀”号码,这些号码不受一天可以发送多少条短信的正常限制。106 号码应该用于非商业目的(例如,公司与员工联系),但 55%的赛里斯短信垃圾邮件来自 106 号码。

    • 《经济学家》,“垃圾短信:惹人厌烦的 106 种方式。”2014 年 11 月 29 日

  • 有许多公司交易“网络武器”。 例子: Endgame。

    • $1.5 百万美元:Endgame 将为您提供数百万台未打补丁机器的 IP 地址和物理位置。

    • 250 万美元:终极目标将向您出售一个“零日订阅包”,每年提供 25 个漏洞利用。

谁从网络武器交易商那里购买漏洞利用?政府?公司(例如,“反击”计划)?……?

有一个市场可以购买和出售攻击者可以用于恶意目的的各种资源。

  • 被入侵的系统

    • 整个被入侵的机器。

    • 访问被入侵的网站(例如,发布垃圾邮件、链接、重定向、恶意软件)。

    • 被入侵的电子邮件帐户(例如,Gmail)。

    • 在现有僵尸网络上运行服务(垃圾邮件,DoS)。

  • 工具

    • 恶意软件套件

    • 漏洞、利用

  • 被盗信息

    • 社会保障号、信用卡号、电子邮件地址等。

垃圾邮件生态系统

本文重点讨论垃圾邮件生态系统(特别是药品、仿冒商品和软件的销售)。主要有三个步骤:

  1. 广告:以某种方式让用户点击链接。

  2. 点击支持:展示一个将成为点击目标的网站。

  3. 认识到:允许用户购买东西、发送货款,然后收到产品。

最终,资金来自这个链条中的最后一部分,当用户购买东西时。

  • 许多组件是外包的或通过联盟计划支持的:垃圾邮件发送者充当广告商,但联盟处理大部分/全部后端工作(例如,与银行合作)。

  • 垃圾邮件发送者通常按佣金工作,获得他们带来的资金的 30%–50%。

接下来,我们将详细讨论这三个步骤,并探讨可能的干扰方式。

广告:如何让用户点击链接?

  • 典型方法: 发送电子邮件垃圾邮件。(其他方法也有效:博客/评论垃圾邮件,在社交网络中发送垃圾邮件,……)

  • 发送垃圾邮件的成本: 每百万封垃圾邮件的零售价为 60 美元。

    • 直接操作垃圾邮件僵尸网络的实际成本要低得多。

    • 垃圾邮件电子邮件的投递和点击率非常低,因此发送垃圾邮件必须非常便宜才能盈利。

    • 一些相同人员之前的研究:

      • 发送了约 3.5 亿封垃圾邮件

      • 约 10,000 次点击,28 次购买尝试

  • 我们如何让发送垃圾邮件变得更加昂贵?

    • IP 级别黑名单: 一段时间内有效,但只有对手拥有少量 IP 时才有效。

    • 发送电子邮件收费?

      • 旧想法,以各种形式存在:金钱、计算、验证码。

      • 这可能有效吗?我们如何让每个人立即采用这种方法?

      • 即使每个人同时采用这种方法,这也会起作用吗?如果用户设备被入侵怎么办?(但即使桌面设备被入侵,按照每条消息收费可能是一个很高的门槛,可以大大减少垃圾邮件,因为生成垃圾邮件需要非常便宜才能盈利!)

  • 对手的三种解决方案:

    • 大规模僵尸网络提供许多 IP 地址。

    • 被入侵的网络邮件帐户提供特殊 IP 地址访问。

      • 雅虎、Gmail、Hotmail 无法被列入黑名单。
    • 劫持 IP 地址(使用 BGP 公告)。

  • 然而,解决方法并非免费,对垃圾邮件发送者会产生一些成本。

    • 发送垃圾邮件的成本在 IP 级别黑名单出现之前甚至更低。

僵尸网络通常用于发送垃圾邮件。

  • 典型架构

    • 许多运行僵尸网络软件的被入侵终端用户机器。

    • 用于向僵尸发送命令的命令和控制(C&C)服务器/基础设施。

    • 机器人定期从 C&C 基础设施获取新任务。

  • 单个僵尸机器具有各种有用资源:

    • 物理:IP 地址(用于发送垃圾邮件),网络带宽,CPU 周期。

    • 数据:电子邮件联系人(用于发送垃圾邮件),信用卡号码,…

  • 防止僵尸机器发送垃圾邮件很困难–可能有数百万个僵尸 IP!

将您的恶意软件安装在终端主机上需要多少费用?

  • 每个主机的价格:美国主机约为$0.10,亚洲主机约为$0.01。

  • 似乎难以防止;许多用户将乐意运行任意可执行文件。

命令和控制架构是什么样的?

  • 集中式 C&C 基础设施:对手需要“防弹”主机(即,拒绝来自银行、法律机构的关闭请求)。

    • 防弹主机收取风险溢价。
  • 如果托管服务被关闭怎么办?

    • 对手可以使用 DNS 进行重定向。此外,使用“快速流动”技术,攻击者可以快速更改与主机名关联的 IP 地址。

      • 攻击者创建一个服务器 IP 地址列表(可能有数百或数千个 IP);攻击者将每个 IP 绑定到主机名上,持续时间很短(例如,300 秒)。
    • 摧毁僵尸网络的 DNS 域名有多难?

      • 可以关闭域名的注册,也可以关闭域名的 DNS 服务器。

      • 对手可以使用域名流动,跨越许多独立的注册商。

        • 更难摧毁:需要注册商之间的协调!

        • Conficker 发生了:它足够重要/重要…

  • 分散的 C&C 基础设施:点对点网络。

    • 允许僵尸网络主控操作更少或不需要服务器;难以摧毁。

被入侵的 Webmail 帐户也可以用于发送垃圾邮件。

  • 非常有效的交付机制:每个人都接受来自 Yahoo、Gmail 等的电子邮件。

  • Webmail 提供商有动机防止帐户被盗。

    1. 如果供应商不阻止垃圾邮件,那么所有来自该供应商的邮件可能会被标记为垃圾邮件!

    2. 供应商通过广告赚取服务费,因此供应商需要真实用户点击广告。

  • 供应商如何检测垃圾邮件?

    • 监视每个帐户发送的消息,检测可疑模式。

    • 对于可疑消息和初始注册/最初几条消息,使用验证码:向用户呈现图像/声音,要求用户转录–这对人类来说应该很容易,但对计算机来说很难。

  • 获取被入侵的 Webmail 帐户有多难?

    • 每个帐户的价格:在 Yahoo、Gmail、Hotmail 等上大约为$0.01-0.05。

为什么 Webmail 帐户如此便宜?验证码发生了什么?

  • 对手构建服务来解决验证码;这只是一个金钱问题。

    • 结果相当便宜:每个验证码约为$0.001,延迟低。

    • 令人惊讶的是,这主要是由人类完成的:攻击者可以将工作外包给任何廉价劳动力的国家。[也可以使用亚马逊的 Mechanical Turk:这是一个众包网络服务,允许人类处理计算机难以执行的任务。]

  • 攻击者可以重复使用验证码在另一个站点上,要求正常访客解决它,而不是雇佣某人来解决攻击者。

  • 供应商可以对垃圾邮件发送者实施更频繁的检查,但如果检查太频繁,普通用户可能会感到恼火。

    • 示例: Gmail 允许您启用双因素身份验证。在这种方案中,当您从之前未知的计算机上打开 Gmail 时,Google 会通过短信向您发送验证代码。

点击支持:用户联系 DNS 将主机名转换为 IP 地址

然后,用户联系相关的网络服务器。因此,垃圾邮件发送者需要:

  1. 注册一个域名。

  2. 运行一个 DNS 服务器。

  3. 运行一个网络服务器。

Q: 为什么垃圾邮件发送者要费心使用域名?为什么不直接使用原始 IP 地址来提供内容?

  • A1: 用户可能不太可能点击包含原始 IP 地址的链接?

  • A2: 更强的原因是,使用一层间接性使得保持内容服务器活跃变得更容易。

    • 如果执法机构注销域名或禁用 DNS 服务器,但服务器仍然活跃,垃圾邮件发送者可以注册一个新的域名并创建一个新的 DNS 服务器。

重定向站点:

  • 垃圾邮件 URL 通常指向重定向站点。

    • 免费的重定向服务如 bit.ly 或其他 URL 缩短服务。

    • 受损站点也可以执行重定向到垃圾邮件服务器。

  • 重定向站点很有用,因为垃圾邮件过滤系统可能会将 URL 列入黑名单。

    • 一个受欢迎的站点作为重定向平台非常有用:要阻止垃圾邮件,过滤软件必须将受欢迎的网站列入黑名单!
  • 垃圾邮件发送者有时会将僵尸网络用作网络服务器或代理。

    • 这隐藏了真实网络服务器的 IP 地址;再次间接!

在某些情况下,单个联盟提供商将运行一些或所有这些服务。

Q: 执法机构不能只是关闭联盟计划吗?

  • A: 理论上是的,但要关闭整个组织可能会很困难。此外,还有相当数量的联盟计划。

Q: 关闭单个域名或网络服务器有多困难?

  • A: 取决于注册商或托管提供商[请参见论文中的图 3、4、5]。

    • 只有少数几个注册商为许多联盟提供域名托管;同样,只有少数几个 AS 为许多联盟提供网络服务器托管。

    • 只有少数几个联盟商将他们的域名、域名服务器和网络服务器分布在许多注册商和 AS 之间。

    • 防弹主机提供商更昂贵,但数量众多;即使它们被关闭,相对容易替换。

实现阶段发生了什么?

  1. 用户支付商品费用。

  2. 用户通过邮件收到商品(或下载软件)。

付款协议:几乎总是信用卡。信用卡信息沿着这个流程传输:

 Customer
      |---->Merchant
             |----> Payment processor (helps the
                     |  merchant deal with the
                     |  payment protocol)
                     |
                     |-->Acquiring bank (merchant's)
                            |-->Association network
                                  | (e.g., Visa)
                                  |
                                  |---> Issuing bank
                                        (customer's) 
  • 发卡银行决定交易是否看起来合法,如果是,就会发送批准回来。

  • PharmaLeaks 论文:一些计划每年收入超过 1000 万美元!

对于实物商品,供应商通常会直接将商品运送给购买者(这被称为*“drop shipping”*)。

  • Drop shipping 意味着联盟计划不需要自己储存实物产品。

  • 作者推测供应商很多,因此没有供应端瓶颈。

Q: 为什么垃圾邮件发送者正确分类他们的信用卡交易?

  • A: 协会网络(例如 Visa 或 Mastercard)对错误编码的交易收取高额罚款!可以推测,协会网络不希望因掩盖金融交易的真实目的而惹上麻烦。

Q: 为什么垃圾邮件发送者实际上会发货?

  • A: 信用卡公司跟踪"退单"请求的数量(即客户要求信用卡公司退还涉及破损交易的资金的次数)。

    • 如果退单交易数量过高(>1%),信用卡公司会对此进行处罚。

    • 因此,对于垃圾邮件发送者频繁向客户收费但不发货是不可持续的,特别是如果. . .

    • 只有少数几家银行愿意与垃圾邮件发送者互动!(论文中的表格 V,图 5

      • CCS’12 论文:在 2 年内只见过 30 家收单银行!

      • 因此,一个有效的垃圾邮件预防技术是专注于那些少数几家银行。为什么呢?

        1. 切换银行的成本很高。

        2. 切换的财务风险。

      • 但我们实际上能做些什么呢?

        • 说服发卡银行将这些收单银行列入黑名单?

        • 试图说服这些银行停止与垃圾邮件发送者打交道?这可能有些棘手:“由于知识产权保护存在不一致性,甚至在这些银行所在的国家,像药品这样的商品的销售是否违法都不清楚。”(第四部分.D)

          • 垃圾邮件是令人反感的,但并非总是犯罪

          • 例如,一些联盟客户可能不是来自垃圾邮件,而是来自合法的谷歌搜索!

自这篇论文发表以来,信用卡网络已经采取了一些行动。

  • 论文发表后,一些药房和软件供应商对 Visa 提出了投诉(作者使用 Visa 卡进行垃圾邮件购买)。

  • 作为回应,Visa 进行了一些政策变更:

    • 所有药品销售现在被标记为高风险;如果一家银行作为高风险商户的收单行,那么该银行将受到更严格的监管(例如,银行需要参与风险管理计划)。

    • Visa 的运营指南现在明确列举并禁止非法销售药品和侵权商品。

      • 新语言使得 Visa 可以积极对收单银行进行罚款。

      • 一些联盟计划的回应是要求客户提交身份证明(目的是过滤掉安全研究人员的测试购买)。然而,这会损害销售,因为客户不愿提供他们的身份信息。

伦理

这篇论文是否引起了道德关注?作者是否通过购买他们的商品支持了垃圾邮件发送者?

一些公司发起了“反击”活动,以报复知识产权盗窃,或阻止涉及其机器的僵尸网络。

  • 示例: 2013 年,微软、美国运通、PayPal 和其他一些公司关闭了一个大型僵尸网络。微软随后告知受影响用户应该修补他们的机器。

  • 微软的法律推理:僵尸网络正在侵犯微软商标。越来越多的公司正在使用新颖的法律论点采取行动对抗僵尸网络… 这是一个好主意吗?

参考文献

一些问题可能已经在这里

2011 年测验 2

Q8: 一个“占领北桥”抗议者建立了一个 Twitter 账户以假名广播消息。为了保持匿名,他决定使用 Tor 登录该账户。他从可信来源安装了 Tor 并启用了它,启动 Firefox,输入 www.twitter.com 到浏览器中,然后继续登录。由于他使用 Tor,现在可能有哪些对手能够以某种方式危害抗议者?忽略 Tor 客户端本身的安全漏洞。

A8: 抗议者容易受到恶意出口节点拦截他的非 HTTPS 保护连接的影响。(由于 Tor 明确涉及通过出口节点代理,这比拦截公共互联网上的 HTTP 更容易。)

Q9: 抗议者现在使用相同的 Firefox 浏览器连接到另一个托管讨论论坛的网站,也通过 Tor 连接(但只在建立新的 Tor 电路后)。他的目标是确保 Twitter 和论坛不能勾结以确定同一人访问了 Twitter 和论坛。为了避免第三方跟踪,他在访问不同网站之间从浏览器中删除所有 cookie、HTML5 客户端存储、历史记录等。在没有软件漏洞和大量其他流量的情况下,对手如何能够相关他最初访问 Twitter 和他访问论坛,假设没有软件漏洞,以及大量其他流量到两个网站?

A9: 对手可以通过用户代理字符串、浏览器上安装的插件、窗口尺寸等对抗议者的浏览器进行指纹识别,这可能足以强烈相关这两次访问。


2012 年测验 2

Q2:Alyssa 想要了解在 Tor 上运行的隐藏服务的身份。她计划设置一个恶意的 Tor OR,设置一个在该恶意 Tor OR 上的会合点,并将这个会合点的地址发送给隐藏服务的介绍点。然后,当隐藏服务连接到恶意的会合点时,恶意的 Tor OR 将记录连接来自何处。

Alyssa 的计划会奏效吗?为什么会或者为什么不会?

A2:不会奏效。一个新的 Tor 电路被构建在

6.858 测验 2 复习

医疗设备安全

FDA 标准:如 Semmelweis 所说 => 应该洗手

除颤器:

  • 2003 年:植入式除颤器使用 WiFi。可能出现什么问题?

  • 内部:电池,无线电,密封

为什么无线?

  • 旧方法:在手臂上插入针来扭转拨号,感染风险 😦

Q: 无线安全风险是什么?

  • 不安全的做法 - 实施错误。

  • 制造商和用户设备体验(MAUDE)数据库

    • 死因:输液泵缓冲区溢出。

    • 检测到错误,但进入安全模式,关闭泵。

    • 患者因脑压增加而死亡,因为没有泵,因为缓冲区溢出。

人为因素和软件

为什么独特?

500 多人死亡

例如,用于向患者提供剂量的用户界面未正确指示它是期望小时还是分钟作为输入(hh:mm:ss)。导致数量级错误:20 分钟与预期的 20 小时相比。

管理问题

医疗设备也需要进行软件更新。

例如,McAffee 将 DLL 分类为恶意,隔离,搞乱了医院服务。

例如,使用 Windows XP 的医院:- Microsoft 不再为 XP 提供安全更新,但仍然有新的医疗产品使用 Windows XP。

FDA 网络安全指南

制造商预期看到什么?他们如何考虑安全问题/风险/缓解策略/残余风险?

对手的东西

除颤器和植入物

这节笔记部分涉及 Kevin Fu 讲座中对植入式除颤器攻击的讨论。在他给出的一个例子中,植入式设备通过另一个称为“魔杖”的设备进行无线编程,该设备使用专有(非公开,非标准化)协议。此外,魔杖在特许的电磁频谱上传输(设备侦听),而不是 WiFI 或蓝牙。接下来的两行描述了除颤器如何植入患者的手术过程。

  • 设备通过魔杖编程,使用专有协议在特许频谱上进行通信。(就安全性而言是个好主意吗?)

  • 患者清醒但麻木和镇静

  • 六个人通过血管穿过电极…

  • 患者被给予一个基站,看起来像 AP,与植入物进行专有 RF 通信,数据通过互联网发送到医疗公司

  • 设备和程序员之间的通信:没有加密/认证,数据以明文发送

  • 设备存储:患者姓名,出生日期,制造和型号,序列号,更多…

  • ??? 使用软件无线电(USRP/GNU Radio Software)

Q: 你能通过无线方式诱发致命的心律吗?

A: 是的。设备在 1 毫秒内发出 500V 的电击。例如,被马踢在胸部。

设备通过软件更新修复?

医疗保健提供者

“被困在 Windows XP 的医院”截图:医院中有 600 台 Service Pack 0 Windows XP 设备!

医疗设备感染的平均时间:- 无保护 12 天 - 有防病毒软件 1 年

供应商是感染的常见来源

USB 驱动器是感染的常见途径。

下载上的医疗设备签名。

“点击这里下载软件更新”

  • 网站似乎包含恶意软件。

  • Chrome:安全的网络浏览服务检测到"呼吸机"恶意软件。

"药物混合器"示例:

  • 运行 Windows XP 嵌入式。

  • FDA 期望制造商保持软件更新

  • 制造商声称无法更新是因为 FDA

    • double you tea f?
有意的恶意软件故障有多重要?

例如 1:芝加哥 1982 年:有人在泰诺中投入氰化物 例如 2:有人在癫痫支持小组网站上发布了闪烁图像。

为什么要相信传感器?

例如智能手机。无电池传感器演示。在 MSP430 上运行。微控制器认为来自 ADC 到微控制器的任何东西都是真实的。可能与导线的谐振频率有关的事情?

将干扰注入基带。

  • 在模拟中很难过滤。

  • => 有干扰的高质量音频比麦克风更好。

发送与导线的谐振频率匹配的信号。

将电路视为无意的解调器。

  • 可以使用高频信号欺骗微控制器以为。

  • 由于知道微控制器的中断频率和相关属性,存在低频信号。

心脏设备容易受到基带电磁干扰的影响。

  • 在基带中插入有意的电磁干扰。

发送脉冲正弦波以欺骗除颤器以为心脏正常跳动。

  • ??? 在体外有效。

  • 在体内或盐水溶液中难以复制。

有任何防御措施吗?

  • 在一个心跳之后发送额外的起搏脉冲。

    • 一个真实的心脏不应该发送响应。
在电源插座上检测恶意软件。

嵌入式系统 <--> WattsUpDoc <--> 电源插座。

比安全性更大的问题?

Q: 真或假:黑客入侵医疗设备是目前最大的风险。

A: 错误。患者护理和医疗传感器的广泛不可用性更为重要。

安全性不能被简单添加。

  • 例如在 Windows 95 上进行 MRI。

  • 例如运行在 OS/2 上的起搏器程序员。

在医疗设备等上检查 gmail。

在医疗设备上运行 pandora。

保持临床工作流程可预测。

Tor


资源


概述

  • 目标

  • 机制

    • 流 / 电路

    • 会合点 & 隐藏服务

  • 目录服务器

  • 攻击 & 防御

  • 练习问题


目标

  • 匿名通信

  • 响应者匿名性

    • 如果我运行像 “mylittleponey.com” 这样的服务,我不希望任何人将我与该服务关联起来
  • 部署性 / 可用性

    • 为什么是安全目标?

      • 因为它增加了使用 Tor 的人数,即 匿名集

      • …从而增加安全性

        • (对手有更多人可以区分你)
  • TCP 层 (为什么? 请参见上面的讲座笔记中的解释)

  • 不是 P2P (因为更容易受攻击?)


电路创建

TODO: 定义电路

Alice 将许多 TCP 流多路复用到几个 电路 上。为什么? 低延迟系统,制作新电路昂贵。

TODO: 定义洋葱路由器 (OR)

目录服务器: 网络状态, OR 公钥, OR IPs

ORs:

  • 所有通过 TLS 连接在一起

  • 参见博客文章 1: 权威机构对共识目录文档进行投票

例子:

[ Draw example of Alice building a new circuit ]
[ and connecting to Twitter.                   ] 

会合点 & 隐藏服务

例子:

[ Add an example of Alice connecting to Bob's  ]
[ hidden service on Tor                        ] 

Bob 运行隐藏服务 (HS):

  • 决定长期 PK/SK 对

  • 发布介绍点,广告在查找服务上

  • 构建到 介绍点 的电路,等待消息

Alice 想要连接到 Bob 的 HS:

  • 构建到新的 会合点 (RP) 的电路 (任何 OR)

    • 给 RP cookie
  • 构建到 Bob 的一个介绍点的电路并发送消息

    • with {RP, Cookie, g^x}_PK(Bob)
  • Bob 构建到 RP 的电路,发送 { cookie, g^y, H(K)}

  • RP 连接 Alice 和 Bob

03-14 11:36