草庐IT

表单抓取类恶意软件,一种在线安全的无声威胁

陈峻 2023-03-29 原文

译者 | 陈峻

审校 | 孙淑娟

表单抓取(Form-Grabbing)类恶意软件每天都在悄无声息地感染着数千台计算机。而就在您的不经意之间,这种恶意软件窃取到了您的敏感数据,进而向其他的恶意黑客授予对您的计算机的访问权限,以便他们能进一步向您发送垃圾邮件,或窃取您更多的信息。

什么是表单抓取类恶意软件?

此类表单抓取类恶意软件往往是专门针对从浏览器的页面上捕获Web表单数据(如:用户名、密码和其他个人信息)而设计的。

尽管键盘记录器(keylogger)至今仍会被用来窃取管理员的数据,但是表单抓取可谓获取浏览器凭据的最常见方式之一。它们主要被用于用户通过互联网,与银行网站的安全服务器交互之前,从表格中识别并窃取重要数据信息。

与键盘记录器不同,即使用户的数据和凭据只是通过粘贴,自动填充,以及使用虚拟键盘输入的,也会被表单抓取器所获取到。这些被收集到的信息随后会被存储,进而传输到特定的服务器上。

表单抓取的发展史

虽然此项技术诞生于2003年,但是直到2007年的Zeus出现之后,表单抓取才被认为是一种主要的恶意软件攻击。该恶意软件往往会被嵌入到发送给多个收件人的电子邮件中。此类邮件的目标就是要让人们错误地认为,它们来自信誉良好的银行或公司。从2011年被公布于世的Zeus源代码来看,它能够允许创建不同版本的木马。

尽管初代Zeus的代码已经被淘汰,但是由其产生的、非常恶劣的表单抓取类恶意软件,至今仍在互联网上肆虐。其中最为著名的当属SpyEye。SpyEye使用的便是其前身Zeus的相关代码,并以网络浏览器为目标,通过记录击键,在用户登录银行门户时,窃取其凭据和授权。

SpyEye非常难以被察觉和追踪到。它主要通过来自不安全的网站链接、以及垃圾邮件的方式,潜入您的计算机,进而主动发起交易,窃取资金,并将其发回给其创建者。

表单抓取类恶意软件的工作原理

如前所述,一种成功的抓取表单软件的关键是,在浏览器和网络栈之间插入恶意软件,以便在数据被加密之前,就拦截内容。

首先,它需要在浏览器中安装浏览器帮助对象(Browser Helper Object,BHO)。这允许恶意软件寻找对于HttpSendRequest函数的调用。而HttpSendRequest函数主要负责建立到互联网的连接,并将HTTP请求发送到指定的站点处。

恶意软件通常会在每次启动时将​​动态链接库文件​​​ (Dynamic Link Library files,DLL​​) ​​输入到浏览器中。同时,此类恶意软件还会更改HTTP函数,通过重新配置它们,以允许在入栈之前,将请求发送到含有木马的代码所有者那里。

如何免受表单抓取类恶意软件的侵害

对付表单抓取器的最有效方法之一,便是安装带有病毒签名的防护软件。此外,限制用户的权限,以防止下载BHO,则是防止木马程序入侵系统的另一种策略。

安装病毒防护软件

防病毒软件可以通过扫描来自互联网的流量,并根据已知的威胁,标记出那些可疑的交互,进而尽快地阻止恶意软件的自我植入,以及木马程序的弹窗。同时,若要使得防病毒软件能够有效地抵御表单抓取之类的恶意程序,则需要通过持续更新的方式,来防范最新形式的恶意软件。

当然,有些程序可能会直接强制您使用手动的检查方式。不过,由于人工判断能力的不同,有时候这种做法会让那些处于远程设备上的恶意软件被轻易地忽略掉,而不被发现。而更糟糕的是,在大多数时候,即使防病毒软件检测到了木马恶意软件,也只是会将它们置于隔离区中,等待用户主动去查看,以及按需删除。可见,在此类应用场景中,我们更需要的是病毒防护软件能够对所有系统执行自动扫描,立即对检测到的恶意软件予以删除。这才是应对表单抓取器最有效的方法。

避免未经加密的连接

您应该避免在未加密的网站上填写表格。仅仅使用HTTP的网站,如今已被Google Chrome等流行的浏览器标记为不安全的方式。用户在访问时,会收到有关该网站不安全的警告。

通常,使用HTTPS协议的网站更为安全。一个带挂锁的符号通常会出现在URL地址栏中,以表明该网站正在使用HTTPS协议,且为安全的。由于它使用复杂的加密来保护网站和浏览器之间数据的交换,因此HTTPS不允许任何形式的抓取或键盘记录。

其实,HTTPS与HTTP属相同的协议。唯一的区别在于,前者建立在安全传输层(Transport Layer Security,TLS)之上。它除了加密Web应用与其服务器之间的连接之外,还可以保护电子邮件和消息的传递。

更重要的是,使用HTTP的网站只能将其数据以纯文本形式传输,使得恶意攻击者能够很容易地读取到它们。相反,即使您的计算机中存在着恶意软件,若您访问的网站是运行在HTTPS协议之上的网站,那么恶意软件收到了数据后,也无法读取或解码已加密的信息。

使用URL黑名单

在您访问某个网站之前,为了安全起见,请确保它没有被列入黑名单。为此,您可以使用​​Google透明度报告​​(Google Transparency Report)。如下图所示,请在页面的搜索栏中输入待访问网站的URL,如果列出了该网站的相关诊断信息,则可以确认它会通过插件和下载的方式传播恶意软件。通过避免访问被列入黑名单的网站,我们可以有效地减少恶意软件进入计算机的机会。

设置网络防火墙

此外,有许多不安全的页面还会带有有害的重定向,因此它们也会被列入黑名单。为此,您也可以将这些已列入黑名单的网站,添加到防火墙中,以确保自己在浏览互联网时,不会意外地连接到它们。毕竟,Web防火墙在阻止这些重定向的同时,起到了保护敏感数据免受表单抓取器侵害的作用。

小结

目前,虽然表单抓取类恶意软件十分常见,但是我们可以采取一些积极的防护措施,以确保仅从受信任的来源下载扩展和插件,进而防止数据被盗。同时,您也可以通过创建有害网站和服务器的列表,并将它们添加到防火墙的黑名单中,来保护您的计算机。

当然,防病毒程序也是不错的选择,最好它们能够自动扫描恶意软件,并立即将其删除。就个人习惯而言,您应该尽量避免访问非HTTPS协议的站点。因为表单抓取木马就会在那里等着您的光顾。 

译者介绍

陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。

原文标题:Form-Grabbing Malware: A Silent Threat to Your Online Security,作者:OLUWADEMILADE AFOLABI


有关表单抓取类恶意软件,一种在线安全的无声威胁的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. 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

  3. ruby - 如何在 Rails 4 中使用表单对象之前的验证回调? - 2

    我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser

  4. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  5. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  6. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  7. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  8. ruby-on-rails - Rails 单选按钮 - 模型中多列的一种选择 - 2

    我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模

  9. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  10. RUBY - 网页抓取 - (OpenURI::HTTPError) - 2

    我正在尝试用ruby​​编写一个简单的网络抓取代码。它一直工作到第29个url,然后我收到此错误消息:C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:346:in`open_http':500InternalServerError(OpenURI::HTTPError)fromC:/Ruby193/lib/ruby/1.9.1/open-uri.rb:775:in`buffer_open'fromC:/Ruby193/lib/ruby/1.9.1/open-uri.rb:203:in`blockinopen_loop'fromC:/Ruby193/lib/r

随机推荐