• 2018-2019-2 20189206 《密码与安全新技术专题》 第六次作业


    学号 2018-2019-2 《密码与安全新技术专题》第六次作业

    课程:《密码与安全新技术专题》

    班级: 1892

    姓名: 王子榛

    学号:20189206

    上课教师:王志强

    上课日期:2019年5月7日

    1.本次讲座的学习总结

    基本概念

    • 安全漏洞

    安全漏洞是指受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。漏洞是硬件软件或使用策略上的缺陷,他们会使计算机遭受病毒和黑客攻击。

    是指信息系统在设计、实现或者运行管理过程中存在的缺陷或不足,从而使攻击者能够在未授权的情况下利用这些缺陷破坏系统的安全策略。

    安全漏洞时网络攻击和防御的关键点,针对安全漏洞,一方面可以进行攻击(根据目标存在的漏洞,编写攻击程序);另一方面可以进行防御(提前挖掘出漏洞,并进行修复)。网络安全事件层出不穷的根本原因在于安全漏洞的存在。

    国家信息安全漏洞

    • 常见的安全漏洞

    常见漏洞挖掘技术

    • 手工测试

      • 定义:由测试人员手工分析和测试被测目标,发现漏洞的过程,是最原始的漏洞挖掘方法。
      • 优点:手工测试结合了人的主观能动性,可以针对性测试,挖掘漏洞
      • 缺点:在大规模漏洞发现或无规律可循的条件下,较难进行
    • 补丁对比

      • 定义:补丁比对技术主要用于黑客或竞争对手找出软件发布者已修正但未尚公开的漏洞,是黑客利用漏洞前经常使用的技术手段。
      • 优点:发现速度块
      • 缺点:只能发现已知漏洞,对于未知漏洞难以发现
    • 程序分析 (包含静态和动态程序分析)

      • 定义::是指在不运行计算机程序的条件下,通过词法分析、语法分析、语义分析、控制流分析、污点分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性等指标的一种代码分析技术。
      • 优点:漏洞检测范围大,覆盖率达100%,自动化程度高
      • 缺点:存在漏报和误报的可能性
    • 二进制审核

      • 定义:源代码不可得,通过逆向获取二进制代码,在二进制代码层次上进行安全评估
      • 存在问题:逆向会导致信息丢失,理解困难,甚至引入逻辑错误
      • 二进制及编辑工具: IDA Pro、Ollydbg、UltraEdit、Hex Workshop以及WinHex
    • 模糊测试

      • 定义:通过向被测目标输入大量的畸形数据并监测其异常来发现漏洞
      • 关键:测试用例构造,自动化
      • 优点:无需源码、误报低、自动化程度高
      • 缺点:覆盖率低
      • 工具:Peach、Sulley、Autodafe、SPIKE等

    程序分析

    基于静态分析的漏洞挖掘技术:

    所用工具主要包括:

    • 数据流分析:Foritify SCA、Coverity Pervent、FindBugs等
    • 污点分析:Pixy、TAJ
    • 符号执行:Clang、KLEE
    • 模型检测:BLAST、MAGIC、MOPS

    基于动态程序分析的漏洞挖掘技术:

    定义:在运行计算机程序的条件下,验证代码是否满足规范性、安全性等指标的一种代码分析技术。一般通过插桩技术分析程序的异常行为。

    插桩技术:插桩技术是指在保证被测程序逻辑完整性的基础上在程序的关键位置插入一些“桩”,即加入一些测试代码,然后执行插桩后的程序,通过“桩”的执行获取程序的控制流和数据流信息进而分析程序的异常行为

    工具:Android: Xposed

    漏洞挖掘技术进展

    漏洞挖掘技术的研究进展向深度学习方向发展

    其研究进展为

    从图中可以看到,主要应用场景在:二进制程序函数识别、函数相似性检测、测试输入生成、测试输入筛选、路径约束求解、漏洞程序筛选、源代码漏洞点预测。

    二进制程序函数识别

    二进制程序函数识别是二进制分析的基础,对于软件漏洞分析与修复,甚至恶意软件检测、协议逆向等都至关重要。由于二进制代码缺少高级语言程序中的信息,函数的识别往往比较困难,现有的反汇编分析工具具有识别正确率低的缺陷。

    之后Shin等用循环神经网络算法改进了ByteWeight方案的性能,在模型训练时间上有了数量级上的提升,并取得了更高的准确率。

    测试用例生成

    测试用例(Test Case)是将软件测试的行为活动做一个科学化的组织归纳,目的是能够将软件测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的软件,测试用例是不同的。不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不同的趋势。

    在软件漏洞挖掘中,构造代码覆盖率高或脆弱性导向型的测试输入能提高漏洞挖掘的效率和针对性,利用机器学习知道生成更高质量的测试输入样本。Godefroid等首次把模糊测试中的高结构化样本生成问题转换成了NLP领域的文本生成问题。接下来不断提出了深度神经网络指导磨合测试输入样本。

    路径约束求解

    模糊测试,特别是代码覆盖率指导的模糊测试,侧重于筛选可以覆盖新路径的样本为种子文件,但对种子文件变异时并没有充分利用程序数据流等信息指导变异,这使得变异盲目低效,生成样本冗余。

    具备路径约束求解能力是符号执行比模糊测试等漏洞挖掘技术更先进的体现,也使得符号执行在理论上具备了系统性探索程序执行路径的能力。

    但约束求解也存在着路径爆炸,效率较低等问题。Chen等提出了Angora,采用污点追踪测试输入中影响条件分支的字节,然后使用梯度下降的方式对变异后生成的路径约束进行求解。

    漏洞挖掘示例

    路由器协议漏洞挖掘

    选择路由器协议漏洞挖掘的原因是,路由器协议存在着大量漏洞,下图所示为路由器的漏洞挖掘系统架构

    针对于SNMP协议,测试目标如下

    结果发现,路由器协议漏洞如下:

    • 远程向路由器161端口发送大量畸形SNMP Get/Set请求报文,其中畸形的数据包中含长格式化字符串“%s...”的SNMPv1 GetRequest报文,Cisco路由器和华为路由器的进程Agent出现CPU使用率异常,分别为98%和100%。
    • 当远程发送SNMP空数据包时,Cisco路由器和华为路由器的CPU使 用率出现异常,但远小于100%,发生“轻度拒绝服务”。会导致路由器产生一定的丢包和网络的不稳定,对网络的性能造成影响。
    • 当远程发送一个畸形ASN.1/BER编码(超长字符串)的SNMP数据包时 ,wireshark捕获并解析数据包,导致wireshark 1.4等多个版本栈溢出, 导致空指针引用并崩溃。
    • 当向SNMP协议端口(161)远程发送一个使用“x”等字符构造的畸形 UDP数据包,科来网络分析系统7.2.1及以前版本均会因边界条件检查不 严导致崩溃。该漏洞在中国国家信息安全漏洞库中都有记载。

    NFC漏洞挖掘

    随着NFC手机的流行和推广,这种近距离双向高频无线通信技术,能够在移动终端、智能标签等设备间进行非接触式数据交换,同时NFC技术具有通信距离短、一次只和一台设备连接、硬件安全模块加密等特点,具有较好的保密性和安全性。

    漏洞挖掘系统架构如下:

    测试过程如下

    测试结果发现了诸多漏洞,有的漏洞是设计缺陷,可能会影响用户的使用体验,但是不会造成严重问题,有的漏洞则会造成拒绝服务,导致系统崩溃等问题。

    • NFC服务拒绝服务
    • 打开手电筒
    • 打开蓝牙
    • 打开WiFi
    • 应用程序拒绝服务
    • 屏幕亮度漏洞等。

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

    • 问题1:黑盒测试
    • 问题1解决方案:黑盒测试又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。测试人员一般把被测程序当作一个黑盒子。

    从图中可以直接看出来,黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。而白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。  

    黑盒测试又称为功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。测试人员一般把被测程序当作一个黑盒子。

    在漏洞挖掘中,要熟悉自动化黑盒测试和手动黑盒测试

    • 【自动化黑盒测试】测试规模和范围非常大;扫描器/模糊测试器都是非常好的工具,而且也有很多现成的工具可以使用,但是很多复杂的漏洞它们是发现不了的;
    • 【手动黑盒测试】如果你触发了一个漏洞,那么你就找到了一个漏洞,这种场景下的假阳性会比较低;这种方法比代码审计要节省时间,但是测试规模和范围会受到限制。除此之外,测试效果还会受到研究人员的经验以及想象力的限制;

    这是一种在不考虑代码本身的情况下寻找程序漏洞的方法,它最主要是侧重于跟应用程序的交互方面。在这种方法中,我们需要从程序的用户接口/界面发动攻击,并观察该程序的响应情况,而无需分析应用程序的内部结构或代码。而手动黑盒测试一般是我在拿到一个待测Web应用时最先采用的测试方法,因为这种方法可以帮助我迅速对测试目标的整体情况有一个大概的认识。

    自动化黑盒测试的测试规模和范围一般来说都比较合适。一般来说,我们在进行其他测试方法(例如手动测试)的过程中,我们可以设置一个模糊测试器/扫描器并让它们在后台自动进行漏洞扫描。不过在漏洞报告生成之后,别忘了对扫描结果进行检查和分析以避免假阳性或漏洞重复率过高,不过具体情况还得取决于你所使用的技术和工具。

    • 问题2:什么是FUZZ方法
    • 问题2解决方案:

    Fuzz这个名词来自于Professor Barton Miller。在1989年一个风雨交加的夜晚,他登陆一台自己的主机,不知道怎么回事,信号通过猫传到主机上,雷电一闪,把里面的高位变低位,低位至高位了,结果到了主机以后改变了。他突发奇想,把这种方式作为一种测试的方式来做。

    那么什么是Fuzz Test就是用大量的测试用例一个一个试,尽可能多得找出有可能出问题的地方

    常用的Fuzz工具,一般会包含4个部分:

    • Generate lots of malformed data as test cases,要生成大量的测试用例。这个测试用力是malformed的,一个软件首先要找到输入点,然后把数据丢进去,这个数据有可能是一个文件,有可能是一个数据包,有可能是测试表里面的一个项,有可能是临时文件里面的一个东西,总之是一种数据,要定义malformed这种非正常的数据。

    • Drop the test cases into product,把它丢进去,看这个产品怎么反应。

    • Monitor and log any crash/exception triggered by malicious input.

    • Review the test log, investigated deeply.

    3.本次讲座的学习感悟、思考等

    通过王志强老师的讲解我们对漏洞挖掘有了一个初步的了解,同时,课上老师展示的漏洞攻击的小视频也可以看出,漏洞挖掘的重要性,漏洞就像是“兵家必争之地”,不仅仅安全工作人员需要测试找出系统的漏洞,同时漏洞也是黑客们的主要攻击目标,一个系统漏洞可能导致的威胁是很大的,所以,不断改进漏洞挖掘技术,大规模大范围的漏洞挖掘仅仅靠手工工作是远远不够的,可以看到结合机器学习的漏洞挖掘技术正是这几年的研究方向,提高漏洞识别的准确性和提高速度,是网络攻防的任务所在。

    4.最新研究现状

    4.1 Augur: Internet-Wide Detection of Connectivity Disruptions

    • 会议名称:IEEE 2017 IEEE Symposium on Security and Privacy (SP)
    • 作者:Paul Pearcey, Roya Ensafix, Frank Liy, Nick Feamsterx, Vern Paxsony
    • 论文题目:Augur:互联网范围的连接中断检测

    互联网审查实践的规模和多样性使得难以精确监控审查的地点,时间和方式,以及审查的内容。执行测量的潜在风险使这个问题更具挑战性。因此,许多关于审查制度的报道开始和结束只有少数几个有利位置的轶事或短期研究。

    文章寻求持续监控有关互联网可达性的信息,以捕捉跨区域和ISP的审查的开始或终止。为了实现这一目标,引入了Augur —— 一种利用TCP / IP侧通道测量两个互联网位置之间可达性的方法和附带系统,而无需直接控制任一位置的测量有利位置。使用这些辅助通道,结合通过不涉及个人用户来确保安全性的技术,我们开发可扩展的,统计上可靠的方法来推断网络层过滤,并实现能够执行全局审查的连续监视的相应系统。我们对17个天内近180个国家的互联网范围内的中断测量结果进行了测试,以反映已被频繁封锁的网站;我们还确定了连接中断最为普遍的国家。

    为了扰乱路径两端的IP ID值,测量机器将TCP SYN数据包发送到一个主机,该站点; TCP SYN数据包携带第二台机器(反射器)的(欺骗性)源IP地址。 我们称之为注射。 如果没有进行过滤,从测量机器到站点的SYN数据包将从站点到反射器引出SYN-ACK,这反过来会引起从反射器到站点的RST。 当反射器向站点发送RST数据包时,它使用新的IP ID。如果反射器基于单个计数器生成数据包的IP ID值,则测量机器可以观察反射器是否生成带有后续探测的RST数据包,因为 IP ID计数器将增加2。 图1显示了“无方向阻塞”方案中的此过程。

    假设过滤发生在站点和反射器之间的路径上(即图1中所示的另外两种情况之一)。将阻塞表示为从站点到反射器的路径,作为入站阻塞。在入站阻止的情况下,站点的SYN-ACK数据包将不会到达原点,从而阻止反射器处的预期IP ID增量。在没有其他流量的情况下,IP ID计数器将递增1。在图1的第二部分中展示了这一点。

    实验中每个反射器的IP ID加速概率的CDF。

    全球热图,显示在世界各国为任何反射器过滤的站点百分比。 中国的平均过滤量最高,5%的可衡量站点由国内的解析器过滤。

    4.2 Counter-RAPTOR: Safeguarding Tor Against Active Routing Attacks

    • 会议名称:IEEE 2017 IEEE Symposium on Security and Privacy (SP)
    • 作者:Yixin Sun, Anne Edmundson, Nick Feamster, Mung Chiang, Prateek Mittal
    • 论文题目:Counter-RAPTOR:保护Tor免受主动路由攻击

    Tor(The Onion Router)是第二代洋葱路由(onion routing)的一种实现,用户通过Tor可以在因特网上进行匿名交流。Tor专门防范流量过滤、嗅探分析,让用户免受其害。最初该项目由美国海军研究实验室赞助。2004年后期,Tor成为电子前哨基金会的一个项目。

    Tor易受网络级攻击者的攻击,他们可以观察通信的两端以对用户进行去匿名化。最近的工作表明Tor很容易受到先前未知的主动BGP路由攻击(称为RAPTOR攻击)的攻击,这些攻击将Tor用户暴露给更多网络级别的攻击者。本文旨在减轻和检测对Tor的这种主动路由攻击。首先,提出了一个关于Tor网络对主动BGP前缀攻击的弹性的新测量研究。具有高Tor带宽的AS对攻击的弹性可能低于其他AS。其次,提出了一种新的Tor保护继电器选择算法,该算法结合了继电器的弹性以主动减轻这种攻击。证明该算法成功地将Tor客户端的安全性平均提高了36%(某些客户端高达166%)。最后,构建了一个实时BGP监控系统,可以通过执行AS原点检查和新颖的检测分析来实时检测Tor网络上的路由异常。我们的监控系统成功检测到模拟攻击,模拟攻击是在多种已知攻击类型以及真实世界的劫持攻击之后建模的,同时具有较低的误报率。

    下图表示了与Tor相关的AS的劫持恢复力:

    每个AS的劫持恢复能力和相应的带宽:

    劫持不同客户端的顶级带宽AS的恢复能力:

    在这项工作中,提出了主动和被动的对策,以保护Tor免受主动BGP路由攻击。首先,评估了Tor网络目前对劫持和拦截攻击的弹性状态。观察到一些具有高Tor带宽的AS具有相对低的弹性。接下来,提出了一种新的Tor保护中继选择算法,可以主动减轻路由攻击。该算法成功地增加了Tor客户端对前缀劫持攻击具有弹性的可能性。最后,提出了一个实时监控系统,该系统使用多种新的检测机制来提醒用户实时发生潜在的劫持攻击。对监控系统进行了评估,发现它能够检测出真实世界攻击后模拟的模拟攻击,以及真正的劫持攻击(由我们执行),误报率可以忽略不计。总的来说,文章工作是第一个主动减轻Tor上的主动路由攻击的工作,也是第一个为Tor量身定制的实时监控系统。
    Addition

    4.3 Helping Johnny to Analyze Malware

    • 会议名称:2016 IEEE Symposium on Security and Privacy
    • 作者:Khaled Yakdan, Sergej Dechand, Elmar Gerhards-Padilla, Matthew Smith
    • 论文题目:帮助Johnny分析恶意软件

    恶意软件分析是计算机安全的重要任务;它提供了必要的理解,以设计有效的对策和缓解策略。当前恶意软件的复杂程度和复杂程度继续显着发展,正如最近发现的“Regin”恶意软件系列引人注目地说明的那样。这种复杂性使得手动恶意软件逆向工程的繁琐且耗时的任务变得更加困难和具有挑战性。通过使分析人员能够推断二进制代码的高级,更抽象,反编译可以加速这一过程。虽然已经取得了重大进展,但是现有的反编译器仍然会产生非常复杂和难以理解的代码,恶意软件分析师仍然经常回到分析汇编代码。

    在本文中,我们提出了几个保留语义的代码转换,使反编译代码更具可读性,从而帮助恶意软件分析师理解和对抗恶意软件。我们已将优化实现为学术反编译器DREAM的扩展。为了评估我们的方法,我们进行了第一次用户研究,以测量反编译器的恶意软件分析质量。我们的研究包括基于我们从独立恶意软件专家获得的真实恶意软件样本的6个分析任务。我们评估了三个反编译器:领先的行业反编译器Hex-Rays,最先进的学术反编译器DREAM,以及我们的可用性优化反编译器DREAM ++。结果表明,我们的可读性改进对我们的参与者分析恶意软件样本的程度有显着影响。 DREAM ++显着优于Hex-Rays和DREAM。与使用DREAM相比,使用DREAM ++参与者解决了比使用Hex-Rays和2倍多任务时多3倍的任务。

    平衡反编译器和难度级别的顺序。 每个水平序列中的节点表示由一个参与者执行的任务。 字母表示用于任务的反编译器,颜色表示任务难度级别:中(黑色)或硬(红色)。

    首先,本文创建了许多新颖的可读性代码转换,以提高恶意软件分析的反编译代码的质量。转换简化了程序表达式和控制流程。 它们还根据变量和常量的上下文为变量和常量指定有意义的名称。 其次,通过该领域的第一个用户研究验证了改进,包括学生和专业恶意软件分析师。 结果清楚地表明,本文的反编译方法提供了重大改进,DREAM ++优于DREAM和HexRays。

    4.4 LAVA: Large-scale Automated Vulnerability Addition

    • 会议名称:2016 IEEE Symposium on Security and Privacy
    • 作者:Brendan Dolan-Gavitt, Patrick Hulin, Engin Kirda, Tim Leek, Andrea Mambretti,
    • 论文题目:LAVA:大规模自动化漏洞添加

    长期以来,缺乏用于评估工具和技术的地面实体语料库阻碍了自动化漏洞发现的工作。缺乏基本事实使得工具的作者和用户无法测量诸如未命中和误报率等基本量。在本文中提出了一种新的动态污点分析技术LAVA,它通过快速自动地将大量实际错误注入程序源代码来生成地面真实语料库。每个LAVA错误都伴随着一个触发它的输入,而普通输入则极不可能这样做。这些漏洞是合成的,但我们认为,这些漏洞仍然是现实的,因为它们深深嵌入到程序中并由实际输入触发。使用LAVA,我们在八个真实世界的程序中注入了数千个错误,包括bash,tshark和GNU coreutils。在初步评估中,我们发现一个突出的模糊器和基于符号执行的错误查找器能够找到一些但不是所有注入LAVA的错误,并且有趣的模式和病理在其性能中已经很明显。我们的工作构成了按需生成大型groundtruth漏洞语料库的方法的基础,可以进行严格的工具评估并为工具开发人员提供高质量的目标。

    LAVA实施架构。 PANDA和Clang用于执行动态污点分析,将潜在的错误注入识别为DUA攻击点对。其中每个都通过Clang执行的相应源代码更改进行验证。 最后,针对目标输入更改测试每个潜在的错误二进制文件,以确定是否实际导致缓冲区溢出。

    在LAVA-M语料库中发现的错误

    在本文中介绍了LAVA,这是一个可以快速将大量实际错误注入C程序的全自动系统。 LAVA已被用于向开源Linux C程序中引入超过4000个实际缓冲区溢出,这些程序包含多达200万行代码。我们使用LAVA语料库来评估最先发现的bug查找工具的检测能力。基于污点的措施用于识别用于创建新漏洞的攻击者控制数据的LAVA功能强大,可用于注入许多不同的漏洞,但可能存在基本限制; LAVA不会很快将逻辑错误注入程序。尽管如此,LAVA已准备好立即用作针对任务关键代码中仍然丰富的严重漏洞类别的现实地面实况漏洞的按需来源。

    4.5 Talos: Neutralizing Vulnerabilities with Security Workarounds for Rapid Response

    • 会议名称:2016 IEEE Symposium on Security and Privacy
    • 作者:Zhen Huang Mariana D’Angelo Dhaval Miyani David Lie
    • 论文题目:Talos:通过安全解决方案中和漏洞以实现快速响应

    在发现漏洞和修补程序问题之间经常会有相当长的延迟。缓解此漏洞窗口的一种方法是使用配置解决方法,以防止以某些功能丢失为代价执行易受攻击的代码 - 但只有在可用时才会执行。由于应用程序配置并非专门用于缓解软件漏洞,发现它们仅覆盖了25.2%的漏洞。为了最大限度地减少补丁延迟漏洞并解决配置解决方法的局限性,本文提出了快速响应安全解决方案(SWRR),旨在以及时、安全和不引人注目的方式消除安全漏洞。与配置变通方法类似,SWRR通过防止以某些功能丢失为代价执行易受攻击的代码来中和漏洞。但是,关键的区别在于SWRR在应用程序中使用现有的错误处理代码,这使得它们能够以最少的应用程序知识和最少的开发人员工作进行机械插入。这使SWRR能够实现高覆盖率,同时仍然快速且易于部署。与配置变通方法类似,SWRR通过防止以某些功能丢失为代价执行易受攻击的代码来中和漏洞。但是,关键的区别在于SWRR在应用程序中使用现有的错误处理代码,这使得它们能够以最少的应用程序知识和最少的开发人员工作进行机械插入。这使SWRR能够实现高覆盖率,同时仍然快速且易于部署。

    比较解决新发现的漏洞的不同方法。

    Talos的工作流程

    本文描述了Talos的设计和实现,这个系统可以使安全和精确的SWRR保护软件漏洞不被攻击者利用。主要结论是,SWRR是一种快速,安全且低成本的解决方案,可以在补丁可用之前继续使用应用程序。为了得出这个结论,在五个真实世界的应用程序中测试了320个SWRR,发现它们中的大部分都是不引人注目的,并且SWRR可以禁用75.1%的潜在漏洞。这表明,与传统的配置解决方案相比,SWRR可以在2.1倍以上的漏洞中发挥作用。还重现了11个漏洞及其漏洞,并尝试使用Talos配备的SWRR和不带SWRR的应用程序。我们发现在所有11个案例中,应用程序的安全性得到维护,并且在8个案例中,应用程序保留了其全部或大部分功能(除了易受攻击的代码)。本文将Talos视为解决prepatch漏洞窗口的第一步。提高SWRR有效性的最佳途径是改进识别错误处理代码或SWRR可以将执行重定向到的其他安全代码路径,这将为SWRR提供更好的基本覆盖,从而提高其有效覆盖率。

    参考资料

  • 相关阅读:
    享受法国葡萄酒
    shell (bash) hot keys
    传统MapReduce框架
    【oracle】常用命令
    【转】商业J2EE中间件价值何在?
    【转】Linux(CentOS)服务器上安装Webmin
    【转】CentOS 5安装免费主机控制面板Webmin
    【源码】不规则矩形窗体的设计
    【转】虚拟机VirtualBox+Centos+NAT网络的配置过程
    【jsp】 config配置的关键字
  • 原文地址:https://www.cnblogs.com/zz-1226/p/10890947.html
Copyright © 2020-2023  润新知