20199320 2019-2020-2 《网络攻防实践》第9周作业

20199320 2019-2020-2 《网络攻防实践》第9周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695
我在这个课程的目标是 掌握网络攻防知识及操作
这个作业在哪个具体方面帮助我实现目标 掌握恶意代码基本知识和恶意代码分析技术

一、知识点总结

1.1 恶意代码基础知识

  • 恶意代码定义与分类

    • 恶意代码是指使计算机按照攻击者的意图执行以达到恶意目标的指令集。
    • 实现方式:二进制执行文件、脚本语言代码、宏代码、寄存在其他代码或启动扇区的一段指令流。
    • 攻击目标:单纯的技术炫耀,或恶作剧;远程控制被攻击主机,使之能为攻击者的傀儡主机,满足其实施跳板攻击或进一步传播恶意代码的需要;窃取私人信息(如用户账号/密码,信用卡信息等)或机密信息(如商业机密、政治军事机密等);窃取计算、存储、带宽资源;拒绝服务、进行破坏活动(如破坏文件/硬盘/BIOS等)。
    • 命名规则:“三元组命名”,形式为:[恶意代码类型.]恶意代码家族名称[.变种号]
    • 类型包括:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、内核套件、融合型恶意代码。
  • 计算机病毒

    • 基本特性:感染性、潜伏性、可触发性、破坏性、衍生性

    • 感染及引导机制:

      可执行文件:当它被用户运行,依附在上面的病毒被激活获得控制权,包括前缀、后缀、插入三种感染机制。

      引导扇区:通过感染引导区上的引导记录,病毒可在操作系统启动前获得系统控制权。

      支持宏指令(可执行指令)的数据文件:病毒将自身以宏指令方式复制到数据文件中,当软件打开这些文件时,病毒自动执行。

    • 传播机制:通过移动存储、电子邮件、下载、共享目录等传播,区别于蠕虫,需经人工才能达到系统间的传播。

  • 网络蠕虫

    • 基本特性:通过网络自主传播,不受人为干预,与病毒的特性对比:

      特性 病毒 蠕虫
      复制性 自我复制,感染性 自我复制,感染性
      定义特性 感染宿主文件/扇区 通过网络的自主传播
      宿主 需要寄生宿主 直接通过网络传播
      传播路径 感染文件或扇区,通过文件交换或共享 直接通过网络传播
      传播是否需要用户交互 需要 一般不需要
    • 组成结构:如图

      弹头:通过缓冲区溢出攻击、文件共享攻击、利用电子邮件传播等渗透攻击作为弹头,侵入系统。

      传播引擎:完成蠕虫样本的传播。

      目标选择算法和扫描引擎:目标选择算法开始寻找新的攻击目标,然后利用扫描引擎打描每一个由目标选择算法确定的地址,确定其是否可以被攻击。

      有效载荷:附加的攻击代码。

  • 后门与木马

    • 后门是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道;而木马作为特洛伊木马的简称,是指一类看起来具有某个有用或者善意目的,但实际掩盖着一些隐藏恶意功能的程序。

    • 后门工具提供的访问通道:本地权限提升和本地帐号;单个命令的远程执行;远程命令行解释器访问(shell);远程控制GUI;无端口后门。

    • Windows中后门利用自启动文件夹、注册表自启动项、预定计划任务达到自启动效果;

      Linux中利用inittab系统初始化脚本、inetd 网络服务配置、与用户登录或程序激活相关的用户启动脚本,以及Crond后台程序计划任务来配置自启动。

  • 僵尸程序与僵尸网络

    • 僵尸网络是指攻击者(称为botmaster) 出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络区别于其他攻击方式的基本特性是使用一对多的命令与控制机制,另外,僵尸网络还具有恶意性和网络传播性。

    • 僵尸网络功能结构:

    • 僵尸网络工作机制:

      ①攻击者通过各种传播方式使得目标主机感染僵尸程序。
      ②僵尸程序以特定格式随机产生的用户名和昵称尝试加入指定的IRC命令与控制服务器。
      ③攻击者普遍使用动态城名服务将僵尸程序连接的域名映射到他所控制的多台IRC服务器上,从而避免由于单一-服 务器被摧毁后导致整个僵尸网络的瘫痪。
      ④僵尸程序加入到攻击者私有的IRC命令与控制信道中。
      ⑤加入信道的大量僵尸程序监听控制指令。
      ⑥攻击者登录并加入到IRC命令与控制信道中,通过认证后,向僵尸网络发出信息窃取、僵尸主机控制和攻击指令。
      ⑦僵尸程序接受指令,并调用对应模块执行指令,从而完成攻击者的攻击目标。

    • 僵尸程序的命令与控制机制:基于IRC协议的命令与控制机制、基于HTTP协议的命令与控制机制、基于P2P协议的命令与控制机制。

  • Rootkit

    • 定义是:一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。

    • 用户模式Rootkit:修改的是操作系统用户态中用户和管理员所使用的一些内建程序和库文件。

      • Linux下的用户模式Rootkit中集成的工具:提供后门访问的二进制替换程序;隐藏攻击者的二进制替换程序;用于隐藏而不替换的二进制程序;安装脚本。

      • Windows下实现用户模式Rootkit的技术:利用开发接口;破坏WFP(Windows Files Protection)机制覆盖文件;DLL注入和API挂钩把恶意代码直接加入到运行进程的内存空间中。

    • 内核模式Rootkit:直接攻击操作系统最核心的内核,修改内核从而隐藏自身。

      采用的技术:文件和目录隐藏;进程隐藏;网络端口隐藏;混杂模式隐藏;改变执行方向;设备截取和控制。

