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

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695
我在这个课程的目标是 学习并掌握网络攻防知识,能完成相关实践
这个作业在哪个具体方面帮助我实现目标 学习恶意代码相关知识,并利用工具对恶意代码进行分析

恶意代码安全攻防

1.知识点梳理与总结

恶意代码基础知识

1、恶意代码:指是计算机按照攻击者的意图执行以达到恶意目标的指令集。

  • 攻击目标:炫技;远程控制被攻击机;窃取信息;窃取计算、存储、带宽资源;拒绝服务、进行破坏活动;
  • 类型
  • 基于多维度标签的恶意代码形态分类

2、恶意代码的发展:

1983正式定义,80年代进入中国;
复杂度和破坏力不断增强;创新频繁;恶意代码重点转移到蠕虫和内核级攻击工具;

3、计算机病毒:

计算机病毒基本特性:(1)感染性(自我复制,判断计算机病毒首要依据);(2)潜伏性(感染过程隐蔽);(3)可触发性(满足特定条件后,激活感染机制);(4)破坏性(炫技;破坏计算机系统正常运行);(5)衍生性。

计算机病毒的感染和引导机制
潜在感染目标分为以下三类:

  • (1)可执行文件。以可执行文件为宿主,当其被用户运行时,依附在上面的病毒被激活。三种感染方式:前缀感染机制、后缀感染机制和中间插入感染机制
    前缀感染机制指病毒将自身复制到宿主程序的开始,宿主程序被执行时,系统会先运行病毒代码;
    后缀感染机制指病毒将自身复制到宿主程序的末端,在宿主程序开始时加一条跳转指令,使病毒代码先执行再跳转到宿主程序;
    中间插入感染机制指把病毒代码放在宿主程序中间,使得病毒更隐蔽但编写难度较大。
  • (2)引导扇区。计算机启动过程:BIOS定位到磁盘主引导区;运行主引导区存储的主引导记录;主引导纪录从分区表找到第一个活动分区;读取并执行该分区的引导记录,分区引导记录负责装载操作系统。感染目标:主引导区、分区引导区。通过感染引导记录,病毒就可以在系统启动时先于操作系统获取系统控制权。
  • (3)支持宏指令的数据文件。数据文件中包含的可执行指令即宏指令
    宏病毒将自身以宏指令方式复制到数据文件中,当文件打开时自动执行宏病毒。

计算机病毒的传播机制:基于硬件的包括软盘、U盘、SD卡等;基于网络的主要包含电子邮件及下载、共享文件等。

4、网络蠕虫:

网络蠕虫的基本特性:通过网络自主传播,无需人为干预;不需要感染宿主;递归方式传播;

计算机病毒与网络蠕虫对比

网络蠕虫的组成结构

  • (1)弹头:渗透攻击,包括缓冲区溢出攻击、共享文件攻击、利用电子邮件传播和其他普遍配置错误等;
  • (2)传播引擎:通过在目标系统上执行传播引擎指令,完成蠕虫样本的传播。方式有FTP/TFTP/HTTP/SMB等;
  • (3)目标选择算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击。目标包括电子邮件地址、主机列表、被信任的系统、网络邻居主机、域名服务和通过特定规则任意选择目标IP。
  • (4)有效载荷:附加的攻击代码,执行一些特殊目地的操作,包括植入后门、安装分布式拒绝服务攻击代理、组建僵尸网络、执行一个复杂计算等。

5、后门与木马

后门:允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供访问通道。
类型:本地特权提升、单个命令的远程执行、远程命令行解释访问器(NetCat)、远程控制GUI(VNC、BO、冰河、灰鸽子)、无端口后门(ICMP后门、基于Sniffer非混杂模式或混杂模式的后门)。

木马:特洛伊木马,看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
木马伪装技术:命名伪装、使用软件包装工具、攻击软件发布站点、代码下毒。

6、僵尸程序与僵尸网络

僵尸网络定义:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。

僵尸网络功能结构:主要分为主体功能和辅助功能。主体功能包括命令与控制模块(核心)、传播模块,辅助功能分为信息窃取模块、主机控制模块、下载更新模块、防分析检测模块。

