

Joe Goldberg
您能否简要介绍一下Malwarebytes的历史和创建方式?
Darren Chinen
我们的CEO和创始人Marcin Kleczynski在其14岁玩视频游戏时,突然发现电脑感染了病毒,但他不想让父母知道,于是,他在互联网上搜索到一些人来帮他清理电脑。所以,在他14岁高龄时,得益于这些人的帮助,编写出了人生第一个恶意软件清理程序。随后,他不断地发展完善该程序,最终在18岁时成立了Malwarebytes。实际上,现在被他称之为英雄的这些人至今仍在Malwarebytes工作。
事实上,我们的使命始终未变。我们绝对无法忍受恶意软件。我们希望打造一个没有恶意软件的世界。我认为,我们的终极目标,也是我们经常谈论的事情,就是让自己破产 — 世界上再无恶意软件,我们也就失去了存在的理由。
Joe
您能否简单介绍一下您所负责的团队在Malwarebytes中扮演怎样的角色?
Darren
我在Malwarebytes负责三个不同的团队。第一个是真正做网站的团队,我们称之为“dub-dub-dub团队”。第二个是基础架构团队。第三个也是我们今天将要重点讨论的团队是数据科学与工程团队。该团队负责处理所有的大数据。我们收集匿名遥测数据流提供的各种各样的物联网数据。您可以将它想象成遍布世界各地的传感器。此外,他们还从事一些数据科学和人工智能工作。
Joe
我认为,大多数人肯定不会将某些事物联系在一起,例如将恶意软件和恶意软件检测与大数据联系在一起,至少不会建立直接联系。您能否谈谈Malwarebytes是如何利用您所收集的数据来抗击恶意软件的?
Darren
在我们的CEO兼创始人Marcin看来,每一个人都享有远离恶意软件的权利,这是他的愿景。他一直免费提供我们的产品 — 直到今天,您都可以免费下载。我们的任务之一就是收集匿名数据,这些数据就像传感器一样,帮助我们了解世界上正在发生的事情以及攻击发生的位置。
这真的很有趣。通过观察几年前的遥测数据,您会发现恶意软件基本上每月更新一次,当然有时候会更短一些。而现在,借助CI/CD(持续集成和交付)等能为软件工程提供支持的现代技术,恶意软件的更新速度几乎缩短到以小时为单位。
因此,通过有效的方式收集、收获和挖掘所有这些数据是非常非常重要的,只有这样我们才能了解情况,我们的公司和系统才能适当进行调整,以应对几乎一天一变的恶意软件。
Joe
研究恶意软件创建者如何利用敏捷软件方法来加速传播恶意软件确实是一件有趣的事情。
Darren
遗憾的是,世界级的软件工程组织 — 在电视节目中,这些家伙都是猫在黑暗的房间里,戴着墨镜,桌旁放着一大袋多力多滋薯片 — 可能与事实相去甚远。实际上,他们都是非常老练的盈利性软件工程组织,拥有赚钱的渠道,可以通过勒索软件等东西来赚钱。因此,他们绝对有必要始终利用最先进的技术。实际上,要想与恶意软件进行斗争,我们必须和他们做得一样好,甚至更好。
Joe
近期,我听到您在谈论贵团队时,不仅限于如何使用AI和机器学习,当然我认为迄今为止,如何利用这些技术仍是每一个人都最关心的事情。但我猜想,您不仅要利用这些尖端技术和方法来构建恶意软件检测工具,而且还希望实现规模性和产业化。您能否详细阐述一下,也许可以与我们的听众分享一下您的做法?
Darren
AI是一项非常有效的技术。我们的终端技术和行为EPR技术都是以AI作为引擎来构建的,并且我们一直都在测试它。我们意识到可以使用AI来构建某种异常检测器。实际上,只要您能缩小问题集的范围,AI便可作为出色的异常检测器发挥作用。机器学习的问题之一在于它是一台机器,对吗?因此,如果您能从总体的高度将其视为一台机器,便能利用它来极为高效地处理特定任务和问题。
例如,您的厨房里可能有只用于烤面包的烤面包机;只用于制作华夫饼的华夫饼机;只用于搅拌的搅拌机。为什么没有像杰森机器人那样的万能机器呢?因为机器擅长非常具体的任务。实际上,建造能像人类一样做任何事情的机器比登天还难。
当您试图确定一台电脑是否被感染时,您必须查看这台电脑的行为,或者说,这是您可以利用的技术之一。现在的问题是,今天人们使用机器或个人电脑的方式大不相同。例如,销售人员使用电脑的方式肯定与营销人员大不相同,而真正搞砸这些电脑的人可能是工程师或运维人员,对吗?
如果我希望了解我的电脑存在哪些异常行为,肯定会查看记录这些电脑上正在发生什么情况的活动日志 — 如果我操作错误或疏忽大意,便会产生两种极端情况。一种是过于敏感,无论工程师和运维人员做了什么,我都会认为,噢,我的天啊,这些家伙正在利用恶意软件来感染我的电脑;而另一种则是不够敏感,认为工程师和运维人员所做的一切都是正常行为。这种情况下,当销售人员遇到黑客入侵时,我根本不会意识到,因为在我看来,这些都是工程师的正常行为。
这归根到底是一个信噪比问题,是恶意软件检测领域必须解决的重大问题之一。我们必须要在做好恶意软件检测工作与避免犯错之间实现更好的均衡。我们称之为误报。如果您在安全行业工作,应该知道我们将误报戏称为灭绝事件,因为它会让你破产的。因此,我们必须非常谨慎地做好检测工作,同时也要避免犯下灾难性的错误。
Joe
您使用的是哪种技术?您的架构是怎样的?有些事情可以帮助您避免误报、从收集到的信号中识别出误报并将其与正常活动的噪音区分开来?
Darren
嗯,我认为这分为几个阶段。第一个是如何获取数据。我们拥有多种不同类型的数据。例如这种物联网类型的数据,我们称之为遥测数据,这些数据实际上只是通过面向公众的内部API来获取的。我们将数据迅速推送到流处理过程中 — 我们使用Kafka和Kafka Streams。然后,我们将能够处理这些数据,我们可以利用公共云中的所有东西,例如,我们可以利用AWS等现有的云服务及其某些功能(如S3和临时处理)来处理大量数据。
我们还有需要从外部API获取的其他类型的数据。为此,我们使用了一种允许我们从某些外部API获取数据的Java框架,以便收集所需的数据来丰富我们通过内部API收集到的大量数据–我更愿意称之为事务型数据。我们在Redis中对这些数据进行一些缓存处理。基本上说,我们的目标是为数据科学家提供一个允许他们真正高效开展工作的适当平台。
Joe
听起来您似乎正在描述很多不同的过程,例如训练模型以及必须以重复的方式完成的事情。这听起来像是另一类必须完成的周期性任务,可能还是长期性的,是这样吗?您能否谈谈工程和交付过程是由哪些环节组成的?
Darren
我认为,这是被很多人所忽视的人工智能的一部分。实际上,科学家们创建了该模型并且取得了成功。设置好之后,它们便可以完美工作了。但是,随着时间的流逝,这些模型的基础数据会发生变化,预测准确性也会降低。因此,您会发现数据科学家有点不知所措,然后他们不得不说:“哦,天哪,我的准确性并没有那么好。”接下来,他们必须要手动重新训练模型并提供另一个模型,这将是一项十分艰巨的任务。
我们发现这是一个可以自动执行的过程。自动化可确保我们的生产AI环境正常启动和运行,并且始终能够根据不断变化的数据做出准确预测。打个比方,我构建了一个用于名人检测的AI模型,并且将所有的名人信息统统馈送到这个模型中 — 假设我们乘坐时光机回到了1990年,然后把1990年至今的所有名人信息悉数馈送到这个模型中并对它进行训练,那么,它将能在1990年做出准确预测。
但是,快进到今天的2019年,如果我尝试在不提供任何新数据的情况下运行完全相同的模型,它将无法准确预测任何事情,对吧?因此,您必须要像构建数据科学实验室那样精心甚至悉心对待生产性AI部署以及不断变化的数据,这一点非常重要。
Joe
您能否具体谈谈哪些工具和组件可以帮助您达到理想的自动化水平,以确保模型始终能够正常运行?
Darren
Control-M帮助我们精心编排好了一切事务。我们也一直在使用Control-M处理所有的大数据。我们还使用Control-M on Snowflake来处理某些结构化数据。我们发现它能很好地协调我们所有的ETL处理、批处理和摄取活动,达到我们所谓的功能预构建(pre-feature builds)程度。接下来,我们希望它能调度模型 — 实际上,我们提取了所有的AM模型,试图让Control-M来调度它们,当然,如果能在容器中执行这项任务,我们肯定不会选择其他地方。
否则,它将在Spark上启动一项作业。这将需要我们对该模型重新进行训练、测试和审批,在此过程中,我们需要反复核查,以确保新的训练确实提高了该模型的预测准确性。然后,我们还要启动另一个流程,以便将这个改进后的模型投入到生产应用中。这是非常繁杂的任务,但Control-M能够帮助我们完美解决核心问题,对所有的工作进行整体上的编排与调度,并且全部是自动完成的。
如果您对BMC产品感兴趣或有任何疑问,请点击阅读全文,填写表单信息,我们的专家将与您联系。




