恶意代码技术理论:IDAPython应用实例
解决Findr混淆 findr混淆第一版 def patch_jcc32(addr):#addr是一个字节 PatchByte(addr, 0x90) PatchByte(addr+1, 0xE9) PatchWord(addr+6, 0x9090) PatchDword(addr+8,0x90909090) def is_jump_near_pa……
恶意代码技术理论:Sigma规则
1 Sigma概述 Sigma 是一种通用且开放的签名格式,允许您以直接的方式描述相关的日志事件。规则格式非常灵活,易于编写,适用于任何类型的日志文件。 Sigma 是一个开放的规则标准,允许您以通用形式描述对日志数据的搜索。这些规则可以转换并应用于许多日志管理或 SIEM 系统,甚至可以在命令行上与 grep 一起使用。 GitHub地址:https://……
恶意代码技术理论:Sonrt规则
1 Sonrt规则概述 在1998年,Martin Roesch用C语言开发了开放源代码的IDS入侵检测系统Snort。直至今天,Snort已发展成为一个具有多平台、实时流量分析、网络IP数据包记录等特性的强大的网络入侵检测/防御系统,即NIDS/NIPS。当Snort作为NIDS模式运行时,可以分析网络传输的数据包,它发现可疑流量时就会根据事先定义好的规则……
IDA插件:IDAtropy
IDAtropy概述 利用 idapython 和 matplotlib 的强大功能生成熵和直方图的图表。 github地址:https://github.com/danigargu/IDAtropy IDAtropy使用 安装插件后,会弹出配置窗口,进行配置 block size=256 1024 4096,step size = 4的三种对比图 ……
恶意代码漏洞分析:CVE-2018-0798
1 CVE-2018-0798概述 CVE-2018-0798和CVE-2017-11882都是典型的栈溢出漏洞。发生在office软件的EQNEDT32.EXE上。这是一个公式解析程序,在解析Matrix record并未检查长度,从而造成栈缓冲区溢出。 具体发生在sub_443F6C函数,没有对输入做限制,导致覆盖了sub_443E34返回地址,从而导致……
恶意代码技术理论:YARA规则
官方网址:https://yara.readthedocs.io/ github地址:https://github.com/VirusTotal/yara/releases 1 概述 YARA 是一种旨在(但不限于)帮助恶意软件研究人员识别和分类恶意软件样本的工具。使用 YARA,您可以基于文本或二进制模式创建恶意软件系列(或任何您想描述的内容)的描述。每个……
恶意代码技术理论:加密算法总结
1 对称加密 1.1 DES加密算法 DES算法的入口参数有三个:Key、Data、Mode。 其中Key为8个字节共64位,是DES算法的工作密钥; Data也为8个字节64位,是要被加密或被解密的数据; Mode为DES的工作方式,有两种:加密或解密。 1.2 3DES加密算法 3DES是DES加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密……
恶意代码技术理论:信息熵在恶意代码分析中的作用
1 信息与信息熵 信息:在计算机科学中,我们通常认为信息是一种数据或指令的集合,泛指我们通过载体传播的内容。 信息量:对信息的度量,一般用bit。香农对信息量计算公式如下 信息熵:1948年,香农提出了“信息熵”的概念,解决了对信息的量化度量问题,即有多少信息。“信息熵”是香农从热力学“热熵”(表示分子状态混乱程度的物理量)借用过来,熵是形容物质混乱程度的……
恶意代码技术理论:恶意脚本-LNK分析
1. Lnk格式解析 微软原文链接:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-shllink/16cb4ca1-9339-4d0c-a68d-bf1d6cc0f943 微软文件手册:https://docs.microsoft.com/en-us/openspecs/wi……
恶意代码技术理论:恶意代码分析指南针
基础技能 x86汇编 王爽老师的《汇编语言》 x64汇编 https://bbs.pediy.com/thread-43967.htm https://bbs.pediy.com/thread-44078.htm https://bbs.pediy.com/thread-206780.htm ARM汇编/MIPS汇编/其他汇编 ARM、MIPS架构的恶意样本……
恶意代码架构分析:ARM架构分析
ARM基础 1. arm 汇编基础 1. LDMIA R0 , {R1,R2,R3,R4} LDM 为: 多寄存器 “内存取” 指令 IA 表示每次 LDM 指令结束之后 R0 增加 1 个字 最终结果为 R1 = [R0], R1 = [R0+#4], R1 = [R0+#8], R1 = [R0+#0xC] 2. 堆栈寻址 (FA、EA、FD、ED) S……