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

李志宽
• 阅读 1378

大家好,我是周杰伦。

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

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

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

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

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

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

事件始末

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

还真有!

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

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

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

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

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

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

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

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

美帝XX之心不死啊!

技术分析

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

1、TCP SYN敲门

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

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

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

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

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

那怎么办?

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

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

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

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

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

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

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

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

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

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

2、隐藏和保护

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
李志宽
李志宽
Lv1
男 · 长沙幻音科技有限公司 · 网络安全工程师
李志宽、前百创作者、渗透测试专家、闷骚男一位、有自己的摇滚乐队
文章
89
粉丝
25
获赞
43