20145217《网络对抗》 恶意代码分析

20145217《网络对抗》 免杀原理与实践

知识点学习总结

进行恶意代码分析之前必须具备以下知识:编程、汇编/反汇编、网络基本知识、PE文件结构以及一些常用行为分析软件。

一、在一个已经感染了恶意代码的机器上如何找到病毒文件?

  • 找到恶意代码才能对其分析,找到恶意代码文件就是就是分析的第一步,一般来讲,恶意代码运行必然会创建一个进程,而这个进程就是我们找到他的突破口,一个打开的进程,可以通过任务管理器、Process Explorer等来找到其映像文件的地址,这样就能找到恶意代码文件了

  • 但是,现在的恶意代码可能其自身的进程隐藏,一般来讲,隐藏进程的方式就是“脱链”,在PEB中有三条链表,其中一条链表的指向进程,该链表的每一个元素代表着每一个进程,如果想对某进程隐藏,那么进行“脱链”即可。

二、如何通过静态基础分析获取一些相关信息?

  • 首先,我们用PEID查看一些基本信息,用PE explorer等软件查看导入表,一个程序想对你的电脑进行某些操作,那么它必然会调用系统API,而导入表可以告诉我们这个程序调用了哪些API,我们凭借这些导入函数,可以大致猜测一下这个程序作了什么。

  • 可以对我们提供有效信息的不是只有导入表,查看字符串也经常会有一些意外收获,这个时候我们可以使用微软提供的控制台工具Strings查看程序的字符串信息,通过查看字符串,可以获取很多提示。

三、如何确定恶意代码究竟干了些什么?

  • 这个时候那就需要用到动态基础分析了,别犹豫,上虚拟机,跑起来看看吧,跑之前我们先要打开一些行为监控软件,常用的是微软提供的Process Monitor、Process Explorer等这些软件可以监控到注册表、文件、进程、模块、网络、用户等等等等信息。还可以使用systracer拍摄快照并对比。

  • 很多后门和木马程序还会采用反弹式连接的方式链接到别的主机,这是可以采用nestat、wireshark等抓包工具进行抓包,确定其网络行为,发现攻击的主机,后期杀毒再做针对处理。

实验过程概述

一、virscan扫描结果分析

  • 编译器:visual C++5.0

  • 两大主要行为:网络行为和注册表行为,反弹连接一个IP并修改注册列表。

886760-20170328192526873-2118411090.jpg

二、peid扫描结果分析

  • 结果显然是没有加壳。在这里我们又见到了编译器信息。pied能够显示反汇编代码以及一些地址信息,不过最重要的作用还是查壳脱壳,对文件信息的分析不如接下来的两款PE软件好用。

886760-20170328193327967-456903860.jpg

三、Dependency Walker扫描结果分析

  • 这个软件把程序的dll层级调用列出来了,他调用了什么dll,那些dll又调用了哪些文件。

886760-20170328195443592-1825582850.jpg

  • 通过分析可以得到该程序对注册列表有改动的动作。

886760-20170328195757014-1698063547.jpg

四、PE explorer扫描结果分析

  • 文件头信息:可以看到文件编译时间,连接器等信息。

886760-20170328200138576-777380899.jpg

  • 表信息:这里主要查看第二个导入表,即调用了什么dll。

886760-20170328200558670-597980160.jpg

  • 分节信息:缺点是显示以ascll码表示,看不出所以然来。

886760-20170328200733108-527535627.jpg

五、systracer分析恶意代码回连前后情况

  • 运行程序:多了cad5217.exe这样一个进程。

886760-20170329201526873-583955261.jpg

  • 载入的dll文件:cad5217调用了大量dll文件,很多在之前的引入表中也能看到。

886760-20170329201951811-61265691.jpg

  • 开放端口:可以看到cad5217程序通过tcp连接一个192.168.150.132的443端口。

886760-20170329202151811-1014126913.jpg

六、wireshark分析恶意代码回连前后情况

  • 我们知道443端口是https服务端口,通常采用ssl/tls安全通信协议。这里的大量ssl包和tcp包数据部分都是乱码,是经过加密处理的。

886760-20170329202435639-1077289771.jpg

七、TCPview分析恶意代码回连前后情况

  • 易看出在回连后出现cad5217这个进程,PID为3617,并且具有网络行为是连接另一台主机的https端口。

