EDIT 2 :
є одна вагома причина, чому ця публікація привертає стільки уваги: вам вдалося записати на ПК ваш цілий сеанс зловмисника. Це дуже відрізняється від нашого повсякденного досвіду, де ми маємо справу з виявленням наслідків його дій і намагаємось їх виправити. Ось ми бачимо його на роботі, бачимо, як він має деякі проблеми із встановленням заднього куточка, повторним кроком, трескаво працює (можливо, тому, що він сидів за вашим столом, як було запропоновано вище, або, можливо, і на мою думку, скоріше, тому що він був не в змозі змусити його зловмисне програмне забезпечення працювати в системі, читайте нижче), і спробувати розгорнути повністю автономні інструменти контролю. Про це щоденно спостерігають дослідники безпеки зі своїми пастками з медом . Для мене це дуже рідкісний шанс і джерело деяких розваг.
Вас напевно зламали. Докази цього не походять з фрагмента auth.log
відображеного вами файлу, оскільки це повідомляє про невдалу спробу входу, що відбувається за короткий проміжок часу (дві секунди). Ви помітите, що другий рядок повідомляє Failed password
, а третій повідомляє про pre-auth
відключення: хлопець намагався і не вдався.
Докази приходять замість від змісту двох файлів http://222.186.30.209:65534/yjz
і http://222.186.30.209:65534/yjz1
які зловмисник завантажених на вашу систему.
Зараз сайт відкритий для кожного, хто може їх завантажити, що я і зробив. Я вперше побіг file
на них, що показало:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
Потім я вивів їх на 64-бітний VM, який у мене є; експертиза їх змісту через strings
команду виявила багато підозрілого (посилання на різні відомі атаки, на команди, які підлягали заміні, сценарій, який явно використовувався для створення нової служби тощо).
Потім я створив хеши MD5 обох файлів і передав їх у хеш-базу даних Cymru, щоб побачити, чи вони відомі агенти шкідливих програм. Поки yjz
немає, yjz1
є, і Cymru повідомляє про ймовірність виявлення антивірусною програмою 58%. Він також зазначає, що цей файл востаннє бачили десь три дні тому, тому він досить недавно.
Запуск clamscan (частина clamav
пакету) на двох отриманих мною файлах:
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
тому ми зараз впевнені, що стандартне програмне забезпечення для Linux може його ідентифікувати.
Що тобі слід робити?
Хоча цілком нова, жодна система не є дуже новою, див. , Наприклад , цю статтю 2015 року про XorDdos . Тож більшість безкоштовних пакетів повинні мати можливість їх видалити. Ви повинні спробувати: clamav
, rkhunter
, chkrootkit
. Я гуляв навколо, і бачив, що вони стверджують, що можуть його помітити. Використовуйте їх для перевірки роботи попередника, але після запуску цих трьох програм ви повинні бути готові до роботи.
Що стосується більшого питання, what should you do to prevent future infections
то відповідь Мандрівника - це хороший перший крок. Тільки майте на увазі, що це боротьба, що триває, яку ми всі (включаючи мене!), Можливо, дуже програли, навіть не підозрюючи про це.
Редагувати :
На запит Віктора Тота (непрямий) я хотів би додати кілька коментарів. Безумовно, правда, що зловмисник зіткнувся з деякими труднощами: він завантажує два різних інструменти для злому, кілька разів змінює їхні дозволи, перезапускає їх кілька разів і багато разів намагається відключити брандмауер. Неважко здогадатися, що відбувається: він очікує, що його інструменти для злому відкриють канал зв'язку у напрямку до одного із заражених ПК (див. Далі), і, коли він не бачить, щоб цей новий канал з’явився на його GUI управління, він побоюється його злому інструмент блокується брандмауером, тому він повторює процедуру встановлення. Я погоджуюся з Віктором Тотом, що цей конкретний етап його операції, здається, не приносить очікуваних плодів, але я хотів би дуже заохотити вас не занижувати ступінь шкоди, завданої вашому ПК.
Я надаю тут частковий вихід strings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
Це дає свідчення про фальсифікацію служб (в /etc/init.d
і в /etc/rc.d
), з crontab
, файлом історії mysql
та парою файлів, в proc
яких є посилання на bash
(що говорить про насадження шахрайської версії вашої оболонки на замовлення). Потім програма генерує HTTP-запит (на китайськомовний сайт,
Accept-Language: zh-cn
що надає суть коментарю Девіда Шварца вище), що може спричинити ще більший хаос. У запиті бінарні файли ( Content-Type: application/x-www-form-urlencoded
) повинні бути завантажені на атакований ПК (GET) та завантажені в контрольну машину (POST). Я не міг встановити, що буде завантажено на атакований ПК, але, враховуючи невеликий розмір обох yjz
та yjz1
(1,1 Мб і 600 кБ, повторно), я можу зважитися на думку про те, що більшість файлів, необхідних для маскування руткіта, тобто зміненого версії ls
, netstat
, ps
, ifconfig
, ..., буде завантажений цей шлях. І цим можна було б пояснити гарячкові спроби зловмисника розпочати цю завантаження.
Немає впевненості, що вищезазначене вичерпує всі можливості: нам, звичайно, не вистачає частини стенограми (між рядками 457 та 481), і ми не бачимо вихід із системи; крім того, особливо тривожними є лінії 495-497,
cd /tmp; ./yd_cd/make
які посилаються на файл, який ми не бачили, і який може бути компіляцією: якщо так, то це означає, що зловмисник (нарешті?) зрозумів, у чому проблема з його виконуваними файлами, і намагається його виправити, і в цьому випадку атакований ПК пішов назавжди. [Насправді, дві версії зловмисного програмного забезпечення, які зловмисник завантажив на зламану машину (а я - на 64-бітну Debian VM), - це непридатна архітектура, x86, в той час як одне ім'я зламаного ПК дає той факт, що він займався архітектурною зброєю].
Причиною, по якій я написав цю редакцію, є закликати вас якомога наполегливіше або поєднати вашу систему з професійним інструментом, або перевстановити з нуля.
І, до речі, якщо це виявиться корисним для когось, це перелік 331 IP-адрес, до яких yjz
намагається підключитися. Цей список настільки великий (і, мабуть, судилося все-таки розширитись), що я вважаю, що це причина для фальсифікації mysql
. Список, наданий іншим backdoor, є ідентичним, що, я вважаю, є причиною того, що такі важливі відомості залишаються відкритими (я думаю, зловмисник не хотів докладати зусиль для їх збереження у форматі ядра, так що він помістив весь список у чітко-текстовий файл, який, ймовірно, читається всіма його задніми куточками, залежно від ОС):
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
Наступний код
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
у наведеному вище списку видно, що 302 із загальної кількості 331 адрес - у материковому Китаї, решта - у Гонконзі, Монголії, Тайвані. Це додає додаткової підтримки твердженню Девіда Шварца, що це здебільшого китайський бот-ринг.
EDIT 3
На прохання @ vaid (автор ОП, читайте його коментар нижче) я додам коментар про те, як посилити безпеку базової системи Linux (для системи, що надає багато послуг, це набагато складніша тема). vaid
заявляє, що зробив наступне:
Перевстановіть систему
змінив кореневий пароль на 16-символьний пароль із змішаними малими та малими літерами та символами та цифрами.
Змінив ім’я користувача на 6 ім’я користувача із змішаним символом та застосував той самий пароль, що і для root
змінили порт SSH на щось вище 5000
вимкнено корінний логін SSH.
Це добре (за винятком випадків, коли я використовую порт понад 10 000, оскільки багато корисних програм використовують порти нижче 10 000). Але я не можу підкреслити достатньо необхідності використовувати криптографічні ключі для входу в ssh , а не паролі. Я надам вам особистий приклад. На одному з моїх VPS-файлів я був не впевнений, чи потрібно змінити порт ssh; Я залишив його в 22, але використовував криптовалюти для аутентифікації. У мене було сотні спроб на злам в день , жодна не досягла успіху. Коли, втомившись щодня перевіряти, що нікому не вдалося, я врешті переключив порт на щось вище 10 000, спроби взлому пішли на нуль. Майте на увазі, це не те, що хакери дурні (їх немає!), Вони просто полюють на легшу здобич.
Активувати криптовалюту за допомогою RSA як алгоритму підпису легко, дивіться коментар Яна Худека (спасибі!) Нижче:
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
Тепер все, що вам потрібно зробити, - скопіювати файл id_rsa
на машину, з якою ви хочете підключитися (в каталозі .ssh
, також chmod
'ed до 700), після чого видайте команду
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
Коли ви впевнені, що це працює, відредагуйте на сервері (= машині, до якого ви хочете підключитися) /etc/ssh/sshd_config
, і змініть рядок
#PasswordAuthentication yes
до
PasswordAuthentication no
і перезапустіть ssh
послугу ( service ssh restart
або systemctl restart ssh
, або щось подібне, залежно від дистрибутива).
Це витримає багато. Насправді, наразі не відомо жодних подвигів проти поточних версій openssh v2
та RSA, якими користуються openssh v2
.
Нарешті, для того, щоб дійсно виправити вашу машину, вам потрібно буде налаштувати брандмауер (netfilter / iptables) таким чином:
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Це, 1) дозволяє з'єднання ssh як з LAN, так і з WAN, 2) дозволяє весь вхід, який був створений вашими запитами (наприклад, під час завантаження веб-сторінки), 3) скидає все інше на вході, 4) дозволяє все на вихід, і 5-6) дозволяє все в інтерфейсі петлі.
Коли ваші потреби зростають, і потрібно відкривати більше портів, ви можете зробити це, додавши вгорі списку такі правила, як:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
щоб дозволити, наприклад, людям отримати доступ до вашого веб-браузера.