草庐IT

信息安全与技术——(十一)恶意代码检测与防范技术

TUTOU程序猿 2023-04-03 原文

文章目录

1.恶意代码(Malicious Code)

恶意代码(Malicious Code )或恶意软件(Malware )主要是指以危害信息的安全等不良意图为目的的程序,它们一般潜伏在受害计算机系统中实施破坏或窃取信息。

2.恶意代码对系统带来的影响

3.典型病毒

  • 早期的蠕虫病毒,冲击波蠕虫震荡波蠕虫就是典型的蠕虫病毒(攻击系统)
  • 早期的熊猫烧香病毒(危害数据)
  • 木马病毒(泄露信息)
  • DDoS攻击木马(影响性能)
  • 邮箱病毒(攻击程序)

3.1蠕虫病毒

1.冲击波蠕虫

  • 冲击波(Worm.Blaster)病毒是利用微软公司在7月21日公布的RPC漏洞进行传播的,只要是计算机上有RPC服务并且没有打安全补丁的计算机都存在有RPC漏洞,具体涉及的操作系统是:Windows2000、XP、Server 2003。
  • 该病毒感染系统后,会使计算机产生下列现象:系统资源被大量占用,有时会弹出RPC服务终止的对话框,并且系统反复重启,不能收发邮件、不能正常复制文件、无法正常浏览网页,复制粘贴等操作受到严重影响,DNS和IIS服务遭到非法拒绝等。下面是弹出RPC服务终止的对话框的现象:

2.震荡波蠕虫

  • 震荡波电脑病毒于2004年4月30日爆发,短短的时间内就给全球造成了数千万美元的损失。
  • 电脑一旦中招就会莫名其妙地死机或重新启动计算机,而在纯 DOS 环境下执行病毒文件,则会显示出谴责美国大兵的英文语句。

3.2熊猫烧香病毒

  • “熊猫烧香”,是由李俊制作并肆虐网络的一款电脑病毒,是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒
  • 它不但能感染系统中exe,com,pif,src,html,asp等文件,它还能终止大量的反病毒软件进程并且会删除扩展名为gho的文件(该类文件是一系统备份工具“GHOST”的备份文件,删除后会使用户的系统备份文件丢失)。
  • 被感染的用户系统中所有.exe可执行文件全部被改成熊猫举着三根香的模样

3.3木马病毒

  • 木马病毒是计算机黑客用于远程控制计算机的程序,将控制程序寄生于被控制的计算机系统中,里应外合,对被感染木马病毒的计算机实施操作。一般的木马程序都会导致个人隐私泄露,并不限定几种。
  • 特洛伊木马, 是一种非常危险的恶性程序,它无休止地窃取用户的信息,从而给用户造成了巨大的损失。

如:“NOPEN”的远程木马病毒
美国国安局的间谍设备被曝光,其中有一款名为“NOPEN”的远程木马病毒,这种病毒手段非常高
明,遭到攻击后电脑会被完全控制,美国已经使用这种手段入侵了全球大量的计算机,这些设备在被
病毒控制后隐私信息一览无余,其中还包括许多事关国家安全的机密信息。

3.4DDoS攻击木马

DDoS攻击木马(僵尸网络)DDoS特洛伊木马将受害者的设备变成僵尸,参与更大的僵尸网络。攻击者的目标是在设备所有者不知情的情况下获取尽可能多的机器并将它们用于恶意目的——通常是作为分布式拒绝服务(DDoS)攻击的一部分用虚假流量淹没服务器。

3.5邮箱病毒

  • 邮箱病毒即邮件病毒,对通过电子邮件形式发送的计算机病毒,我们称之为“邮件病毒”。
  • 邮箱病毒可以像生物病毒一样进行繁殖,当正常程序运行的时候,它也进行运行自身复制,是否具有繁殖、感染的特征是判断某段程序为邮箱病毒的首要条件。
  • 计算机中毒后,可能会导致正常的程序无法运行,把计算机内的文件删除或受到不同程度的损坏。

