一直就想写这篇东西了,仅仅是上班时说要上班,不写。回家后又忙着玩游戏,丢一边去了。如今仅仅好不务正业的开写了。希望头儿不会知道我的blog。哈哈   在非常久之前就对HTML的病毒非常感兴趣了,非常好奇怎么能远程向本地不经过同意就能下载可执行文件的,仅仅是一直没机会搞得到ASP的原码,所以不才敢断章取义的去作什么分析。近期一次听一朋友说他看一个网页时病毒防火墙提示有病毒。叫我小心(先感谢一下他先),我闪了一下念头,就打开FlashGet把那个病毒首页下了下来。

  略微看了一下发如今首页代码的以下几行里有一个隐含的浮动帧。其引用的URL地址并非本地的,感觉应该是了,然后再次动用FlashGet下了下来。竟然发现放病毒的空间不支持ASP,下下来的ASP文件是源文件。这样兴趣来了,三下五除二的把全部病毒的相关文件都下了下来。   因为这个病毒非常easy。所以我也仅仅摘抄了一些片段而以,假设实在感兴趣的话。不防去找一个有病毒的网页瞅瞅,只是。不要用IE去看,要用FlashGet等下载工具下载下来。再用记事本打开,不然中招了可不要来找我。好了正文開始。   真正的病毒有三个文件,一个是引导文件。一个是下载文件,第三个是激活文件。

  第一个引导文件     关键部分是:         这个作用是将下载和激活两个文件当作该页的对象来引用并执行,这个也是病毒文件可以在本地进行感染的关键地方,在引用的文件中竟然可以无阻碍的引用client的Action组件。唉唉,这就是那把刀啊。

  第二个是下载exe病毒文件     然后是怎么将exe下载下来,而不弹出下载的提示框呢。

这个是收下载文件来完毕的任务。     该病毒的作法是在server端用Microsoft.XMLHTTP组件和response.contenttype = "image/gif"将病毒文件以图片格式下载到client的网页缓存里(这里是非常easy的Get/BinaryWrite操作。就不具体说了)。
  第三个是激活     感觉激活的过程非常巧妙。病毒是先用fso在c:\下生成一个hta文件。将激活过程写到这个文件中。

然后再用WScript.Shell来执行这个文件。这样,激活过程中需要大权限的操作(比方:写注冊表操作)就没问题了。     具体操作过程是这样的。将在网页缓存文件夹里的病毒文件移动到系统文件文件夹。然后改名为win.exe。

再往注冊表里写入自启动的键。使得病毒能在系统重新启动后自己主动启动,然后删除hta文件,完毕感染和激活。

  这就是病毒的基本执行过程(按照惯例病毒破坏部分就不提了),可是这个对我们有什么用呢。事实上这样的病毒我是非常讨厌的,可是,其下载exe和激活过程还是有可利用的地方的。

比方:你作的系统必需要client下载一些组件并激活后才干使用的,这样的操作面对了解的人当然是不成问题,可是假设你面对的是那种网络是什么都还没搞清林的用户时。我预计系统还没開始使用你的电话就要打爆了。假设借用种方式,在对方同意的情况下自己主动下载组件,并自己主动激活。那就省事多了。是吧。
  只是。这样的方式对小形文件是非常方便,假设要下载1m以上的文件..那就要考虑多线程下载的操作了。当然这个不是这篇文章的范围了。以后有机会再说说用ASP+XML实现WEB多线程上传多线程下载的方法吧。

一个简单的HTML病毒分析的更多相关文章

  1. 从一个简单的小实例分析JSP+Servelt与JSP+Struts2框架的区别

    最近在学struts2,struts2相比以前的JSP+Servlet,在处理流程上的更简单,我们就一个小实例来具体分析一下. 实例内容如下: 实现一个简单的注册页面包括:用户名.密码.重复密码.年龄 ...

  2. UNP学习笔记2——从一个简单的ECHO程序分析TCP客户/服务器之间的通信

    1 概述 编写一个简单的ECHO(回复)程序来分析TCP客户和服务器之间的通信流程,要求如下: 客户从标准输入读入一行文本,并发送给服务器 服务器从网络输入读取这个文本,并回复给客户 客户从网络输入读 ...

  3. 第一讲 一个简单的Qt程序分析

    本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...

  4. 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题

    很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...

  5. 【转】用C写一个简单病毒

    [摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...

  6. Linux内核分析—完成一个简单的时间片轮转多道程序内核代码

    ---恢复内容开始--- 20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-10 ...

  7. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  8. Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  9. Arachnid包含一个简单的HTML剖析器能够分析包含HTML内容的输入流

    Arachnid是一个基于Java的web spider框架.它包含一个简单的HTML剖析器能够分析包含HTML内容的输入流.通过实现Arachnid的子类就能够开发一个简单的Web spiders并 ...

随机推荐

  1. Open MSDN document directly without Visual Studio

    "C:\Program Files (x86)\Microsoft Help Viewer\v2.2\HlpViewer.exe" /catalogName VisualStudi ...

  2. Slim安装以及使用【转】

    最近在用backbone.js 做东西,因为牵扯到REST services 所以需要后台支持,此处选择了php.Slim 是php的一个框架. 貌似国内文章对此的介绍比较少,在安装Slim的过程中出 ...

  3. [hdu1823]Luck and Love(二维线段树)

    解题关键:二维线段树模板题(单点修改.查询max) #include<cstdio> #include<cstring> #include<algorithm> # ...

  4. crontab学习笔记

    一.crond与crontab简介 在Linux系统中,循环运行的例行性计划任务,是由 cron (crond) 这个系统服务来控制的,而crontab命令则被用来提交和管理用户的需要周期性执行的任务 ...

  5. Qt程序无法输入中文的问题

    问题 在Linux环境下,用Qt编写的程序运行时不能在诸如输入框.文本框中输入中文(不会激活中文输入法). 注意与输入法类型有关(基于iBus或Fcitx) 原因 Qt程序的中文输入支持需要用Qt插件 ...

  6. archives of source

    "ubuntu 暂时不能解析域名 archive.ubuntu.com"怎么办? root下输入命令:lsb_release -a用来查询Ubuntu版本号 登录网站 http:/ ...

  7. Linux虚拟机安装配置手册(版本:7.3)

    一.准备 ①.安装VMWare 安装步骤省略.我这里使用的版本如下: ②.Linux系统镜像文件: 建议使用最新版本的Linux系统.有些组件对系统内核版本要求比较高,有可能会产生错误. 我这里使用的 ...

  8. 项目中遇到的死锁问题: Lock wait timeout exceeded; try restarting transaction

    最近项目中频繁出现  Lock wait timeout exceeded; try restarting transaction这个错误,把我们弄得痛苦不堪啊,为了解决问题,上网上找好多资料,终于把 ...

  9. 马尔可夫决策过程MDP

    1. 马尔可夫模型的几类子模型 马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM).它们具有的一个共同性质就是马尔可夫性(无 ...

  10. perl读取excel

    因为工作当中遇到要处理大数据的excel的玩意,最多的有几十万行.用perl的方式试试,看看效果如何. ppm install OLE::Storage_Lite #如果不安装这个,后面两个安装不了 ...