一、实验选题背景:
北京大学网络攻防技术与实践课程——Rada分析(北京大学计算机研究所信安中心)
二、实验操作
0X01 确认文件完整性
或是在linux 下使用md5sum工具进行计算哈希值。
确认文件格式
使用命令:strings RaDa.exe | less 查看程序可以打印的字符串
发现呈现乱码,推测程序加壳。
0X02 目标运行测试
注意:目标程序运行测试请勿在工作环境下进行
运行filemon、wireshark、regmon监控工具,然后再执行样本rada.exe,使用上述三个监控工具记录日志并保存。
注册表行为:
以下按照行为顺序叙述目标行为:
创建键值:HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun
设置键值:HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunRaDa 添加路径:C:RaDainRaDaRaDa.exe(此意为将路径C:RaDainRaDaRaDa.exe的RaDa.exe文件添加到系统自启动中)
关闭键值:HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun
文件系统行为:
以下按照执行目标行为过程顺序叙述监测行为:
首先查看路径C:下是否存在文件夹RaDa mp。(结果是不存在)
在C盘创建文件夹RaDa。
在RaDa文件夹中创建子文件夹tmp。
打开路径C:RaDa mp。(测试子文件夹tmp创建是否成功)
查看路径C:RaDa下是否存在文件夹bin。(结果是不存在)
创建路径C:RaDa mp。(结果是名称冲突,创建失败。原因是上面的操作已经创建了该路径)
创建路径C:RaDa。(结果是名称冲突,创建失败。原因是上面的操作已经创建了该路径)
创建路径C:RaDain。(创建成功)
查询路径:C:RaDainRaDa.exe (结果是不存在)
在上条的路径下创建该文件,查询属性、文件大小,写入文件。
网络行为:
让我分析网络行为?怎么分析?目标程序运行出错,开始我以为是采用的目标程序有问题,我从其它渠道获取目标程序后仍然出错。这作业没法做了。
使用查壳工具Exeinfo PE对文件进行扫描,发现该程序使用了upx加壳软件加壳
下面进行upx的脱壳
首先在upx官网上下载upx脱壳软件,配置环境变量。
配置成功:
首先测试下目标文件:
尝试使用upx对程序进行自动脱壳,发现脱壳失败:
采用超级巡警脱壳机进行脱壳,发现脱壳失败,奇了怪了,在超级巡警V1.3中可以脱壳成功,到了V1.5版本中就脱壳失败???什么破玩意:
在实验的最初我使用的是V1.5版本的脱壳机,发现失败后转而尝试手动脱壳:
使用OD载入RaDa.exe,发现:
选中“是”,继续调试
F7继续调试,寻找EP,设置断点:
F7进入函数体内部:
使用OD插件OllyDump——>脱壳在当前调试的进程:
记下修正值,选择“脱壳”,根据提示另存数据。
OD不要关闭,接下来打开Import REC,附加进程选择被调试的进程,然后填入修正后的EP,然后点击“AutoSearch”,接下来“Get Imports”,然后会找到一些函数,然后Fix Dump,目标程序为OD脱壳后的程序,保存就OK了,修正的文件为脱壳后的文件后面加一个下划线。
程序载入Stud_PE,尝试将刚保存的文件使用stud_PE进行EP修复:
使用两个版本的脱壳机测试手工脱壳成果,应该是成功了,下面使用strings工具提取可打印字符来验证下:
测试使用超级巡警V1.3脱壳后的程序:
测试手动脱壳的程序:
证明手动脱壳成功。
后续壳的进一步分析,由于对于IDA知之甚少,就不做进一步分析了。