Rada分析实践

一、实验选题背景:

北京大学网络攻防技术与实践课程——Rada分析(北京大学计算机研究所信安中心)

二、实验操作

0X01 确认文件完整性

或是在linux 下使用md5sum工具进行计算哈希值。

确认文件格式

使用命令:strings RaDa.exe | less 查看程序可以打印的字符串

发现呈现乱码,推测程序加壳。

0X02 目标运行测试

注意:目标程序运行测试请勿在工作环境下进行

运行filemon、wireshark、regmon监控工具,然后再执行样本rada.exe,使用上述三个监控工具记录日志并保存。

注册表行为:

以下按照行为顺序叙述目标行为:

创建键值:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

设置键值:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\RaDa 添加路径:C:\RaDa\bin\RaDa\RaDa.exe(此意为将路径C:\RaDa\bin\RaDa\RaDa.exe的RaDa.exe文件添加到系统自启动中)

关闭键值:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

文件系统行为:

以下按照执行目标行为过程顺序叙述监测行为:

首先查看路径C:\下是否存在文件夹RaDa\tmp。(结果是不存在)

在C盘创建文件夹RaDa。

在RaDa文件夹中创建子文件夹tmp。

打开路径C:\RaDa\tmp。(测试子文件夹tmp创建是否成功)

查看路径C:\RaDa下是否存在文件夹bin。(结果是不存在)

创建路径C:\RaDa\tmp。(结果是名称冲突,创建失败。原因是上面的操作已经创建了该路径)

创建路径C:\RaDa。(结果是名称冲突,创建失败。原因是上面的操作已经创建了该路径)

创建路径C:\RaDa\bin。(创建成功)

查询路径:C:\RaDa\bin\RaDa.exe (结果是不存在)

在上条的路径下创建该文件,查询属性、文件大小,写入文件。

网络行为:

让我分析网络行为?怎么分析?目标程序运行出错,开始我以为是采用的目标程序有问题,我从其它渠道获取目标程序后仍然出错。这作业没法做了。

使用查壳工具Exeinfo PE对文件进行扫描,发现该程序使用了upx加壳软件加壳

下面进行upx的脱壳

首先在upx官网上下载upx脱壳软件,配置环境变量。

配置成功:

首先测试下目标文件:

尝试使用upx对程序进行自动脱壳,发现脱壳失败:

采用超级巡警脱壳机进行脱壳,发现脱壳失败,奇了怪了,在超级巡警V1.3中可以脱壳成功,到了V1.5版本中就脱壳失败???什么破玩意:

在实验的最初我使用的是V1.5版本的脱壳机,发现失败后转而尝试手动脱壳:

使用OD载入RaDa.exe,发现:

选中“是”,继续调试

F7继续调试,寻找EP并设置断点:

F7进入函数体内部:

使用OD插件OllyDump——>脱壳在当前调试的进程:

选择“脱壳”,根据提示另存数据。

接下来打开Import REC,附加进程选择被调试的进程,然后填入修正后的OEP,然后点击“AutoSearch”,接下来“Get Imports”,然后会找到一些函数,然后Fix Dump,目标程序为OD脱壳后的程序,保存就OK了,修正的文件为脱壳后的文件后面加一个下划线。

程序载入Stud_PE,尝试将刚保存的文件使用stud_PE进行EP修复:

使用两个版本的脱壳机测试手工脱壳成果,应该是成功了,下面使用strings工具提取可打印字符来验证下:

测试使用超级巡警V1.3脱壳后的程序:

测试手动脱壳的程序:

证明手动脱壳成功。

后续壳的进一步分析,由于对于IDA知之甚少,就不做进一步分析了。

原文地址:https://www.cnblogs.com/ghost00011011/p/8996610.html

时间: 2024-11-05 11:45:19

Rada分析实践的相关文章

OSSIM平台安全事件关联分析实践

OSSIM平台安全事件关联分析实践 在<开源安全运维平台OSSIM最佳实践>一书中叙述到,事件关联是整个OSSIM关联分析的核心,对于OSSIM的事件关联需要海量处理能力,主要便于现在需要及时存储从设备采集到的日志,并能关联匹配和输出,进而通过Web UI展示.从实时性上看,关联分析的整个处理过程不能间断,这对系统的实时性要求较高,另外Ossim系统是基于规则的,Ossim内部具有多套高速规则分析引擎,以实现模式匹配和对关联分析结果调用.所以系统的关联引擎是一个典型数据处理系统,必须依靠强大的

日志分析实践与应用

