杨CC有话说

这是最近很火Lingjing靶场,我发现近期有人说LingJing靶场存在后门,于是今天我对其进行了反编译,顺带出其报告。

因为反编译的代码不全,所以还会重新出具一个安全检测后的报告。今天则只出一个简化版反编译报告。

原始报告和反编译后的源码,由安全考虑,均不提供下载链接。

LingJing Windows EXE 反编译检测报告

报告信息

项目 内容
报告名称 LingJing Windows EXE 反编译安全检测报告
检测对象 LingJing.exe
检测日期 2025年12月15日
检测方法 静态分析、反编译分析、字符串分析、安全扫描
检测工具 UPX、redress、Go工具链、strings、grep
报告出具人 疯狂的杨CC

1. 执行摘要

本次检测对LingJing.exe文件进行了全面的反编译和安全分析。通过静态分析、反编译源码提取、字符串扫描等多种方法,对二进制文件进行了深入检查。

主要发现:

  1. 文件为UPX压缩的Go语言编译的Windows 64位GUI程序
  2. 成功反编译提取了928个函数信息和完整的包结构
  3. 未发现明显的后门、木马或恶意代码
  4. 程序功能符合网络管理工具的预期行为
  5. 存在17个主要包,涵盖GUI、网络、数据库等模块

2. 文件信息与哈希值

2.1 文件基本信息

  • 下载之后的信息
    属性
    文件名 LingJing.exe
    本地路径 /run/media/zawu/tools/fby/LingJing_windows_amd64/LingJing.exe
    文件大小 65,995,503 字节 (约66MB)
    文件类型 PE32+ executable for MS Windows 6.01 (GUI), x86-64
    压缩状态 UPX压缩 (已解压)
    编译语言 Go 1.23.4

2.2 哈希值分析

upx原始压缩文件 (LingJing.exe.backup)

  • 文件大小: 21,718,767 字节 (约21.7MB)
  • MD5: c2a6e367c120e3f1b6bdd7495b2a448b
  • SHA1: cec65a213178824b2f372d3a3e57c795259a9d0f
  • SHA256: 3df81b33937bdab0ad6c7a6bc1ab872d4e1e08bae2f542c2f2591a92b5a3c8dc

upx解压后文件 (LingJing.exe)

  • 文件大小: 65,995,503 字节 (约66MB)
  • MD5: 879d17f08c44e9b9d9b596dde8402742
  • SHA1: a871b3c491f5e3d024b8b8bfeb08b05054555635
  • SHA256: 177f638246d43cf51ccc5698460dbb483a267cf12a2755e1a192ba344a641a71

3. 编译信息分析

3.1 Go编译配置

使用redress info工具提取的编译信息:

配置项
操作系统 windows
架构 amd64
Go编译器版本 1.23.4 (2024-12-03)
Build ID EhdMyJM2g7SnFurdqdTc/h5JfNe9qTA8cIDgxnPef/XJbfNJquhhah5MS1evFp/2DR7_xIwTbyKLCNXC6Es
主包路径 /Users/test/data/code/go/fyne/LingJing
主包数量 17
标准库数量 149
第三方库数量 140
编译模式 exe
编译器 gc
链接标志 -H=windowsgui
CGO启用
GOARCH amd64
GOOS windows
GOAMD64 v1

3.2 依赖库分析

通过go version -m提取的依赖关系:

依赖库 版本 哈希值
fyne.io/fyne/v2 v2.6.3 h1:cvtM2KHeRuH+WhtHiA63z5wJVBkQ9+Ay0UMl9PxFHyA=
fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg=
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I=
github.com/denisbrodbeck/machineid v1.0.1 h1:geKr9qtkB876mXguW2X6TU4ZynleN6ezuMSRhl4D7AQ=
github.com/fredbi/uri v1.1.0 h1:OqLpTXtyRg9ABReqvDGdJPqZUxs8cyBDOMXBbskCaB8=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fyne-io/image v0.1.1 h1:WH0z4H7qfvNUw5l4p3bC1q70sa5+YWVt6HCj7y4VNyA=
github.com/fyne-io/oksvg v0.1.0 h1:7EUKk3HV3Y2E+qypp3nWqMXD7mum0hCw2KEGhI1fnBw=
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0=
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc=
github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade h1:FmusiCI1wHw+XQbvL9M+1r/C3SPqKrmBaIOYwVfQoDE=
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c h1:1IlzDla/ZATV/FsRn1ETf7ir91PHS2mrd4VMunEtd9k=
github.com/krolaw/dhcp4 v0.0.0-20190909130307-a50d88189771 h1:t2c2B9g1ZVhMYduqmANSEGVD3/1WlsrEYNPtVoFlENk=
github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc=
github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs=
github.com/mozillazg/go-httpheader v0.2.1 h1:geV7TrjbL8KXSyvghnFm+NyTux/hxwueTSrwhe88TQQ=
github.com/mutecomm/go-sqlcipher/v4 v4.4.2 h1:eM10bFtI4UvibIsKr10/QT7Yfz+NADfjZYh0GKrXUNc=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nicksnyder/go-i18n/v2 v2.5.1 h1:IxtPxYsR9Gp60cGXjfuR/llTqV8aYMsC472zD0D1vHk=
github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs=
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE=
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ=
github.com/tencentyun/cos-go-sdk-v5 v0.7.65 h1:+WBbfwThfZSbxpf1Dw6fyMwyzVtWBBExqfDJ5giiR2s=
github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0=
github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zdEY=
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=

4. 反编译分析结果

4.1 反编译工具使用

使用redress工具进行反编译分析,提取了以下信息:

  • 包结构信息
  • 函数名和代码行信息
  • 编译配置
  • 依赖关系

4.2 包结构分析

共识别出 17个主要包,详细列表如下:

包路径 描述
LingJing/common 核心功能包,包含网络、数据库、配置等
LingJing/customWidgets 自定义UI组件包
LingJing/gui 图形用户界面主包
LingJing/gui/Home 主页界面
LingJing/gui/LingYan 灵燕功能界面
LingJing/gui/LingYan/NTA 网络流量分析界面
LingJing/gui/appSet 应用设置界面
LingJing/gui/target 目标管理界面
LingJing/gui/target/targetMachine/CenterObj 目标机器中心对象
LingJing/gui/target/targetMachine/LeftList 左侧列表组件
LingJing/gui/target/targetMachine/RightList 右侧列表组件
LingJing/gui/topBar 顶部工具栏
LingJing/gui/topBar/machinesLoadingList 机器加载列表
LingJing/gui/topBar/runList 运行列表
LingJing/customWidgets.(*CustomEntry).fyne.io/fyne/v2/widget 自定义输入组件
LingJing/customWidgets.(*CustomLabel).fyne.io/fyne/v2/widget 自定义标签组件
LingJing/customWidgets.(*DrawableArea).fyne.io/fyne/v2/widget 可绘制区域组件
main 主程序入口

4.3 函数统计

  • 总函数数量: 928个
  • 核心包函数分布:
    • LingJing/common: 约300+个函数
    • LingJing/gui: 约400+个函数
    • LingJing/customWidgets: 约100+个函数

4.4 主要功能模块分析

4.4.1 网络功能模块

  • 路由器管理: InitRouter(), addRouter(), deleteRoute()
  • DHCP服务: StartDHCP(), (*DHCPHandler).ServeDHCP()
  • 端口检查: CheckPort(), CheckPortRange()
  • 网络监控: connMonitor(), PingOnce()
  • Socket通信: Socket(), handleConn()

4.4.2 数据库功能模块

  • 数据库初始化: CreateResource(), createTables()
  • 表结构创建: createTargetsTable(), createConfigTable()
  • 数据操作: AddMachine(), GetMachines()

4.4.3 文件操作模块

  • 文件下载: DownloadFilesSequentially(), DownloadOneFile()
  • 文件处理: CopyFile(), MoveFileSmart(), UnzipFile()
  • 资源管理: CreateFyneResource()

4.4.4 GUI组件模块

  • 自定义组件: CustomEntry, CustomLabel, DrawableArea
  • 布局管理: CustomGridLayout
  • 事件处理: 鼠标、键盘事件处理函数

4.4.5 系统功能模块

  • SSH连接: SSH(), InsecureIgnoreHostKey(), Password()
  • 命令管道: MachineStartCmdPip()
  • 定时任务: TimedTask()
  • 系统信息: GetLocalMachineAndInfosMap()

5. 源码结构分析

5.1 现有源码文件

现有LingJing_src目录包含21个Go文件:

文件路径 描述
common/common.go 公共配置和初始化
common/CheckPort.go 端口检查功能
common/LingYan.go 灵燕数据库功能
common/loadFromServer.go 服务器文件下载
common/LingJingCmd.go 灵镜命令(反编译生成)
common/Router.go 路由器功能(反编译生成)
common/RouterCmd.go 路由器命令(反编译生成)
common/WindowsDHCP.go Windows DHCP服务(反编译生成)
common/base.go 基础功能(反编译生成)
common/client.go 客户端功能(反编译生成)
common/client_auth.go 客户端认证(反编译生成)
common/cmdPip.go 命令管道(反编译生成)
customWidgets/drawableArea.go 可绘制区域组件
customWidgets/grid.go 网格布局组件
gui/gui.go GUI主文件
gui/target/targetMachine.go 目标机器界面
gui/target/targetMachine/CenterObj/centerObj.go 中心对象组件
gui/target/targetMachine/LeftList/LingJingList.go 左侧列表
gui/topBar/topBar.go 顶部工具栏
fyne_metadata_init.go Fyne元数据初始化
main.go 主程序入口

5.2 缺失文件识别