IRC僵尸网络工作机制
(1)攻击者渗透攻击,感染僵尸程序;
(2)僵尸网络尝试加入指定IRC命令与控制服务器;
(3)攻击者使用普遍动态域名服务奖僵尸程序连接的域名映射到多台IRC服务器;
(4)僵尸程序加入攻击者私有IRC命令与控制信道;
(5)加入信道的僵尸程序监听控制指令;
(6)攻击者发出信息窃取、僵尸主机控制核工记命令;
(7)僵尸程序执行命令。

僵尸网络的命令和控制机制
基于IRC协议的命令和控制机制、基于HTTP协议的命令和控制机制(一般可绕过防火墙)、基于P2P协议的命令与控制机制(更隐蔽)

7、Rootkit

  • 定义:一种特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。用来获Root后门访问的kit工具包。
  • 用户模式Rootkit:修改操作系统在用户态的程序和库文件。分为五种类型:提供后门访问的二进制替换程序、隐藏攻击者的二进制替换程序、用于隐藏但不替换的二进制程序、一些零散工具(网络嗅探器)、安装脚本。
  • 内核模式Rootkit:修改操作系统内核,更深的隐藏和更强的隐蔽性。技术手段:文件和目录隐藏、进程隐藏、网络端口隐藏、混杂模式隐藏、改变执行方向、设备截取和控制。

恶意代码分析方法

1、代码分析:按需求使用一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。

恶意代码分析的技术方法主要包括:静态分析和动态分析
分析良性代码与分析恶意代码的区别:
不能提前知道恶意代码的目的。
恶意代码具有恶意的攻击目的,会对所运行环境进行恶意破坏。
恶意代码分析在绝大数情况下不会拥有待分析程序的源代码。
恶意代码目前都会引入大量各种各样的对抗分析技术。

2、恶意代码分析环境

  • 恶意代码发烧友的分析环境:利用集线器或者交换机把计算机连接在一起。
  • 采用虚拟化技术构建恶意代码分析环境:保证宿主计算机不要连接业务网络和互联网。
  • 用于研究的恶意代码自动分析环境:专业人员使用的,分为静态分析机、动态分析机、网络分析机和综合分析机。

3、恶意代码静态分析技术

定义:通过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。

恶意代码静态分析方法列表

  • 反病毒软件扫描:使用反病毒软件扫描分析样本,以识别类型、家族、变种等信息。卡巴斯基、诺顿、瑞星、金山、360、VirtusTotal等。
  • 文件格式识别:windows平台,二进制文件EXE和DLL以PE文件格式组织,linux平台上是ELF。工具:file(确定文件类型以及支持平台);peid(文件类型、编译链接器版本、加壳识别);FileAnalyzer等。
  • 字符串提取:可能获取的信息包括恶意代码实例名、帮助或命令行选项、用户会话、后门口令、相关URL信息和Email地址、包含库文件和函数调用。工具:strings、IDA Pro、Strip(删除不可执行的标记性信息);
  • 二进制结构分析:工具:binutils。nm指令在可执行二进制文件中查找重要数据元素。objdump从目标文件中显示不同类型的信息;反汇编。
    反汇编:把二进制程序从二进制机器指令码转换为汇编代码。工具IDA Pro。
    反编译:将汇编代码还原成高级编程语言。
  • 代码结构与逻辑分析:核心任务,针对反汇编和反编译的结果。Call Graph:用户函数、系统函数和函数调用关系。程序控制流图CFG,程序逻辑分析。
  • 加壳识别和代码脱壳:夹克混淆机制包括:加密(采用固定加密/解密器)、多样性(使用多样化解密器)、多态(恶意代码能随机变换解密器,使得每次感染所生成的恶意代码具有唯一性,必须脱壳才能检测分析)、变形(直接在恶意代码原有形态上加入各种代码变换形态)。
    对恶意代码的加壳识别工具:PEiD、pe-scan、fileinfo等
    脱壳工具:针对UPX,-d选项自动脱壳;针对PEPack,使用UnPEPack;针对ASPack,使用ASPack unpacker;VMUnpacker等。

