KryptoCibule:多任务多货币密码窃取程序
ESET研究人员发现了迄今未记录的恶意软件家族,我们将其命名为KryptoCibule。就加密货币而言,这种恶意软件是三重威胁。它使用受害者的资源来挖掘硬币,尝试通过替换剪贴板中的钱包地址来劫持交易,并泄漏与加密货币相关的文件,同时部署多种技术来避免检测。KryptoCibule在其通信基础架构中广泛使用了Tor网络和BitTorrent协议。
用C#编写的恶意软件还使用了某些合法软件。有些东西,例如Tor和Transmission torrent客户端,与安装程序捆绑在一起。其他的则在运行时下载,包括Apache httpd和Buru SFTP服务器。图1显示了各种组件及其相互作用的概述。
首次执行恶意软件时,会为主机分配一个唯一标识符,格式为{adjective}-{noun},其中{adjective} 和 {noun}是从两个硬编码列表中随机抽取的单词,这些列表提供了超过1000万个唯一组合。然后,该标识符用于标识与C&C服务器通信的主机。
除了与密码有关的组件之外,KryptoCibule还具有RAT功能。它支持的命令包括EXEC(可以执行任意命令)和SHELL(可以从C&C下载PowerShell脚本)。然后,此脚本加载使用后开发工具Pupy生成的后门。
KryptoCibule这个名称源 Czech 语和 Slovak 语中的“ crypto”和“ onion”。
时间线
我们发现了该恶意软件的多个版本,使我们能够追溯到2018年12月的演变。图2显示了KryptoCibule随着时间的变化。
目标
根据ESET遥测技术(如图3所示),该恶意软件似乎主要针对 Czechia和 Slovakia 的用户。这反映了发现受感染的种子的站点的用户基础。
几乎所有的恶意种子都可以在uloz.to上找到;一个在 Czechia 和 Slovakia 受欢迎的文件共享站点(请参见图4)。我们将在下一节解释这些种子是如何被用来传播KryptoCibule的。
如下面的 “ *防检测和防分析技术” *部分所述,KryptoCibule专门检查ESET,Avast和AVG端点安全产品。ESET的总部位于Slovakia,而其他两家则由总部位于捷克共和国的Avast拥有。
Torrents
KryptoCibule利用BitTorrent协议传播给新的受害者并下载其他工具和更新。
Initial Compromise
KryptoCibule通过ZIP文件的恶意洪流传播,其内容伪装成破解或盗版软件和游戏的安装程序。尽管可能包括其他文件,如图5所示,但所有KryptoCibule安装程序档案共有五个文件。packed.001是恶意软件,而packed.002是预期软件的安装程序。两者都使用Setup.exe中包含的密钥进行XOR加密。
当执行Setup.exe时,它将对恶意软件和预期的安装程序文件进行解码。然后,它在后台启动恶意软件,并在前端和中间启动预期的安装程序,从而使受害者没有任何迹象表明存在任何问题。
附加软件和更新
BitTorrent协议还用于将更新下载到恶意软件和其他软件。
KryptoCibule安装了传输守护程序 Torrent客户端,并通过其端口9091上具有传输远程功能的RPC接口发出命令来对其进行管理。RPC接口使用硬编码的凭证superman:krypton。
要安装其他软件以供恶意软件使用,例如SFTP服务器,启动器组件会向%C&C%/softwareinfo?title= < software name > and receives 发出HTTP GET请求,并接收一个JSON响应,其中包含要下载的 Torrent 的吸引人的URI。以及其他指示如何安装和执行程序的信息。图6显示了这种响应的示例。
{"Magnet": "magnet:?xt=urn[:]btih:67yd647nivxhumoedvwnwnzve55b3bxj&dn=free-BuruServer-x64-v1.7.3.zip", "Version": 1,"ExecutableRelativePath": "", "ExecutableFileName": "buru.exe","ExecutableArgs": "run", "InstallFile": "", "HasCustomConfig": true}
图6. GET / softwareinfo?title = ssh_server请求的响应示例
获取更新的机制类似。该恶意软件首先通过HTTP从%C&C%/ settingsv5获取全局设置。除其他外,此响应包含最新版本恶意软件的吸引人的URI。然后,它向%C&C%/ version发出GET请求,以获取最新的版本号。如果本地版本低于该版本,则会下载并安装torrent。
使用以下命令将洪流添加到“传输”中:
transmission-remote localhost -n superman:krypton -a “ < magnet URI > ”
50个跟踪器的硬编码列表用于获取所有torrent的对等对象。
Seeding malicious torrents
受害人也可以用于种子都被恶意软件所使用的种子和种子的恶意这种帮助传播它。受感染的主机从%C&C%/ magnets获取磁铁URI列表,将其全部下载并继续播种。这样可确保这些文件可供其他人广泛下载,这有助于加快下载速度并提供冗余。
抗检测和抗分析技术
该恶意软件利用多种技术来避免检测,以及一些基本的反分析保护。
它从初始访问向量开始。ZIP归档文件中包含的可执行文件是一个相当不错的安装程序,其伪装成合法的InstallShield程序。该文件已用开源程序Obfuscar加密。所有恶意软件的自定义可执行文件都使用相同的工具。恶意代码本身位于XOR加密的文件内,密钥是Setup.exe中经过硬编码的GUID 。
然后,将恶意软件安装到硬编码路径%ProgramFiles(x86)%\ Adobe \ Acrobat Reader DC \ Reader \ update,并将合法的Adobe Acrobat Reader可执行文件名称用于捆绑的Tor可执行文件及其本身。安装文件夹中包含的某些文件如图7所示。
为了实现持久性,KryptoCibule使用以下命令创建了一个计划的任务,该任务每五分钟运行一次。再次使用与Adobe Reader相关的名称。
chtasks.exe /CREATE /SC MINUTE /MO 5 /TN “Adobe Update Task” /TR \””%ProgramFiles(x86)%\Adobe\Acrobat Reader DC\Reader\Update\armsvc.exe\”” [/RL HIGHEST] /F [/RU SYSTEM]
在首先执行有效负载之前以及在主循环的每次迭代之前,该恶意软件都会使用以下列表对运行分析软件进行检查。如果找到任何具有匹配名称的进程,它将停止所有正在运行的组件并退出。
- cain
- filemon
- netmon
- netstat
- nmwifi
- perfmon
- processhacker
- procexp
- procexp64
- procmon
- regmon
- tasklist
- taskmgr
- tcpvcon
- tcpview
- wireshark
防病毒规避
在初始化cryptominer组件之前,该恶意软件对rootSecurityCenter2 \ AntiVirusProduct WMI对象执行不区分大小写的字符串avast,avg和eset的检查,如图8的反编译代码所示。是否应检测到这些字符串中的任何一个?如果检测到它们,将不会安装cryptominer组件。
每当恶意软件自行安装,更新或新组件进行安装时,通过发出以下命令,将使用的安装路径从Windows Defender自动扫描中排除:
powershell -c “Add-MpPreference -ExclusionPath ‘< install path > ‘”
它还使用看起来无害的名称创建防火墙规则,以明确允许来自其组件的入站和出站流量。图9所示的功能还创建了一条规则,以阻止来自ESET内核服务(ekrn.exe)的出站流量。
Tor网络使用
KryptoCibule带来了tor.exe命令行工具(伪装为ADelRCP.exe)和配置文件(如图10所示)libstringutils.dll。
这将在端口9050上设置一个SOCKS代理,恶意软件使用该SOCKS代理通过Tor网络中继与C&C服务器的所有通信。这具有加密通信的双重好处,并且几乎不可能跟踪这些URI后面的实际服务器。
配置文件的第二部分在受害主机上设置 onion 服务。运营商可以通过Tor网络访问这些内容。首次启动这些服务时,Tor会自动为主机生成一个.onion URI。然后,此唯一主机名将发送到 %C&C%/transferhost/ < unique name > 。我们将在接下来的部分中讨论如何使用这些 onion 服务。
端口号 | 服务 |
---|---|
9091 | 传输守护程序RPC接口 |
9999 | Apache httpd服务器 |
9187 | Buru SFTP服务器 |
9188 | Buru网站管理员 |
12461 | MiniWeb HTTP服务器 |
恶意软件中包含两个C&C服务器的洋葱URI。其中一个提供了REST API,恶意软件将其用于大多数通信,而另一个则用于下载文件。通过向%C&C%/ server发出请求,可以一次获得一个附加的URI 。某些较旧版本的恶意软件使用它们通过端口12461下载更新。我们相信这些URI指向其他受感染的主机。使用它们的恶意软件版本具有代码,可将其下载的更新放入同一端口上的MiniWeb HTTP Server服务的目录中。
我们能够在遥测数据中为文件服务器C&C标识一个IP地址。
获取加密货币
KryptoCibule具有三个组件,这些组件利用受感染的主机来获取加密货币。
加密矿
KryptoCibule的最新版本使用XMRig(一个使用CPU挖掘Monero的开源程序)和kawpowminer(另一个使用GPU挖掘以太坊的开源程序)。第二个仅在主机上找到专用GPU时使用。这两个程序都设置为通过Tor代理连接到操作员控制的挖掘服务器。
在主循环的每次迭代中,恶意软件都会检查电池电量以及自上次用户输入以来的时间。然后,它将基于此信息启动或停止矿工进程。如果主机在最近3分钟内未收到任何用户输入,并且电池电量至少为30%,则GPU和CPU矿机都将不受限制地运行。否则,GPU矿工将被挂起,并且CPU矿工被限制为一个线程。如果电池电量不足10%,则两个矿工都将停止。这样做是为了减少被受害者注意的可能性。
剪贴板劫持
第二个组件伪装为SystemArchitectureTranslation.exe。它使用AddClipboardFormatListener函数来监视对剪贴板的更改,并将从%C&C%/ regexes获得的替换规则应用于其内容。该侦听器的代码如图11所示。值0x31D对应于WM_CLIPBOARDUPDATE常量。
这些规则以< regular_expresssion > !< wallet >的形式匹配加密货币钱包地址的格式,并将其替换为由恶意软件操作员控制的钱包地址。这是尝试将受害者进行的交易重定向到运营商的钱包。每当settings.cfg文件更改时,此组件便使用FileSystemWatcher重新加载替换规则。
在撰写本文时,剪贴板劫持组件使用的钱包收到了略高于1800美元的比特币和以太币。图12中显示了一个这样的钱包。通过将与相同交易中的来源的钱包相关联,我们能够发现至少四个可能属于KryptoCibule运营商的其他比特币钱包。
文件泄漏
第三个组件遍历每个可用驱动器的文件系统,并查找包含某些术语的文件名。我们在调查中获得的这些术语的列表如图13所示。
["wallet.dat", "utc--2014", "utc--2015", "utc--2016", "utc--2017", "utc--2018", "utc--2019", "utc--2020", ".address.txt", "electrum", "bitcoin", "litecoin", "ethereum", "cardano", "zcash", "monero", "cripto", "krypto", "binance", "tradeogre", "coinbase", "tether", "daedalus", "stellar", "tezos", "chainlink", "blockchain", "verge", "bittrex", "ontology", "vechain", "doge", "qtum", "augur", "omisego", "digibyte", "seele", "enjin", "steem", "bytecoin", "zilliqa", "zcoin", "miner", "xmrig", "xmr-stak","electroneum", "heslo", "waves", "banka", "crypto", "hesla", "seed", "metamask", "antminer", "trezor", "ledger", "private", "trx", "exodus", "password", "jaxx", "guarda", "atomic.exe", "copay.exe", "Green Address Wallet.exe", "msigna.exe", "ArmoryQT.exe", ".ssh", ".aws", "Desktop"]
图13.从GET%C&C%/ settingsv5响应中提取的要搜索的单词列表
大多数术语指的是加密货币,钱包或矿工,但也存在一些更通用的术语,例如加密货币(多种语言),种子和密码。该列表包含 Czech 和 Slovak 语中的类似术语,例如heslo,hessla和banka(分别是“ password”,“ passwords”和“ bank”两个词)。一些术语也对应于路径或文件,这些路径或文件可以提供其他有趣的数据(Desktop,私有),包括私有密钥(.ssh和.aws)。它收集每个匹配文件的完整路径,并将列表发送到%C&C%/found/< unique name >。
我们认为,这与在端口9187上作为 onion 服务运行的SFTP服务器协同工作。此服务器为每个可用驱动器创建映射,并使用在恶意软件中硬编码的凭据使它们可用。通过使攻击者控制的计算机通过SFTP从受感染的主机请求收集的路径,可以将这些路径用于文件泄漏。
KryptoCibule还安装了合法的Apache httpd服务器,该服务器配置为无限制地充当转发代理,并且可以作为端口9999上的 onion 服务访问。
结论
自2018年底以来,KryptoCibule恶意软件一直在泛滥,并且仍处于活动状态,但到目前为止似乎并没有引起太多关注。它使用合法的开放源代码工具以及广泛部署的反检测方法可能是造成此问题的原因。受害者人数相对较少(数百人),而且他们大多局限于两个国家,这也可能是造成这种情况的原因。KryptoCibule在其生命周期中定期添加了新功能,并且仍在积极开发中。
据推测,与我们在剪贴板劫持组件所使用的钱包中发现的相比,恶意软件操作员通过窃取钱包和挖掘加密货币能够赚取更多的钱。仅由该组件产生的收入似乎不足以证明所观察到的开发工作是合理的。