1.2 恶意代码分析方法

恶意代码分析的技术方法主要包括静态分析和动态分析两大类。静态代码分析可了解恶意代码的特性和目的,动态代码分析可了解其行为。静态分析容易受到恶意代码分析机制的影响,而动态分析易受运行环境的影响。

恶意代码静态分析技术

  • 反病毒软件扫描

    • 目的:识别已知恶意代码的类型、家族、变种等信息。
    • 工具:主流的反病毒软件,VirusTotal(世界病毒扫描网)
  • 文件格式识别

    • 目的:确定攻击平台和类型。
    • 工具:file(Windows上,二进制可执行文件EXE和DLL都是以PE文件格式组织的,而在Linux平台上,可执行文件格式则是ELF。命令:file xxx.xxx)、peid(可查看PE文件的入口点、文件偏移等)、FileAnalyser
  • 字符串提取分析

    • 目的:寻找恶意代码分析线索,可能获得的有用信息包括恶意代码实例名、帮助或命令行选项、用户会话、后门口令等。
    • 工具:Strings(Linux:strings xxx | grep xxx Windows:strings xxx | find "xxx")、IDO Pro。
  • 二进制结构分析

    • 目的:初步了解二进制文件结构。
    • 工具:binutils(nm命令可查找二进制文件中的符号元素,包括函数名、调用地址、变量名和位置等,从而确定使用了何种编译器;objdump命令可显示出文件头部摘要、运行架构等,还可输出文件完整的反汇编代码)。
  • 反汇编与反编译

    • 反汇编与反编译是对二进制程序编译链接的逆过程。
    • 反汇编:把二进制程序的目标代码从二进制机器指令码转换为汇编代码。软件:IDA Pro、Ollydbg、W32Dasm、VC++等。
    • 反编译:期望将汇编代码再进一步还原成高级编程语言形式的源代码。工具:针对C/C++的REC、DCC等,针对Java语言的JAD、JODE、DAVA等。
  • 代码结构与逻辑分析

    • 目的:分析二进制代码组成结构,理解二进制代码逻辑。
    • 工具:IDA Pro(生成的函数调用关系图可助我们了解到用户函数的行为特征,定位出用户命令输入处理和分发等函数;生成程序控制流图CFG可进一步分析关键行为特征。)
  • 加壳识别的代码脱壳

    • 目的:识别是否加壳,加壳类型;对抗代码混淆,恢复原始代码。
    • 恶意代码通常使用的加壳混淆机制包括加密、多样性、多态和变形等。
    • 对恶意代码的加壳识别,可以使用如PEiD、pe-scan、PE Sniffer. fileinfo、Exeinfo PE、DiE、FastScanner、 FFI等文件格式识别工具。
    • 脱壳工具:UPX工具的-d选项可以对UPX加壳进行自动脱壳,UnPEPack能够对PEPack加
      壳进行脱壳,ASPack unpacker 可以对ASPack加壳进行脱壳,超级巡警脱壳器VMUnpacker,手工脱壳技术(寻找程序入口点、dump出程序、修复PE文件的导入导出表等)。更多资料可查www.pediy.com。

