C/C++: ковыряем сетевые демоны

Константин Клягин

Xakep, номер #059, стр. 059-094-4


Тестируем "ручками":

$ telnet localhost 110

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

+OK Qpopper (version 4.0.5) at localhost.localdomain starting.

user vasya

+OK Password required for vasya.

pass abc

quit

-ERR [AUTH] Password supplied for "vasya" is incorrect.

+OK Pop server at localhost.localdomain signing off.

Connection closed by foreign host.

$ cat /tmp/pop.passwords

user: vasya; password: abc

Для чего это?

Для того чтобы воспользоваться описанным подходом, совершенно не обязательно быть администратором в крупном банке или в NASA. Можно просто настроить на свободной машинке какой-нибудь юникс и выйти в irc с воплями: "who wanna trade shells?" Желающих будет хоть отбавляй. Кроме того, ты сам сможешь получить хорошие аккаунты на разнообразных хостах, а также шанс узнать побольше (ну, ты понял ;)) о новых постояльцах твоей системы. Однако, коннектясь на новые тачки, тоже не будь дураком и вводи пароль внимательно, помня, что Старший Брат следит за тобой :).

Долбим другой софт

Если есть необходимость изменить другие программы, то схема действий у тебя перед глазами. Находишь место, где происходит аутентификация, определяешь, в каких переменных расположились логин и пароль (самая сложная часть). Далее используешь нашу процедуру trash. Все, дело сделано. Теперь программа пропатчена.

Еще старик Митник говорил, что самое уязвимое звено любой системы безопасности - это человек.

Для достижения цели нам предстоит внести некоторые улучшения ;) прямо в исходный код программы.

Это для снифера пароли, как и весь остальной трафик, зашифрованы, для сервера же пароль приходит в открытом виде.

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

Назад на стр. 059-094-3  Содержание