前段时间看到 NSA 的 DanderSpritz 可以单条删除事件日志, 就逆向看了下, 下面把逆向还原后的删除模块代码放出来, 仅供技术交流, 勿用于非法用途.
通过分析可以知道, DanderSpritz 删除日志时会先把删除模块注入到事件日志所在服务, 然后调用删除模块的导出函数进而完成相关功能. DanderSpritz 删除模块支持的系统版本(判断 wevtsvc.dll 的文件版本)(x86/x64):6.0.6000.163866.0.6001.180006.0.6002.180056.1.7600.163856.1.7601.175146.2.9200.16384
根据它的删除原理(详见还原后的代码)可以知道, 它在删除时并没有把事件日志真正的从本地文件中删除, 只是做了隐藏. 通过删除原理逆推, 是可以还原一部分日志的. 这里也把还原日志的 Demo 代码放出来.
分析时一些结构信息主要参考自: https://github.com/libyal/libevtx/blob/master/documentation/Windows%20XML%20Event%20Log%20(EVTX).asciidoc
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界
hzqst libyal这老哥下面有超多解析windows未公开结构的库
liguangzhi 在win7 32/64测试失败了,不知道是不是操作错误导致的。
studytoNB 这个dll工程是要注入到别的进程运行吗?新建的一个控制台程序GetModuleHandle(TEXT("wevtsvc.dll"))是空的啊,loadlibrary后在GetMod ...
对..是要注入到事件日志服务所在进程