4.恶意代码的特性

  • 针对性:如勒索病毒
  • 欺骗性:如情书病毒
  • 变化性:规避防火墙、杀毒软件

4.1勒索病毒

  • 勒索攻击又称为“赎金木马”,是指网络攻击者通过对目标数据强行加密,导致企业核心业务停摆,以此要挟受害者支付赎金进行解密。如同我们把钱放在保险箱,小偷没有撬开保险箱偷钱,反而把放保险箱的房间加了把锁。如果没有房间的钥匙,我们依然拿不到保险箱里的钱。
  • 1989年,哈佛大学学生约瑟夫·L·波普制作了全球首个勒索病毒—AIDS木马,这位哈佛高材生将勒索病毒隐藏在软盘中并分发给国际卫生组织艾滋病大会的参会者。此款勒索病毒会记录用户设备重启次数,一旦超过90次就会对电脑中的文件进行加密,并要求邮寄189美元才能解密重新访问系统。

4.2情书病毒

在2000年左右的情书病毒(Loveletter virus),在它发布后就攻击了数以万计的电脑——通过给用户发送一封表白邮件,引诱你打开 I Love You的附件,便开始将用户的本地图片、文件替换,并将该邮件再次发给通讯录中的其他好友。

5.计算机病毒

  • 计算机病毒能够寻找宿主对象,并且依附于宿主,是一类具有传染、隐蔽、破坏等能力的恶意代码传染性和依附性是计算机病毒区别于其他恶意代码的本质特征
  • 计算机病毒分为引导型病毒文件型病毒2种。
  • 引导型病毒:指寄生在磁盘引导区或主引导区的计算机病毒。此种病毒利用系统引导时,不对主引导区的内容正确与否进行判别的缺点,在引导系统的过程中侵入系统,驻留内存,监视系统运行,待机传染和破坏。
  • 文件型病毒:文件型病毒是计算机病毒的一种,主要通过感染计算机中的可执行文件(.exe)和命令文件(.com)。文件型病毒是对计算机的源文件进行修改,使其成为新的带毒文件。一旦计算机运行该文件就会被感染,从而达到传播的目的。

典型:蠕虫病毒
蠕虫病毒是一种常见的计算机病毒,是无须计算机使用者干预即可运行的独立程序,它通过不停
的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。计算机病毒是指编制或者在
计算机程序中插入的破坏计算机功能或者破坏数据和恶意篡改系统.影响计算机使用并且能够自
我复制的一组计算机指令或者程序代码。

6.恶意代码生命周期

6.1恶意代码传播

6.2恶意代码感染途径

6.3恶意代码的触发

7.恶意代码分析

恶意代码分析过程实际上是了解恶意代码运行过程、传播机制和功能用途的过程,通过静态查看恶意代码相关的代码或数据文件,可以帮助分析人员对恶意代码有基本的了解,而要全面和深入地掌握恶意代码的内部细节,往往需要开展动态分析。

7.1静态分析

通过反汇编二进制文件寻找关键的代码流程来帮助分析理解恶意代码的内部细节。

7.2动态分析

动态分析通过实际运行恶意代码,跟踪和观察其执行细节来帮助分析人员理解恶意代码的行为和功能,由于分析过程中恶意代码被实际执行,因此分析过程能够真实展现恶意代码的内部细节。

7.3动态污点分析

细粒度地跟踪和监控恶意代码执行流程,揭示恶意代码的运行机理。

8.恶意代码检测

9.恶意代码清除

清除恶意代码是指尽量在保全被感染程序功能的情况下移除恶意代码或使其失效,清除工具或人员一般需要了解相关恶意代码的感染机制。

10.恶意代码的预防

恶意代码的预防是指抵御恶意代码的传播和感染,它的方法主要是切断传播和感染的途径或破坏他们实施的条件。

有关信息安全与技术——(十一)恶意代码检测与防范技术的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  5. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  6. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  7. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  8. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  9. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  10. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

随机推荐