tomhoogl.blogg.se

Secure pipes for windows
Secure pipes for windows






secure pipes for windows
  1. #SECURE PIPES FOR WINDOWS HOW TO#
  2. #SECURE PIPES FOR WINDOWS SOFTWARE#
  3. #SECURE PIPES FOR WINDOWS CODE#
  4. #SECURE PIPES FOR WINDOWS WINDOWS#

RPC is a client-server technology with messaging architecture similar to COM (Component Object Model), which on a high level consists of the following three components: Microsoft added ‘ncacn_np’ for their implementation based on Named Pipes (transported through the SMB protocol). The original DCE/RCP standard already had defined ‘ncacn_ip_tcp’ and ‘ncadg_ip_udp’ for TCP and UDP connections.

#SECURE PIPES FOR WINDOWS WINDOWS#

Microsoft adjusted the DCE model to fit their programming scheme, based the communication of RPC on Named Pipes and brought their implementation to daylight in Windows 95.īack in the days you could have wondered why they based the communication on Named Pipes, because Microsoft just came up with a new technology called Local Procedure Call ( LPC) in 1994 and it sounds like it would have made sense to base a technology called Remote Procedure Call on something called Local Procedure call, right?… Well yes LPC would have been the logical choice (and I would guess they initially went with LPC), but LPC had a crucial flaw: It didn’t support (and still doesn’t) asynchronous calls (more on this when i finally finish my LPC/ALPC post…), which is why Microsoft based it on Named Pipes.Īs we’ll see in a moment (section RPC Protocol Sequence) when implementing routines with RPC the developer needs to tell the RPC library what ‘protocol’ to use for transportation. Microsoft hired Paul Leach (in 1991), one of the founding Engineers of Apollo, which might be how RPC came into Windows. “One of the key companies that contributed was Apollo Computer, who brought in NCA – ‘Network Computing Architecture’ which became Network Computing System (NCS) and then a major part of DCE/RPC itself”

secure pipes for windows

#SECURE PIPES FOR WINDOWS SOFTWARE#

Microsoft’s RPC implementation is based on the RPC implementation of the Distributed Computing Environment (DCE) standard developed by the Open Software Foundation (OSF) in 1993.

#SECURE PIPES FOR WINDOWS CODE#

The below post will contain some references to code from my sample implementations, all of this code can be found here: A more defensive geared view on RPC can for example be found at by Jonathan Johnson This post is is made from an offensive view point and tries to cover the most relevant aspects the attack surface of RPC from an attackers perspective.

#SECURE PIPES FOR WINDOWS HOW TO#

Within this blog post you can join me in discovering the insides of RPC, how it works & operates and how to implement and attack RPC clients and servers. Moreover a RPC server does not need to be on a remote machine, but could as well be called from a local client. In theory you could implement a RPC server & client in DLLs, load them into the same process and exchange messages, but you wouldn’t gain much as the messages would still be routed through other components outside of your process (such as the kernel, but more on this later) and you would try to make use of an “Inter” Process Communication technology for “Intra” Process Communication. An RPC server does not has to be on a remote machine, and in theory does not even has to be in a different process (although this would make sense). The term “remote” in this case does not describe a requirement for the communication. Other technologies in this category are for example LPC, ALPC or Named Pipes.Īs the name and this category implies RPC is used to make calls to remote servers to exchange/deliver data or to trigger a remote routine. Therefore RPC is an Inter Process Communication ( IPC) technology. Remote Procedure Calls (RPC) is a technology to enable data communication between a client and a server across process and machine boundaries (network communication).

secure pipes for windows

Get a coffee and a comfy chair and buckle up for RPC… Introduction The reason why i originally planed to publish LPC & ALPC before RPC is because RPC uses ALPC under the hood when used locally and even more: RPC is the intended solution for fast local inter process communication as RPC can be instructed to process local communication via a special ALPC protocol sequence (but you’ll find that out while reading on).Īnyhow, the lesson here is (i guess) that sometimes its better to pause on a thing and get your head cleared up and make progress with something else before you get lost in something that is just not ready to reveal its mysteries to you. Therefore i made the discussion to publish my knowledge about RPC first before turning my head towards ALPC once again. Part 2 was originally planned to be about LPC & ALPC, but as it turns out it’s quite time consuming to dig out all the undocumented bits and tricks about these technologies. If you missed part one and want to take a look, you’ll find it here: Offensive Windows IPC Internals 1: Named Pipes.

secure pipes for windows

This is part 2 of my series: Offensive Windows IPC Internals.

  • MITM Authenticated GSS_NEGOTIATE Connections.







  • Secure pipes for windows