886760-20170329205507826-293794512.jpg

  • TCPview不仅可以查看还可以结束这个进程,还可以告诉你这个程序在你的机器上那个位置,为清除提供方便。

886760-20170329205730373-892535994.jpg

  • 结束进程后,linux这边显示程序die了。

886760-20170329205738717-195181409.jpg

八、Process monitor查看恶意代码回连前后情况

  • 可以看到回连后程序信息,成功运行、日期时间

886760-20170330153907586-422995350.jpg

  • 可以看到父进程PID,查了一下是windows资源管理器

886760-20170330153912180-1148495445.jpg

886760-20170330153916430-800551094.jpg

九、Process Explorer查看恶意代码回连前后情况

  • 可以看到回连后程序信息

886760-20170329210034217-1772194664.jpg

  • Process Explorer更像一个详细版的任务管理器,把进程的各种信息都直观地展示出来。双击后可以查看各种属性。
  • 具有网络连接行为:

886760-20170329210244983-1292329013.jpg

  • 改程序跟ntdll.dll直接相关。ntdll.dll描述了windows本地NTAPI的接口。是重要的Windows NT内核级文件。

886760-20170329210256811-220933746.jpg

十、netstat查看恶意代码回连前后情况

  • 可以看到正在联网到192.168.150.132:443,连接时建立的。这个小程序并不是太好用,虽然可以通过建立新任务的方式让它在后台不停地进行记录,但并不详细,当有其他程序时显然用其他程序更好。

886760-20170329215710029-2426127.jpg

  • 还遇到权限不够的问题

886760-20170329222656811-1159531971.jpg

  • 权限解决:勾选以最高权限运行。

886760-20170330114415733-2045259550.jpg

  • 效果图

886760-20170330114545045-1836839577.jpg

十一、sysmon查看恶意代码回连前后情况

  • 安装失败了
    886760-20170329222743326-413026648.jpg

886760-20170329222836358-906554330.jpg

转载于:https://www.cnblogs.com/jokebright/p/6642187.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HALCON示例程序measure_screw.hdev螺纹尺寸测量

