forked from rapid7/metasploit-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request rapid7#3 from smcintyre-r7/pr/collab/16995
Bofloader Updates
- Loading branch information
Showing
5 changed files
with
464 additions
and
311 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
* Beacon Object Files (BOF) | ||
* ------------------------- | ||
* A Beacon Object File is a light-weight post exploitation tool that runs | ||
* with Beacon's inline-execute command. | ||
* | ||
* Additional BOF resources are available here: | ||
* - https://github.com/Cobalt-Strike/bof_template | ||
* | ||
* Cobalt Strike 4.x | ||
* ChangeLog: | ||
* 1/25/2022: updated for 4.5 | ||
*/ | ||
|
||
/* data API */ | ||
typedef struct { | ||
char * original; /* the original buffer [so we can free it] */ | ||
char * buffer; /* current pointer into our buffer */ | ||
int length; /* remaining length of data */ | ||
int size; /* total size of this buffer */ | ||
} datap; | ||
|
||
DECLSPEC_IMPORT void BeaconDataParse(datap * parser, char * buffer, int size); | ||
DECLSPEC_IMPORT char * BeaconDataPtr(datap * parser, int size); | ||
DECLSPEC_IMPORT int BeaconDataInt(datap * parser); | ||
DECLSPEC_IMPORT short BeaconDataShort(datap * parser); | ||
DECLSPEC_IMPORT int BeaconDataLength(datap * parser); | ||
DECLSPEC_IMPORT char * BeaconDataExtract(datap * parser, int * size); | ||
|
||
/* format API */ | ||
typedef struct { | ||
char * original; /* the original buffer [so we can free it] */ | ||
char * buffer; /* current pointer into our buffer */ | ||
int length; /* remaining length of data */ | ||
int size; /* total size of this buffer */ | ||
} formatp; | ||
|
||
DECLSPEC_IMPORT void BeaconFormatAlloc(formatp * format, int maxsz); | ||
DECLSPEC_IMPORT void BeaconFormatReset(formatp * format); | ||
DECLSPEC_IMPORT void BeaconFormatAppend(formatp * format, char * text, int len); | ||
DECLSPEC_IMPORT void BeaconFormatPrintf(formatp * format, char * fmt, ...); | ||
DECLSPEC_IMPORT char * BeaconFormatToString(formatp * format, int * size); | ||
DECLSPEC_IMPORT void BeaconFormatFree(formatp * format); | ||
DECLSPEC_IMPORT void BeaconFormatInt(formatp * format, int value); | ||
|
||
/* Output Functions */ | ||
#define CALLBACK_OUTPUT 0x0 | ||
#define CALLBACK_OUTPUT_OEM 0x1e | ||
#define CALLBACK_OUTPUT_UTF8 0x20 | ||
#define CALLBACK_ERROR 0x0d | ||
|
||
DECLSPEC_IMPORT void BeaconOutput(int type, char * data, int len); | ||
DECLSPEC_IMPORT void BeaconPrintf(int type, char * fmt, ...); | ||
|
||
|
||
/* Token Functions */ | ||
DECLSPEC_IMPORT BOOL BeaconUseToken(HANDLE token); | ||
DECLSPEC_IMPORT void BeaconRevertToken(); | ||
DECLSPEC_IMPORT BOOL BeaconIsAdmin(); | ||
|
||
/* Spawn+Inject Functions */ | ||
DECLSPEC_IMPORT void BeaconGetSpawnTo(BOOL x86, char * buffer, int length); | ||
DECLSPEC_IMPORT void BeaconInjectProcess(HANDLE hProc, int pid, char * payload, int p_len, int p_offset, char * arg, int a_len); | ||
DECLSPEC_IMPORT void BeaconInjectTemporaryProcess(PROCESS_INFORMATION * pInfo, char * payload, int p_len, int p_offset, char * arg, int a_len); | ||
DECLSPEC_IMPORT BOOL BeaconSpawnTemporaryProcess(BOOL x86, BOOL ignoreToken, STARTUPINFO * si, PROCESS_INFORMATION * pInfo); | ||
DECLSPEC_IMPORT void BeaconCleanupProcess(PROCESS_INFORMATION * pInfo); | ||
|
||
/* Utility Functions */ | ||
DECLSPEC_IMPORT BOOL toWideChar(char * src, wchar_t * dst, int max); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.