恶意代码动态分析技术

  • 基于快照比对的方法和工具

    • 目的:获取恶意代码行为结果。
    • 工具:RegSnap(详细报告了注册表及其他系统配置的修改情况)、完美卸载(能自动监控恶意代码动态运行过程)。
    • 优点:简单易用;缺点:无法监控和分析恶意代码的中间行为。
  • 系统动态行为监控(API Hooking)

    • 实现机制:基于行为通知(Notification) 机制或者API劫持技术(API Hooking)实现。
    • 目的:实时监控恶意代码动态行为轨迹。
    • 分类及工具:文件行为监控软件(Filemon)、进程行为监控软件(Process Explorer、top和lsof)、注册表监控软件(Regmon)、本地网络栈行为监控软件(Isof命令可查看恶意代码在UNIX系统中所开放的TCP或UDP端口;TCPView或Fport工具可查看Windows系统中是否有新的TCP或UDP端口正在监听;TDImon可获取恶意代码期望通过本地网络协议栈收发的数据内容)
  • 网络协议栈监控方法

    • 目的:分析恶意代码网络监听端口及发起网络会话。
    • 工具:nmap、Nessus、tcpdump、wireshark.
  • 沙箱技术

  • 动态调试技术

    • 目的:单步调试恶意代码程序,理解程序结构和逻辑。
    • 工具:Windows平台下的开源Ollydbg软件、微软推出的免费软件windbg、商业软件IDA Pro 和SoftICE等,以及类UNIX平台下的gdb、systrace、ElfShell等。

二、实践内容和实践过程

2.1 动手实践:恶意代码文件类型识别、脱壳与字符串提取

实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下。

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

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。

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


  • 将rada文件拷入winXP虚拟机,为方便,我导入了C盘,进入该目录,执行file rada.exe,如图:

    可得文件类型为PE可执行文件,运行平台为Windows。

  • 于是,打开专门查看Windows PE文件信息的工具PEiD,查看扩展信息,可得该文件的加壳工具,如图:

    加壳工具为:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo

  • 运行窗口执行strings rada.exe 对字符串进行提取,如图:

    可见,此时因为被加壳而显示乱码。

  • 打开超级巡警脱壳器对该文件进行脱壳,如图:

  • 此时执行strings RaDa_unpacked.exe 提取字符串,从中发现大量函数,但并未找到我想要的作者信息,换用另一种工具IDA Pro Free打开脱壳后的文件,如图,开始便可看到rada恶意代码的编写作者貌似是DataRescue sa/nv?查了一下,这只是数据恢复应用参数。

    在运行窗口打开rada的图形化界面,如图:

    得到编写作者是Raul Siles 和 David Peres。

2.2 动手实践: 分析Crackme程序

使用IDA Pro静态或动态分析crackmel.exe与crackme2.exe,寻找特定的输入,使其能够输出成功信息。


  • 首先分析文件类型,执行file crackme1.exefile crackme2.exe 查看:

    两个程序都是32 位 windows 下 PE 文件,是命令行程序。

先对 crackme1.exe 进行破解。

  • 尝试运行该程序,试探其输入格式:

    发现输入一个参数时,程序的反馈和其他不同,于是猜测crackme1.exe接受一个参数。

  • 使用 IDA pro 工具打开文件,尝试通过汇编语言,验证猜想。

    • 通过 Strings 页面查看该程序中的明文字符串,我们发现了前面的两种反馈信息,“I think you are missing something.” “Pardon? What did you say?”,还有两个没见过的字符串。

    • 打开call flow(view -->Graphs -->Function calls):

      printfstrcmp这些C语言常见函数,推断crackme1.exe是用C语言写的,且主要代码在sub_401280。由于strcmp函数C语言中用于比较字符串的函数,猜测口令就是通过该函数进行匹配的。

    • 定位到sub_401280这里,为方便查看,点击view -->Graphs -->flow chart:

      可见, cmp [ebo+arg_0],2 为判断程序是否有两个参数。如果不是(false),输出I think you are missing something;如果是(true),这里发现关键strcmp函数,意思是比较输入参数(前面提到eax是用户输入的参数)是否是I know the secret,下面的flow chart如图:

      如果输入的不是I know the secret,则输出“Pardon? What did you say?”;如果输入I know the secret,则输出You know how to speak to programs, Mr. Reverse-Engineer

  • 验证一下:

    上面分析都正确。


