diff --git a/Payload_Type/poseidon/poseidon/agent_code/caffeinate/caffeinate_windows.go b/Payload_Type/poseidon/poseidon/agent_code/caffeinate/caffeinate_windows.go new file mode 100644 index 00000000..b46404b4 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/caffeinate/caffeinate_windows.go @@ -0,0 +1,28 @@ +//go:build windows +// +build windows + +package caffeinate + +import ( + "errors" +) + +type CaffeinateRunWindows struct { + Successful bool + Resultstring string +} + +func (j *CaffeinateRunWindows) Success() bool { + return j.Successful +} + +func (j *CaffeinateRunWindows) Result() string { + return j.Resultstring +} + +func runCommand(enable bool) (CaffeinateRunWindows, error) { + n := CaffeinateRunWindows{} + n.Resultstring = "" + n.Successful = false + return n, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/clipboard/clipboard_windows.go b/Payload_Type/poseidon/poseidon/agent_code/clipboard/clipboard_windows.go new file mode 100644 index 00000000..3dd2e7e2 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/clipboard/clipboard_windows.go @@ -0,0 +1,7 @@ +//go:build windows + +package clipboard + +func GetClipboard(readTypes []string) (string, error) { + return "Not Implemented", nil +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/clipboard_monitor/clipboard_monitor_windows.go b/Payload_Type/poseidon/poseidon/agent_code/clipboard_monitor/clipboard_monitor_windows.go new file mode 100644 index 00000000..78c91588 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/clipboard_monitor/clipboard_monitor_windows.go @@ -0,0 +1,22 @@ +//go:build windows +// +build windows + +package clipboard_monitor + +import ( + "errors" +) + +func CheckClipboard(oldCount int) (string, error) { + return "", errors.New("Not supported on Windows") +} + +func GetClipboardCount() (int, error) { + return int(0), errors.New("Not supported on Windows") +} +func GetFrontmostApp() (string, error) { + return "", errors.New("Not supported on Windows") +} +func WaitForTime() { + +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/drives/drives_windows.go b/Payload_Type/poseidon/poseidon/agent_code/drives/drives_windows.go new file mode 100644 index 00000000..5a0effe9 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/drives/drives_windows.go @@ -0,0 +1,11 @@ +//go:build windows + +package drives + +import ( + "errors" +) + +func listDrives() ([]Drive, error) { + return nil, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/execute_library/execute_library_windows.go b/Payload_Type/poseidon/poseidon/agent_code/execute_library/execute_library_windows.go new file mode 100644 index 00000000..94b64b0f --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/execute_library/execute_library_windows.go @@ -0,0 +1,13 @@ +//go:build windows + +package execute_library + +type WindowsExecuteMemory struct { + Message string +} + +func executeLibrary(filePath string, functionName string, args []string) (WindowsExecuteMemory, error) { + res := WindowsExecuteMemory{} + res.Message = "Not Supported" + return res, nil +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/jsimport_call/jxa_windows.go b/Payload_Type/poseidon/poseidon/agent_code/jsimport_call/jxa_windows.go new file mode 100644 index 00000000..6e253f79 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/jsimport_call/jxa_windows.go @@ -0,0 +1,28 @@ +// +build windows + +package jsimport_call + +import ( + "errors" +) + +type JxaRunWindows struct { + Successful bool + Resultstring string +} + +func (j *JxaRunWindows) Success() bool { + return j.Successful +} + +func (j *JxaRunWindows) Result() string { + return j.Resultstring +} + + +func runCommand(encpayload string) (JxaRunWindows, error) { + n := JxaRunWindows{} + n.Resultstring = "" + n.Successful = false + return n, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/jxa/jxa_windows.go b/Payload_Type/poseidon/poseidon/agent_code/jxa/jxa_windows.go new file mode 100644 index 00000000..d870b302 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/jxa/jxa_windows.go @@ -0,0 +1,27 @@ +// +build windows +package jxa + +import ( + "errors" +) + +type JxaRunWindows struct { + Successful bool + Resultstring string +} + +func (j *JxaRunWindows) Success() bool { + return j.Successful +} + +func (j *JxaRunWindows) Result() string { + return j.Resultstring +} + + +func runCommand(encpayload string) (JxaRunWindows, error) { + n := JxaRunWindows{} + n.Resultstring = "" + n.Successful = false + return n, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/keylog/keystate/keystate_windows.go b/Payload_Type/poseidon/poseidon/agent_code/keylog/keystate/keystate_windows.go new file mode 100644 index 00000000..ff03b12b --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/keylog/keystate/keystate_windows.go @@ -0,0 +1,9 @@ +// +build windows + +package keystate + +import "errors" + +func keyLogger() error { + return errors.New("Not implemented.") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/keys/keys_windows.go b/Payload_Type/poseidon/poseidon/agent_code/keys/keys_windows.go new file mode 100644 index 00000000..b85e6353 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/keys/keys_windows.go @@ -0,0 +1,28 @@ +//go:build windows +// +build windows + +package keys + +import "errors" + +// KeyContents - struct that represent raw key contents +type WindowsKeyInformation struct { + KeyType string + KeyData []byte +} + +// Type - The type of key information. Keyring or keychain +func (l *WindowsKeyInformation) Type() string { + return l.KeyType +} + +// KeyData - Retrieve the keydata as a raw json string +func (l *WindowsKeyInformation) Data() []byte { + return l.KeyData +} + +func getkeydata(opts Options) (WindowsKeyInformation, error) { + //Check if the types are available + d := WindowsKeyInformation{} + return d, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/libinject/libinject_windows.go b/Payload_Type/poseidon/poseidon/agent_code/libinject/libinject_windows.go new file mode 100644 index 00000000..146360b0 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/libinject/libinject_windows.go @@ -0,0 +1,18 @@ +//go:build windows + +package libinject + +import ( + "errors" +) + +type WindowsInjection struct { +} + +func (l *WindowsInjection) Success() bool { + return false +} + +func injectLibrary(pid int, path string) (WindowsInjection, error) { + return WindowsInjection{}, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/list_entitlements/list_entitlements_windows.go b/Payload_Type/poseidon/poseidon/agent_code/list_entitlements/list_entitlements_windows.go new file mode 100644 index 00000000..21324ab5 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/list_entitlements/list_entitlements_windows.go @@ -0,0 +1,23 @@ +// +build windows + +package list_entitlements + +type WindowsListEntitlements struct { + Successful bool + Message string + CodeSign int +} + +func listEntitlements(pid int) (WindowsListEntitlements, error) { + res := WindowsListEntitlements{} + res.Successful = false + res.Message = "Not Supported" + return res, nil +} +func listCodeSign(pid int) (WindowsListEntitlements, error) { + res := WindowsListEntitlements{} + res.Successful = false + res.Message = "Not Supported" + res.CodeSign = -1; + return res, nil +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/listtasks/listtasks_windows.go b/Payload_Type/poseidon/poseidon/agent_code/listtasks/listtasks_windows.go new file mode 100644 index 00000000..8b6325a4 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/listtasks/listtasks_windows.go @@ -0,0 +1,25 @@ +// +build windows + +package listtasks + +import ( + "errors" +) + +type ListtasksLinux struct { + Results map[string]interface{} +} + +func (l *ListtasksLinux) Result() map[string]interface{} { + return l.Results +} + +func getAvailableTasks() (ListtasksLinux, error) { + n := ListtasksLinux{} + m := map[string]interface{}{ + "result": "not implemented", + } + + n.Results = m + return n, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/ls/ls.go b/Payload_Type/poseidon/poseidon/agent_code/ls/ls.go index 3b2e6067..15628dba 100755 --- a/Payload_Type/poseidon/poseidon/agent_code/ls/ls.go +++ b/Payload_Type/poseidon/poseidon/agent_code/ls/ls.go @@ -4,11 +4,8 @@ import ( // Standard "encoding/json" "os" - "os/user" "path/filepath" - "strconv" "strings" - "syscall" // 3rd Party "github.com/djherbis/atime" @@ -18,24 +15,6 @@ import ( "github.com/MythicAgents/poseidon/Payload_Type/poseidon/agent_code/pkg/utils/structs" ) -func GetPermission(finfo os.FileInfo) structs.FilePermission { - perms := structs.FilePermission{} - perms.Permissions = finfo.Mode().Perm().String() - systat := finfo.Sys().(*syscall.Stat_t) - if systat != nil { - perms.UID = int(systat.Uid) - perms.GID = int(systat.Gid) - tmpUser, err := user.LookupId(strconv.Itoa(perms.UID)) - if err == nil { - perms.User = tmpUser.Username - } - tmpGroup, err := user.LookupGroupId(strconv.Itoa(perms.GID)) - if err == nil { - perms.Group = tmpGroup.Name - } - } - return perms -} func Run(task structs.Task) { msg := task.NewResponse() diff --git a/Payload_Type/poseidon/poseidon/agent_code/ls/ls_posix.go b/Payload_Type/poseidon/poseidon/agent_code/ls/ls_posix.go new file mode 100644 index 00000000..b447521e --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/ls/ls_posix.go @@ -0,0 +1,32 @@ +//go:build linux || darwin +// +build linux,darwin +package ls + +import ( + // Standard + "os" + "os/user" + "strconv" + "syscall" + + "github.com/MythicAgents/poseidon/Payload_Type/poseidon/agent_code/pkg/utils/structs" +) + +func GetPermission(finfo os.FileInfo) structs.FilePermission { + perms := structs.FilePermission{} + perms.Permissions = finfo.Mode().Perm().String() + systat := finfo.Sys().(*syscall.Stat_t) + if systat != nil { + perms.UID = int(systat.Uid) + perms.GID = int(systat.Gid) + tmpUser, err := user.LookupId(strconv.Itoa(perms.UID)) + if err == nil { + perms.User = tmpUser.Username + } + tmpGroup, err := user.LookupGroupId(strconv.Itoa(perms.GID)) + if err == nil { + perms.Group = tmpGroup.Name + } + } + return perms +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/ls/ls_windows.go b/Payload_Type/poseidon/poseidon/agent_code/ls/ls_windows.go new file mode 100644 index 00000000..a6d84ec2 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/ls/ls_windows.go @@ -0,0 +1,20 @@ +//go:build windows +// +build windows +package ls + +import ( + "os" + + "github.com/MythicAgents/poseidon/Payload_Type/poseidon/agent_code/pkg/utils/structs" +) + +func GetPermission(finfo os.FileInfo) structs.FilePermission { + // TODO: fixme + return structs.FilePermission { + UID: 0, + GID: 0, + Permissions: "", + User: "", + Group: "", + } +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/lsopen/lsopen_windows.go b/Payload_Type/poseidon/poseidon/agent_code/lsopen/lsopen_windows.go new file mode 100644 index 00000000..f66e5ae7 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/lsopen/lsopen_windows.go @@ -0,0 +1,21 @@ +// +build windows + +package lsopen + +import ( + "errors" +) + +type LSOpenWindows struct { + Successful bool +} + +func (j *LSOpenWindows) Success() bool { + return j.Successful +} + +func runCommand(app string, hide bool, args []string) (LSOpenWindows, error) { + n := LSOpenWindows{} + n.Successful = false + return n, errors.New("Not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/persist_launchd/persist_launchd_windows.go b/Payload_Type/poseidon/poseidon/agent_code/persist_launchd/persist_launchd_windows.go new file mode 100644 index 00000000..e9d85479 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/persist_launchd/persist_launchd_windows.go @@ -0,0 +1,15 @@ +package persist_launchd + +import ( + + // Poseidon + + "github.com/MythicAgents/poseidon/Payload_Type/poseidon/agent_code/pkg/utils/structs" +) + +func runCommand(task structs.Task) { + msg := task.NewResponse() + msg.SetError("Not implemented") + task.Job.SendResponses <- msg + return +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/persist_loginitem/persist_loginitem_windows.go b/Payload_Type/poseidon/poseidon/agent_code/persist_loginitem/persist_loginitem_windows.go new file mode 100644 index 00000000..38647829 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/persist_loginitem/persist_loginitem_windows.go @@ -0,0 +1,13 @@ +//go:build windows + +package persist_loginitem + +type PersistLoginItemWindows struct { + Message string +} + +func runCommand(name string, path string, global bool, list bool, remove bool) PersistLoginItemWindows { + n := PersistLoginItemWindows{} + n.Message = "Not Implemented" + return n +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/http.go b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/http.go index c94bc54c..cdb32c33 100644 --- a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/http.go +++ b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/http.go @@ -1,4 +1,4 @@ -//go:build (linux || darwin) && http +//go:build http package profiles diff --git a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/httpx.go b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/httpx.go index 0d9ab48d..f98f585c 100644 --- a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/httpx.go +++ b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/httpx.go @@ -1,4 +1,4 @@ -//go:build (linux || darwin) && httpx +//go:build httpx package profiles diff --git a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/poseidon_tcp.go b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/poseidon_tcp.go index e3888cc5..378b3325 100644 --- a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/poseidon_tcp.go +++ b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/poseidon_tcp.go @@ -1,4 +1,4 @@ -//go:build (linux || darwin) && poseidon_tcp +//go:build poseidon_tcp package profiles diff --git a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/websocket.go b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/websocket.go index a22d6f7d..dc92b563 100644 --- a/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/websocket.go +++ b/Payload_Type/poseidon/poseidon/agent_code/pkg/profiles/websocket.go @@ -1,4 +1,4 @@ -//go:build (linux || darwin) && websocket +//go:build websocket package profiles diff --git a/Payload_Type/poseidon/poseidon/agent_code/pkg/utils/functions/functions_windows.go b/Payload_Type/poseidon/poseidon/agent_code/pkg/utils/functions/functions_windows.go new file mode 100644 index 00000000..83a58506 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/pkg/utils/functions/functions_windows.go @@ -0,0 +1,66 @@ +//go:build windows +package functions + + +import ( + "fmt" + "os" + "runtime" + "golang.org/x/sys/windows" +) + +func isElevated() bool { + return true +} +func getArchitecture() string { + return runtime.GOARCH +} +func getProcessName() string { + name, err := os.Executable() + if err != nil { + return "" + } else { + return name + } +} +func getDomain() string { + // TODO: implement me + return "" +} +func getStringFromBytes(data [65]byte) string { + stringData := make([]byte, 0, 0) + for i := range data { + if data[i] == 0 { + return string(stringData[:]) + } else { + stringData = append(stringData, data[i]) + } + } + return string(stringData[:]) +} +func getOS() string { + verInfo := windows.RtlGetVersion() + return fmt.Sprintf("%d.%d (Build %d)", verInfo.MajorVersion, verInfo.MinorVersion, verInfo.BuildNumber) +} + +func getUser() string { + name := make([]uint16, 128) + nameSize := uint32(len(name)) + err := windows.GetUserNameEx(windows.NameSamCompatible, &name[0], &nameSize) + if err != nil { + return "" + } + return windows.UTF16ToString(name) +} + +func getPID() int { + return os.Getpid() +} +func getHostname() string { + hostname, err := os.Hostname() + if err != nil { + return "" + } else { + return hostname + } +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/prompt/prompt_windows.go b/Payload_Type/poseidon/poseidon/agent_code/prompt/prompt_windows.go new file mode 100644 index 00000000..bbe3be7c --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/prompt/prompt_windows.go @@ -0,0 +1,5 @@ +package prompt + +func prompt(args Arguments) string { + return "Not implemented" +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/ps/ps_windows.go b/Payload_Type/poseidon/poseidon/agent_code/ps/ps_windows.go new file mode 100644 index 00000000..5e590b2f --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/ps/ps_windows.go @@ -0,0 +1,106 @@ +//go:build windows +// +build windows + +package ps + +import ( + "unsafe" + + "golang.org/x/sys/windows" +) + +type WindowsProcess struct { + pid int + ppid int + state rune + pgrp int + sid int + architecture string + binary string + owner string + bin_path string + additionalInfo map[string]interface{} +} + +// Pid returns the process identifier +func (p *WindowsProcess) Pid() int { + return p.pid +} + +// PPid returns the parent process identifier +func (p *WindowsProcess) PPid() int { + return p.ppid +} + +func (p *WindowsProcess) Arch() string { + return "" +} + +// Executable returns the process name +func (p *WindowsProcess) Executable() string { + return p.binary +} + +// Owner returns the username the process belongs to +func (p *WindowsProcess) Owner() string { + return "" +} + +func (p *WindowsProcess) BinPath() string { + return "" +} + +func (p *WindowsProcess) ProcessArguments() []string { + return []string{""} +} + +func (p *WindowsProcess) ProcessEnvironment() map[string]string { + var emptyMap map[string]string + return emptyMap +} + +func (p *WindowsProcess) SandboxPath() string { + return "" +} + +func (p *WindowsProcess) ScriptingProperties() map[string]interface{} { + var emptyMap map[string]interface{} + return emptyMap +} + +func (p *WindowsProcess) Name() string { + return p.binary +} + +func (p *WindowsProcess) BundleID() string { + return "" +} + +func (p *WindowsProcess) AdditionalInfo() map[string]interface{} { + return map[string]interface{}{} +} + +func Processes() ([]Process, error) { + var res []Process + + handle, err := windows.CreateToolhelp32Snapshot(windows.TH32CS_SNAPPROCESS, 0) + if err != nil { + return res, err + } + defer func() { + _ = windows.CloseHandle(handle) + }() + + var procEntry windows.ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + for err = windows.Process32First(handle, &procEntry); err == nil; err = windows.Process32Next(handle, &procEntry) { + if procEntry.ProcessID != 0 { + res = append(res, &WindowsProcess{ + pid: int(procEntry.ProcessID), + ppid: int(procEntry.ParentProcessID), + binary: windows.UTF16ToString(procEntry.ExeFile[:]), + }) + } + } + return res, nil +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/pty/pty_windows.go b/Payload_Type/poseidon/poseidon/agent_code/pty/pty_windows.go new file mode 100644 index 00000000..57025a6e --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/pty/pty_windows.go @@ -0,0 +1,14 @@ +//go:build windows +// +build windows + +package pty + +import ( + "os" + "os/exec" + "errors" +) + +func customPtyStart(command *exec.Cmd) (*os.File, error) { + return nil, errors.New("Not Implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/screencapture/screencapture_windows.go b/Payload_Type/poseidon/poseidon/agent_code/screencapture/screencapture_windows.go new file mode 100644 index 00000000..6f266bb6 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/screencapture/screencapture_windows.go @@ -0,0 +1,12 @@ +// +build windows + +package screencapture + +import ( + "errors" +) + + +func getscreenshot() ([]ScreenShot, error) { + return nil, errors.New("Not Implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/sudo/sudo_windows.go b/Payload_Type/poseidon/poseidon/agent_code/sudo/sudo_windows.go new file mode 100644 index 00000000..f68e02cb --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/sudo/sudo_windows.go @@ -0,0 +1,12 @@ +//go:build windows + +package sudo + +import "github.com/MythicAgents/poseidon/Payload_Type/poseidon/agent_code/pkg/utils/structs" + +func sudoWithPromptOption(task structs.Task, args Arguments) { + msg := task.NewResponse() + msg.SetError("Not Implemented") + task.Job.SendResponses <- msg + return +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/tcc_check/tcc_check_windows.go b/Payload_Type/poseidon/poseidon/agent_code/tcc_check/tcc_check_windows.go new file mode 100644 index 00000000..fe2eb21f --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/tcc_check/tcc_check_windows.go @@ -0,0 +1,5 @@ +package tcc_check + +func checkTCC(user string) string { + return "Not implemented" +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/test_password/test_password_windows.go b/Payload_Type/poseidon/poseidon/agent_code/test_password/test_password_windows.go new file mode 100644 index 00000000..07c021d0 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/test_password/test_password_windows.go @@ -0,0 +1,5 @@ +package test_password + +func testPassword(user string, password string) string { + return "Not implemented" +} diff --git a/Payload_Type/poseidon/poseidon/agent_code/xpc/xpc_windows.go b/Payload_Type/poseidon/poseidon/agent_code/xpc/xpc_windows.go new file mode 100644 index 00000000..e508d7b8 --- /dev/null +++ b/Payload_Type/poseidon/poseidon/agent_code/xpc/xpc_windows.go @@ -0,0 +1,12 @@ +//go:build windows + +package xpc + +import ( + "errors" +) + +func runCommand(command string) ([]byte, error) { + n := make([]byte, 0) + return n, errors.New("not implemented") +} diff --git a/Payload_Type/poseidon/poseidon/agentfunctions/builder.go b/Payload_Type/poseidon/poseidon/agentfunctions/builder.go index b97dc89b..0f23f2ed 100644 --- a/Payload_Type/poseidon/poseidon/agentfunctions/builder.go +++ b/Payload_Type/poseidon/poseidon/agentfunctions/builder.go @@ -32,7 +32,7 @@ var payloadDefinition = agentstructs.PayloadType{ Name: "poseidon", FileExtension: "bin", Author: "@xorrior, @djhohnstein, @Ne0nd0g, @its_a_feature_", - SupportedOS: []string{agentstructs.SUPPORTED_OS_LINUX, agentstructs.SUPPORTED_OS_MACOS}, + SupportedOS: []string{agentstructs.SUPPORTED_OS_LINUX, agentstructs.SUPPORTED_OS_MACOS, agentstructs.SUPPORTED_OS_WINDOWS}, Wrapper: false, CanBeWrappedByTheFollowingPayloadTypes: []string{}, SupportsDynamicLoading: false, diff --git a/agent_capabilities.json b/agent_capabilities.json index dbe8a78b..625f1d61 100644 --- a/agent_capabilities.json +++ b/agent_capabilities.json @@ -1,5 +1,5 @@ { - "os": ["macOS", "Linux"], + "os": ["macOS", "Linux", "Windows"], "languages": ["go"] , "features": { "mythic": ["alerts", "artifacts", "browser scripts", "docker", "file chunking", "file browser", "interactive", @@ -12,4 +12,4 @@ "mythic_version": "3.3.0", "agent_version": "2.1.11", "supported_wrappers": [] -} \ No newline at end of file +}