分析 Linux 漏洞利用(exploit)是安全研究、渗透测试和漏洞修复中的核心技能。下面从整体流程、常用工具、关键技术点、实战思路几个层面,系统性地讲一下如何分析 Linux exploit。
一般可分为以下几个阶段:
明确目标
复现环境搭建
echo 0 > /proc/sys/kernel/randomize_va_space
静态分析
动态调试
总结利用链
gcc -E / -S:查看预处理和汇编objdump / readelfIDA Pro / Ghidra(反编译)checksec:查看二进制保护checksec ./vuln
gdb + pwndbg / gefstrace / ltraceperfkvm / qemu + GDB(内核漏洞)dmesgjournalctlbpf / eBPFftracecrash / kdump分析重点:
示例:
char buf[64];
gets(buf); // 溢出点
调试:
break vuln
run
x/20x $rsp
分析重点:
ldd --version)工具:
pwndbg heaplibheap常见类型:
分析步骤:
dmesg 查看 oopsqemu-system-x86_64 -kernel bzImage -append "nokaslr" -s -S
常见方式:
commit_creds(prepare_kernel_cred(0))modprobe_pathcred 结构体典型 shellcode:
commit_creds(prepare_kernel_cred(0));
main()trigger()exploit()open()
mmap()
ioctl()
write()
ptrace()
假设有一个提权 exploit:
fd = open("/dev/vuln", O_RDWR);
ioctl(fd, 0x1337, &buf);
分析思路:
ioctl 是触发点如果你愿意,可以: