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