SlideShare a Scribd company logo
1 of 59
Download to read offline
Automated Hunting for
Cross-Server Xrefs
in Microsoft RPC and COM
Who We Are?
•Founder partner of MeetSec Technology Co., Ltd.,
•Leader of security department,
•A memeber of SycloverSecurity team.
•Penetration testing,Cyber Security researching,Web&OS programing.
ZhiMin Wang
YongQing He
•Security Researcher
•A member of SycloverSecurity
•Penetration testing & Coding
•Employee of MeetSec Technology Co., Ltd.,
Sai Cheng
•A member of SycloverSecurity
•Windows Security & Web Security
•Employee of MeetSec Technology Co., Ltd.,
Who We Are?
Penetration Testing & Security Training
Many Clients of energy sector
Who We Are?
Syclover
We focus on Cyber Security
Agenda
•Overview of MSRPC and COM
•Introducing Cross-Server Xrefs(CSX)
•Searching call chains to find logic bugs
•Disadvantages of common call chain searching — Missing the CSX
•Some attack surfaces in CSX
•An automated approach to find CSX and its limitation
•About Backtrack in Metasm
•Using Backtrack to implement our algorithm
•The limitation
•Demo
Microsoft RPC
•A kind of Remote Procedure Call
•Client-Server model
•Server exposes interfaces, which contain routines
•Client calls functions in its own address space, translated by
runtime library and stubs into remote server routines
•Many built-in privileged RPC servers in Windows
Microsoft RPC
Interface
Func()
Routine 2
Routine 3
Routine 4
Server ProcessClient Process
Runtime
Library
Application Code
HRESULT Func(void);
Stub
Translates to
Client Server
Microsoft RPC
myinterface.idl
myinterface_c.c myinterface_s.cmyinterface_s.h
MIDL Compiler
Application Code
Client Stub Server Stub
“MEOW, MEOW. I’m a cat, please feed me OBJREF”
Component Object Model(COM) 
Vtable Pointer QueryInterface() Pointer
AddRef() Pointer
Release() Pointer
Method1() Pointer
Method2() Pointer
COM Object
Data
Human
IUnknown
IWork
Inherits from IUnknown
ISleep
ICsgo
Client
Interactive with
Interface
Interface Methods
Apartment in COM
•Single-Threaded Apartment(STA)
•Multi-Threaded Apartment(MTA)
•Neutral-Threaded Apartment(NTA)
Instance
Apartment
Process
Thread
Apartment 1 Apartment 2
InstanceProxy
Cross-Apartment
Single-Threaded Apartment
STA
Thread 1 Affinity
Instance
Process
STA
Thread 2
Instance
STA
Thread 3
Instance
Multi-Threaded Apartment
Instance
Thread 1 Thread 2
MTA
Process
In-Proc and Out-of-Proc Server
Process
Instance
Client
Process A
Client
Process B
Instance
ORPC or other channel
In Process
Out of Process
Case Study of Logic Bug: CVE-2020-0773
•Time-of-Check to Time-of-Use
Common Call Chain Searching
Server Process
Func()
Sub()
Blah()
CopyFileW
A piece of cake.
Disassembler
But if across process boundary…
Server Process 1
Func()
Sub()
Blah()
RemoteCall()
Server Process 2
Sub()
CopyFileW
As COM/RPC Client
Cross-Server Xrefs
Cross-Server Xrefs
RPC/COM
Server
RPC/COM
Server
Client
COM Server RPC ServerClient
Cross-Apartment Xrefs in COM
MTA STA
Proxy
COM Object
Proxy
COM Object
Client
Application
Impersonation
Client
Server
Thread 1
ImpersonatedCall
Client
Server
Thread 1
Without Impersonation
Call
*Different colors for different identities
Impersonation
Client
RPC Server
Thread 1
Impersonated
Thread 1
RPC Server
Client
RPC Server
Thread 1
Impersonated
Thread 1
RPC Server
Without Impersonation
Impersonated
*Different colors for different identities
RPC Security Callback Function Bypass
Security
Callback
Client
Thread 1
Impersonated
RPC Server 1
Interface
Client
PassFirst time
Second time
RPC_STATUS RpcServerRegisterIf2(
RPC_IF_HANDLE IfSpec,
UUID *MgrTypeUuid,
RPC_MGR_EPV *MgrEpv,
unsigned int Flags,
unsigned int MaxCalls,
unsigned int MaxRpcSize,
RPC_IF_CALLBACK_FN *IfCallbackFn
);
#define RPC_IF_AUTOLISTEN 0x0001
#define RPC_IF_OLE 0x0002
#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
#define RPC_IF_ALLOW_SECURE_ONLY 0x0008
#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020
#define RPC_IF_SEC_NO_CACHE 0x0040
#if (NTDDI_VERSION >>= NTDDI_VISTA)
#define RPC_IF_SEC_CACHE_PER_PROC 0x0080
#define RPC_IF_ASYNC_CALLBACK 0x0100
#endif /// (NTDDI_VERSION >>= NTDDI_VISTA)
Disables security callback caching,
forcing a security callback for each
RPC call on a given interface.
Cache enabled by default!
RPC Security Callback Function Bypass
Attacker
Thread 1
Impersonated
RPC Server 1
Application
Attacker
PassFirst time
Second time
Is the client
PID same
as RPC
Server 1?
Impersonation in COM
Client
COM Server
Thread 1
Impersonated
COM Server
Thread 1
Impersonated
Without Cloaking
*Different colors for different identities
Impersonation in COM
Client
COM Server
Thread 1
Impersonated
COM Server
Thread 1
Impersonated
With Cloaking
*Different colors for different identities
Review of Cross-Apartment
MTA STA
Proxy
COM Object
Proxy COM Object
Client
Application
Impersonated
Thread 1 Thread 1
Impersonated
*Different colors for different identities
Cloaking
•Types
•Static Cloaking(EOAC_STATIC_CLOAKING)
•Dynamic Cloaking(EOAC_DYNAMIC_CLOAKING)
•Configuration
• CoInitializeSecurity
• CoSetProxyBlanket(Wrapper function of IClientSecurity::SetBlanket)
•Not useful without impersonation
•Not set by default
•Pick up thread token(if it has one), otherwise process token
Cloaking
IMyIface Proxy
ProxyManager
IBlah Proxy
As Client
COM Object
Proxy Identity
Call
CoInitializeSecurity
CoSetProxyBlanket
Process-Wide
Static Cloaking
•Cached Identity
Method1()Application
First call
Proxy
Method1()Application
First call
Proxy
Pick up thread/process token
Method1()Application
Subsequent call
Proxy
Fixed Identity
CoInitializeSecurity
Static Cloaking
•Cached Identity
ProxyCoSetProxyBlanket
Set blanket
CoSetProxyBlanket
Set blanket Pick up thread/process token
Method1()Application
Subsequent call
Proxy
Fixed Identity
CoSetProxyBlanket
Proxy
Dynamic Cloaking
ProxyApplication
Call
ProxyApplication
Call
•Pick up token on each call
Traps in Cloaking
•Using CoInitializeSecurity
0x831728
0x831728
Same interface proxy
Traps in Cloaking
0x831728
•Using CoInitializeSecurity
Traps in Cloaking
COM Server
•Using CoInitializeSecurity
Proxy
0x831728
CMyClass:Call1()Client
Projects identity
Client
First call
Subsequent call
Note: Not all coclasses have this behavior
*Different colors for different identities
Automated search for
Cross-Server Xrefs
Finding RPC Server Routines(interpreted mode)
typedef struct _RPC_SERVER_INTERFACE
{
unsigned int Length;
RPC_SYNTAX_IDENTIFIER InterfaceId;
RPC_SYNTAX_IDENTIFIER TransferSyntax;
PRPC_DISPATCH_TABLE DispatchTable;
unsigned int RpcProtseqEndpointCount;
PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
RPC_MGR_EPV *DefaultManagerEpv;
void const *InterpreterInfo;
unsigned int Flags ;
} RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE;
typedef struct {
unsigned int DispatchTableCount;
RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
LONG_PTR Reserved;
} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
typedef struct _MIDL_SERVER_INFO_
{
PMIDL_STUB_DESC pStubDesc;
const SERVER_ROUTINE * DispatchTable;
PFORMAT_STRING ProcString;
const unsigned short * FmtStringOffset;
const STUB_THUNK * ThunkTable;
PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
ULONG_PTR nCount;
PMIDL_SYNTAX_INFO pSyntaxInfo;
} MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
typedef struct _RPC_PROTSEQ_ENDPOINT
{
unsigned char * RpcProtocolSequence;
unsigned char * Endpoint;
} RPC_PROTSEQ_ENDPOINT, * PRPC_PROTSEQ_ENDPOINT;
Routine 1 Pointer
Routine 2 Pointer
Routine 3 Pointer
Routine 4 Pointer
[
uuid(4F12331F-FC50-4E96-940A-3882DC8F971E),
endpoint(“ncacn_np:[pipemyendpoint]”)
]
sizeof(RPC_SERVER_INTERFACE)
Count
Analyzing MIDL Switch Options For Server
typedef struct {
unsigned int DispatchTableCount;
RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
LONG_PTR Reserved;
} RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
NdrServerCall2
NdrServerCall
NdrServerCallNdr64
0
…
/Oi(c)f
/Oi(c)
/protocol ndr64
64-bit environment
typedef struct _RPC_SERVER_INTERFACE
{
unsigned int Length;
…
void const *InterpreterInfo;
unsigned int Flags ;
} RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE;
If null pointer
Inline stub(/Os mode)
Contradictory with /protocol ndr64|all
Analyzing MIDL Switch Options For Server
typedef struct _RPC_SERVER_INTERFACE
{
unsigned int Length;
…
…
void const *InterpreterInfo;
unsigned int Flags ;
} RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE;
0x6000000
typedef struct _MIDL_SERVER_INFO_
{
PMIDL_STUB_DESC pStubDesc;
…
PFORMAT_STRING ProcString;
…
PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
ULONG_PTR nCount;
PMIDL_SYNTAX_INFO pSyntaxInfo;
} MIDL_SERVER_INFO, *PMIDL_SERVER_INFO;
typedef struct _MIDL_SYNTAX_INFO
{
RPC_SYNTAX_IDENTIFIER TransferSyntax;
RPC_DISPATCH_TABLE * DispatchTable;
…
…
} MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
NdrServerCallAll
…
…
…
>>= 2
•/protocol all with 64-bit environment
Finding RPC Client Routines(/Oicf mode)
Finding RPC Client Routines(/Oicf mode)
Client routine
RPC_CLIENT_INTERFACE
MIDL_STUB_DESC
PROC_FORMAT_STRING
?
?
?
Backtracking technique in Metasm
require 'metasm'
include Metasm
sc = <<<--EOS
push eax
mov eax, 0x4c
mov ebx, 0x21
sub eax, 1
sub ebx, 0x4
push edx
push ecx
add eax, 0x3c
inc ebx
sub eax, ebx
jmp eax
EOS
dasm = Metasm:::Shellcode.assemble(Metasm:::Ia32.new, sc).init_disassembler
dasm.disassemble(0)
block = dasm.block_at(0)
block.list.each do |di|
puts "Instruction: " + di.instruction.to_s
bt_binding = di.backtrace_binding
bt_binding.map {{|k, v| puts "##{k} =>= ##{v}"}
puts
end
puts "Result of backtracking expression 'eax': "
puts dasm.backtrace(Expression[:eax], block.list.last.address).first.to_s
Our test shellcode
Backtrack symbolic expression “eax”
from instruction “jmp eax”
Backtracking technique in Metasm
Backtracking technique in Metasm
SWEET technique…
Return non-symbolic value after backtracking
static const
Backtracking for key information
typedef struct _MIDL_STUB_DESC
{
void * RpcInterfaceInformation;
.....
.....
} MIDL_STUB_DESC;
RPC_CLIENT_INTERFACE
Same layout as RPC_SERVER_INTERFACE
Get interface identifier
and Transfer syntax
•Interface information
Backtracking for key information
Routine 1
Routine 2
…
…
Proc Number 0
Proc Number 1
NdrClientCall(…, PFORMAT_STRING pFormat, …)
NdrClientCall2(…, PFORMAT_STRING pFormat, …)
NdrClientCall3(…, unsigned long nProcNum, …)
NdrClientCall4(…, PFORMAT_STRING pFormat, …)
•Procedure Number
Decompile
NDR procedure format string
Backtracking parameter
Stubless proxy
/protocol all with 64-bit env
Decompile NDR Format String
Header Descriptor
Param A Descriptor
Param B Descriptor
Param C Descriptor
Procedure Format String
Handle type
Oi Flags
RPC Flags(optional)
Procnum
Stack size
…
Common /Oif mode
That’s what we need!
Another Example:
Backtracking RPC Security Callback Function
•RpcServerRegisterIf2/RpcServerRegisterIf3/RpcServerRegisterIfEx
RPCServerRegisterIf2(
RPC_IF_HANDLE IfSpec,
UUID *MgrTypeUuid,
RPC_MGR_EPV *MgrEpv,
unsigned int Flags,
unsigned int MaxCalls,
unsigned int MaxRpcSize,
RPC_IF_CALLBACK_FN *IfCallbackFn
)
Server interface
Check if the cache is disabled
Function address
Another Example:
Backtracking RPC Security Callback Function
•Security Callback Function Checks Caller's PID
RPCServerRegisterIf2(
RPC_IF_HANDLE IfSpec,
UUID *MgrTypeUuid,
RPC_MGR_EPV *MgrEpv,
unsigned int Flags,
unsigned int MaxCalls,
unsigned int MaxRpcSize,
RPC_IF_CALLBACK_FN *IfCallbackFn
)
Security Callback
I_RpcBindingInqLocalClientPID
RpcServerInqCallAttributes
Calls
Finding COM Interface Methods
•Hooking NdrStubCall2/NdrStubCall3 for standard marshaler
•Casting pThis parameter to pointer of CStdStubBuffer
•Get member variable pvServerObject
•Event Tracing for Windows(ETW)
•Provider Name: Microsoft-Windows-COM-Perf
•GUID: b8d6861b-d20f-4eec-bbae-87e0dd80602b
•Event ServerSyncCallStart/ServerAsyncCallStart
•Parsing internally maintained database in COM server(OleViewDotNet)
Finding COM Client
•Backtracking COM Object Activation API
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID *ppv
);
Example: CoCreateInstance
Get Class Id
Get Interface Id
But interface pointer
is symbolic value
lea rax, [rsp+ppv]
mov qword ptr [rsp+arg], rax
…
…
call CoCreateInstance
…
…
mov rcx, [rsp+ppv]
mov rax, [rcx]
call qword ptr [rax+28h] ; Calling interface method
Backtracking from here
[[rsp+32]]
Symbolic value
Finding COM Client
•Backtracking COM Object Activation API
Example: CoCreateInstance
lea rax, [rsp+ppv]
mov qword ptr [rsp+arg], rax
…
…
call CoCreateInstance
…
…
mov rcx, [rsp+ppv]
mov rax, [rcx]
call qword ptr [rax+28h]
Vtable pointer
Backtracking rax
for last known value
qword ptr [qword ptr [rsp+50h]]
Object Pointer
Backtracking
[[rsp+32]]
for last known value
Interface Pointer
Is it equal?
We know which
interface method
was called
True
Offset to fptr
Meow(ICat * This, …)
*Without CFG
Talk is cheap
And
Show me the TOOL!
About TurboRex
•A Ruby gem
•RPC Server/Client routines locator
•COM interface methods locator
•Cross-Server Xrefs searcher
•ALPC Server && Client
•COM Client
•COM Fuzzer(in progress)
https://github.com/existXFx/TurboRex
Sorry there is no live demo
Acknowledgement(in no particular order)
•James Forshaw(@tiraniddo)
•k0shl(@KeyZ3r0)
•Ox9A82(@Ox9A82)
•0xmuhe(@0xmuhe)
•Yoann GUILLOT(developer of Metasm)
•Code Blue Official
•Other people who helped us
Thanks!
Q & A

