前言

在之前的BlackHat 2018大会上公布了一款针对PHP应用程序的全新攻击技术。我们将通过这篇文章简单介绍下。

来自Secarma的安全研究员Sam Thomas发现了一种新的开发技术,它可以导致PHP对象注入漏洞——而无需使用PHPunserialize()函数。这项新技术是在BlackHat 2018大会上公布的,利用元数据。让我们创建一个Phar文件,并添加一个包含一些数据作为元数据的对象:

// create new Phar
$phar = new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'text');
$phar->setStub('');
// add object of any class as meta data
class AnyClass {}
$object = new AnyClass;
$object->data = 'rips';
$phar->setMetadata($object);
$phar->stopBuffering();

我们新建的test.phar文件有以下内容。我们可以看到对象被存储为一个序列化的字符串。

1.png

PHP对象注入

如果现在通过phar://对我们现有的Phar文件执行文件操作,则其序列化元数据将被反序列化。这意味着我们在元数据中注入的对象被加载到应用程序的范围中。如果此应用程序具有已命名的AnyClass类并且具有魔术方法destruct()wakeup()定义,则会自动调用这些方法。这意味着我们可以在代码库中触发任何析构函数或wakeup方法。更糟糕的是,如果这些方法对我们注入的数据进行操作,那么这可能会导致进一步的漏洞。

class AnyClass {
    function __destruct() {
        echo $this->data;
    }
}
// output: rips
include('phar://test.phar');

利用

首先,攻击者必须能够在目标Web服务器上植入一个Phar文件。Sam Thomas发现了一个如何将Phar文件隐藏到JPG文件中的技巧,因此只要常见的图片上传功能就足够。但这并不重要,因为如果攻击者可以在ìnclude()fopen()file_get_contents()file()等操作中控制完整的文件路径,那么将会造成严重的安全漏洞。因此,通常会在用户输入中验证这些功能。但是现在攻击者可以通过phar://注入并获得代码执行。

到目前为止看起来无害的代码示例:

file_exists($_GET['file']);
md5_file($_GET['file']);
filemtime($_GET['file']);
filesize($_GET['file']);

总结

通过RIPS的分析,我们可以自动检测用户输入是否在PHP文件操作中未经验证。

这样,我们检测是否存在文件删除、文件泄露、文件写入,文件操作,文件创建、文件包含(等等)漏洞。

检测漏洞

此外,RIPS对敏感字符串分析使我们能够精确评估文件路径是完全还是由攻击者控制,以及是否可以phar://注入。最后,我们在RIPS代码分析器中添加了一个名为Phar Deserialization的新漏洞类型,以检测这种新类型的代码风险。

*参考来源:

页首配图

前言

就在前段时间的BlackHat黑客大会上,来自Secarma的安全研究专家Sam Thomas介绍了一种可导致严重PHP对象注入漏洞出现的新型漏洞利用技术,这种技术不需要使用到unserialize()这个PHP函数,虽然这是一种PHP反序列化漏洞,但它并不像大家所知道的那样。在这种技术的帮助下,攻击者将能够提升相关漏洞的文件严重性,并最终实现远程代码执行。

不过大家不用担心,RIPS已经将这种新型的攻击类型增加到RIPS代码分析引擎之中了,感兴趣的同学可以点击【这里】查看RIPS代码分析Demo。

流封装器

在访问一条文件路径时,大多数PHP文件操作都允许使用各种URL风格的封装器,例如data://、zlib://或php://。其中的某些封装器通常都会被攻击者用来利用某些潜在的远程文件包含漏洞,一旦利用成功,攻击者将能够控制目标文件的完整文件路径。比如说,封装器可以注入某些资源路径,或注入需要直接执行的恶意PHP代码:

include($_GET['file'])

include('php://filter/convert.base64-encode/resource=index.php');

include('data://text/plain;base64,cGhwaW5mbygpCg==');

Phar元数据

但是目前为止,还没有人关注过phar://封装器。之所以我们注意到了Phar文件(一种PHP文档),是因为这种文件所包含的元数据采用的是一种序列化格式。接下来,我们一起创建一个Phar文件,并向其中添加一个包含数据的对象来作为元数据:

//create new Phar

$phar= new Phar('test.phar');

$phar->startBuffering();

$phar->addFromString('test.txt','text');

$phar->setStub('<?php__HALT_COMPILER(); ? >');

 

//add object of any class as meta data

classAnyClass {}

$object= new AnyClass;

$object->data= 'rips';

$phar->setMetadata($object);

$phar->stopBuffering();

我们新创建的这个test.phar文件现在拥有如下所示的内容,我们可以看见我们新添加的对象会以序列化字符串的形式进行存储:

以序列化字符串的形式进行存储

PHP对象注入

如果一个文件操作是通过phar://封装器来对我们的Phar文件进行的话,文件所包含的序列化元数据将会被反序列化。这也就意味着,我们在元数据中注入的对象将会被加载到应用程序上下文中,如果目标应用程序有一个名叫AnyClass的类,并且定义了类似__destruct()或__wakeup()这样的方法,那么这些方法将会自动被调用。因此,我们将能够触发代码中任意的销毁方法或唤醒方法。更严重的是,如果这些方法能够直接对我们注入的数据对象进行操作的话,将导致更严重的漏洞出现。

class AnyClass {

       function __destruct() {

              echo $this->data;

       }

}

// output:rips

include('phar://test.phar');

漏洞利用

首先,攻击者必须要制作一个Phar文件,并将其存储在目标Web服务器中。但是Sam Thomas发现原来可以将Phar文件隐藏在一个JPG文件之中,所以这一步可以直接利用常见的图片上传功能来实现。

目前来说,还不足以造成严重的影响,因为如果攻击者可以在类似include()、fopen()、file_get_contents()和file()这样的操作中控制完整的文件路径,那么这已经暴露了一个严重的安全漏洞了。因此,这些函数在处理用户输入数据时肯定会进行各种验证。

不过,phar://封装器在进行任意文件操作时都会触发反序列化行为,因此类似file_exists()这样的文件操作虽然只会检查文件是否存在,这样的实现不仅没有考虑安全风险之类的问题,而且也没有采取任何的保护措施。因此,攻击者将能够注入phar://封装器并获取到代码执行权限。

下面给出的是目前看似无害的代码段:

file_exists($_GET['file']);

md5_file($_GET['file']);

filemtime($_GET['file']);

filesize($_GET['file']);

RIPS的自动检测机制

在RIPS的帮助下,我们将能够对未经过滤或验证的用户输入数据(针对PHP文件的操作)进行自动化检测。这样一来,我们就可以检测文件删除、文件披露、文件写入、文件篡改、文件创建和文件包含漏洞。

RIPS的自动检测机制

除此之外,RIPS的上下文敏感字符串分析功能也可以帮助我们精准判断文件路径是否可以被攻击者部分或完全控制,以及是否可以注入phar://封装器。更加重要的是,RIPS甚至还可以检测到潜在的对象注入漏洞利用链。

RIPS的研究人员已将这种类型的PHP对象注入攻击标记为了Phar Deserialization,RIPS代码分析器目前已支持检测这种类型的代码风险。

* 参考来源:ripstech,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

前言

8 月 22 日,一个名不见经传的游戏God.Game发出通告,声称遭遇黑客攻击,游戏内的以太币被黑客全部转走。这一消息一时间传遍各大媒体以及讨论群,人们在质疑相关游戏安全性之余,也在揣测项目方动机,一时间难以分清到底是黑客攻击,还是游戏开发方留有后门跑路。

安比(SECBIT)实验室的小伙伴在得到消息后,迅速开展了追踪分析。

God.Game简单规则如下:GOD股份购买的所有数量的10%被征税并且作为被动的ETH收入分配给所有GOD所有者。

通过游戏官网规则,以及合约源码分析,不少人会认为God.Game是PoWH3D的直接仿品,安比(SECBIT)实验室仔细分析后发现,它其实是综合“借鉴”PoWH3D和Zethr的混合仿品。

PoWH3D是最近大热的Fomo3D游戏团队上一款作品。而Zethr则是在PoWH3D基础上进一步开发优化,新增不同玩法的另一款热门游戏。二者在玩法规则层面的细节差别,这里不做讨论。

God.Game游戏漏洞本身不复杂,不少安全公司也发出相关攻击手法的短篇快讯消息,部分不够详尽,安比(SECBIT)实验室通过本文全面分析该漏洞,重点分享漏洞追踪和定位的详细过程与大家讨论交流。

疑点一:攻击是无意还是刻意

一下子提走合约内所有以太币的人,是参与游戏过程中无意发现了漏洞,还是刻意进行的操作?

安比(SECBIT)实验室认为是后者,因为分析下来,该漏洞虽然隐藏不是很深,但实际触发需要一系列组合操作(类似玩游戏按上上下下左左右右开启作弊),正常游戏玩家的普通参与几乎不可能触发漏洞。安比(SECBIT)实验室分析攻击者的交易记录,发现其手段十分娴熟,目的性极强,明显是奔着该漏洞而来。

疑点二:攻击者的时机选择

攻击者为什么恰好选择在奖池金额243个以太币时发动攻击?

攻击发生时刻

