乌克兰局势除了热战,一场没有硝烟的战争也一直在暗中进行

大家好,我是周杰伦。

这两天,相信大家都在关注乌克兰局势,感受着21世纪现代化战争的残酷与震撼。

其实除了热战,网络空间中没有硝烟的战争也一直在暗中进行着。

就在前几天,盘古安全实验室发布了一个Paper:

image

这份报告详细分析了一个跟踪近十年的来自美国国家安全局NSA的顶级后门程序。

Paper本身有一定的技术门槛,缺乏网络安全知识的小伙伴儿看起来可能有些吃力。今天轩辕尝试用简单易懂的方式带大家来感受一下,来自这个星球上顶级的安全机构开发的后门,到底是什么样的。

事件始末

不知道具体是2013年还是2015年的时候(Paper中两处表述时间不一致),盘古实验室的某个客户(一般都是敏感单位,你懂得)那里部署的安全产品突然告警了,告警显示两个重要的服务器之间存在一些可疑的通信行为。

有告警产生,自然就要派技术人员进行跟进分析。

通过对服务器的磁盘进行镜像拷贝,分析出了初步结论:服务器被植入后门程序了!

这是一个经过复杂加密的Linux平台的后门程序,而且这家伙的自我保护机制做的极为到位,不能直接运行,需要与主机绑定的校验码才能正常运行。

研究人员好不容易花了大力气破解了校验码,成功运行了这个后门程序,却发现还需要攻击者的非对称加密私钥才能激活远控功能。

这一下就没辙了,没有秘钥,后面的分析无法继续下去,这事情就搁置了。

然而时间来到2016年,网络安全界发生了一件事情,推动了这个后门程序的分析进程。

这件事,估计很多人都还有印象,那就是知名黑客组织“影子经纪人”宣称成功黑进了“方程式组织”,并公布了大量“方程式组织”的黑客工具和数据。

image

估计很多人一头雾水,这都什么跟什么啊?

影子经纪人是一个黑客组织,方程式组织又是另一个更加知名的黑客组织,前者宣称入侵了后者,还把人家的数据和工具给偷出来了!

image

这件事我印象很深刻,当时看到这个消息后,大家伙都忙不迭的去下载公布出来的东西,而且量非常大,下都下了很久,至今还在我的网盘里躺着。

国内安全公司,基本上当时都去下载了一份,毕竟,方程式组织的名头如雷贯耳,能看一眼他们的技术方案和源代码还是非常有吸引力的。

盘古实验室也不例外,然而,他们却在这份泄露的数据里,意外地发现了一个东西。

没错,正是激活那个后门程序所需要的的私钥!

要知道,非对称加密的公私钥这东西,都是唯一配对的。

方程式组织拥有这个私钥,那也就意味着,那个后门程序便是这个组织的手笔。

那方程式组织又是什么来头呢?

一直以来,有各种消息显示方程式组织跟美国政府有千丝万缕的关系,但没有太石锤的证据。

那影子经纪人泄露的数据里,有没有东西可以证实它与美国的关系呢?

还真有!

把时间往前再倒几年,2013年,发生了一件更广为人知的事件:美国“棱镜门”事件。

image

这次事件的主角斯诺登,曝光了美国国家安全局NSA网络攻击平台的操作手册。

而这份操作手册的唯一标识符居然也出现在了影子经纪人泄露的数据中!

有理由相信,这个后门程序来自方程式组织,方程式组织隶属美国NSA,所以这个后门程序出自美国NSA的手笔。

在泄露的资料包里还有一份名单,里面记录了方程式组织系列后门程序的攻击目标,遍及全球多个国家和地区。

注意看位于中国的攻击目标数字:

image

美帝XX之心不死啊!

技术分析

接下来,我们来看一下这个后门程序用到的相关技术。

1、TCP SYN敲门

试想一下,假设你已经在互联网上的某台服务器上安装了一个木马后门程序,你该怎么和它建立连接,把里面的数据偷出来呢?

让木马监听某个端口,你主动去连接?

NO,监听端口可是高危行为,防火墙100%过不了,做过网站服务器管理的都知道,一般都只会默认开放80、443等少数白名单端口的访问。

写一个固定的IP或者域名在木马程序里,让木马定时来连接?

NO,写在代码里的IP和域名,分析人员逆向就能顺藤摸瓜找过来了。

那怎么办?

这个后门用了一个非常聪明的办法:其他端口不行,但是80端口一般都不会拦截。

攻击者给安装了后门的服务器的80端口发送了一个TCP SYN的握手包。

我们知道TCP三次握手,SYN握手包一般不会携带数据的,但这个包,它带了数据,而且加密了。

image

后门程序检测到这个特殊的握手包来了以后,将之解密之后就知道:上峰终于来信了!

接下来就可以根据“信”中的消息,悄悄的和上峰勾搭上了。

这个特殊包,一般称为“敲门包”,意在告诉对方:我来了。

后门程序检测到这个特殊的握手包来了以后,将之解密之后就知道:上峰终于来信了!

接下来就可以根据“信”中的消息,悄悄的和上峰勾搭上了。

这个特殊包,一般称为“敲门包”,意在告诉对方:我来了。

2、隐藏和保护

作为一个木马后门,除了网络通信,最重要的就是要活下去。

而活下去的最主要的方式就是:别被发现。

为此,这个木马后门做了诸多的工作:

(1) 首先是最常见的程序文件的加密与分片

image

(2) 文件中的字符串全都要加密

image

(3) 然后函数名混淆,让分析人员找不到逻辑

image

(4) HOOK系统内核函数是基本操作

image

(5) 还要抹掉ELF特征,躲避内存检查

image

(6) 通过BPF技术检测敲门数据包

image

除此之外,还有很多骚操作:

image

具体技术细节太多,头条上不便详述,完整的分析报告可以在后台回复:网络安全获取。

报告长达五十多页,对该后门程序进行了彻底的分析,该后门程序的开发涉及Linx系统编程、操作系统技术、加密与解密技术、计算机网络知识于一体,是网络安全和编程爱好者学习研究的极佳素材。

网络安全也是一场看不见的战争,在我们看不到的地方悄悄发生着。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )