Skip to content

Commit 87de792

Browse files
committed
adding extra checks to payload builder
1 parent 86c8eb2 commit 87de792

File tree

1 file changed

+34
-16
lines changed
  • Payload_Type/poseidon/poseidon/agentfunctions

1 file changed

+34
-16
lines changed

Payload_Type/poseidon/poseidon/agentfunctions/builder.go

+34-16
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func build(payloadBuildMsg agentstructs.PayloadBuildMessage) agentstructs.Payloa
202202
cryptoVal, err := payloadBuildMsg.C2Profiles[index].GetCryptoArg(key)
203203
if err != nil {
204204
payloadBuildResponse.Success = false
205-
payloadBuildResponse.BuildStdErr = err.Error()
205+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
206206
return payloadBuildResponse
207207
}
208208
initialConfig[key] = cryptoVal.EncKey
@@ -211,7 +211,7 @@ func build(payloadBuildMsg agentstructs.PayloadBuildMessage) agentstructs.Payloa
211211
headers, err := payloadBuildMsg.C2Profiles[index].GetDictionaryArg(key)
212212
if err != nil {
213213
payloadBuildResponse.Success = false
214-
payloadBuildResponse.BuildStdErr = err.Error()
214+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
215215
return payloadBuildResponse
216216
}
217217
initialConfig[key] = headers
@@ -231,21 +231,21 @@ func build(payloadBuildMsg agentstructs.PayloadBuildMessage) agentstructs.Payloa
231231
agentConfigString, err := payloadBuildMsg.C2Profiles[index].GetStringArg(key)
232232
if err != nil {
233233
payloadBuildResponse.Success = false
234-
payloadBuildResponse.BuildStdErr = err.Error()
234+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
235235
return payloadBuildResponse
236236
}
237237
configData, err := mythicrpc.SendMythicRPCFileGetContent(mythicrpc.MythicRPCFileGetContentMessage{
238238
AgentFileID: agentConfigString,
239239
})
240240
if err != nil {
241241
payloadBuildResponse.Success = false
242-
payloadBuildResponse.BuildStdErr = err.Error()
242+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
243243
return payloadBuildResponse
244244
}
245245
err = json.Unmarshal(configData.Content, initialConfig[key])
246246
if err != nil {
247247
payloadBuildResponse.Success = false
248-
payloadBuildResponse.BuildStdErr = err.Error()
248+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
249249
return payloadBuildResponse
250250
}
251251
/*
@@ -254,29 +254,47 @@ func build(payloadBuildMsg agentstructs.PayloadBuildMessage) agentstructs.Payloa
254254
agentConfigString = strings.ReplaceAll(agentConfigString, "\n", "")
255255
ldflags += fmt.Sprintf(" -X '%s.%s_%s=%s'", poseidon_repo_profile, payloadBuildMsg.C2Profiles[index].Name, key, agentConfigString)
256256
*/
257-
} else if slices.Contains([]string{"callback_jitter", "callback_interval", "callback_port", "port"}, key) {
257+
} else if slices.Contains([]string{"callback_jitter", "callback_interval", "callback_port", "port", "callback_port"}, key) {
258258

259259
val, err := payloadBuildMsg.C2Profiles[index].GetNumberArg(key)
260260
if err != nil {
261-
payloadBuildResponse.Success = false
262-
payloadBuildResponse.BuildStdErr = err.Error()
263-
return payloadBuildResponse
261+
stringVal, err := payloadBuildMsg.C2Profiles[index].GetStringArg(key)
262+
if err != nil {
263+
payloadBuildResponse.Success = false
264+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
265+
return payloadBuildResponse
266+
}
267+
realVal, err := strconv.Atoi(stringVal)
268+
if err != nil {
269+
payloadBuildResponse.Success = false
270+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
271+
return payloadBuildResponse
272+
}
273+
initialConfig[key] = realVal
274+
} else {
275+
initialConfig[key] = int(val)
264276
}
265-
initialConfig[key] = int(val)
277+
266278
//ldflags += fmt.Sprintf(" -X '%s.%s_%s=%v'", poseidon_repo_profile, payloadBuildMsg.C2Profiles[index].Name, key, val)
267279
} else if slices.Contains([]string{"encrypted_exchange_check"}, key) {
268280
val, err := payloadBuildMsg.C2Profiles[index].GetBooleanArg(key)
269281
if err != nil {
270-
payloadBuildResponse.Success = false
271-
payloadBuildResponse.BuildStdErr = err.Error()
272-
return payloadBuildResponse
282+
stringVal, err := payloadBuildMsg.C2Profiles[index].GetStringArg(key)
283+
if err != nil {
284+
payloadBuildResponse.Success = false
285+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
286+
return payloadBuildResponse
287+
}
288+
initialConfig[key] = stringVal == "T"
289+
} else {
290+
initialConfig[key] = val
273291
}
274-
initialConfig[key] = val
292+
275293
} else {
276294
val, err := payloadBuildMsg.C2Profiles[index].GetStringArg(key)
277295
if err != nil {
278296
payloadBuildResponse.Success = false
279-
payloadBuildResponse.BuildStdErr = err.Error()
297+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
280298
return payloadBuildResponse
281299
}
282300
if key == "proxy_port" {
@@ -286,7 +304,7 @@ func build(payloadBuildMsg agentstructs.PayloadBuildMessage) agentstructs.Payloa
286304
intval, err := strconv.Atoi(val)
287305
if err != nil {
288306
payloadBuildResponse.Success = false
289-
payloadBuildResponse.BuildStdErr = err.Error()
307+
payloadBuildResponse.BuildStdErr = "Key error: " + key + "\n" + err.Error()
290308
return payloadBuildResponse
291309
}
292310
initialConfig[key] = intval

0 commit comments

Comments
 (0)