基于Snort的入侵检测系统

  
 
 
 
 
基于 Snort 的入侵检测系统
 
 
 
Snort,Apache,MySQL,PHP ACID 构建高级 IDS

第一章  入侵检测系统及 Snort 介绍
在当今的企业应用环境中,安全是所有网络面临的大问题。黑客和入侵者已成功的入侵了一些大公司的网络及网站。目前已经存在一些保护网络架构及通信安全的方法,例如防火墙、虚拟专用网( VPN )、数据加密等。入侵检测是最近几年出现的相对较新的网络安全技术。利用入侵检测技术,我们可以从已知的攻击类型中发现是否有人正在试图攻击你的网络或者主机。利用入侵监测系统收集的信息,我们可以加固自己的系统,及用作其他合法用途。目前市场中也有很多弱点检测工具,包括商品化的和开放源码形式的,可以用来评估网络中存在的不同类型的安全漏洞。
一个全面的安全系统包括很多种工具:
防火墙:用来阻止进入及走出网络的信息流。防火墙在商业化产品和开放源码产品中都有很多。最著名的商业化防火墙产品有 Checkpoint (http://www.checkpoint.com), Cisco (http://www.cisco.com) Netscreen(http://www.netscreen.com) 。最著名的开放源码防火墙是 Netfilter/Iptables(http://www.netfilter.org)
入侵检测系统( IDS ):用来发现是否有人正在侵入或者试图侵入你的网络。最著名的 IDS Snort, 可以在 http://www.snort.org 下载。
弱点评估工具:用来发现并堵住网络中的安全漏洞。弱点评估工具收集的信息可以指导我们设置恰当的防火墙规则,以挡住恶意的互联网用户。现在有许多弱点评估工具,比如 Nmap(http://www.nmap.org/) Nessus(http://www.nessus.org/).
以上这些工具可以配合使用,交互信息。一些产品将这些功能捆绑在一起,形成一个完整的系统。
 
Snort 是一个开放源码的网络入侵检测系统( NIDS , 可以免费得到。 NIDS 是用来检测网络上的信息流的入侵检测系统( IDS )。 IDS 也包括安装在特定的主机上并检测攻击目标是主机的行为的系统。 IDS 迄今为止还是一门相当新的技术,而 Snort IDS 中处于领先的地位。
   本书由入侵检测介绍及相关概念入手,你将学习如何安装及管理 Snort 以及与 Snort 协同工作的其他产品。这些产品包括 MySQL 数据库( http://www.mysql.org )、入侵数据库分析管理工具 ACID http://www.cert.org/kb/acid )。 Snort 能够将日志数据(例如告警和其他日志消息)记录到数据库中。 MySQL 用作存储所有这些数据的数据库引擎。利用 ACID Apache (http://www.apache.com)Web 服务器,我们可以分析这些数据。 Snort Apache MySQL ACID 的共同协作,使我们可以将入侵检测数据记录到数据库,然后用 web 界面察看和分析这些数据。
   此书的组织结构使读者能够跟着随后的章节一步一步的建立一个完整的入侵检测系统。安装及整合各种工具的步骤将在如下的章节逐步介绍:
   第二章将介绍编译及安装 Snort 的基本知识。在这一章中,你将能够用基本安装及默认规则建立一个能够工作的 IDS ,同时能够建立可以记录入侵活动的日志文件。
   第三章介绍 Snort 规则的有关知识, Snort 规则的组成及如何根据你的系统环境及需要建立自己的规则。建立良好的规则是构建入侵检测系统的关键,因此本章非常重要。本章同时也介绍 Snort 不同版本间规则的不同。
   第四章介绍 input output 插件。插件与 Snort 一同编译,并用来调整检测引擎的输入和输出部分。 Input 插件用在实际检测过程发生前准备好捕获的数据包。 Output 插件用来将数据数据格式化,以用于特定的目的,例如一种 output 插件可以将输出的检测信息转换成 SNMP trap 信息,而另外一种 output 插件可以将信息转换成数据库信息。这一章将详细介绍如何配置及使用这些插件。
   第五章介绍 MySQL 数据库与 Snort 的共同工作。 MySQL 插件使 Snort 能够将日志数据记录到数据库以便随后的分析。在这一章中,你将了解如何在 MySQL 中建立数据库,如何配置数据库插件,以及将日志数据记录到数据库中。
   第六章介绍 ACID, 以及如何用 ACID 取得你在第五章建立的数据库中的信息,并用 Apache 服务器显示它。 ACID 一种提供丰富的数据分析能力的重要工具,你可以用它来取得攻击频率、攻击类别、察看这些攻击方法的相关资源等等。 ACID PHP 脚本语言、图形显示库( GD library )和 PHPLOT( 一种用来绘制图表的工具 ) 来工作,可以分析 SQL 中的数据并绘制图表。
   第七章主要介绍可以和 Snort 一起工作的其他一些有用的工具。
 
   在读完此书后,你将建立一个完整的,具有多个组件的系统,如图 1-1 所示。
   在图中你可以看到, Snort 捕获并分析数据,然后用 output 插件将数据储存在 MySQL 数据库中。 Apache 服务器在 ACID,PHP GD library PHP 包的帮助下使连接到服务器的用户能够通过浏览器显示数据。用户可以在网页上应用不同的查询来分析、备份、删除数据或者显示图表。
   基本上,你可以将 Snort MySQL Apache PHP ACID GD 库以及 ACID 都安装到一台计算机上,而实际上在读完本书后,你可以建立一个类似于如图 1-2 所示得更加贴近实际应用的系统。
   在企业中,人们通常使用多个 Snort 探测器,在每个路由器或者防火墙后面都放置探测器。在这种情况下,你可以用一个集中的数据库来收集所有探测器的信息,并在这个数据库服务器上运行 Apache Web 服务器,如图 1-3 所示。
1. 1 什么是入侵检测?
入侵检测是指用来检测针对网络及主机的可疑活动的一系列技术和方法。入侵检测系统基本可以分为两大类:基于特征的入侵检测系统和异常行为检测系统。入侵者常具有用软件可以检测到的特征,如病毒。入侵检测系统将检测包含已知入侵行为特征或者异常于 IP 协议的数据包。基于一系列的特征及规则,入侵检测系统能够发现并记录可疑行为并产生告警。基于异常的入侵检测系统通常是分析数据包中协议头部的异常,在某些情况下这种方式要比基于特征的入侵检测系统要更好一些。通常情况下,入侵检测系统在网络上捕获数据包与规则比对或者检测其中的异常。 Snort 基本上是一个基于规则的 IDS, 但是 input 插件可以分析协议头部异常。
   Snort 的规则存储在文本文件中,并可以用文本编辑器修改。规则以类别分组。不同类别的规则存储在不同的文件中。最后,这些文件被一个叫做 snort.conf 的主配置文件引用。 Snort 在启动时读取这些规则,并建立内部数据结构或链表以用这些规则来捕获数据。发现入侵特征并利用规则捕获它们是一项具有技巧性的工作,因为在实时检测中你应用越多的规则,那么你将需要越多的处理能力,所以用尽量少的规则来捕获尽量多的特征是非常重要的。 Snort 已经预先定义了许多入侵检测规则,并且你可以自由添加自定义的规则。同时,你也可以移除一些内建规则以防止错误告警。
 
1 1 1 一些定义
   在详细了解入侵检测及 Snort 之前,你需要了解一些网络安全相关的定义,这些定义将在这本书的随后章节中重复应用。对这些名词的基本了解对于理解其他更加复杂的安全概念是非常必要的。
1.1.1.1  IDS
入侵检测系统或 IDS 是一种用来检测入侵行为的软件、硬件或者两者的结合。 Snort 是大众可以获得的开放源码的 IDS IDS 的实际能力依赖于组件的复杂度及精巧性。实体的 IDS 是硬件和软件的结合,很多公司可以提供及决方案。如前面提到的, IDS 可以采用特征分析技术、异常检测技术,或者两者同时应用。
   1 1 1 2 网络 IDS NIDS
   NIDS 是用来捕获在网络介质上传播的数据并与特征数据库比对的入侵检测系统。跟据数据包与特征数据库的匹配情况, IDS 产生告警或者将日志记录到文件或数据库中。 Snort 主要是作为 NIDS 来使用的。
1 1 1 3 主机 IDS HIDS
   面向主机的入侵检测系统或称 HIDS 作为一个代理安装在一台主机上,这种入侵检测系统可以分析系统及应用程序日志来检测入侵行为。其中一些 HIDS 是被动状态的,只有当某些事情发生了才会通知你,另外一些是主动状态的,可以嗅探网络中针对某一主机的通信状况并实时产生告警。
1 1 1 4 特征
   特征是数据包中包含信息的特点。特征用来检测一种或多种攻击行为。例如,目标是你的 web 服务的包中如果出现“ scripts/iisadmin ”,可能意味着一个入侵尝试。
   根据攻击行为本质的不同,特征数据可能会出现在数据包中的不同位置。例如,你可能会在 IP 包头、传输层头 (TCP UDP ) / 或应用层头或载荷中发现攻击特征。你将在本书的后面更多的了解攻击特征。
   通常 IDS 依靠特征来发现入侵行为。在发现新的入侵特征时,某些商业化的 IDS 需要从厂商那里得到更新的特征库。另外一些 IDS, 比如 Snort, 你可以自己更新特征库。
1 1 1 5 告警
   告警是任何一种对入侵行为的通知。当 IDS 检测到入侵者,它将用告警来通知安全管理员。告警的形式可以使弹出窗口、终端显示及发送 e-mail 等等。告警同时也被存储到日志文件或者数据库中,以便供安全专家察看。在本书的后面,你将得到关于告警的详细信息。
   Snort 的告警由 output 插件控制,并可以产生多种形式的报警。 Snort 也可以将同一个告警发送到不同的目标,例如,将告警发送到数据库的同时,产生 SNMP trap 信息。一些插件可以修改防火墙配置,使入侵者在防火墙或者路由器上被控制。
1 1 1 6 日志
   日志信息通常存放在文件中。默认情况下, Snort 将这些信息存放在 /var/log/snort 目录下,但是也可以在启动 Snort 时用命令行开关来改变这个目录。日志信息可以存储为文本格式或者二进制格式,二进制格式的文件可以供 Snort 或者 Tcpdump 随后访问,现在也有一个叫做 Barnyard 的新工具可以分析 Snort 产生的二进制日志文件。将日志存放为二进制文件可以有更高的效率,因为这种格式开销相对较低。将 Snort 应用在高速网络环境中,将日志存放为二进制文件是非常必要的。
1 1 1 7 误告警
   误告警是错误的将非入侵行为报告为入侵行为的告警。例如,内部主机的错误配置有时会产生触发规则,从而产生误告警。某些路由器,例如 Linksys 家用路由器,会产生一些信息,导致 UpnP 相关的告警。为了避免误告警,你要修改和调试默认规则,在某些情况下,你也许需要停止一些规则的使用,以避免误告警。
1 1 1 8 探测器
   运行入侵检测系统的机器也叫做探测器,因为它用来“探测”网络中的活动。在本书的后面部分,如果用到探测器这个词,那么它是指运行 Snort 的计算机或者其他设备。
 
1.1.2     IDS 应该放在网络中的什么位置?
根据你的网络拓扑结构的不同,你应该在一个或多个位置放置 IDS IDS 放置的位置也要取决于你想检测的入侵行为的种类:内部入侵、外部入侵,或者两个都要检测。例如,如果你想仅仅检测外部入侵活动,并且你只有一个路由器接到 Internet ,那么放置 IDS 的最佳位置也许紧靠着路由器或者防火墙的内部网络接口。如果你有多条接入 Internet 的借口,也许你希望在每个入口处放置一台 IDS 。有时你也希望能够检测来自内部的威胁,那么可以在每个网段都放置一台 IDS
在很多情况下,你并不需要在所有网段都实施入侵检测,你可以仅仅在敏感区域放置 IDS 。要知道,越多的 IDS 就意味着越多的工作量和维护费用。因此 IDS 的部署要取决于你的安全策略,也就是你想防范什么样的入侵。图 1-4 表示通常放置 IDS 的典型位置。
正如你在图 1-4 中看到的那样,通常你应该在每个路由器和防火墙的后面放置 IDS, 在你的网络中包含非军事化区 (DMZ) 的情况下,在 DMZ 中也可以放置 IDS 。要注意的是, DMZ 中的 IDS 告警策略不应像专用网络中那样严格。
1 1 3 蜜罐 (Honey Pots)
   蜜罐是一种以故意暴露已知弱点来愚弄黑客的系统。当黑客发现蜜罐时,通常会在它上面耗费一些时间,在此期间,你可以记录黑客的行为,从中找出黑客的活动情况和所使用的技术。一旦你了解了这些技术,你可以利用你得到的信息来加固你真正的服务器。
   现在有很多种构建和放置蜜罐的方法。在蜜罐上应该运行一些公开的服务,这些服务包括 Telnet 服务 ( 端口 23) HTTP 服务(端口 80 ), FTP 服务(端口 21 )等等。你应该将蜜罐放在你紧靠你应用服务器的某个位置,这样黑客容易错误的将蜜罐当成真正的应用服务器。例如,如果你的应用服务器的 IP 地址势 192.168.10.21 192.168.10.23 ,那么你可以将你的蜜罐的 IP 地址设为 192.168.10.22 ,同时设置你的防火墙和路由器,使黑客对服务器某些端口的访问重定向到蜜罐上面,那么入侵者就会把蜜罐当成是真正的服务器。你应当仔细的考虑告警产生机制,以使你的蜜罐受到威胁的时候可以立刻得到信息。将日志存放在其他机器上是个好主意,这样即使黑客侵入了蜜罐,也无法删除日志文件。
   那么什么时候你应该安装蜜罐呢?那要根据你的情况来决定:
如果你的机构有足够的资源用来追踪黑客,那么你应该建立一个蜜罐。所谓资源包括硬件以及人力。如果你没有足够的资源,那么安置蜜罐就没有什么必要,要知道获取你不会用到的信息是没有什么意义的。
仅仅当你可以以某种方式来用蜜罐取得的信息的时候,蜜罐才是有用的。
如果你想收集有关行为的证据来起诉黑客,那么你也可以用到蜜罐。
理想的情况下,蜜罐应该看起来像一个真实的系统,你可以制作一些假的数据文件,假的账户等等,使黑客信以为真,这样才能使黑客在上面逗留足够长的时间,从而你可以记录更多的活动。
   你可以在蜜罐项目网站 http://project.honeynet.org/ 上面取得更多的信息,可以找到一些你感兴趣的资料,是你能够对蜜罐有进一步的了解。你也可以去另外一个蜜罐网站 http://www.citi.umich.edu/u/provos/honeyd/ 了解他们的开放源码的密罐的相关信息。其他一些可以取得更多信息的地方是:
南佛罗里达蜜罐项目网站: http://www.sfhn.net
1 1 4 安全区域和信任等级
   一段时间以前,人们将网络划分为两大类区域:安全区域和非安全区域。某些时候这种划分也就意味着网络是在路由器或防火墙的内部或者外部。现在典型的网络通常根据不同的安全策略等级和信任等级划分为多个区域。例如,公司的财务部门拥有非常高的安全等级,在这个区域中仅仅允许对少数服务的操作,不允许 Internet 服务;而在 DMZ 或称非军事化区中,网络是向 Internet 开放的,此区域的信任等级与财务部门迥然不同。
   根据信任等级和安全策略的不同,你应该在不同的区域中应用不同的入侵检测规则和策略。对安全等级要求不同的网络在物理上是分离的。你可以在对安全要求不同的每个区域都安装一套具有不同规则的 IDS 来检测可疑的网络活动。例如,在财务部门的网络中没有 web 服务器,指向 80 端口的数据包将被纪录为入侵行为,而这样的规则不能用在 DMZ 中,因为 DMZ 中的 web 服务器是对每个人开放的。
1.2          IDS 策略
在你在网络中安装 IDS 之前,你必须有一个能够检测入侵者并做出相应动作的策略。一个策略必须能够指示一系列的规则以及这些规则如何应用。 IDS 策略应当包含以下的内容,并且你可以根据你的要求添加更多的内容:
谁来察看 IDS 信息? IDS 提供给你对入侵行为产生告警信息的机制。告警系统或者是简单的文本文件形式,或者更加复杂,也许集成到类似于 HpOpenView 这样的网管软件或 MySQL 这样的数据库中。在你的系统中需要有人负责来监视入侵行为和制定策略。入侵行为可以通过弹出窗口或 web 页面实时监视。在这种情况下,操作者必须要了解告警的意义所在以及告警信息中事件的安全等级。
谁来管理 IDS ,维护日志等等?对于所有的系统,都需要建立一个日常维护体制, IDS 也一样。
谁来处理安全事件?如果没有安全事件处理机制,也就根本没有必要安装 IDS 。根据安全事件的安全等级的需要,某些情况可能需要政府机构的介入。
事件处理程序是什么样的?策略应当规定一些事件响应机制,根据涉及安全等级的高低向不同的管理层汇报。
例行报告:总结前一天、上一周、或者上一个月所发生的相关事情。
特征库的升级:黑客总是不断的创造新的攻击方法。如果 IDS 了解攻击的特征,就能够检测到攻击。 Snort 规则用攻击特征库来检测攻击。因为攻击的特征经常在改变,你也必须为你的 IDS 规则更新特征库。你可以定期直接在 Snort 网站上取得特征库的更新,也可以在一种新的攻击方式被发现时自己更新。
每个项目都需要文档系统。 IDS 策略应当描述当攻击被检测到时应当记录什么样的文档。文档可以包括简单的日志或者对入侵行为的完整纪录。你也可以采用多种方式来记录数据。例行报告也属于文档的组成部分。
基于你的 IDS 策略,你可以清楚的知道你的网络到底需要多少 IDS 探测器和其他资源,更精确的计算 IDS 的成本和费用。
 
1.3          Snort 的部件
Snort 在逻辑上可以分成多个部件,这些部件共同工作,来检测特定的功绩,并产生符合特定要求的输出格式。一个基于 Snort IDS 包含下面的主要部件:
包解码器
预处理器
探测引擎
日志和告警系统
输出模块
1-5 显示了这些部件的关系。任何来自 Internet 的包到了包解码器,然后被送到输出模块,在这里或者被丢弃,或者产生日志或告警。
   在这个部分中,我们将简要介绍这些部件。在你通读这本书并建立一些规则后,你将对这些部件以及它们之间怎样相互作用更加熟悉。
1 3 1 包解码器
   包解码器从不同的网络接口中获取包并准备预处理或者送到探测引擎。网络接口可能是以太网、 SLIP PPP 等等。
1 3 2 预处理器
   预处理器是 Snort 在探测引擎做出一些操作来发现数据包是否用来入侵之前排列或者修改数据包的组件或者插件。一些预处理器也可以通过发现数据包头部异常来执行一些探测工作,并产生告警。预处理器的工作对于任何 IDS 的探测引擎依据规则分析数据都是非常重要的。黑客有很多愚弄 IDS 的技术。比如,你建立这样一条规则,用来在 HTTP 包中发现包含“ scripts/iisadmin ”的入侵特征,如果你将字符匹配过于严格的限制,那么黑客只需要做一些细小的变通,就能很轻易的耍弄你。例如:
   scripts/./iisadmin
   scripts/examples/../iisadmin
   scripts/./iisadmin
   为了使问题复杂化,黑客也会在字符中嵌入 16 URI 字符或者 Unicode 字符,这对 web 服务器来说是同样合法的,要注意 web 服务器能够理解所有这些字符,并将它们处理成为类似于“ scripts/iisadmin ”这样的字符。如果 IDS 严格匹配某一字符串,就可能不会探测到这种类型的攻击。预处理器可以将字符重新排列,以使 IDS 能够探测得到。
   预处理器也或来包分片的组装。当一个大的数据流传向主机的时候,通常数据包会被分割。例如,以太网中默认的最大数据包大小是 1500 字节,这个数值由网络接口的 MTU(Maximus Transfer Unit) 值来确定。这就意味着如果你发送的数据如果大于 1500 字节,它将会被分割成多个数据包,以使每个数据包的大小都小于或等于 1500 字节。接收方系统能够将这些小的分片重新组装,还原成原始的数据包。在 IDS 上,在可以对数据包进行特征分析之前,也需要重新组装数据包。例如,可能入侵特征的一般在一个数据包分片上,而另外一半在别的分片上面。为了使探测引擎能够准确的分析特征,就需要组装所有的分片。黑客也用数据分片来对抗入侵检测系统。
   预处理器用来对抗这些攻击。 Snort 的预处理器能够组装数据分片,解码 HTTP URI, 重新组装 TCP 流等等。这些功能是 IDS 中非常重要的部分。
1 3 3 探测引擎
   探测引擎是 Snort 中最重要的部分,它的作用是探测数据包中是否包含着入侵行为。探测引擎通过 Snort 规则来达到目的。规则被读入到内部的数据结构或者链表中,并与所有的数据包比对。如果一个数据包与某一规则匹配,就会有相应的动作(记录日志或告警等)产生,否则数据包就会被丢弃。
探测引擎是 Snort 中时间相关的组件,根据你的机器的处理能力和你所定义的规则的多少,探测引擎会消耗不同的时间来对不同的数据包做出响应。在 Snort 工作在 NIDS 模式的时候,如果网络中数据流量过大,有时可能会因为来不及响应而丢弃一些包。探测引擎的负载取决于以下因素:
规则的数量
运行 Snort 的机器的处理能力
运行 Snort 的机器的内部总线速度
网络的负载
当你在设计 NIDS 的时候,你应该考虑所有的相关因素。
你需要了解探测系统可以剖析数据包并把规则应用在高的不同部分,这些部分可能是:
包的 IP
包的传输层头,包括 TCP UDP 或其他传输层协议头,也可以是 ICMP 头。
应用层头。应用层头包括 DNS 头, FTP 头, SNMP 头, SMTP 头等等还有很多。有时你可以用一些间接的方法来获得应用头信息,比如位偏移等等。
包载荷。这意味着你可以建立这样一种规则,用探测引擎来寻找传输的数据中的字符。
在不同版本的 Snort 中,探测引擎由不同的工作方式。在所有 1.x 版的 Snort 中,一旦探测引擎将数据包匹配到某个规则的时候,就会停止进一步的过程,然后根据规则产生告警或者记录日志,这就意味着即使如果包匹配多条规则,仅仅第一个规则被应用,并不再进行其他的匹配,这样做有好处,但是除了下面的情况:如果包匹配的第一个规则是低优先级的,就只产生低优先级的告警,即使这个包也匹配高优先级的后面其他规则。这个问题在第二版的 Snort 中得到了修正:包先对所有的规则进行匹配,然后再产生告警,在对所有的规则进行匹配之后,选择最高优先级的规则告警。
2 Snort 的探测引擎是完全重写的,从而比先前版本的快了许多。在写这本书的时候, Snort 2.0 还没有开始发行,早些时候的测试显示新的引擎比老的引擎要快将近 18 倍。
1 3 4 日志和告警系统
   依据在包中所找到的东西,一个包可以用来记录行为或者产生告警。日志可以存为简单的文本文件、 tcpdump 格式文件或者其他的形式。在默认情况下,所有的日志文件都存放在 /var/log/snort 目录中。你可以在命令行中用 -l 选项来修改日志和告警存放的位置。更多的命令行选项将在下一章中讨论。这些选项可以用来修改日志和告警的类型和细节等等。
1 3 5 输出模块
   输出模块或插件可以根据你指定的保存日志和告警系统产生的输出信息的方式来执行不同的动作。基本上这些模块用来控制日志和告警系统产生的输出信息的格式。根据配置,输出模块可以做下列事情:
简单的在 /var/log/snort/alerts 文件或其他文件中记录日志
发送 SNMP trap
将日志记录到类似于 MySQL Oracle 的数据库中。你将在这本书的后面了解更多的关于使用 MySQL 的信息
产生 XML 输出
修改路由其或者防火墙的配置
Windows 主机发送 SMB 消息
其他一些工具可以用来发送如 e-mail 信息或者 web 页面浏览等格式的告警,在后面的章节中你将了解更多的信息。表 1-1 IDS 各种部件的汇总。
1-1 IDS 的部件
名称
描述
包解码器
为处理过程准备包
预处理器或输入插件
分析协议头部,规格化头部,探测头部异常,包分片组装, TCP 流组装
探测引擎
将包与规则比对
日志和告警系统
产生告警和日志
输出模块
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值