利用Telegram控制C2的威胁分析
Forcepoint Security Labs实验室发现攻击者利用Telegram加密消息服务作为恶意软件的命令和控制(C2)基础架构的用法
使用Telegram作为C2通道的恶意软件通常使用Telegram Bot API进行通信。在调查一件恶意软件的过程中,我们发现Telegram处理通过其Bot API发送的消息的方式存在重大缺陷。
由于Bot API的工作原理,所有过去的机器人消息都可以被能够拦截和解密HTTPS流量的攻击者重放。
获取Telegram C2消息的访问权限
Telegram使用其内部MTProto加密来保护常规用户之间的消息,因为它认为TLS本身对于加密的消息传递应用程序来说不够安全。(TLS存在漏洞在这里)
其中一个关键信息是bot API令牌,它嵌入所有消息(以及任何程序的二进制文件中 - 恶意软件或合法 - 使用Telegram Bot API)。因此,比较容易在目标的HTTPS连接上执行MiTM。
另一个关键部分是随机生成的Telegram chat_id。在单个聊天的情况下,这是用户自己的唯一ID,而群组聊天在创建时生成他们自己的chat_id。但是,此信息也会在任何Bot API请求中发送,因为机器人需要知道要向哪个用户和/或组聊天发送信息。
配备这些信息,可以从Telegram Bot API调用许多方法。本例中,forwardMessage()方法特别有用,因为它允许来自任何聊天的任何消息,给定的机器人有权将其转发给任意Telegram用户。要做到这一点,我们需要API令牌和源chat_id(从机器人发送的先前消息中提取,或者在恶意软件的情况下,从二进制本身提取) - 以及目标chat_id(这是我们自己的)用户ID)最后是我们想要转发的消息ID。message_id从0逐渐增长,因此一个简单的Python脚本可以转发所有已发送到机器人当前所属的Telegram聊天的消息。
恶意软件GoodSender
恶意软件是一个相当简单的.NET恶意软件,称之为GoodSender并使用Telegram作为C2。它以相当简单的方式运行:一旦删除恶意软件,它就会创建一个新的管理员用户并启用远程桌面,并确保它不被防火墙阻止。新管理员用户的用户名是静态的,但密码是随机生成的。受害者的用户名,密码和IP地址都通过telegram网络发送给攻击者。从而使操作员可以通过RDP访问受害者的计算机。
Telegram Bot URL的GoodSender代码
Telegram Bot的配置文件屏幕
威胁活动
这个早期的恶意软件被称为“RTLBot”,后面更新开发为“GoodSender”。下面时间线是从telegram消息检索出来的:
2018年2月4日 - Telegram机器人上线。
2018年2月18日 - 开始将Telegram C2功能整合到RTLBot中,并将开发转移到Telegram上。
2018年2月20日 - 攻击者将他的基础设施从他的个人计算机移到AWS(亚马逊网络服务)上。
2018年4月1日 - GoodSender活跃并发送其第一个受害者信息。
2018年6月6日 - 攻击者租用另一个VPS作为Telegram代理的第一个迹象。
2018年7月5日 - GoodSender发送其最后的真实受害者信息。
2018年9月29日 - GoodSender发送其最后一次测试受害者信息。
2018年11月23日,攻击者将相同的机器人API密钥和C2频道合并到一个工具中,该工具似乎从Instagram帐户收集图像,经验证,此阶段攻击者正在测试。
开发测试截图
开发环境的另一个屏幕截图,显示了2018年6月6日首次观察到的新代理
一些线索表明他使用EternalBlue漏洞将他的恶意软件丢弃在未打补丁的机器上
他大量使用名为“EternalBlues”的免费EternalBlue漏洞扫描程序
他有一份扫描的美国和越南知识产权清单,这些知识产权易受EternalBlue攻击,然后他用来感染他的一些受害者
GoodSender已经感染了至少120名受害者,主要是在美国
Forcepoint Security Labs建议所有用户避免使用Telegram机器人以及避免使用机器人的频道和组。
IOC:
943eceb00ea52948c30deab1d5824ffcf2fd1cec
参考链接: