comment_24016875.jse
这是一个模糊的脚本,似乎下载了可执行文件(
autoit.exe
)并运行它。这是我设法进行模糊处理的部分:
['Msxml2.XMLhttp', 'onreadystatechange', 'readyState', 'status', 'ADODB.Stream', 'open',
'type', 'write', 'position', 'read', 'saveToFile', 'close', 'GET', 'send',
'Scripting.FileSystemObject', 'WScript.Shell', 'Shell.Application', '%APPDATA%\',
'ExpandEnvironmentStrings', 'Mozila', 'https://www.google.com',
'http://userexperiencestatics.net/ext/Autoit.jpg', '\autoit.exe',
'http://userexperiencestatics.net/ext/bg.jpg', '\bg.js',
'http://userexperiencestatics.net/ext/ekl.jpg', '\ekl.au3',
'http://userexperiencestatics.net/ext/ff.jpg', '\ff.zip',
'http://userexperiencestatics.net/ext/force.jpg', '\force.au3',
'http://userexperiencestatics.net/ext/sabit.jpg', '\sabit.au3',
'http://userexperiencestatics.net/ext/manifest.jpg', '\manifest.json',
'http://userexperiencestatics.net/ext/run.jpg', '\run.bat',
'http://userexperiencestatics.net/ext/up.jpg', '\up.au3',
'http://whos.amung.us/pingjs/?k=pingjse346', '\ping.js',
'http://whos.amung.us/pingjs/?k=pingjse3462', '\ping2.js', '']
这是Facebook上的漏洞吗? ?我的朋友是否有可能通过在恶意链接上标记他们的联系人而针对他们的联系人感染了病毒?我应该向Facebook举报吗?如果可以,怎么办?
#1 楼
这是一种典型的混淆JavaScript JavaScript恶意软件,其针对Windows Script Host来下载其余负载。在这种情况下,它将下载似乎主要是Chrome扩展程序(manifest.json
和bg.js
),自动Windows可执行文件以及安装它们的一些自动脚本。所有这些文件在托管的(可能已损坏的)服务器上都以.jpg
扩展名命名,不太明显。该恶意软件似乎部分不完整或未开发,或者基于某些其他恶意软件(质量很低)。许多autoit脚本实际上并没有执行任何操作,而似乎包含Firefox扩展的ZIP文件实际上是空的。 autoit脚本包含大量内容,并组合成一个文件,但实际上只有一个(ekl)在末尾具有有效负载。
一个在感染下运行的活动autoit脚本替代了Chrome,IE ,以及其他可能带有浏览器快捷方式的浏览器快捷方式,这些快捷方式均指向带有可运行恶意Chrome扩展程序的必要参数的Chrome快捷方式。
Chrome扩展程序主要是恶意软件的传播方式。它做一些令人讨厌的事情,例如将防病毒软件域列入黑名单,并自动发送Facebook消息。实际上,在
http://appcdn.co/datajs
处有一个Web服务后端,提供一些脚本,这些脚本将根据当前查看的URL注入到用户访问的任何页面上,这就是Facebook消息的发布方式。该服务现在离线,可能已关闭。这是对Facebook的一种利用吗?
不完全是,更像是对Facebook的滥用。 Facebook的代码尚未被利用,您的朋友只有一个受感染的浏览器代表他们的网络钓鱼。
我的朋友是否有可能通过标记他们的联系人而成为针对他们的联系人的病毒是在恶意链接上吗?
是的,这正是该恶意软件正在自我传播的方式。
我应该向Facebook举报吗?如果是的话,怎么办?
是的,请参阅Facebook帮助中心中的“如何举报”。
通过联系其主机使以下URL脱机也可以很好。
http://userexperiencestatics.net/ext/Autoit.jpg
http://userexperiencestatics.net/ext/bg.jpg
http://userexperiencestatics.net/ext/ekl.jpg
http://userexperiencestatics.net/ext/ff.jpg
http://userexperiencestatics.net/ext/force.jpg
http://userexperiencestatics.net/ext/sabit.jpg
http://userexperiencestatics.net/ext/manifest.jpg
http://userexperiencestatics.net/ext/run.jpg
http://userexperiencestatics.net/ext/up.jpg
http://whos.amung.us/pingjs/?k=pingjse346
http://whos.amung.us/pingjs/?k=pingjse3462
http://appcdn.co/datajs
不幸的是,CloudFlare仍然没有取消
userexperiencestatics.net
URL,尽管我在发布此答案后不久便联系了我,但我不知道实际上是谁托管这些文件。 CloudFlare刚刚通过电子邮件发送给我,说他们限制了对文件的访问,并说它们将通知主机。更新:
在我和其他人向Google报告了
.jse
URL之后,它们似乎已删除文件。如果发现更多副本,则也应报告这些副本。似乎人们已经从许多来源收到文件。更多信息:
该恶意软件和帖子引起了很多关注,因此,我将添加更多信息解决人们的问题:
下载后此文件会自动运行吗?
除非配置了浏览器,否则可能不会运行。它旨在欺骗您打开它。
它会感染我的手机或非Windows计算机吗?
众所周知,Windows是唯一可以运行此恶意软件的操作系统。如前所述,它使用Windows脚本宿主。我不相信Windows Phone也容易受到攻击,尽管我对Windows Phone不太了解。
关于RANSOMWARE的更新:
以前假定它包含autoit脚本勒索软件,但是经过进一步检查后,情况似乎并非如此。只有一堆未使用的加密函数使实际有效负载变得模糊不清,我对此大多感到困惑。
更新铬扩展:
解压后的Chrome扩展代码可以在这里查看。有关它在上面集成的内容的详细信息。
JSE脚本的更新:
我的模糊化
comment_24016875.jse
脚本可以在这里查看。评论
我已经将userexperiencestatics.net URL报告给Google和MyWOT。 whos.amung.us URL似乎只是某种形式的分析。
–内森·奥斯曼(Nathan Osman)
16-6-26 at 3:57
@NathanOsman是的,我早些时候向Google报告了.jse文件,并且该文件似乎已被删除。我已将userexperiencestatics.net URL报告给CloudFlare,但没有结果。
–亚历山大·奥玛拉(Alexander O'Mara)
16年6月26日在4:00
.jpg文件实际上是带有错误文件扩展名的PE可执行文件。他们也需要被删除。
–内森·奥斯曼(Nathan Osman)
16-6-26 at 4:01
@NathanOsman好吧,一个是。其他是JavaScript,autoit脚本和JSON。
–亚历山大·奥玛拉(Alexander O'Mara)
16-6-26 at 4:03
看来Facebook对我来说是错的,当我单击从Facebook收到的指向我的邮件的链接时,就为我下载了脚本(facebook.com/l.php?u=https%3A%2F%2Fdoc.google.com…)即使帖子本身已被删除。我相信他们的服务被利用来传递外部URl作为指向评论的直接链接。此重定向服务以前曾受到批评:codehesive.com/index.php/archive/…
– Alex Cohn
16-6-26 at 13:11
#2 楼
我没有时间完全反向工程此脚本的工作,但是它似乎链接到实际上不是图像而是文本的多个.jpg
文件,然后引用了一些.au3
文件,表明它实际上将这些.jpg
文件保存在该扩展名。那些
.au3
文件似乎与AutoIt的文件扩展名匹配,并且确实看起来像有效的AutoIt脚本。这是ekl.jpg
的一部分:Func _crypt_startup()
If __crypt_refcount() = 0 Then
Local $hadvapi32 = DllOpen("Advapi32.dll")
If $hadvapi32 = -1 Then Return SetError(1, 0, False)
__crypt_dllhandleset($hadvapi32)
Local $iproviderid = $prov_rsa_aes
Local $aret = DllCall(__crypt_dllhandle(), "bool", "CryptAcquireContext", "handle*", 0, "ptr", 0, "ptr", 0, "dword", $iproviderid, "dword", $crypt_verifycontext)
If @error OR NOT $aret[0] Then
Local $ierror = @error + 10, $iextended = @extended
DllClose(__crypt_dllhandle())
Return SetError($ierror, $iextended, False)
Else
__crypt_contextset($aret[1])
EndIf
EndIf
__crypt_refcountinc()
Return True
EndFunc
Func _crypt_shutdown()
__crypt_refcountdec()
If __crypt_refcount() = 0 Then
DllCall(__crypt_dllhandle(), "bool", "CryptReleaseContext", "handle", __crypt_context(), "dword", 0)
DllClose(__crypt_dllhandle())
EndIf
EndFunc
Func _crypt_derivekey($vpassword, $ialg_id, $ihash_alg_id = $calg_md5)
Local $aret = 0, $hbuff = 0, $hcrypthash = 0, $ierror = 0, $iextended = 0, $vreturn = 0
_crypt_startup()
Do
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptCreateHash", "handle", __crypt_context(), "uint", $ihash_alg_id, "ptr", 0, "dword", 0, "handle*", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 10
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$hcrypthash = $aret[5]
$hbuff = DllStructCreate("byte[" & BinaryLen($vpassword) & "]")
DllStructSetData($hbuff, 1, $vpassword)
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptHashData", "handle", $hcrypthash, "struct*", $hbuff, "dword", DllStructGetSize($hbuff), "dword", $crypt_userdata)
If @error OR NOT $aret[0] Then
$ierror = @error + 20
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptDeriveKey", "handle", __crypt_context(), "uint", $ialg_id, "handle", $hcrypthash, "dword", $crypt_exportable, "handle*", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 30
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$vreturn = $aret[5]
Until True
If $hcrypthash <> 0 Then DllCall(__crypt_dllhandle(), "bool", "CryptDestroyHash", "handle", $hcrypthash)
Return SetError($ierror, $iextended, $vreturn)
EndFunc
Func _crypt_destroykey($hcryptkey)
Local $aret = DllCall(__crypt_dllhandle(), "bool", "CryptDestroyKey", "handle", $hcryptkey)
Local $ierror = @error, $iextended = @extended
_crypt_shutdown()
If $ierror OR NOT $aret[0] Then
Return SetError($ierror + 10, $iextended, False)
Else
Return True
EndIf
EndFunc
Func _crypt_encryptdata($vdata, $vcryptkey, $ialg_id, $bfinal = True)
Local $ireqbuffsize = 0, $aret = 0, $hbuff = 0, $ierror = 0, $iextended = 0, $vreturn = 0
_crypt_startup()
Do
If $ialg_id <> $calg_userkey Then
$vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id)
If @error Then
$ierror = @error + 100
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
EndIf
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptEncrypt", "handle", $vcryptkey, "handle", 0, "bool", $bfinal, "dword", 0, "ptr", 0, "dword*", BinaryLen($vdata), "dword", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 20
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$ireqbuffsize = $aret[6]
$hbuff = DllStructCreate("byte[" & $ireqbuffsize & "]")
DllStructSetData($hbuff, 1, $vdata)
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptEncrypt", "handle", $vcryptkey, "handle", 0, "bool", $bfinal, "dword", 0, "struct*", $hbuff, "dword*", BinaryLen($vdata), "dword", DllStructGetSize($hbuff))
If @error OR NOT $aret[0] Then
$ierror = @error + 30
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$vreturn = DllStructGetData($hbuff, 1)
Until True
If $ialg_id <> $calg_userkey Then _crypt_destroykey($vcryptkey)
_crypt_shutdown()
Return SetError($ierror, $iextended, $vreturn)
EndFunc
Func _crypt_decryptdata($vdata, $vcryptkey, $ialg_id, $bfinal = True)
Local $aret = 0, $hbuff = 0, $htempstruct = 0, $ierror = 0, $iextended = 0, $iplaintextsize = 0, $vreturn = 0
_crypt_startup()
Do
If $ialg_id <> $calg_userkey Then
$vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id)
If @error Then
$ierror = @error + 100
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
EndIf
$hbuff = DllStructCreate("byte[" & BinaryLen($vdata) + 1000 & "]")
DllStructSetData($hbuff, 1, $vdata)
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptDecrypt", "handle", $vcryptkey, "handle", 0, "bool", $bfinal, "dword", 0, "struct*", $hbuff, "dword*", BinaryLen($vdata))
If @error OR NOT $aret[0] Then
$ierror = @error + 20
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$iplaintextsize = $aret[6]
$htempstruct = DllStructCreate("byte[" & $iplaintextsize & "]", DllStructGetPtr($hbuff))
$vreturn = DllStructGetData($htempstruct, 1)
Until True
If $ialg_id <> $calg_userkey Then _crypt_destroykey($vcryptkey)
_crypt_shutdown()
Return SetError($ierror, $iextended, $vreturn)
EndFunc
Func _crypt_hashdata($vdata, $ialg_id, $bfinal = True, $hcrypthash = 0)
Local $aret = 0, $hbuff = 0, $ierror = 0, $iextended = 0, $ihashsize = 0, $vreturn = 0
_crypt_startup()
Do
If $hcrypthash = 0 Then
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptCreateHash", "handle", __crypt_context(), "uint", $ialg_id, "ptr", 0, "dword", 0, "handle*", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 10
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$hcrypthash = $aret[5]
EndIf
$hbuff = DllStructCreate("byte[" & BinaryLen($vdata) & "]")
DllStructSetData($hbuff, 1, $vdata)
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptHashData", "handle", $hcrypthash, "struct*", $hbuff, "dword", DllStructGetSize($hbuff), "dword", $crypt_userdata)
If @error OR NOT $aret[0] Then
$ierror = @error + 20
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
If $bfinal Then
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptGetHashParam", "handle", $hcrypthash, "dword", $hp_hashsize, "dword*", 0, "dword*", 4, "dword", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 30
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$ihashsize = $aret[3]
$hbuff = DllStructCreate("byte[" & $ihashsize & "]")
$aret = DllCall(__crypt_dllhandle(), "bool", "CryptGetHashParam", "handle", $hcrypthash, "dword", $hp_hashval, "struct*", $hbuff, "dword*", DllStructGetSize($hbuff), "dword", 0)
If @error OR NOT $aret[0] Then
$ierror = @error + 40
$iextended = @extended
$vreturn = -1
ExitLoop
EndIf
$vreturn = DllStructGetData($hbuff, 1)
Else
$vreturn = $hcrypthash
EndIf
Until True
If $hcrypthash <> 0 AND $bfinal Then DllCall(__crypt_dllhandle(), "bool", "CryptDestroyHash", "handle", $hcrypthash)
_crypt_shutdown()
Return SetError($ierror, $iextended, $vreturn)
EndFunc
Func _crypt_hashfile($sfile, $ialg_id)
Local $btempdata = 0, $hfile = 0, $hhashobject = 0, $ierror = 0, $iextended = 0, $vreturn = 0
_crypt_startup()
Do
$hfile = FileOpen($sfile, $fo_binary)
If $hfile = -1 Then
$ierror = 1
$vreturn = -1
ExitLoop
EndIf
Do
$btempdata = FileRead($hfile, 512 * 1024)
If @error Then
$vreturn = _crypt_hashdata($btempdata, $ialg_id, True, $hhashobject)
If @error Then
$ierror = @error
$iextended = @extended
$vreturn = -1
ExitLoop 2
EndIf
ExitLoop 2
Else
$hhashobject = _crypt_hashdata($btempdata, $ialg_id, False, $hhashobject)
If @error Then
$ierror = @error + 100
$iextended = @extended
$vreturn = -1
ExitLoop 2
EndIf
EndIf
Until False
Until True
_crypt_shutdown()
If $hfile <> -1 Then FileClose($hfile)
Return SetError($ierror, $iextended, $vreturn)
EndFunc
Func _crypt_encryptfile($ssourcefile, $sdestinationfile, $vcryptkey, $ialg_id)
Local $btempdata = 0, $hinfile = 0, $houtfile = 0, $ierror = 0, $iextended = 0, $ifilesize = FileGetSize($ssourcefile), $iread = 0, $breturn = True
_crypt_startup()
Do
If $ialg_id <> $calg_userkey Then
$vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id)
If @error Then
$ierror = @error
$iextended = @extended
$breturn = False
ExitLoop
EndIf
EndIf
$hinfile = FileOpen($ssourcefile, $fo_binary)
If @error Then
$ierror = 2
$breturn = False
ExitLoop
EndIf
$houtfile = FileOpen($sdestinationfile, $fo_overwrite + $fo_createpath + $fo_binary)
If @error Then
$ierror = 3
$breturn = False
ExitLoop
EndIf
Do
$btempdata = FileRead($hinfile, 1024 * 1024)
$iread += BinaryLen($btempdata)
If $iread = $ifilesize Then
$btempdata = _crypt_encryptdata($btempdata, $vcryptkey, $calg_userkey, True)
If @error Then
$ierror = @error + 400
$iextended = @extended
$breturn = False
EndIf
FileWrite($houtfile, $btempdata)
ExitLoop 2
Else
$btempdata = _crypt_encryptdata($btempdata, $vcryptkey, $calg_userkey, False)
If @error Then
$ierror = @error + 500
$iextended = @extended
$breturn = False
ExitLoop 2
EndIf
FileWrite($houtfile, $btempdata)
EndIf
Until False
Until True
If $ialg_id <> $calg_userkey Then _crypt_destroykey($vcryptkey)
_crypt_shutdown()
If $hinfile <> -1 Then FileClose($hinfile)
If $houtfile <> -1 Then FileClose($houtfile)
Return SetError($ierror, $iextended, $breturn)
EndFunc
Func _crypt_decryptfile($ssourcefile, $sdestinationfile, $vcryptkey, $ialg_id)
Local $btempdata = 0, $hinfile = 0, $houtfile = 0, $ierror = 0, $iextended = 0, $ifilesize = FileGetSize($ssourcefile), $iread = 0, $breturn = True
_crypt_startup()
Do
If $ialg_id <> $calg_userkey Then
$vcryptkey = _crypt_derivekey($vcryptkey, $ialg_id)
If @error Then
$ierror = @error
$iextended = @extended
$breturn = False
ExitLoop
EndIf
EndIf
$hinfile = FileOpen($ssourcefile, $fo_binary)
If @error Then
$ierror = 2
$breturn = False
ExitLoop
EndIf
$houtfile = FileOpen($sdestinationfile, $fo_overwrite + $fo_createpath + $fo_binary)
If @error Then
$ierror = 3
$breturn = False
ExitLoop
EndIf
Do
$btempdata = FileRead($hinfile, 1024 * 1024)
$iread += BinaryLen($btempdata)
If $iread = $ifilesize Then
$btempdata = _crypt_decryptdata($btempdata, $vcryptkey, $calg_userkey, True)
If @error Then
$ierror = @error + 400
$iextended = @extended
$breturn = False
EndIf
FileWrite($houtfile, $btempdata)
ExitLoop 2
Else
$btempdata = _crypt_decryptdata($btempdata, $vcryptkey, $calg_userkey, False)
If @error Then
$ierror = @error + 500
$iextended = @extended
$breturn = False
ExitLoop 2
EndIf
FileWrite($houtfile, $btempdata)
EndIf
Until False
Until True
If $ialg_id <> $calg_userkey Then _crypt_destroykey($vcryptkey)
_crypt_shutdown()
If $hinfile <> -1 Then FileClose($hinfile)
If $houtfile <> -1 Then FileClose($houtfile)
Return SetError($ierror, $iextended, $breturn)
EndFunc
Func _crypt_genrandom($pbuffer, $isize)
_crypt_startup()
Local $aret = DllCall(__crypt_dllhandle(), "bool", "CryptGenRandom", "handle", __crypt_context(), "dword", $isize, "struct*", $pbuffer)
Local $ierror = @error + 10, $iextended = @extended
_crypt_shutdown()
If $ierror OR (NOT $aret[0]) Then
Return SetError($ierror, $iextended, False)
Else
Return True
EndIf
EndFunc
Func __crypt_refcount()
Return $__g_acryptinternaldata[0]
EndFunc
Func __crypt_refcountinc()
$__g_acryptinternaldata[0] += 1
EndFunc
Func __crypt_refcountdec()
If $__g_acryptinternaldata[0] > 0 Then $__g_acryptinternaldata[0] -= 1
EndFunc
Func __crypt_dllhandle()
Return $__g_acryptinternaldata[1]
EndFunc
Func __crypt_dllhandleset($hadvapi32)
$__g_acryptinternaldata[1] = $hadvapi32
EndFunc
Func __crypt_context()
Return $__g_acryptinternaldata[2]
EndFunc
Func __crypt_contextset($hcryptcontext)
$__g_acryptinternaldata[2] = $hcryptcontext
EndFunc
正如您所看到的,有一些与加密相关的代码表明这是一种(相当cr脚和业余的)勒索软件。随意对其他所有内容进行反向工程。
评论
引用的AutoIt-脚本只是官方包含(Crypt.au3),它不包含任何活动代码。这是必要的,因为该病毒是在本地编译的,以防止校验和识别。虽然加密包含的存在可能是使用加密的一个很好的指标,但这并不意味着其勒索软件。无论如何,AutoIt有足够的工具可以成为优秀的勒索软件。
–詹姆斯·卡梅隆(James Cameron)
16-6-27在9:03
@JamesCameron是正确的,实际上autoit脚本只是与一堆依赖关系标头串联在一起。除了所有脚本共享的代码之外,实际上只有一个具有我看到的激活代码。
–亚历山大·奥玛拉(Alexander O'Mara)
16年6月27日在20:48
#3 楼
从表面上看,恶意行为者利用了所谓的XML外部实体漏洞(XXE),然后利用了服务器端请求伪造(SSRF)。Facebook的服务器被诱骗从另一个域链接恶意XML文件,对其进行处理并将其提供给您。这是XXE备忘单和SSRF圣经的备忘单,如果您有兴趣的话可以继续学习。
考虑一下...您的混淆脚本具有以下(msxml2.XMLhttp方法和说它来自谷歌)。
具体来说,它使用“ ADODB.Stream对象通过ASP将二进制文件发送到浏览器”。
简而言之,是的,它利用XXE(通过asp编写xml文档)并伪造(SSRF)来声明它来自Google。
评论
您能否阐明得出此结论的方式?
–亚历山大·奥玛拉(Alexander O'Mara)
16年6月27日在17:23
考虑一下...您的混淆脚本具有以下内容(msxml2.XMLhttp方法,并声明它来自Google)。具体来说,它使用“ ADODB.Stream对象通过ASP将二进制文件发送到浏览器”签出此链接support.microsoft.com/en-us/kb/276488简而言之,是的,它利用了XXE(通过asp编写xml文件)并伪造(SSRF),说明它来自Google。阅读链接,它解释了前面提到的ADODB类发送文件
– grepNstepN
16-6-28在13:51
嗯,该脚本用于将其余恶意软件文件下载为二进制文件并运行它们。它本身不会向Facebook发布任何内容(脚本不包含对Facebook的任何引用),也不会发布任何内容,因为它运行在Windows Script Host中,该脚本宿主没有任何活动的浏览器会话。它安装的Chrome扩展程序负责制作伪造的Facebook消息。我将去混淆的脚本添加到我的答案中。
–亚历山大·奥玛拉(Alexander O'Mara)
16-6-28在16:47
如果我错了,请纠正我,但是问问者单击了Facebook消息中的链接,该链接下载并运行脚本,这从技术上来说意味着它是来自Facebook的(同源政策)。该脚本说明了其从Google的下载信息(请参见前面的链接)。顺便说一句,感谢您告诉我们有关有效载荷亚历山大的信息!多数民众赞成在一些好的DFIR。然而,他的问题是网络安全领域... infosec可以归结为查找漏洞(bug狩猎),深度防御和早期警报(netSec)以及攻击后做出响应(DFIR)。如果您跳过netSec并进行错误查找,则您在做infosec时出错。
– grepNstepN
16年6月28日在17:42
请注意:我正在解决他的问题部分,即这是否是一个漏洞利用程序(根据他的描述是)以及如何下载脚本(通过XXE和SSRF)。在完整披露邮件列表[seclists.org/fulldisclosure]中有句俗话:是的,本地运行的程序会导致漏洞利用。从攻击者和防御者的角度来看,一旦将有效负载放到盒子上(一旦下载),就可以执行它,游戏就结束了。
– grepNstepN
16年6月28日在17:43
#4 楼
这是Facebook上的一个漏洞吗?
很有可能。不道德的人总是试图找到方法来获得对银行帐户,密码,朋友列表以及其他任何可以赚钱的方法的访问。
我的朋友是否有可能一种通过将他们标记在恶意链接上来针对他们的联系人的病毒?
没有理由不这样做。大多数计算机用户甚至都不知道病毒是什么,如何“捕获”病毒,或者一旦被感染,该怎么办。如果是我,我将追踪该朋友,向他们发送指向防病毒程序的链接,并提供帮助。当然,取决于您的朋友,您可能并不那么友善,但我坚信我会尽力帮助人类。
我应该一定要报告给Facebook?
是肯定的。这样做不会让您的朋友遇到麻烦,但可以帮助他们找到共享资源,并最终减少受此病毒/恶意软件/诈骗影响的人数。
那么,如何呢?
转到原始帖子,单击标记该帖子的选项,然后完成向导。我相信,如果他们采取了行动,您会收到通知。
最后一点:Microsoft似乎已经知道此文件;因此,请注意。当我尝试在IE Edge中下载该文件时,收到一条警告,警告该文件很危险,无法保存。使用SmartScreen的任何人都可能是安全的,并且该病毒似乎不会针对非Microsoft系统。很有可能,您的大多数不太精明的朋友和家人都应该没事,除非他们仍在运行XP,在这种情况下,您应该建议他们至少升级到7。
评论
“向他们发送指向防病毒程序的链接”告诉他们进行全新安装。该恶意软件还尝试至少将Chrome中的防病毒软件列入黑名单。
–亚历山大·奥玛拉(Alexander O'Mara)
16年6月25日在16:57
我无法“转到原始帖子”。单击通知将我直接重定向到下载。
– Nacib Neme
16年6月25日在17:26
评论
该链接是您重新上传的内容还是发送给您的实际链接?我问是因为我想删除原始链接。那是原始链接。
好吧,我希望那不会自动运行,因为我不希望我的浏览器在单击链接时下载该文件。
我认为您的朋友没有成为目标。您无法控制通知的内容。如果有的话,facebook本身会被完全欺诈性通知利用。
我很傻,但是您的意思是您单击了FB通知,并且该通知链接使您下载了恶意软件,或者您单击了您的朋友标记您的链接或帖子?