More Related Content

What's hot

powershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonpowershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonnettitude_labs
 
Hunting for security bugs in AEM webapps
Hunting for security bugs in AEM webappsHunting for security bugs in AEM webapps
Hunting for security bugs in AEM webappsMikhail Egorov
 
Rahul-Analysis_of_Adversarial_Code
Rahul-Analysis_of_Adversarial_CodeRahul-Analysis_of_Adversarial_Code
Rahul-Analysis_of_Adversarial_Codeguest66dc5f
 
Shreeraj-Hacking_Web_2
Shreeraj-Hacking_Web_2Shreeraj-Hacking_Web_2
Shreeraj-Hacking_Web_2guest66dc5f
 
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin Magazine
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin MagazineNIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin Magazine
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin MagazineAditya K Sood
 
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...Aditya K Sood
 
Как мы взломали распределенные системы конфигурационного управления
Как мы взломали распределенные системы конфигурационного управленияКак мы взломали распределенные системы конфигурационного управления
Как мы взломали распределенные системы конфигурационного управленияPositive Hack Days
 
Denis Zhuchinski Ways of enhancing application security
Denis Zhuchinski Ways of enhancing application securityDenis Zhuchinski Ways of enhancing application security
Denis Zhuchinski Ways of enhancing application securityАліна Шепшелей
 
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoBreaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoShakacon
 
