mirror of
https://github.com/moloch--/sliver-script
synced 2026-06-08 16:08:26 +00:00
Update sliver submodule to v1.7.3
This commit is contained in:
+9
-2
@@ -17,6 +17,7 @@ import type {
|
||||
Beacons,
|
||||
Jobs,
|
||||
Beacon,
|
||||
GenerateSpoofMetadataReq,
|
||||
ImplantConfig,
|
||||
ImplantProfile,
|
||||
Loot,
|
||||
@@ -447,8 +448,8 @@ export class SliverClient {
|
||||
|
||||
const creds = createSliverRpcCredentials(this.config);
|
||||
this.channel = createChannel(this.rpcHost(), creds, {
|
||||
"grpc.max_send_message_length": 2 * GiB,
|
||||
"grpc.max_receive_message_length": 2 * GiB,
|
||||
"grpc.max_send_message_length": (2 * GiB) -1,
|
||||
"grpc.max_receive_message_length": (2 * GiB) -1,
|
||||
});
|
||||
|
||||
this.rpcClient = createClient(SliverRPCDefinition, this.channel);
|
||||
@@ -615,6 +616,12 @@ export class SliverClient {
|
||||
return res.File;
|
||||
}
|
||||
|
||||
generateSpoofMetadata(req: GenerateSpoofMetadataReq, timeoutSeconds = DEFAULT_TIMEOUT_SECONDS): Promise<void> {
|
||||
return withTimeoutSignal(timeoutSeconds, async (signal) => {
|
||||
await this.rpc.generateSpoofMetadata(req, { signal });
|
||||
});
|
||||
}
|
||||
|
||||
async regenerate(implantName: string, timeoutSeconds = DEFAULT_TIMEOUT_SECONDS) {
|
||||
const res = await withTimeoutSignal(timeoutSeconds, (signal) =>
|
||||
this.rpc.regenerate({ ImplantName: implantName }, { signal }),
|
||||
|
||||
+1086
-3
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-ts_proto v2.11.2
|
||||
// protoc v3.15.8
|
||||
// protoc v6.33.4
|
||||
// source: commonpb/common.proto
|
||||
|
||||
/* eslint-disable */
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-ts_proto v2.11.2
|
||||
// protoc v3.15.8
|
||||
// protoc v6.33.4
|
||||
// source: dnspb/dns.proto
|
||||
|
||||
/* eslint-disable */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-ts_proto v2.11.2
|
||||
// protoc v3.15.8
|
||||
// protoc v6.33.4
|
||||
// source: rpcpb/services.proto
|
||||
|
||||
/* eslint-disable */
|
||||
@@ -46,6 +46,7 @@ import {
|
||||
ExternalImplantConfig,
|
||||
Generate,
|
||||
GenerateReq,
|
||||
GenerateSpoofMetadataReq,
|
||||
GenerateStageReq,
|
||||
GetSystemReq,
|
||||
Host,
|
||||
@@ -637,6 +638,14 @@ export const SliverRPCDefinition = {
|
||||
responseStream: false,
|
||||
options: {},
|
||||
},
|
||||
generateSpoofMetadata: {
|
||||
name: "GenerateSpoofMetadata",
|
||||
requestType: GenerateSpoofMetadataReq,
|
||||
requestStream: false,
|
||||
responseType: Empty,
|
||||
responseStream: false,
|
||||
options: {},
|
||||
},
|
||||
generateExternal: {
|
||||
name: "GenerateExternal",
|
||||
requestType: ExternalGenerateReq,
|
||||
@@ -1799,6 +1808,10 @@ export interface SliverRPCServiceImplementation<CallContextExt = {}> {
|
||||
hostIOCRm(request: IOC, context: CallContext & CallContextExt): Promise<DeepPartial<Empty>>;
|
||||
/** ** Implants *** */
|
||||
generate(request: GenerateReq, context: CallContext & CallContextExt): Promise<DeepPartial<Generate>>;
|
||||
generateSpoofMetadata(
|
||||
request: GenerateSpoofMetadataReq,
|
||||
context: CallContext & CallContextExt,
|
||||
): Promise<DeepPartial<Empty>>;
|
||||
generateExternal(
|
||||
request: ExternalGenerateReq,
|
||||
context: CallContext & CallContextExt,
|
||||
@@ -2152,6 +2165,10 @@ export interface SliverRPCClient<CallOptionsExt = {}> {
|
||||
hostIOCRm(request: DeepPartial<IOC>, options?: CallOptions & CallOptionsExt): Promise<Empty>;
|
||||
/** ** Implants *** */
|
||||
generate(request: DeepPartial<GenerateReq>, options?: CallOptions & CallOptionsExt): Promise<Generate>;
|
||||
generateSpoofMetadata(
|
||||
request: DeepPartial<GenerateSpoofMetadataReq>,
|
||||
options?: CallOptions & CallOptionsExt,
|
||||
): Promise<Empty>;
|
||||
generateExternal(
|
||||
request: DeepPartial<ExternalGenerateReq>,
|
||||
options?: CallOptions & CallOptionsExt,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-ts_proto v2.11.2
|
||||
// protoc v3.15.8
|
||||
// protoc v6.33.4
|
||||
// source: sliverpb/sliver.proto
|
||||
|
||||
/* eslint-disable */
|
||||
@@ -1102,6 +1102,7 @@ export interface ReconfigureReq {
|
||||
ReconnectInterval: string;
|
||||
BeaconInterval: string;
|
||||
BeaconJitter: string;
|
||||
C2URI: string;
|
||||
Request?: Request | undefined;
|
||||
}
|
||||
|
||||
@@ -16153,7 +16154,7 @@ export const WGTCPForwarders: MessageFns<WGTCPForwarders> = {
|
||||
};
|
||||
|
||||
function createBaseReconfigureReq(): ReconfigureReq {
|
||||
return { ReconnectInterval: "0", BeaconInterval: "0", BeaconJitter: "0", Request: undefined };
|
||||
return { ReconnectInterval: "0", BeaconInterval: "0", BeaconJitter: "0", C2URI: "", Request: undefined };
|
||||
}
|
||||
|
||||
export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
@@ -16167,6 +16168,9 @@ export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
if (message.BeaconJitter !== "0") {
|
||||
writer.uint32(24).int64(message.BeaconJitter);
|
||||
}
|
||||
if (message.C2URI !== "") {
|
||||
writer.uint32(34).string(message.C2URI);
|
||||
}
|
||||
if (message.Request !== undefined) {
|
||||
Request.encode(message.Request, writer.uint32(74).fork()).join();
|
||||
}
|
||||
@@ -16204,6 +16208,14 @@ export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
message.BeaconJitter = reader.int64().toString();
|
||||
continue;
|
||||
}
|
||||
case 4: {
|
||||
if (tag !== 34) {
|
||||
break;
|
||||
}
|
||||
|
||||
message.C2URI = reader.string();
|
||||
continue;
|
||||
}
|
||||
case 9: {
|
||||
if (tag !== 74) {
|
||||
break;
|
||||
@@ -16226,6 +16238,7 @@ export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
ReconnectInterval: isSet(object.ReconnectInterval) ? globalThis.String(object.ReconnectInterval) : "0",
|
||||
BeaconInterval: isSet(object.BeaconInterval) ? globalThis.String(object.BeaconInterval) : "0",
|
||||
BeaconJitter: isSet(object.BeaconJitter) ? globalThis.String(object.BeaconJitter) : "0",
|
||||
C2URI: isSet(object.C2URI) ? globalThis.String(object.C2URI) : "",
|
||||
Request: isSet(object.Request) ? Request.fromJSON(object.Request) : undefined,
|
||||
};
|
||||
},
|
||||
@@ -16241,6 +16254,9 @@ export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
if (message.BeaconJitter !== "0") {
|
||||
obj.BeaconJitter = message.BeaconJitter;
|
||||
}
|
||||
if (message.C2URI !== "") {
|
||||
obj.C2URI = message.C2URI;
|
||||
}
|
||||
if (message.Request !== undefined) {
|
||||
obj.Request = Request.toJSON(message.Request);
|
||||
}
|
||||
@@ -16255,6 +16271,7 @@ export const ReconfigureReq: MessageFns<ReconfigureReq> = {
|
||||
message.ReconnectInterval = object.ReconnectInterval ?? "0";
|
||||
message.BeaconInterval = object.BeaconInterval ?? "0";
|
||||
message.BeaconJitter = object.BeaconJitter ?? "0";
|
||||
message.C2URI = object.C2URI ?? "";
|
||||
message.Request = (object.Request !== undefined && object.Request !== null)
|
||||
? Request.fromPartial(object.Request)
|
||||
: undefined;
|
||||
|
||||
@@ -304,6 +304,12 @@ exports[`RPC definition includes all methods (snapshot) 1`] = `
|
||||
"requestStream": false,
|
||||
"responseStream": false,
|
||||
},
|
||||
{
|
||||
"key": "generateSpoofMetadata",
|
||||
"name": "GenerateSpoofMetadata",
|
||||
"requestStream": false,
|
||||
"responseStream": false,
|
||||
},
|
||||
{
|
||||
"key": "generateStage",
|
||||
"name": "GenerateStage",
|
||||
|
||||
@@ -2,7 +2,18 @@ import { Subject } from "rxjs";
|
||||
|
||||
import { SliverClient, InteractiveBeacon } from "../client";
|
||||
import type { SliverClientConfig } from "../config";
|
||||
import { BeaconTask, type Event, ListenerJob, Operators, Sessions, Session, KillJob, Loot, WebContent } from "../pb/clientpb/client";
|
||||
import {
|
||||
BeaconTask,
|
||||
type Event,
|
||||
type GenerateSpoofMetadataReq,
|
||||
ListenerJob,
|
||||
Operators,
|
||||
Sessions,
|
||||
Session,
|
||||
KillJob,
|
||||
Loot,
|
||||
WebContent,
|
||||
} from "../pb/clientpb/client";
|
||||
import { Empty } from "../pb/commonpb/common";
|
||||
import { Ls } from "../pb/sliverpb/sliver";
|
||||
|
||||
@@ -111,6 +122,25 @@ test("SliverClient.websiteUpdateContent() forwards to rpc.websiteUpdateContent()
|
||||
);
|
||||
});
|
||||
|
||||
test("SliverClient.generateSpoofMetadata() forwards to rpc.generateSpoofMetadata()", async () => {
|
||||
const generateSpoofMetadata = jest.fn(async () => Empty.create({}));
|
||||
|
||||
const client = new SliverClient(dummyConfig());
|
||||
(client as any).rpcClient = { generateSpoofMetadata };
|
||||
|
||||
const req: GenerateSpoofMetadataReq = {
|
||||
ImplantBuildID: "build-1",
|
||||
ImplantName: "implant-1",
|
||||
ResourceID: "42",
|
||||
};
|
||||
|
||||
await client.generateSpoofMetadata(req, 5);
|
||||
expect(generateSpoofMetadata).toHaveBeenCalledWith(
|
||||
req,
|
||||
expect.objectContaining({ signal: expect.any(AbortSignal) }),
|
||||
);
|
||||
});
|
||||
|
||||
test("InteractiveBeacon.lsTask().wait() decodes beacon task results", async () => {
|
||||
const taskId = "task-1";
|
||||
const beaconId = "beacon-1";
|
||||
|
||||
Reference in New Issue
Block a user