日志分析实践与应用 这个场景是,日志系统平时为了系统处理能力,我们使用INFO级别或ERROR级别,当发现问题时,我们需要不停服务的动态的将日志级别变更为DEBUG以便在执行细节发现问题,下面列举了动态变更的操作,需要借助代码.定时和配置中心服务. 在微服务的场景,日志是散落在各个服务集群节点中,不方便查看,所以我们需要通过集中收集到一处保存.查看和分析. 应用程序中日志的配置 logback.xml 1.在configuration中配置include,引用defaults.xml.conso

ELF分析 实践

分析ELF文件: 首先编写一个.c文件,并使用gcc -c xx.c -o xx.o 对其进行编译. 我在这个实践中是ELF_1.o文件. 接下来输入ls -l ELF_1.o 查看重定位文件的信息. 接下来以十六进制来查看该文件信息.输入:hexdump -x ELF_1.o 显示信息的最左一列表示的是偏移地址的16进制表示. 查看ELF文件头定义的规范.打开elf.h查看各部分内容的定义. 我们可以看出,32位的系统与64位的系统的ELF头部分结构大致相同.只是个别字段所占用的字节个数有不同

使用GoAccess分析Nginx日志以及sed/awk手动分析实践

前言 使用Nginx的网站可能会遇到访问流量异常.被友情检测.程序出现Bug等各种突然情况,这时大家的反应想必都是第一时间分析日志,然后发现日志有几十GB之多,又需要按照时间.错误类型或者关键字段检索信息时会不会有种醍醐灌顶.菊花一紧的错觉.文中介绍的方法不管是GoAccess还是sed/awk虽然可以解决一时的问题但未必能够治本,也许ELK(Logstash+ElasticSearch+Kibana)对我们大多数人来说是更合理的集中化日志管理解决方案. 日志固然重要,但努力建设适合业务发展的集

loadrunner提高篇-结果分析实践

分析图合并 一.分析图合并原理 选择view->merge graphs,弹出如图1所示对话框 图1(设置合并图) 1.选择要合并的图.选择一个要与当前活动图合并的图,注意这里只能选择X轴度量单位相同的图. 2.选择合并类型. 1)叠加:查看共用同一X轴的两个图的内容.合并图左侧的Y轴显示当前图的Y轴值,右边的Y轴显示合并进来的图的Y轴值,如图2所示 图2(叠加合并分析图) 2)平铺:在平铺布局查看,共用同一个X轴,合并进来的图显示在当前图的上方,如图3所示 图3(平铺合并分析图) 3)关联:合

SAS-&gt;关联分析实践

SAS系统被誉为国际上的标准软件系统,本文将详细介绍如何在SAS/EM模块中进行关联规则数据挖掘,使用的软件版本是SAS 9.1.3下的Enterprise Miner 4.3: 从SAS顶端的[解决方案(S)]菜单下调出企业数据挖掘(也可以通过在命令行输入miner): SAS/EM的初始界面如下: 接下来,将数据挖掘外接程序示例数据集中的Associate表导入SAS逻辑库.先将xlsx文件另存为xls文件,再双击SAS资源管理器中的逻辑库,从[文件(F)]菜单下调出[导入数据]对话框: 点

转://Oracle数据库补丁分析实践

小弟我最近做了几次补丁分析,最开始分析补丁,感觉挺痛苦的,因为补丁数量多,且涉及的知识点非常非常的广,客户的要求又非常高.挺伤不起的.不过随着分析的深入,我慢慢的掌握了一些小方法.也在support网站上找到了一些相关性的文章.现在进步了很多.所以想写篇文章,帮助那些受此困扰的兄弟们. 早在几年前,我的一个客户朋友告诉我一件事情,他们升级数据库到最新版本,结果上线后发现一条SQL运行错误,返回的结果集和以前版本返回的结果集不一致,他们紧急开了SR,申请了新补丁开发,可是这个过程需要一定的时间.最

20199325 2019-2020-2 实践三网络嗅探与协议分析实践

目录 实验三: 任务一:根据教材参考代码,编写有个简单网络抓包工具,要求核心代码和运行结果截图1-2张.代码push到码云 任务二找一个网站或者搭建一个本地网站,登录网站,并嗅探,分析出账号和密码,结果截图1-2张.(3分) 任务三: 抓取手机App的登录过程数据包,分析账号和密码.可以用邮箱.各类博客.云班课. 实验三: 任务一:根据教材参考代码,编写有个简单网络抓包工具,要求核心代码和运行结果截图1-2张.代码push到码云 #coding:UTF-8 from scapy.all impo

20135327--linux内核分析 实践二

内核模块编译 1.实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷. Linux模块可以通过静态或动态的方法加载到内核空间,静态加载是指在内核启动过程中加载:动态加载是指在内核运行的过程中随时加载. 一个模块被加载到内核中时,就成为内核代码的一部分.模块加载入系统时,系统修改内核中的符号表,将新加载的模块提供的资源和符号添