4、恶意代码动态分析技术实验环境一定要与业务网络和互联网完全断开!

恶意代码动态分析方法列表:

  • 快照比对:对“干净”资源列表做快照;激活恶意代码;对恶意代码运行后的“脏”资源列表做快照;对比两个快照,获取恶意代码行为结果。
  • 系统动态行为监控:核心。包括基于行为机制(Win32/Linux系统提供的行为通知机制)和API劫持技术(对API调用进行劫持,监控行为)。
  • 网络监控:恶意代码开放的端口(nmap)、恶意代码发起的网络连接(tcpdump/wireshark)。
  • 动态调试:在程序的执行过程中进行调试。

2.实践过程

实验一:恶意代码文件类型识别、脱壳和字符串提取

对提供的rada恶意代码样本(云班课),进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada代码进行样本分析,从中发现rada恶意代码的编写作者是谁。

  • 实践在WinXP上进行,上面已经安装各种分析软件。
  • 在cmd中切换到恶意程序所在的目录,使用【file RaDa.exe】命令查看 RaDa.exe的文件类型。可以看到该程序是一个Windows平台下32位的二进制可执行文件,GUI表示这个程序是一个有图形界面的程序,intel 80386是处理器架构。
  • 然后使用【strings RaDa.exe】查看该程序可打印字符串,结果发现可打印的字符串为乱码,判断该程序采用了加壳技术,接下来分析使用了哪种加壳工具。
  • 使用PEiD工具查看RaDa.exe使用的加壳工具,可以看到使用的加壳工具为UPX,还可以看到文件的入口点、偏移等信息。
  • 使用超级巡警自动脱壳对RaDa.exe进行脱壳,可以看到在RaDa.exe同目录下生成了一个脱壳以后的程序RaDa_unpacked.exe
  • 用【strings RaDa_unpacked.exe】查看脱壳后的RaDa.exe即RaDa_unpacked.exe,可以看到正常显示信息
  • 打开IDA Pro Free选择脱壳之后的文件,即可看到rada恶意代码的编写作者。

实验二:分析Crackme程序

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

  • 依旧选择WinXP虚拟,采用静态分析,并且以防万一断开了虚拟机的网络。
  • 在恶意程序所在目录下,使用【file crackme1.exe】和f【ile crackme2.exe】命令查看两个文件信息,两个文件均为windows系统下32位的二进制可执行程序,使用控制台操作。
  • 先分析crackme1.exe。执行crackme1.exe,尝试输入不同类型不同数量的参数(数值、字符、字符串)执行,发现输入一个参数与输入多个参数时有不同的输出,推测该程序的输入为一个参数。
  • 利用IDA Pro Free打开crackme1.exe,通过Strings窗口可以看到4个字符串
  • 接下来在【View->Graphs->Function calls】中打开函数调用图,可以看到用于输出的print/fprint功能在sub_401280中,所以接下来查看sub_401280以寻找程序运行结果的输出情况。

  • 在Functions里找到sub_401280的汇编代码,可以看到通过比对输入的参数,输出不同的结果。其中,cmp [ebo+arg_0],2 判断程序是否超过两个参数,cmp是比较两个操作数的大小,如果输入参数不小于2是则返回“I think you are missing something.”。下面又利用strcmp比较用户输入参和“I know the secret”,一致则输出“You know how to speak to programs, Mr. Reverse-Engineer”,否则输出“Pardon? What did you say?”

  • 输入【crackme1.exe “I know the secret”】进行验证,结果可以输出成功信息。
  • 同理下面分析crackme1.exe。直接利用IDA Pro Free打开crackme2.exe,通过Strings窗口可以看到5个明文字符串。
  • 接下来在【View->Graphs->Function calls】中打开函数调用图,可以看到用于输出的fprint功能在sub_401280中,所以接下来查看sub_401280以寻找程序运行结果的输出情况。
  • 在Functions里找到sub_401280的汇编代码,可以看到通过比对输入的参数,输出不同的结果。其中,同样先判断程序是否超过两个参数,如果输入参数不小于2是则返回“I think you are missing something.”;接着用strcmp函数对argv里面的第一个字符串,因为是arg_4(32位系统中堆栈指针每次变化4字节)即程序名,和“crackmeplease.exe”进行判断,如果不一致,则输出“I have a identity problem”,一致则继续判断用户的输入与“I know the secret”是否一致,若不一致,则输出“Pardon? What did you say?”,一致则输出正确结果。


  • 由上述分析可知,要得到正确输出,首先程序名要使用crackmeplease.exe,故先将crackme2.exe复制为crackmeplease.exe,再输入【crackmeplease.exe “I know the secret”】进行验证,结果可以输出成功信息。

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