HALCON示例程序measure_screw.hdev螺纹尺寸测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () read_image (Image, ‘screw_thread’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window…

边工作边刷题:70天一遍leetcode: day 97-2

Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法。这题简单在只需要count过去300秒的,增加难度可以count过去秒,分钟,小时。 2个时间点都有可能更新超时的统计&#xff…

cvRemap 对图像进行普通几何变换

cvRemap 对图像进行普通几何变换 函数 cvRemap 利用下面指定的矩阵变换输入图像:   dst(x,y)<-src(mapx(x,y),mapy(x,y))   与其它几何变换类似&#xff0c;可以使用一些插值方法&#xff08;由用户指定&#xff0c;同cvResize&#xff09;来计算非整数坐标的像素值 vo…

disconf(二):服务端使用总结

1、服务端原理客户端启动&#xff0c;把配置文件&#xff0c;配置项存到仓库&#xff0c;等到服务端启动&#xff0c;从服务端拉取数据&#xff1b;服务端更新&#xff0c;则通过zk通知客户端&#xff0c;客户端知道更新后&#xff0c;会从服务端拉取最新的配置文件&#xff0c…

B2C和B2B之间有多大差距

从产品应用的角度&#xff0c;我们团队经历了企图将B2C系统套用到B2B业务流程上的阶段&#xff0c;对于自营业务这还勉强可以实施&#xff0c;但对于外部用户的实施难度就太大了&#xff0c;用户体验也不好。这个过程中&#xff0c;我只关注了技术范畴的迭代速度、而忽略了用户…

h.264 视频解码的一点小经验(ffmpeg)

最近做视频文件264解码&#xff0c;由于对这个领域不是很熟悉&#xff0c;感觉困难重重。不过经过不懈的努力&#xff0c;已经取得一些进展&#xff0c;心里感觉特别庆幸。 刚开始做这个的时候&#xff0c;由于不熟悉&#xff0c;就在网上搜寻资料&#xff0c;网络上的资料虽然…

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_window (‘off’) read_image (Image, ‘plastic_mesh/plastic_mesh_01’) dev_close_window () get_image_size (Image, Width…

配置云服务器 FTP 服务

自己配置的环境: OS: 阿里云 CentOS 6.5 >>Begin: 1. 登录到阿里云服务器(如何登录阿里云服务器), 在root权限下, 通过如下命令安装 vsftp [rootVM_250_202_tlinux ~]# yum install vsftpd 2. 在启动vsftpd服务之前&#xff0c;需要登录云服务器修改配置文件&#xff0c;…

【跃迁之路】【428天】程序员高效学习方法论探索系列(实验阶段185-2018.04.09)...

(跃迁之路)专栏 实验说明 从2017.10.6起&#xff0c;开启这个系列&#xff0c;目标只有一个&#xff1a;探索新的学习方法&#xff0c;实现跃迁式成长实验期2年&#xff08;2017.10.06 - 2019.10.06&#xff09;我将以自己为实验对象。我将开源我的学习方法&#xff0c;方法不断…

opencv中的一些陷阱 坑死我了~~~~(_)~~~~

1.这几天被opencv给坑的够惨&#xff0c;好好的程序&#xff0c;先是因为imread&#xff08;&#xff09;不能读文件&#xff0c;整了很久没整出来&#xff0c;然后改了下path路径&#xff0c;没想到后面彻底奔溃了&#xff0c;&#xff0c;&#xff0c;&#xff0c;前后大概2天…

一篇需要膜拜的文篇--Javascript异步编程模型进化(转)

要我能用得这么熟&#xff0c; 那前端出师了哈。 http://foio.github.io/javascript-asyn-pattern/ 改天一个一个亲测一下。 Javascript语言是单线程的&#xff0c;没有复杂的同步互斥&#xff1b;但是&#xff0c;这并没有限制它的使用范围&#xff1b;相反&#xff0c;借助于…

很强大的FFMPEG API Documentation

http://wiki.aasimon.org/doku.php?idffmpeg:ffmpeg 点击打开链接

HALCON示例程序obj_diff.hdev算子obj_diff 的使用

HALCON示例程序obj_diff.hdev算子obj_diff 的使用 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 read_image (Image, ‘particle’)二值化 threshold (Image, Region, 57, 255)分割连通域 connection (Region, ConnectedRegions) dev_close_window () get…

JS函数方法Call Apply Bind运用

JS 函数非继承的call和apply方法 同&#xff1a;call & apply 主要是用于扩展this指向&#xff0c;降低this作用域与函数之间的耦合度&#xff1b; 区别&#xff1a;传参差异 function.call(this/object,params1,params2,...) 第一个参数为作用域指向参数&#xff0c;后边参…

IplImage, CvMat, Mat 的关系和相互转换 再次理解 /(ㄒoㄒ)/~~

opencv中常见的与图像操作有关的数据容器有Mat&#xff0c;cvMat和IplImage&#xff0c;这三种类型都可以代表和显示图像&#xff0c;但是&#xff0c;Mat类型侧重于计算&#xff0c;数学性较高&#xff0c;openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“…

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。

HALCON示例程序optical_flow.hdev如何使用optical_flow_mg计算图像序列中的光流以及如何分割光流。 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () read_image (Image1, ‘xing/xing000’) dev_open_window_fit_ima…

数字信号处理原理

关于傅里叶变换的解释&#xff0c;在下面的链接&#xff1a;http://blog.jobbole.com/70549/ 。讲的挺详细的&#xff1a; 注意点&#xff1a; 1、信号处理基于这么一个概念&#xff0c;待处理的信号&#xff08;&#xff1f;&#xff09;都可以分解为正弦波&#xff0c;不同…

webpack的一些常用配置 (转)

webpack 的配置文件就是 Node 的一个模块&#xff0c;它导出的将是一个对象 module.exports {entry: ./entry,output: {path: path.resolve(__dirname, dist),filename: bundle.js} }如果直接使用 webpack 来执行编译&#xff0c;webpack 默认读取的是当前目录下的 webpack.co…

CvMat,Mat和IplImage之间的转化和拷贝

1、CvMat之间的复制 //注意&#xff1a;深拷贝 - 单独分配空间&#xff0c;两者相互独立 CvMat* a; CvMat* b cvCloneMat(a); //copy a to b 2、Mat之间的复制 //注意&#xff1a;浅拷贝 - 不复制数据只创建矩阵头&#xff0c;数据共享&#xff08;更改a,b,c的任意一…

HALCON示例程序particle.hdev测量小圆部分

HALCON示例程序particle.hdev测量小圆部分 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_off () dev_close_window () dev_open_window (0, 0, 512, 512, ‘black’, WindowID) set_display_font (WindowID, 14, ‘mono’, ‘true’, ‘false’…