精华内容
下载资源
问答
  • 2022-04-06 13:51:55

      建立信息安全运营管理基础平台,构建整个系统信息安全安全支持系统,确保各种业务应用的安全运行,通过技术实现信息系统安全,可管理,安全和控制的目标意味着,使安全保护策略贯穿于信息系统的物理环境,网络层,系统层,应用层,数据库和管理系统。

      1.大数据存储安全:通过大数据安全存储保护措施的规划和布局,协同技术的发展,增加安全保护投资,实现大数据平台的安全保护,实现业务数据的集中处理。

      2,大数据云安全:大数据一般需要在云端上传,下载和交互,以吸引越来越多的黑客和云端的病毒攻击和客户端安全保护至关重要。

      3.保护个人隐私信息:有必要保护大数据时代的隐私不受技术和监管层面的影响,并改善用户个人信息的安全系统。

      4.业务系统安全:支持业务系统,管理系统,外部信息,决策支持系统,云平台,大数据分析系统,大数据存储系统等应用系统的安全需求,充分保证系统的安全性要求。施工。

      5.安全组织和管理:建立包括策略管理在内的安全管理系统和安全管理组织,构建安全管理平台和安全评估。

      6.安全标准和规范:为大数据平台的信息安全系统制定技术标准,规范,规则和规定。

      7.安全系统目标:建立安全系统是为了实现功能齐全,协调和效率,信息共享,严格监控,安全稳定和强有力支持的最终目标。

      随着科学技术、信息技术的不断进步发展,大数据时代帷幕即将拉开。大数据时代背景下,人们的个性化需求将得到更大的满足,但与之同时人们的个人隐私也将逐渐收入大数据库中,这也就形成了巨大的网络完全隐患。

    更多相关内容
  • 分析IOS平台上的安全协议Swift语言实施安全性,对保障IOS应用安全具有重要意义。首先对已有安全协议Swift语言实施进行分析,确定Swift语言子集SubSwift,并给出其BNF;其次基于操作语义,建立SubSwift语言到Blanchet...
  • 安全是红线,质量是底线。没有安全,就不用讨论质量的好坏了。好质量的产品,安全性一定是高的。但是安全性高的产品,不一定是高质量的产品。车载动力电池安全是当前的... 一、电芯安全失效模式分析及技术保障措施  
  • 信息安全网络安全与网络空间安全分析论文 摘要信息网络在现代社会的普及程度较高保障信息的安全对于个人企业国家都具有极其重大的意义而想要做好信息安全的维护和保障工作并不是那么容易的一件事情需要众多的技术...
  • 人工智能(AI)含义宽泛,从聊天机器人到自动驾驶汽车的很多东西都可以用这个词来描述。市场营销人员很喜欢赶时髦,乘着这股东风推销产品。这篇文章中,我们将定义和描述AI、机器学习和深度学习,以及它们对信息安全...
  • 大数据安全分析.pdf

    2022-06-21 18:46:57
    信息安全公司:联软科技为您整理! 详解:大数据面临的安全问题及应对策略分析 大数据的产生使数据分析不应用更加复杂,难以管理。...了解业务运营安全情况,这对企业来说具有革命性的意义。 目前,
  • 网络安全背景下新媒体从业人员统战意义分析.pdf
  • 2021年注册安全工程师考试安全生产事故案例分析安全标准化建设的意义.pdf
  • 针对我国煤矿安全事故的统计特征,运用POT-GPD模型对我国2003-2011年煤矿安全事故风险的分布特性进行了统计研究,发现我国煤矿安全事故风险具有厚尾性质:尾部风险的发生概率是幂函数递减的,特大事故的发生概率并不是...
  • 针对当前电子政务面临的各种安全隐患,通过分析影响电子政务发展的主要安全问题,提出安全技术和安全管理相结合的电子政务安全体系模型。此安全体系具有良好可扩展性和先进性,对电子政务系统的开发具有一定的理论和...
  • 煤矿安全度是诸多因素综合作用的结果,是某一阶段...以河南省煤矿为例,对其近5年的相对安全度进行了分析,分析的结果与河南省近年来的煤矿总体安全状况相符,说明模型具有较好的适用性,对区域煤矿的安全管理具有指导意义
  • 网络技术逐渐改变了人们的生产、生活、学习甚至思维方式。...这需要不断总结软件安全漏洞发掘方法,搭建更好的软件安全漏洞检测模型,开发出更好的动静态程序分析的漏洞检测工具,切实提高软件运行的安全性。
  • 对比分析了中美两国煤矿安全生产现状,认为中美两国同为煤炭资源、生产和消费大国,但美国煤矿安全水平却明显高于我国。提出了改善我国煤矿安全生产状况的具体措施,研究措施对改善我国煤矿安全生产现状有一定的指导...
  • 安全是红线,质量是底线。没有安全,就不用讨论质量的好坏了。好质量的产品,安全性一定是高的。但是安全性高的产品,不一定是高质量的产品。车载动力电池安全是当前的... 一、电芯安全失效模式分析及技术保障措施  
  • 安全评价是煤矿安全管理系统的重要内容,文章利用主成分分析和因子分析法的基本理论,提出了针对我国煤矿安全的评价模型。文章首先建立了我国煤矿...本文为煤矿安全评价提供了另外一个视角,具有一定的理论和现实意义
  • 通过供热管网故障调查数据分析,引发对管网设计、材料、施工及运行管理方面的思考,提出了供热管网安全问题的重要性。
  • 从无线局域网的数据加密和安全认证两大主要安全方面出发,对目前广泛应用的安全技术进行了简要介绍,并分析了各个安全技术的优势和缺陷,最后对无线局域网的安全技术进行了综合比较,并做出结论如何选择合适的无线...
  • 品环与源学院矿业工程 第三章安全检查表 第三章安全检查表SCL ...安全检 查表的编制与实施,能根据实际分析对象编制 安全检查表 理解:安全检查表的作用安全检查表编制时 的注意点 了解:安全检查表的种类 安全系统工程 案
  • 第五章.系统安全分析与设计

    千次阅读 2022-02-16 17:51:55
    系统安全分析与设计第一节.信息系统安全属性第二节.对称加密技术与非对称加密技术对称加密技术非对称加密技术第三节.信息摘要与数字签名信息摘要数字签名第四节.数字信封与PGP数字信封的原理PGP练习题——设计邮件...


    第五章.系统安全分析与设计

    第一节.信息系统安全属性

    了解这些属性的基本含义,保障这些属性需要采用什么基本策略。

    • 保密性:最小授权原则(指每个程序和系统用户都应该具有完成任务所必需的最小权限集合。)、防暴露(就是将目标隐藏起来以提高安全性。如在命名时可以将名称和扩展名分别设置为乱码和其它扩展名)、信息加密(防止信息在传输时被截获并被破解出)、物理保密(采用相应的物理设备,在发送之前加密,接受后解密)
    • 完整性(为了保证数据在传输过程中不受损耗):安全协议、校验码(如MD5加密,比方说下载文件后网站给你一个MD5码,你可以通过MD5码验证下载过程中是否被破坏)、密码校验、数字签名、公证
    • 可用性(只允许合法用户使用这些资源) : 综合保障 (IP过滤、业务流控制、路由选择控制、审计跟踪 )。如果说一台服务器不能够给合法用户提供相应的功能,这就是可用性遭到了破坏。
    • 不可抵赖性:数字签名(因为签名能够识别发送者的身份,一旦通过能够通过资料识别发送者,那么这个时候发送者是不能够抵赖他发送过这个信息。)

    第二节.对称加密技术与非对称加密技术

    这两种加密技术是属于最为基础最为核心的部分。
    所谓对称加密技术就是在加密和解密的过程中所使用的密钥相同。即我用什么样的密钥加密就是用什么样的密钥解密。
    所谓非对称加密技术就是加密和解密的过程中所使用的密钥不同。即用公钥加密就要使用相应的私钥解密。

    接下来,我们考虑一下平常我们使用的ara、rar的压缩包可以加密吗?还有平常的excel、word、pdf也可以加密吗?
    这种机制肯定是涉及到加密解密的问题。它们是属于对称的加密技术还是非对称的呢?
    它们应该属于是对称加密技术。为什么是对称加密技术呢?因为你加密的密钥和解密的密钥是一样的。这就是典型的对称加密技术。


    对称加密技术

    在这里插入图片描述
    重点讲一下DES。

    1. DES中的所谓替换就是会有一个密码表,如果说要将明文翻译成密文,就直接查找这个表进行相应替换即可。替换的方式应用得非常普遍,如抗战时期的电报。
      那么所谓移位就是通过某种规则将位置发生变化,因为一旦移位就会导致字母跟原来的情况完全不一样。
    2. DES的密钥长度为56位比较短,密钥还会分成数据块,当然DES还能够进一步分成数据块的加密方式和数据流的加密方式。
      数据块的加密方式就是分成数据块再给数据块加密。
      数据流的加密方式就是顺次地给数据流用密钥执行相应的操作得到相应的结果。
    3. 三重DES是对DES的复杂化。正是这种复杂化使得加密的强度高了很多。加密操作和解密操作互为逆向操作。
      三重DES跟DES有着良好的兼容性,因为三重DES有着DES的所有的操作,只是三重DES操作的多且复杂而已。
    4. 优点:加密速度会比较快,效率会比较高。
    5. 缺点会非常明显,加密强度不高(因为密钥采用的长度非常短),密钥分发困难。
      为什么说密钥分发困难呢?
      举例说明,现在需要通过QQ传递非常重要的信息,就算明文被加密了,但是密码表也需要让对方知道,但又不能通过明文发送,如果密码本也通过加密发送,那么一切都是徒劳。故人们提出了非对称加密技术来解决解决这一缺点。

    非对称加密技术

    在这里插入图片描述
    在非对称加密方案中,每一个人会有这自己的公钥和私钥,公钥是可以公开的,私钥是不可以公开的
    比如:甲会有甲的公钥和私钥,乙也会有乙的公钥和私钥。如果说甲要把一个明文加密后发给乙,那么这个明文只能够用乙的公钥加密,因为乙接收到加密后的明文之后,就会使用乙的私钥解密,这样就能够防止私钥的泄露。
    通过上述示例,可知在非对称加密方案中,发给谁就直接使用对方的公钥加密即可。

    但是问题又来了,什么问题呢?
    我们会发现非对称加密过程中,密钥的长度是非常之长的,而目前的密钥一般是使用1024位的密钥。
    1024位密钥是要比56位密钥长接近20倍,那么56位密钥加密所消耗的时间远远低于1024位加密的时间,这里面的差距可以达到数千倍,所以对于内容比较庞大的数据来说,用非对称加密是完全行不通的,因为效率太低而没办法走向应用,相反对称方式就很高效快捷。
    故在实际的应用过程中,其实对称和非对称是互为补充使用的。我们往往使用对称的方式加密大内容的传输,用非对称的方式加密对称加密的密钥,这样子密钥分发的问题就得以解决了。


    第三节.信息摘要与数字签名

    信息摘要

    信息摘要其实就是一段信息的特征值。
    这些特征值有什么特点呢?
    特点就是原始信息发生变化,特征值就跟着变。如:就好比我把一段话的标点符号改变,底下的摘要就会发生很大的变化。
    那么这种特点能够给我们什么启发,在哪里能够用到这种特性呢?
    举一个简单的例子,甲发送一个消息给乙,告诉他要给乙支付10万的合同款,这个信息是明文传送的,这个时候这个消息被丙截获了,并且在这个信息中加入了一个0传给了乙。这时信息的安全就存在问题,因为丙的篡改就导致公司损失90万,这种情况就是信息的完整性遭到了破坏
    故我们需要想办法保证信息的完整性,让信息发送时的内容和接收时的内容是一致的,要想验证信息发送和接收后的情况是否一致,所以提出了完整性要求。
    那么我们通过信息摘要的特点来解决这个问题。把信息的明文和明文产生的摘要传送给乙,然后乙用接收到的明文产生一个摘要,然后让生成的摘要与收到的摘要进行对比,如果两者一致,这就代表信息被篡改,所以信息摘要适用于这样的场景。
    解决一个问题就会出现其它的一些问题。就是如果发送的明文和摘要都被篡改了,并且篡改后的明文生成的摘要与被篡改的摘要相同,这种情况是有可能发生的,所以后面讲到数字签名技术,将信息摘要和数字签名结合起来,这个问题就迎刃而解了。

    单 向 散 列 函 数 ( 单 向 H a s h 函 数 ) 、 固 定 长 度 的 散 列 值 。 单向散列函数(单向Hash函数)、固定长度的散列值。 Hash
    信息摘要中的单向散列函数就是 将正文通过消息摘要算法计算出摘要的结果。但是反过来就不能够把摘要还原成明文。意思就是单向的走,不能够返回。
    在这里插入图片描述
    常用的消息摘要算法有MD5、SHA等,市场上广泛使用的MD5、SHA算法的散列值分别为 128 和 160 位,由于SHA通常采用的密钥长度较长, 因此安全性高于MD5。

    加密技术与信息摘要的区别,信息摘要为什么不能够做加密?
    像加密就不是这么回事,明文我们可以加密成密文,密文又能够通过解密还原成明文。但是信息能够通过单向散列函数形成摘要,反过来摘要就不能够得到信息;因为摘要是一种破坏性的手法,它是只取特征值,它的长度非常短。像MD5长度是128位,SHA长度是160位,无论你是几个G的数据,产生的摘要都只有一百多个bit,自然会有绝大多数的信息已经丢失,所以不能够还原。故信息摘要算法是不能够做加密职能的。


    数字签名

    数字签名技术主要是一种防止抵赖的技术。
    顾名思义,就是用数字化的方式来给发送者在信息上面签上自己的名字。这样接收者就能够知道信息是由谁发送的,并且发送者是没有办法去抵赖。因为有证据指出这个东西就是你发出来的。
    那么要达到这种效果,我们需要用到什么样的手段去实现呢?
    还是以发送者,接收者所涉及到的几个密钥来看,我们需要用到哪个密钥来进行加密动作,哪个密钥来进行解密动作。比如信息从A传给B,也就是用A的私钥加密,A的公钥解密,这样子就能够达到我们的目的。用发送者的密钥加密,相当于做了数字签名。这里的加密称为数字签名的过程,解密称为数字签名的验证过程。为什么要这样子称呼呢?因为加密解密往往是在安全传输过程中,为了达到相应的保密性采取的操作,会有这种认知在其中;但事实上,数字签名是没有保密性可言,因为用私钥来做加密操作而用公钥来做解密操作,而公钥是公开的,因此数字签名没有保密的职能,任何人都能够打开这个包知道这是谁的包。

    在实际应用的时候,如下图所示。
    在这里插入图片描述
    图注:首先我们会对正文产生摘要,再对摘要做数字签名发送过去,为什么是对摘要签名,而不是对整个信息签名呢?因为非对称的体制里面,不适合对大信息量进行加密解密的操作,所以对简短的摘要进行签名,这样子效率就非常高效了。所以在很多时候,我们都会把信息摘要和数字签名结合起来使用。


    第四节.数字信封与PGP

    数字信封的原理

    1. 发送方将原文用对称密钥加密传输, 而将对称密钥用接收方公钥加密发送给对方。
    2. 接收方收到电子信封, 用自己的私钥解密信封, 取出对称密钥解密得原文。

    PGP

    1. PGP既可用于电子邮件加密, 也可以用于文件存储加密。采用了杂合算法, 包括IDEA、 RSA、MD5、ZIP数据压缩算法。
    2. PGP承认两种不同的(数字)证书格式: PGP证书和X.509证书。
    3. PGP证书包含PGP版本号、证书持有者的公钥、证书持有者的信息、证书拥有者的 数字签名、证书的有效期、密钥首选的对称加密算法。
    4. X.509证书包含证书版本、证书的序列号、签名算法标识、证书有效期、以下数 据: 证书发行商名字、证书主体名、主体公钥信息、发布者的数字签名。

    PGP的应用
    目前来讲,市面上推出了PGP的软件,所以我们可以用到PGP的软件来对相应的保密数据进行加密操作。像现在很多人都喜欢使用云盘网盘,因为这种方式运用的是云计算的技术,这有什么好处呢?一旦你的信息存储到云盘上面,往往是不容易丢失的,因为云盘的背后往往是有专业的团队去做信息的冗余、信息的备份这些工作,相较于本地存储可靠性高一些。但是放在云盘上面又带来了另一个问题,就是有人担心放在云盘上的保密信息会被别人获取到,这是一个安全性问题,这需要结合PGP技术来解决,用PGP的软件先把保密技术加密,再把信息传送到云盘上面。

    PGP承认的两个证书存在一定的差异,但是基本的内容是保持一致的。
    数字证书是一个什么样的概念呢?
    数字证书是电子凭证,用于断言网络上的个人,计算机和其他实体的在线身份。数字证书的功能类似于护照和驾驶执照等身份证。最常见的是,它们包含公钥和所有者的身份。它们由证书颁发机构(CA)颁发,证书颁发机构必须在颁发证书之前和使用证书时验证证书持有者的身份。常见用途包括需要身份验证,加密和数字签名的业务场景。

    证书持有者的公钥、证书持有者的信息等必须要在数字证书中显示,为什么呢?它是在什么环境下提出来的呢?之前提出的一系列安全技术,其实已经能够解决绝大部分问题了,那为什么还要有数字证书这样的体系呢?
    因为在应用过程中,我们发现了一个很大的问题,在非对称体系中,讲到每个人都会有自己的公钥和私钥,你想要传输信息,只需要用对方的公钥加密传送过去即可。讲的轻松,但是实际使用是不好实现的,为什么?比如说甲在跟乙聊天,甲对乙说你把公钥给我,我给你传送消息,他发送过来的公钥是一串数字,你无法判断这一串数字是否为乙的公钥,如果在传输公钥的过程中,被丙截获并把公钥换掉,这整个信息传输过程就不安全了,正是因为这个因素,咱们一定要想一个办法将个人信息与密钥绑定起来就可靠就安全了,所以就有了数字证书。所以数字证书就是这样一个东西,它描述了这是乙的一个证书,乙的公钥就包含在里面。所以我们会发现,**在日常生活中,用到的数字证书安全加密的体制往往都已经跟数字证书结合起来了。**就是因为我们在传输沟通的过程中,需要证明身份的问题,所以这个数字证书类似于我们生活当中的身份证。它有专门的颁发机构称为CA机构。
    一旦我们看到这个数字证书是我们信任的CA机构颁发的,我们就可以认为该数字证书是真实有效的,如何去判定该证书是合法的CA机构颁发的呢?就要用到鲜明的机制,因为数字证书上面都有颁发机构的签名,我们可以通过了解颁发机构的签名来判断数字证书是不是伪造出来的。正是因为有了这样一个特点,所以数字证书除了那些信息之外,还会有持有者的公钥信息,持有者的公钥信息必须要有,否则就违背了初衷。


    通过这个问题将前面所学到的安全基础相关的一系列知识全部整合起来。

    练习题——设计邮件加密系统

    题干:要求邮件以加密方式传输, 邮件最大附件内容可达 500 M B 500 \mathrm{MB} 500MB , 发送者不可抵赖, 若邮件被第三方截获, 第三方无法篡改。

    :通过题目信息可以获取相应的安全技术。“以加密方式传输”需要用到加密解密技术;“最大附件内容可达500MB”确定了加密解密的方式为对称加密技术;“发送者不可抵赖”需要用到数字签名;“第三方无法篡改”需要使用信息摘要技术,因为信息摘要技术保证了信息的完整性。
    在这里插入图片描述
    图解:随机密钥K是对称加密技术生成的,而数字签名和数字信封技术是通过非对称加密技术实现。


    第六节.网络安全

    各个网络层次的安全保障

    我们知道互联网的发展壮大有着一定的偶然因素,同时在互联网发展的初期,虽然大家都有美好的畅想,说要把全世界的计算机都给连接起来,但事实上谁也没有想到能够做的这么极致,所以在设计协议时,TCP/IP协议组中的协议基本上都是走的明文方式。它没有考虑很多安全方面的有很多严苛要求的应用也会在互联网上运行,所以就导致整个网络体系在安全方面都欠缺考虑,所以在互联网高速发展的时候,人们同时也在关注这个问题并提出了很多解决方案,这也就是本节讲到的“各个网络层次的安全保障”。因为原来没有而现在已经补充上,所以基本上都有一定的针对性。以Https为例,为什么要提出它呢?因为原有的Http走的是明文传输,而网页的明文传输一般会被截获,安全隐患是非常大的,所以就把Http和SSL安全协议结合起来形成Https。在平常登录网页基本上应用Https,在后端是有SSL的保障的。
    下面我们逐个层级进行分析。
    在这里插入图片描述
    图注

    1. 物理层。提高安全性的基本手段是隔离和屏蔽。
      比如说无线电信号以防止它们泄露出去,你就可以使用屏蔽的方式。
      某科研研究所内部有WIFT信号,供大家上网方便,那么内部网就会有大量的数据进行交换和传输,最好将这个研究院墙壁上加上屏蔽材料,这样子防止无线电信号散发出去被间谍组织截获到。
      整个国内投入了很多基金来建设互联网基础设备的通讯网络,但是这个通讯网络跟军方的网络还不是公用的,军方会单独地铺设通讯网络,这也就考虑到安全性的问题,就从物理层完全地隔离了,它们就不使用相同的物理通道,安全性是最高的。

    2. 数据链路层。从数据链路层开始基本上是走协议的路线来保障信息安全。所谓协议其实就是通信的时候封包的一种规则。PPTP和L2TP是两种隧道协议,这种隧道协议的基本理念是在开放的互联网之上,相当于开放出两条安全的隧道从隧道中传输的数据是安全的,不会遭到破坏和截获,这是通过两种协议的加密机制来保障的,这就类似于通道。数据链路层还可以对相应的链路进行加密。

    3. 网络层。网络层典型的保障措施之一是防火墙技术,防火墙有软件性质的(就是直接装在本机的),也有硬件软件配合在一起的(硬件就是专是为了防火墙的软件策略这一块支撑提供平台的一个东西,其实就是软件硬件结合在一起,这个硬件设备不做任何职能,就是运行一个防火墙而已),按级别划分,防火墙的级别又可以分为网络级和应用级。IPSec就是针对于IP包加密的一种协议,因为IP包本身是不涉及到加密的问题,它是直接明文传输的,当传输的数据要求保密程度非常高的时候,可以使用IPSec介入,IPSec可以把原有的IP包加密之后在传输,从整体来讲,IPSec拥有两种运作方式,一种就是拥有普通未加密的包,我把这个IP包中的数据拆出来进行加密,再封装包头之类的,然后再发出去;另外一种就是连着这些包头信息之类的一起这个IP包进行整体加密,然后再附加一个包头发出去,两种形式都是可以的。

    4. 输入层。传输层有TLS属于标准的传输层安全协议;SET是一个面向与电子商务的协议,在这个协议当中,集成了很多机制,比如通信过程的安全保密,购物过程的一些防抵赖的一些措施,因为它是因电子商务而生的,所以这些方面它都有所考虑。

    5. 应用层。在应用层次会有PGP、Https=Http+SSL。
      SSL协议的工作层次跨越了多个层次,从传输层到应用层。


    网络威胁与攻击

    网络攻击的分类
    网络攻击可以分为主动攻击和被动攻击两种。

    1. 主动攻击:包含攻击者访问他所需信息的故意行为。比如通过远程登陆到特定机器的邮件端口以找出企业邮件服务器的信息;伪造无效IP地址去连接服务器,使接受到错误IP地址的系统浪费时间去连接哪个非法地址。攻击者是在主动地做一些不利于你或你的公司系统的事情,主动攻击包括:拒绝服务攻击、分布式拒绝服务、信息篡改、资源使用、欺骗、伪装、重放等攻击方式。
    2. 被动攻击:主要是收集信息而不是进行访问,数据的合法用户对这种活动一点也察觉不到。被动攻击包括嗅探、信息收集等攻击方式。

    常见的网络威胁
    在这里插入图片描述
    图注

    • 重放攻击是利用ARP协议本身的一个漏洞进行。在这个过程中,该攻击有欺骗计算机的嫌疑,所以又称为ARP欺骗攻击。
      k e r b e r r o s kerberros kerberros系统通常在报文中加入时间戳来防止ARP攻击
    • 拒绝攻击(DOS)主要是破坏了系统的可用性,使系统无法合法的使用相应的资源。
    • 业务流分析和窃听的区别在于业务流分析侧重长期监听、信息的分析,而窃听则只是获取信息。
    • 非授权访问就是没有授权或者绕开了授权进行访问。

    防火墙

    防火墙的级别可以分成网络级和应用级。其中网络级的防火墙工作层次比较低,工作效率会比较高,主要做法是 拒绝接受指定IP段的信息,不管其中内容如何;而应用级的防火墙工作层次比较高,工作效率会比较低,主要做法是 不论信息的来源而直接将信息开箱进行检查,若有问题则拒绝接收。

    防火墙这种技术在现实生活中也非常常见,其实你不知道这个东西叫防火墙而已。比方说,不同的省份经常会爆发一些动物禽流感之类的,我们知道动物群体中有疫情的发生这是一件很头疼的事情,因为它的传染性相当之大,一旦传染了要大面积捕杀这些动物,然后造成非常大的经济损失,所以在控制疫情的过程中我们经常会采用隔离的措施,其中就用到了防火墙技术。
    在这里插入图片描述
    图注
    具体来讲,网络级防火墙又分成包过滤和状态检测。所谓包过滤就是指最简单的防火墙;状态检测就是TCP/IP的连接的时候,它会有连接状态信息,网络级状态检测防火墙就会把连接状态信息进行相应的分析统计。应用级比网络级更复杂。
    主要掌握应用级防火墙中的屏蔽子网防火墙。这个防火墙的结构非常地独特,从微观程度来看,这个防火墙做得极其复杂,是由多道防火墙构成的,基本思路就是要弥补已有和固有的防火墙的一些缺陷。防火墙有一个特点:防外不防内,经过统计,造成损失的网络攻击有百分之80以上是由内部发起的。内部发起的并不意味着这是真正意义上的加载,是因为可能够感染了木马和病毒所以导致了这样现象的发生。所以在人们设计防火墙的时候,就希望防火墙整个结构尽可能地安全,这样就能降低一些安全隐患,所以就组成了结构复杂的防火墙——屏蔽子网防火墙。
    被屏蔽子网(DMZ/非军事区)则是一块既不属于内网也不属于外网的隔离区,其目的是为了防止防火墙内部的攻击。 该隔离区一般放置对外提供服务的服务器(堡垒主机),比方说,web服务器,邮件服务器。这样子做有什么好处呢?外部的入侵者攻破了一道防火墙,然后再要进入到内部网络,还有一道防火墙,所以说安全性提高了。内部要访问web服务器也要经过一道防火墙,也提高了相应的安全性,当然纯粹的内部发动的对内部其它服务器的攻击导致仍然难以杜绝,但屏蔽子网防火墙是安全程度最高的。

    DOS攻击

    DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其期的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

    作个形象的比喻来理解DoS。街头的餐馆是为大众提供餐饮服务,如果一群地痞流氓要DoS餐馆的话, 手段会很多,比如霸占着餐桌不结账,堵住餐馆的大门不让路,骚扰餐馆的服务员或厨子不能干活,甚至更恶劣…

    SYN Flooding攻击便是Dos攻击的典型代表,该攻击以多个随机的源主机地址向目的路由器发送SYN包,而在收到目的路由器的SYN ACK后并不回应,这样,目的路由器就为这些源主机建立了大量的连接队列,且由于没有收到ACK-直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务,甚至导致路由器崩溃。服务器要等待超时(Time Out)才能断开已分配的资源。

    展开全文
  • 安全文化体系建设对煤矿生产和管理以及安全发展的作用及意义分析.docx
  • 针对沁和能源集团曲堤煤业3号煤层位于奥陶系灰岩高承压水上方的情况,为实现煤炭资源的安全开采和岩溶水资源保护,分析了底板岩性的组合、地质构造、工程采动和开采条件对底板的突水的影响,并提出了曲堤煤矿带压开采...
  • 高校学生宿舍的消防安全是高校安全管理的重要环节,对高校学生宿舍进行消防安全评价、对高校的消防安全管理有着至关重要的意义。运用事故树分析方法分析高校学生宿舍火灾事故的原因,建立高校学生宿舍火灾的模糊综合...
  • 安全攻防进阶篇将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等。第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再...

    从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

    接下来我将开启新的安全系列,叫“安全攻防进阶篇”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~

    在这里插入图片描述

    第一篇文章先带领大家学习什么是逆向分析,然后详细讲解逆向分析的典型应用,接着通过OllyDbg工具逆向分析经典的游戏扫雷,再通过Cheat Engine工具复制内存地址获取,实现一个自动扫雷程序。该篇文章也是作者学习科锐钱林松老师在华中科技大学的分享视频,这里非常推荐大家去看看。话不多说,让我们开始新的征程吧!您的点赞、评论、收藏将是对我最大的支持,感恩安全路上一路前行,如果有写得不好或侵权的地方,可以联系我删除。基础性文章,希望对您有所帮助,作者的目的是与安全人共同进步,加油~

    作者的github资源:
    软件安全:https://github.com/eastmountyxz/Software-Security-Course
    其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp


    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。(参考文献见后)


    一.什么是逆向分析

    1.逆向工程

    科锐钱老师真的是大佬,拥有十余年的逆向工作经验,专注于先进技术的算法还原及逆向实训。作者从中学习到很多知识。本次课程分享的是逆向分析技术的引导,课程目标是带领大家了解下逆向分析是干什么的,在安全领域中是什么地位,并且穿插各种实战示例,尽量提高大家的兴趣。逆向分析是安全的基础行业,喜欢的人觉得很好玩,不喜欢的人觉得很苦逼。

    在讲逆向分析前,大家思考下:你有没有把别人的产品或Demo还原出源代码来过呢?而且就是作者的源代码,包括里面的BUG。

    • 反汇编:一次编译技术,阅读汇编代码反推出对应的高级代码,比如VC、GCC、Delphi等。
    • 反编译:通常在C#、Java、.NET框架等,因为它可以直接把元数据还原成高级代码,反编译其实更难,但是对使用的人更简单,比如Android的APK反编译成JAVA源代码。

    下面开始吧!第一个大家需要知道的是“什么是逆向工程?”


    什么是逆向工程?
    简单而言,一切从产品中提取原理及设计信息并应用于再造及改进的行为,都是逆向工程。在信息安全中,更多的是调查取证、恶意软件分析等,不管你用什么工具或手段,能达到其目的就算逆向分析。下图是《变形金刚》里面对它的描述,2007年的时候国内对信息安全重视程度也不高,对逆向分析也没有什么概念,真正重视是从老大提出“没有网络安全就没有国家安全”之后。而那时候的国外电影就已经用到了“reverse engineered”,说明国外导员对这个技术及应用场景都是了解的。

    在这里插入图片描述

    逆向工程最早是在二Z时的船舶工业,分析船的弱点,通过外形反推内部结构,其中粉红色是Amuno、黄色是引擎室、蓝色是龙骨、绿色是推进器等等。只有知道怎么造一个船后,才能进行逆向分析。

    在这里插入图片描述

    当然还有模具逆向、材料逆向、软件逆向,在我们的软件行业,就称为软件逆向。同样,在网络攻防中,你不可能先给出源码再进行攻击,通常在安全对抗中第一步要做的就是逆向分析,不管你用什么方式进行逆向分析,你都需要搞清楚:

    • 它是什么:样本是什么,良性的还是恶意的
    • 它干了什么:样本做了哪些事情
    • 我们怎么办:知道做了什么才能进行反制,如删除注册表启动项、清理感染的勒索病毒等

    在这里插入图片描述



    2.逆向分析的典型应用

    软件逆向有很多实现办法达到我们的目标,典型的应用包括软件工程、网络安全、司法取证、商业保护等。

    在这里插入图片描述


    逆向应用——病毒分析
    对于逆向分析,最大的行当就是病毒分析。对于一个安全企业来说,比如360,它的病毒分析团队属于它的主业,包括360、金山毒霸、腾讯医生等,它们主要业务就是根据一些恶意样本的行为,给出解决方案(专业查杀、完善引擎、应急响应),比如WannaCry爆发时,立刻分析其原因和传播漏洞,分析其影响程度及给出解决方案。所以,研究逆向病毒的人很多,当然坏的行当做游戏WG也很多,它们的对抗也是没有源码的,游戏安全人员会分析WG样本进行完善及修补。

    2000年早期制作病毒的人都比较单纯,写病毒是为了技术炫耀或开玩笑,典型的比如乒乓球病毒,每个周末都爆发,开启计算机后就有个乒乓球在电脑上弹,导致电脑不能用,而周一到周五恢复正常(可能是讨厌加班),此时的病毒没有获取用户隐私、删除数据等行为。

    在这里插入图片描述


    逆向利用——游戏保护
    从2005年开始,随着网游普及和网络虚拟财产(游戏装备)出现,大家也没有安全意识,出现了很多恶意程序和病毒,比如熊猫烧香,它是由李俊制作并肆虐网络的一款电脑病毒,是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中exe、com、pif、src、html、asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的系统备份文件。

    同时,游戏WG也开始增多,并形成了包括私服、生产、PJ、DH等功能的生产线,通过分析游戏的关键数据结构,找到关键数据并对数据做修改以达到提升的效果。比如吃鸡游戏,如果你通过逆向分析找到每个玩家的坐标位置了,你是不是可以写一个透视G,前提是你知道其数据以什么形式存放在哪里,这就属于PJ挂。你甚至还可以修改攻击力、防御值,游戏的碰撞检测(两者间距离小于某个值)也可以取消实现飞天、穿墙等。

    在这里插入图片描述

    当然,我们的信息安全是正能量的,逆向分析主要是剖析病毒,包括:

    • 逆向病毒,获取病毒传播方法,可以遏制病毒传播
    • 逆向病毒,获取病毒隐藏手段,可以根除病毒
    • 逆向分析病毒,获取功能目的,可以溯源定位攻击者

    逆向应用——漏洞挖掘
    逆向应用还包括漏洞挖掘和漏洞利用,其中黑客挖掘漏洞的常用方法为:

    • 通过分析开源软件的源代码,获取漏洞
    • 通过分析产品本身获取漏洞
    • 通过分析可以利用漏洞的软件样本
    • 通过比较软件前后补丁的差异

    大家是否有研究过shellcode、缓冲区溢出?漏洞利用溢出缓冲区,首先要把关键内存、关键代码定位出来,这就属于逆向分析。在漏洞利用过程中,只有你越熟悉周围环境则可利用的漏洞就越多,比如逆向服务端,调用shell创建新用户功能,这个时候是没有源代码的,所以需要利用漏洞分析。

    逆向分析是信息安全行业的基础技术、必须技术和重要技术,只有你功力越深厚,则做的事情就越多。

    在这里插入图片描述


    漏洞利用——比较补丁
    下图展示了比较补丁前后差异的工具。比如官方软件在网上有安全更新,关注安全行情和漏洞公告的行当或企业会对比官方的补丁,在拿到官方升级后的软件,他们会对两个流程做比较,其中左边流程多了一个节点,说明升级就是这个位置,再详细分析为什么多了这个个检测。注意,官方公告通常会非常简略(补丁号、造成后果、影响范围),比如某个MP3播放器在播放某个冷门格式的音频文件时,会触发一个远程溢出问题,接下来我们就需要去做逆向分析,下载升级前和升级后的版本做流程对比。

    在这里插入图片描述


    逆向应用——电子取证
    通过样本追踪地理位置的实例,后续会给出一个实战案例。

    在这里插入图片描述


    漏洞利用——无文档学习
    表示没有源码的情况下获取程序信息,称为竞品分析。假设某个公司对同行的产品很感兴趣,想知道为什么它们的算法比我们的好,然后需要去分析和算法还原,这也是逆向分析的主要应用。最好的竞品分析,是能够将算法完美还原,两个代码再次编译后,除了地址不一样其他都一样(IDA查看)。注意,看懂代码完善程序并换另一种程序语言复现,算学习;而如果直接COPY别人的二进制或二进制序列,这算抄袭。

    在这里插入图片描述



    二.扫雷游戏逆向分析

    1.游戏介绍

    下面通过扫雷游戏进行逆向分析讲解。

    在这里插入图片描述

    此时我们打开一个工具,360会提示危险操作,点击“允许本次操作”即可。

    在这里插入图片描述

    此时就能够判断某个点是不是雷,从而方便我们点击完成扫雷游戏,O(∩_∩)O

    在这里插入图片描述

    接着进行逆向分析。扫雷中肯定有雷区的定义,作为程序员,你会怎么定义有雷或没有雷,或者插个旗子的状态呢?我们会使用一个二维数组来存储。那么,什么时候肯定会访问这个二维数组呢?在绘制整个游戏区、点击方格的时候都会访问。

    在绘制游戏区时,Windows编程有个关键函数,叫做——BeginPaint。BeginPaint函数为指定窗口进行绘图工作的准备,并用将和绘图有关的信息填充到一个PAINTSTRUCT结构中,所以它将是个突破口。



    2.OllyDbg动态分析

    接着我们使用Ollydbg打开,在逆向分析中,动态分析(OD)和静态分析(IDA)非常多,动静结合也是常用的分析手段。

    推荐作者上一个系列的两篇入门文章:

    • 静态分析:程序并未运行,通过分析文件的结构(格式)获取其内部原理。
    • 动态分析:在程序的运行过程中,分析其内部原理。
    • 灰盒分析:既不静态也不调试,通过一堆监控软件(注册表监控、文件监控、进程监控、敏感API监控)在虚拟机中跑程序,再分析恶意软件的大体行为,并形成病毒分析报告。

    至于哪种方法更好?我们需要具体问题具体分析,如果是分析扫雷游戏,因为没有危害可以动态调试分析,但如果是WannaCry蠕虫,你就不能在真机上动态分析。同时,很多安全公司为了及时响应各种安全事件,会把样本自动上传到服务器中,它们每天会收到成千上万的恶意样本,但可能存在某些未知样本只上传部分的原因,比如某个未知样本是个动态链接库,此时没有运行条件,只能进行静态分析或者模拟接口分析。

    在这里插入图片描述

    软件静态分析包括分析文件格式、分析网络协议、分析软件日志、修改存档文件等,下图展示了通过修改文件游戏作弊的示例。

    在这里插入图片描述

    软件动态调试可以用于HH翻译,比如《仙剑奇侠传》。

    在这里插入图片描述


    OllyDbg是一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3级调试器,非常容易上手,是当今最为流行的调试解密工具之一。它还支持插件扩展功能,是目前最强大的调试工具之一。OllyDbg打开如下图所示,包括反汇编窗口、寄存器窗口、信息窗口、数据窗口、堆栈窗口。

    • 反汇编窗口:显示被调试程序的反汇编代码,包括地址、HEX数据、反汇编、注释
    • 寄存器窗口:显示当前所选线程的CPU寄存器内容,点击标签可切换显示寄存器的方式
    • 信息窗口:显示反汇编窗口中选中的第一个命令的参数及跳转目标地址、字符等
    • 数据窗口:显示内存或文件的内容,右键菜单可切换显示方式
    • 堆栈窗口:显示当前线程的堆栈

    下图是打开EXE后显示的界面。

    OD常用的快捷键调试方式包括:

    F2
    设置断点,如下图所示的红色位置,程序运行到此处会暂停,再按一次F2键会删除断点。

    F9
    按下这个键运行程序,如果没有设置相应的点,被调试的程序直接开始运行。

    F8
    单步步过,每按一次这个按键,将执行反汇编窗口中的一条指令,遇到CALL等子程序不进入其代码。

    F7
    单步步入,功能通单步步过(F8)类似,区别是遇到CALL等子程序时会进入其中,进入后首先停留在子程序的第一条指令上。如下图进入CALL子程序。

    F4
    运行到选定位置,即运行到光标所在位置处暂停。

    CTRL+F9
    执行到返回,按下此键会执行到一个返回指令时暂停,常用于从系统领空返回到我们调试的程序领空。

    ALT+F9
    执行到用户代码,从系统领空快速返回我们调试的程序领空。


    接着正式分析扫雷程序。

    第一步:启动OllyDbg软件,选择菜单“文件”,打开winmine.exe文件。
    这里我们猜测游戏中存在一个二维数组,当我们显示界面时会访问这个二维数组,并且调用BeginPaint函数来显示界面。所以接下来需要找到调用BeginPain的位置。

    在这里插入图片描述


    第二步:在反汇编窗口右键鼠标,选择“查找”->“当前模块中的名称”。

    在这里插入图片描述

    当我们在键盘上输入“BEGINPAINT”时,能够迅速找到对应的函数。

    在这里插入图片描述


    第三步:点击右键选择“在每个参考上设置断点”。

    在这里插入图片描述

    接着点击下图所示的“B”进行断点设置界面。
    在这里插入图片描述

    双击该断点会进入到反汇编窗口BeginPaint对应位置。

    在这里插入图片描述


    第四步:按下“F9”运行程序,可以看到在BeginPaint和EndPaint之前有一个CALL函数。

    在这里插入图片描述

    选中该行右键“跟随”之后,去到0x01002AC3位置,发现又存在很多个CALL函数。

    在这里插入图片描述

    一种方法是一个一个函数分析,这里使用另一种方法。当我们在使用扫雷时,发现它的界面并没有闪烁,所以怀疑使用了 双缓存技术,这是我们的突破口。双缓存是在缓存中一次性绘制,再把绘制的结果返回在界面上。比如,你要在屏幕上绘制一个圆、正方形、直线,需要调用GDI的显示函数,操作显卡画一个圆,再画一个正方形和直线,它需要访问硬件三次;此时依赖硬件的访问速度,而且如果绘制错误擦除再绘制,需要反复的访问硬件,为了减少硬件操作,我们在内存中把需要绘制的图像准备好,然后一切妥当之后提交给硬件显示。

    PS:当然,为什么是双缓存技术呢?目前的我也无法理解。只有当我们做了大量的逆向分析后,才会养成一定的经验来帮助我们判断。任何行业和技术都是这样的,包括作者自己,目前也是一步一个脚印的去学习,去总结,去进步。期待与您前行,加油~


    第五步:继续在反汇编窗口右键鼠标,选择“查找”->“当前模块中的名称”,找到双缓存技术的核心函数BitBlt。
    BitBlt是将内存中的数据提交到显示器上,该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。

    在这里插入图片描述

    点击右键选择“在每个参考上设置断点”,如下图所示,此时绘制了两个断点。

    在这里插入图片描述


    第六步:运行程序去到第二个断点BitBlt位置。

    在这里插入图片描述

    注意,此时显示了两层循环,刚好符合我们二维数组的遍历,按F8单步步过可以动态调试观察其效果。

    在这里插入图片描述


    第七步:在0x01002700位置按下F2取消断点,并在该函数的起始位置0x010026A7设置断点,接下来需要详细分析这个双缓存函数绘制过程。

    在这里插入图片描述

    代码中,ESI首先通过XOR进行清零,然后再加1;接着ESI会调用CMP进行比较,说明ESI是循环变量。接下来“MOV AL, BYTE PTR [EBX+ESI]”表示将EBX和ESI相加赋值给AL,然后AL判断一个值再做其他的,这有点像访问数据,后面的显示特性随着AL做改动,即AL影响后面显示的内容。

    MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。

    在这里插入图片描述


    第八步:下面看看寄存器,其中EBX是基址寄存器,ESI是它的偏移量,猜测这个EBX基址寄存器和关键数据有关。

    在这里插入图片描述

    选择EBX基址寄存器,然后选择“数据窗口中跟随”,显示如下图所示的数据。

    在这里插入图片描述

    数据窗口显示如下,我们发现“0F”出现较多,猜测多的这个可能是空的,少的那个是雷“8F”。

    在这里插入图片描述


    第九步:数据区详细分析。
    我们选择0x010026A7位置,然后按下F2取消断点,然后继续运行程序,此时弹出扫雷主界面。游戏中通常会存在边界(围墙),这里“10”应该是边界位置,而0x01005361则为起始位置。

    在这里插入图片描述

    如果第一个不是雷、第二个不是雷、第三个不是雷,第四个才是雷,我们“0F”是空格,“8F”是雷的猜测则正确。

    在这里插入图片描述

    我们取消0x01002700位置的断点,然后运行程序弹出扫雷界面,根据下面的二维矩阵进行扫雷。

    在这里插入图片描述

    如下图所示,前面3个果然时空格,而第四个则时雷。“8A”是雷,“0F”是空格实锤,而且点过的地方会变成数字,比如“40”、“41”、“42”等。

    在这里插入图片描述


    第十步:写个程序进行扫雷数据区详细分析。
    我们重新运行程序,选择“查找”->“当前模块中的名称”,找到双缓存技术的核心函数BitBlt,然后重新找一下,找到代码位置。如下图所示,EBX就是雷区的起始位置,我们要想办法把它读取出来,再往前“MOV EBX, 01005360”代码看到了EBX的赋值定义。

    在这里插入图片描述

    接着我们输入F7单步调试,执行完0x010026C4赋值语句后,我们在数据窗口中跟随EBX寄存器,显示如下图所示。前面8个均为“0F”表示空格,第9个为雷,再验证一次“01005360位置”,就开始准备写程序了。

    在这里插入图片描述

    验证成功,开始写程序吧!

    在这里插入图片描述


    第十一步:扫雷辅助程序。
    我们编写了这样一个程序,当它开启后,我们鼠标移动到方格,如果是雷它的标题会变成“扫雪(xue)”,然后我们不点击它就可以了。哈哈~

    在这里插入图片描述

    正常是“扫雷”。

    在这里插入图片描述

    雷区显示为“扫雪”。当然你也可以写得更隐蔽些,比如和苹果电话手表建立连接,如果是“雷”让手表震动一下,否则正常。

    在这里插入图片描述


    注意,基本原理知道后,就需要开发解决问题了。对于安全行业来说,不管是做病毒还是研究漏洞利用或游戏防护的,逆向分析都是基础,开发解决问题才是关键。比如,某个病毒样本的行为已经分析清楚了,这个病毒在哪里创建系统文件、修改哪个系统文件、注入到哪个进程、动了哪个注册表等等,逆向分析第一步完成,但更重要的是怎么解决问题,创建注册表就需要删除注册表,修改系统文件就要还原文件。

    我们在网上搜索某些病毒资料时,有些逆向工程师会给出手工修复方案,比如关闭哪个服务、删除哪个隐藏文件、手工清除注册表哪一项等。但是对于安全公司来说,比如360公司,你安全扫描完成之后,不可能弹框提示用户手工修复,而是需要提供自动化方案一键修复,最终结果是需要修改杀毒软件的引擎代码,或者提供专杀工具给用户,这个时候工具需要自动化完成相关操作。

    很多新手会看不起开发,觉得搞逆向、搞网安的是王道,不用学开发,这是不对的。 针对上面的实战,我们就发现逆向是站在开发基础上,反向推导作者是怎么做的,比如扫雷需要思考作者会用什么方式表示雷区,然后怎么用UI体现出来以及调用什么函数实现。所以,逆向分析之前都要教开发类的课程,《数据结构》《操作系统》《计算机组成原理》《编译原理》等课程掌握越深入越好。



    三.扫雷游戏检测工具

    通过第二部分,我们知道以下信息:

    • 扫雷的首地址为0x01005360
    • 显示“0F”表示空格,显示“8F”表示雷
    • 雷区的边界为0x10

    原理是找到雷在内存中的值,只要不是雷值我们把它点击开来。接下来作者再补充一个逆向辅助工具,通过CheatEngine实现雷区检测。

    Cheat Engine又称CE修改器,是一款内存修改编辑工具。你可以通过Cheat Engine软件来修改游戏中的内存数据、人物属性、金币数值等等,功能强大且操作简单,可以为你带来良好的更好的体验游戏。


    1.Cheat Engine确定起始位置

    第一步,打开Cheat Engine软件,点击“选择打开一个程序”按钮,如下图所示。

    在这里插入图片描述

    打开扫雷软件设置为初级。

    在这里插入图片描述


    第二步,选择扫描类型为“未知的初始数值”,选择“数值类型”为字节,然后点击“首次扫描”。

    在这里插入图片描述

    此时显示7,290,880个数据,如下图所示:

    在这里插入图片描述


    第三步,接着我们点击扫雷,然后在“扫描类型”中选择“变动的数值”,点击“再次扫描”,此时返回结果183,169个。最终通过反复的筛选找到首地址。

    在这里插入图片描述

    继续点击扫描,如下图所示。

    在这里插入图片描述


    第四步,如果出现地雷则选择“未变动的数值”,点击“再次扫描”,接着继续新一轮的扫雷游戏。

    在这里插入图片描述

    在这里插入图片描述

    始终以第一个方格的状态为目标进行重复的操作。

    • 开始扫描:设置“未知的初始数值”
    • 扫描第一个格子:设置“变动的值”
    • 继续扫描,结果是雷:设置“未变动的值”
    • 继续扫描,结果非雷:设置“未变动的值”
    • 重新开始:设置“变动的值”
    • 重新开始如果第一个格子和上一次一样,则设置“未变动的值”,否则“变动的值”

    下图展示了最后5个结果,接着继续反复筛选。

    在这里插入图片描述

    最终获取如下图所示的结果,其初始地址为——0x01005361,和前面OD软件分析的一样。

    在这里插入图片描述


    第五步,双击该行移动至底部,然后右键选择“浏览相关内存区域”选项。

    在这里插入图片描述

    显示内容如下图所示,它同样和我们前面OD分析的内容一致。其中“8F”表示雷,“40”表示空格,“41”到“49”表示数字,“10”表示边界,同时“0F”表示隔一行。

    在这里插入图片描述

    如下图所示,成功完成了扫雷游戏,O(∩_∩)O

    在这里插入图片描述

    在这里插入图片描述


    2.Cheat Engine确定边界

    第一步,我们查看扫雷初级的高度是“9”,然后重新打开建立“新的扫描”。

    在这里插入图片描述

    输入数字“9”再点击“首次扫描”,返回7174个结果。

    在这里插入图片描述


    第二步,选择中级难度,对应的高度是“16”,然后重新打开建立“再次扫描”,仅剩4个结果。

    在这里插入图片描述

    在这里插入图片描述


    第三步,选择高级难度,设置高度最高即“24”,然后重新打开建立“再次扫描”

    在这里插入图片描述

    最终剩2个结果,高度可能是:

    • 0x01005338
    • 0x010056A8

    在这里插入图片描述


    第四步,使用同样的方法找到宽度。
    宽度返回两个结果:

    • 0x01005334
    • 0x010056AC

    在这里插入图片描述



    3.C++编写鼠标坐标获取案例

    接下来我们开始编写代码,首先给大家看看鼠标坐标获取的一段代码,我们鼠标通常是(x, y)的形式。

    第一步,创建空项目,名称为“MouseMsg”。

    在这里插入图片描述


    第二步,为该工程添加一个“main.cpp”文件,并且添加启动项。

    在这里插入图片描述

    在这里插入图片描述


    第三步,配置graphics.h文件。
    graphics.h是一个针对Windows的C语言图形库,分为像素函数、直线和线型函数、多边形函数、填充函数等。在学习C++游戏编程时,通常会发现VS中没有”graphics.h”头文件,因此需要配置。

    (1) 先从作者github中下载好所需要的文件,如下所示:

    在这里插入图片描述

    下载完后打开下载好的 Inlcude 文件夹,里面有两个头文件:

    在这里插入图片描述

    (2) 将里面的两个文件进行复制,然后粘贴到VS安装目录的include文件夹中。

    • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include

    在这里插入图片描述

    (3) 打开下载好的文件夹中的 lib2015子文件夹,将里面的东西全部选中复制,粘贴到VS2015安装目录的 lib 文件夹中。

    • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\lib\x86
    • C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\lib\x64

    在这里插入图片描述
    在这里插入图片描述

    (4) 接下来就可以在VS中添加“graphics.h”头文件了,里面有很丰富的绘图函数可供我们使用。

    #include <graphics.h>              // 引用图形库头文件
    #include <conio.h>
    
    int main()
    {
    	initgraph(640, 480);            // 创建绘图窗口,大小为 640x480 像素
    	setlinecolor(RGB(255, 0, 0));   // 设置当前线条颜色
    	setfillcolor(RGB(0, 255, 0));   // 设置当前填充颜色
    	fillcircle(200, 200, 100);      // 画圆,圆心(200, 200),半径 100
    	_getch();                       // 按任意键继续
    	closegraph();                   // 关闭图形环境
    }
    

    在这里插入图片描述


    第四步,编写鼠标事件代码。

    #include <graphics.h>              // 引用图形库头文件
    #include <stdio.h>
    
    int main()
    {	
    	//定义鼠标
    	MOUSEMSG m;
    	//初始化窗口 500宽度 500高度
    	initgraph(500, 500);
    
    	while (1) {
    		//获取鼠标消息
    		m = GetMouseMsg();
    		char buff[256];
    
    		//鼠标左键按下
    		if (m.uMsg == WM_LBUTTONDOWN) {
    			//清空数组
    			memset(buff, 0, 256);
    			sprintf_s(buff, "X坐标:%d, Y坐标:%d", m.x, m.y);
    			MessageBox(NULL, buff, "坐标", MB_OK);
    		}
    	}
    	return 0;
    }
    

    运行前需要设置编码方式为“使用多直接字符集”,否则会报错。

    在这里插入图片描述

    运行结果如下图所示,可以看到鼠标点击会显示对应的坐标位置。

    在这里插入图片描述

    其中GetMouseMsg函数表示获取鼠标消息,通过Spy++可以看到很多Windows系统自带的鼠标操作、键盘操作、消息操作等,同时能获取鼠标是左键或右键按下以及对应坐标。

    在这里插入图片描述



    4.C++编写自动扫雷程序

    接下来是通过C++实现一键扫雷功能,主要是模拟鼠标在雷区的点击操作,并且按下所有非雷区域从而实现一键扫雷。利用的是Windows应用程序的消息机制,通过SendMessage函数向指定窗口发送消息,也就是在获取到扫雷的窗口句柄后,利用这个函数向该窗口发送鼠标按键消息,从而实现模拟鼠标的操作。

    该部分参考ioio_jy老师的文章:逆向工程第007篇:扫雷辅助的研究——0秒实现一键自动扫雷

    第一步,创建一个应用程序名叫“SaoleiHelp”,并添加主函数。

    在这里插入图片描述


    第二步,分析扫雷的区域及坐标定义。
    坐标是基于客户区的左上角,但是这个客户区是怎么定义的呢?
    如下图所示,究竟A点是客户区的左上角,还是说B点才是呢?如果A点为坐标原点,那么第一块雷区的坐标就应为(AC,CE),如果B点为坐标原点,那么第一块雷区的坐标就应为(BD,DE)。经过实际测试,MSDN中所谓的客户区,其实是以B点作为起点的位置,即原点坐标(0,0),而雷区中心即E点的坐标为(16,61),每个雷区小方块的大小为16×16,于是可以知道,这里需要循环计算出雷区每一个小方块的坐标,这个坐标与保存有雷区的二维数组下标紧密相关。

    在这里插入图片描述

    假设这个二维数组是mine[y1][x1],其中y1表示的是雷区有多少行,x1表示雷区的列数,那么每个雷区方块的坐标为:

    x = x1 * 16 + 16;
    y = y1 * 16 + 61;
    

    在获得了坐标以后,就可以通过如下语句来模拟鼠标的点击操作了:

    SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(x, y));
    SendMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(x, y));
    

    第三步,分析扫雷游戏的雷区长宽数据。
    结合之前宽度、高度的分析,发现高度位置为0x01005338,宽度位置为0x01005334。我们进一步推断,从0x01005330开始,这里的一行绿色数据包含有0x0A、0x09以及0x09这三个数值,很明显这三个数据正是当前雷区的地雷数量以及宽、高等信息

    • 雷数:0x01005330
    • 宽度:0x01005334
    • 高度:0x01005338

    在这里插入图片描述

    同时,我们上面的逆向分析已经知道雷区分布的信息。

    • “8F”表示地雷
    • “8E”表示旗子
    • “40”表示空格
    • “41”到“49”表示数字
    • “10”表示边界
    • “0F”表示隔一行

    还有一个重要信息是雷区的分布起始地址,即:

    • 0x01005361

    但如果计算含有边界的情况,雷区的分布情况则为:

    • 起始地址:0x01005340
    • 结束地址:0x0100567F

    在这里插入图片描述


    完整代码如下:

    #include <stdio.h>
    #include <windows.h>
    #include <graphics.h>
    
    int main() {
    	DWORD Pid = 0;
    	HANDLE hProcess = 0;
    
    	DWORD result1, result2;
    
    	// 获取扫雷游戏对应的窗口句柄
    	HWND hWnd = FindWindow(NULL, L"扫雷");
    	if (hWnd != 0) {
    		// 获取扫雷进程ID
    		GetWindowThreadProcessId(hWnd, &Pid);
    		// 打开扫雷游戏获取其句柄
    		hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);
    		if (hProcess == 0) {
    			printf("Open winmine process failed.");
    			return 0;
    		}
    
    		// 存放雷区的起始地址
    		DWORD dwBoomAddr = 0x01005340;
    
    		// 雷区的最大值(包含边界)
    		DWORD dwSize = 832;
    		PBYTE pByte = NULL;
    		pByte = (PBYTE)malloc(dwSize);
    
    		// 读取整个雷区的数据
    		ReadProcessMemory(hProcess, (LPVOID)dwBoomAddr, pByte, dwSize, 0);
    		int i = 0;
    		int j = 0;
    		int n = dwSize;
    
    		// 读取雷区的长和宽
    		DWORD dwInfo = 0x01005330;
    		DWORD dwHeight = 0, dwWidth = 0;
    		ReadProcessMemory(hProcess, (LPVOID)(dwInfo + 4), &dwWidth, sizeof(DWORD), 0);    //宽度
    		ReadProcessMemory(hProcess, (LPVOID)(dwInfo + 8), &dwHeight, sizeof(DWORD), 0);   //高度
    
    		int h = dwHeight;
    		int count = 0;
    
    		// 雷区转换,去掉雷区多余的数据
    		PBYTE pTmpByte = NULL;
    		pTmpByte = (PBYTE)malloc(dwHeight * dwWidth);
    		while (i < dwSize) {
    			//边界判断
    			if (pByte[i] == 0x10 && pByte[i + 1] == 0x10) {
    				i = i + dwWidth + 2;
    				continue;
    			}
    			else if (pByte[i] == 0x10) {
    				for (j = 1; j <= dwWidth; j++) {
    					pTmpByte[count] = pByte[i + j];
    					count++;
    				}
    				i = i + dwWidth + 2;
    				continue;
    				h--;
    				if (h == 0) break;
    			}
    			i++;
    		}
    
    		// 获取雷区方块的坐标,然后模拟鼠标进行点击
    		int x1 = 0, y1 = 0;
    		int x = 0, y = 0;
    		for (i = 0; i < dwHeight * dwWidth; i++) {
    			if (pTmpByte[i] != 0x8F) { //雷
    				x1 = i % dwWidth;
    				y1 = i / dwWidth;
    				x = x1 * 16 + 16;
    				y = y1 * 16 + 61;
    				SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(x, y));   //鼠标按下
    				SendMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(x, y));     //鼠标抬起
    			}
    		}
    
    		free(pByte);
    		CloseHandle(hProcess);
    	}
    	else {
    		printf("Get hWnd failed.");
    	}
    	return 0;
    }
    

    运行结果如下图所示,一秒实现扫雷。

    在这里插入图片描述



    四.总结

    写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后进行简单的总结下。

    • 一.什么是逆向分析
      1.逆向工程
      2.逆向分析的典型应用
    • 二.扫雷游戏逆向分析
      1.游戏介绍
      2.OllyDbg动态分析
    • 三.扫雷游戏检测工具
      1.Cheat Engine确定起始位置
      2.Cheat Engine确定边界
      3.C++编写鼠标坐标获取案例
      4.C++编写自动扫雷程序

    学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,深知自己很菜,得努力前行。

    在这里插入图片描述

    《珈国情》
    明月千里两相思,
    清风缕缕寄离愁。
    燕归珞珈花已谢,
    情满景逸映深秋。
    最感恩的永远是家人的支持,知道为啥而来,知道要做啥,知道努力才能回去。夜已深,虽然笨,但还得奋斗。

    (By:Eastmount 2020-07-26 星期一 晚上9点写于武汉 http://blog.csdn.net/eastmount/ )



    2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

    参考文献:
    真心推荐大家好好看看这些视频和文章,感恩这些大佬!
    [1] 科锐逆向的钱林松老师受华中科技大学邀请- “逆向分析计算引导”
    [2] c++学习笔记——VS2015中添加graphics.h头文件 - 行歌er
    [3] 逆向工程第007篇:扫雷辅助的研究——0秒实现一键自动扫雷
    [4] https://www.bilibili.com/video/BV18W411U7NH
    [5] [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [6] [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向

    展开全文
  • 智能手机风险分析安全防护 班级信管111 学好1111010315 姓名李浩 一研究背景和意义发展现状 说到智能手机风险分析安全防护自然就要先讲一讲智能手机以及智能手机的背景及发展现状了那么首先是智能手机又是什么呢...
  • 抓包分析技术的意义,防火墙、入侵检测等安全软件的基础.docx
  • 网络安全协议在计算机通信技术当中的作用与意义分析.pdf
  • 中国石油安全的多因素及安全战略分析,陈惠芬,张斌,资源具有稀缺性是经济学研究的前提。稀缺的石油资源备受关注。石油安全对于不同类型的国家具有不同的含义,对中国而言是指石油供
  • 单位局域网网络安全分析 摘要现阶段计算机网络技术广泛应用到各单位的生产活动中极大程度的提升了工作效率为单位带来了更加理想的经济利益但是也必须正确看待网络安全问题单位局域网络的安全问题不仅仅是技术方面的...
  • 摘要近年来计算机网络的发展非常迅速并且得到了广泛的应用不过计算机网络面临的各类安全问题也是不容忽视的基于此对计算机网络安全隐患实行分析并实行有效防范和处理具有非常重要的意义本文首先分析了计算机网络安全...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 327,855
精华内容 131,142
关键字:

安全分析的意义