53

窃听Telegram Bot的恶意软件

 5 years ago
source link: https://www.freebuf.com/articles/network/197124.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我们一直在关注攻击者绕过保护措施的方法。最近一项调查我们研究了Telegram加密消息服务作为恶意软件的命令和控制(C2)基础架构的用法。使用Telegram作为C2通道的恶意软件通常使用Telegram Bot API进行通信。

在调查的过程中,我们发现Telegram处理通过其Bot API发送的消息的方式存在重大缺陷。由于Bot API的工作原理,所有过去的机器人消息都可以被能够拦截和解密HTTPS流量的攻击者重放。实际上,这可以为对手提供目标机器人发送或接收的所有消息的完整历史记录。这通常包括常规人类用户之间的消息,因为机器人经常与他们共享群组聊天。

获取Telegram C2消息的访问权限

Telegram使用其内部MTProto加密来保护常规用户之间的消息,因为它认为TLS本身对于加密的消息传递应用程序来说不够安全。但是,这不适用于使用Telegram Bot API的程序,因为以这种方式发送的消息仅受HTTPS层保护,还有,任何能够获得在每条消息中传输的一些关键信息的攻击者不仅可以窥探传输中的消息,还可以恢复目标bot的完整消息传递历史记录。其中一个关键信息是bot API令牌,它将所有消息嵌入。

因此,对目标的HTTPS连接上执行MiTM的对手获取此数据是微不足道的。另一个关键部分是随机生成的Telegram chat_id。在单个聊天的情况下,这是用户自己的唯一ID,而群组聊天在创建时生成他们自己的chat_id。但是,此信息也会在任何Bot API请求中发送,因为bot需要知道要向哪个用户或组聊天发送信息。

配备这些信息,可以从Telegram Bot API调用许多方法。在我们的例子中,forwardMessage()方法特别有用,因为它允许给定的bot有权将来自任何聊天的任何消息转发给任意Telegram用户。要做到这一点,我们需要API令牌和’源’chat_id(从bot先前发送的消息中提取,或者在恶意软件中从自身提取)以及’目标’chat_id(这是我们自己的用户ID),最后是我们想要转发的消息ID。

对我们来说幸运的是,message_id从0开始增长,因此一个简单的Python脚本可以转发所有已发送到机器人当前所属的Telegram聊天的消息。

GoodSender

有问题的恶意软件是一个相当简单的.NET恶意软件,运营商称之为’GoodSender’并使用Telegram作为C2。它以相当简单的方式运行:一旦删除恶意软件,它就会创建一个新的管理员用户并启用远程桌面,并确保它不被防火墙阻止。新管理员用户的用户名是静态的,但密码是随机生成的。所有这些信息(受害者的用户名,密码和IP地址)都通过电报网络发送给操作员,从而使操作员可以通过RDP访问受害者的计算机。

6vUFNfv.jpg!web

图1 – 构建Telegram Bot URL的GoodSender代码

nyIJniu.jpg!web

图2 – Telegram Bot的配置文件屏幕

活动时间表

该攻击者最初使用Telegram bot来处理他正在开发的另一件恶意软件。这个早期的恶意软件被称为“RTLBot”,并且在几个月的时间里,他在放弃开发之前添加了许多其他功能,转而开发上文提及的恶意软件“GoodSender”。下面的时间线和所包含的屏幕截图的详细信息是从恶意软件的历史C2通信中一点一点找出来的。

1.2018年2月4日 – bot机器人上线啦。
2.2018年2月18日 – 开始将Telegram C2功能整合到RTLBot中,并将开发转移到Telegram上。
3.2018年2月20日 – 攻击者将他的基础设施从他的个人计算机移到AWS(亚马逊网络服务)上。
4.2018年4月1日 – GoodSender开始传播并发送第一个受害者信息。
5.2018年6月6日 – 攻击者租用另一个VPS作为bot代理。
6.2018年7月5日 –  GoodSender发送其最后的真实受害者信息。
7.2018年9月29日 –  GoodSender发送其最后一次测试受害者信息。

2018年11月23日,攻击者将相同的机器人API密钥和C2频道合并到一个工具中,该工具似乎从Instagram帐户收集信息。在将API密钥和通道更改为 “production” 值之前,似乎该通道可用于测试机器人。

eAfABjn.jpg!web

图3 – 显然是作者的开发机器的截图,由bot上传到Telegram频道

rIVfmmn.jpg!web

图4 – 作者开发环境的另一个屏幕截图,显示了2018年6月6日首次观察到的新代理

虽然我们没有发现攻击者释放恶意软件的攻击媒介的明确目的,但是一些线索表明他使用EternalBlue漏洞将恶意软件释放在未打补丁的机器上:

1.他大量使用名为“EternalBlues”的免费EternalBlue漏洞扫描程序;
2.他有一份扫描的美国和越南知识产权清单,这些知识产权易受EternalBlue攻击,然后他用来感染他的一些受害者。

根据我们的调查,GoodSender已经感染了至少120名受害者,主要是在美国。

MviYNnU.jpg!web

图5 – 基于GeoIP信息的GoodSender受害者的红热/蓝冷热图

mMFbYnJ.jpg!web

总的来说

在我们以往的案例研究中,这种用于重放消息的特定技术被用于发现攻击者,但它如今可能被用于使用Telegram Bot API的合法应用程序。

尽管Telegram被宣传为“安全消息传递应用程序”并且在正常聊天期间使用比TLS更高的理论保证的加密方案,但是bot使用传统的TLS来加密传输中的数据。因此,具有解密TLS能力的MitM位置的攻击者可以获得对bot令牌以及 chat_id 的访问,这不仅导致当前通信的完全妥协,而且还影响机器人所参与的所有先前通信。

因此,freebuf小编建议所有用户避免使用Telegram机器人以及避免使用机器人的频道和组。

IOCs (GoodSender)

943eceb00ea52948c30deab1d5824ffcf2fd1cec

*参考来源: forcepoint ,由周大涛编译,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK