|
|
|
联系客服020-83701501

在邮件钓鱼中跟踪用户的点击

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
在邮件钓鱼中跟踪用户的点击

在遏制邮件钓鱼的时分,我的客户端屡屡扣问梗概想晓得用户在钓鱼邮件中点击了什么。有得多法子或是抵达这个方针,但是我这里想探究下我在钓鱼web中用来跟踪不同用户的点击的法子。

??????? 我用早年博文的标题问题给这篇文章加个前言:我是怎样实施钓鱼的,在那篇文章中我探讨了用我称为sendmail.rb的ruby剧本遏制网络钓鱼。这个剧本本身并没什么特别和奇怪之处,他只是供给了一种可选的法子在发送钓鱼邮件中用来跟踪不同拜访者对钓鱼web的点击。晓得CIO梗概其它C-level的钓鱼打击也是很烦忙的。

个体来讲,如果你用邮件客户端实施钓鱼打击,譬喻Thunderbird, Outlook梗概其它工具,你所能晓得的只是web的点击量,但是你不克不及将web的点击和拜访者宰割起来梗概晓得有几许个特定的来访者。你只能得到一些含糊的数量统计了局:咱们发送了邮件给50团体,末了得到35个点击量。我很想晓得的标题问题是,在这35次点击中,有几许个是特定的目标拜访了web?梗概实在只是两个用户别离点击了15次形成的了局?sendmail.rb或是匡助打点这个标题问题。

这其中的原理是特别冗杂的,咱们只要在钓鱼链接背面削减邮件地点就行了。削减明文的邮件地点的打点是相当明晰的,以是咱们在削减早年把邮件地点用base64加密下。

假设你的钓鱼链接地点是何等的:

http://example.com/index.php

sendmail剧本会把它修改为何等:

http://example.com/index.php?id=bWNjYW5uLmJyYW5kb25AZ21haWwuY29t

??????? 一旦有人点击了加了base64加密的邮件地点的链接,触发的HTTP GET恳求会在web任事器的日志中被记录上来。我用apache来演示这个例子,接上来我就演示若何分析用了这种动作恳求页面的任事日志。

??????? 我写了另一个叫做decode_logs.rb的ruby剧本,用来快捷有效的从apache日志中提取无效的新闻。举例说明我若何用这个剧本分析这些日志。

??????? 最起头在我用sendmail.rb发送电子邮件的时分,我编写原始的html文件来实施我的钓鱼计划。这是特别花消年华的事变,并且我不是个职业的网页解决师以是我的钓鱼邮件从来不有抵达我想要的那种成就。

??????? 这里特别谢谢我的女共事,她举荐我测验考试操作Thunderbird来打造邮件并且这能很冗杂的另存这个电子邮件新闻。邮件默认被生活为EML样式,但是咱们须要生活为原始的HTML文件,何等才力够美满的共同sendmain.rb剧本的任务。

??????? 让咱们看下若何快捷的创立一个钓鱼邮件。我打开邮箱的收件箱查看,创作发了了很多从Linkedin发来的垃圾邮件。创立一个冗杂的钓鱼邮件就像上面给出的例子一样:

只要咱们找到了一个在Thunderbird看起来成就很好的钓鱼邮件,要做的下一步即是把这个邮件内容生活为本地文件,何等一来咱们就能够把邮件作为HTML文件供剧本操作。生活为本地文件没什么难处:

??????? 现在咱们已经拿到了所须要内容的HTML样式文本,紧接着即是把邮件地摇头削减到新闻文本中。颠末背面的法式模范所得到的HTML文本并不克不及直接的被SMTP任事器发送。下图的红框全部是咱们用sendmail.rb剧本发送邮件所须要额定削减的内容。在红框上面的HTML文本是咱们从Thunderbird生活得来的可用内容。

??????? 末了我还做了一些修改,先找到收罗”To:”的这一行,而后把这一行完全删除了。何等做的方针是把电子邮件的一些新闻采集邮件发送方、接管方另有发送日期全部废弃掉。

现在咱们已经创立了一个钓鱼邮件了,把它发送给出去而后看看成就若何。

??????? OK,看起来成就还不错了。这个邮件看起来很美满,但是我现在要把一些畸形的链经办换成咱们的钓鱼链接。何等一来当有人点击了咱们的邮件,就会被咱们引导到事后设下的恶意web而不是Linkedin。另有个寄望点,不未必要发同样的邮件,你或是把邮件头的From字段修改为别的而不是Linkedin。

??????? 削减上钓鱼链接是件很冗杂的事变,用sendmail剧本就能够烦忙搞定。把生活的文件用文本编纂器打开,把href=linkedin.com 修改为 href=#{url}就行了。在发送邮件的时分sendmail会检索邮件的内容把href=#{url}调动成钓鱼链接。咱们同样或是用一些得力的工具像sed这种,让咱们的任务更得胜也能抵达同样的成就。

??????? 全部的艰难的全部都已经完成为了,现在或是把邮件发出去看谁会点击咱们的链接了。渴想这篇文章能给你们一些启发,享受钓鱼的兴味吧。

一些寄望事变:

??????? 以上内容为译文,小编测验考试了国内的163和QQ邮箱,都无奈伪造from字段也即是伪造来历发送邮件,因为这些邮箱有查抄来历一致性。(91ri.org注:实在用php就能够完成伪造,但连我妈都会看邮件头了…)按作者的做法,godaddy是不查抄这个的,或是注册godaddy用来发送钓鱼邮件。不过在本地搭建SMTP任事器发送邮件就或是完全无视这个标题问题了。再即是作者给的sendmail.rb经过测试是有点小标题问题的,上面附上91ri.org小编修悔改的版本:

Default
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 #!/usr/bin/env ruby# This script takes a .txt file as an argument. It will iterate through each emailaddress# in the file and send an email to each target# Authors: zeknox & R3dy##########################################################################require 'net/smtp'require 'base64' username = 'greg.olson@issds.com'password = 'password'from = 'greg.olson@issds.com'display_from = 'Greg Olson'subject = 'Microsoft Security Update'date = 'Thursday, January 18, 2013'url = 'www.example.com/index.php?id='smtp = 'secureserver.net'smtpout = 'smtpout.secureserver.net'port = '3535'message = []  def sendemail(username, password, from, message, email, port, smtpout, smtp) # code to send email begin Net::SMTP.start("#{smtpout}", "#{port}", "#{smtp}","#{username}", "#{password}", :plain) do |smtp| smtp.send_message message, "#{from}", email.chomp end puts "tSent to: #{email}" rescue => e puts "tIssues Sending to: #{email}rn#{e.class}rn#{e}" endend unless ARGV.length == 2 puts "./sendmail.rb <email-addys.txt> <email_message.txt>n" exit!else emails = File.open(ARGV[0], 'r')end count = 1puts "Sending Emails:"emails.each_line do |email| message = [] # base64 encode email address encode = "#{Base64.encode64("#{email}")}"  email_message = File.open(ARGV[1], 'r') email_message.each_line do |line| if line =~ /#{url}/ message << line.gsub(/#{url}/, "#{url}#{encode.chomp}") elsif line =~ /#{to}/ message << line.gsub(/#{to}/, "#{email.chomp}") elsif line =~ /#{from}/ and line =~ /#{display_from}/ message << line.gsub(/#{display_from} <#{from}>/, "#{display_from} <#{from}>") elsif line =~ /#{display_from}/ and not line =~ /#{from}/ message << line.gsub(/#{display_from}/, "#{display_from}") elsif line =~ /#{subject}/ message << line.gsub(/#{subject}/, "#{subject}") elsif line =~ /#{date}/ message << line.gsub(/#{date}/, "#{date}") else message << line end end email_message.close  text = message.join  # send emails sendemail(username, password, from, text, email, port, smtpout, smtp)end # close filesemails.close

干系文章举荐:《把持iframe URI钓鱼》《点击挟制(ClickJacking)的小科普》

日币处分:

本文为译文且为原创、首发,作者有自己的实践,根据本站积分规定给予日币处分共5枚。

 

AD:本站枯萎死亡投稿及积分(日币),日币可兑换实物处分,每个月top3可失掉礼品一份。

内里请看:积分规定 及 日币超市

数安新闻+更多

证书相关+更多