Назад | Перейти на главную страницу

Как взломали Матасано?

из: http://seclists.org/fulldisclosure/2009/Jul/0388.html

Если я понимаю это лучше всего из сообщений от: http://news.ycombinator.com/item?id=723798 ребята из Matasano оставили доступным sshd internet - какие-либо предлагаемые решения для этого (с точки зрения программирования)?

Как взломали Матасано?

Невозможно ответить на основании информации в сообщении Полного раскрытия информации. Однако всегда интересно размышлять, так как они дают небольшую информацию -

# ./th3_f1n4l_s0lut10n www.matasano.com
[-] Connecting to 69.61.87.163:22..
[/] Looking for valid non-root user.. adam
******** R3D4CT3D h4h4h4h4 ********

Они запускают свой двоичный файл "th3_f1n41_s01ut10n"против сервера Matasano, который подключается к порту ssh. Он находит действительного пользователя без полномочий root каким-то неизвестным образом, а остальная часть вывода удаляется.

# ./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com
[*] Connectback listener on 209.112.118.10:3338..
[!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1, OpenSSL 0.9.8g 19 Oct 2007] 

Бинарный файл снова запускается с использованием найденного имени пользователя, который входит в систему и снова подключается к своему серверу через порт 3338 (надеюсь, что это не зарегистрировано на их имя ...).

adam_at_www:~$ uname -a
Linux www 2.6.20.1-1-686 #1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU/Linux
**** h4h4h4hh4h4h4 l3tz us3 m0r3 !0D4Y! H4H4H4H4H4H4H4 ****

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

adam_at_www:~$ cd /tmp
*********** B0R1NG ***********
root_at_www:~# cat /etc/shadow 

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

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

Учитывая, что OpenSSH имеет несколько известных проблем безопасности, начиная с версии 4.5:

Из Страница безопасности OpenSSH:

  • OpenSSH до версии 5.2 уязвим для уязвимости протокола, описанной в CPNI-957037 «Атака восстановления открытого текста против SSH». Однако, исходя из имеющейся ограниченной информации, кажется, что описанная атака в большинстве случаев невозможна. Для получения дополнительной информации см. Рекомендации cbc.adv и примечания к выпуску OpenSSH 5.2.
  • OpenSSH 4.9 и новее не запускаются ~/.ssh/rc для сеансов, команда которых была переопределена директивой sshd_config (5) ForceCommand. Это было задокументировано, но небезопасно (описано в примечаниях к выпуску OpenSSH 4.9).
  • OpenSSH 4.7 и более поздние версии не возвращаются к созданию доверенных файлов cookie аутентификации X11 при сбое создания ненадежных файлов cookie (например, из-за преднамеренного исчерпания ресурсов), как описано в примечаниях к выпуску OpenSSH 4.7.

Я предполагаю, что это более старое ядро ​​Linux и старый демон SSH сделали для них. Кроме того, он работал на их www-сервере, который доступен в Интернете, что, на мой взгляд, довольно уверенно. Вломившиеся люди явно хотели их смутить.

Как предотвратить эти атаки?

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

Лучше всего использовать подход «пояс и скобки» - использование аутентификации с открытым ключом, внесение в белый список демона ssh, двухфакторная аутентификация, ограничения IP и / или размещение всего за VPN - это возможные пути для его блокировки.

Думаю, я знаю, чем буду заниматься завтра на работе. :)

Людям нравится создавать FUD над этим, но похоже, что они знали, что пользователь adam уже был там, и знали его пароль (возможно, с помощью грубой силы или других методов). Однако они хотят круто выглядеть и создавать всю эту ажиотаж.

Также следует отметить, что пользователь adam не заходил в этот ящик более года:

(вывод lastlog)

 adam             pts/1    ool-4350ab48.dyn Sat Jul 26 20:45:18 -0400 2008

Так что, вероятно, он какое-то время хранил этот пароль (возможно, плохой).

* Если бы у них действительно был инструмент для обнаружения имен пользователей через SSH, они могли бы использовать всех других пользователей для получения удаленного доступа, но они использовали наиболее распространенное имя пользователя в этом поле (легко угадать).

Зачем вам пытаться решить эту проблему с точки зрения программирования?

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

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

Защитите свое программное обеспечение от атак нулевого дня ... что невозможно.

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

Скорее всего, хакер злоупотребил настройкой совершенно хорошего ПО.

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