| 关键词: 特征值 病毒 dword push mov 程序 nbsp 启发式 ptr 样本 |
说到,反高启发,大家会感到非常陌生吧, 但是,如果能好好利用高启发, 免杀只是30分钟一个的事情。 首先为大家介绍一下高启发, 在百度里面有这样的一段介绍: 启发式:简化虚拟机和简化行为判断引擎的结合 Heuristic(启发式技术=启发式扫描+启发式监控) 重点在于特征值识别技术上的更新、解决单一特征码比对的缺陷。目的不在于检测所有的未知病毒,只是对特征值扫描技术的补充。 主要针对:木马、间谍、后门、下载者、已知病毒(PE病毒)的变种。 启发式技术是基于特征值扫描技术上的升级,与传统反病毒特征值扫描技术相比,优点在于对未知病毒的防御。是特征值识别技术质的飞跃。 传统反病毒特征值扫描技术,由反病毒样本分析专家通过逆向反编译技术,使用反编译器(ollydbg、ida、trw等)来检查可疑样本文件是否存在恶意代码,从而判定程序文件是否属于正常程序或病毒、恶意软件。在确认程序为病毒、恶意软件后,不同的安全厂商根据自己的标准对此可疑程序样本进行特征提取和样本命名(不同安全厂商有自己规定的特征提取点和样本命名规则)。最后经过测试部门测试通过后,更新到服务器,提供用户的本地病毒库更新。在用户操作系统正常监控或用户手动扫描后,利用杀毒引擎对系统上的文件自动进行特征值提取并与病毒库中已存特征值比对,条件符合即比对结果为真时,即判断此文件为病毒库中记录的特征值对应的病毒名称的病毒(恶意软件)。 病毒、恶意软件通常最初的指令是直接读写磁盘操作、解码指令,或获取系统目录(GetSystemDirctory)、获取磁盘类型(GetDriveType)、打开服务管理器(OpenSCManager)等相关操作指令序列。这些都是病毒样本分析专家分析中得到的经验。 启发式技术,在原有的特征值识别技术基础上,根据反病毒样本分析专家总结的分析可疑程序样本经验(移植入反病毒程序),在没有符合特征值比对时,根据反编译后程序代码所调用的win32API函数情况(特征组合、出现频率等)判断程序的具体目的是否为病毒、恶意软件,符合判断条件即报警提示用户发现可疑程序,达到防御未知病毒、恶意软件的目的。解决了单一通过特征值比对存在的缺陷。 例如:一个可疑程序通过反病毒杀毒引擎反编译后,发现代码中自动释放可执行文件驻留系统目录、伪装系统文件、注册win32服务获取系统管理权限、通过命令行删除自身文件,调用系统组件svchost.exe来开启后门服务,隐藏自身进程并尝试通过OpenSCManagerA、OpenServiceA、ControlService等函数来开启系统自身的终端服务,以便进一步控制计算机。通过这些条件即可判断为恶意软件(后门程序)。 ~~~~~~~~~~~~~~ 说简单点,我的认为就是,OD这种动态调试与杀毒的结合。 那么什么是反启发呢? 我也说不清楚~~~~~~ 我的愚见就是反启发就是让杀软不能跟踪下去, 不能找到你的恶意代码, 那么SEH又是什么呢? 简单的说, 它就是结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。 如果你有兴趣还可以去看看这两篇文章: http://www.pediy.com/bbshtml/bbs4/kanxue310.htm http://www.pediy.com/bbshtml/BBS4/kanxue370.htm SEH暗桩就是利用这个原理, 在进行动态跟踪时,会跳到别的位置去,但是实际上程序不会。 Understand? 下面我就为大家发一个SEH暗桩的代码~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov esi,0 mov eax,dword ptr ds:[esi] 其中*********的地方是你要跳转的地址 把这些连起来当成跳转用就行了, 具体效果自己进OD单步看吧 大家只要稍稍变异一下, 就可以过很多了。。 全部可见: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov esi,0 mov eax,dword ptr ds:[esi] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov ebx,0 div ebx ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nop push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp int 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop int 68 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop vxdcall 134543 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp stc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp JMP 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp ret ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp pop ss |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|