Beyond the good ol' LaunchAgents - 15 - xsanctl

This is part 15 in the series of “Beyond the good ol' LaunchAgents”, where I try to collect various persistence techniques for macOS. For more background check the introduction.

I run into this not so exciting persistent method when I was investigating xsanctl for… other… reasons… xsanctl is a “Xsan file system control utility”, which allows us to mount and manage Xsans.

The xsanctl binary can be found at /System/Library/Filesystems/acfs.fs/Contents/bin/xsanctl, however when we simply run the command it is run from /usr/sbin/xsanctl. If we check, this is a symbolic link.

csaby@mac exploits % ls -l /usr/sbin/xsanctl
lrwxr-xr-x  1 root  wheel  63 Jan  1  2020 /usr/sbin/xsanctl -> /System/Library/Filesystems/acfs.fs/Contents/bin/redirection.sh

Interestingly the link points to a script and not the actual binary.

The script is very short.

#!/bin/sh
if [ -r /Library/Preferences/Xsan/.xsanrc ]
then
    . /Library/Preferences/Xsan/.xsanrc
fi
if [ x"${XSAN_ALT_BINDIR}" == x ]
then
    XSAN_ALT_BINDIR=/System/Library/Filesystems/acfs.fs/Contents/bin
fi
COMMAND=`basename $0`
${XSAN_ALT_BINDIR}/${COMMAND} "$@"

It will execute the file /Library/Preferences/Xsan/.xsanrc if exists. Moreover it will also look for the xsanctl binary in different location if the XSAN_ALT_BINDIR environment variable is defined, which allows further redirection.

Essentially we can persist in the /Library/Preferences/Xsan/.xsanrc script. Unfortunately this location requires root access, and this utility likely also not frequently run, especially by non-enterprise users.

So it’s not super useful, but thought it would worth a quick post.