【APT】NodeJS 应用仓库钓鱼,大规模入侵开发人员电脑,批量渗透各大公司内网

APT]【社工】NodeJS 应用仓库钓鱼,大规模入侵开发人员电脑,批量渗透各大公司内网

前言

城堡总是从内部攻破的。再强大的系统,也得通过人来控制。如果将入侵直接从人这个环节发起,那么再坚固的防线,也都成为摆设。

下面分享一个例子,利用应用仓库,渗透到开发人员的系统中。

应用仓库

应用仓库对于开发人员再熟悉不过了。apt-get,brew,yum,npm ... 无非就是个命令行版的 App Store,方便各种工具以及依赖库的安装。

他们大致原理都差不多。今天讲解的是 NodeJS 应用仓库 —— NPM 的安全试探。

NPM 平台

如果 NodeJS 只能单机运行,那就和 WScript 差不多了。好在 NPM 平台的出现,让整个社区互动起来。

开发者可以通过 NPM 安装需要的库,用户也可以通过它完成项目的安装。以至于短短几年时间里,数以万计的 NodeJS 项目被发布到 NPM 上,每天都有几千万次的下载量。如此大的用户群体,是否会存在安全隐患?

仓库篡改

最容易想到的,就是 NPM 账号被盗。一旦密码被泄露,攻击者就可以发布项目的新版本。正常用户一旦更新,就安装上了恶意脚本程序。

不过,要获取平台账号谈何容易。而且活跃度高的项目被篡改,很快就会被发现。

仓库钓鱼

改人家的东西肯定不靠谱,那就只能用自己的。但自己凭空创建的项目是毫无人气的,因此得设法引诱部分用户过来。

攻击者可以取一个和活跃项目差不多的名字。例如人气很高的 uglify-js,可以山寨一个叫 uglifyjs 的李鬼。一旦用户拼错了单词,就安装上了冒牌的项目。

为了不让用户发现,可以直接克隆原版项目,让用户能和正常版本完全一样的使用,很难发现其中的破绽。然后在某些隐蔽的模块里做些手脚,一旦用户运行了脚本,其中的恶魔就释放出来了!

相比传统的恶意程序,NodeJS 这种兴起不久、并且高度灵活的语言,防御程序会少的多。

安装时入侵

如果用户发现装错了项目,还没运行就卸载了,是否就无法入侵了?

事实上,NPM 提供了无比强大的功能,甚至可以在安装时就能执行额外的命令

在 scripts 字段里,可以定义各个阶段的命令扩展。

例如 postinstall,即可在仓库包安装完成后执行。

这样,只要用户敲入 npm install xxx 时手一抖,系统就可能被入侵了。

这听起来似乎有些天方夜谭。不过经测试,一个活跃项目的山寨版,每天也有几十到上百的安装量(误装量~)。虽然数量很少,还不到原版的一个零头,但都是潜在的高质量用户。

其中大多都是开发人员,一旦系统被控制,即可渗透到企业内网里。

持续性入侵

一旦开发人员的系统被控制,产生的后果远比想象中的严重。除了各种信息被泄露外,还会有更恐怖的事。

以 uglify-js 为例,如果开发人员安装了钓鱼版本,那么会出现什么后果?

由于它本身就是一个类似编译器的压缩工具,把测试完毕的源代码,转成不可读的黑盒程序 —— 这很有可能就是上线前的最后一步。如果这个环节被黑客操控,那么即使已通过审核的源码,也难逃魔掌了。

也许,钓鱼工具会在压缩后的脚本里插入一段隐蔽的 XSS,开发者不仔细查看很难发现。一旦脚本被发布,线上成千上万的用户就遭殃了。

攻击者不费一兵一卒,直接从最源头攻下这个堡垒。

当然,不仅仅可以感染 Web,其他客户端的更有可能。一些很少关注的开源库,或者头文件代码,都可能是恶意代码的藏身之处。

