Example #1
0
        public static void SetTokenPrivilege(ref IntPtr hToken, string privilege)
        {
            if (!validPrivileges.Contains(privilege))
            {
                //Console.WriteLine("[-] Invalid Privilege Specified");
                log.Log(LogType.Error, "Invalid Privilege Specified!");
                return;
            }

            log.Log(LogType.Normal, "[+] Adjusting Token Privilege...");
            //Console.WriteLine("[*] Adjusting Token Privilege");
            ////////////////////////////////////////////////////////////////////////////////
            var luid = new WinAPI._LUID();

            if (!WinAPI.LookupPrivilegeValue(null, privilege, ref luid))
            {
                //GetError("LookupPrivilegeValue");
                log.Log(LogType.Failure, "LookupPrivilegeValue: {0}", Marshal.GetLastWin32Error());
                return;
            }

            //Console.WriteLine(" [+] Received luid");
            log.Log(LogType.Normal, "[+] Recieved LUID...");

            ////////////////////////////////////////////////////////////////////////////////
            var luidAndAttributes = new WinAPI._LUID_AND_ATTRIBUTES();

            luidAndAttributes.Luid       = luid;
            luidAndAttributes.Attributes = Constants.SE_PRIVILEGE_ENABLED;

            var newState = new WinAPI._TOKEN_PRIVILEGES();

            newState.PrivilegeCount = 1;
            newState.Privileges     = luidAndAttributes;

            var  previousState = new WinAPI._TOKEN_PRIVILEGES();
            uint returnLength  = 0;

            //Console.WriteLine(" [*] AdjustTokenPrivilege");
            //log.Log(LogType.Debug, "");
            if (!WinAPI.AdjustTokenPrivileges(hToken, false, ref newState, Marshal.SizeOf(newState), ref previousState,
                                              out returnLength))
            {
                //GetError("AdjustTokenPrivileges");
                log.Log(LogType.Failure, "AdjustTokenPrivileges: {0}", Marshal.GetLastWin32Error());
                return;
            }

            log.Log(LogType.Success, "Adjusted Token to: {0}", privilege);
            //Console.WriteLine(" [+] Adjusted Token to: " + privilege);
            //return;
        }