Ransomware-udviklere klokker i det for tredje gang: Glemmer at vælge hash-funktion

Heldigvis er det heller ikke denne gang lykkedes for udviklere af Linux-ransomware at lave kode, der virker efter hensigten.

It-sikkerhed er svært, og hjemmegjort krypto skal man generelt holde sig fra. Det gælder også, hvis man er it-kriminel. Personen eller personerne bag, hvad der lader til at være tredje iteration af ransomware Linux Encoder har (heldigvis) heller ikke denne gang formået at skrue den ondsindede software sammen på en måde, så det ikke er trivielt at knække krypteringen.

Det er igen den rumænske anti-virusproducent Bitdefender, der har fundet fejl i den måde, ransomwaren er skruet sammen på.

Linux.Encoder trak i første gang overskrifter for at være det første Ransomware målrettet Linux-webservere. Og sidenhen for at være dårlig kodet.

I en tidligere udgave af Linux Encoder var svagheden, at en tilfældigheds-funktion blev seedet med systemtiden, når en fil blev krypteret. Det gjorde det muligt via oplysninger om, hvornår den krypterede fil sidst var ændret, at sjusse sig frem til seedet. Og ad den vej var det muligt at gendanne outputtet fra tilfældighedsgeneratoren og dermed krypteringsnøglen.

En endnu tidligere udgave af Linux Encoder viste sig også at indeholde problemer, der gjorde det muligt at knække krypteringen uden at hoste op med penge til bagmanden- eller mændene.

Radu Caragea ved Bitdefender har begået et teknisk skriv om begge ransomware-bommerter, der kan læses her (PDF).

Også den seneste udgave af Linux.Encoder-ransomwaren er skruet sammen på en måde, så offeret ikke behøver hoste op med en eneste Bitcoin, selvom backuppen skulle være glippet.

Det fortæller Bitdefender om i et blogindlæg.

Kombination af kryptering

Ransomware kan fungere ved en kombination af symmetriske nøgler (AES) og asymmetriske nøgler (RSA). Den symmetriske AES-nøgle bliver brugt til kryptering af filerne på offerets system. Algoritmen med den symmetriske nøgle er langt hurtigere, end hvis det skulle foregå med en asymmetrisk nøgle-algoritme.

AES-nøglen bliver forsøgt genereret tilfældigt på det lokale system. På den måde kan bagmændene undgå, at nøglen skal sendes til systemet, hvor den risikerer at blive opsnappet undervejs.

RSA-algoritmen anvender en offentlig og en privat nøgle. Den offentlige nøgle, bliver brugt til kryptering, den private nøgle skal bruges for at dekryptere. Altså to forskellige nøgler, jf. udtrykket asymmetrisk.

På grund af den funktionalitet, kan den offentlige RSA-nøgle uden videre sendes med ransomwaren. Her bliver den så brugt til at kode AES-nøglen med.

Tanken er nu, at når offeret betaler, udleverer bagmændene den private nøgle, der kan låse op for RSA-krypteringen af AES-nøglen, hvilket i sidste ende gør det muligt at dekryptere de enkelte filer.

Hash-algoritme

I en opfølgende mail forklarer Bitdefender, at koden bag den seneste udgave af Linux-ransomwaren genererer en AES-nøgle på baggrund af en tilfældigt genereret buffer på offerets system. Herefter bliver både buffer og AES-nøgle forsøgt kørt gennem en hash-funktion otte gange, så de ikke længere skulle være læsbare.

Derudover bliver den tilfældigt genererede buffer krypteret med RSA-algoritmen.

Men i forhold til brugen af hash-algoritmen, som bufferen og AES-nøglen bliver kørt igennem, begår personen eller personerne bag en fejl. I koden bliver der nemlig aldrig valgt en hash-algoritme.

Resultatet er, at der ikke finder nogen hashing sted og både buffer og AES-nøgle bliver skrevet ud i klar tekst. Og herfra er det trivielt af dekryptere filerne igen.

Den opgave har Bitdefender, ligesom tidligere, lavet et script, der kan løse, og som kan hentes fra virksomhedens hjemmeside. (ZIP)

Radu Caragea, der har skrevet blogindlægget om den seneste ransomware mod Linux, slutter indlægget med en formaning:

»Selvom det er tredje lykketræf, så sørg for, efter gendannelse, at du opdaterer den sårbare platform og stopper for denne type angreb helt i første omgang. Næste gang, så kan det være, hackerne faktisk får lavet en fungerende udgave af ransomwaren, som ikke er så nem at dekryptere.«

Bitdefender har sendt en stump kommenteret pseudo-kode til Version2 for at illustrere, hvor fejlene ligger i den ondsindede kode. Den kan du se her:

uf1[0:8] = ??? (unimportant)
for i in range(32):
        rand_buf[i] = rand() % 256 
md_ctx = new_md_ctx(NULL)
md_ctx.update(buf1)
md_ctx.update(filename)
md_ctx.finish( iv )
aes_key[0:16] = iv[0:16]
for i in range(8):
        md_ctx = new_md_ctx(NULL) à no algorithm selected
        md_ctx.update(aes_key[0:32]) -> we know the key here, it is written as is in the file
        md_ctx.update(rand_buf, 32) -> random buffer is also leaked here
        md_ctx.finish(aes_key) à nothing is encrypted here
ct = rsa_encrypt(rand_buf)-> random buffer is encrypted here, but it is leaked three lines above
write_to_file(ct) 
AES_CBC_encrypt( aes_key, file_contents, iv)

Følg forløbet

Kommentarer (7)

Claus Juul

Lad os håbe for et evt offeret af 4. Omgang, at softwaren ikke bare hasher alle filer. Det vil være en træls situation

Brian Hansen

Er man lidt grov hvis man synes ransomware er et glimrende værktøj til at minde befolkningen om hvor vigtigt en god backup er?

Ditlev Petersen

Synes du? Er det ikke de IT professionelles opgave at belære og opdrage de knap så drevne i faget, om god IT skik? Det mener jeg.


Jo, det er rigtigt. At det måske kan opfattes som at sælge forsikringer efter et flystyrt, er noget andet. Men jo, hvis ikke lægfolk kan SE, hvor galt det kan gå, så lærer de det først, når de SELV har mistet noget alvorligt. Så man kan lige så godt udnytte forskrækkelsen og overskrifterne.

Men jeg er da sikker på, at ransomware-udviklerne studerer vejledningen i at få lortet til at virke.

Log ind eller opret en konto for at skrive kommentarer

JobfinderJob i it-branchen