钓鱼推广

毕竟手误的用户是有限的。为了能扩大感染量,不排除攻击者会主动推广自己的钓鱼项目。

当然,这种推广不会太明显,旁人甚至根本完全感觉不到其中正真的意图。

攻击者可以转载一些近期热门的文章,然后将其中的演示地址替换成自己的钓鱼项目。于是,前来围观的看客们就在毫无防备的情况下一试用,被悄悄控制了。

或者更加直接的,在论坛或社交圈里推广自己的项目,并配上一些亮瞎的文字和炫酷的图片。于是一些好奇心强的人们,正好中了攻击者的下怀。

总结

除了 NPM 外,其他一些无需审核的应用仓库,都有可能出现钓鱼项目的风险。

因此平时安装时,得格外小心。忘记了名字的项目,必须查证后再安装。

同时对于一些来路不明的项目,也谨慎尝试。毕竟,安装一个项目和直接打开一个应用程序其实是一样的!

转自:http://www.cnblogs.com/index-html/p/npm_package_phishing.html

一些讨论:

#1楼2015-03-12 17:49 Agile.Zhou(kklldog)

这么说确实挺危险。

#2楼2015-03-12 19:02 乱码.

mark

#3楼2015-03-12 22:28 薜定谔的朱朱

因此觉得NPM应该加一道安全机制,在运行安装的自定义命令前要求用户确认

#4楼[楼主] 2015-03-13 09:25 EtherDream

@薜定谔的朱朱

有些命令就是 node xxx.js ,你也不知道这个js会做什么

#5楼2015-03-13 12:09 袁腾波

绝非危言耸听,风险无处不在。

#6楼2015-03-14 22:03 ueqt

我写了个npmsafe

https://github.com/ueqt/npmsafe

用npm i npmsafe -g安装后

可以使用npmsafe命令完全代替npm命令

npmsafe会去检测白名单,如果不在白名单内会提示该库上个月的安装数供参考是否安全,并且询问是继续安装还是放弃安装,继续安装可以选择写入自定义白名单

本文“【APT】NodeJS 应用仓库钓鱼,大规模入侵开发人员电脑,批量渗透各大公司内网”,来自:Nuclear‘Atk 网络安全研究中心,本文地址:http://lcx.cc/?i=4517,转载请注明作者及出处!

时间: 2024-11-07 05:56:20

【APT】NodeJS 应用仓库钓鱼,大规模入侵开发人员电脑,批量渗透各大公司内网的相关文章

每位iOS开发人员不容错过的10大实用工具

内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用工具之视频制作 7.iOS开发十大实用工具之分析工具 iOS简介 说起iOS,自然不必多介绍了,它是苹果公司开发的移动操作系统. 苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch.iPad以及Apple TV等产

2 微信开发本地代理环境的搭建--实现将内网ip映射到外网

微信公众号的开发,要搭建网站,并且随时都有可能修改网站内容进行调试,这就需要临时外网能返回本地开发环境搭建的项目进行测试,即内网映射到公网,但是好多开发者没有自己的域名和服务器,这里我们先来搭建一个本地代理环境把服务器地址变为外网能访问的地址: 这里,我对内网映射外网的方法进行了一下简单的总结: 1 ngrok映射工具(失效) 2 nodejs的localtunnel服务(虚拟域名,随机生成,总是变化,不方便) 3 www.tunnel.mobl(失效) 4 QQ浏览器微信调试工具(已下架) 5

Android开发人员官方站点文档 - 国内踏得网镜像

Android Developer 安卓开发人员官方站点无法正常訪问.即使FQ因为网络原因依旧訪问缓慢. 故整理相关字体.脚本.样式.页面资源,在踏得网server上建立了本地镜像.初始镜像时间20140917.不定期更新同步. 内容涵盖可穿戴设备(Android Wear).智能电视(Android TV).汽车(Android Auto)三部分新兴 Android 开发方向. 文档类型包含指南(Guide),培训资料(Training),參考手冊(Reference),实例(Samples)

