20212811 2021-2022-2 《网络攻防实践》第八次作业

1.实践内容

(一)基础知识

恶意代码:

恶意代码的行为表现各异,破坏程度千差万别,但基本作用机制大体相同,其整个作用过程分为6个部分。
(1)侵入系统。侵入系统是恶意代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,如:从互联网下载的程序本身就可能含有恶意代码;接收已经感染恶意代码的电子邮件:从光盘或U盘往系统上安装软件:黑客或者攻击者故意将恶意代码植入系统等。
(2)维持或提升现有特权。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。
(3)隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或者修改系统的安全策略来隐藏自己。
(4)潜伏。恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动
(5)破坏,恶意代码的本质具有破坏性,其目的是造成信息丢失,泄密,破坏系统完整性等。
(6)重复(1)至(5)对新的目标实施攻击过程。恶意代码的攻击模型如图所示。

僵尸网络:

Botnet构成了一个攻击平台,利用这个平台可以有效地发起各种各样的攻击行为,可以导致整个基础信息网络或者重要应用系统瘫痪,也可以导致大量机密或个人隐私泄漏,还可以从事网络欺诈等其他违法犯能活动。下面是已经发现的利里Botnet发动的攻击行为。Botnet还可能被用来发起新的未知攻击。
(1)拒绝服务攻击。使用Bother发动DDos攻击是当前最主要的威胁之一,攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连绩访问特定的网络目标,从而达到DDos的目的,由于Botnet可以形成庞大规模,而目利田其进行DDos攻击可以做到更好地同步,所以在发布控制指令时,能够使得DDos的危害更大,防范更难。
(2)发送垃圾邮件。一些bots会设立sockv4/v5代理,这样就可以利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息。
(3)窃取秘密。Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。同时bot程序能够使用sniffer观测感兴趣的网络数据,从而获得网络流量中的秘密
(4)滥用资源。攻击者利用Bother从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失。例如:种植广告软件。点击指定的网站:利用僵尸主机的资源存储大型数据和违法数据等。利用僵尸主机搭建假冒的银行网站从事网络钓鱼的非法活动。
可以看出,Botnet无论是对整个网络还是对用户自身,都造成了比较严重的危害。

(二)恶意代码的防范

为了确保系统的安全与畅通,已有多种恶意代码的防范技术,如恶意代码分析技术、误用检测技术、权限控制技术和完整性技术等。

恶意代码分析技术:

恶意代码分析是一个多步过程,他深入研究恶意软件结构和功能,有利干对抗措施的发展。按照分析过程中恶意代码的执行状态可以把恶意代码分析技术分成静态分析技术和动态分析技术两大类。
1.静态分析技术
静态分析技术就是在不执行二进制程序的条件下,利用分析工具对恶意代码的静态特征和功能模块进行分析的技术。该技术不仅可以找到恶意代码的特征字符串、特征代码段等,而且可以得到恶意代码的功能模块和各个功能模块的流程图。由于恶意代码从本质上是由计算机指令构成的,因此根据分析过程是否考虑构成恶意代码的计算机指令的语义,可以把静态分析技术分成以下两种:
(1)基于代码特征的分析技术。在基于代码特征的分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。比如在某个特定的恶意代码中,这些静态数据会在程序的特定位置出现,并且不会随着程序拷贝副本而变化,所以,完全可以使用这些静态数据和其出现的位置作为描述恶意代码的特征,当然有些恶意代码在设计过程中,考虑到信息暴露的问题而将静态数据进行拆分,其至不使田静态数据,这种情况就只能通过语义分析或者动态跟踪分析得到具体信息了。
(2)基于代码语义的分析技术。基于代码语义的分析技术要求考虑构成恶意代码的指令的含义,通过理解指令语义建立恶意代码的流程图和功能框图进一步分析恶意代码的功能结构。因此,在该技术的分析过程中首先使用反汇编工具对恶意代码执行体进行反汇编,然后通过理解恶意代码的反汇编程序了解恶意代码的功能。从理论上讲,通过这种技术可以得到恶意代码的所有功能特征。但是,目前基于语义的恶意代码分析技术主要还是依靠人工来完成,人工分析的过程需要花费分析人员的大量时间,对分析人员本身的墓求也很高。
采用静态分析技术来分析恶意代码最大的优势就是可以避免恶意代码执行过程对分析系统的破坏。但是他本身存在以下两个缺陷:①由于静态分析本身的局限性,导致出现问题的不可判定;②绝大多数静态分析技术只能识别出已知的病毒或恶意代码,对多态变种和加壳病毒则无能为力。无法检测未知的恶意代码是静态分析技术的一大缺陷。
2.动态分析技术
动态分析技术是指恶意代码执行的情况下,利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,对静态分析结果进行验证。根据分析过程中是否需要考虑恶意代码的语义特征,将动态分析技术分为以下两种:
(1)外部观察技术。外部观察技术是利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码功能的一种分析技术。通过观察恶意代码运行过程中系统文件,系统配置和系统注册表的变化就可以分析恶意代码的自启动实现方法和进程隐藏方法:由于恶意代码作为一段程序在运行过程中通常会对系统造成一定的影响,有些恶意代码为了保证自己的自启动功能和进程隐藏的功能,通常会修改系统注册表和系统文件,或者会修改系统配置。
通过观察恶意代码运行过程中的网络活动情况可以了解恶意代码的网络功能。恶意代码通常会有一些比较特别的网络行为,比如通过网络进行传播、繁殖和拒绝服务攻击等破坏活动,或者通过网络进行诈骗等犯罪活动,或者通过网络将搜集到的机密信息传递给恶意代码的控制者,或者在本地开启一些端口、服务等后门等待恶意代码控制者对受害主机的控制访问。
虽然通过观测恶意代码执行过程对系统的影响可以得到的信息有限,但是这种分析方法相对简单,效果明显,已经成为分析恶意代码的常用手段之一。
(2)跟踪调试技术。跟踪调试技术是通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能的技术。在实际分析过程中,跟踪调试可以有两种方法:
①单步跟踪恶意代码执行过程,即监视恶意代码的每一个执行步骤,在分析过程中也可以在适当的时候执行恶意代码的一个片段,这种分析方法可以全面监视恶意代码的执行过程,但是分析过程相当耗时。
②利用系统hook技术监视恶意代码执行过程中的系统调用和API使用状态来分析恶意代码的功能,这种方法经常用于恶意代码检测。

