C/C++一线开发 [2022]hypervisor: 检测与预防 (二) 前情回顾: [[2022] hypervisor: 检测与预防 (一)](https://key08.com/index.php/2022/05/12/1477.html "[2022] hypervisor: 检测与预防 (一)") 让我们来看看新的问题: 阅读全文 2022-06-19 huoji 0 条评论
C/C++一线开发 [2022]WMI 获取系统信息代码 代码示例获取列表: > CPU核心数 磁盘大小 wmi创建进程 创建计划任务 检测上次启动时间 检测上次网卡重置时间 阅读全文 2022-06-14 huoji 0 条评论
系统安全C/C++ [2022] hypervisor: 检测与预防 (一) ### rdtsc 大部分虚拟机包括沙箱用的都存在一个问题 cpuid等一些会造成vmexit的东西, 被硬件加速了 不开虚拟机的时候 只花很少的时间,大于200个CPU周期左右 一旦进了虚拟机 会到大约20000个周期不等 木马 外挂 可以通过判断CPU周期确定自己是不是在虚拟机里 导致沙箱不存活之类的 阅读全文 2022-05-12 huoji 2 条评论
C/C++汇编 [2022]关于intel和amd指令行为不一样这件事 ### AMD CPU与INTEL CPU指令解析问题 假设一个情况: ```cpp 66 e8 00 00 00 00 ``` 在x86指令集中 66会作为e8的prefix,覆盖code segment size 假设当前大小为16bit 新大小会为32bit.反之一样. code segment size由 GDT/LDT 决定.实模式一般是16 bit("unreal"模式除外) 在x64中,我发现了一个很有意思的地方: 66 E8作为指令前缀时,AMD和INTEL呈现了完全不同的特性,即amd会遵循规则,将e8的code segment size设置为16bit 而intel则直接忽略. 这个问题已经被发现了有一段时间了,capstone在2016年,记录了这个问题. https://github.com/capstone-engine/capstone/issues/776 这是一个概念性代码,不用CPUID判断出是INTEL还是AMD的cpu. ### 简单的思考: 能否用于混淆? ### poc https://github.com/huoji120/cpu_duck 阅读全文 2022-04-16 huoji 0 条评论
系统安全二进制安全C/C++汇编一线开发 [2022]Windows ALPC解码:(二) > 不得不承认,ALPC是我目前见过最棘手、最麻烦的东西,而且他还被非常多的应用所使用,如RPC、WMI、COM组件、打印机等每个组件都或多或少带漏洞.对于EDR的开发者来说,简直就是公共厕所.因此这篇文章会介绍如何正确的清理公共厕所. 继上次[ALPC拦截的文章](https://key08.com/index.php/2021/11/15/1394.html "ALPC拦截的文章")后,我们遇到了一个问题: 如何解码ALPC的包? ALPC的传输机制类似于windows的TCP 分为几个阶段: 阅读全文 2022-03-27 huoji 0 条评论
python工具软件二进制安全 [2022] 基于NLP的威胁检出引擎 NLP引擎出自于我的一个简单的想法 - 既然人可以通过汇编看出软件是否是病毒 那么机器是否可以通过汇编看呢? 为了让机器能看得懂代码,我首先想到的是非常经典的NLP分类问题,所谓的NLP分类问题,就是训练的时候给一堆词语+词频,推理的时候先把句子中的词语分出来,再然后计算这些词语的词频,最后得出这条句子属于什么类别的结论 阅读全文 2022-03-17 huoji 1 条评论