攻击行动Qubitstrike锁定Jupyter Notebook伺服器部署恶意程式,窃取AWS、Google Cloud帐密

在程式开发与资料科学领域常用的Jupyter Notebook,传出遭到网路攻击锁定的情况,研究人员从他们建置的Juypter密罐陷阱(Honeypot)察觉这起攻击行动。骇客疑似来自突尼西亚首都突尼斯的IP位址,透过物联网搜寻引擎Shodan,寻找曝露在网际网路上的Jupyter Notebook伺服器下手,先是确认处理器的型号,以及能否存取root帐号,并寻找可下手的帐密资料。由于上述命令执行的时间长达195秒,他们推测,骇客应该是透过手动操作的方式执行。

接著骇客目标系统是否存在curl元件,然后下载、执行以Base64演算法加密的指令码mi.sh,启动挖矿软体XMRig,并植入攻击者的SSH金钥,以便持续存取root帐号,随后部署名为Diamorphine的Rootkit程式,以及窃取AWS、Google Cloud等帐密资料,并透过SSH将这些资讯外流,最终使用Telegram机器人的API回传给骇客。

攻击者采取多种措施来让挖矿行动更为隐密

骇客为了避免挖矿过程受到干扰,他们在执行挖矿软体之前采取了多项措施。首先,攻击者将curl、wget等多种常见的资料传输程式档案重新命令,而使得其他不知道档案名称的人士无法执行。再者,则是针对常见的挖矿软体终止相关的处理程序,以免其他攻击者占用运算资源。

过程中骇客也利用名为kthreadd的工具清除其他攻击者的恶意酬载,以及下达netstat指令而关闭其他连线。研究人员还看到名为log_f()的功能函数,攻击者一旦呼叫,就能删除多种Linux的事件记录档案,来防范鉴识人员采集证据。

完成上述一系列的回避侦测工作,mi.sh才会从程式码代管平台Codeberg下载XMRig,并以python-dev的档案名称存放于受害主机,目的应该是让挖矿程式的处理程序看起来较为无害。而这起事故,是他们首度看到有人滥用Codeberg的挖矿攻击行动。

从滥用的储存库找到骇客架设于Discord的C2中继站

研究人员针对骇客滥用的Codeberg储存库进行调查,看到多个骇客存放的指令码,其中一个名为kdfs.py的Python指令码引起他们关注,这个指令码本身是代理程式,并连线至以即时通讯软体Discord机器人架设的C2伺服器,而使得攻击行动更难被察觉。特别的是,对方在指令码嵌入Discord的Token,但透过Base64、Base32、ROT13演算法进行处理,目的可能是防堵其他人解读Token内容。

值得留意的是,攻击者也透过类似蠕虫的方式散布作案工具,感染其他Jupyter Notebook主机。他们使用正规表示法列出SSH的known_hosts储存的IP位址列表,并透过bash指令散布mi.sh档案。