C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 增加安全性增加内网的电脑才可以调用的限制

大型业务应用系统很容易受到各种攻击,每加上一道防护就可以减少80%-90%的攻击.我们的核心接口组件里也做了一些限制,有些接口方法只有内网的用户才可以调用,防止外网的用户调用,这样安全性会有很大的提升. 只有内网的电脑才可以调用的限制,这样,就防止外面的人非法调用我们的方法,可以提高一些安全性,方法上加上2行代码就可以了至少安全性提高80-90%,多一道防护,少N个攻击.减少致命的黑客攻击,尽量避免无法挽回的损失.

JavaScript开发人员必知的10个关键习惯

还在一味没有目的的编写JavaScript代码吗?那么你就OUT了!让我们一起来看看小编为大家搜罗的JavaScript开发人员应该具备的十大关键习惯吧! 随着新技术的不断发展,JavaScript已经不再仅仅只是一个网络语言.现在,我们能够看到很多使用JavaScript来构建基于本地浏览器的Web应用程序的手机,同时也有非常多的灵活的Web应用程序,如Trello.基于JavaScript打造的应用程序在世界上已经非常流行了. 目前,JavaScript仍然是一门比较容易使用和处理的编程语言

用leangoo看板工具实施多团队大规模敏捷开发

概述 本场景描述的是针对多个Scrum团队/敏捷团队,开发同一款大型产品,或者大型项目的敏捷应用场景.Leangoo多团队大规模敏捷开发模板是基于大规模敏捷模型定义的,可以适配基于Scrum of Scrums, [email protected],LeSS和SAFe等模型.Leangoo多团队大规模敏捷开发模板,在团队级使用的是标准的Scrum模型. Scrum是用于开发和维护复杂产品的一个框架.上世纪90年代,Scrum在全球已得到广泛应用,Scrum最初用于产品研发,目前已广泛用于软硬件开

.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来

微软股票再创新高,市值超越google,仅次于苹果,简洁.优雅.高效的C#语言,神一样的C#创始人Anders Heilsberg,async/await编译器级异步语法,N年前就有的lambda表达式,.NET Native媲美C++的原生编译性能,新一代.NET全面开源.免费.跨平台,支持Windows.Linux.Mac,老板再也不用担心服务器授权费用了,即将发布的Win10一统物联网.手机.平板.PC用户体验,Unity3D跨平台游戏开发引擎(基于C#),Xamarin跨平台开发原生ap

【转载】为什么开发人员工作10年还是很迷茫?

眼看自己大学毕业后都快12年了,也快2个孩子的爸爸了,但是有时候还是会有不少不安全的感觉产生.都快奔35了,技术也过得去,收入其实也很稳定,但是偶尔还是会有迷茫的时候,最近有几个朋友,也发QQ聊天信息,同样有类似的感觉.也稍微揣摩了一下,为啥会有这样的感觉产生? 其实软件开发也是一个行业,当厨师的也是一个行业,一个厨师干了10多年后,会不会变成国家主席?很可能还是厨师,甚至有有可能一辈子都是厨师,软件开发人员也是一个行业而已,也是为人民服务而已,估计厨师也会有迷茫的时候,我们也照样会有迷茫的时候

《转》适用于开发人员的10个最佳ASP.NET的CMS系统

1) mojoportal mojoPortal 是一个开源的.用 C# 编写的站点框架和内容管理系统,可以运行在 Windows 中的 ASP.NET 和 Linux/Mac OS X 中的 Mono 下. 当前的特性 遵循 XHTML 的内容管理 用 WebParts 个性化自己的页面 博客 论坛 事件日历(Event Calendar ) 图像画廊(Image Gallery ) 文件管理 基于数据库.Active Directory, OpenLDAP, Open ID, 或 Windo