Sono stato indotto su Facebook a scaricare una sceneggiatura offuscata

92

Ho ricevuto una notifica su Facebook: " (un mio amico) ti ha menzionato in un commento". Tuttavia, quando ho fatto clic, Firefox ha provato a scaricare il seguente file:

comment_24016875.jse

Questo è uno script offuscato che sembra scaricare un eseguibile ( autoit.exe ) ed eseguirlo.

Questa è la parte che sono riuscito a deobfuscare:

['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', '']

È un exploit su Facebook? È possibile che il mio amico abbia un virus che prende di mira i propri contatti taggandoli su collegamenti malevoli? Dovrei segnalarlo a Facebook? Se sì, come?

    
posta Nacib Neme 25.06.2016 - 16:07
fonte

4 risposte

105

Si tratta di un tipico malware JavaScript offuscato che si rivolge a Windows Script Host per scaricare il resto del payload. In questo caso, scarica ciò che sembra essere principalmente un'estensione di Chrome ( manifest.json e bg.js ), l'eseguibile automatico di Windows e alcuni script autoit che li installano. Tutti questi file sono nominati con estensioni .jpg sul server (probabilmente compromesso) in cui sono ospitati, per essere meno visibili.

Il malware sembra parzialmente incompleto o altrimenti sottosviluppato o forse basato su altri malware (la qualità è molto bassa). Molti degli script Autoit in realtà non fanno nulla, e quello che sembra essere un ZIP pensato per contenere un'estensione per Firefox è in realtà vuoto. Gli script autoit sono un sacco di include combinati in un singolo file, ma solo uno (ekl) ha effettivamente un carico utile alla fine.

L'unico script autoit attivo eseguito su infezione sostituisce Chrome, IE e probabilmente altre scorciatoie del browser con un collegamento a Chrome con gli argomenti necessari per eseguire l'estensione di Chrome dannoso.

L'estensione di Chrome è principalmente la modalità di propagazione di questo malware. Fa alcune cose sgradevoli come la lista nera dei domini dei software antivirus e l'invio automatico dei messaggi di Facebook. In realtà c'era un back-end del web service a http://appcdn.co/datajs che serviva alcuni script che sarebbero stati iniettati su qualsiasi pagina visitata dall'utente in base all'URL attualmente visualizzato, che era il modo in cui i messaggi di Facebook venivano pubblicati. Questo servizio è ora offline, probabilmente rimosso.

Is this an exploit on Facebook?

Non esattamente, abuso più simile a Facebook. Il codice di Facebook non è stato sfruttato, il tuo amico ha solo un browser infetto che sta inviando i propri contatti a loro nome.

Is it possible that my friend got a virus which targets their contacts by tagging them on malicious links?

Sì, è esattamente come si sta diffondendo questo malware.

Should I report this to Facebook? If so, how?

Sì, consulta Come segnalare le cose nel Centro assistenza di Facebook.

Anche il seguente URL è offline, contattando i loro host.

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

Sfortunatamente, CloudFlare non ha ancora eliminato il userexperiencestatics.net di URL, anche se ho contattato poco dopo aver postato questa risposta, e non so chi stia effettivamente ospitando questi file. CloudFlare mi ha appena inviato un'email per dire che hanno limitato l'accesso ai file e dice che notificheranno l'host.

UPDATE:

Dopo che io e probabilmente altri abbiamo segnalato l'URL .jse a Google, sembra che abbiano rimosso il file. Se trovi altre copie, queste dovrebbero essere segnalate. Sembra che le persone abbiano ricevuto i file da numerose fonti.

ULTERIORI INFORMAZIONI:

Questo malware e questo post stanno ricevendo molta attenzione, quindi aggiungerò qualche informazione in più per rispondere alle domande della gente:

Will this file automatically run when downloaded?

Probabilmente no a meno che tu non abbia configurato il tuo browser per farlo. È pensato per indurti ad aprirlo.

Can it infect my phone, or non-Windows computer.

Per quanto ne so, Windows è l'unico sistema operativo in grado di eseguire questo malware. Come ho detto, usa Windows Script Host. Non credo nemmeno che Windows Phone sia vulnerabile, anche se non ne so molto di Windows phone.

