• 20192424王昭云实验四恶意代码分析实践


    网络攻防技术实验四

    实验过程

    实践一:恶意代码静态分析

    任务:对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。

    • 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和识别工具

      • LEtdij.png

        • 文件格式为PE32,运行平台为Win32GUI,我的识别工具为PE Explorer
    • 使用超级巡警脱壳机等托克软件,对rada恶意代码样本进行脱壳处理

      • LE0fYD.png

        • 脱壳成功
    • 运行rada程序,并使用软件process explorer进行监控,查看程序属性,发现作者名字Raul siles&David Perze。

      • LE2uTA.png

    实践二:动手挑战:分析crackme程序

    任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

    • 分析crackme1.exe

      • 首先分析crackme1.exe。对crackme1.exe进行执行,猜测是有参数的,经过试验,猜测这个程序的输入是一个参数。

        • LEOz8S.png
    • 接下来利用IDA Pro打开这个程序分析,我们打开通过Strings窗口可以查看该程序中出现的字符串,我们发现了前面的两种反馈信息,I think you are missing something.和Pardon? What did you say?,这两个我们之前已经见过了,很容易猜测,第一个是参数不对的返回情况,第二个是给的参数数量对了,但是具体的内容不对。

    • 在IDA中按下F5反汇编获取C语言代码

      • LEvyjg.png

        • 根据其中的if和argv一眼就可以看出这行是用于判断参数是否输入正确的判断语句,由此可知参数为I know the secret
    • 成功使用参数,获取输出

      • LEvSmj.png

    实践三:样本分析,分析一个自制恶意代码样本

    任务:现在你作为一名安全事件处理者的任务(如果你接受的话)就是深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。

    提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。

    找出并解释这个二进制文件的目的。

    识别并说明这个二进制文件所具有的不同特性。

    识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。

    对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。

    给出过去已有的具有相似功能的其他工具。

    可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

    • 使用数字指纹生成器1.0对RaDa进行求hash

      • 先后对RaDa.exe和改了名为123.exe的同一份恶意代码求hash,发现命名不影响hash值,可知我们可以使用数字指纹生成器1.0根据hash特征检测此恶意代码

        • LVpib4.png
    • 使用PE Explorer分析该恶意程序的运行环境,结果为win32位程序,有图形界面

      • LEtdij.png

        • 文件格式为PE32,运行平台为Win32GUI,我的识别工具为PE Explorer
    • 打开之前用过的监视工具process explorer 和wireshark开启监听,点击运行恶意程序RaDa_uppacked.exe,然后首先分析其程序运行详细信息如下:该恶意程序使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后分别下载和上传某些文件,并且在受害主机C盘目录下创建一个文件夹C:/RaDa/tmp来保存其下载的文件,往下分析发现该恶意程序中可执行DDos拒绝服务攻击

      • LVkYGj.png

        • 上图process explorer 可以证明上述说法
    • 继续分析,发现该恶意程序对主机注册表进行了读写和删除操作

      • LVVtRH.png
    • 往下分析发现了一些看似指令的字符,其中就认识几个,put,get,sleep,screenshot猜想其指令意思分别是上传,下载,休眠,屏幕截图

      • LVVro8.png
    • 发现了一条和数据库查询语句相关的信息

      • LVVIoT.png
    • 用wireshark监听的数据分析一下,可以看到受害主机向目标主机68.169.175.168发送了大量的数据包

      • LVQyxU.png
    • 问题答案

      • 1.使用指纹生成器求RaDa的hash,根据hash判断是否为类似文件

      • 2.RaDa是一个后门的下载器,通过wireshark和Posscess explore可以看出它的目的仅仅是下载后门,然后通过后门与远程主机连接。

      • 3.RaDa.exe被执行时,它会将自身安装到系统C盘中,并通过修改注册表的方式使得每次系统启动,启动后主要就是以下过程:

        • 从指定的web服务器请求指定的web页面。
        • 解析获得的web页面,获取其中的指令。
        • 执行解析出来的指令,主要的指令上面给出。
        • 等待一段时间后继续按照这个循环执行。
      • 4.防分析技术如下:

        • UPX加壳,然后对壳使用jar进行掩护。
        • 通过查看网卡的MAC地址以及查看VMware Tools的注册表项 来判断操作系统是否运行在VMware虚拟机上,如果是,则使用—-authors参数时将不会输出作者信息。
      • 5.它应该属于木马,就像特洛伊木马一样,它自身不具有获取shell的能力,但是它可以下载后门程序。

      • 6.海阳顶端、Bobax – 2004等都是使用http方式来同攻击者建立连接

      • 7.是Raul siles和David Perze于2004年编写的

    实践四:取证分析实践

    问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

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

      • IRC是Internet Relay Chat的缩写,意思是互联网中继聊天,是一种透过网络的即时聊天方式,IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流。使用IRC服务器有两种方式:一种是快速开始,不需注册,只要填写昵称、服务器、频道,然后使用命令join[频道]加入该频道;另一种是注册方式,填写昵称、用户信息、口令,再使用join加入频道。IRC 服务器明文传输通常在 6667 端口监听、 SSL 加密传输在 6697 端口等。
    • 僵尸网络是什么?僵尸网络通常用于什么?

      • 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息。Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等。攻击者利用Botnet从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失
    • 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

      • 用wireshark打开botnet_pcap_file.dat,执行命令 ip.src == 172.16.134.191 && tcp.dstport == 6667筛选源地址为蜜罐主机,目的端口为6667的包
      • 观察到共5个IRC服务器,分别为 209.126.161.29 、 66.33.65.58、 63.241.174.144、 217.199.175.10、 209.196.44.172
    • 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

      • 这个我也不会做,参考一下别人的:
      • 首先用tcpflow进行分流,指令 tcpflow -r botnet.pcap "host 209.196.44.172 and port 6667" #读取文件,筛选host和端口6667后进行分流
      • 输入如下指令进行搜索有多少主机连接
      • cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x /g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l , 共3457台主机
    • 哪些IP地址被用于攻击蜜罐主机?

      • 使用下面的指令找出所有的可能连接的主机的IP地址

      • tcpdump -n -nn -r botnet.pcap 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt

      • 共有165个主机

      • 下面我们使用下面的指令找出所有的可能连接的主机的IP地址。这个指令的作用就是将连接IP地址输出到2.txt中,我们看到总共有165个主机可能被用于入侵蜜罐。其中awk -F就是指定分隔符,可指定一个或多个,print后面做字符串的拼接。

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

      • 攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况。我们发现大部分都是TCP包,有一部分UDP包,所以我们首先应该筛选出响应的TCP端口和UDP端口。

        • LZ6CJx.jpg
      • 利用下面的指令筛选出蜜罐主机相应的TCP端口 ,tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq输出可以看到TCP响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)。

        • LZ6tTs.jpg
      • 端口来逐个分析,说明udp 137号端口,这个是个在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是NetBIOS查点了。
        tcp 135号端口和25号端口,用tcp.port135||tcp.port25筛选查看 ,发现没有数据的交互的,所以这攻击者可能是对这两个端口进行了connect扫描。

        • LZ6H7d.png
      • 然后看TCP 80端口,首先利用Wireshark进行筛选tcp.dstport==80 && ip.dst == 172.16.134.191,首先连接最多的就是24.197.194.106这个IP,他的行为就是不停的用脚本在攻击IIS服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多记录。

        • LZcG36.png
      • 接下来是68.169.174.108、192.130.71.66访问的80端口,都是正常的HTTP访问

        • LZcs8P.png
      • 接下来是210.22.204.101访问的80端口,1840包中超多C,看来攻击者是想通过缓冲区溢出攻击来获得一个命令行了。

        • LZcRbQ.png
      • 最后一个访问80端口的是218.25.147.83,超多N,看到c:\notworm,发现这是一个红色代码蠕虫攻击。

        • LZgPKO.png
        • LZgePI.png
      • 我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败

      • 接下来是TCP 139号端口, 虽然有很多连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样这个也没有成功,这个应该是个SMB查点。

        • LZg2z6.png
      • 最后还剩一个TCP 4899端口。只有一个IP访问过,即210.22.204.101。可以查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制

        • LZgIdH.png

    遇到问题

    问题一:在crackme1,2的程序分析参数时使用F5就可以直接查看C语言代码了,这样比较直接,为什么还要去汇编中慢慢找?

    对于蜜罐捕获的数据包进行分析时有大量的命令参数不懂

    Possess Explore第一次使用时以为要把要监视的程序的图标拖到监视器上才能查看

    第一次进入Possess Explore后查看strings中有image和memory选项,一开始没找到image,找了半天找不到作者。

    实验心得

    本次实验让我大吃一惊,本以为这个程序只是简单的某种恶意代码的案例,没想到里面夹杂了许许多多的知识点。让我如同醍醐灌顶的是在对特定端口连接时需要发送数据包,这些端口很多都是有漏洞的,比如作者对端口使用缓冲区溢出进行攻击。除此这个程序也警醒了我要及时更新系统补丁,否则开启了防火墙也不一定能防住入侵。

  • 相关阅读:
    dom元素和方法总结
    jQuery插件开发
    单次遍历,带权随机选取问题
    转:面试中常见的一些算法问题
    树状数组资料
    逆序数的求法
    将n进制的数组压缩成字符串(0-9 a-z)同一时候解压
    [积累]C++复习 海大2014硕士生面试题微信系统总结
    记一个手游app数据文件的破解
    poj1189 简单dp
  • 原文地址:https://www.cnblogs.com/dkyGreen/p/16133213.html
Copyright © 2020-2023  润新知