20145211黄志远 《网络对抗技术》 恶意代码分析
20145211黄志远 《网络对抗技术》 恶意代码分析
实验原理
恶意代码
- 恶意代码(Unwanted Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。
- 特征:
- 恶意的目的
- 本身是计算机程序
- 通过执行发生作用
- 有些恶作剧程序或者游戏程序不能看作是恶意代码。对滤过性病毒的特征进行讨论的文献很多,尽管它们数量很多,但是机理比较近似,在防病毒程序的防护范围之内,更值得注意的是非滤过性病毒。
恶意代码分析
- 静态分析:在恶意代码没有运行的情况下对其进行分析
- 动态分析:通过恶意代码运行后,对电脑注册表等信息的改变进行分析,确定其行为,对其进行定性分析。
基础问题回答
- 总结一下监控一个系统通常需要监控什么、用什么来监控。
- 通常对一个系统的注册表,开放端口,进程运行状况,开启的服务等
- 通常使用一些软件来读取系统的注册表等。
- 如果在工作中怀疑一台主机上有恶意代码,请设计下你准备如何找到对应进程、恶意代码相关文件。
- 首先断网,以防止恶意软件造成进一步的伤害。接着并对计算机的注册表,进程,端口,服务等内容进行检测,并观察后台运行的进程有没有比较奇怪的。
- 然后开启一迈克咖啡波全盘扫描,我相信收钱的软件。
实验总结与体会
恶意代码的分析有很多方法,也有很多与之匹配的软件,有些软件还是相当好用的,不过有一些则是一个难度的提升,需要对系统知识具有充分的掌握,并在实践中摸索出更多方法
- 做这些分析实验,需要耐得住寂寞,有一些细节一不注意,就可导致最后功亏一篑,举个例子,我在新建监视任务时,没有勾选最高权限,导致我的cmd窗口每次都会跳出决绝访问,其实,我知道是权限不够的原因,但是我以为是要在访问控制组里添加everyone,但发现已经添加了,后来又重加了几个dog,才发现没看到下面的选项,真的是雪崩。。
- 最后,这些恶意代码分析实验都是为了以后能更好的看管自己的电脑,我现在是在虚拟机里运行的,因为注册表少,方便,还有就是我的c盘没有几个g了;不过,以后还是得在本机上运行,这样才能学以致用。不然就只在云端起舞,而不在地面步行了。
实践过程记录
通过VirScan网站的行为分析来分析恶意代码:
准备工作:随便抓取了一个wueryiyi.exe,这个网站还是相当全面的,它主要是基于特征库的检查匹配。
-
检测一波
- 点击“文件行为分析”,可以详细地察看是否有敏感行为,可以发现该文件会有网络连接的行为,自行删除注册表键值的行为
PE explorer
准备工作:将wueryiyi.exe拖拽到PE explorer的窗口,先查看一波基本信息;
- 可以看见kali在2009年的时候就有了该后门程序的生成
- 打开引入表查看一些具体信息,主要是函数的依赖
- Windows中有3个非常重要的底层DLL:Kernel32.dll、User32.dll、GDI32.dll。其中Kernel32.dll顾名思义就是内核相关的功能,主要包含用于管理内存、进程和线程的函数;这个后门程序要调用内核,显然不是什么好东西。
WSOCK32.dll
和WS2_32.dll
,是用来创建套接字的dll库,这显然是是想反弹端口连接啊!- ADVAPI32.dll库是用来给应用程序记录注册表的操控和日志的,憋说话,恶意代码,鉴定完毕。
PEiD查壳通常情况下,只有那些为了保护自身软件版权的,才会加壳防止被反编译,一般小程序是不会加壳的,没有必要。
居然什么都没找到,以为没有加壳,具体查看一下编译器
- UPX啊,行了,压缩壳的。
Dependency Walker
- 进击的巨人,他和PE explorer有许多相似之处,都是用来分析函数依赖的,不过各有千秋
- 惊人的发现,他可以对注册表进行肆意的删改,简直了。
恶意代码动态分析
SysTracer
- 使用上次免杀实验里,用c写的shellcode,在回连成功的情况下进行监听。
-
首先在开启后门之前,使用SysTracer进行一次快照,方便之后对比
- 接着在回连成功之后进行第二次快照;
- 然后在kali攻击机中分别对靶机进行截图和获取shell,并分别进行快照
- 将四次快照对比。
- 将回连成功后的快照与之前的快照比对,可以发现注册表有了变化,新添加了一个表项,而且新添了一个开放端口80,用来回连的
-
截屏之后发生的变化,注册表进一步发生了变化,且新增了一个key;还删除了自己的两个记录
- 获取shell之后,又新添了4个开放端口;而且在cmd中添加了自己的权限,在windows下新建了自己的文件夹
wireshake
- 对回连过程进行抓包,设置过滤条件ip.addr==192.168.207.133
- watch看到靶机与攻击机建立的三次握手连接,还有大量的TCP连接数据包
- 对sreenshot和shell过程进行抓包,不过对抓到的具体包并不是很了解
-
安装并使用Sysmon
-
右键管理员cmd,轻车熟路,之前,经常在Windows命令行下编译运行c代码,不过得用管理员权限。
- 配置一下文件,我觉得就用老师那个配置文件挺好的啊,版本号都给对了
- 查看一下事件数,简直爆炸
- 那就过滤一下
- 一开始还以为是啥奥迪……
- 被他发现是虚拟机里的win10了
-
设置任务计划
- 写一个watchdog脚本,每天看一波门
- 这里有一点需要注意的是,一定要勾选最高权限,我一开始任务运行的时候,总是因为cmd不是以管理员身份运行的导致拒绝访问,我知道是权限的原因,找了半天,发现这下面还有一个最高权限运行,真的是……
- 最后查看一任务
-
检查一下log
- 因为是虚拟机,主要就是浏览器一类的软件了,当然还有和本机的连接,127.0.0.1
- 不太懂81.161.59.90是什么ip,查了一下,罗马尼亚……