UPDATE ON RANSOMWARE:

In precedenza si presumeva che gli script autoit contenessero ransomware, tuttavia dopo un'ulteriore ispezione questo non sembra essere il caso. C'è solo un mucchio di funzioni crittografiche inutilizzate che oscurano il payload effettivo , che ho per lo più debianizzato a questo .

UPDATE ON CHROME EXTENSION:

Il codice di estensione Chrome decompresso può essere visualizzato qui . Dettagli su cosa ha integrato in precedenza.

AGGIORNAMENTO PER SCRIPT JSE:

Il mio de-offuscato comment_24016875.jse script può essere visualizzato qui .

    
risposta data 25.06.2016 - 19:07
fonte
29

Non ho il tempo di eseguire completamente il reverse-engineer su ciò che questo script fa, ma sembra collegare a diversi .jpg file che in realtà non sono immagini ma testo, e quindi fa riferimento a alcuni file .au3 , suggerendo che in realtà salva quei file .jpg sotto quell'estensione.

Quei file .au3 sembrano corrispondere all'estensione di AutoIt e in effetti assomigliano a script AutoIt validi. Ecco una parte di uno, 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

Come puoi vedere, esiste un codice criptato che suggerisce che si tratta di un ransomware (piuttosto scadente e amatoriale). Sentiti libero di decodificare tutto il resto.

    
risposta data 25.06.2016 - 17:59
fonte
15

Da quello che sembra, un attore malintenzionato sfrutta la cosiddetta vulnerabilità XML External Entity ( XXE ) e quindi un errore di richiesta lato server (SSRF).

I server di Facebook sono stati ingannati nel collegare un file XML dannoso da un altro dominio, elaborarlo e fornirlo a te. Ecco il xx foglio XXE e cheat della bibbia SSRF t, se sei interessato puoi studiarlo.

Pensaci ... il tuo script offuscato aveva il seguente (metodo msxml2.XMLhttp e dichiarato che proveniva da google).

In particolare, ha utilizzato " l'oggetto ADODB.Stream per inviare file binari al browser tramite ASP ".

In breve, sì, ha sfruttato un XXE (via asp scrivendo un documento xml) e falsificato (SSRF) affermando che proviene da google.

    
risposta data 25.06.2016 - 21:44
fonte
10

Is this an exploit on Facebook?

Molto probabilmente. I senza scrupoli cercano sempre di trovare modi per accedere a conti bancari, password, liste di amici e qualsiasi altra cosa che possono fare per trasformare un dollaro.

Is it possible that my friend got a virus which targets their contacts by tagging them on malicious links?

Non c'è motivo di pensare diversamente. La maggior parte degli utenti di computer non sa nemmeno cosa sia un virus, come "catturare" un virus o cosa fare una volta che sono stati infettati. Se fossi in me, rintraccerei l'amico, manderei loro un collegamento a un programma antivirus e mi offrirò di aiutarli. Ovviamente, a seconda dei tuoi amici, potresti non essere così gentile, ma sono un credente abbastanza strong che io abbia lo scopo di aiutare l'umanità nel miglior modo possibile.

Should I report this to Facebook?

Sicuramente. Non riuscirà a mettere in difficoltà i tuoi amici, ma potrebbe aiutarli a rintracciare le condivisioni e in ultima analisi a ridurre il numero di persone colpite da questo virus / malware / truffa.

If so, how?

Vai al post originale, fai clic sull'opzione per contrassegnare il post e passa attraverso la procedura guidata. Sarai avvisato se agiscono, credo.

Un'ultima nota: Microsoft sembra già essere a conoscenza di questo file; quando ho provato a scaricarlo su IE Edge, ho ricevuto un avvertimento che il file era pericoloso e non poteva essere salvato. Chiunque utilizzi SmartScreen sarà probabilmente sicuro e questo virus non sembra destinato a sistemi non Microsoft. Molto probabilmente, la maggior parte dei tuoi amici e familiari meno esperti dovrebbero essere a posto, a meno che non stiano ancora utilizzando XP, nel qual caso dovresti suggerire di effettuare l'aggiornamento ad almeno 7.

    
risposta data 25.06.2016 - 17:24
fonte

Leggi altre domande sui tag