深入分析这个二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
(2)找出并解释这个二进制文件的目的。
(3)识别并说明这个二进制文件所具有的不同特性。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
(6)给出过去已有的具有相似功能的其他工具。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

  • 首先按照实践一的过程对RaDa.exe进行分析。过程简略描述,利用【file RaDa.exe】分析该恶意程序的运行环境,结果为win32位程序,有图形界面;用【strings RaDa.exe】输出结果乱码,为加壳文件;用PEiD判断UPX壳;用超级巡警进行脱壳。
  • 使用MD5生成RaDa.exe的摘要信息,摘要内容为【caaa6985a43225a0b3add54f44a0d4c7】
  • 打开process explorer和wireshark进行监听,然后运行RaDa.exe。在process explorer中双击RaDa.exe查看程序运行详细信息,可以看到改程序首先使用http连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上,然后下载和上传了一些文件,之后在受害主机C盘创建两个文件夹【C:/RaDa/tmp】和【C:/RaDa/bin】,接着往下有一条DDos攻击的语句。
  • 接着往下,可以看到对注册表进行读写和删除操作

  • 接着可以看到一些命令:exe(在宿主主机中执行指定的命令);put(将宿主主机中的指定文件上传到服务器);get(将服务器中的指定文件下载到宿主主机中);screenshot(截取宿主主机的屏幕并保存到tmp文件夹);sleep(停止活动一段时间);然后下面紧跟着可以看到这个恶意程序的作者。
  • 下面分析wireshark监听的数据。可以看到受害主机向10.10.10.10的80端口发送了大量的数据包,但追踪数据流没有什么内容。

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

  • MD5摘要信息:caaa6985a43225a0b3add54f44a0d4c7
  • 运行环境:Windows平台下32位的二进制可执行文件,有图形化界面
  • 使用了UPX进行加壳

(2)找出并解释这个二进制文件的目的。
当用户连接互联网时,该程序就会通过http请求连接到指定主机,进行接受攻击者指令操作

(3)识别并说明这个二进制文件所具有的不同特性。
RaDa.exe被执行时,它会在实验主机的C盘下创建了一个RaDa目录,并创建一个bin文件夹,一个tmp文件夹,tmp文件夹用来临时存储从目标主机下载到受害主机的文件和从受害主机获取的文件信息,bin文件夹中安装了一个RaDa.exe可执行文件。

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。
该二进制文件使用了UPX加壳,需要脱壳处理才能进行反编译分析的。

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。
因为这个样本不具有传播和感染的特点,所以它不属于病毒和蠕虫。它也没有将自己伪装成有用的程序以欺骗用户运行,所以不属于木马。经排除它可能是一个后门程序或僵尸程序。

(6)给出过去已有的具有相似功能的其他工具。
Bobax–2004也是使用http方式来同攻击者建立连接,然后解析并执行其中的指令。

(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
有上面的分析可知,此二进制文件是Raul siles和David Perze于2004年编写的。

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

数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

  • IRC是因特网中继聊天(Internet Relay Chat)的简称。IRC 的工作原理:在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。IRC的特点是通过服务器中继与其他连接到这一服务器上的用户交流。注册时需要发送的消息有三种,分别是:口令,昵称和用户信息。格式如下:USER 、PASS 、NICK 。注册完成后,客户端就使用JOIN信息来加入频道,格式如下:JOIN
  • IRC服务器明文传输通常在6667端口监听,也会使用6660—6669端口。SSL加密传输在6697端口。

(2)僵尸网络是什么?僵尸网络通常用于干什么?

  • 僵尸网络是攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
  • 僵尸网络,是互联网上受到黑客集中控制的一群计算机,通常被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

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

  • 使用Wireshark打开botnet_pcap_file.dat,利用【ip.src == 172.16.134.191 && tcp.dstport == 6667】,因为IRC通过6667端口进行监听。从结果中可以找到五个IRC服务器,分别为:
    209.126.161.29
    66.33.65.58
    63.241.174.144
    217.199.175.10
    209.196.44.172

(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。

这一问实在是卡在了最初的起点,kali它为什么总连不上网,之前的几种方法都试了这次不管用了。能我解决了网络问题再战!!

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

  • 还好上一问没有影响到下面的过程。进入蜜罐的流量都被认为是攻击,使用如下指令查找端口并输出到1.txt中,结果可以看出查找到148个被攻击的端口。
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
/*cut -d是指定字段的分隔符;uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用;grep搜索获取昵称输出行;grep -v就是NOT指令,去除空行;wc计算行数。*/


  • 使用如下指令查找所有的可能连接的主机的IP地址,将连接IP地址输出到2.txt中,结果可以看出有165个主机可能被用于攻击蜜罐主机。awk -F就是指定分隔符,可指定一个或多个,print后面做字符串的拼接
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后面做字符串的拼接*/


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

  • 首先使用【snort -r botnet_pcap_file -c /etc/snort/snort.conf -K ascii】,发现大部分为TCP包,还有一部分UDP包。
  • 使用如下指令筛选蜜罐主机有响应的TCP端口,即SYN,ACK标志为1
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

结果可以看到以下端口:135(rpc),139(netbiosssn),25(smtp),445(smb),4899(radmin),80(http)

  • 同理筛选蜜罐主机有响应的UDP端口
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 

结果可以看到以下端口:137(netbios-ns)

接下来对端口依次进行分析:

  • UDP:137(netbios-ns)
    137端口是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态,因此访问这个端口肯定是NetBIOS查点。
  • 25,135
    利用【tcp.port135 || tcp.port25】筛选这两个端口,发现这两个端口只有连接,没有数据交互,应该是只对这两个端口进行了扫描
  • 80
    利用【ip.dst == 172.16.134.191 && tcp.dstport==80】筛选连接蜜罐主机80端口的数据包,首先发现大量与24.197.194.106相关的包,并且可以看到一条信息为“GET /NULL.ida?AAAAAAAAA...”的包,经查询是利用IIS缓冲区的IDA漏洞在攻击IIS服务器。

    然后是210.22.204.101访问80端口,可以看到一条信息为“GET /NULL.ida?CCCCCCC...”的包,与前面类似,应该也是进行缓冲区溢出攻击。

    接着访问80端口的是218.25.147.83,看到一条信息为“GET /NULL.ida?NNNNN...”的包,但这个不是缓冲区溢出攻击,经查找这是一个红色代码病毒。

    最后是68.169.174.108和192.130.71.66访问80端口,比较正常的访问。

    通过分析蜜罐主机80端口向外的数据包,发现响应均为一个iis服务器的默认页面,所以80端口的攻击均失败。
  • 139
    利用同样的筛选方法,139端口的连接大部分是普通连接,很多空会话,没有什么异常信息,可能只是SMB查点
  • 445
    利用同样的筛选方法,查询字符串可以发现PSEXESVC.EXE,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用

  • 4899
    该端口是远程控制工具Radmin的监听端口,不是木马但可能是攻击者攻击成功后装来方便控制。

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

1、实践三中wireshark捕不到包。
刚开始为了安全断掉了虚拟机的网络,连接网络后捕包成功。
2、实践四kali又连不上网了。
尝试了各种方法还是不行,再找找看有没有其他办法,或者它就自己突然好了也有可能。

4.实践总结

本周的分析好难,尤其是最后两个,做起来很吃力,虚心向大佬们学习。

参考文献

因特网中继聊天
IDA Pro使用教程
IIS缓冲区溢出
红色代码
IRC

posted @ 2020-04-29 14:31  1993Fxn  阅读(367)  评论(0编辑  收藏  举报