误用检测技术:

误用检测也被称为基于特征字的检测。他是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。其检测过程中根据恶意代码的执行状态又分为静态检测和动态检测:静态检测是指脱机对计算机上存储的所有代码进行扫描;动态检测则是指实时对到达计算机的所有数据进行检查扫描,并在程序运行过程中对内存中的代码进行扫描检测。误用检测的实现流程如图所示。

权限控制技术:

恶意代码要实现入侵、传播和破坏等必须具备足够权限。首先,恶意代码只有被运行才能实现其恶意目的,所以恶意代码进入系统后必须具有运行权限。其次,被运行的恶意代码如果要修改、破坏其他文件,则他必须具有对该文件的写权限,否则会被系统禁止。另外,如果恶意代码要窃取其他文件信息,他也必须具有对该文件的读权限。
权限控制技术通过适当的控制计算机系统中程序的权限,使其仅仅具有完成正常任务的最小权限即使该程序中包含恶意代码,该恶意代码也不能或者不能完全实现其恶意目的。

完整性技术:

恶意代码感染、破坏其他目标系统的过程,也是破坏这些目标完整性的过程。完整性技术就是通过保证系统资源,特别是系统中重要资源的完整性不受破坏,来阻止恶意代码对系统资源的感染和破坏。
校验和法是完整性控制技术对信息资源实现完整性保护的一种应用,他主要通过Hash值和循环冗余码来实现,即首先将未被恶意代码感染的系统生成检测数据,然后周期性地使用校验和法检测文件的改变情况,只要文件内部有一个比特发生了变化,校验和值就会改变。

2.实践过程

动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
打开WinXPattacker,用命令提示符打开已存在c盘20212919wyt文件夹下的rada.exe文件,输入命令file RaDa.exe看到文件类型为32位操作系统下的PE文件,有图形化界面。

  • 在PEiD查看ReDa.exe,可以查看加壳方式为UPX

实验1-2 && 实验1-3

实验1-2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

实验1-3 用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

实验器材

  • win11主机
  • powershell
  • strings指令包
  • 恶意代码 RaDa.exe
  • 超级巡警

实验步骤

  • 百度超级巡警下载脱壳,居然失败了...

  • 重新找了一个页面进行下载,脱壳成功!生成RaDa_unpacked.exe

  • 对脱壳后的文件进行strings命令查

  • 我们可以看到一些有意义的信息,脱壳成功!

  • 我们向下仔细查看,可以看到作者信息

实验2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

实验步骤1(crackme1.exe)

  • ida打开crackme1.exe

  • 查看strings字符串

  • 查看函数调用图,我们可以得知主要的函数是_main

  • 查看_main函数(由于是汇编语言 看的很难受)

  • 查看函数图 大体知道其结构 进行了两次判断

  • 对_main进行反编译

  • 根据反编译的结果,我们可以得知:

    • 如果输入参数个数不等于2,打印"I think you are missing something."
    • 第二个输入参数如果不等于"I know the secret",则会打印"Pardon? What did you say?"
    • 第二输入参数等于"I know the secret",则会打印"You know how to speak to programs,Mr. Reverse-Engineer"
  • powershell输入 ./crackme.exe "I know the secret",成功回显

  • 破解完成!

