工具软件渗透案例二进制安全游戏安全C/C++汇编Shellcode [2021]windows 19H1中一种冷门的反调试方法 windows 19H1中PsSuspendProcess新加了一点代码: ```cpp NTSTATUS PsSuspendProcess(_EPROCESS* Process) { const auto currentThread = KeGetCurrentThread(); KeEnterCriticalRegionThread(currentThread); NTSTATUS status = STATUS_SUCCESS; if ( ExAcquireRundownProtection(&Process->RundownProtect) ) { auto targetThread = PsGetNextProcessThread(Process, nullptr); while ( targetThread ) { // Our flag in action if ( !targetThread->Tcb.MiscFlags.BypassProcessFreeze ) PsSuspendThread(targetThread, nullptr); targetThread = PsGetNextProcessThread(Process, targetThread); } ExReleaseRundownProtection(&Process->RundownProtect); } else status = STATUS_PROCESS_IS_TERMINATING; if ( Process->Flags3.EnableThreadSuspendResumeLogging ) EtwTiLogSuspendResumeProcess(status, Process, Process, 0); KeLeaveCriticalRegionThread(currentThread); return status; } ``` ```cpp if ( !targetThread->Tcb.MiscFlags.BypassProcessFreeze ) ``` 总所周知 调试器都要用这个函数挂起线程、进程 因此如果我们给线程设置一个参数(THREAD_CREATE_FLAGS_BYPASS_PROCESS_FREEZE为0x40): ```cpp NtCreateThreadEx(&handle, MAXIMUM_ALLOWED, nullptr, NtCurrentProcess(), &printer, nullptr, THREAD_CREATE_FLAGS_BYPASS_PROCESS_FREEZE, 0, 0, 0, nullptr); ``` 那么这个线程将无法暂停! 那么 如何利用为反调试呢? 继续看PsSuspendProcess->KeSuspendThread: ```cpp ULONG KeSuspendThread(_ETHREAD *Thread) { auto irql = KeRaiseIrql(DISPATCH_LEVEL); KiAcquireKobjectLockSafe(&Thread->Tcb.SuspendEvent); auto oldSuspendCount = Thread->Tcb.SuspendCount; if ( oldSuspendCount == MAXIMUM_SUSPEND_COUNT ) // 127 { _InterlockedAnd(&Thread->Tcb.SuspendEvent.Header.Lock, 0xFFFFFF7F); KeLowerIrql(irql); ExRaiseStatus(STATUS_SUSPEND_COUNT_EXCEEDED); } auto prcb = KeGetCurrentPrcb(); if ( KiSuspendThread(Thread, prcb) ) ++Thread->Tcb.SuspendCount; _InterlockedAnd(&Thread->Tcb.SuspendEvent.Header.Lock, 0xFFFFFF7F); KiExitDispatcher(prcb, 0, 1, 0, irql); return oldSuspendCount; } ``` 可以看到 Thread->Tcb.SuspendCount 在成功暂停线程的时候会增加! 也就是说我们可以利用那个新的flag阻止线程暂停 这样子这个count就不会增加 当调试器调用NtResumeProcess的时候 计数就会减少! 利用这一点我们就可以知道自己是否被调试: ```cpp for(size_t i = 0; i < 128; ++i) NtSuspendThread(thread, nullptr); while(true) { if(NtSuspendThread(thread, nullptr) != STATUS_SUSPEND_COUNT_EXCEEDED) std::puts("I was suspended\n"); Sleep(1000); } ``` 阅读全文 2021-01-10 huoji 0 条评论
phppython渗透案例web安全javaJavaScript二进制安全无线安全csshtml游戏安全C/C++渗透复现一线开发易语言汇编Shellcode 《网络安全从浅入深百科全书》信息篇 word版本 ## 注意:下面的文字版主要目的是SEO 排版并不好看 建议看word版本: word版本(推荐阅读): [《网络安全从浅入深百科全书》信息篇.docx](https://key08.com/usr/uploads/2020/12/4020023684.docx) word在线阅读,无需下载连接直接接阅读: https://docs.qq.com/doc/DWndvTUh5YUp4UGV2?pub=1&dver=2.1.0 文字版: 主要为seo 排版并不好看: 阅读全文 2020-12-21 huoji 0 条评论
工具软件渗透案例web安全二进制安全Shellcode [2019]一起僵尸网络进行大规模DDoS攻击的样本分析 **作者 Sampson 侵删** [TOC] ###一、背景 最近突然发现服务器出现流量异常,十分卡顿,通过top命令查看内存使用情况,发现可疑的进程:  阅读全文 2019-12-24 夜里猛 0 条评论
渗透案例二进制安全渗透复现Shellcode [2019]两起僵尸网络Mirai样本分析 [TOC] ###概述 2019年6月26日蜜罐系统监控到两起Mirai的物联网蠕虫活动情况,自2017年11月23日Check Point研究人员发现华为家用路由器HG532存在0day漏洞(CVE-2017-17215),可以远程执行任意代码,Mirai蠕虫病毒就利用该漏洞进行大肆传播,本文会结合蜜罐捕获的攻击证据对该蠕虫进行技术分析,重点分析该蠕虫是如何利用该漏洞进行传播的。整个攻击流程如下 阅读全文 2019-12-24 夜里猛 0 条评论
渗透案例渗透复现Shellcode [2019]恶意代码分析中一些常见的非PE样本分析 [TOC] ##0x00 前言 就目前来看,非PE的恶意攻击已经越来越多了,主要是利用office这一套,最近也看了一些,就写一点记录一下。 阅读全文 2019-12-21 夜里猛 0 条评论
渗透案例web安全 [2015]一封钓鱼邮件引起的黑吃黑 前言:头条还是新手期,也没抱什么希望转正,就当是自己的笔记和一些分享吧。由于最近忙于店里的事情一直没来得及更新,所以这次还是照搬自己以前的老文,不喜勿喷。 正文:事情要从前天晚上提起,正在观看西门大官人的"大剑姬",正看的火热,突然发现电脑右下角来了一封邮件,就随意的瞄了一眼,然后瞄着瞄着,一看标题是“LOL美服最新封号信息公布” 我勒个擦!自己因在玩美服的原因,而且经常变换IP上美服的, 我以为会造成封号的情况,然后我就进邮箱去看看我有没有被封号,看着看着总感觉不对劲。 阅读全文 2019-11-27 huoji 0 条评论
渗透案例 [2017]59互联网站存在sql注入漏洞(www.59.cn) 来自于 H.U.C-展昭 <2796221679@qq.com> 在网站里面四处寻找注入点,但都失败了。毕竟是家互联网公司,但直觉告诉我,这种长相的网站多半有漏洞。最后在注册用户的时候看到了希望。 2796221679> 阅读全文 2019-11-16 huoji 0 条评论