恶意代码分析实战——反汇编
QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。
叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)
纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!
了解、学习恶意代码对抗反汇编的技术。
识别恶意代码采用的反汇编技术,并针对性地进行破解,
结合ollydbg进行分析;
在此过程中我们还会使用idc脚本辅助我们的分析;
此外,我们还将学习如何破解程序的加密原理。
恶意代码分析实战
本科/专科信息安全专业
计算机网络、操作系统
1.IDA pro
IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,
交叉Windows或Linux WinCE MacOS平台主机来分析程序,
被公认为最好的花钱可以买到的逆向工程利器。
IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。
它支持数十种CPU指令集其中包括Intelx86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
2.OllyDbg
一个反汇编工具,
又叫OllyDebug,一个新的动态追踪工具,
将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,
己代替SoftICE成为当今最为流行的调试解密工具了。
同时还支持插件扩展功能,是目前最强大的调试工具。
服务器:Windows 7
辅助工具:IDA pro,Ollydbg
本次实验我们将会分析 exe文件。先来看看要求解答的问题
Q1.恶意代码怎样被初始化调用?
Q2.恶意代码都做了什么?
Q3.恶意代码使用了什么URL?
Q4.恶意代码使用了什么文件名?
首先使用IDA分析
查看imports窗口
看到了可疑函数URLDownloadToFile,WinExec
再通读一下main
调用上图的函数给当前进程创建快照
而后是一个循环结构
里面调用了ProcessFirst
对应地,在循环的下面调用了Process32Next
其组合使用可以用于列举当前进程
如果真是这样的话,我们发现的那些导入函数就没有意义了。
我们回到main开始处
前两条指令将40000h和0x148c进行 或操作,
结果为0x0040148c,将其保存在eax
之后该值赋给ebp+4
打开od,直接跳到40100c
然后下断点,执行过来
接着单步执行到401016
此时ebp值如上所示,我们在堆栈窗口中跟随
ebp+4是0012ff50
可以看到是指向main函数的返回地址
那么我们就清楚了,
这三条指令的作用就是将main函数返回地址覆盖成0040148c,
这样就可以执行0040148c后的指令了
Q1.恶意代码怎样被初始化调用?
A1.通过覆盖main函数的返回地址,初始化调用恶意代码。
回到IDA直接跳到0040148c
如下所示
可以看到是一段孤立的代码,IDA没能将其识别为函数的一部分
option->general显示机器码,方便分析
注意到00401494处存在对抗反汇编的技术
其上一条的指令给eax赋0,使用jz会一直成立。
跳到401496+1,即401497,
也就是5字节jmp指令的第二个字节,这是不正常的
光标定位到00401496,按d键转为数据
定位到00401497,按c键转为代码
正确反汇编后的结果如上
继续分析
在004014b3看到了printf,用于打印上面的字符串,
不过这是永远也不会执行的
因为在其之前,可以看到创建了一个异常处理例程。xor指令会给ecx赋0,而div则会将ecx做除数,从而引发除零异常。此时就会跳到4014c0
而我们看到IDA没有将此处的数据识别为代码,而是将其作为DWORD进行表示。
光标定位到004014c0,按c键转为代码
继续往下分析
004014c0到004014d7用于从链中摘除异常处理例程,
并从栈中删除了记录。
004014d7存在对抗反汇编技术,IDA将其目的地址也标记为红色
光标定位到004014d7,按d键
光标定位到004014d8,按c键转为代码
接着继续分析
这里调用了URLDownloadToFile
其第二个、第三个参数分别为url,文件名
而对应在上图,则是unk_403010,unk_403040
跟入任一个可以看到
这些数据不是以ascii文本显示的
004014eb,004014f8
两处调用sub_401534时
注意到传入的就是unk_403010,unk_403040
所以我们推测,sub_401534是解密函数
跟入该函数
这里一个循环结构,最重要的就是箭头所指的xor语句,
将缓冲区中的每个字符与0ffh异或从而修改他们
知道了解密的原理,我们就可以编写一个脚本帮助我们解密内容了
file->script file,选择该脚本,解密后如下所示
两个字符串分别为http://www.practicalmalwareanalysis.com/tt.html和spoolsrv.exe
Q3.恶意代码使用了什么URL?
A3.恶意代码使用的URL是http://www.practicalmalwareanalysis.com/tt. html。
Q4.恶意代码使用了什么文件名?
A4.恶意代码使用的文件名是spoolsrv.exe。
继续往下分析
00401519处还是同样的处理
正确的反汇编结果如上所示
调用了WinExec,运行的程序是unk_403040,也就是spoolsrv.exe
之后就是调用ExitProcess终止自身。
Q2.恶意代码都做了什么?
A2.恶意代码从一个URL下载文件,并且用WinExec启动它。
配套学习资源
1.《恶意代码分析实战》
恶意代码分析实战——反汇编相关推荐
- 恶意代码分析实战-通过IDA对恶意代码进行静态分析(Lab05-01.dll)
本文章为<恶意代码分析实战>的题目答案解析以及个人的一些理解,将通过一下问题对恶意代码Lab05-01.dll进行分析: D1lMain的地址是什么? 使用Imports窗口并浏览到get ...
- MS08067 第一期 “恶意代码分析”实战班 正式开班~
文章来源|MS08067安全实验室 恶意代码分析实战班 恶意代码分析的分类: 恶意代码分析也可作为单独的安全专业类别来看待,不过总体是偏逆向方向的,希望的受众是逆向相关的就行了,比如以前只会逆向但是不 ...
- 恶意代码分析实战Lab1
第一章静态分析基础技术 恶意代码分析实战 恶意代码样本下载 1.1反病毒引擎扫描 1.2哈希值 1.3查找字符串 1.4加壳与混淆恶意代码 1.5PE文件格式 1.6链接库与函数 1.7静态分析技术实 ...
- 学习笔记-第十四章 恶意代码分析实战
第十四章 恶意代码的网络特征 1.网络应对措施. 网络行为的基本属性包括IP地址,TCP端口,以及流量内容等,网络和安全 设备可以利用它们,来提供网络应对措施.根据IP地址和端口,防火墙和路由器可以限 ...
- 恶意代码分析实战Lab03-01
注:分析恶意代码一定要在安全的环境下,如与主机和外网隔离的虚拟机=>网络适配器选择主机模式或模拟一个与主机和外网隔离的虚拟网络:以及给拍个干净快照: 平台:博客园 恶意代码分析:虚拟网络环境配置 ...
- 学习笔记-第九章 恶意代码分析实战
第九章 OllyDbg 1.加载恶意代码直接加载可执行文件,甚至dll程序.如果恶意代码已经在你的系统上运行,你可以通过附加进程的方式调试它.另外,ollydbg是一个灵活的调试系统,可以使用命令行选 ...
- 恶意代码分析实战 11 恶意代码的网络特征
11.1 Lab14-01 问题 恶意代码使用了哪些网络库?它们的优势是什么? 使用WireShark进行动态分析. 使用另外的机器进行分析对比可知,User-Agent不是硬编码. 请求的URL值得 ...
- 恶意代码分析实战Lab3-2
Lab3-2 使用动态分析基础技术来分析在Lab03-02.dll文件中发现的恶意代码. 目录 Lab3-2 1.你怎样才能让这个恶意代码自行安装? 2.安装之后如何让恶意代码运行起来? 3.怎么可以 ...
- 恶意代码分析实战 9 隐蔽的恶意代码启动
9.1 Lab12-1 分析 查看程序的导入函数. 通过这几个函数,可以推断出是远程线程注入. 使用ProMon检测,并没有看到什么有用的信息. 使用Proexproer检查. 也没有什么有用的信息. ...
- 学习笔记-第十二章 恶意代码分析实战
第12章 隐蔽的恶意代码启动 1.启动器启动器是一种设置自身或其他恶意代码片段以达到即使或将来秘密运行的恶意代码.启动器的目的是安装一些东西,以使恶意行为对用户隐蔽.启动器经常包含它要加载的恶意代码. ...
最新文章
- 【Qt】QtCreator中关于Style Plugin Example没有效果的修改方法
- 【高并发】你敢信??HashMap竟然干掉了CPU!!
- linux 组调度浅析
- C-#数据库方面好书
- mybatis学习7之动态sql
- css 渐变色_如何设置渐变色的单元格值?
- 对某机构为“转移内部矛盾”而嫁祸于我们的事件之真相大起底
- 如何将Rant变成生产力电动工具
- 如何在业务层实现响应缓存
- iPhone 12的4G/5G信号又翻车了:不少用户吐槽无网络服务
- Hibernate学习(二)持久化类,主键生成策略、一级缓存、事务
- 【采访】腾讯社交广告高校算法大赛决赛第一周最大进步队伍——SkullGreymon比赛经验及心得分享
- php 数组导出csv_php导出百万数据到csv
- C++ 名字空间详解
- 自我与人际沟通课程复习
- 使用3CDaemon软件搭建FTP来上传/下载交换机文件文件
- Xp系统优化 预读文件(8)
- Android预览Office文档
- 旋转Kubernetes中的秘密
- 采购者具体负责的问题