02 banking trojans-thomassiebert
02 banking trojans-thomassiebert02 banking trojans-thomassiebert
02 banking trojans-thomassiebertgeeksec80
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundDirkjanMollema
 
Big problems with big data – Hadoop interfaces security
Big problems with big data – Hadoop interfaces securityBig problems with big data – Hadoop interfaces security
Big problems with big data – Hadoop interfaces securitySecuRing
 
Attack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack FuAttack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack FuRob Ragan
 
Socially Acceptable Methods to Walk in the Front Door
Socially Acceptable Methods to Walk in the Front DoorSocially Acceptable Methods to Walk in the Front Door
Socially Acceptable Methods to Walk in the Front DoorMike Felch
 
На страже ваших денег и данных
На страже ваших денег и данныхНа страже ваших денег и данных
На страже ваших денег и данныхPositive Hack Days
 
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...Benjamin Delpy
 

What's hot (20)

1000 to 0
1000 to 01000 to 0
1000 to 0
 
powershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-londonpowershell-is-dead-epic-learnings-london
powershell-is-dead-epic-learnings-london
 
Hunting for security bugs in AEM webapps
Hunting for security bugs in AEM webappsHunting for security bugs in AEM webapps
Hunting for security bugs in AEM webapps
 
Rahul-Analysis_of_Adversarial_Code
Rahul-Analysis_of_Adversarial_CodeRahul-Analysis_of_Adversarial_Code
Rahul-Analysis_of_Adversarial_Code
 
