无论你要防止源代码中的信息泄露,还是要寻找恶意文件、阻止恶意进程、保证端点安全,这几个好用的开源工具都能助你一臂之力。
开源是开发领域的一项壮举。今天,很大一部分的企业或个人都依赖开源软件。但即使开源软件广泛应用于网络、操作系统、和虚拟机,企业安全平台仍然倾向于专用软件并受供应商的私有开发工具的约束。幸运的是,这种传统正在改变。
如果你没有试过用开源软件满足安全需求,意味着你错过了越来越多的免费工具,它们完全可以保护你的网络、主机和数据。而更加重要的是,这些工具中很多都来自活跃的项目,而且来源名头不小、完全可信,最前沿的云安全公司和核心运营商都参与其中。很多工具已经在可以设想的最大、最难的环境中测试过了。
开源始终是安全专家们的工具源泉(比如大名鼎鼎的开源渗透测试框架Metasploit)。然而,信息安全并不仅仅是研究人员、调查人员和分析师的专属领域,下列五个开源的安全工具也不仅仅为这些人服务。IT管理员和软件开发者同样大有可为,这五个工具可以让他们大展拳脚。
一、Commit Watcher:检索代码中的秘密信息
开源库本身不应该保有用户的秘密,但粗心的开发者可能在代码里误留了机密信息。我们都读过有关Amazon网络服务密钥、硬编码的密码或API标识的泄露报告,起因往往就是开发者误把这些机密上传到了GitHub等代码存储库。
为了解决这一问题,SourceClear开发了Commit Watcher,这个免费的开源工具可以在公共和私人Git存储库离查找潜在危险失误。开发人员和管理员都可以使用Commit Watcher监控自己的项目以防止凭证的意外泄露,或是监控公共项目以分辨后者是否存有问题。例如,当一个公共项目进行“修复XSS攻击”的更新时,Commit Watcher将通知开发人员,从而获取该更新依赖的新版本。
Commit Watcher会定期提交项目动态,并查找任何与项目规则所定义的关键字和短语匹配的内容。规则为文件名、代码、评论、作者的名字的正则表达式。Commit Watcher预存了几十个配置规则,用以寻找AWS凭证、Salesforce凭据、SSH密钥、API标识和数据库转储文件。
二、Jak:在Git上加密
这是防止源代码中信息泄露的“开发者必读”。开发者应该将密钥保存在一个配置文件里,然后将配置文件添加到.gitignore以避免被列入代码库。支付环境、邮箱和虚拟机等环境的密钥,你应当亲手放置到应用程序服务器里,保持和源代码的独立管理。当密钥需要共享时,这可以避免问题。
然而,这就导致了一种常现情形:团队的一名成员从代码库下载源代码,并通过带外途径获取密钥,密钥获取方式往往是明文电子邮件、聊天消息、u盘、便利贴,虽然快捷但是很不安全。为了让密钥获取变得既快捷又安全,是否有一种方法能将这些密钥和源代码一同存储在数据库中呢?
Python项目Jak专门解决这个问题,它可以帮助开发人员将敏感文件的加密版本提交到Git。与传统的.gitignore解决法不同,开发者将敏感信息保存在jakfile里,提交的时候Jak可以确保只有加密版本会被上传到库中。Jak将尽职尽责进行文件的加密和解密,并且自动生成并更新加密密钥。一切都是在指令行处理,因此开发人员不需要在提交前加密或下载后解密的时候切换界面。
Jak用于实际开发也许为时过早,但它是一个开发人员应该熟悉的工具。安全新秀Dispel已经内部使用了该工具将其作为项目管家,这可能会减少开发者对Jak的潜在寿命的担忧。
三、Yara:使用格式匹配来发现问题
Yara是VirusTotal的维克多·曼努埃尔·阿尔瓦雷斯领衔开发的开源项目,深受恶意软件研究人员青睐。Yara可以识别和分类恶意文件样本,“模式匹配百宝箱”比直接对恶意软件分类强大得多。它也可以成为事件反应和取证调查的一部分。你需要用文本字符串、十六进制值数或通用描述创建规则,Yara则遍历可疑的目录和文件来寻找匹配的目标。虽然扫描文件是最常见的用法,Yara还可以使用规则来检查运行的进程。
通过Yara的文件分析,卡巴斯基实验室、AlienVault的研究人员能够把索尼的入侵者和去年在亚洲发生的其他袭击联系起来。
常见的攻击方式是:骗子用假文件替换系统文件,建立进入机器的后门。检测系统文件是否完整方法之一是看MD5和SHA-1哈希值。另一种方法是针对多个字符串或系统文件中的值通过建立Yara规则,并定期扫描这些文件。如果扫描不匹配,文件显然已经被替换了,是时候进行调查了。如果攻击者已经将指令界面的副本上传到未知位置,Yara可以找到这些副本。
除了预设规则和自定规则,Yara可以使用开源杀毒工具ClamAV的病毒库和规则库,可以从保持更新的社区YaraRules库获取规则。比如,YaraRules库中包含有用来检测已知包或反恶意进程的预设规则。此外,你也可以将VirusTotal私有API连接到VirusTotal恶意软件库,从而可以扫描到已被上传到VirusTotal恶意软件库中的文件。Yara不需要从指令行界面运行;它有一个Python库,从而可以集成到Python脚本上。
Yara能够发现未许可的文件变更,也能检测已记录的格式(社保号码、管理证书等)是否出现在未授权的地方(如即将送出的电子邮件的附件),因此,Yara可谓功能强大、前景广阔。基于特征码的检测方法仍然具有局限,所以你不能仅仅依靠Yara寻找恶意文件。但是考虑到它的灵活性,你绝对不该错过Yara。
四、ProcFilter:使用格式匹配来解决问题
Yara对于想要分析已感染文件的取证调查人员和事件反应人员来说用途很大。然而,利用Yara积极抵御已知的威胁并不理想。GoDaddy的开源项目ProcFilter则专为解决Windows环境下的这一问题而生。ProcFilter允许您应用Yara规则来运行进程,并基于匹配阻止、记录可执行文件,对受影响文件进行隔离。
ProcFilter作为Windows服务运行,并集成了微软的Windows事件跟踪机制(ETW)的API,所以它可以直接在Windows事件日志里记录其活动。集成也意味着ProcFilter可以用模块创建规则、日志、或检验值,并在匹配到目标时采取相应行动。ProcFilter可以配置为每当进程创建、终止或每当载入图像时,就扫描文件和内存。
ProcFilter并非为了取代防毒方案而生,而是帮助你应对特定的已知威胁。比如,网络钓鱼攻击了一个同行时,如果受袭团队分享了该攻击的Yara标志,别人就可以避免重蹈覆辙,你可以使用ProcFilter找到邮箱中含有匹配信息的邮件,并阻止这些消息传播。而如果你想留意危险Word、Excel、PPT或Adobe文件的话,ProcFilter也可以扫描和记录这些程序产生的所有子流程。
五、OSquery:查询系统状态的端点
想象一下,定位恶意进程、流氓插件或WindowsMacOS和Linux端的软件漏洞,有没有可能仅仅写个SQL查询指令就能实现。这就是OSquery的初衷,这个开源工具由Facebook工程师发明,它被用来将操作系统信息收集到关联数据库中,包括运行中的进程、已加载的内核模块、打开网络连接、浏览器插件、硬件活动、文件哈希表等,都在收集之列。而实现这些根本用不上复杂的代码,一个SQL查询指令,就是你获取安全信息所需的全部操作。
例如,下列查询指令会发现监听网络端口的所有进程:
SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;
这个查询指令会发现在地址解析协议(ARP)缓存里的异常,从而保护IP地址信息和及已分确认的以太网物理地址:
SELECT address, mac, COUNT (mac)AS mac_count FROM arp_cache GROUP BY mac HAVING COUNT(mac)>1;
这比用Python实现简单多了。OSquery用简单而优雅的方式解决了重要的问题(并荣获我们颁布的年度技术大奖)。你需要的组件包括OSqueryi交互式界面、可以和PowerShell并行的内部界面,以及负责低层级主机管理和制定查询计划的后台程序OSqueryd。
IT管理员有很多拒绝使用开源的安全工具的原因。人们会担心技术是否成熟、能否获得配套的支持,然而,更关键的问题是信任。企业不愿依赖完全陌生的开发人员的成果来保护自己的财产。
本文所列的开源安全项目都由可靠的团队所研发,完全值得你拥有。每个工具都解决了一个实际安全问题,而且过程和结果清洁绿色。仅需一个尝试,你工作的方式和工作环境的安全将大不相同。