Chinaunix

标题: Hack on linux ? kiss to Kernel? [打印本页]

作者: linuxcici    时间: 2006-06-11 15:36
标题: Hack on linux ? kiss to Kernel?
偶星期5回家去了中山图书馆借了本<深入分析INUX内核源代码>,看了一晚和星期六一个下午.把
第一章<走进LINUX>和第二章<linux运行的硬件基础>看了两次.刚才坐车回学校那两个多少时
看到第三章<中断机制>开始有些吃力了.因为里面有些AT&T汇编有些看不懂8259A的参数
书本也没有足够提供. 


在这里我不讨论黑客这词大家对它的含意.在这里也不用黑客这词,而改用"*客"

第一次遇到这本书经过这一两天我反思:
1. *客就是对里面的内核源码进行恶意修改,传播给user运行. 这就叫病毒程序?

2. 对内核代码里面一些不完善导致一个安全问题引发,这就是攻击程序?
    [找到一个不完善的关于安全地方可不是容易啊]

请问*客写出的攻击程序和病毒有何分别? 


又如写一代码针对内核进行恶意修改发给别人.

代码功能:

一.恶意修改内核:
   1.如将linux启动物理地址修改.或将可屏蔽的中断服务程序改得一塌糊涂
   2.当用户运行后由fork()调用子进程,并父进程结束.子进程变程守护神进程
   3.子进程在后台静俏俏的把修改的那部分内核重新编译
   4.当然加上适当的掩饰.不可能用户一运行什么都没有.谁都知道肯定有问题
      5.自动查找mail里面的用户并发送这恶意代码给它们
   6.我这说目前只可以针对root
   7.但如果root一运行以分配权限让其它vaild user也可以有权修该kernel?  [问题]
   
   

   我提出的这算攻击程序还是病毒?


   当我第一天学LINUX就看到一些关于LINUX病毒的东西.书中万变不离其中.怎么取得root.
但取得root可不是容易啊.还有一些就是不取root. 但是只对当前vaild user的目录文件感染.伤害的不深.
偶中午吃饭打开柜桶翻开一本沉睡了一年多的<小心恶意代码>的杂志一编写关于shell的病毒.看了真觉得有些可笑.跟复制占贴,用鼠标删除文件没多大区别.区别在于它是shell.用的是shell语法.如果一个小学生弄懂了shell语法他也能写出来.当然可能还有很多很强大的shell病毒的.但技术最高的恐怕是对内核进行修改的病毒了吧?
作者: tmp    时间: 2006-06-11 16:19
禽流感才叫病毒,因为能传染,
而你经过研究创造性的发现铁棒能将人的脑袋打碎,那就是攻击“程序”了


又如写一代码针对内核进行恶意修改发给别人.


你指的是linux kernel的那些开发人员吗?应该不会的,有无数双眼睛在盯着那些代码呢。


其余的问题也乱七八糟,找别人回答吧,
作者: linuxcici    时间: 2006-06-11 16:22
原帖由 tmp 于 2006-6-11 16:19 发表
禽流感才叫病毒,因为能传染,
而你经过研究创造性的发现铁棒能将人的脑袋打碎,那就是攻击“程序”了




你指的是linux kernel的那些开发人员吗?应该不会的,有无数双眼睛在盯着那些代码呢。


其余的 ...



内核代码的恶意修改指的是*客. *客写的程序里包含内核代码的恶意修改
作者: tmp    时间: 2006-06-11 16:47
内核代码的恶意修改指的是*客. *客写的程序里包含内核代码的恶意修改


:emn4::emn4::emn4::emn4::emn4::emn4::emn4::emn4::emn4:

内核代码恶意修改?怎么个恶意修改法?通过什么途径发给了他要攻击的人?

×客写的程序一般是攻击正在运行的机器上的编译好了的内核,其实原理和恶意修改内核代码类似
但是绝对不是修改内核代码。

明白了吗?你可以瞑目了
作者: linuxcici    时间: 2006-06-11 17:01
*客写的代码:

main()
{


     打开内核某文件, 或将其del, 写上新的恶意修改好的();
  
    if(  pid= fork() < 0 )
      {惨了...惨了...}
    else if (pid>0) exit;
  
    else {   /* 守护神进程*/
      
          exec(把我刚才写好的恶意内核给我编译,静俏俏在后台运行);
         
          看看mail其它用户附给他们最高权限();
         
          发e-mail给他们并附带我这个病毒();
         
   
    }
     









}








那本著名的<unix和internet安全>里写着



while(1)
for();  


这也算攻击......汗            还有.楼上的,我还没有死,所以不会冥目

[ 本帖最后由 linuxcici 于 2006-6-11 17:05 编辑 ]
作者: flw    时间: 2006-06-11 21:03
晕~
你尽管去写你的黑客程序,
可是我凭啥要用你写的程序呀?
我可以不用嘛!
作者: linuxcici    时间: 2006-06-11 21:39
原帖由 flw 于 2006-6-11 21:03 发表
晕~
你尽管去写你的黑客程序,
可是我凭啥要用你写的程序呀?
我可以不用嘛!




感觉你很生气麻. 不喜欢听可以不说.我只是讨论而已
作者: tmp    时间: 2006-06-11 21:42
楼猪还是安心学习吧,别想什么x客的问题,,至少暂时别想,
谁在一开始的时候都会有这样那样的疑问
我最开始连把网上下载的攻击程序传到linux上后怎么运行都不知道,
不过那是3年前的事了,,那是我还在上大2,呵呵


至于你说的while(1){......}的,,的确算攻击程序的
因为unix是多用户的系统,,你在系统里面把机器搞瘫痪了,,也算攻击
就像你不能在公共游泳池里小便一样,,如果你决定小便也每人发现,,大便总是不可以的了  哈哈
作者: mingyanguo    时间: 2006-06-11 22:59
写什么程序啊,把硬盘砸了,多简单,只要他让你砸
作者: 圆点坐标    时间: 2006-06-12 07:56
楼主,不用急,慢慢来。如果你可以取得root权限,你可以写一个内核模块,在这个模块里你可以修改很多东西(比如系统调用,调度算法,文件操作,进程运行等等)。最后加载模块,当然还可以在modlist里隐藏模块,隐藏你的模块文件,隐藏你的进程。加油吧!
作者: zhugcx    时间: 2006-06-12 17:10
拜托,你想做这个好像要先有ROOT权限,没有说毛都没用
如果你有了ROOT权限,还用的着这么费事吗??

LZ不知道怎么想的
作者: 圆点坐标    时间: 2006-06-12 18:20
原帖由 zhugcx 于 2006-6-12 17:10 发表
拜托,你想做这个好像要先有ROOT权限,没有说毛都没用
如果你有了ROOT权限,还用的着这么费事吗??

LZ不知道怎么想的

长久潜伏,任意通信
作者: 大块头    时间: 2006-06-12 22:02
在这里讨论这些不应该啊
作者: linuxcici    时间: 2006-06-12 22:27
版主能将我这贴转去 c/c++版吗
作者: varlin    时间: 2006-06-12 23:19
别人不赞成没关系,偶也是从这方面才了解计算机的。建议楼主去看一看关于缓冲区溢出和格式化字符串攻击的书。里面讲的都是关于提升权限的问题。在《深入理解计算机系统》这本书的第三章也有类似例子。至于病毒,可以去下载一个chkrootkit去玩玩,看看里面的C源代码,对于理解操作系统还是很有帮助的
[chkrootkit]不是一个病毒,而是一种rootkit。很有意思的

[ 本帖最后由 varlin 于 2006-6-12 23:23 编辑 ]
作者: linuxcici    时间: 2006-06-12 23:26
原帖由 varlin 于 2006-6-12 23:19 发表
别人不赞成没关系,偶也是从这方面才了解计算机的。建议楼主去看一看关于缓冲区溢出和格式化字符串攻击的书。里面讲的都是关于提升权限的问题。在《深入理解计算机系统》这本书的第三章也有类似例子。至于病毒,可 ...