上面是游戏合约账户余额趋势图,横坐标是区块高度,纵坐标是God.Game合约账户余额。此图可反映随着时间推进,入场资金情况。安比(SECBIT)实验室发现,God.Game合约部署上线后,合约资金量长期一直在 50 以太币以下,但在6179500区块高度以后,入场资金开始猛增到接近260个以太币(大量韭菜入场),随后略有衰退(一部分人选择提现退出),进入一段很长的调整停滞期。

无论是Fomo3D还是PoWH3D,这类庞氏游戏最早期入场资金优势都很大,可以较快速回本。后续只有在持续大规模地运营宣传下,才可能有大量新资金入场参与游戏。因此游戏第一时间内的入场资金,基本决定了游戏资金量的总体规模。

而攻击者正是在资金规模就快回升到前期高点时,果断出击,利用漏洞果断提走游戏内的所有以太币。于是形成了上图类似“高台跳水”的有趣情景。

这蹊跷的手法、这迷人的走势是不是有些眼熟?

疑点三:是漏洞还是后门

到底是无意引入的漏洞还是刻意暗留的后门?

前面提到,God.Game游戏代码重度参考了PoWH3D和Zethr。而与漏洞相关的关键函数名transferFromInternal()只在Zethr合约代码中有出现。

相关的关键函数

上图所示问题代码,“创新”地增加了一组关于转账双方是合约、还是普通账户的分支情况处理。面对这一串冗长的代码,只要清楚PoWH3D工作原理,就很容易能发现此处代码逻辑根本说不通,也无法在游戏实际规则中找到适配点。并且这种根据账户类型分别处理账本的逻辑在原版PoWH3D和Zethr中根本没有出现。

God.Game代码此处函数命名仿照了Zethr,但是具体变量名却是仿造Fomo3D,代码风格十分诡异。可以推断以下两种情况:代码作者有可能是因为没有理解PoWH3D游戏机制引入了漏洞;也有可能是故意增加代码混乱度来迷惑他人,以达到埋藏后门之目的。

埋藏后门

特别地,安比(SECBIT)实验室还发现同样是transferFromInternal()函数,God.Game代码中唯一与Zethr相近的地方,就是上图示例中针对ERC223代码做的回落处理,似乎是想通过引入此段代码(需要判断目标地址是否是合约)来为前面提到的不合逻辑代码打掩护。

异常:飙升的Token售价

下面让我们进入安比(SECBIT)实验室安全研究员sha3的第一视角,让TA为你拨开漫漫迷雾找出漏洞。

GoodLuck Have Fun.

我们首先进入游戏首页,发现单个God token的售价已经飙升至300ETH,而被God.Game抄袭的火爆原版游戏PoWH3D的单价才0.02ETH,面对不寻常的数值,敏感的安比(SECBIT)实验室小伙伴首先怀疑该游戏合约可能存在整数溢出漏洞。

为了考证我们的想法,我们想到了回溯God.Game过往的售价变化过程(感谢区块链技术,让我们无法消灭历史),寻找在何处触发了整数溢出漏洞。

通过遍历区块历史数据,发现在6182409高度时,buyPrice/sellPrice等数据飙升,于是我们便仔细分析该区块中和God.Game相关的交易。

分析发现,在6182409区块中,唯一和God.Game产生关联的交易是0x368688a944059fdd657e7842d8762b05250bd45f3a2a16cbae1b29727023b00f。

在该交易中,0x2368Beb4调用0x7f325EfC的reinvest()后,继而调用了0xca6378fc中的reinvest(),(通过简单的逆向分析,我们暂时认为0x7f325EfC是一个简单的代理合约,实现了God.Game游戏的基本接口)。

一番操作:定位到攻击源

我们不禁问道,为何调用一次reinvest()就可以将游戏中的各个数据全部暴增,我们怀疑创建这个合约的账户就是攻击者。

顺着这条线索,我们观察到这个合约的创建者,即0x2368Beb4,在6182409高度之前通过合约0x7f325EfC进行了另外几次操作。

具体操作历史如下:

区块高度 From To call
6182399 0x2368Beb4 0xca6378fc transfer(address,uint256)
6182399 0xca6378fc 0x7f325EfC tokenFallback(address,uint256,bytes)
6182403 0x2368Beb4 0x7f325EfC withdraw() 3ccfd60b
6182403 0x7f325EfC 0xca6378fc withdraw() 3ccfd60b
6182403 0xca6378fc 0x7f325EfC  
6182406 0x2368Beb4 0x7f325EfC transfer(address,uint256)
6182406 0x7f325EfC 0xca6378fc transfer(address,uint256)
6182409 0x2368Beb4 0x7f325EfC reinvest() fdb5a03e
6182409 0x7f325EfC 0xca6378fc reinvest() fdb5a03e
6182419 0x2368Beb4 0x7f325EfC sell(uint256)
6182419 0x7f325EfC 0xca6378fc sell(uint256)
6182439 0x2368Beb4 0x7f325EfC transfer(address,uint256)
6182439 0x7f325EfC 0xca6378fc transfer(address,uint256)
6182462 0x2368Beb4 0x7f325EfC transfer(address,uint256)
6182462 0x7f325EfC 0xca6378fc transfer(address,uint256)

再看看reinvest()函数调用时产生的event。

产生的event

我们看到了0000000000000000fffffffffffffffffffffffffffffffffffcf2ac578ec8d9这个极像溢出的值。

随即我们打开God.Game源代码,搜寻其中的蛛丝马迹。

我们将目标锁定到reinvest()函数。

function reinvest()    
onlyProfitsHolders()
public
{
    // fetch dividends
    uint256_dividends = myDividends(false);
    // retrieve ref. bonus later in the code
    // pay out the dividends virtually
    address_customerAddress = msg.sender;
   payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
    // retrieve ref. bonus
    _dividends +=referralBalance_[_customerAddress];
   referralBalance_[_customerAddress] = 0;
    // dispatch a buy order with the virtualized "withdrawndividends"
    uint256 _tokens= purchaseTokens(_dividends, 0x0);
    // fire event
    emit onReinvestment(_customerAddress, _dividends, _tokens);
}

首先大概浏览一下reinvest()函数主体,仅有两个简单的加法,但是通常在减法溢出中会出现巨型整数,我们便开始探索reinvest()调用的函数。

首先引起我们注意的便是myDividends(false)函数,由于参数传入了false,我们就直接研究它最终调用的函数dividendsOf(_customerAddress)。

function dividendsOf(address_customerAddress)    
view
public
returns (uint256)
{
    return (uint256)((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress])/ magnitude;
}

Aha,看到减法了!

会不会就是在这里发生了溢出呢?

历史回放:精确找到溢出点

带着这样的疑问,我们回溯了0x368688a944059fdd657e7842d8762b05250bd45f3a2a16cbae1b29727023b00f这笔交易的trace,我们跟着静态分析结果,直接在trace中将PC指针定位到了dividendsOf函数中。

将PC指针定位

将PC指针定位

发现在0x0a8c指针处执行了sub指令,并且sub指令在栈上的两个参数分别为0和0x30d53a87137270000000000000000减法、除法执行完毕后栈顶变成了0xfffffffffffffffffffffffffffffffffffcf2ac578ec8d9,和event中的值完全相同。

果然,我们找到了发生溢出的地方,并且确定reinvest()函数使用了溢出后的值。

顺藤摸瓜:推理怎么构造溢出条件

那么问题来了,我们有什么办法能让这个减法溢出呢?

回想sub指令的参数:

1.第一个参数0对应profitPerShare_ *tokenBalanceLedger_[_customerAddress]

2.第二个参数0x30d53a87137270000000000000000对应payoutsTo_[_customerAddress]

思路来了,我们需要达成2个目标

1.使得profitPerShare_ *tokenBalanceLedger_[_customerAddress]的计算结果为0,

2.使得payoutsTo_[_customerAddress]中存储的值为正数。

首先我们看目标1,对于profitPerShare_变量,纵观全部代码,只有增加没有减,无法有效地将这个值变为0,那么只有tokenBalanceLedger_[_customerAddress]才能给我们修改的机会。

然后目光看向目标2,payoutsTo_[_customerAddress]必须设置为正值。

我们看到在transferFromInternal()、withdraw()函数均中对该值有操作,不由得想到了上文看到攻击者的4步组合拳,这4步具体发生的操作如下:

1.transfer (攻击者调用God.Game合约的transfer函数将token转移到到攻击者创建的合约)

2.withdraw (攻击者调用代理合约的withdraw函数,代理合约调用God.Game的withdraw函数讲ETH提入代理合约)

3.transfer (攻击者调用代理合约的transfer函数,将God.Game中代理合约的token转移到攻击者账户)

4.reinvest (攻击者调用代理合约的reinvest函数,代理合约调用God.Game的reinvest函数触发溢出)

谜底揭开:漂亮的组合拳

我们不妨看看在God.Game合约中发生了什么?

攻击者第1:从自己账户转移token到合约,触发transferFromInternal函数中的第一个else if分支:

else if (fromLength <= 0 &&toLength > 0) {    
    // human to contract
   contractAddresses[_toAddress] = true;
    contractPayout += (int) (_amountOfTokens);
    tokenSupply_ = SafeMath.sub(tokenSupply_, _amountOfTokens);
   payoutsTo_[_from] -= (int256) (profitPerShare_ * _amountOfTokens);
}

