当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 联机的Linux
 

 

    摘要:在进程退出前删除启动进程的可执行文件?记得《csdn开发高手》上登过一篇类似的文章,不过该文最后认为这是不可能的。这里转载一篇,大家看看他的精妙实现。(作者说转载要经过他同意,我不想那么麻烦,所以就只给一个链接了) http://www.driverdevelop.com/lu0/app/20010112.html ......
    摘要:benjurry,季昕华,中国首代黑客代表人物之一,被称为“计算机天才”,精通数据库安全、无线安全、ids。有意思的是,网名benjurry,原来是“笨极了”的音译,熟悉的人都叫他笨笨,这位叫做“笨笨的计算机天才”现供职于华为安全部,从事技术性工作。“天行健,君子以自强不息。”这是季昕华的人生座右铭,并......


联机的Linux的系统分析(第二部分)(第一版)
联机的linux的系统分析(第二部分)(第一版)

----原著:mariusz burdach 【程序编程相关:程序备忘录:之六-判定树的用法(2004

====================================================================== 【推荐阅读:程序备忘录:之五-熟悉数据表(2004/

译文版权: 徐兆元 西安邮电学院156# flxyzsby@163.com/flxyzsby@yahoo.com.cn 【扩展信息:发布一个文章管理系统和论坛程序(源码),

翻译:西安邮电学院电科0101 徐兆元   02985384887

2004.8.15

转载请通知

======================================================================

1.第二部分简介

在本文的第一部分中,我们讨论了一些在分析非安全系统时候的准备工作与必须的步骤.现在我们继续来分析系统以找出系统是恶意代码的所在,然后讨论从被传送到远程主机上的数据中寻找的方法.

 

纪录:

一些读者在阅读完本文的第一部分后指出:在从非安全系统是传送任何数据之前,受托的shell应该被运行.我想这是一个很好的想法,所以我们来静态编译bash shell然后将它拷贝到我们都可移动存储设备上.第2a步被替代为:

(compromised)# /mnt/cdrom/bash

 

必须让我们引起注意的是,当任何命令被健入系统时命令解释器都会将它们写入历史纪录文件.但我们不向修改本地系统的文件所有最好将历史纪录关掉.

2.3 data collection for a live system - continued

 

第六步:物理内存镜象

 数据收集的一个步骤是获取整个系统内存的一个拷贝.我们可以通过拷贝/dev/mem设备或者拷贝kcore文件来直接得到物理内存.kcore文件在linux系统中是用来纪录ram中内容的.它是一个虚拟的文件,存在于/proc目录下.整个文件的大小与当前物理内存的大小是一样的,扩展了大约4kb.用kcore文件的好处是它是elf格式的,所以可以用gdb进行调试.个gdb工具集是跟踪与分析小模块代码或内存的绝佳工具.在2.7节中我将为你展示如何在分析中使用这些工具的高级功能.但作为基础的分析我将使用更通用的工具比如grep,string(字符串),hex(十六进制)编辑器.

 

另外,为了能很好地分析整个物理内存我们必须了解一些关于操作系统的内存的页面方面的知识------相对于物理地址的虚拟地址表的数据结构.我们必须知道物理内存包含着虚拟内存的页面.在页面表(块表)中我们可以找到关于被写入物理内存的页面的索引(在intel处理器中为4kb每页).

 

如前面所提及的,我们在利用软件工具获取易失性存储器的内容时会很自然地改变内存的内容.更严重的是,我们会重写可能存在入侵证据.

下面的例子我使用了/proc虚拟文件系统来获得内存镜像

 

(remote)#nc -l -p port > kcore_compromised

(compromised)#/mnt/cdrom/dd < /proc/kcore | /mnt/cdrom/nc (remote) port

(remote)#md5sum kcore_compromised > kcore_compromised.md5

  其实,在拷贝整个系统内存时我们既拷贝了已经分配出去的内存也拷贝了未分配的内存,原因是我们只是复制了这个物理内存的镜象.在第九步中我们将尝试用/proc虚拟文件系统去复制一个确切进程所使用的内存.我必须说明当是当我们用/proc时其实我们会改变swap交换分区里的内容.为了能复制那些可疑的进程我们将强制主存的一些页面对于swap交换分区是可读的,其他页面则是可写的.另一个重要的方面是,我们只拷贝进程已经分配的内存空间.

 

第七步:被载入操作系统内存的模块列表

 

我们要保证所收集到的数据是完整的,并且netstat与lsof命令的结果不能在内核级上被修改.所以我们必须检测当前那些模块被加载到内存中了.

 

(remote)# nc -l -p port > lkms_compromised

(compromised)#/mnt/cdrom/cat /proc/modules | /mnt/cdrom/nc (remote) port

(remote)# nc -l -p port > lkms_compromised.md5

(compromised)# /mnt/cdrom/md5sum /proc/modules | /mnt/cdrom/nc (remote) port

 


...   下一页
    摘要:程序设计初步 到现在为止,我们已经对语言的基本元素有了个比较完整的了解了,但是总是停留在表达式等细节方面,我们很难写出程序来,在今天任何一个程序都是个工程,如何组织我们已经掌握的这些基本元素,使得他们变成有一点功能的有机整体,这个就需要一个整体观念的设计思想,对于c来说第一步该是过程化程序设计思想,换而言之, 就是函数的设计,在上篇文字中我们已经看到了,其核心问题是如何分解要解决的问题,写出......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE