如何吊打黑客
2018-02-19 21:37:41
  • 0
  • 0
  • 1

小时候,还没有手机,

隐私只是小小的心思,

因为,秘密在屋里头,威胁在屋外头;

长大后,出现了网络,

隐私变成了风中的飘絮,

因为,隐私在网这头,黑客在网那头;

现如今,有了大数据,

隐私已是倒悬的利剑,

因为,秘密在云里头,我也在云里头;

看未来,万物互联了,

隐私早已是网络的仆人,

因为,秘密虽然在屋外头,我却安然地藏在屋里头。

改编自《安全简史》的一段陈述,深刻描述了当今社会网络安全带给人们、家庭和社会的影响,安全问题已经成为我们不可忽略的一个社会问题。作为一名安全从业者或者计算机工程师,我们如何面对安全问题?接下来和大家一起分为三部分讨论安全这个名不见经传却最为重要的话题。

定义安全

首先我们要建立安全的思维模式,对于这个行业的从业者,要注意站在坏人的角度思考。安全人员会观察一个机制然后思考:这个机制有什么作用呢?是不是能利用这个机制来满足其他目的,而不是机制本身被设计要实现的目标呢?一种“思考其他问题”的方式是将每个过程分为一系列步骤,在步骤中采用输入输出的方法思考,这个问题输入是什么?输出是什么?

你正在尝试做什么? 你的安全目标是什么? 这些问题可能看起来很老套,但却不过时。无法正确回答这些问题会导致你花费太多,并且花在错误的地方 (花费太少常常是由于无法正视威胁造成的)。在大多数情况下,不安全的状态通常被认为是一种错误状态。被攻击通常不被认为是错误判断,或者是对手更加强大导致的后果,而被认为是道德的可悲的下降。负责的人并不只是犯错,他们还是被同情的对象。当然这类事情不会发生到我们身上,因为我们是优秀的人,我们选择被计算机——SDEITY,正如以前的UNIX风格的笑话中所说的那样——保护。

现在的书本中相信大家没有看到过教你如何成为一名黑帽子或者教你做坏事,这是一种正确的思想引领,但是作为安全从业者我们都应该知道,每一个安全方面贡献显著的人多少都有一些黑帽子的经历,为好人服务扮演坏人的角色,这对每个人来说都很难。当你试着思考敌人会做什么时,最重要的一个问题是,弱点在哪里。也就是,哪个系统模块更容易被渗透攻击。没有什么确定的方法能够衡量这一点,但是还有一些规律的。

  • 一个从外界接收输入的模块更脆弱。
  • 一个高级模块更容易成为目标。
  • 所有其他条件相同的情况下,系统中更复杂的模块更容易存在安全缺陷。
  • 模块所接收的语言种类越多,就越容易出现问题。

除了攻击目标选择之外,防御者还需要考虑他们的系统如何被利用。在架构阶段,要注意未来长期的趋势,而不是短期的。监听、SOL注入攻击、缓冲区溢出诸如此类,已经伴随了我们多年。我们始终需要注意这些攻击。在一个特定版本中某些模块的特定漏洞,可能会引起人的兴趣,但是处理它又会引出一个复杂的问题。除了更频繁的监控运行之外,也没有太多可以做的事情,只能等到供应商提供补丁。你的服务的可用性重要吗? 是不是要冒风险? 只有你能回答这些问题,你要知道这里有个问题等你的回答。

不过,从一个坏人的角度来看,假设你是一个黑客,并且你已经发现了一个新的漏洞,你会怎样做呢? 攻击一个新目标? 还是多个目标? 等一阵子,然后看一下是不是真的可以用? 一些黑客希望立刻使用: 我现在能偷到什么东西。另外一些,尤其是那些更老练的黑客会从长远来看: 他们使用新代码,还对一些感兴趣的目标做一些初步的渗透测试,即使他们并不能立刻发现任何有用的东西,但是他们会植入一个后门,这样就可以事后再来访问。

我们要定义安全,相对的我们就要定义威胁,清楚谁是我们的敌人,我们想要保护的东西是什么?保护不受谁的攻击?往往我们阻止一类攻击的时候也要考虑其他方面的攻击,在安全方面没有安全策略是全部适用的!

这里有一个攻击可视化模型:

这四种类型的攻击有兴趣大家可以分析他们的特点是什么?他们的攻击方法又是什么?这里不多介绍。

接下来我们确定什么处在威胁之中?通常来说,每台计算机都有一些东西: 身份、带宽以及账户。所有的这些对于一些黑客都有用,当然黑客是否会更看重一个特定的计算机,取决于他们对于这台计算机有什么权限。一台老旧的计算机,但是是用来登录网上银行的,有些人对它也会很有兴趣。此外,非APT攻击的一些特征,意味着可能是随机的。首先做一个假设,所有的计算机都面临风这里的原因 "这台机器上有让人感兴趣的东西” 真的只是一个借口。这个事实是所有风险评估的基准线。

对于一些机器,下一个层次取决于这台机器的特征。有固定IP地址、带宽很好的计算机能够用来进行多种类型的恶意服务 进行钓鱼攻击、数据窃取等。也有很多被用作DDoS攻击,因为它们的高速连接能够向目标发送更多攻击。此外,一些信息认为,地下经济将肉机称为boats,因为能够装载任何东西,它们的负载模块很容易升级,并且十分灵活。今天进行DDoS攻击的机器,明天可能会运行一个 warez 工具,后天可能会运行一个钓鱼网站。

另一个相关的有风险的计算机是哪些连接到真正目标上的客户计算机。盗窃登录密码,或者黑如整个计算机来找一些有用的数据,这也是处在威胁中的设备。

技术

  • 防病毒软件

应当运行杀毒软件吗? 对于普通的桌面系统,答案可能是应当。这是相对便宜又没什么麻烦的方案。类似的,服务器或者防火墙扫描器能够在连接到用户之前阻断恶意软件。不过,要确保你的系统和策略是时常更新的。这些部署对于大多数系统来说都是一种浪费仅仅是因为缺乏任何常用的升级机制。如果一个攻击者能够说服一个设备下载并且运行些文件,你可能会有更多的架构问题。

  • 防火墙和入侵检测系统

我们必须找出如何将我们的安全策略推向边界的方法。这并不是简单地说“我不相信防火墙,这是20年前的东西”。我们需要更好的安全策略——通常是机构安全策略——以及比以前更强的机制,我们只需要改变如何以及在哪里实行这些策略。这可能变成 “带你自己的设备” 行动的真正问题。并不是说顾客的设备就比公司发的设备更不安全,而是公司的IT部门更难把策略安装到顾客的设备上。类似的,他们也没有权限或者知识来这么做,尤其是对于更新的或更少见的设备。

更好的可视化和策略语言能够起到作用。如果公司能把工作环境与游戏环境很好地隔离,并且能够设计一种基于系统的策略语言 (当然用户使用),这个问题就能够避免。这并不简单,因为要以恶意代码无法干扰的方式实现这个功能。

入侵检测和其他的入侵防护通常被认为是最值得采取的方法,因为简单的预防策略还是没有成功,虽然经过了四十多年的努力[Wulfand A.K.Jones 2009]。不过,挑战还是很大的。不仅仅是说IDS需要处理人的一些合法行为,还必须处理软件和技术的变化。一个新的Web浏览器版本可能对每个按键和窗口进行了沙箱,也就产生了与前一版本不同的系统呼叫模式,移动设备的兴起与之类以,例如,通过蜂窝网络阅读邮件将会降低基于本地网络的邮件服务器的使用,因此改变了它的整体特征。这种类型的变化是正常的而且可能是无法避免的,但是同样的包不仅要适应这些改变,还要探测出一些 “低层而且很慢” 的攻击中的微妙的变化。

泄露检测比策略执行更加困难。通常来说,物理访问获胜。很难阻止一个设备的拥有者获取所有的内容。一个可能有用的方法是,供应商安装一个分布式日志系统,甚至在P2P分布式公司文件系统中,一个对文件的请求应当生成一个日志信息,发送到中央存储器中。我会认为,为了安全考虑,日志比传输数据更重要。一个用户可能会再次试着下载,但是可能不会去重新发送丢失的日志信息。

很难预测未来五年后其他的趋势,更别说十年或者二十年后了,人和机构都需要协作这点不会改变,但是协作机制会变。十年前人使用软盘,几十年前,人使用 t卡片,软盘之后,我们发展到了邮件文件的来往 如今协作已经发展到云端,这又会持续多久呢?会不会被P2P机制取代? 如果我在火车或者或飞机上,我可能不愿意通过中间人与后座的人合作,我更愿意使用移动网络,这部分看起来是可行的,但是它如何安全实现呢? 这些交互如何被记录下来呢?

真正需要的是,让安全相关的包或信息被司靠的标记,然后用简单的策略执行,直到这一点能实现之前,所有的机制都会是不完美的。

  • 加密和VPN

在哪里使用加密?普通加密的优势大家都了解,就不再多提。劣势并不总是很明显,有一些问题类似“如果秘钥丢失我该怎么办?”它对于课题加密尤其重要,足以支持一堆的说法:不要加密存储的课题,除非风险是非常大的,如果你加密了,那么请十分小心的保护密钥。如果加密了备份媒体,在恢复文档中记录常用的操作和密钥。

高价值的密钥一定要尽量分布式部署,并且在不需要的情况下从机器上移除。给出机器被攻击的概率,一个长期使用的密钥,例如对于用来签名所有传出邮件的,有很大风险。一个接收人员应当对这个签名的价值评估的低一点,比那种很少使用并且被好好保护的密钥姚笛。在强的密钥存储不存在的情况下(通常意义上的主机很少有这种功能),很强的整体安全就需要区分不同的敏感等级,赋予不同的密钥,并且提供合适的软件,让用户来管理这种复杂性,并参与大量针对用户如何操作的教育和培训

  • 密码和认证

总结一些不同认证机制在处理不同问题时的属性:威胁、以往或者丢失等等

√:没有问题,这种机制的强度     ?:有些问题因部署情况的不同而不同    ×:显著风险    ××:高位风险


让人惊讶的是,这些认证机制没有一个能够在所有情况下都有很好的效果。密码认证,这种普通的机制在授权临时访问或者信任内部一方的时候会做得更好。大多数其他方法集中在处理某些问题上,如用户遗忘密码、攻击者猜测密码,或者通过钓鱼网站捕获密码或键盘记录器。而它们几乎在其他情况下都更弱。实际上,大多数的双重机制也都有缺陷,尽管将密码与其他认证联合,就不会太过于依赖密码,不用密码的真正的好处是,当其他网站的密码被攻破了,你不会有什么安全风险。

  • PKI:公钥基础设施

笔者对这个概念和建设不太了解,暂略(读者见谅)

  • 无线访问

你在和某一个黑客访问同一个节点的时候,他可以很方便地对你实施监听。使用外部网络的时候,要注意风险可能是间接的,可能等你回到家他会感染你的整个家庭网络,一定注意避免接收来自陌生信号源的信号。

在公司内部,WPA2尤其是WPA2企业版,对于网络控制是非常有效的,如果要控制网络密钥的访问团可以选用它。如果一个设备被盗,会有一些风险,但是只有等到被影响的登录被禁用或者修改了密码,这些影响才会解除。当然,智能在WPA2企业版上这么做。另外一个风险是,粗心大意的雇员共享了他的密钥,不过创建内部隧道的风险几乎是相同的。

首先,邮件链接应当被加密。使用一个特定VPN来做这件事是好的,但是很少有设备支持VPN的一些协议,在纯VPN环境下生存是很难的。

另一个方法是仅加密邮件协议: SMTP发送,IMAP和POP3阅读。很幸运的是,所有这些都支持传输层安全 TLS ,TLS 是很安全的,但是它使用公钥基础设施 PKI技术 ,有一定的风险,要恰当地处理和部署。证书锁定能够用在这里,不过很少有邮件客户端支持。不幸的是,一些TLS的部署,尤其是OpenSSL,安全性很难说,把邮件服务器移到防火墙之外的做法值得考虑。更确切地说,在一个 DMZ 中会更好,它们能够从内部和外部进行访问。这样如果被攻击,也会降低整个机构的损失。

认证是一个第二位的问题: 攻击者能够针对邮件服务器发动在线密码猜测攻击,有很多方法: 猜测的频率限制、使用强的邮件密码,等等。一个更好的方法是加密认证,不管是以一种单独认证的方式,还是与传统的密码认证相结合。客户端证书--邮件服务器pki,不是PKI颁发的一一可以用在这里: 它们提供在TLS层的强认证。如果客户端没有证书,就无法到SMTP或者IMAP层,因此无法发动密码猜测攻击或者针对部署的攻击。听起来不错,不幸的是,现在对客户端证书的支持还是很不足的。

  • 云和虚拟化

先来介绍一下沙箱的概念,这是一系列用来显示访问权限的技术,是一个程序的有效目标环境。当然,目的是限制这个程序,如果是一个恶意程序或者别感染,那么会造成jail伤害。

虚拟机的概念这里不多说,大家很了解虚拟机,但是注意一点,VM对所有形式的访问都有货多或少的限制,但是它们很难维护(你有一整个操作系统需要打补丁)。同样,细粒度的安全策略需要更多细致的工作来理解需要哪些资源。它提供了大量的灵活性,但是也很容易出错。如果限制太多,可能会发现在一些情况下应用程序无法运行。如果限制太少,又会造成安全漏洞。让系统管理员来做决定或者让用户来做决定,通常是自找麻烦。

在操作中,强隔离是相对简单的: 即把可疑代码在VM上运行。除了维护问题,这种隔离通常太强了。很难共享信息,即使不考虑创建策略设置的问题。这种强隔离本身就是为什么VM并不是一个很好且常用的沙箱的原因。

在沙箱之间进行共享存在两个问题。第一个问题就是之前提到的策略设置问题。第二个问题更加微妙: 现在在不可信的应用程序和外部世界之间存在一个通信渠道。你必须对从沙箱出来的东西十分小心,从概念上看,这个程序是被你的敌手控制的 (当然,你的敌手技术越高,你就越应当担心),考虑一个简单的双向流。这同一个网络链接完全相同,但是我们已经知道,在网络链接上可能发生很糟糕的事情,从沙箱中出来的东西也好不到哪里去,情况就像是薛定谔的猫的实验,除非你看到沙箱中的进程,在某种意义上,没有发生任何事情。但是在这里,观察者有可能跟那只猫一样死掉。

到现在为止对于云安全问题并没有一个简单的答案。有太多类型的云服务和用模式,每种都有优缺点。不要相信任何对于云安全或不安全的断言。同样,对于沙箱和虚拟化也是相同的,不仅仅是因为有太多不同的使用模式 (因此有不同的安全特性),还有太多不同的部署方式。

对于云存储的风险和收益的平衡选择,通常会倾向于使用云存储,尤其是在同外部人员共享数据的时候。即使有相似的协议进行本地存储,管理外部用户名空间的问题也很麻烦,将这个问题外包的收获,同时也伴随着一个潜在的严重代价: 你对于自己的员工的认证机制尚且只有很少的控制,更别说外部人员了。不过,问题并不是云,而是一个特定的服务是如何提供的,风险可能与你作出了恰当的决定相同。

一个需要认真考虑的对于员工云存储使用的管理。如果员工希望将工作带回家做——其实很多人希望如此——云存储比U 盘更方便做到。这两种方式可能都不符合公司的规定但这两种都很难禁止。不过从根本上说,这是人的问题,并且更是文化问题,而不是技术问题。没错,你可以安装一个插件产品限制USB 的使用,但是这样你就让工作变麻烦了你有没有通过 U盘把准备好的报告交给你的同事? 我肯定有过,并且在这之前有使用 CD和软盘的经历,在大型机构也是如此,同样,你可以试着增加防火墙规则,以阻断对流行的云服务的未授权的连接,但是这很容易可以通过外部的私有服务器进行打,真正的问题是在员工工作习惯或愿望 (并且,可能还有人的评价) 与公司安全策略之间的矛盾。除非你应对的是国家级的安全威胁,否则你还不如试着去寻找一种安全使用云存储的方法,而不是禁止使用云存储。

所有主要的操作系统都有自己的沙箱技术,尽管设计策略十分不同。总的来说,在简单性。因此也就是对于沙箱应用程序的应用和配置——和灵

活性之间进行选择。这意味着很难在不同的操作系统之间移植沙箱,除非假设最小的力度并且进行了恰当的编码。这是Firefox有时候被认为是最不安全的浏览器的原因。它不支持沙箱,因为它在不同平台的沙箱十分不同,这导致了相同的程序在不同的操作系统上安全性不同,反过来说,在选择操作系统上选择灵活性可能在一些部署中是恰当的。

安全操作

如何创建安全系统?其实这个完全是扯淡,没有一个系统绝对安全,不过相对安全的系统由四个方面组成:基本的技术、恰当的编码、良好的设计以及安全的运行。所有的这些都是必须得,任何一个部分的脆弱性都会造成灾难。一个好的系统设计,也要包含失败之后如何控制损失。

如果构建相对安全的系统?

1.针对不同的安全需求应用不同的设计模式

2.尽量控制不可信任的外部链接存在(当然这是不可避免的)

3.采取信任模式,了解谁和谁进行交互?谁能够和谁进行交互?他们之间可能做什么?你信任他们对哪些机器做什么事情以及采用了哪些安全控制措施。

4.结构化防御:注意需要被保护的本质的结构,如果资产能够符合这样一个模型,并且如果你能够发现一些方法来隔离这些敏感信息,同时能够满足机构的主要目的,那么你就能够在应对这些特定威胁时,达到更高的安全性。

5.学会做安全评估

6.注意软件的质量问题,明智地选择软件(满足你的需求,产品的声誉)还有及时更新软件,很多软件的更新是修复上一个版本的漏洞和补丁

7.注意人的风险:以人为中心的风险,一定程度上取决于威胁模型。线下的攻击可能更是针对目标的,因为要付出代价。它们甚至比国家级攻击出现的情况更严重。情报机构在对人的操纵上远比我们想象的要擅长。安全设置在评估人的因素时应该将所有这些都考虑进去,人、人的背景、技术以及在使用技术的时候,所有这些都会变化。


本文章内容参考《阻击黑客》Steven M.Bellovin著,由这本书引发的一些思考和感悟,希望大家喜欢。

 
最新文章
相关阅读