实验步骤2(crackme2.exe)

  •  

  • ida打开crackme2.exe

  • 查看strings字符串

  • 查看函数调用图,然后居然报错了...

  • 删除IDA,重新百度一个...

  • 查看函数调用图,我们可以得知主要的函数是_main

  • 查看函数图 大体知道其结构 进行了多次判断

  • 对_main进行反编译

  • 根据反编译的结果,我们可以得知:

    • 如果输入参数个数不等于2,打印"I think you are missing something."
    • 如果第一个输入参数不等于crackmeplease.exe,会打印"I have an identity problem."
    • 第二个输入参数如果不等于"I know the secret",则会打印"Pardon? What did you say?"
    • 第二输入参数等于"I know the secret",则会打印一些东西,暂时看不出来,等会打一下试试~

实验3 分析一个自制恶意代码样本rada,并撰写报告

 

实验步骤1

  • 使用gitshell的md5sum指令,查看RaDa.exe的md5值

实验步骤2

  • 打开Process Monitor,选择监视RaDa_unpacked.exe文件

  • 打开RaDa_unpacked.exe,结果报错,在Process Monitor中也检测不到这个进程,应当为自动杀死。

  • 转战winxp虚拟机

  • Process Explorer里面查看RaDa_unpacked.exe创建的进程

  • 查看字符串,我们可以看到C:\RaDa\bin和RaDa.exe,并疑似设为开机自启动

  • 进入果真看到RaDa.exe

  • 深入查看,我们可以看到使用指令RegWrite RegRead RegDelete读写注册表,并进行截图等一系列操作

  • 继续深入查看发现-- authors,试一下是不是可以直接查看作者

  • 发现果然可以直接查看作者

 

实验4 取证分析实践

 

实验问题

    • IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

      • 因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
      • 注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:PASS 、NICK 、USER 。注册完成后,客户端就使用 JOIN 信息来加入频道,格式如下:JOIN 。
      • IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。 SSL 加密传输在 6697 端口。
    • 僵尸网络是什么? 僵尸网络通常用于什么?

      • 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
      • 用于DDOS攻击 垃圾邮件攻击等
    • 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

      • 打开wireshark对包进行分析
      • 筛选源地址为172.16.134.191,目的端口为6667的包(指令ip.src == 172.16.134.191 && tcp.dstport == 6667
      • 可以得知IRC服务器的IP地址分别为209.126.161.29 66.33.65.58 209.196.44.172 63.241.174.144 217.199.175.10
    • 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

      • 导出访问209.196.44.172:6667的所有包的信息

      • 统计与多少主机相连

      -得出结果3462

    • 哪些IP地址被用于攻击蜜罐主机

      • 调取目的地址为172.16.134.191的源地址IP包写入2.txt
      • 查看2.txt我们可以看到攻击蜜罐主机的IP地址
    • 攻击者尝试攻击了那些安全漏洞?

      • 查看网络流分布情况

      • 查看TCP的响应端口

      • 查看UDP的响应端口

      • 查看TCP135端口 发现只是进行连接,没有数据交换

 

      • 查看TCP25端口 发现只是进行连接,没有数据交换

      • 查看TCP139端口 大部分是连接,少部分是NBSS和SMB

      • 查看TCP445端口 发现PSEXESVE.EXE,是一种蠕虫

        • 该源IP地址与蜜罐主机建立了会话,攻击成功,这里Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯,svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。
      • 查看TCP4899端口 发现只是进行连接,没有数据交换

      • 查看TCP80端口 发现缓冲区溢出攻击

        • 后续又发现调用命令行
        • 发现蠕虫 www.worm.com c:\notworm
      • 查看UDP137端口 发现只是进行连接,没有数据交换

    • 那些攻击成功了?是如何成功的?

      • TCP80注入蠕虫病毒

      • 没有注入成功

      • PSEXESVE.EXE执行

      • 无回显 没有成功

      • TCP 445端口 返回信息中含有\PIPE\ntsvcs 成功

 

 

 

3.学习中遇到的问题及解决

  • 问题1:实验在准备阶段下载恶意代码样本的过程中因为虚拟机存在防火墙拦截功能,导致未能成功。
  • 问题1解决方案:发现压缩包可以逃离防火墙的监测成功复制到虚拟机桌面上,固下载了一个解压工具,实现成功下载并解压了rada恶意代码样本。

4.实践总结

此次试验学到了很多关于恶意代码和僵尸网络的知识,也成功实现了分析恶意代码的过程,实验没有很多难处,主要是知识比较庞杂,编辑的命令也比以前更加复杂,出现了很长的,需要不断上网查阅知识来对实验进行理解和操作,总之还是很顺利的。

 

posted @ 2022-05-08 23:03  董子超  阅读(263)  评论(0编辑  收藏  举报