Make Token

The make_token command allows you to impersonate a user if you know their plaintext password. This works under the hood by calling the LogonUserA API, which takes several parameters including a username, password, domain name and logon type. In this instance, the LOGON32_LOGON_NEW_CREDENTIALS logon type is used, which allows the caller to clone its current token and specify new credentials for outbound network connections.

The API outputs a handle to a token which can then be passed to the ImpersonateLoggedOnUser API. This allows the calling thread to impersonate the context of token (i.e. the impersonated user's context).

beacon> make_token DEV\jking Qwerty123
[+] Impersonated DEV\bfarmer

\

The logon session created with LogonUserA has the same local identifier as the caller, which is why, somewhat confusingly, you see "impersonated <current user>" in the console output. But the alternate credentials are used when accessing a remote resource.

beacon> remote-exec winrm web.dev.cyberbotic.io whoami
dev\jking

\

The getuid command will also return the local identifier of the current process, and this does make it hard to track whether or not your Beacon is currently impersonating a user via make_token.

beacon> getuid
[*] You are DEV\bfarmer

\

When in doubt, use rev2self to drop any impersonation that may be in play. This also means that make_token is not applicable to anything you may want to run on the current machine. For that, spawnas may be a better solution.

These logon events can be found in Kibana with the following query:

event.code: 4624 AND winlog.event_data.LogonType: 9

\

Where 4624 is the "An account was successfully logged on" Event ID and LogonType 9 is LOGON32_LOGON_NEW_CREDENTIALS. The events will show who the caller was, what user they impersonated, the calling process name, ID, and more.

\

\

One unfortunate downside to detecting this technique is that runas /netonly behaves in the same way. So it may be difficult to distinguish legitimate and malicious events.

Last updated