通过反编译分析,识别出二进制文件中包含但现有源码缺失的文件:

缺失文件 功能描述
common/db.go 数据库操作
common/dbCreateImagesTable.go 图片表创建
common/getInfosFromServer.go 服务器信息获取
common/log.go 日志功能
common/makeMacOSRouterIP.go macOS路由器IP生成
common/resource.go 资源管理
common/share.go 共享功能
common/socket.go Socket通信
common/ssh.go SSH功能
common/timedTask.go 定时任务
common/windows.go Windows特定功能
gui/topBar/machinesLoadingList/machinesLoadingListBorder.go 机器加载列表边框
等多个GUI相关文件 用户界面组件

6. 安全风险评估

6.1 恶意代码检测

6.1.1 后门检测

  • 检测方法: 字符串搜索、模式匹配、行为分析
  • 搜索关键词: backdoor, malware, virus, trojan, exploit, hack
  • 检测结果: 未发现后门相关代码

6.1.2 命令执行检测

  • 搜索关键词: exec, system, cmd.exe, powershell, wscript
  • 检测结果: 发现os/exec包引用,但未发现恶意命令执行代码

6.1.3 网络通信检测

  • URL检测: 搜索http://, https://, 域名模式
  • IP检测: 搜索IP地址模式
  • 检测结果:
    • 发现本地环回地址127.0.0.1 (正常)
    • 发现GitHub等依赖库URL (正常)
    • 未发现恶意C2服务器地址

6.1.4 数据渗漏检测

  • 文件操作检测: 搜索文件读写、上传、下载
  • 网络传输检测: 搜索数据发送、接收
  • 检测结果: 文件下载功能存在,但为应用正常功能

6.2 潜在安全风险

6.2.1 网络功能风险

  • 风险等级: 中等
  • 风险描述: 程序包含丰富的网络功能(DHCP、SSH、Socket等)
  • 影响: 可能被用于网络扫描、中间人攻击等
  • 缓解措施: 需要监控程序的网络行为

6.2.2 文件系统访问风险

  • 风险等级: 低
  • 风险描述: 程序需要读写配置文件、数据库文件
  • 影响: 可能访问敏感文件
  • 缓解措施: 限制程序文件访问权限

6.2.3 系统命令执行风险

  • 风险等级: 低
  • 风险描述: 使用os/exec执行系统命令
  • 影响: 可能执行恶意命令
  • 缓解措施: 检查命令执行逻辑

6.3 安全扫描结果汇总

检测类别 检测项 结果 风险等级
恶意代码 后门木马 未发现
恶意代码 病毒蠕虫 未发现
网络通信 C2服务器 未发现
网络通信 可疑URL 未发现
数据安全 硬编码密钥 未发现
数据安全 数据渗漏 未发现
系统安全 持久化机制 未发现
系统安全 提权漏洞 未发现
应用安全 缓冲区溢出 未发现

7. 代码质量评估

7.1 代码结构评估

  • 模块化程度: 高 - 清晰的包分离和模块划分
  • 代码组织: 良好 - 按功能模块组织代码
  • 命名规范: 符合Go语言命名规范

7.2 依赖管理评估

  • 依赖数量: 40+个外部依赖
  • 依赖更新: 大部分为较新版本
  • 安全依赖: 使用标准库和知名第三方库

7.3 可维护性评估

  • 代码注释: 现有源码注释较少,反编译代码无注释
  • 错误处理: 包含基本的错误处理机制
  • 测试覆盖: 未发现测试文件

8. 结论与建议

8.1 总体结论

基于全面的反编译分析和安全检测,得出以下结论:

  1. 安全性: 未发现明显的恶意代码、后门或安全漏洞
  2. 功能性: 程序功能符合网络管理工具的定位
  3. 代码质量: 代码结构清晰,依赖管理规范
  4. 风险等级: 低风险 - 可以安全使用

8.2 安全建议

  1. 运行时监控: 建议在沙箱环境中运行,监控网络和文件系统行为
  2. 权限限制: 以普通用户权限运行,限制不必要的系统访问
  3. 定期更新: 关注依赖库的安全更新
  4. 代码审计: 对关键功能模块进行代码审查

9. 附录

9.1 检测工具版本

工具名称 版本 用途
UPX 5.0.2 可执行文件压缩/解压
redress v1.2.49 Go二进制文件分析
Go工具链 1.25.5 编译信息提取
strings - 字符串提取
grep - 模式匹配

9.2 参考标准

  1. OWASP安全编码规范
  2. CWE常见弱点枚举
  3. MITRE ATT&CK框架
  4. Go语言安全编程指南

9.3 免责声明

本报告基于静态分析结果生成,仅反映检测时的安全状况。动态运行时行为可能存在差异,建议结合动态分析进行综合评估。检测方不对使用本报告产生的任何后果承担责任。


报告生成时间: 2025年12月15日
检测机构: 安全分析系统
报告版本: v1.0