Skip to content

Instantly share code, notes, and snippets.

@oschrenk
Created August 15, 2012 23:27
Show Gist options
  • Save oschrenk/3364706 to your computer and use it in GitHub Desktop.
Save oschrenk/3364706 to your computer and use it in GitHub Desktop.
Secure MacBook w/ FileVault 2 and Prey

source

Install, configure, and test Prey on your computer. Be sure it works.

$ wget https://raw.github.com/gist/3364706/be4ca25c49db67acaa8ce760b9f26fce3b1fa3b3/CreatePreyRecovery.sh
$ chmod u+x CreatePreyRecovery.sh
$ ./CreatePreyRecovery.sh
#!/bin/bash
#
# source: https://groups.google.com/d/msg/prey-security/vBv3BGI8Qeg/5xIy0LZjzXAJ
#
# Mount the recovery partition
/usr/bin/sudo /usr/sbin/diskutil mount Recovery\ HD
#
# Backup the recovery boot image
/usr/bin/sudo /bin/cp /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg ~/Desktop/
#
# Create a read/write version, and mount it
/usr/bin/sudo /usr/bin/hdiutil convert ~/Desktop/BaseSystem.dmg -format UDRW -o ~/Desktop/BaseSystem-rw.dmg
/usr/bin/sudo /usr/bin/hdiutil attach ~/Desktop/BaseSystem-rw.dmg
#
# Copy your working Prey installation to the read/write image
/usr/bin/sudo /bin/cp -Rp /usr/share/prey /Volumes/Mac\ OS\ X\ Base\ System/usr/share/
#
# Copy necessary utilities that are missing from the default recovery image
for prog in dirname uname who whoami curl
do
/usr/bin/sudo /bin/cp -p /usr/bin/$prog /Volumes/Mac\ OS\ X\ Base\ System/usr/bin/
done
#
# Create the necessary files/folders
/usr/bin/sudo /bin/mkdir /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons
/usr/bin/sudo /usr/bin/touch /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons/org.preyproject.prey.plist
/usr/bin/sudo /usr/bin/touch /Volumes/Mac\ OS\ X\ Base\ System/private/var/db/launchd.db/com.apple.launchd/overrides.plist
#
# Assign the correct ownership/permissions
/usr/bin/sudo /usr/sbin/chown -R root:wheel /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons
/usr/bin/sudo /usr/sbin/chown root:wheel /Volumes/Mac\ OS\ X\ Base\ System/private/var/db/launchd.db/com.apple.launchd/overrides.plist
/usr/bin/sudo /bin/chmod 755 /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons
/usr/bin/sudo /bin/chmod 644 /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons/org.preyproject.prey.plist
/usr/bin/sudo /bin/chmod 600 /Volumes/Mac\ OS\ X\ Base\ System/private/var/db/launchd.db/com.apple.launchd/overrides.plist
#
# Create the plist file that tells launchctl to run prey every 10 minutes
/usr/bin/sudo /bin/cat > /Volumes/Mac\ OS\ X\ Base\ System/Library/LaunchDaemons/org.preyproject.prey.plist << END1
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.preyproject.prey</string>
<key>LingonWhat</key>
<string>/usr/share/prey/prey.sh</string>
<key>ProgramArguments</key>
<array>
<string>/usr/share/prey/prey.sh</string>
</array>
<key>StartInterval</key>
<integer>600</integer>
</dict>
</plist>
END1
#
# Tell launchctl to load the plist file automatically
/usr/bin/sudo /bin/cat > /Volumes/Mac\ OS\ X\ Base\ System/private/var/db/launchd.db/com.apple.launchd/overrides.plist << END2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>org.preyproject.prey</key>
<dict>
<key>Disabled</key>
<false/>
</dict>
</dict>
</plist>
END2
#
# Be sure launchctl actually loads the plist file at boot
/usr/bin/sudo echo "/bin/launchctl load -F /Library/LaunchDaemons/org.preyproject.prey.plist" >> /Volumes/Mac\ OS\ X\ Base\ System/etc/rc.common
#
# Unmount the modified image
/usr/bin/sudo /usr/bin/hdiutil detach /Volumes/Mac\ OS\ X\ Base\ System
#
# Convert the modified image to compressed read-only, and verify the final image
/usr/bin/sudo /usr/bin/hdiutil convert ~/Desktop/BaseSystem-rw.dmg -format UDZO -o ~/Desktop/BaseSystem+Prey.dmg
/usr/bin/sudo /usr/bin/hdiutil verify ~/Desktop/BaseSystem+Prey.dmg
#
# Replace the old image with the new
/usr/bin/sudo /bin/cp ~/Desktop/BaseSystem+Prey.dmg /Volumes/Recovery\ HD/com.apple.recovery.boot/BaseSystem.dmg
#
# Done!
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment