0x00. CONTEXTE
Ces programmes seront téléchargés et compilés dans /usr/local/src.
Pour leur installation dans le chemin par défaut, /usr, il faudra désactiver SIP via la commande depuis le démarrage en mode rescue (appuyer sur ALT+R à l’allumage) :
csrutil disable
Voici les liens de téléchargements :
Télécharger *sudo* sur https://www.sudo.ws/download.html
Télécharger *libressl* sur http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
Télécharger *openssh* sur http://ftp.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/
0x01. SUDO
Téléchargement :
url="$(curl -s 'https://www.sudo.ws/download.html' \ |grep tar.gz\ |head -n1\ |cut -d'"' -f2)" ver="$(basename "$url")" curl "$url" -o "$ver"
Installation :
sudo port install libssh2 brotli ln -s /opt/local/include/brotli /usr/local/include/ ln -s /opt/local/include/*ssh* /usr/local/include/ ln -s /opt/local/include/*ssl* /usr/local/include/ ./configure \ --prefix=/usr \ --bindir=/usr/bin \ --libexecdir=/usr/libexec \ --sysconfdir=/etc \ --with-plugindir=/usr/libexec/sudo \ --enable-asan \ --with-timeout \ --with-tty-tickets \ --with-all-insults \ --with-man \ --with-env-editor \ --with-mdoc \ --with-password-timeout \ --with-timeout \ --with-pam \ --with-pam-login \ --with-rundir=/var/db/sudo \ --with-env-editor \ --with-pam \ --with-libraries=bsm \ --with-password-timeout=0 \ --enable-asan \ --enable-pie \ --disable-setreuid \ --without-lecture \ --enable-static-sudoers 2>configure.err \ && make 2>make.err && make install 2>make_install.err # Pour être sur de pointer sur la version de curl tout juste installée echo "alias curl='/usr/bin/curl'" >> ~/.bashrc
0x02. LIBRESSL
Téléchargement :
ver=$(curl -s 'http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/'\ |grep -vi beta \ |egrep -o "libressl-[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}(-[a-z]+)?.tar.gz" \ |sort -u \ |tail -n1) curl "http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/$ver" -o $ver
Installation :
./configure \ --prefix=/usr \ --sysconfdir=/usr/etc \ --with-ssl-engine \ --with-pie \ --with-libs 2>configure.err \ && make 2>make.err && make install 2>make_install.err
0x03. OPENSSH
Téléchargement :
ver=$(curl -s 'http://ftp.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/' \ |grep -vi "beta|alpha|rc" \ |grep -Eo "openssh-[0-9]+.[0-9]+([a-z][0-9]+)?.tar.gz" \ |sort -rn \ |head -n1) curl "http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$ver" -o $ver
Installation :
ln -s /usr/include/ ./configure \ --prefix=/usr \ --sysconfdir=/etc/ssh \ --with-ssl-engine \ --bindir=/usr/bin \ --libexecdir=/usr/libexec \ --includedir=/usr/include \ --with-include-dir=/usr/include/openssl \ --without-openssl-header-check \ --with-ssl-dir=/usr/lib \ --with-pie \ --with-pam 2>configure.err \ && make 2>make.err && make install 2>make_install.err
0x03. PERMISSIONS APFS
Il faudra signer les binaires, pour cela il est nécessaire de créer une signature :


Du coup, pour signer et remettre le flag restricted sur les fichiers fraichement installés. Sans oublier de mettre sudo avec le bit SetUID (chmod +s, chmod 4xxx)
for file in /usr/bin/ssh* \ /usr/bin/scp \ /usr/bin/ocspcheck \ /usr/bin/cvtsudoers \ /usr/bin/sudoreplay \ /usr/bin/sudo \ /usr/bin/openssl \ /usr/sbin/visudo \ /usr/libexec/sudo/sudoers.so \ /usr/libexec/sudo/group_file.so \ /usr/libexec/sudo/system_group.so \ /usr/libexec/sudo/libsudo_util.0.dylib \ /usr/libexec/sudo/sudo_noexec.so \ /usr/lib/libcrypto.45.dylib \ /usr/lib/libtls.19.dylib \ /usr/local/lib/libssl* \ /usr/lib/libssl.47.dylib ; do ls -1 $file >/dev/null 2>&1 || continue codesign -s YourSignature -v -f "$file" chflags restricted "$file" done chown root:wheel /usr/sbin/visudo chmod 4755 /usr/sbin/visudo chown root:wheel /usr/bin/sudo* chmod 4755 /usr/bin/sudo* chflags restricted /usr/bin/sudo # les composants appelés par curl ne sont pas signés et une fois SIP réactivé, curl ne pourra s'exécuter chflags norestricted "/usr/bin/curl"
=> Écrit par : Nicolas, le 02 mai 2019