再对 crackme2.exe 进行破解。

  • 使用 IDA pro 工具打开文件,通过 Strings 页面查看该程序中的明文字符串,我们发现了5个字符串:

  • 打开call flow(view -->Graphs -->Function calls):

    主要代码在sub_401280。

  • 找到sub_401280位置的代码:

    可见,首先检查是否输入了2个参数,如果不是,输出I think you are missing something;如果是,通过strcmp函数比较输入的第一个参数([ebp+arg_4])是否是crackmeplease.exe,若是,下面的flow chart如图:

    再比较第二个参数(eax+4定位到下一个内存块)是否是I know the secret,若不是,输出“Pardon? What did you say?”;若是,这里进行了unk_403080 中的字符串分别与0x42h 进行异或运算,最后输出异或后结果。

  • 验证:运行窗口首先复制crackme.exe 为crackmeplease.exe,再输入crackmeplease.exe "I know the secret",如图:

    上面分析正确。

2.3 样本分析实践:分析一个自制恶意代码样本rada

本次实践作业的任务是分析一个自制的恶意代码样本,以提高对恶意代码逆向工程分析技术的认识,并提高逆向工程分析的方法、工具和技术。

待分析二进制文件位置: rada.zip, 警告 这个二进制文件是一个恶意代码,因此你必须采用一些预防措施来保证业务系统不被感染,建议在一个封闭受控的系统或网络中处理这个未知的实验品。

回答问题:

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


  • 使用md5sum rada.exe获得该文件的摘要,如图:

    摘要为:caaa6985a43225a0b3add54f44a0d4c7。

  • 使用file命令打开该文件,

    获取到该文件类型为PE可执行文件,并且有图形化窗口,运行平台为Windows 32位系统。

  • 于是,打开专门查看Windows PE文件信息的工具PEiD,查看扩展信息,可得该文件的加壳工具,如图:

    加壳工具为:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo


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


  • 利用超级巡警脱壳器对该文件进行脱壳,如图:

  • 打开监控软件process explorer与wireshark,再开启rada.exe和rada_unpacked.exe程序,查看rada_unpacked.exe的进程信息,如图:

    验证一下,进入系统注册表编辑,找到系统自启动注册表,

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    

    可查到确实添加了rada.exe程序。如图:

    可见,攻击者通过建立HTTP请求访问10.10.10.10\RaDa\RaDa_commands.html,并通过读取写入注册表激活自启动,感染主机一旦联网便执行该恶意代码,根据所学知识,猜测这是一个后门,接收控制指令。


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


RaDa.exe被执行时,它会将自身安装到系统中,并通过修改注册表的方式使得每次系统启动它都能够被启动,启动后循环执行以下操作:

(1)从指定的web服务器请求指定的web页面;

(2)解析获得的web页面,获取其中的指令;

(3)执行解析出来的指令;

(4)等待一段时间;

(5)返回第(1)步。

从wireshark捕到的包可见该程序不定时给感染主机发送http连接请求。

rada.exe启动后,一直在后台运行,不会弹出任何窗口。它支持以下指令:

  • exe 在宿主主机中执行指定的命令

  • put 将宿主主机中的指定文件上传到服务器

  • get 将服务器中的指定文件下载到宿主主机中

  • screenshot 截取宿主主机的屏幕并保存到tmp文件夹

  • sleep 停止活动一段时间


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


  • 这个二进制文件使用UPX加壳之后又做了手工修改,使得难以脱壳,而不脱壳又会影响反汇编。

  • 脱壳之后,可以在文件中找到字符串“Starting DDoS Smurf remote attack.”,如图:

    这会使分析者误以为样本可以发动DDos攻击,而实际上它没有提供任何用以发动DDos攻击的子程序。


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


它不具有传播和感染的性质,所以它不属于病毒和蠕虫;它也没有将自己伪装成有用的程序以欺骗用户运行,所以他也不属于木马。这是一个后门程序,运行并按照攻击者命令进行工作(第2问已具体分析出是为什么是)。


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


  • Bobax :2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。

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


  • 查开发作者还是比较容易的,在前面2.1的实践已详细叙述(在运行窗口打开rada的图形化界面)。

  • 还可以利用监视工具process explorer 查看结构信息,如图:

