/SeasideBishop

A C port of b33f's UrbanBishop

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

SeasideBishop

A C port of b33f's UrbanBishop

Background

This repo is a port of b33f's very neat C# shellcode loader UrbanBishop. Rastamouse also has a port that makes use of D/Invoke. They did the heavy lifting on this, I simply rewrote it in C and made a few tweaks.

My post about this project is here.

Injection Overview

SeasideBishop is a remote process shellcode injector. It uses only native Windows APIs, and only supports x64.

First, a handle to the remote target process is opened with NtOpenProcess. A section view is created and mapped in the local process with NtCreateSection and NtMapViewOfSection, then the shellcode payload is memcopy'd into it. This section is subsequently mapped in the target process, thereby allocating the shellcode without using a more suspicious API like WriteProcessMemory. Next a new suspended thread is created, pointing to the address of RtlExitUserThread. A user APC is queued onto the new thread with NtQueueApcThread, pointing to the executable shellcode within the remote mapped section. Finally the thread is executed by calling NtAlertResumeThread.

Running The Code

Open the solution file in Visual Studio (I used 2019 Community) and compile using x64 Release mode. You may need to change the Compile As setting to C.

Thanks

Many thanks to Adamant and AsaurusRex for their help on this.