Shreeraj-Hacking_Web_2
Shreeraj-Hacking_Web_2Shreeraj-Hacking_Web_2
Shreeraj-Hacking_Web_2
 
A Year in the Empire
A Year in the EmpireA Year in the Empire
A Year in the Empire
 
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin Magazine
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin MagazineNIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin Magazine
NIframer - CPanel IFrame Injector (Bash based) - Virus Bulletin Magazine
 
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
BlackHat 2014 Briefings - Exploiting Fundamental Weaknesses in Botnet C&C Pan...
 
Как мы взломали распределенные системы конфигурационного управления
Как мы взломали распределенные системы конфигурационного управленияКак мы взломали распределенные системы конфигурационного управления
Как мы взломали распределенные системы конфигурационного управления
 
Denis Zhuchinski Ways of enhancing application security
Denis Zhuchinski Ways of enhancing application securityDenis Zhuchinski Ways of enhancing application security
Denis Zhuchinski Ways of enhancing application security
 
I See You
I See YouI See You
I See You
 
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin VigoBreaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
Breaking Vaults - Stealing Lastpass Protected Secrets by Martin Vigo
 
02 banking trojans-thomassiebert
02 banking trojans-thomassiebert02 banking trojans-thomassiebert
02 banking trojans-thomassiebert
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHound
 
Big problems with big data – Hadoop interfaces security
Big problems with big data – Hadoop interfaces securityBig problems with big data – Hadoop interfaces security
Big problems with big data – Hadoop interfaces security
 
Attack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack FuAttack Chaining: Advanced Maneuvers for Hack Fu
Attack Chaining: Advanced Maneuvers for Hack Fu
 
Secure coding in C#
Secure coding in C#Secure coding in C#
Secure coding in C#
 
Socially Acceptable Methods to Walk in the Front Door
Socially Acceptable Methods to Walk in the Front DoorSocially Acceptable Methods to Walk in the Front Door
Socially Acceptable Methods to Walk in the Front Door
 