这位大哥可以说说在哪里找到相关资料啊?
作者: longtem    时间: 2006-06-13 09:07
你想这样干,系统都不让你做。SElinux会阻止住你的。linux的安全性不是白说的。那帮维护内核的人也不是想不到这方面的东西的。还有,安全的服务器上,GCC是删除了的,你想编译坏的东西,可不容易。在《加固linux》上就看到过这个例子:

1:攻陷某台机器,并把木马代码放进去,命名为 sendmail.txt
2:复制sendmail.txt到/tmp
3:tar -xzvf senmail.txt #得到t13.c
4:gcc -o t13 t13.c
5:/tmp/t13
6:rm -f /tmp/{t13.c,senmail.txt}

狼得你没话说
作者: suntoltti    时间: 2006-06-13 09:37
原帖由 linuxcici 于 2006-6-11 16:22 发表



内核代码的恶意修改指的是*客. *客写的程序里包含内核代码的恶意修改


这位gg,你的签名的shellcode是虾米意思涅
作者: varlin    时间: 2006-06-13 10:29
[Z]
◆栈溢出(stack smashing)
未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序的执行流程指向我们的shellcode。

    ◆堆溢出(malloc/free heap corruption)
一种是和传统的栈溢出一样,当输入超出malloc()预先分配的空间大小,就会覆盖掉这段空间之后的一段存储区域,如果该存储区域有一个重要的变量比如euid,那么我就可以用它来攻击。另一种是典型的double-free堆腐败,在内存回收操作中,合并相邻空闲块重新插入双向链表时会有一个写4字节内存的操作,如果弱点程序由于编程错误free()一个不存在的块,我们就可以精心伪造这个块,从而覆盖任何我们想要的值:函数的返回地址、库函数的.plt地址等

    ◆格式化字符窜漏洞(format string vulnerability)
如果格式窜由用户定制,攻击者就可以任意伪造格式窜,利用*printf()系列函数的特性就可以窥探堆栈空间的内容,超常输入可以引发传统的缓冲区溢出,或是用”%n”覆盖指针、返回地址等。

    ◆整形变量溢出(integer variable overflow)
    利用整数的范围、符号等问题触发安全漏洞,大多数整形溢出不能直接利用,但如果该整形变量决定内存分配等操作,我们就有可能间接利用该漏洞。
   
    ◆其他的攻击手法(others)
    只能算是手法,不能算是一种单独的类别。利用ELF文件格式的特性如:覆盖.plt(过程连接表)、.dtor(析构函数指针)、.got(全局偏移表)、return-to-libc(返回库函数)等的方式进行攻击。
--------------------------------------------------------------------------------------------------------------------
这其中堆栈溢出已经很难了,因为现在的CPU也好,操作系统也好基本上都禁止数据段和堆栈段执行指令,但高手还是可以绕过这种保护。不过其它的一些攻击手段还是比较奏效的,但是漏洞出现频率比较少。其实只要获得了root权限,提升到Ring0级别还是相当容易的。操作系统总不可能不让运行驱动吧。
忘了说了,<深入理解计算机系统>在china-pub上有。俺是在那买的

[ 本帖最后由 varlin 于 2006-6-13 10:30 编辑 ]
作者: linuxcici    时间: 2006-06-13 11:49
原帖由 longtem 于 2006-6-13 09:07 发表
你想这样干,系统都不让你做。SElinux会阻止住你的。linux的安全性不是白说的。那帮维护内核的人也不是想不到这方面的东西的。还有,安全的服务器上,GCC是删除了的,你想编译坏的东西,可不容易。在《加固linux》 ...




真是开眼界啊..... ....<深入了解计算机系统>这书是买了.

看来linux的安全性不是白说的.虽然源代码是开放的了.
作者: leviathan.alan    时间: 2006-06-13 12:08
yet another a shoddy cracker who considers himself to be a hacker.
作者: 圆点坐标    时间: 2006-06-13 12:18
原帖由 linuxcici 于 2006-6-13 11:49 发表




真是开眼界啊..... ....<深入了解计算机系统>这书是买了.

看来linux的安全性不是白说的.虽然源代码是开放的了.

水平有限才这么说
作者: varlin    时间: 2006-06-13 12:33
楼上的也别这么说,谁都是从那个时代过来的(偶还在那个时代^_^)
简要的地说,linux确切的说是*nix目前对付主流攻击方法的保护主要有以下几种。高手别看了,我不想找骂

----------------
一、编译保护技术
----------------
◆Stackguard
   Stackguard官方链接:
http://immunix.org/
◆Stackshield
www.angelfire.com/sk/stackshield/download.html
------------------
二、库函数链接保护
------------------
◆Formatguard
www.immunix.org
◆Libsafe
http://www.research.avayalabs.com/project/libsafe/
--------------
三、栈不可执行
--------------
◆Solar designer’s nonexec kernel patch
www.openwall.com
◆Solaris/SPARC nonexec-stack protection
------------------
四、数据段不可执行
------------------
◆kNoX
http://isec.pl/projects/knox/knox.html
◆RSX
Linux内核模块,数据段(stack、heap)不可执行。
    http://www.starzetz.com/software/rsx/
◆Exec shield
http://redhat.com/~mingo/exec-shield/
---------------------------------
五、增强的缓冲区溢出保护及内核MAC
---------------------------------
◆OpenBSD security feature
◆PaX
PaX Team
http://pax.grsecurity.net
◆Grsecurity
------------------
六、硬件级别的保护
------------------
作者: 大大狗    时间: 2006-06-13 14:01
还是2楼的和9楼的来的干脆
作者: flw2    时间: 2006-06-13 19:42
flw并没有生气吧,怎么觉得生气了没呢

其实说来说去啊,漏洞啊,缓冲区之类的都只有两个原因。
1。你的内核是有问题的
2。你的内核没有问题,但是你的root有问题,典型的比如root的进程或者更直接的setuid的命令。

否则系统都不可能被破坏

内核一般都是没有问题的,至少你使用linux的话就不能认为他可能有问题
很多问题我认为都是root的服务程序的不安全性导致的。

不运行别人的二进制应用程序。
不使用别人编译好的内核。
当然程序包括编译器和shell
作者: flw2    时间: 2006-06-13 19:47
一般的人是不能假释内核有问题的,等不到自己看完内核的几百万行代码人都死了
而且就算内核没有问题,你还要看编译器有没有问题,甚至还要看网卡是不是按照它说的那样工作,网线中间要是有个1平方毫米的小东西呢,x86的处理器指令功能不像intel描述的那样呢?

虽然我不懂这些具体的东西,但似乎我相信世界没有绝对的安全。
作者: richardhesidu    时间: 2006-06-14 02:04
原帖由 varlin 于 2006-6-12 23:19 发表
[chkrootkit]不是一个病毒,而是一种rootkit。很有意思的


chkrootkit是一个rootkit检测工具。如果要了解内核模块隐藏技术,分析一下adore-ng rootkit会有帮助。
作者: waker    时间: 2006-06-14 10:50
大拿们能不能讲的慢一点儿?
俺的小本本上记不下了
作者: tong0245    时间: 2006-06-14 10:58
当初贝尔那个著名的后门
作者: varlin    时间: 2006-06-14 22:45
原帖由 richardhesidu 于 2006-6-14 02:04 发表


chkrootkit是一个rootkit检测工具。如果要了解内核模块隐藏技术,分析一下adore-ng rootkit会有帮助。



OK,It's my wrony.....

谢谢纠正!
作者: Xi4oyu    时间: 2006-11-19 12:26
貌似一般都用LKM的方式




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2