web安全二进制安全C/C++汇编Shellcode [2021]windows 2021H奇怪的安全机制导致堆栈回溯出现问题 今天发现的,我syscall hook了zwcreatefile这个API做了堆栈回溯: ![](https://key08.com/usr/uploads/2021/04/1314842216.png) 结果各种bug,详细看: ![](https://key08.com/usr/uploads/2021/04/2583737094.png) ![](https://key08.com/usr/uploads/2021/04/1983365686.png) 似乎windows 2021H先申请了一个read only内存,然后给这个read only内存设置了excute属性,设置完毕后再执行系统代码.执行完毕后再设置为noaccess 因此堆栈回溯会看到大部分都在private属性里面,如果异步回溯则看到noaccess 挺奇怪的机制.目前不确定为什么.暂时没空逆向,如果有知道的tx可以在评论区留言 阅读全文 2021-04-25 huoji 1 条评论
二进制安全C/C++汇编一线开发Shellcode [2021]RtlExecuteHandlerForException、RtlVirtualUnwind、RtlRaiseStatus与X64 SEH处理漫步 最近在给沙箱增加异常处理 然后打算学习一下异常处理的内容 在上一文章我简单介绍了一下X64 SEH在PE里面的表现,但是没有细说系统是如何处理的,因此本文就会详细介绍系统是如何处理runtime function的: 请注意本文可能会有错误,如果以后我发现写错了我会随时修正 阅读全文 2021-03-28 huoji 0 条评论
二进制安全汇编Shellcode [2021]x64 SEH分析 最近在给沙箱增加异常处理 然后打算学习一下异常处理的内容,,搜索了一下 网上都是莫名其妙复制粘贴的,我们直接从原理上解决这个问题: 首先是try catch ![](https://key08.com/usr/uploads/2021/03/3198721258.png) 阅读全文 2021-03-27 huoji 0 条评论
二进制安全C/C++汇编Shellcode [2021]正确探测到内存映射的模块 "无文件落地"/木马/外挂/后门 @lordtristan ```cpp if(VirtualQueryEx(hProc, lpAddress, &mbi, sizeof(mbi))){ //Use "mbi." here, its just a fast C&p from my source if((dwState & MEM_COMMIT) && ((dwProtect & PAGE_EXECUTE_READWRITE) || (dwProtect & PAGE_EXECUTE_READ)) && !(dwProtect & PAGE_NOACCESS) && !(dwProtect & PAGE_GUARD) && !(dwState & MEM_RELEASE)) { VirtualLock(lpAddress, dwSize); HMODULE hModule; GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (LPCTSTR)lpAddress, &hModule); if(!hModule) //Inside of the exe file { DWORD dwDLLMain = FindPattern((DWORD)lpAddress, dwSize, (BYTE*)"\x55\x8b\xec\x83\x7d\x0c\x01\x75\x00", "xxxxxxxx?"); if(dwDLLMain) { //DLL-Main inside of the exe file?! //Do whatever yo uwant now :D } } VirtualUnlock(lpAddress, dwSize); } } ``` 阅读全文 2021-03-16 huoji 0 条评论
工具软件二进制安全C/C++汇编Shellcode一线开发 [2021]一个简单寻找无文件落地后门与内存免杀shellcode的工具 # DuckMemoryScan 一个简单寻找无文件落地后门的工具,由huoji花了1天编写,编写时间2021-02-24 一个简单寻找包括不限于iis劫持,无文件木马,shellcode免杀后门的工具,由huoji花了1天编写,编写时间2021-02-24 !!!本程序需要64位编译才能回溯x64的程序堆栈,请勿执行32位编译!!! !!!本工具不能代替杀毒软件!!! # 运行截图 ![演示图片.png](https://key08.com/usr/uploads/2021/02/755527114.png) # 功能列表 1. HWBP hook检测 检测线程中所有疑似被hwbp隐形挂钩 2. 内存免杀shellcode检测(metasploit,Cobaltstrike完全检测) 3. 可疑进程检测(主要针对有逃避性质的进程[如过期签名与多各可执行区段]) 4. 无文件落地木马检测(检测所有已知内存加载木马) 5. 简易rootkit检测(检测证书过期/拦截读取/证书无效的驱动) 6. 检测异常模块,检测绝大部分如"iis劫持"的后门(2021年2月26日新增) # 免杀木马检测原理: 所有所谓的内存免杀后门大部分基于"VirtualAlloc"函数申请内存 之后通过各种莫名其妙的xor甚至是aes加密去混淆shellcode达到"免杀"效果. 本工具通过线程堆栈回溯方法(StackWalkEx函数)遍历线程,寻找系统中在VirtualAlloc区域执行代码的区域,从而揪出"免杀木马" 当然也会存在误报,多常见于加壳程序也会申请VirtualAlloc分配内存. 但大部分普通程序均不会在VirtualAlloc区域内执行代码.一般都是在.text区段内执行代码 # 无文件落地木马检测原理: 所有无文件落地木马都是一个标准PE文件被映射到内存中,主要特征如下: 1. 内存区段有M.Z标志 2. 线程指向一个NOIMAGE内存 本工具将会通过第一种特征检测出所有"无文件落地木马" # 异常模块检测原理 本工具将会扫描所有带签名程序的模块列表并且检测其中模块是否存在签名,如果不存在则发出提示.本检测存在较多误报,但将会检测到类似IIS劫持的特殊模块 # 使用方式 编译 运行 得到信息列表 # 检测出疑似后门后怎么做? 使用其他工具比如Scylla dump内存做进一步分析,本工具不打算做内存dump系列操作(时间有限不想重复造轮子) # 如何让堆栈回溯更精准 目前工具只回溯rip与eip,你可以回溯RSP或者EBP 只需修改StackFarmeEx.AddrPC.Offset即可 # 使用方式 编译 运行 得到信息列表 # 追踪这个项目 https://github.com/huoji120/DuckMemoryScan 阅读全文 2021-02-24 huoji 2 条评论