На страже ваших денег и данных
На страже ваших денег и данныхНа страже ваших денег и данных
На страже ваших денег и данных
 
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...
BlueHat 2014 - The Attacker's View of Windows Authentication and Post Exploit...
 

Similar to [CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM by Sai Cheng, Yongqing He and Zhimin Wang

Distributes objects and Rmi
Distributes objects and RmiDistributes objects and Rmi
Distributes objects and RmiMayank Jain
 
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)Michał Kruczek
 
Sun RPC (Remote Procedure Call)
Sun RPC (Remote Procedure Call)Sun RPC (Remote Procedure Call)
Sun RPC (Remote Procedure Call)Peter R. Egli
 
Remote Procedure Call
Remote Procedure CallRemote Procedure Call
Remote Procedure CallNadia Nahar
 
Hunting for APT in network logs workshop presentation
Hunting for APT in network logs workshop presentationHunting for APT in network logs workshop presentation
Hunting for APT in network logs workshop presentationOlehLevytskyi1
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpcJohnny Pork
 
DCE daemonless and outbound-only communication with hp open view operations
DCE daemonless and outbound-only communication with hp open view operationsDCE daemonless and outbound-only communication with hp open view operations
DCE daemonless and outbound-only communication with hp open view operationsStefan Bergstein
 
Rpc (Distributed computing)
Rpc (Distributed computing)Rpc (Distributed computing)
Rpc (Distributed computing)Sri Prasanna
 
The Ongoing Democratization of Robotics Development
The Ongoing Democratization of Robotics DevelopmentThe Ongoing Democratization of Robotics Development
The Ongoing Democratization of Robotics Developmentukdpe
 
Claire protorpc
Claire protorpcClaire protorpc
Claire protorpcFan Robbin
 
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profit
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profitHES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profit
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profitHackito Ergo Sum
 
remote procedure calls
  remote procedure calls  remote procedure calls
remote procedure callsAshish Kumar
 
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dx
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dxA Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dx
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dxShepHertz
 
Introduction to C++ Remote Procedure Call (RPC)
Introduction to C++ Remote Procedure Call (RPC)Introduction to C++ Remote Procedure Call (RPC)
Introduction to C++ Remote Procedure Call (RPC)Abdelrahman Al-Ogail
 
Introduction to Remote Procedure Call
Introduction to Remote Procedure CallIntroduction to Remote Procedure Call
Introduction to Remote Procedure CallAbdelrahman Al-Ogail
 
CocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIsCocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIsTim Burks
 

Similar to [CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM by Sai Cheng, Yongqing He and Zhimin Wang (20)

Distributes objects and Rmi
Distributes objects and RmiDistributes objects and Rmi
Distributes objects and Rmi
 
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
gRPC - czyli jak skutecznie rozmawiać (rg-dev#14)
 
Sun RPC (Remote Procedure Call)
Sun RPC (Remote Procedure Call)Sun RPC (Remote Procedure Call)
Sun RPC (Remote Procedure Call)
 
Remote Procedure Call
Remote Procedure CallRemote Procedure Call
Remote Procedure Call
 
Hunting for APT in network logs workshop presentation
Hunting for APT in network logs workshop presentationHunting for APT in network logs workshop presentation
Hunting for APT in network logs workshop presentation
 
Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpc
 
DCE daemonless and outbound-only communication with hp open view operations
DCE daemonless and outbound-only communication with hp open view operationsDCE daemonless and outbound-only communication with hp open view operations
DCE daemonless and outbound-only communication with hp open view operations
 
Lecture9
Lecture9Lecture9
Lecture9
 
Rpc (Distributed computing)
Rpc (Distributed computing)Rpc (Distributed computing)
Rpc (Distributed computing)
 
05 tp mon_orbs
05 tp mon_orbs05 tp mon_orbs
05 tp mon_orbs
 
Rpc mechanism
Rpc mechanismRpc mechanism
Rpc mechanism
 
The Ongoing Democratization of Robotics Development
The Ongoing Democratization of Robotics DevelopmentThe Ongoing Democratization of Robotics Development
The Ongoing Democratization of Robotics Development
 
Claire protorpc
Claire protorpcClaire protorpc
Claire protorpc
 
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profit
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profitHES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profit
HES2011 - Gabriel Gonzalez - Man In Remote PKCS11 for fun and non profit
 
remote procedure calls
  remote procedure calls  remote procedure calls
remote procedure calls
 
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dx
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dxA Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dx
A Complete Tutorial to Develop Real-Time Fighting Game with Cocos2dx
 
Introduction to C++ Remote Procedure Call (RPC)
Introduction to C++ Remote Procedure Call (RPC)Introduction to C++ Remote Procedure Call (RPC)
Introduction to C++ Remote Procedure Call (RPC)
 
Introduction to Remote Procedure Call
Introduction to Remote Procedure CallIntroduction to Remote Procedure Call
Introduction to Remote Procedure Call
 
CocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIsCocoaConf: The Language of Mobile Software is APIs
CocoaConf: The Language of Mobile Software is APIs
 

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...CODE BLUE
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten NohlCODE BLUE
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo PupilloCODE BLUE
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫CODE BLUE
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...CODE BLUE
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka CODE BLUE
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...CODE BLUE
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...CODE BLUE
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...CODE BLUE
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...CODE BLUE
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也CODE BLUE
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...CODE BLUE
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...CODE BLUE
 

More from CODE BLUE (20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
 

Recently uploaded

No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...Sheetaleventcompany
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024eCommerce Institute
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AITatiana Gurgel
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Vipesco
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxMohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxmohammadalnahdi22
 
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779Night 7k Call Girls Noida Sector 128 Call Me: 8448380779
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779Delhi Call girls
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyCall Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyPooja Nehwal
 
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024eCommerce Institute
 
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxNikitaBankoti2
 
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Hasting Chen
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Chameera Dedduwage
 
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Kayode Fayemi
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesPooja Nehwal
 
Mathematics of Finance Presentation.pptx
Mathematics of Finance Presentation.pptxMathematics of Finance Presentation.pptx
Mathematics of Finance Presentation.pptxMoumonDas2
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfSenaatti-kiinteistöt
 
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 

Recently uploaded (20)

No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AI
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxMohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
 
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779Night 7k Call Girls Noida Sector 128 Call Me: 8448380779
Night 7k Call Girls Noida Sector 128 Call Me: 8448380779
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyCall Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
 
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
 
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
 
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
 
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)
 
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
Governance and Nation-Building in Nigeria: Some Reflections on Options for Po...
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
 
Mathematics of Finance Presentation.pptx
Mathematics of Finance Presentation.pptxMathematics of Finance Presentation.pptx
Mathematics of Finance Presentation.pptx
 
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdfThe workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
The workplace ecosystem of the future 24.4.2024 Fabritius_share ii.pdf
 
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
 

[CB20]-U25 Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM by Sai Cheng, Yongqing He and Zhimin Wang

  • 1. Automated Hunting for Cross-Server Xrefs in Microsoft RPC and COM
  • 2. Who We Are? •Founder partner of MeetSec Technology Co., Ltd., •Leader of security department, •A memeber of SycloverSecurity team. •Penetration testing,Cyber Security researching,Web&OS programing. ZhiMin Wang YongQing He •Security Researcher •A member of SycloverSecurity •Penetration testing & Coding •Employee of MeetSec Technology Co., Ltd., Sai Cheng •A member of SycloverSecurity •Windows Security & Web Security •Employee of MeetSec Technology Co., Ltd.,
  • 3. Who We Are? Penetration Testing & Security Training Many Clients of energy sector
  • 4. Who We Are? Syclover We focus on Cyber Security
  • 5. Agenda •Overview of MSRPC and COM •Introducing Cross-Server Xrefs(CSX) •Searching call chains to find logic bugs •Disadvantages of common call chain searching — Missing the CSX •Some attack surfaces in CSX •An automated approach to find CSX and its limitation •About Backtrack in Metasm •Using Backtrack to implement our algorithm •The limitation •Demo
  • 6. Microsoft RPC •A kind of Remote Procedure Call •Client-Server model •Server exposes interfaces, which contain routines •Client calls functions in its own address space, translated by runtime library and stubs into remote server routines •Many built-in privileged RPC servers in Windows
  • 7. Microsoft RPC Interface Func() Routine 2 Routine 3 Routine 4 Server ProcessClient Process Runtime Library Application Code HRESULT Func(void); Stub Translates to Client Server
  • 9. “MEOW, MEOW. I’m a cat, please feed me OBJREF”
  • 10. Component Object Model(COM)  Vtable Pointer QueryInterface() Pointer AddRef() Pointer Release() Pointer Method1() Pointer Method2() Pointer COM Object Data Human IUnknown IWork Inherits from IUnknown ISleep ICsgo Client Interactive with Interface Interface Methods
  • 11. Apartment in COM •Single-Threaded Apartment(STA) •Multi-Threaded Apartment(MTA) •Neutral-Threaded Apartment(NTA) Instance Apartment Process Thread Apartment 1 Apartment 2 InstanceProxy Cross-Apartment
  • 12. Single-Threaded Apartment STA Thread 1 Affinity Instance Process STA Thread 2 Instance STA Thread 3 Instance
  • 14. In-Proc and Out-of-Proc Server Process Instance Client Process A Client Process B Instance ORPC or other channel In Process Out of Process
  • 15. Case Study of Logic Bug: CVE-2020-0773 •Time-of-Check to Time-of-Use
  • 16. Common Call Chain Searching Server Process Func() Sub() Blah() CopyFileW A piece of cake. Disassembler
  • 17. But if across process boundary… Server Process 1 Func() Sub() Blah() RemoteCall() Server Process 2 Sub() CopyFileW As COM/RPC Client Cross-Server Xrefs
  • 19. Cross-Apartment Xrefs in COM MTA STA Proxy COM Object Proxy COM Object Client Application
  • 20. Impersonation Client Server Thread 1 ImpersonatedCall Client Server Thread 1 Without Impersonation Call *Different colors for different identities
  • 21. Impersonation Client RPC Server Thread 1 Impersonated Thread 1 RPC Server Client RPC Server Thread 1 Impersonated Thread 1 RPC Server Without Impersonation Impersonated *Different colors for different identities
  • 22. RPC Security Callback Function Bypass Security Callback Client Thread 1 Impersonated RPC Server 1 Interface Client PassFirst time Second time RPC_STATUS RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn ); #define RPC_IF_AUTOLISTEN 0x0001 #define RPC_IF_OLE 0x0002 #define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004 #define RPC_IF_ALLOW_SECURE_ONLY 0x0008 #define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010 #define RPC_IF_ALLOW_LOCAL_ONLY 0x0020 #define RPC_IF_SEC_NO_CACHE 0x0040 #if (NTDDI_VERSION >>= NTDDI_VISTA) #define RPC_IF_SEC_CACHE_PER_PROC 0x0080 #define RPC_IF_ASYNC_CALLBACK 0x0100 #endif /// (NTDDI_VERSION >>= NTDDI_VISTA) Disables security callback caching, forcing a security callback for each RPC call on a given interface. Cache enabled by default!
  • 23. RPC Security Callback Function Bypass Attacker Thread 1 Impersonated RPC Server 1 Application Attacker PassFirst time Second time Is the client PID same as RPC Server 1?
  • 24. Impersonation in COM Client COM Server Thread 1 Impersonated COM Server Thread 1 Impersonated Without Cloaking *Different colors for different identities
  • 25. Impersonation in COM Client COM Server Thread 1 Impersonated COM Server Thread 1 Impersonated With Cloaking *Different colors for different identities
  • 26. Review of Cross-Apartment MTA STA Proxy COM Object Proxy COM Object Client Application Impersonated Thread 1 Thread 1 Impersonated *Different colors for different identities
  • 27. Cloaking •Types •Static Cloaking(EOAC_STATIC_CLOAKING) •Dynamic Cloaking(EOAC_DYNAMIC_CLOAKING) •Configuration • CoInitializeSecurity • CoSetProxyBlanket(Wrapper function of IClientSecurity::SetBlanket) •Not useful without impersonation •Not set by default •Pick up thread token(if it has one), otherwise process token
  • 28. Cloaking IMyIface Proxy ProxyManager IBlah Proxy As Client COM Object Proxy Identity Call CoInitializeSecurity CoSetProxyBlanket Process-Wide
  • 29. Static Cloaking •Cached Identity Method1()Application First call Proxy Method1()Application First call Proxy Pick up thread/process token Method1()Application Subsequent call Proxy Fixed Identity CoInitializeSecurity
  • 30. Static Cloaking •Cached Identity ProxyCoSetProxyBlanket Set blanket CoSetProxyBlanket Set blanket Pick up thread/process token Method1()Application Subsequent call Proxy Fixed Identity CoSetProxyBlanket Proxy
  • 32. Traps in Cloaking •Using CoInitializeSecurity 0x831728 0x831728 Same interface proxy
  • 33. Traps in Cloaking 0x831728 •Using CoInitializeSecurity
  • 34. Traps in Cloaking COM Server •Using CoInitializeSecurity Proxy 0x831728 CMyClass:Call1()Client Projects identity Client First call Subsequent call Note: Not all coclasses have this behavior *Different colors for different identities
  • 36. Finding RPC Server Routines(interpreted mode) typedef struct _RPC_SERVER_INTERFACE { unsigned int Length; RPC_SYNTAX_IDENTIFIER InterfaceId; RPC_SYNTAX_IDENTIFIER TransferSyntax; PRPC_DISPATCH_TABLE DispatchTable; unsigned int RpcProtseqEndpointCount; PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; RPC_MGR_EPV *DefaultManagerEpv; void const *InterpreterInfo; unsigned int Flags ; } RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE; typedef struct { unsigned int DispatchTableCount; RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable; LONG_PTR Reserved; } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE; typedef struct _MIDL_SERVER_INFO_ { PMIDL_STUB_DESC pStubDesc; const SERVER_ROUTINE * DispatchTable; PFORMAT_STRING ProcString; const unsigned short * FmtStringOffset; const STUB_THUNK * ThunkTable; PRPC_SYNTAX_IDENTIFIER pTransferSyntax; ULONG_PTR nCount; PMIDL_SYNTAX_INFO pSyntaxInfo; } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO; typedef struct _RPC_PROTSEQ_ENDPOINT { unsigned char * RpcProtocolSequence; unsigned char * Endpoint; } RPC_PROTSEQ_ENDPOINT, * PRPC_PROTSEQ_ENDPOINT; Routine 1 Pointer Routine 2 Pointer Routine 3 Pointer Routine 4 Pointer [ uuid(4F12331F-FC50-4E96-940A-3882DC8F971E), endpoint(“ncacn_np:[pipemyendpoint]”) ] sizeof(RPC_SERVER_INTERFACE) Count
  • 37. Analyzing MIDL Switch Options For Server typedef struct { unsigned int DispatchTableCount; RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable; LONG_PTR Reserved; } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE; NdrServerCall2 NdrServerCall NdrServerCallNdr64 0 … /Oi(c)f /Oi(c) /protocol ndr64 64-bit environment typedef struct _RPC_SERVER_INTERFACE { unsigned int Length; … void const *InterpreterInfo; unsigned int Flags ; } RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE; If null pointer Inline stub(/Os mode) Contradictory with /protocol ndr64|all
  • 38. Analyzing MIDL Switch Options For Server typedef struct _RPC_SERVER_INTERFACE { unsigned int Length; … … void const *InterpreterInfo; unsigned int Flags ; } RPC_SERVER_INTERFACE, * PRPC_SERVER_INTERFACE; 0x6000000 typedef struct _MIDL_SERVER_INFO_ { PMIDL_STUB_DESC pStubDesc; … PFORMAT_STRING ProcString; … PRPC_SYNTAX_IDENTIFIER pTransferSyntax; ULONG_PTR nCount; PMIDL_SYNTAX_INFO pSyntaxInfo; } MIDL_SERVER_INFO, *PMIDL_SERVER_INFO; typedef struct _MIDL_SYNTAX_INFO { RPC_SYNTAX_IDENTIFIER TransferSyntax; RPC_DISPATCH_TABLE * DispatchTable; … … } MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO; NdrServerCallAll … … … >>= 2 •/protocol all with 64-bit environment
  • 39. Finding RPC Client Routines(/Oicf mode)
  • 40. Finding RPC Client Routines(/Oicf mode) Client routine RPC_CLIENT_INTERFACE MIDL_STUB_DESC PROC_FORMAT_STRING ? ? ?
  • 41. Backtracking technique in Metasm require 'metasm' include Metasm sc = <<<--EOS push eax mov eax, 0x4c mov ebx, 0x21 sub eax, 1 sub ebx, 0x4 push edx push ecx add eax, 0x3c inc ebx sub eax, ebx jmp eax EOS dasm = Metasm:::Shellcode.assemble(Metasm:::Ia32.new, sc).init_disassembler dasm.disassemble(0) block = dasm.block_at(0) block.list.each do |di| puts "Instruction: " + di.instruction.to_s bt_binding = di.backtrace_binding bt_binding.map {{|k, v| puts "##{k} =>= ##{v}"} puts end puts "Result of backtracking expression 'eax': " puts dasm.backtrace(Expression[:eax], block.list.last.address).first.to_s Our test shellcode Backtrack symbolic expression “eax” from instruction “jmp eax”
  • 44. SWEET technique… Return non-symbolic value after backtracking static const
  • 45. Backtracking for key information typedef struct _MIDL_STUB_DESC { void * RpcInterfaceInformation; ..... ..... } MIDL_STUB_DESC; RPC_CLIENT_INTERFACE Same layout as RPC_SERVER_INTERFACE Get interface identifier and Transfer syntax •Interface information
  • 46. Backtracking for key information Routine 1 Routine 2 … … Proc Number 0 Proc Number 1 NdrClientCall(…, PFORMAT_STRING pFormat, …) NdrClientCall2(…, PFORMAT_STRING pFormat, …) NdrClientCall3(…, unsigned long nProcNum, …) NdrClientCall4(…, PFORMAT_STRING pFormat, …) •Procedure Number Decompile NDR procedure format string Backtracking parameter Stubless proxy /protocol all with 64-bit env
  • 47. Decompile NDR Format String Header Descriptor Param A Descriptor Param B Descriptor Param C Descriptor Procedure Format String Handle type Oi Flags RPC Flags(optional) Procnum Stack size … Common /Oif mode That’s what we need!
  • 48. Another Example: Backtracking RPC Security Callback Function •RpcServerRegisterIf2/RpcServerRegisterIf3/RpcServerRegisterIfEx RPCServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn ) Server interface Check if the cache is disabled Function address
  • 49. Another Example: Backtracking RPC Security Callback Function •Security Callback Function Checks Caller's PID RPCServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn ) Security Callback I_RpcBindingInqLocalClientPID RpcServerInqCallAttributes Calls
  • 50. Finding COM Interface Methods •Hooking NdrStubCall2/NdrStubCall3 for standard marshaler •Casting pThis parameter to pointer of CStdStubBuffer •Get member variable pvServerObject •Event Tracing for Windows(ETW) •Provider Name: Microsoft-Windows-COM-Perf •GUID: b8d6861b-d20f-4eec-bbae-87e0dd80602b •Event ServerSyncCallStart/ServerAsyncCallStart •Parsing internally maintained database in COM server(OleViewDotNet)
  • 51. Finding COM Client •Backtracking COM Object Activation API HRESULT CoCreateInstance( REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv ); Example: CoCreateInstance Get Class Id Get Interface Id But interface pointer is symbolic value lea rax, [rsp+ppv] mov qword ptr [rsp+arg], rax … … call CoCreateInstance … … mov rcx, [rsp+ppv] mov rax, [rcx] call qword ptr [rax+28h] ; Calling interface method Backtracking from here [[rsp+32]] Symbolic value
  • 52. Finding COM Client •Backtracking COM Object Activation API Example: CoCreateInstance lea rax, [rsp+ppv] mov qword ptr [rsp+arg], rax … … call CoCreateInstance … … mov rcx, [rsp+ppv] mov rax, [rcx] call qword ptr [rax+28h] Vtable pointer Backtracking rax for last known value qword ptr [qword ptr [rsp+50h]] Object Pointer Backtracking [[rsp+32]] for last known value Interface Pointer Is it equal? We know which interface method was called True Offset to fptr Meow(ICat * This, …) *Without CFG
  • 53. Talk is cheap And Show me the TOOL!
  • 54. About TurboRex •A Ruby gem •RPC Server/Client routines locator •COM interface methods locator •Cross-Server Xrefs searcher •ALPC Server && Client •COM Client •COM Fuzzer(in progress)
  • 56. Sorry there is no live demo
  • 59. Q & A