攻击者将自身的payoutsTo_[_customerAddress]被减为负数,紧接着修改`tokenBalanceLedger_[from/to]进行普通的token转账操作,给代理合约一些token以便拥有dividens。

攻击者第2:代理调用withdraw(),payoutsTo_[_customerAddress]值增加。

攻击者第3:将代理合约的token转移到攻击者账户,触发transferFromInternal中的if分支:

if (fromLength > 0 &&toLength <= 0) {    
    // contract to human
   contractAddresses[_from] = true;
    contractPayout -= (int) (_amountOfTokens);
    tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
   payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens);       
}

攻击者的payoutsTo_[_customerAddress]值增加,同时将代理合约中的token全部转移到攻击账户中。

可以看到,这3步组合让代理合约满足了减法溢出所需条件:

1.通过第1、第3两步将代理合约的tokenBalanceLedger_[_customerAddress]值为0;

2.通过第2步将payoutsTo_[_customerAddress]值置为正数。

攻击者第4,猛烈一击,调用reinvest()触发dividendsOf()的减法溢出,攻击者获取巨量的dividens,将divisions转换为token。

由于token数量过多,合约储备金额不够withdraw(),攻击者便将部分token转移到0xC30E89DB73798E4CB3b204Be0a4C735c453E5C74,通过0xC30E89DB73798E4CB3b204Be0a4C735c453E5C74进行sell操作卖出token换取ETH,合约储备金面对巨量增发的token,瞬间消耗殆尽,攻击者成功提取了几乎所有的ETH。

Good Game.

God.Game风波带来的思考

近来各类山寨版本智能合约游戏盛行,已经发生很多起安全事件,安比(SECBIT)实验室不久前已针对Fomo3D和Last Winner进行了一系列详细的漏洞披露和解析。而这次God.Game甚至上线不久就宣告被黑客攻击游戏结束,很多玩家的投入无法兑现,导致出现一些「游戏(投资)群」秒变「维权群」的闹剧。

安比(SECBIT)实验室提醒广大智能合约游戏爱好者,务必要擦亮双眼,提高安全意识,谨慎参与不明游戏(小心漏洞与后门),并且对于任何游戏都不要投入超出承受能力范围的资金。

游戏智能合约在一定程度上比一般Token合约更复杂,一些漏洞会隐藏得更深,触发条件更苛刻。很多游戏甚至会有更高层次的关于公平性、博弈机制的漏洞存在,需要从游戏模型设计、代码实现等各种角度进行安全评估。安比(SECBIT)实验室建议所有负责任的智能合约游戏开发商,都应该提高安全意识,加大安全投入。

参考文献

[1] God.Game合约地址,https://etherscan.io/address/0xca6378fcdf24ef34b4062dda9f1862ea59bafd4d

[2] PowH3D(P3D)合约地址,https://etherscan.io/address/0xb3775fb83f7d12a36e0475abdd1fca35c091efbe

[3] Zethr(ZTH)合约地址,https://etherscan.io/address/0xD48B633045af65fF636F3c6edd744748351E020D

[4] BCSEC:GodGame漏洞原理以及黑客攻击手法分析,https://bcsec.org/index/detail/tag/2/id/252

[5] 安比实验室:Fomo3D千万大奖获得者“特殊攻击技巧”最全揭露,https://mp.weixin.qq.com/s/MCuGJepXr_f18xrXZsImBQ

[6] 安比实验室:智能合约史上最大规模攻击手法曝光,盘点黑客团伙作案细节,https://mp.weixin.qq.com/s/YBG8YyPwh374HbGWcUKTdQ

以上数据均由安比(SECBIT)实验室提供,合作交流请联系[email protected]

关于安比(SECBIT)实验室

安比(SECBIT)实验室专注于区块链与智能合约安全问题,全方位监控智能合约安全漏洞、提供专业合约安全审计服务,在智能合约安全技术上开展全方位深入研究,致力于参与共建共识、可信、有序的区块链经济体。

*本文作者:安比实验室SECBIT,转载请注明来自FreeBuf.COM

前言

近日,来自国外的研究人员提出了一种新的技术,可以从智能灯泡获取用户的数据。举个例子,研究人员能够从远处记录智能灯泡的亮度模式来获取用户的偏好。

页首配图

黑客不需要入侵用户的内部网络来提取信息,但需要满足以下条件才能行动:

使用的设备要能够直接观察到目标智能灯泡;

智能灯泡需要支持多媒体可视化和红外等功能。

“看见”用户的音乐和视频

来自德克萨斯大学圣安东尼奥分校的Anindya Maiti和Murtuza Jadliwala研究了LIFX和飞利浦Hue智能灯泡如何接收指令来实现各种显示效果,并开发了一个模型来解释用户在听音乐或观看视频时,联动的智能灯泡发生的亮度和色彩调制。

在播放音频时产生的可视化效果,其亮度等级反映音源情况,而在播放视频时则可反映当前视频帧中的主要颜色和亮度级别。智能灯泡应用程序通过向灯泡发送特殊格式的数据包来控制显示效果。

两位研究人员创建了一个模型,只要输入歌曲个视频亮度模式的数据库,就可以通过捕获的目标智能灯泡信息得出参考结论。

联动效果

与电影联动的LIFX可视化效果

个人设备数据泄露

在某些特定条件下,还可以从个人设备中提取信息,但此时对光线变化的简单观察是不够的,需要满足以下条件:

灯泡需要支持红外照明;

无需授权即可通过本地网络控制它们;

在本设备中植入恶意软件,对目标设备的私人数据进行编码并将其发送到智能灯泡。

室内和室外观察点

室内和室外观察点

研究人员使用两个观察点来捕获数据:室内和室外。在音高发生变化时,振幅和波长也相应地发生了变化,如此一来智能灯泡(LIFX)发出的可见光和红外光谱就可以被设备捕获,进行解码。

为了测试通过红外发射获取数据的方法,研究人员选择发射源对图像进行编码,并在不同距离对智能灯泡进行观察并解码数据。

从下图可以看出,随着视距变远,解析得到的图像质量也相应变差,但是在50米的距离上仍能获取有效的信息。

图片信息

总结

虽然两位研究人员的工作是实验性质的,但它表明使用红外线或可见光仍可从相对较远的距离上窃取有意义的信息。

防御这些攻击的方法比较简单,拉上窗帘或者选择透光率低的窗户玻璃也是一种充分的防御措施。

*参考来源: Bleeping Computer,Freddy编译整理,转载请注明来自 FreeBuf.COM。

*本文作者:feiniao,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

前言

近日,“云悉”互联网安全监测平台监测到大量企事业单位及高中专院校大量出现博彩类信息,大量网站其页面被植入博彩信息。笔者对这些被攻击的网站以及手法进行了一番探究。

1. 情况说明

近日,“云悉”互联网安全监测平台监测到大量企事业单位及高中专院校大量出现博彩类信息,大量网站其页面被植入博彩信息,详细如下:

监测网站被植入博彩情况

监测网站被植入博彩链接情况

网站首页出现博彩信息网站首页出现博彩信息网站首页出现博彩信息

网站首页出现博彩信息

2. 入侵分析

2.1 分析思路

对这些被植入博彩信息的网站进行分析,发现其被入博彩信息内容基本一致,怀疑为同一黑客团伙所为,既然同一波黑客,其肯定为利用相同漏洞批量进行操作。对这些网站指纹进行分析,发现其指纹基本上都有某网站管理系统。

被黑网站指纹情况被黑网站指纹情况被黑网站指纹情况

被黑网站指纹情况

既然这些被黑网站大多使用某网站管理系统,其作为IDC,其服务器下部署大量的网站,其都有可能被入侵植入相关博彩信息,这样可以批量分析被植入博彩的网站并关联其可能的入侵利用漏洞,其思路如下:

1. 分析这些网站的对应IP

2. 利用IP反查IP对应的域名

3. 批量验证这些域名是否被入侵

4. 分析被入侵网站的指纹,初步判断黑客可能利用的漏洞

5. 结合攻击日志来进行攻击溯源:佐证黑客入侵的利用漏洞、入侵IP、时间等

6. 批量分析使用该指纹的其他网站是否也发生被入侵的事件

2.2 关联分析IP

发现这些网站解析到三个IP地址:61.191.49.157,61.191.50.98,61.191.50.109。

网站被解析到61.191.49.157

网站被解析到61.191.49.157

网站被解析到61.191.50.98

网站被解析到61.191.50.98

网站被解析到61.191.50.98

网站被解析到61.191.50.109

通过“云悉”互联网安全监测平台监测到被黑的网站,目前分析到以下三个IP反查IP对应域名:

三个IP反查IP对应域名

对这些IP反查相应的域名,使用360netlab和riskiq的PassiveDNS数据目前共查询到近3000个域名在这三个IP上。

360 netlab的PassiveDNS数据

360 netlab的PassiveDNS数据

riskiq的PassiveDNS数据

riskiq的PassiveDNS数据

但是分析了一下,有很多是历史的,目前已过期,因此需要重新验证一下这些域名对应的IP是否为这三个IP,使用Python的dns.resolver库解析其DNS结果并验证后,一共发现有2180个域名在这三个IP上。

2.3 批量分析被植入博彩网站

查询到相应的域名以后,发现前期被植入博彩的特征比较明显,其博彩内容都是放在网站的title中,直接写个python程序批量爬取网站源代码,分析其源码的title内容,核心代码如下:

批量验证网站是否被植入博彩内容

批量验证网站是否被植入博彩内容

批量验证后,目前共发现293个网站被植入博彩信息,相关网站以及被植入网站的部分情况如下图所示:

部分被植入博彩网站情况

部分被植入博彩网站情况

2.4 指纹分析

对这些被植入博彩内容的网站批量分析其网站指纹,以初步判断可能的入侵利用漏洞。在这里,利用“云悉”指纹批量查询,返回结果如下所示:

部分网站指纹情况

部分网站指纹情况

对这些指纹进行深入分析,得到如下数据:

被黑网站的指纹数据情况

被黑网站的指纹数据情况

一个很明显的指纹,这些被入侵的大多安装了iis、iQuery、ASP、某IDCIBW网站管理系统等。但是考虑到如果利用iis和asp的漏洞可能入侵的就不仅仅是某IDCIDC一家,目前“云悉”互联网安全监测平台监测全省大量的IDC网站,最近只监测到某IDC下面的网站存在被植入博彩的情况。

目前发现被黑的293个网站中有 234个使用该IDC的网站管理系统,使用该网站管理系统比较达80%,因此初步怀疑为该IDC的网站管理系统漏洞被黑客利用导致批量入侵。后续需要该IDC进行协助分析与验证。

个人观点

该分析的结论虽然很简单,就是某IDC的网站管理系统存在漏洞被黑产团伙利用批量入侵网站并植入博彩SEO内容。但是里面个人感觉利用基础数据,如PassiveDNS、网站指纹等基础数据进行数据分析挺有意思,这样可以把一些很抽象杂乱的事件关联到一起进行分析,抽离层层表象分析到事件的深层关联。并且这种行为可以互联网化,而基本不需要用户来进行配合,减小事件分析的成本。

在这里,个人一直认为基础数据(如dns,子域名、whois、ip属性、网站指纹、ssl证书hash等)的作用越来越重要,有了大量的基础数据作为数据支撑才可以看得清、看得见事物的内在关联与本质。很多看似复杂的表项通过基础数据可以分析到其内在的原因。

参考

1.http://www.yunsee.cn

2.https://www.passivedns.cn

3.https://www.riskiq.com

4.https://www.programcreek.com/python/example/82642/dns.resolver

*本文作者:feiniao,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

2018年8月20日,子弹短信正式上线。老罗仍然用一贯“改变世界”的口吻向世界宣布,子弹短信上线仅7天完成第一轮1.5亿元融资。但是近日产品爆出“信息泄露”、“涉黄社交”等安全隐患,想要冲破微信、短信原有的社交生态,初生的子弹短信究竟能走多远?

“超高效率沟通”—子弹短信

子弹短信,是由北京快如科技研发、锤子科技投资的一款即时通讯App,其最大的亮点是高效沟通。

而这款次时代社交工具不仅支持语音、文本输入,同时还支持“语音输入、文字输出”。从子弹短信官微的介绍来看,“做一个超高效率的即时通讯软件”是子弹短信团队的愿景。而“语音”成为其突破的重中之重。

初版就功能来看,老罗和快如科技的确做出了许多尝试和努力,其中最主要的功能如下: 

主要功能

以“语音”作为突破口,子弹短信选择与科大讯飞合作,用户可以自己选择发送信息的类型,用户可以同时发出「语音+文字」,其中语音可以拖动进度条,识别率高达97%。

除此之外,为了使用更加便捷,子弹短信采取了不安装也可以使用的设计。也就是说当其他用户收到了子弹短信之后,可以通过进入网页版直接查看信息并回复。 

在国内的互联网大环境里,老罗似乎是个例外。他带着他的“锤子”一次次向我们走来,对于勇敢的“异世者”我们总是充满期待和宽容

这次的子弹短信也不例外,正式上市后热度迅速飙升,上线两天冲到了 App Store 社交免费排行榜第 2 名,上线九天其激活用户量就超过4,000,000

疯狂的热度和期待背后,我们暂时没有迎来社交方式变革,反而暴露了“隐私泄露”、“涉黄社交”等一系列问题……

“任性条款”,信息泄露堪忧

在产品发布后,有人爆出子弹短信存在严重的漏洞。

网页版信息泄露

首先,个人信息可以通过网页浏览器查看,并且查看用户信息的页面采用可遍历的设计,还将用户ID直接作为链接地址,按照网址规则输入用户ID就可以查看到具体的用户信息。

而这用户信息不光子弹短信的ID,还包括账号所在地、对应的微博账号、微信账号、QQ信息、Smartisan账号等信息,最可怕的是这些在页面上被明文保存,当页面被打开这些信息也会被加载到本地,中间没有任何加密和其他安全措施。

也就是说,当你通过子弹短信发送消息时,会生成一个用户信息页面,里面记录该用户所输入的个人信息,并且该页面允许任何人查看。这样的“开放性”背后带来的的风险不可想象,首当其冲的就是“脱库”风险。在这样无加密的环境只需要编写一个程序,根据ID顺序依次访问各个网页并抓取其中字段信息,就可以得到一个庞大的用户数据库。

网友担忧

如果说按子弹短信官方给出的数据,仅上线9天,这个数据库一旦被脱库,就将有4,000,000个用户信息可能被泄露,后果不堪设想…… 

而目前大部分平台(比如微信)在网页版是需要校验身份的,用户信息多数是去敏的。通过对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。

手机号码泄露

除了网页版出现安全问题,还有部分网友反映添加了对方子弹短信之后界面会显示对方手机号码。

如果结合子弹短信的“发现锤友”功能,那随便添加就能知道附近人的手机号码,这带来的安全隐患也是不容小觑的。

任性的“隐私协议” 

针对上面提到的各种隐私风险,我们不免都有点怕怕的,回头去看子弹短信官方的隐私协议,结果又被吓了一大跳。

收集信息范围较大,包括身份证、面部特征、护照,甚至指纹信息……

而下面这句更是引起来巨大争议,“快如科技将尽可能保障安全,但是对隐私信息的维护或保密无法做出任何确定性的保证或承诺”。

如果说官方都无法确定性保证信息不被泄露,那请问谁能保证?

子弹短信隐私协议

当然,互联网环境如此复杂,多渠道都可能出现信息泄露的情况。但是人家也都没好意思直接说“无法确定性保证”,大部分是根据不同情况做了一些责任的具体分配。

微信隐私保护指引

比如微信在《微信隐私保护指引》中表示,将努力为用户的信息安全提供保障,以防止信息的丢失、不当使用、未经授权访问或披露。并称“将在合理的安全水平内使用各种安全保护措施以保障信息的安全。若发生个人信息泄露等安全事件,会启动应急预案,阻止安全事件扩大,并以推送通知、公告等形式告知用户。”

社交之殇无法避免?

在前几天的文章中我们提到了airdrop中充斥大量“不良”消息(你的”苹果”可能有毒!变身“搭讪”利器,被“黑化”的AirDrop),无独有偶,此类信息又在子弹短信中也出现了。

不仅发送消息,还有很多群组内也充斥着这些信息,而且还缺乏群审核和群拉黑功能,相当于你随手搜群谁都进入……

社群充斥大量不良信息

听说一不小心火到国外也有这茬子事……

老外也在吐槽…

而这里就涉及到子弹短信在设计之初的一个重要功能——“与非子弹短信用户的好友也可以直接发送信息”

如此一来,结合“发现锤友”、读取通讯录等功能,这简直就变成黑产的“移动信息发射台”,也难怪广大网友不停的吐槽。

网友吐槽

官方目前的监管力度很弱,目前对于这些不良用户和信息要是是用户举报,后台再进行手动处理的模式。

官方论坛回应

官方也在努力

2018年8月29日子弹短信也给出了官方声明,对于上述的隐私泄露等问题做出了一系列的改进。

官方声明

比如对网页版接口进行限频,从而减少“脱库”风险。对于手机号直接显示的情况也紧急修复了。官方的响应还是比较迅速的,在风险转化成危害之前就做出了努力,这大概是老罗和“快如科技”在此次子弹短信事件中做的最明智的一步。 

当然,初生的产品难免磕磕绊绊,广大网友也提出了很多改进的建议: 

账号注销和手机号更绑功能未上线;

对于未注册的用户直接短信发送链接,存在费用争议;

对于新闻信息流大家褒贬不一,目前来看过早的在社交软件中插入新闻(尤其直接是腾讯新闻、今日头条)难免引起不适;

对于陌生人直接发送消息,尤其很多不知名的链接,也很容易让人担忧背后是否安全,平台对于链接来源是否有检测等问题;

不敢点的链接

产品刚上线时,出现很多验证码和注册页面的卡顿、闪退现象,服务器不太稳定,不过这一点官方有在做出回应和优化;

……

聊到这里,至少从目前来看子弹短信的完成度,或多或少有些仓促了。从公司成立到产品第一版仅三个月时间。除了坚果手机自带的版本之外,移动端出来的Bug很多,目前IOS已经更新了四版,更新内容基本上均是修改软件Bug。

互联网圈子,节奏越来越快,老罗想要冲出原有的社交生态,迈出更具有可能性的一步。这是创新,是好事。但是过度的渲染、操之过急的“迈大步子”或许会让用户和创业者都迷失。

用户的隐私安全,应当是所有工作之中的重中之重,不容儿戏。在路上我们还需要再谨慎一些,莫将一片雄心被黑产所用。

参考来源:

1.《锤子子弹短信会成为主流吗?》——知乎

2.《冲上 App Store 榜第二名:罗永浩的《子弹短信》,真的能打赢微信…》——爱范儿

3.《请勿使用锤子的子弹短信,至少暂时别用!泄漏用户隐私,微信手机号一个都没落下,注册完就注销不了账号》——私银

*本文作者:GEETEST极验,转载请注明来自FreeBuf.COM

各位 Buffer 早上好,今天是 2018 年 8 月 31 日星期五,农历七月二一。今天份的BUF早餐铺内容有:超八成受访者因泄露隐私遭遇推销骚扰;加拿大航空手机App用户数据被黑客窃取;FBI 否认有证据显示中国黑客入侵了希拉里电邮;新补丁修复了新款MacBook Pro的喇叭杂音和内核错误问题;特斯拉推PIN to Drive安全功能改进密钥加密技术。

安全资讯早知道,两分钟听完最新安全快讯~

photo-1529411081224-84ac0d0bf6ab.jpg

超八成受访者因泄露隐私遭遇推销骚扰

中国消费者协会发布的《APP个人信息泄露情况调查报告》显示,超八成受访者曾遭遇个人信息泄露问题,其中常见情形为推销电话、短信骚扰、诈骗电话、垃圾邮件。而根据全国消协组织受理消费者投诉情况统计,今年上半年,电商、社交软件等平台非法收集消费者个人信息的现象已成投诉新热点。[来源:人民网]

加拿大航空手机App用户数据被黑客窃取

加航App用户数据遭到泄露,加拿大航空公司需要客户重置App密码。被窃取的数据包含:航班号、护照号码、NEXUS卡号、旅客号码、性别、出生日期、国籍、护照有效期、护照签发国和居住国。加拿大航空公司估计,加航手机App用户超过170万名,而在本次数据泄露事件中多达2万人的个人资料已被黑客窃取。加航已掌握这些用户的信息并向他们发送了电子邮件以告知事态。作为应对措施的一部分,加航App的用户账户现已被冻结,用户需要登陆手机App后重置密码进行激活。[来源:TheRegister]

新补丁修复了新款MacBook Pro的喇叭杂音和内核错误问题

苹果在昨天为运行 macOS High Sierra 10.13.6 系统的 2018 款 MacBook Pro 发布了第 2 个系统补充更新,但是并未在更新说明中提及任何已解决的问题,只提到补丁改善了系统的稳定性和可靠性。苹果今天在回复媒体时给出了更具体的细节。苹果表示,最新的补充更新从多个环节提高了系统的稳定性和可靠性,而且解决了多个问题,包括之前曝光的扬声器杂音问题以及内核错误等。苹果建议所有用户安装此更新。[来源:cnBeta]

特斯拉推PIN to Drive安全功能改进密钥加密技术,防止汽车被盗

据外媒报道,当地时间8月29日,特斯拉(Tesla)更新了其汽车功能,增加了一个“PIN to Drive”功能选项,以及改进了汽车密钥的加密技术。根据Model S和Model X的发行说明,用户在信息娱乐系统屏幕上输入了正确的PIN(个人识别码)后,该功能才允许用户驾驶汽车。用户可通过Controls and Safety & Security子菜单激活该功能,该子菜单也会提醒用户创建私人PIN码。PIN to Drive功能是选配功能,为不介意增加额外步骤驱动特斯拉的车主增加了一层安全保障。[来源: cnBeta]

FBI 否认有证据显示中国黑客入侵了希拉里电邮

在保守派媒体 The Daily Caller 声称“中国侵入了希拉里•克林顿的私人电子邮件服务器”后,美国总统特朗普通过推特呼吁 FBI 和司法部采取行动。但 FBI 随后发表简短声明否认有证据显示中国黑客入侵了希拉里的电邮服务器。根据美国司法部检察长办公室发表的报告,FBI 没有在希拉里的私人电邮服务器上发现遭到入侵的任何证据。The Daily Caller 的报道援引“两名听取过此事情况介绍的人士”的话称,一家就在华盛顿运营的中资公司在希拉里担任国务卿期间侵入了她的私人电子邮件服务器。[来源: Solidot]

*本文由Andy.i整理编译,转载请注明来自FreeBuf.COM

安博通作为国内网络安全可视化技术的引领者,对网络安全可视化平台进行深度调研。安博通产品经理发现,在过去的一年中,不论是产品、解决方案本身还是未来发展方向,都呈现两极分化的趋势:有的在扎实奋进中上升,而有的在停步不前中坠落,我们将在下文中给出详细分析。

2018四大发展趋势

我们发现安全策略可视化平台品类的产品呈现出以下四个主要的发展趋势:

 

 一、发展闭环的策略和事件架构

看到下面这张图片,长期关注Gartner或安博通的读者不会陌生:

2.jpg

图:Gartner提出新一代自适应安全防御架构

上图是Gartner提出的新一代自适应安全防御架构,强调通过预测、检测、防御和响应的流程实现持续监控与分析,完成闭环防御流程。在今年的RSA会议中,安全策略可视化厂商也纷纷提出类似的架构,例如:

3.jpg

图:Redseal提出快速事件调查架构 

4.jpg

图:Skybox提出自动化策略生命周期管理架构

5.jpg 图:Algosec提出安全策略管理生命周期架构

同Gartner提出新一代自适应安全防御架构一样,各大安全策略可视化平台厂商都在纷纷强调“流程闭环”的重要性。在2017年的调研中,策略可视化厂商大都只能提供“检测+防御”能力,即可以根据计算的路径地图进行异常检测告警,也可以据此来使用其他安全设备进行防御威胁,但不具备闭环事件的能力,产品方案更加倾向于“运维工具和威胁中心”。而2018年我们看到更多的厂商在丰富自身的解决方案,希望提供“检测+防御+预测+响应”的全流程能力,将产品方案提升到“防御体系”的高度。说到底,可视化产品方案的终极目的还是通过可视呈现来提升安全响应能力,而非为了可视化而可视化。

 

为了实现全流程生命周期闭环,各厂商纷纷进行能力大融合,在平台上支持或完善简单的功能组合:策略路径地图+威胁情报+漏洞分析+风险预警+报表推送+异常告警+策略梳理+响应策略下发,不管实际效果如何,这套方案至少在纸面上走完了“检测+防御+预测+响应”的全流程,在价值层面能够切实地闭环解决某些特定的安全威胁(例如勒索病毒),而不是总在威胁发生后马后炮地给出应急响应方案,这说明策略可视化平台厂商的意识取得了进步。

 

另一方面,为了满足闭环流程,厂商纷纷推出响应类特性。例如,Redseal推出Best Practice(最佳实践)功能,在该功能中Redseal平台对所有设备的操作进行记录,并根据内建的数据库来提示认为可能存在风险的操作,及时提醒用户进行修复响应,以便第一时间缩小攻击面,控制风险范围。

6.jpg

二、用户视角的精细化过程管控

在调研中,安博通产品经理发现,各大厂商相比去年更加强化了工作流(workflow)的概念,尽管各家的命名不同,但其本质都比较类似:将闭环的流程设计为工作流功能,并针对尽量详细的流程定义,通过Step by Step的步骤式操作,站在用户视角进行过程控制。

 

例如,Skybox在系统中使用Ticket概念支撑工作流,系统中定义多个Ticket并行管理,需要在每个Ticket内定义工作流程,流程包括:发起请求->技术细节确认->风险评估->实施细节确认->最终校验的5步。Ticket和用户进行绑定,包括用户创建Ticket、管理自己的Ticket、请求Ticket、处理实施需求、关闭或分析Ticket,高级用户能够处理下级用户的Ticket。

7.jpg

图:Skybox Ticket流程

 

在Ticket流程的引导下,用户将会对每一项业务变更执行精细化的5步管理,在每一步中逐步分析影响后进行评估,流程上不断进行审批,直到最终流程闭环,对于系统内多个正在执行的Ticket和其他工作,使用TASK(任务)概念来进行并发管理。

8.jpg

图:Skybox TASK管理

 

我们最早发现Workflow概念,是在Tufin厂商的产品中,Tufin使用Workflow对策略变更进行过程管控,在2018年Tufin继续加强workflow的功能,其流程包括发起请求、业务审批、目标风险分析、风险回顾和确认(升级版)、技术设计、确认等步骤,通过逐步升级的风险分析,确保策略管理可在长生命周期内进行闭环。

9.jpg

图:Tufin Workflow

 

另一个新特性是,各厂商开始支持用户分权功能,即:可定义不同用户可读写的数据、功能模块范围,也可以定义用户间的级联关系,从而有效地支持复杂的组织架构中多用户不同职权的需求。

10.jpg

图:Redseal用户权限设置

 

三、面向业务、服务业务、运营业务

业务、业务还是业务,在2018年,安博通产品经理看到了各家厂商将产品与业务更紧密的贴合,站在业务运营者的角度执行调度工作。

例如,Alogosec提出Business Flow概念,例如下图中定义网银业务的Business Flow,其子业务还包括CRM业务、ATM业务等等,针对不同的业务进行过程管理。在Business Flow中,产品从原有的管理员视角中跳出,不再关注于策略、子网、IP,而是直接站在业务角度去分析风险和执行处置。虽然从技术角度这个转变并不一定非常困难,但其贴近用户、提升体验、凸显价值的产品设计思路非常值得借鉴。

 11.jpg

图:Algosec Business Flow

 

对于用户来讲,一项重要的业务就是合规(Compliance)。在产品中,各大厂商也针对合规业务给出了解决方案,例如在Skybox产品进行业务录入和访问关系录入时,其定义并非全靠安全基线(Baseline),而是根据合规需求(例如PCI)提供现成的合规配置模板调用,让合规业务落地变得更为简单。

 12.jpg

图:Skybox基于模板进行合规业务定义

 

Firemon公司在2018年推出了新品GPC(Global Policy Controller),该产品的理念是直接服务业务、省去中间步骤,在下文的Firemon厂商简析中我们将会介绍该产品。

 

安博通产品经理认为,产品从功能化到业务化的转变,意味着产品希望在最终用户端能得到更广泛的验证,也意味着产品开始走向平稳发展阶段。

 

四、应用环境和数据来源大爆发

从应用环境来看,各大厂商在2018年均推出了公有云部署方案,主要表现为对AWS和Microsoft Azure的支持,而且宣称支持当业务从端切换到云环境时,能够提供不间断的服务。此外,Alogosec等厂商还提出,其产品可以应用于工控领域以及容器领域(例如Docker),可见除了产品特性的纵向增长,各厂商也开始发展产品应用场景的横向增长。

13.jpg

图:Algosec部署适应性

 

此外,从信息来源来看,部分厂商的安全策略可视化平台目前可以支持从SDN环境、SIEM、扫描器、EDR软件等方面采集信息,这种信息来源的爆发式增长,对产品的数据处理和分析能力提出了更高的要求,对于用户来说,从越多的来源获取情报,就能获得越好的安全保障。

14.jpg

图:Redsel信息来源展示

 

安全策略可视化平台厂商分析

Redseal

概述:横向比较来看,与2017年一样,安博通产品经理认为Redseal依然是发展势头最为良好的一家,从产品方案可以看出Redseal在研发上进行了较大的投入,在技术方向上有领导意义。

 

核心能力:Redseal的第一个核心能力在于策略路径的地图计算,安博通产品经理认为在路径地图层面目前Redseal还是处于业界领先水平。

 15.jpg

图:Redseal策略路径计算地图

 

此外,Redseal在叠加能力方面也在持续投入。自2017年推出与Splunk结合的大数据方案后,在2018年Redseal又与Rapid 7合作联合推出漏洞治理方案,其流程可以实现“发现攻击路径、资产扫描分析、完整路径抓取、漏洞配置修复”的闭环漏洞治理流程。

16.jpg

图:Redseal & Rapid 7漏洞闭环方案

 

此外,Redseal与Splunk在大数据领域持续保持合作,在2018年又增加了多个领域的信息来源,其大数据处理的核心能力也在持续进步中。

 

新产品特性:与Rapid 7的联合漏洞治理方案、用户分权控制、多信源采集等。

 

优劣势分析:Redseal无疑是一家持续创新进步的厂商,所以其核心优势在于研发投入支撑充足,产品迭代迅速,在策略路径计算和能力叠加方面,Redseal的架构具备很强的可扩展性。

 

劣势方面,Redseal在运维方面看起来较为薄弱,例如Redseal并不能提供像Tufin一样好的Workflow和Business Flow工具来帮助用户运维业务和进行过程管理,在业务面向性上相比其他厂商有所差距。

 

Skybox

概述:Skybox在过去的一年中加强了Workflow、TASK等过程管理方面的功能特性,其产品非常贴近业务,在合规方面具备很好的适用性,在漏洞发现和处置方面一直保持不错的势头。

核心能力:Skybox的流程化组织能力是其重要的核心能力之一,如前文所展示的,其Ticket和TASK两个模块构建的工作流工具,能够适应复杂的多任务、多策略、多用户的运维工作,又能够对合规需求给予良好的支撑。

 17.jpg

图:Skybox合规功能界面

 

新产品特性:Ticket、Task、合规功能等。

 

优劣势分析:Skybox的优势在于强大的过程管理,以及详尽的漏洞信息分析,似乎对于那些具有强烈安全需求的用户更加合适。而Skybox的劣势在于其数据分析和展现能力,其策略路径地图等界面的易用性、多级钻取能力、关联分析能力一直不算太强,似乎不是一个适合“大屏展现”和“态势分析”的平台。

18.jpg

图:Skybox策略路径地图

 

Algosec

概述:安博通产品经理在调研中发现,Alogosec在此次展会上并未展现出特别具体的技术能力进步。另外,Algosec在安全策略可视化平台产品维度上,与其他厂商相比亮点稍显不足,在各方面都有能力但都不突出。

 

核心能力:Algosec的核心能力是Business Flow即业务流,在与安博通产品经理的交流中,Alogosec的产品经理一直在强调Workflow + Business Flow的技术是业界唯一,也是最为贴近用户实际应用的解决方案,安博通的产品经理认同此看法,业务流的确应该是产品发展的一个目标方向。

19.jpg

图:Algosec产品界面

 

新产品特性:工作流+业务流结合等解决方案。

 

优劣势分析:Algosec的优势在于全面,策略路径、威胁治理、合规流程、策略运维都能够支持。但劣势在于平均,其在各个领域都不能做到领先,有些缺乏产品的核心主旨和打动用户的能力。

 

Tufin

概述:Tufin是一家非常专注的厂商,在防火墙安全策略运维方面它无疑是最佳选择,在其他领域Tufin并不涉足太多。

 

核心能力:Tufin的核心能力在于对防火墙安全策略的控制,其方案与各大领先防火墙厂商紧密耦合,包括Palo Alto、AWS、NSX、Fortinet、Check Point、Cisco等等,而且对每个厂商防火墙的解决方案都能完全支持其独特的策略组织方式,加之优秀的策略翻译、策略体检打分等模块,可以说Tufin在策略运维这一领域做到了极致。

20.jpg

图:Tufin与各防火墙厂商的场景化方案

 

此外,Tufin在工作流方案方面是最早的提出者,其工作流功能的成熟度也非常高。

 

新产品特性:Tufin几乎没有所谓的“新特性”,其解决方案与以往并没有本质区别,只是不断地在加强对其他厂商的新品、新版本和云环境的适配,保持其在策略运维领域的领导者地位。

 

优劣势分析:Tufin的优势在于防火墙安全策略运维,在这一领域Tufin无疑是最佳的能力者。其劣势在于全面性不足,在策略路径分析、能力叠加、漏洞治理等方面均比较薄弱。但是,专注到极致的产品在细分领域能够保持领先,也是一条非常值得学习的路线。

 

Firemon

概述:在2018年的RSA展会中,Firemon主要推荐其GPC(GLOBAL POLICY CONTROLLER)新品,该产品是2018年安博通产品经理所看到为数不多的具有创新性的平台产品之一,但在应用层面,安博通产品经理认为落地难度较大。

 

核心能力:Firemon的核心能力依然围绕着安全策略,今年推出的新品GPC,其核心理念是消除中间环节,让策略直接服务业务。

 

GPC主要的功能是进行业务变更时的安全策略下发,解决的应用场景举例如下:在内网环境中部署有20-30台安全设备,服务于数万条业务,这些内容使用GPC进行监控。当某些业务的访问关系需要变更时,可以直接使用GPC产品配置业务访问关系的修改,点击生效后,GPC会根据策略路径自动计算出安全设备的策略修改方案,并将推荐的几种可行方案提交用户,用户选择其中一种方案并提交后,GPC会针对所有安全设备基于方案进行策略下发和业务验证,全过程中无需运维人员参与。

 21.jpg

图:GPC产品demo

 

在安博通产品经理调研过程中,GPC产品是为数不多的进行大规模配置变更的产品之一。传统上,安全策略可视化平台领域主要进行采集、分析、呈现而不是变更,GPC敢于投入走出这一步体现了Firemon老牌玩家的底蕴。安博通产品经理认为GPC产品在技术上存在非常大的价值,能够确实解决大规模防火墙策略配置的繁琐问题,也能让业务变更更加顺利,让整个策略领域的产品具备了更加重要的地位。但是,从实际应用落地方面来看,企业单位对于策略和业务的变更都有一套成熟的流程要求,是否能够允许软件平台直接对业务进行变更?在很多地方是明显行不通的,所以这个问题可能导致GPC产品的应用场景偏窄,影响其快速打入市场,还需要时间来检验。

 

新产品特性:2018年主推GPC新产品。

 

优劣势分析:Firemon的优势在于其大胆的产品布局策略,GPC产品的发布在业界产生了不小的反响,代表了Firemon的技术创新能力得到认可,但这个产品未来的发展还要看用户的接受度如何。而Firemon的劣势与Skybox类似,在策略路径展现和数据分析方面显得较为薄弱,在合规运维方面也没有太多亮点。

 

安博通

概述:安博通作为国内安全可视化的领导者,2018年安全策略可视化自适应分析平台产品引起了关注。安博通产品方案整体性较强,能力叠加方案具备一定创新性,在国内已有多个成熟应用案例。

 

核心能力:安博通产品的核心能力在于其叠加方案:策略路径+流量分析+安全事件,在分析逻辑上从看见、看深到看透逐步深入,对安全态势的把控更加贴切。从所有厂商的横向比较中来看,安博通产品是唯一支持叠加流量分析能力的策略可视化平台,而在工作流、策略运维、策略路径、漏洞治理等能力融合层面不具备明显短板,综合能力较强。

22.jpg

图:安博通在展会上与用户交流产品方案

 

新产品特性:除了独创的策略路径+流量分析+安全事件的三合一方案之外,安博通还在用户组织架构、业务告警、违规路径、拓扑搜索等方面推出新产品特性。

 

优劣势分析:安博通的优势在于,从核心能力叠加方面,融合程度非常高且具备独特性,是所有厂商中唯一具备“流量”维度的可视化分析平台,在部分模块的技术水平方面,甚至已经领先于美国厂商。而在业务流、合规模板、策略转换等技术领域,解决方案的完善性和UI易用性还可进一步提升,并加强贴近业务的程度。

 

中美对比小结

通过连续几年的调研和对比,安博通对安全策略可视化平台领域的产品具备了较为深入的理解。

 

分析美国策略可视化平台厂商过去一年的变化,有的在升起,有的在坠落:一些厂商他们在升起,持续进行研发投入迭代和解决方案优化升级,努力解决用户问题,找到方向推出亮点产品;而另一些厂商他们在坠落,保持在舒适领域而不敢突破,创新技术的枯竭,必然导致产品竞争力的逐年下滑。

 

分析美国策略可视化技术发展趋势,有的在升级,有的在坠落:不论是闭环生命周期架构、能力融合、业务流程管理还是新数据来源,这些技术发展趋势在用户视角上看的确在不断上升,更加贴近应用场景;但是,从产品技术角度分析,这些解决方案背后的技术逻辑更加偏向于适配、跳转、UI界面翻译、组织形式上的“量变”,而并非我们第一次认识Redseal、Skybox产品时看到的全新理念层面的“质变”,有些产品更偏向于功能的“堆砌”而并真正未达到“融合”的程度,当以创新著称的美国厂商们不能取得质变时,不得不说是一种坠落。

 

观察中美厂商之间的技术实力对比,有的在升起,有的在坠落:以安博通为代表的中国安全可视化力量,以较晚的起步时间取得了长足的产品进步,提出了独特的解决方案维度,在RSA大会上发出了自己的声音,处于良好的上升态势;而美国的安全可视化力量似乎遇到了创新的瓶颈,当力量对比此消彼长时,对美国的网安力量来说,更像一种坠落。

 

诚然,对比美国一流的安全可视化厂商,以安博通为首的中国可视化产品还显得不够成熟,部分模块的呈现风格、业务组织和数据源接入能力还有一定差距。但我们相信,通过持续的跟进和投入,一定有中国厂商在国际舞台绽放的一天。雄关漫道,吾辈还需多多努力,与君共勉。

前言

知名OCR软件ABBYY FineReader软件开发商的MongoDB服务器因配置错误导致超过20万份客户文件泄露。

页首配图

ABBYY在文档识别、数据捕获和语言技术的开发领域中占据一定的领先地位,ABBYY FineReader是其主打的OCR及文档转换软件,可提供一条龙的PDF解决方案。

得益于较早的起步时间和全面的服务支持,其客户涵盖国内外的企业和个人,这也是本次文档泄露事件发生之后引起各大厂商注意的原因。

事件回溯

独立安全研究员Bob Diachenko于8月19日在AWS上发现了该数据库,大小为142GB,无需登录即可访问。

客户扫描数据并将其保留在云中,该数据库包括敏感的扫描文件,包括合同、保密协议、内部信件和备忘录等,还有一些文件名包含“documentRecognition”和“documentXML”这样的字段,可能是某些数据识别公司基础数据库的一部分。

数据库属于ABBYY的证据来自另一组文档,该文档包含公司电子邮件地址和经过加密的密码字段。

Bob发现给问题后即通知了Abbyy安全团队,两天后对该数据库的访问通道才被切断。

从什么时候开始存在这个问题以及多少人访问了这个数据库目前尚不清楚,但这个数据库可谓是价值连城。

ABBYY的客户涵盖来自各个领域的知名企业,如大众汽车、德勤、普华永道、百事可乐、Sberbank和麦当劳,这还只是冰山一角。

*参考来源:Bleeping Computer,Freddy编译整理,转载请注明来自FreeBuf.COM。

简介

GitMiner是一款自动化的高级敏感内容挖掘工具。此工具旨在通过代码或代码片段在github搜索页面进行挖掘,并以此来证明公共存储库的脆弱性,以及将包含敏感信息的代码存储在其中所带来的安全隐患。

安装要求

lxml
requests
argparse
json
re

安装

$ git clone http://github.com/UnkL4b/GitMiner
$ cd GitMiner
~/GitMiner $ pip3 install -r requirements.txt

Docker

$ git clone http://github.com/UnkL4b/GitMiner
$ cd GitMiner
$ docker build -t gitminer .
$ docker run -it gitminer -h

帮助信息

                                 UnkL4b
  __                   Automatic search for Github
((OO))   ▄████  ██▓▄▄▄█████▓ ███▄ ▄███▓ ██▓ ███▄    █ ▓█████  ██▀███  
 \__/   ██▒ ▀█▒▓██▒▓  ██▒ ▓▒▓██▒▀█▀ ██▒▓██▒ ██ ▀█   █ ▓█   ▀ ▓██ ▒ ██▒      OO
  |^|  ▒██░▄▄▄░▒██▒▒ ▓██░ ▒░▓██    ▓██░▒██▒▓██  ▀█ ██▒▒███   ▓██ ░▄█ ▒      oOo
  | |  ░▓█  ██▓░██░░ ▓██▓ ░ ▒██    ▒██ ░██░▓██▒  ▐▌██▒▒▓█  ▄ ▒██▀▀█▄      OoO
  | |  ░▒▓███▀▒░██░  ▒██▒ ░ ▒██▒   ░██▒░██░▒██░   ▓██░░▒████▒░██▓ ▒██▒  /oOo 
  | |___░▒___▒_░▓____▒_░░___░_▒░___░__░░▓__░_▒░___▒_▒_░░_▒░_░░_▒▓_░▒▓░_/ /
  \______░___░__▒_░____░____░__░______░_▒_░░_░░___░_▒░_░_░__░__░▒_░_▒░__/  v2.0
       ░ ░   ░  ▒ ░  ░      ░      ░    ▒ ░   ░   ░ ░    ░     ░░   ░ 
             ░  ░                  ░    ░           ░    ░  ░   ░     
  -> github.com/UnkL4b
  -> unkl4b.github.io
  +---------------------[WARNING]---------------------+
  | DEVELOPERS ASSUME NO LIABILITY AND ARE NOT        |
  | RESPONSIBLE FOR ANY MISUSE OR DAMAGE CAUSED BY    |
  | THIS PROGRAM                                      |
  +---------------------------------------------------+ 
       [-h] [-q 'filename:shadow path:etc']
       [-m wordpress] [-o result.txt]
       [-r '/^\s*.*?;?\s*$/gm']
       [-c _octo=GH1.1.2098292984896.153133829439; _ga=GA1.2.36424941.153192375318; user_session=oZIxL2_ajeDplJSndfl37ddaLAEsR2l7myXiiI53STrfhqnaN; __Host-user_session_same_site=oXZxv9_ajeDplV0gAEsmyXiiI53STrfhDN; logged_in=yes; dotcom_user=unkl4b; tz=America%2FSao_Paulo; has_recent_activity=1; _gh_sess=MmxxOXBKQ1RId3NOVGpGcG54aEVnT1o0dGhxdGdzWVpySnFRd1dVYUk5TFZpZXFuTWxOdW1FK1IyM0pONjlzQWtZM2xtaFR3ZDdxlGMCsrWnBIdnhUN0tjVUtMYU1GeG5Pbm5DMThuWUFETnZjcllGOUNkRGUwNUtKOVJTaGR5eUJYamhWRE5XRnMWZZN3Y3dlpFNDZXL1NWUEN4c093RFhQd3RJQ1NBdmhrVDE3VVNiUFF3dHBycC9FeDZ3cFVXV0ZBdXZieUY5WDRlOE9ZSG5sNmRHUmllcmk0Up1MTcyTXZrN1RHYmJSdz09--434afdd652b37745f995ab55fc83]

optional arguments:
  -h, --help            显示帮助信息并退出
  -q 'filename:shadow path:etc', --query 'filename:shadow path:etc'           指定搜索词
  -m wordpress, --module wordpress               指定搜索模块
  -o result.txt, --output result.txt             指定输出文件的保存位置
  -r '/^\s*(.*?);?\s*$/gm', --regex '/^\s*(.*?);?\s*$/gm'               设置在文件中搜索的正则
  -c _octo=GH1.1.2098292984896.153133829439; _ga=GA1.2.36424941.153192375318; 

user_session=oZIxL2_ajeDplJSndfl37ddaLAEsR2l7myXiiI53STrfhqnaN; __Host-user_session_same_site=oXZxv9_ajeDplV0gAEsmyXiiI53STrfhDN; logged_in=yes; dotcom_user=unkl4b; tz=America%2FSao_Paulo; has_recent_activity=1; _gh_sess=MmxxOXBKQ1RId3NOVGpGcG54aEVnT1o0dGhxdGdzWVpySnFRd1dVYUk5TFZpZXFuTWxOdW1FK1IyM0pONjlzQWtZM2xtaFR3ZDdxlGMCsrWnBIdnhUN0tjVUtMYU1GeG5Pbm5DMThuWUFETnZjcllGOUNkRGUwNUtKOVJTaGR5eUJYamhWRE5XRnMWZZN3Y3dlpFNDZXL1NWUEN4c093RFhQd3RJQ1NBdmhrVDE3VVNiUFF3dHBycC9FeDZ3cFVXV0ZBdXZieUY5WDRlOE9ZSG5sNmRHUmllcmk0Up1MTcyTXZrN1RHYmJSdz09--434afdd652b37745f995ab55fc83, --cookie _octo=GH1.1.2098292984896.153133829439; _ga=GA1.2.36424941.153192375318; user_session=oZIxL2_ajeDplJSndfl37ddaLAEsR2l7myXiiI53STrfhqnaN; __Host-user_session_same_site=oXZxv9_ajeDplV0gAEsmyXiiI53STrfhDN; logged_in=yes; dotcom_user=unkl4b; tz=America%2FSao_Paulo; has_recent_activity=1; _gh_sess=MmxxOXBKQ1RId3NOVGpGcG54aEVnT1o0dGhxdGdzWVpySnFRd1dVYUk5TFZpZXFuTWxOdW1FK1IyM0pONjlzQWtZM2xtaFR3ZDdxlGMCsrWnBIdnhUN0tjVUtMYU1GeG5Pbm5DMThuWUFETnZjcllGOUNkRGUwNUtKOVJTaGR5eUJYamhWRE5XRnMWZZN3Y3dlpFNDZXL1NWUEN4c093RFhQd3RJQ1NBdmhrVDE3VVNiUFF3dHBycC9FeDZ3cFVXV0ZBdXZieUY5WDRlOE9ZSG5sNmRHUmllcmk0Up1MTcyTXZrN1RHYmJSdz09--434afdd652b37745f995ab55fc83                     为github指定cookie

示例

使用密码搜索wordpress配置文件:

$:> python3 gitminer-v2.0.py -q 'filename:wp-config extension:php FTP_HOST in:file ' -m wordpress -c pAAAhPOma9jEsXyLWZ-16RTTsGI8wDawbNs4 -o result.txt

68747470733a2f2f322e62702e626c6f6773706f742e636f6d2f2d4762707a524f6945796e512f56744c7974664d715169492f4141414141414141626e6b2f356844706850344d6266342f73313630302f776f7264707265737345582e706e67.png

查找包含密码的巴西政府档案:

$:> python3 gitminer-v2.0.py --query 'extension:php "root" in:file AND "gov.br" in:file' -m senhas -c pAAAhPOma9jEsXyLWZ-16RTTsGI8wDawbNs4

在etc路径下查找shadow文件:

$:> python3 gitminer-v2.0.py --query 'filename:shadow path:etc' -m root -c pAAAhPOma9jEsXyLWZ-16RTTsGI8wDawbNs4

使用密码搜索joomla配置文件:

$:> python3 gitminer-v2.0.py --query 'filename:configuration extension:php "public password" in:file' -m joomla -c pAAAhPOma9jEsXyLWZ-16RTTsGI8wDawbNs4

68747470733a2f2f332e62702e626c6f6773706f742e636f6d2f2d3141734e6d464b66736f412f56744c79764a46793257492f4141414141414141626e6f2f433778546278747a4f6f382f73313630302f6a6f6f6d6c6145582e706e67.png

入侵SSH服务器

68747470733a2f2f696d672e796f75747562652e636f6d2f76692f79494a4f6c4b5a775151772f302e6a7067.jpg

演示视频

1

Dork搜索语法

[email protected] (https://github.com/techgaun/github-dorks)

Dork Description
filename:.npmrc _auth npm 注册表验证数据
filename:.dockercfg auth docker 注册表验证数据
extension:pem private 私钥
extension:ppk private puttygen 私钥
filename:id_rsa or filename:id_dsa 私有 ssh keys
extension:sql mysql dump mysql dump
extension:sql mysql dump password mysql dump 查找密码;你也可以尝试其它相似语法
filename:credentials aws_access_key_id 可能会返回虚假值
filename:.s3cfg 可能会返回虚假值
filename:wp-config.php wordpress 配置文件
filename:.htpasswd htpasswd 文件
filename:.env DB_USERNAME NOT homestead laravel .env (CI, 各种基于ruby的框架)
filename:.env MAIL_HOST=smtp.gmail.com gmail smtp 配置 (你也可以尝试其它不同的smtp services)
filename:.git-credentials git 凭证存储, 添加NOT用户名以获得更有效的结果
PT_TOKEN language:bash pivotaltracker tokens
filename:.bashrc password 在.bashrc中搜索密码等(你也可以尝试使用.bash_profile)
filename:.bashrc mailchimp 同上。你也可以尝试更多其它语法
filename:.bash_profile aws aws access 和 secret keys
rds.amazonaws.com password Amazon RDS 可能的凭据
extension:json api.forecast.io  查找 api keys/secrets
extension:json mongolab.com json configs中的mongolab凭据
extension:yaml mongolab.com yaml配置中的mongolab凭据(此外,你还可以尝试使用yml)
jsforce extension:js conn.login nodejs项目中可能的salesforce凭据
SF_USERNAME salesforce 可能的salesforce凭据
filename:.tugboat NOT _tugboat Digital Ocean tugboat 配置文件
HEROKU_API_KEY language:shell Heroku api keys
HEROKU_API_KEY language:json 在json文件中的Heroku api keys
filename:.netrc password 可能拥有敏感凭据的netrc
filename:_netrc password 可能拥有敏感凭据的netrc
filename:hub oauth_token 存储github令牌的hub配置
filename:robomongo.json robomongo使用的mongodb凭证文件
filename:filezilla.xml Pass filezilla配置文件,可能有ftp的 user/pass 信息
filename:recentservers.xml Pass filezilla配置文件,可能有ftp的 user/pass 信息
filename:config.json auths docker注册表验证数据
filename:idea14.key IntelliJ Idea 14 key
filename:config irc_pass 可能的IRC配置文件
filename:connections.xml 可能的数据库连接配置文件
filename:express.conf path:.openshift openshift配置文件,只有电子邮件和服务器
filename:.pgpass 包含密码的PostgreSQL文件
filename:proftpdpasswd cpanel创建的proftpd的用户名和密码
filename:ventrilo_srv.ini Ventrilo 配置文件
[WFClient] Password= extension:ica 用户连接到Citrix应用程序服务器所需的WinFrame-Client信息
filename:server.cfg rcon password 反恐精英RCON密码
JEKYLL_GITHUB_TOKEN Github令牌用于jekyll
filename:.bash_history Bash 历史文件
filename:.cshrc 用于csh shell的RC文件
filename:.history 历史文件 (经常被许多工具使用)
filename:.sh_history korn shell 历史
filename:sshd_config OpenSSH server 配置文件
filename:dhcpd.conf DHCP service 配置文件
filename:prod.exs NOT prod.secret.exs Phoenix prod 配置文件
filename:prod.secret.exs Phoenix prod secret
filename:configuration.php JConfig password Joomla 配置文件
filename:config.php dbpasswd PHP应用程序数据库密码(例如,phpBB论坛软件)
path:sites databases password Drupal网站数据库凭据
shodan_api_key language:python Shodan API密钥
filename:shadow path:etc 包含新的unix系统的加密密码和帐户信息
filename:passwd path:etc 包含用户帐户信息,包括传统unix系统的加密密码
extension:avastlic 包含Avast的许可证密钥!
extension:dbeaver-data-sources.xml 包含MySQL凭据的DBeaver配置
filename:.esmtprc password esmtp 配置
extension:json googleusercontent client_secret 用于访问Google API的OAuth凭据
HOMEBREW_GITHUB_API_TOKEN language:shell Github令牌通常由homebrew用户设置
xoxp OR xoxb Slack bot 和 private tokens
.mlab.com password MLAB托管的MongoDB凭证
filename:logins.json Firefox保存密码集合(key3.db通常在同一个repo中)
filename:CCCam.cfg CCCam Server 配置文件
msg nickserv identify filename:config 可能的 IRC 登录密码
filename:settings.py SECRET_KEY Django密钥(通常允许会话劫持,RCE等)

*参考来源:github,FB小编secist编译,转载请注明来自FreeBuf.COM