前言

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

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

应用仓库

应用仓库对于开发人员再熟悉不过了。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 外,其他一些无需审核的应用仓库,都有可能出现钓鱼项目的风险。

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

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

【社工】NodeJS 应用仓库钓鱼的更多相关文章

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

    APT][社工]NodeJS 应用仓库钓鱼,大规模入侵开发人员电脑,批量渗透各大公司内网 前言 城堡总是从内部攻破的.再强大的系统,也得通过人来控制.如果将入侵直接从人这个环节发起,那么再坚固的防线, ...

  2. 常见社工破解WPA2密码方法及防范措施

    0×00前言 何为社工?社工是一种通过利用受害者心理弱点,如本能反应.好奇心.同情心.信任.贪婪等进行诸如欺骗.盗取.控制等非法手段的一种攻击方式.在无线安全中也可以利用社工做到许多非法操作.下面举几 ...

  3. 我是如何社工TDbank获取朋友隐私的

    原创 ziwen@beebeeto 转载请保留本行 个人感觉 国外的安全方面对社工的了解和防范并不是很好 即使他们使用社工的时间比我们要长很多 比如 他们的visa在pos机上使用是不需要密码的 而且 ...

  4. python 模拟ajax查询社工库...

    在windows中使用,输入有关信息查询社工库,本来是网页版的,我把ajax请求提取出来.粗略的封装下,挺好玩. #coding:utf8 import urllib2,urllib from Bea ...

  5. 社工数据搜索引擎搭建 - Build Social Engineer Evildata Search Engine

    如何设计搭建一个社工库 从初起设计一个社工库,到现在的Beta,前前后后零零整整花了不下一个月的时间,林林总总记录下来,留给需要之人 泄露数据库格式不一,长相奇葩,因需将用户名.密码.邮箱.哈希等信息 ...

  6. 社工工具包 SEToolkit

    社会工程学(Social Engineering)简称社工,其通过分析攻击对象的心理弱点,利用人性的本能反应,以及任何好奇心,贪婪等心理特征进行的,使用诸如假冒,欺骗,引诱等多种手段来达成攻击目标的一 ...

  7. bugku 社工进阶

    首先看到的是 由于之前知道有bugku的百度吧   并且这个是一个社工题所以可以试一下这个百度吧 进入百度吧然后会见到 这句话的意思是要我们登录这个账号 但是我们只有账号没有密码  如果爆破的话很有可 ...

  8. Bugku-CTF社工篇之简单的社工尝试

  9. Bugku-CTF社工篇之王晓明的日记

随机推荐

  1. SQL Server中的高可用性(2)----文件与文件组

        在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

  2. .NET Core系列 :4 测试

    2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...

  3. Java基础Collection集合

    1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解) 2.学习集合从Collection开始,所有集合都继承了他的方法 集合结构如图:

  4. SQL Server常见数据类型介绍

    数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...

  5. Android学习探索之Java 8 在Android 开发中的应用

    前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...

  6. .NET Core的日志[2]:将日志输出到控制台

    对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,Consol ...

  7. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  8. 利用apply()或者rest参数来实现用数组传递函数参数

    关于call()和apply()的用法,MDN文档里写的非常清晰明白,在这里就不多做记录了. https://developer.mozilla.org/zh-CN/docs/Web/JavaScri ...

  9. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  10. 解决WINDOWS防火墙开启后Ping不通

    WINDOWS系统由于安全考虑,当开启防火墙时,默认不允许外主机对其进行ping功能,即别的电脑ping不通本机.别的主机ping不通本机是因为本机的防火墙关闭了ICMP回显功能,只要把这回显功能打开 ...