2.4 取证分析实践: Windows 2000系统被攻陷并加入僵尸网络

难度等级:中级,案例分析挑战内容:

这次案例分析的数据源是用Snort 工具收集的该蜜罐主机5天的网络流日志,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和一些其他的特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。你的任务是分析这个日志文件并回答以下给出的问题。

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


答:IRC是Internet Relay Chat的缩写,意思是互联网中继聊天,是一种透过网络的即时聊天方式,IRC用户使用特定的用户端聊天软件连接到IRC服务器,通过服务器中继与其他连接到这一服务器上的用户交流。

使用IRC服务器有两种方式:一种是快速开始,不需注册,只要填写昵称、服务器、频道,然后使用命令join [频道]加入该频道;另一种是注册方式,填写昵称、用户信息、口令,再使用join加入频道。

IRC 服务器明文传输通常在 6667 端口监听、 SSL 加密传输在 6697 端口等。


2.僵尸网络是什么? 僵尸网络通常用于什么?


答:僵尸网络是指攻击者(称为botmaster) 出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。僵尸网络区别于其他攻击方式的基本特性是使用一对多的命令与控制机制,另外,僵尸网络还具有恶意性和网络传播性。

僵尸网络通常用于发送垃圾邮件、DDos攻击、财务违规( 包括专门为企业资金和信用卡信息直接盗窃而设计的僵尸网络)、有针对性的入侵(如危害组织的特定高价值系统)。


3.蜜罐主机(IP地址: 172.16.134.191) 与哪些IRC服务器进行了通信?


  • 通过 Wireshark 打开数据文件,因为我们知道 IRC 服务通过6667端口,设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667

    可以得到五个IRC服务器,分别为 209.126.161.2966.33.65.5863.241.174.144217.199.175.10209.196.44.172


