漏洞学习:缓冲区溢出
概念 目前有两种主要类型的缓冲区溢出 基于堆 基于堆栈 堆与堆栈 在程序执行之前,加载程序为其分配一个虚拟地址空间,其中包括堆和堆栈的地址。 堆是一块内存,用于全局变量和变量在运行时分配的内存(动态分配)。 就像自助餐上的一堆盘子一样,软件栈是由保存被调用函数的局部变量的框架构成的。调用函数时将帧压入(放入)堆栈,并在返回时从堆栈中弹出(移出)。如果有……
漏洞学习:空指针解引用
概念 C/C++语言空指针的值为NULL,一般NULL指针指向进程的最小地址,通常这个值为0. 当程序试图解引用一个期望非空,但是实际为空的指针时,会发生空指针解引用错误。可以导致程序异常终止或拒绝服务。 空指针解引用时C/C++程序中较为普遍存在的内存缺陷类型,当指针指向无效的内存地址并对其解引用时,产生不可预见错误,导致软件崩溃或者拒绝服务。 漏洞……
漏洞学习:双重释放-Double Free
概念 指对同一个指针指向的内存释放了两次。 对于C语言,同一个指针进行两次Free()操作,可导致二次释放。 对于C++语言,浅复制操作不当时导致二次释放的常见原因之一。例如,调用一次赋值运算符或复制构造函数将会导致两个对象的数据成员指向相同的动态内存。此时,引用计数机制变得非常重要。若引用计数不当,一个对象超出作用域时,析构函数将会释放这两个对象共享的内存……
漏洞学习:释放后使用-UAF
概念 当动态分配的内存释放时,该内存的内容是不确定的,有可能保存完整并可以被访问。 重新分配和回收释放时由内存管理程序决定的,但是也可能该内存的内容已经被改变,从而导致意外的程序行为。 当内存释放之后,应当保证不再对其进行写入和读取。 UAF会导致包括程序异常终止,任意代码执行和拒绝服务攻击等危险。 漏洞编号 漏洞概述 CVE-201……
恶意代码漏洞分析:CVE-2021-40444
漏洞概述 2021 年 8 月 21 日,MSTIC 观察到一名 Mandiant 员工在社交媒体上发布的帖子,该员工具有跟踪 Cobalt Strike Beacon 基础设施的经验。所写文章重点介绍了一个于 2021 年 8 月 19 日上传到 VirusTotal的 Microsoft Word 文档(SHA-256:3bddb2e1a85a9e06b……
恶意代码技术理论:Internet Explorer 架构
Internet Explorer 架构 参考地址:https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/aa741312(v=vs.85)?redirectedfrom=MSDN 基于 COM 的架构 浏……
内核/用户仿真框架-Speakeasy
1 基本简介 说明:https://www.fireeye.com/blog/threat-research/2020/08/emulation-of-malicious-shellcode-with-speakeasy.html github地址:https://github.com/mandiant/speakeasy Speakeasy 是一种便携式、……
恶意代码技术理论:MFC恶意代码分析
1 MFC框架结构 MFC库(微软基础类库(Microsoft Foundation Class))是开发Windows应用程序的C++接口,是微软公司提供的一个类库。MFC提供了面向对象的框架,采用面向对象技术,将大部分的Windows API 封装到C++类中,以类成员函数的形式提供给程序开发人员调用。 框架包含了更很多东西,如多种不同的库,资源等。库包……
恶意代码技术理论:Windows10 控制流保护
控制流保护(CFG) CFG Windows8.1预览中引入了新的安全缓解技术,因为兼容性问题,在windows 8.1 RTM 中被禁用。然后再windows 10 中被重新启用。是实现控制流完整性(CFI)的一种方式。 CFG 通过在间接跳转(Indirect Call)前插入校验代码(比如 call dword ptr ss:[ebp-8] 等等 ),……
恶意代码技术理论:Suricata规则
目前有两种主流威胁检测技术:基于签名的检测和基于异常的检测。 使用基于签名的IDS,可以搜索一直恶意流量的规则和模式。一旦找到与签名相匹配的项,就会告警。例如snort和suricata 使用基于异常的IDS,也即是基于行为的IDS,依赖于基线而不是签名,。它将搜索偏离先前活动或先前看到的活动的平均值。例如,如果用户总是从加利福尼亚登录网络,如果发现在一个……