4.在这段观察期间,多少不同的主机访问了以209. 196.44.172为服务器的僵尸网络?


  • 执行tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'对相应IP和端口的数据包进行流读取。

    注:tcpflow实际上也是一个抓包工具,这个抓包工具与tcpdump不同的是它是以流为单位显示数据内容,而tcpdump以包为单位显示数据。我们平常会经常分析HTTP数据,用tcpflow会更便捷。

    -r : 从输出文件中读取数据包。

    执行之后我们获得了三个文件,172.016.134.191.01152-209.196.044.172.06667209.196.044.172.06667-172.016.134.191.01152report.xml,其中`report.xml记录了了这两个文件的相关信息,包括上述双方的IP、端口、mac地址、通信时间等等。

  • 下面我们输入如下指令进行搜索有多少主机连接:

    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
    

    sed:去除前缀,最后的g是全局的意思;

    tr ' ' '\n':将空格转换为换行;

    tr -d '\15'删除\r

    grep -v "^$"NOT指令,去除空行;

    sort -u:排序并去除重复;

    wc -l:输出行数。

    这里我不知道哪里出错,还在解决中。


5.哪些IP地址被用于攻击蜜罐主机?


  • 我们认为进入蜜罐的流量都是攻击。使用以下命令查找端口并输出到1.txt 中,

    tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt
    

    tcpdump -n:对地址以数字方式显式,否则显式为主机名,也就是说-n选项不做主机名解析;

    -nn: 除了-n的作用外,还把端口显示为数值,否则显示端口服务名;

    -r<数据包文件>: 从指定的文件读取数据包数据。

    grep -v:排除指定字符串;

    cut -d '.' -f 10:截取以'.'为分隔符的第 10 列;

    uniq命令用于检查及删除文本文件中重复出现的行列;

    wc -l 用于统计文件的行数。

    可见,有148个148个端口被攻击了。

  • 再使用下面的指令找出所有的可能连接的主机的IP地址,输出到2.txt中。

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

    awk:把输出的内容进行处理;

    -F “ ”:以空格为分隔符;

    print $3:打印分割后的第三列

    我们看到总共有165个主机可能被用于入侵蜜罐。打开该文件可知哪些主机被用于攻击蜜罐:


6.攻击者尝试攻击了哪些安全漏洞?哪些攻击成功了? 是如何成功的?


  • 攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用如下命令先查一下网络流分布情况:

    snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
    

    发现大部分都是 TCP 包,有一部分 UDP 包,首先应该筛选出相应的 TCP 端口和 UDP 端口。

  • 利用下面的指令筛选出蜜罐主机相应的 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[tcpflags]== 0x12表示tcp标志位为0x12,即[ACK]和[PSH]为1,建立三次握手,且有数据传输。

    可以看到 TCP 响应端口为 135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)。

  • 同样的方法筛选出UDP端口:

    tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq 
    

    我们能查到仅有 137(netbios-ns) 号端口响应。

下面逐个分析端口。

  • udp 137号端口,这个是在局域网中提供计算机的 IP 地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。

  • tcp 135号端口和25号端口,只是进行了连接,没有数据的交互,所以这攻击者可能是对这两个端口进行了connect扫描。

  • TCP 80端口,用tcp.dstport==80 && ip.dst == 172.16.134.191进行筛选:

    • 首先是68.169.174.108访问的80端口,可见是正常的HTTP访问,并无异常。同时后面还有一些都是正常的访问,就不再叙述了。

    • 接下来是210.22.204.101访问的80端口,攻击者是想通过缓冲区溢出攻击来获得一个命令行了。

    • 连接最多的是24.197.194.106这个 IP,他的行为就是不停的用脚本在攻击 IIS 服务器的漏洞,从而获取系统权限,正是因为用的脚本,所以才会有这么多记录。

    • 下一个访问 80 端口的是218.25.147.83,这里看到了大量的N,上网查到这是遭受了红色代码攻击。同时追踪TCP流,会看到c:\notworm,说明这就是一个蠕虫攻击。

    • 最后就是看80端口有没有攻击成功了,通过tcp.srcport== 80 && ip.src==172.16.134.191 && http过滤蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败。

  • TCP 139号端口,用tcp.dstport==139 && ip.dst == 172.16.134.191进行筛选:

    这个也比较简单,虽然有很多连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样这个也没有成功,这个应该是个SMB查点。

  • 445端口,用tcp.dstport==445 && ip.dst == 172.16.134.191进行筛选:

    • 首先是195.36.247.77,他只是进行了普通的查点,通过tcp.srcport== 445 && ip.src==172.16.134.191 && http过滤蜜罐主机445端口向外的流量,发现没有建立连接的数据包,所以没有成功

    • 接下来是66.139.10.15,此IP除了普通查点,还进行了口令猜测,如图:

      过滤蜜罐主机445端口向外的流量,发现大量error出错报文,所以攻击失败,如图:

    • 210.22.204.101:普通查点、口令猜测,还攻击了MSRPC-SVCCTL服务枚举漏洞,如图:

      过滤蜜罐主机445端口向外的流量,发现SVCCTL的回复报文成功建立连接,所以成功攻破

    • 80.181.116.202209.45.125.69129.116.182.23966.8.163.125这些IP同上面第一个分析的主机,只是普通的查点,且没有成功

    • 61.111.101.78:发现一个PSEXESVC.EXE字符串,经搜索,这是一种PSEXESVC攻击,且多次建立smb管道,所以分析该攻击成功,如图:

三、学习中遇到问题及解决

  • 问题1:实践2.1中找不到作者信息。

    解决方法:上网搜到可打开rada.exe的图形化界面查看。

  • 问题2:实践2.3对rada恶意代码分析时,想分析反汇编代码来着,时间不够加上精力不足,重重受阻。

    解决方法:发现监视工具process explorer 对结构信息展现的直观清晰,干脆分析这个了,汇编代码之后认真研究一下。

  • 问题3:实践2.4的第四问命令明明正确无误,输出访问主机为什么是5个(正确的是3457)?

    解决方法:暂未解决.......

  • 问题4:实践2.4分析漏洞不知道怎样的标志算攻击成功。

    解决方法:多次比较蜜罐主机对各个IP的回复报文,发现特殊包去百度,且与孙启龙博客里面的结果进行对照。

四、实践总结

不得不说恶意代码这块的分析真是难,需要具备扎实的linux知识和网络安全知识,平时只是简单的利用一些工具,比如tcpdump 、tcpflow等,却没有多加学习,原来利用好这些工具,可以解决很多问题,其实,不止这门课,很多知识工具只有掌握好才能真正发挥作用,且很多的扩展知识、关联模块更需要我们去研究。

五、参考文献

posted @ 2020-04-29 21:38  梁旭20199320  阅读(284)  评论(0编辑  收藏  举报